Ho avuto la necessità di presentare liste di documenti (contenute in blocchi documenti) con ordinamento invertito rispetto a quello “naturale” proposto dalla piattaforma.
Ho apportato, quindi, alcune modifiche che mi permettono di impostare a seconda dei casi un ordine invertito della lista documenti.
Graficamente questa possibilità appare come una checkbox su cui cliccare per impostare l'ordinamento invertito (vedi grafico).




Per poter far questo ho agito su due file:
util.docs.php in ..\doceboCms\admin\modules\block_docs\
functions.php in ..\doceboCms\modules\docs\
Modifiche in util.docs.php
1° modifica (dopo 60esima riga circa)
if ((isset($opt["recurse"])) && ($opt["recurse"])) $chk=true; else $chk=false;
$out->add($form->getCheckBox($lang->def("_DOCS_RECOURSE"), "recurse", "recurse", "1", $chk));
$out->add($form->getTextfield($lang->def("_DOCS_NUMBER").":", "number", "number", 3, $opt["number"]));
// -------------- inizio 1° aggiunta
if ((isset($opt["sort"])) && ($opt["sort"])) $chk=true; else $chk=false;
$out->add($form->getCheckBox($lang->def("_DOCS_SORT"), "sort", "sort", "1", $chk));
//--------------- fine 2° aggiunta
2° modifica (dopo 80esima riga circa)
saveParam($block_id, "number", (int)$_POST["number"]);
saveParam($block_id, "use_comments", (int)$_POST["use_comments"]);
// ------------ inizio 2° aggiunta
saveParam($block_id, "sort", (int)$_POST["sort"]);
// ------------ fine 2° aggiunta
3° modifica (dopo 90esima riga circa)
saveParam($block_id, "css", 1);
saveParam($block_id, "path", "/");
saveParam($block_id, "recurse", 1);
saveParam($block_id, "number", 10);
saveParam($block_id, "use_comments", 0);
//-------------inizio 3° aggiunta
saveParam($block_id, "sort", 0);
//-------------fine 3° aggiunta
4° modifica (dopo 185 riga circa)
if ($opt["showclick"]) $chk=" checked=\"checked\""; else $chk="";
echo("<br /><br />\n");
echo("<input type=\"checkbox\" id=\"showclick\" name=\"showclick\" value=\"1\"$chk />\n");
echo("<b>"._DOCS_SHOWCLICK."</b>\n");
echo("<br /><br /><b>"._DOCS_NUMBER.":</b>\n");
echo("<input type=\"text\" id=\"number\" name=\"number\" size=\"3\" value=\"".$opt["number"]."\" /><br />\n");
//------------------inizio 4° aggiunta
if ($opt["sort"]) $chk=" checked=\"checked\""; else $chk="";
echo("<br /><br />\n");
echo("<input type=\"checkbox\" id=\"sort\" name=\"sort\" value=\"1\"$chk />\n");
echo("<b>"._DOCS_SORT."</b>\n");
//------------------fine 4° aggiunta
5° modifica (dopo 235esima riga circa)
saveParam($idBlock, "ov_pub", (int)$_POST["ov_pub"]);
saveParam($idBlock, "ov_exp", (int)$_POST["ov_exp"]);
saveParam($idBlock, "recurse", $_POST["recurse"]);
//--------------inizio 5° aggiunta
saveParam($idBlock, "sort", $_POST["sort"]);
//--------------fine 5° aggiunta
Modifiche in functions.php
1° modifica (dopo 160esima riga circa)
check_docs_perm($pb);
$opt=loadBlockOption($pb);
$sel_lang=getLanguage();
//inizio 1° aggiunta
if ($opt["sort"] !=1) {
$ordina="ASC";
} else { $ordina="DESC";
}
//fine 1° aggiunta
2° modifica (dopo 200esima riga circa)
$qtxt ="SELECT $sel_q FROM $t1 as t1 ";
$qtxt.="LEFT JOIN $t2 as t2 ON (t2.idd=t1.idDocs AND t2.lang='$sel_lang') ";
$qtxt.="LEFT JOIN ".$GLOBALS["prefix_cms"]."_sysforum as t3 ON (t3.key1='docs_comment' AND t3.key2=t1.idDocs) ";
$qtxt.=$t4_join;
//------------ inizio riga modificata
$qtxt.="WHERE $path_q AND t1.publish='1' GROUP BY t1.fname $ordina";
//------------ fine riga modificata
Dopo queste modifiche è necessario generare la chiave _DOCS_SORT nella gestione lingua selezionando la piattaforma CMS nel modulo admin_manpage. Nel campo di testo in corrispondenza di “ traduci” e italian ho inserito la frase “Ordinamento inverso”.
Ho fatto alcune prove e tutto sembra funzionare ... se ci sono controindicazioni, miglioramenti o suggerimenti ...
Natalino Lambedue








