Diese Erweiterung ist auch für Version 4.10 möglich. Nähere Infos unter viewtopic.php?f=115&t=43502.
!!!
Hallo zusammen,
ich möchte gerne nochmal dieses schon von mir in der 4.8er angesprochene Thema aufgreifen (http://forum.contenido.org/viewtopic.ph ... 55#p152778).
Meiner Ansicht nach ist es für Redakteure durchaus wichtig, ohne große Umstände vor dem Löschen einer Datei in der Dateiverwaltung deren mögliche Verwendung zu prüfen. Da andere CMS diese Prüfung in der Dateiverwaltung schon länger bieten (TYPO3 z. B.) täte es Contenido gut, hier endlich nachzuziehen. Die Dateiverwaltung sollte ja - ist schon was länger her die Ankündigung von 4fb - mal generell auf den Prüfstand.
Da ich gerade in einem laufenden Projekt genau dies für die Redakteure benötige, habe ich eine Prüfung in die aktuelle Dateiverwaltung integriert. Es muss lediglich die Datei root->contenido/includes/include.upl_files_overview.php um ein paar Zeilen ergänzt werden:
Code: Alles auswählen
[...]
function convert($field, $data) {
[...]
$retValue = '<a class="jsZoom" href="' . $href . '">
<img class="hover" name="smallImage" alt="" src="' . $sCacheThumbnail . '" data-width="' . $iWidth . '" data-height="' . $iHeight . '">
<img class="preview" name="prevImage" alt="" src="' . $sCacheThumbnail . '">
</a>';
/******************** FILES IN USE? modifications begin ********************/
$parts_path_name = explode("/", $data);
$check_data=$parts_path_name= end($parts_path_name);
$retValue.='<br/>';
$inuse_url = $sess->url('main.php');
$retValue.='<a href="'.$inuse_url.'&area=upl&frame=4&path='.$path.'&startpage='.$_REQUEST[startpage].'&check_file_inuse='.$check_data.'">';//.$inuse_url.'&area=upl&frame=4&path='.$path.'&startpage='.$_REQUEST[startpage].'&check_file_inuse='.$check_data;
$retValue.='<img src="images/info.gif" title="Datei in Benutzung?"/>';//.$check_data;
$retValue.='</a>';
if(htmlspecialchars(strip_tags($_GET[check_file_inuse]))!="" AND $check_data==htmlspecialchars(strip_tags($_GET[check_file_inuse]))) // delete second condition if all files of page should be checked
{
$arr_inuse_collection=array();
//wysiwyg
$search = "SELECT idartlang FROM con_content WHERE value LIKE '%$check_data%'";
$result = cRegistry::getDb();
$result->query($search);
while($result->nextRecord())
{
$arr_inuse=$result->toArray();
$arr_inuse_collection[]=$arr_inuse[idartlang];
}
//content_image
$search="SELECT * FROM con_content,con_upl WHERE value=idupl AND filename='$check_data'";
$result = cRegistry::getDb();
$result->query($search);
while($result->nextRecord())
{
$arr_inuse=$result->toArray();
$arr_inuse_collection[]=$arr_inuse[idartlang];
}
$arr_inuse_collection=array_unique($arr_inuse_collection);
if(count($arr_inuse_collection)>0)
{
$retValue.='<br/>Artikel:<br/>';
foreach($arr_inuse_collection AS $element) $retValue.='<a href="'.$cfgClient[$client]["path"]["htmlpath"].'front_content.php?idart='.$element.'" target="_blank">'.$element.'</a> ';
}
else $retValue.='<br/>Nicht per wysiwyg oder content_image-Modul eingebunden.<br/>';
}
/******************** FILES IN USE? modifications end ********************/
return $retValue;
[...]
}
[...]
1) Prüfung ist nur für Dateien gültig, die
a) per wysiwyg eingefügt werden (hier wird in der Tabelle con_content in der Spalte value nach dem Dateinamen durchsucht) und
b) über Module eingefügt werden, die in der Tabelle con_content und der Spalte value die idupl der Tabelle con_upl hinterlegen (z. B. content_image).
2) Aktuell werden lediglich Bilddateien geprüft. Sollen weitere Dateiformate geprüft werden, ist in der function convert($field, $data) eine Erweiterung der Dateiendungen vorzunehmen:
Code: Alles auswählen
[...]
case 'xbm':
case 'wbmp':
/******************** FILES IN USE? modifications begin ********************/
case 'pdf':
/******************** FILES IN USE? modifications end ********************/
[...]
3) In der con_content ist die idartlang angegeben. Laut AMR sollte die URL beim Aufruf per front_content.php?idartlang=123 funktionieren, oder? Kurioserweise tut es das nicht. Daher ist hier grundsätzlich ein Fehler, der bei mehrsprachigen Websites relevant wird:
foreach($arr_inuse_collection AS $element) $retValue.='<a href="'.$cfgClient[$client]["path"]["htmlpath"].'front_content.php?idart='.$element.'" target="_blank">'.$element.'</a> ';
Oder irre ich mich mit "front_content.php?idartlang=123" und ich muss noch eine weitere Abfrage nach der idart per con_art_lang einbinden?
4) Die hardcodierten Bezeichnungen in Deutsch ersetzen durch "mi18n()-Funktionalität".
Auch, wenn es hier durchaus noch Verbesserungspotential gibt, ist es besser als der aktuelle Zustand "Nichts"... Es wäre also toll, wenn sich hier in einer der kommenden Versionen etwas bewegt.
VG und Danke für Tipps hinsichtlich der der ToDos,
Markus
EDIT 22.07.2016: Berücksichtigung von per z. B. Bildmodul wie content_image eingefügten Dateien ergänzt.