Esempio n. 1
0
function DrawContentList($filter)
{
    global $connection, $module, $footer_json;
    $requires_content_filtering = hasContentPermissionLimit();
    $user = $_SESSION["user"];
    if ($requires_content_filtering) {
        $allowed_pages = calculateIdPagesAllowed();
        $allowed_pages_SQL = implode("','", $allowed_pages);
    }
    echo "<div class='modal fade' id='content-new-modal' tabindex='-1' role='dialog' aria-labelledby='newcontent-modal-label' aria-hidden='true'>\n    <div class='modal-dialog'><div class='modal-content'>\n    <div class='modal-header'><h4 class='modal-title' id='newcontent-modal-label'>Nuovo contenuto</h4></div>\n    <div class='modal-body'>Scegliere il tipo di contenuto da creare\n    <br><select class='form-control' id='content-type'>";
    $type_json = json_decode(file_get_contents("../core/modules.json"));
    foreach ($type_json->edit_modules as $module) {
        echo "<option value='{$module->type}'>{$module->name} [{$module->type}]</option>";
    }
    echo "</select></div><div class='modal-footer'>\n    <button type='button' class='btn btn-default' data-dismiss='modal'>Annulla</button>\n    <button type='button' class='btn btn-success' id='newcontent-modal-confirm' data-dismiss='modal'>Crea contenuto</button>\n    </div></div></div></div>";
    echo "<div class='page-header'><h1>Gestione contenuti</h1></div>\n";
    echo "<div class='btn-group'>\n        <button type='button' class='btn btn-success' id='new-content'><i class='fa fa-plus'></i> Nuovo contenuto</button>\n    </div>&nbsp&nbsp";
    echo "<i class='fa fa-filter fa-lg'></i>Contenitore:\n    <div class='btn-group'>\n    <select class='form-control' id='filter'>";
    echo "<option value=''>-- Visualizza tutto --</option>";
    if ($filter == "orphans") {
        echo "<option value='orphans' selected>-- Visualizza elementi orfani --</option>";
    } else {
        echo "<option value='orphans'>-- Visualizza elementi orfani --</option>";
    }
    if ($requires_content_filtering) {
        $request = "SELECT DISTINCT container FROM page_descriptors WHERE container!='home' AND id IN ('{$allowed_pages_SQL}') ORDER BY container ASC";
    } else {
        if ($filter == "system") {
            echo "<option value='system' selected>-- Visualizza elementi sistema --</option>";
        } else {
            echo "<option value='system'>-- Visualizza elementi sistema --</option>";
        }
        $request = "SELECT DISTINCT container FROM page_descriptors WHERE container!='home' ORDER BY container ASC";
    }
    $result = $connection->query($request);
    while ($line = $result->fetch_assoc()) {
        $line = $line["container"];
        if (explode("::", $filter)[0] == $line) {
            echo "<option value='{$line}' selected>{$line}</option>";
        } else {
            echo "<option value='{$line}'>{$line}</option>";
        }
    }
    if (in_array($filter, ["", "orphans", "system"])) {
        $attribute = "disabled";
    } else {
        $attribute = "";
    }
    echo "</select></div>&nbsp&nbsp<i class='fa fa-file'></i> Pagina: <div class='btn-group'><select class='form-control' id='pages' {$attribute}>\n        <option value=''>-- Visualizza tutto --</option>";
    if (!in_array($filter, ["", "orphans", "system"])) {
        if (strpos($filter, "::") !== false) {
            $container = explode("::", $filter)[0];
        } else {
            $container = $filter;
        }
        if ($requires_content_filtering) {
            $request = "SELECT DISTINCT page FROM page_descriptors WHERE container='{$container}' AND id IN ('{$allowed_pages_SQL}') ORDER BY page ASC";
        } else {
            $request = "SELECT DISTINCT page FROM page_descriptors WHERE container='{$container}' ORDER BY page ASC";
        }
        $result = $connection->query($request);
        var_dump($request);
        while ($line = $result->fetch_assoc()) {
            $line = $line["page"];
            if (explode("::", $filter)[1] == $line) {
                echo "<option value='{$line}' selected>{$line}</option>";
            } else {
                echo "<option value='{$line}'>{$line}</option>";
            }
        }
    }
    echo "</select></div>&nbsp&nbsp";
    echo "<div class='btn-group'>\n        <button type='button' class='btn btn-default' id='apply-filter'><i class='fa fa-check'></i> Applica filtri</button>\n    </div>";
    echo "<br><br>";
    if ($requires_content_filtering) {
        echo "<div class='alert alert-warning' role='alert'><i class='fa fa-warning'></i><b>Attenzione!</b> L'account <code>{$user}</code> dispone di permesssi limitati in questo modulo. Solo una parte dell'elenco delle pagine è accessibile e alcune funzionalità potrebbero essere disattivate</div>";
    }
    echo "<div class='alert alert-info onpageload' role='alert'><i class='fa fa-refresh fa-spin'></i> Caricamento dell'elenco contenuti in corso</div>";
    echo "<table class='table table-hover' id='content-list'>\n        <thead><tr>\n            <th>Contenuto</th>\n            <th>Usato da</th>\n            <th>Titolo</th>\n            <th>id</th>\n        </tr></thead>";
    if ($filter != "" and !in_array($filter, ["", "orphans", "system"])) {
        //filtro è un contenitore o una coppia contenitore-pagina
        if (strpos($filter, "::") !== false) {
            $container = explode("::", $filter)[0];
            if (explode("::", $filter)[1] != "") {
                $page = explode("::", $filter)[1];
            }
        } else {
            $container = $filter;
        }
        if (isset($page)) {
            $array = fromUsagesStandard(returnIdsFormFilterString($container, $page));
        } else {
            $array = fromUsagesStandard(returnIdsFormFilterString($container));
        }
        $filter_string = implode("','", array_intersect(fromUsagesStandard($allowed_pages), $array));
        $request = "SELECT * FROM generic_content WHERE id IN ('{$filter_string}') ORDER BY `element-type` ASC";
    } elseif ($filter == "system") {
        $footer_structure = json_decode($footer_json);
        $array = [];
        foreach ($footer_structure->elements as $element) {
            array_push($array, $element->dbid);
        }
        $filter_string = implode("','", $array);
        $request = "SELECT * FROM generic_content WHERE id IN ('{$filter_string}') ORDER BY `element-type` ASC";
    } else {
        if ($requires_content_filtering) {
            $cfilter_string = implode("','", fromUsagesStandard($allowed_pages));
            $request = "SELECT * FROM generic_content WHERE id IN ('{$cfilter_string}') ORDER BY `element-type` ASC";
        } else {
            $request = "SELECT * FROM generic_content ORDER BY `element-type` ASC";
        }
    }
    $result = $connection->query($request);
    while ($line = $result->fetch_assoc()) {
        $id = $line["id"];
        $type = $line["element-type"];
        $title = $line["displayname"];
        $small = GenerateDisplayString($type, $line["content"]);
        $usage_array = findUsagesStandard($id);
        if (empty($usage_array)) {
            echo "<tr><td data-id='{$id}' class='element-orphan'><span class='label label-warning'>{$type}</span> {$small}";
        } else {
            echo "<tr><td data-id='{$id}' class='element-ok'><span class='label label-default'>{$type}</span> {$small}";
        }
        echo "<a class='remove-content lmb pull-right tooltipped' data-toggle='tooltip' title='Elimina'><i class='fa fa-remove'></i></a>";
        echo "<a href='index.php?module=content&arg={$id}' class='lmb pull-right tooltipped' data-toggle='tooltip' title='Modifica'><i class='fa fa-edit'></i></a>";
        $usage = "";
        $i = 0;
        foreach ($usage_array as $usage_element) {
            if ($i > 0) {
                $usage .= " <i class='fa fa-plus-square-o'></i> ";
            }
            if ($usage_element->element == "page") {
                $usage .= "<span class='label label-success'>{$usage_element->container} <i class='fa fa-ellipsis-v'></i> {$usage_element->page}</span>";
            } elseif ($usage_element->element == "footer") {
                $usage .= "<span class='label label-info'><em>system</em> <i class='fa fa-ellipsis-v'></i> footer</span>";
            } else {
                $usage .= "<span class='label label-default'>{$usage_element->type} <i class='fa fa-ellipsis-v'></i> {$usage_element->id}</span>";
                $usage_childs = findUsagesStandard($usage_element->id);
                $k = 0;
                foreach ($usage_childs as $child) {
                    if ($k > 0) {
                        $usage .= " <i class='fa fa-plus-square'></i> ";
                    }
                    if ($child->element == "page") {
                        $usage .= " <i class='fa fa-toggle-right'></i> <span class='label label-success'><em>{$child->container} <i class='fa fa-ellipsis-v'></i> {$child->page}</em></span>";
                    } else {
                        $usage .= " <i class='fa fa-toggle-right'></i> <span class='label label-default'><em>{$child->type} <i class='fa fa-ellipsis-v'></i> {$child->id}</em></span> <i class='fa fa-toggle-right'></i> <i class='fa fa-question'></i>";
                    }
                    $k += 1;
                }
            }
            $i += 1;
        }
        if ($usage == "") {
            $usage = "<span class='text-warning'>Elemento orfano (usato da nessuna pagina)</span>";
        }
        echo "<td>{$usage}</td>";
        echo "<td>{$title}</td>";
        if (empty($usage_array)) {
            echo "<td><span class='text-warning'>{$id}</span></td></tr>";
        } else {
            echo "<td>{$id}</td></tr>";
        }
    }
    echo "</table>";
}
Esempio n. 2
0
function DrawPagesList($filter)
{
    global $connection, $module;
    $requires_content_filtering = hasContentPermissionLimit();
    $user = $_SESSION["user"];
    if ($requires_content_filtering) {
        $allowed_pages = calculateIdPagesAllowed();
        $allowed_pages_SQL = implode("','", $allowed_pages);
    }
    echo "<div class='page-header'><h1>Gestione pagine</h1></div>\n";
    include "modules/php/pages-modals.php";
    echo "<div class='btn-group'>\n        <button type='button' class='btn btn-success' id='new-page'><i class='fa fa-plus'></i> Nuova pagina</button>\n    </div>&nbsp&nbsp\n    <i class='fa fa-filter fa-lg'></i>Contenitore:\n    <div class='btn-group'>\n    <select class='form-control' id='filter'>\n        <option value=''>-- Visualizza tutto --</option>";
    if ($requires_content_filtering) {
        $request = "SELECT DISTINCT container FROM page_descriptors WHERE container!='home' AND id IN ('{$allowed_pages_SQL}') ORDER BY container ASC";
    } else {
        $request = "SELECT DISTINCT container FROM page_descriptors WHERE container!='home' ORDER BY container ASC";
    }
    $result = $connection->query($request);
    while ($line = $result->fetch_assoc()) {
        $line = $line["container"];
        if ($filter == $line) {
            echo "<option value='{$line}' selected>{$line}</option>";
        } else {
            echo "<option value='{$line}'>{$line}</option>";
        }
    }
    echo "</select></div><br><br>";
    if ($requires_content_filtering) {
        echo "<div class='alert alert-warning' role='alert'><i class='fa fa-warning'></i><b>Attenzione!</b> L'account <code>{$user}</code> dispone di permesssi limitati in questo modulo. Solo una parte dell'elenco delle pagine è accessibile e alcune funzionalità potrebbero essere disattivate</div>";
    }
    echo "    <table class='table table-hover'>\n        <thead><tr>\n            <th>Pagina</th>\n            <th>Titolo</th>\n            <th>Tags</th>\n            <th>Layout</th>\n            <th>id</th>\n        </tr></thead>";
    if ($filter == "") {
        if ($requires_content_filtering) {
            $request = "SELECT * FROM page_descriptors WHERE (page!='home' AND container!='home') AND id IN ('{$allowed_pages_SQL}') ORDER BY container ASC";
        } else {
            $request = "SELECT * FROM page_descriptors WHERE (page!='home' AND container!='home') ORDER BY container ASC";
        }
    } else {
        if ($requires_content_filtering) {
            $request = "SELECT * FROM page_descriptors WHERE  container='{$filter}' AND id IN ('{$allowed_pages_SQL}') ORDER BY id ASC";
        } else {
            $request = "SELECT * FROM page_descriptors WHERE  container='{$filter}' ORDER BY id ASC";
        }
    }
    $result = $connection->query($request);
    while ($line = $result->fetch_assoc()) {
        $id = $line["id"];
        $name = $line["page"];
        $container = $line["container"];
        echo "<tr><td data-id='{$id}'><span class='label label-default'>{$container}</span> {$name}";
        echo "<a class='remove-page lmb pull-right tooltipped' data-toggle='tooltip' title='Elimina'><i class='fa fa-remove'></i></a>";
        echo "<a href='index.php?module=pages&arg={$id}' class='lmb pull-right tooltipped' data-toggle='tooltip' title='Modifica'><i class='fa fa-edit'></i></a>";
        if (isset($line["descriptor"]) && $line["descriptor"] != "") {
            $json_decoded = json_decode($line["descriptor"]);
            $title = $json_decoded->title;
            $layout = $json_decoded->layout;
            $tags = explode(",", $line["tags"]);
            echo "</td><td>{$title}</td>";
        } elseif (isset($line["container_redirect"]) && $line["container_redirect"] != "") {
            $container_redirect = $line["container_redirect"];
            echo " <i class='fa fa-exchange tooltipped' data-toggle='tooltip' title='Reindirizzamento del contenitore: <i>{$container_redirect}</i>'></i> <span class='label label-info'><i>{$container_redirect}</i></span></td>";
            $request = "SELECT * FROM page_descriptors WHERE page='{$name}' AND container='{$container_redirect}'";
            $result2 = $connection->query($request);
            $line2 = $result2->fetch_assoc();
            $json_decoded = json_decode($line2["descriptor"]);
            $tags = array_unique(array_merge(explode(",", $line2["tags"]), explode(",", $line["tags"])));
            $title = $json_decoded->title;
            $layout = $json_decoded->layout;
            echo "</td><td><i class='fa fa-exchange tooltipped' data-toggle='tooltip' title='Reindirizzamento del contenitore: <i>{$container_redirect}</i>'></i> <i>{$title}</i></td>";
        }
        $tags_string = "";
        foreach ($tags as $tag) {
            switch ($tag) {
                case "da-finire":
                    $l_class = "warning";
                    break;
                case "da-rivedere":
                    $l_class = "success";
                    break;
                case "rinviato":
                    $l_class = "info";
                    break;
                default:
                    $l_class = "default";
                    break;
            }
            $tag = str_replace("-", " ", $tag);
            $tags_string .= "<span class='label label-{$l_class}'>{$tag}</span> ";
        }
        echo "<td>{$tags_string}</td>";
        echo "<td>{$layout}</td>";
        echo "<td>{$id}</td></tr>";
    }
    echo "</table>";
}