From 066ebfc9302bb8dd7ee53302ab444f17b9245434 Mon Sep 17 00:00:00 2001 From: Ulrich Block Date: Sun, 21 Sep 2014 18:41:13 +0200 Subject: [PATCH] #30 custom modules + #497 Replace IDs with type --- web/ajax.php | 53 +++--- web/stuff/admin/admin_modules.php | 165 ++++++++--------- web/stuff/ajax/datatable_custommodule.php | 103 +++++++++++ web/stuff/methods/tables_add.php | 2 +- .../adminlte/admin/admin_images_dl.tpl | 2 +- .../adminlte/admin/admin_master_list.tpl | 12 +- .../adminlte/admin/admin_modules_ad.tpl | 159 +++++++++------- .../adminlte/admin/admin_modules_dl.tpl | 44 +++-- .../adminlte/admin/admin_modules_list.tpl | 62 ++++--- .../adminlte/admin/admin_modules_md.tpl | 172 ++++++++++-------- 10 files changed, 463 insertions(+), 311 deletions(-) create mode 100644 web/stuff/ajax/datatable_custommodule.php diff --git a/web/ajax.php b/web/ajax.php index a3dfb0d2..958a343b 100644 --- a/web/ajax.php +++ b/web/ajax.php @@ -81,52 +81,57 @@ if ($ui->smallletters('w', 9, 'get') == 'datatable') { require_once(EASYWIDIR . '/stuff/ajax/datatable_userlog.php'); - // Mail log + // Mail log } else if ($ui->smallletters('d', 7, 'get') =='maillog' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['jobs']) { require_once(EASYWIDIR . '/stuff/ajax/datatable_maillog.php'); - // Job log + // Job log } else if ($ui->smallletters('d', 6, 'get') =='joblog' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['jobs']) { require_once(EASYWIDIR . '/stuff/ajax/datatable_joblog.php'); - // ipbans + // IP bans } else if ($ui->smallletters('d', 6, 'get') =='ipbans' and isset($admin_id) and isset($reseller_id) and $reseller_id == 0 and $pa['ipBans']) { require_once(EASYWIDIR . '/stuff/ajax/datatable_ipbans.php'); - // App server - } else if ($ui->smallletters('d', 9, 'get') =='appserver' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['roots']) { + // custom module + } else if ($ui->smallletters('d', 12, 'get') =='custommodule' and isset($admin_id) and isset($reseller_id) and $reseller_id == 0 and $pa['root']) { - require_once(EASYWIDIR . '/stuff/ajax/datatable_appserver.php'); + require_once(EASYWIDIR . '/stuff/ajax/datatable_custommodule.php'); - // App (GS + Tools) masterserver - } else if ($ui->smallletters('d', 15, 'get') =='appmasterserver' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['masterServer']) { - - require_once(EASYWIDIR . '/stuff/ajax/datatable_appmasterserver.php'); - - // GS images - } else if ($ui->smallletters('d', 10, 'get') =='gameimages' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['gimages']) { - - require_once(EASYWIDIR . '/stuff/ajax/datatable_gameimages.php'); - - // GS addons - } else if ($ui->smallletters('d', 16, 'get') =='gameserveraddons' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['addons']) { - - require_once(EASYWIDIR . '/stuff/ajax/datatable_gameaddons.php'); - - // List of imported news feeds + // List of imported news feeds } else if ($ui->smallletters('d', 16, 'get') =='feedsnewsentries' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['addons']) { require_once(EASYWIDIR . '/stuff/ajax/datatable_feedsnewsentries.php'); - // List of feeds + // List of feeds } else if ($ui->smallletters('d', 5, 'get') =='feeds' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['addons']) { require_once(EASYWIDIR . '/stuff/ajax/datatable_feeds.php'); - // Code wise it seems odd, but this way we can get plausible userIDs for following queries up front + // App (GS + Tools) masterserver + } else if ($ui->smallletters('d', 15, 'get') =='appmasterserver' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['masterServer']) { + + require_once(EASYWIDIR . '/stuff/ajax/datatable_appmasterserver.php'); + + // GS images + } else if ($ui->smallletters('d', 10, 'get') =='gameimages' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['gimages']) { + + require_once(EASYWIDIR . '/stuff/ajax/datatable_gameimages.php'); + + // GS addons + } else if ($ui->smallletters('d', 16, 'get') =='gameserveraddons' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['addons']) { + + require_once(EASYWIDIR . '/stuff/ajax/datatable_gameaddons.php'); + + // App server + } else if ($ui->smallletters('d', 9, 'get') =='appserver' and isset($admin_id) and isset($reseller_id) and isset($resellerLockupID) and $pa['roots']) { + + require_once(EASYWIDIR . '/stuff/ajax/datatable_appserver.php'); + + // Code wise it seems odd, but this way we can get plausible userIDs for following queries up front } else { // When searching a table combination that should provide a server and userĀ“s loginname, firstname, lastname. First do a search at usertable and get IDs. diff --git a/web/stuff/admin/admin_modules.php b/web/stuff/admin/admin_modules.php index f9864f9c..cd981bd8 100644 --- a/web/stuff/admin/admin_modules.php +++ b/web/stuff/admin/admin_modules.php @@ -48,12 +48,12 @@ $logusername = getusername($admin_id); $logusertype = 'admin'; $logreseller = 0; $logsubuser = 0; -$sprache = getlanguagefile('modules',$user_language,$reseller_id); +$sprache = getlanguagefile('modules', $user_language, $reseller_id); unset($name); # array with easy-wi core modules to prevent legacy issues and users from removing -$table = array( +$coreModules = array( 1 => array('id' => 1, 'active' => 'Y', 'name' => $gsprache->gameserver, 'sub' => 'gs', 'type' => $sprache->type_core), 2 => array('id' => 2, 'active' => 'Y', 'name' => 'Easy Anti Cheat', 'sub' => 'ea', 'type' => $sprache->type_core), 3 => array('id' => 3, 'active' => 'Y', 'name' => 'MySQL', 'sub' => 'my', 'type' => $sprache->type_core), @@ -65,7 +65,25 @@ $table = array( 9 => array('id' => 9, 'active' => 'Y', 'name' => 'CMS', 'sub' => 'pn', 'type' => $sprache->type_core), 10 => array('id' => 10, 'active' => 'Y', 'name' => $gsprache->webspace, 'sub' => 'ws', 'type' => $sprache->type_core) ); - + +$query = $sql->prepare("SELECT COUNT(1) AS `amount` FROM `modules` WHERE `type`='C' AND `get`=? LIMIT 1"); +$query2 = $sql->prepare("INSERT INTO `modules` (`file`,`get`,`sub`,`type`,`active`) VALUES ('',?,?,'C',?) ON DUPLICATE KEY UPDATE `active`=VALUES(`active`)"); +$query3 = $sql->prepare("INSERT INTO `translations` (`type`,`transID`,`lang`,`text`,`resellerID`) VALUES ('mo',?,?,?,?) ON DUPLICATE KEY UPDATE `text`=VALUES(`text`)"); + +foreach ($coreModules as $module) { + + $query->execute(array($module['sub'])); + + if ((int) $query->fetchColumn() == 0) { + + $query2->execute(array($module['sub'], $module['sub'], 'Y')); + + $instertedID = $sql->lastInsertId(); + + $query3->execute(array($instertedID, $user_language, $module['name'], 0)); + } +} + if ($ui->st('action', 'post') and !token(true)) { unset($header, $text); @@ -82,29 +100,7 @@ if ($ui->st('action', 'post') and !token(true)) { $active = ($ui->active('active', 'post')) ? $ui->active('active', 'post') : 'Y'; $langAvailable = getlanguages($template_to_use); - // Easy-WI core modules should only be (de)activated - if ($ui->st('d', 'get') == 'md' and $ui->st('action', 'post') == 'md' and $id < 1001) { - - $query = $sql->prepare("INSERT INTO `modules` (`id`,`file`,`get`,`sub`,`type`,`active`) VALUES (?,'',?,'','C',?) ON DUPLICATE KEY UPDATE `active`=VALUES(`active`)"); - $query->execute(array($id, (isset($table[$id]['sub'])) ? $table[$id]['sub'] : '', $active)); - - $template_file = ($query->rowCount() == 0) ? $spracheResponse->error_table : $spracheResponse->table_add; - - } else if ($ui->st('d', 'get') == 'md' and !$ui->st('action', 'post') and $id < 1001) { - - $name = (isset($table[$id]['name'])) ? $table[$id]['name'] : ''; - $query = $sql->prepare("SELECT `active` FROM `modules` WHERE `id`=? LIMIT 1"); - $query->execute(array($id)); - $active = $query->fetchColumn(); - - if ($query->rowCount() == 0) { - $active = 'Y'; - } - - $template_file = (isset($table[$id])) ? 'admin_modules_md.tpl' : 'admin_404.tpl'; - - // Custom Modules - } else if ($id > 1000 or $ui->st('d', 'get') == 'ad') { + if ($ui->st('d', 'get') == 'ad' or $ui->st('d', 'get') == 'md') { $dbSuccess = false; $file = $ui->config('file', 'post'); @@ -126,6 +122,8 @@ if ($ui->st('action', 'post') and !token(true)) { if ($ui->st('action', 'post')) { + $coreModuleFound = false; + if (!$sub or !in_array($sub, array('gs', 'pa', 'mo', 'my', 'ro', 'ti', 'us', 'vo','ws')) ) { $errors['sub'] = $sprache->sub; } @@ -156,11 +154,27 @@ if ($ui->st('action', 'post') and !token(true)) { $errors['file'] = $sprache->file; } + $query = $sql->prepare("SELECT COUNT(1) AS `amount` FROM `modules` WHERE `type`='C' AND `id`=? LIMIT 1"); + $query->execute(array($id)); + + if ($query->fetchColumn() == 1) { + + $errors = array(); + + $coreModuleFound = true; + } + if (count($errors) == 0) { if ($ui->st('action', 'post') == 'md') { - $query = $sql->prepare("UPDATE `modules` SET `get`=?,`file`=?,`sub`=?,`active`=?,`type`=? WHERE `id`=? LIMIT 1"); - $query->execute(array($get, $file, $sub, $active, $type, $id)); + + if ($coreModuleFound) { + $query = $sql->prepare("UPDATE `modules` SET `active`=? WHERE `id`=? LIMIT 1"); + $query->execute(array($active, $id)); + } else { + $query = $sql->prepare("UPDATE `modules` SET `get`=?,`file`=?,`sub`=?,`active`=?,`type`=? WHERE `id`=? LIMIT 1"); + $query->execute(array($get, $file, $sub, $active, $type, $id)); + } if ($query->rowCount() > 0) { $dbSuccess = true; @@ -177,43 +191,45 @@ if ($ui->st('action', 'post') and !token(true)) { $id = $sql->lastInsertId(); } - if ($ui->smallletters('lang', 2, 'post')) { - $array = (array) $ui->smallletters('lang', 2, 'post'); + if (!$coreModuleFound) { + if ($ui->smallletters('lang', 2, 'post')) { + $array = (array) $ui->smallletters('lang', 2, 'post'); - $query = $sql->prepare("INSERT INTO `translations` (`type`,`transID`,`lang`,`text`,`resellerID`) VALUES ('mo',?,?,?,?) ON DUPLICATE KEY UPDATE `text`=VALUES(`text`)"); - foreach($array as $lang) { + $query = $sql->prepare("INSERT INTO `translations` (`type`,`transID`,`lang`,`text`,`resellerID`) VALUES ('mo',?,?,?,?) ON DUPLICATE KEY UPDATE `text`=VALUES(`text`)"); + foreach($array as $lang) { - if (small_letters_check($lang, 2)) { - $query->execute(array($id, $lang, $ui->description('translation', 'post', $lang), 0)); + if (small_letters_check($lang, 2)) { + $query->execute(array($id, $lang, $ui->description('translation', 'post', $lang), 0)); - if ($dbSuccess === false and $query->rowCount() > 0) { - $dbSuccess = true; + if ($dbSuccess === false and $query->rowCount() > 0) { + $dbSuccess = true; + } } } - } - $query = $sql->prepare("SELECT `lang` FROM `translations` WHERE `type`='mo' AND `transID`=? AND `resellerID`=?"); - $query2 = $sql->prepare("DELETE FROM `translations` WHERE `type`='mo' AND `transID`=? AND `lang`=? AND `resellerID`=? LIMIT 1"); - $query->execute(array($id, 0)); - foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) { + $query = $sql->prepare("SELECT `lang` FROM `translations` WHERE `type`='mo' AND `transID`=? AND `resellerID`=?"); + $query2 = $sql->prepare("DELETE FROM `translations` WHERE `type`='mo' AND `transID`=? AND `lang`=? AND `resellerID`=? LIMIT 1"); + $query->execute(array($id, 0)); + foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) { - if (!in_array($row['lang'],$array)) { + if (!in_array($row['lang'],$array)) { - $query2->execute(array($id, $row['lang'], 0)); + $query2->execute(array($id, $row['lang'], 0)); - if ($dbSuccess === false and $query2->rowCount() > 0) { - $dbSuccess = true; + if ($dbSuccess === false and $query2->rowCount() > 0) { + $dbSuccess = true; + } } } - } - } else { + } else { - $query = $sql->prepare("DELETE FROM `translations` WHERE `type`='mo' AND `transID`=? AND `resellerID`=?"); - $query->execute(array($id, 0)); + $query = $sql->prepare("DELETE FROM `translations` WHERE `type`='mo' AND `transID`=? AND `resellerID`=?"); + $query->execute(array($id, 0)); - if ($dbSuccess === false and $query->rowCount() > 0) { - $dbSuccess = true; + if ($dbSuccess === false and $query->rowCount() > 0) { + $dbSuccess = true; + } } } @@ -237,13 +253,16 @@ if ($ui->st('action', 'post') and !token(true)) { $query = $sql->prepare("SELECT * FROM `modules` WHERE `id`=? LIMIT 1"); $query->execute(array($id)); foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) { + $active = $row['active']; $file = $row['file']; $sub = $row['sub']; $get = $row['get']; $type = $row['type']; $found = true; } + $languageTexts = array(); + foreach ($langAvailable as $lg) { $languageTexts[$lg] = ''; } @@ -277,11 +296,15 @@ if ($ui->st('action', 'post') and !token(true)) { $template_file = 'admin_404.tpl'; } -} else if ($ui->st('d', 'get') == 'dl' and $ui->id('id',10, 'get')) { +} else if ($ui->st('d', 'get') == 'dl' and $ui->id('id', 10, 'get')) { $id = $ui->id('id',10, 'get'); - if ($id < 1001) { + $query = $sql->prepare("SELECT COUNT(1) AS `amount` FROM `modules` WHERE `type`='C' AND `id`=? LIMIT 1"); + $query->execute(array($id)); + + if ($query->fetchColumn() == 1) { + $template_file = $sprache->error_core; } else { @@ -315,41 +338,7 @@ if ($ui->st('action', 'post') and !token(true)) { } } else { - $query = $sql->prepare("SELECT * FROM `modules`"); - $query2 = $sql->prepare("SELECT `text` FROM `translations` WHERE `type`='mo' AND `transID`=? AND `lang`=? LIMIT 1"); - $query->execute(); - - foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) { - if (isset($table[$row['id']])) { - $table[$row['id']]['active'] = $row['active']; - } else { - - $query2->execute(array($row['id'], $user_language)); - $name = $query2->fetchColumn(); - - if (strlen($name) == 0) { - $query2->execute(array($row['id'], $rSA['language'])); - $name = $query2->fetchColumn(); - } - - if (strlen($name) == 0) { - $name = $row['file']; - } - - $type = ''; - - if ($row['type'] == 'A') { - $type = $sprache->type_admin; - } else if ($row['type'] == 'P') { - $type = $sprache->type_cms; - } else if ($row['type'] == 'U') { - $type = $sprache->type_user; - } - - $table[$row['id']] = array('id' => $row['id'], 'active' => $row['active'], 'name' => $name, 'type' => $type); - } - } + configureDateTables('-1', '1, "asc"', 'ajax.php?w=datatable&d=custommodule'); $template_file = 'admin_modules_list.tpl'; - } \ No newline at end of file diff --git a/web/stuff/ajax/datatable_custommodule.php b/web/stuff/ajax/datatable_custommodule.php new file mode 100644 index 00000000..b2cd4dbe --- /dev/null +++ b/web/stuff/ajax/datatable_custommodule.php @@ -0,0 +1,103 @@ + + * + * This file is part of Easy-WI. + * + * Easy-WI is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Easy-WI is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Easy-WI. If not, see . + * + * Diese Datei ist Teil von Easy-WI. + * + * Easy-WI ist Freie Software: Sie koennen es unter den Bedingungen + * der GNU General Public License, wie von der Free Software Foundation, + * Version 3 der Lizenz oder (nach Ihrer Wahl) jeder spaeteren + * veroeffentlichten Version, weiterverbreiten und/oder modifizieren. + * + * Easy-WI wird in der Hoffnung, dass es nuetzlich sein wird, aber + * OHNE JEDE GEWAEHELEISTUNG, bereitgestellt; sogar ohne die implizite + * Gewaehrleistung der MARKTFAEHIGKEIT oder EIGNUNG FUER EINEN BESTIMMTEN ZWECK. + * Siehe die GNU General Public License fuer weitere Details. + * + * Sie sollten eine Kopie der GNU General Public License zusammen mit diesem + * Programm erhalten haben. Wenn nicht, siehe . + */ + +if (!defined('AJAXINCLUDED')) { + die('Do not access directly!'); +} + +$sprache = getlanguagefile('modules', $user_language, $resellerLockupID); + +$types = array('A' => $sprache->type_admin, 'P' => $sprache->type_cms, 'U' => $sprache->type_user, 'C' => $sprache->type_core); + +$query = $sql->prepare("SELECT COUNT(`id`) AS `amount` FROM `modules`"); +$query->execute(); + +$array['iTotalRecords'] = $query->fetchColumn(); + +if ($sSearch) { + + $translationIDs = array(); + + $query = $sql->prepare("SELECT `transID` FROM `translations` WHERE `type`='mo' AND `lang`=:lang AND `text` LIKE :search"); + $query->execute(array(':lang' => $user_language, ':search' => '%' . $sSearch . '%')); + while ($row = $query->fetch(PDO::FETCH_ASSOC)) { + $translationIDs[] = $row['transID']; + } + + $translationInQuery = (count($translationIDs) > 0) ? ' OR m.`id` IN (' . implode(',', $translationIDs) . ')' : ''; + + $translationTypeKeys = array(); + + foreach ($types as $key => $value) { + if (strpos(strtolower($value), strtolower($sSearch)) !== false) { + $translationTypeKeys[] = $key; + } + } + + $translationInQuery .= (count($translationTypeKeys) > 0) ? ' OR m.`type` IN (\'' . implode("','", $translationTypeKeys) . '\')' : ''; + + $query = $sql->prepare("SELECT COUNT(`id`) AS `amount` FROM `modules` AS m WHERE `id` LIKE :search $translationInQuery"); + $query->execute(array(':search' => '%' . $sSearch . '%')); + + $array['iTotalDisplayRecords'] = $query->fetchColumn(); +} else { + $array['iTotalDisplayRecords'] = $array['iTotalRecords']; +} + +$orderFields = array(0 => '`name`', 1 => 'm.`id`', 2 => 'm.`active`', 3 => 'm.`type`'); + +if (isset($orderFields[$iSortCol]) and is_array($orderFields[$iSortCol])) { + $orderBy = implode(' ' . $sSortDir . ', ', $orderFields[$iSortCol]) . ' ' . $sSortDir; +} else if (isset($orderFields[$iSortCol]) and !is_array($orderFields[$iSortCol])) { + $orderBy = $orderFields[$iSortCol] . ' ' . $sSortDir; +} else { + $orderBy = 'm.`id` ASC'; +} + +if ($sSearch) { + $query = $sql->prepare("SELECT m.*,(SELECT `text` FROM `translations` WHERE `type`='mo' AND `transID`=m.`id` AND `lang`=:lang LIMIT 1) AS `name` FROM `modules` AS m WHERE m.`id` LIKE :search $translationInQuery ORDER BY $orderBy LIMIT {$iDisplayStart},{$iDisplayLength}"); + $query->execute(array(':lang' => $user_language, ':search' => '%' . $sSearch . '%')); +} else { + $query = $sql->prepare("SELECT m.*,(SELECT `text` FROM `translations` WHERE `type`='mo' AND `transID`=m.`id` AND `lang`=? LIMIT 1) AS `name` FROM `modules` AS m ORDER BY $orderBy LIMIT {$iDisplayStart},{$iDisplayLength}"); + $query->execute(array($user_language)); +} + +while ($row = $query->fetch(PDO::FETCH_ASSOC)) { + $array['aaData'][] = array($row['name'], $row['id'], returnButton($template_to_use, 'ajax_admin_show_status.tpl', '', '', ($row['active'] == 'N') ? 2 : 4, ''), (string) $types[$row['type']], returnButton($template_to_use, 'ajax_admin_buttons_dl.tpl', 'mo', 'dl', $row['id'], $gsprache->del) . ' ' . returnButton($template_to_use, 'ajax_admin_buttons_md.tpl', 'mo', 'md', $row['id'], $gsprache->mod)); +} \ No newline at end of file diff --git a/web/stuff/methods/tables_add.php b/web/stuff/methods/tables_add.php index 75f0a4e7..34d4ab71 100644 --- a/web/stuff/methods/tables_add.php +++ b/web/stuff/methods/tables_add.php @@ -641,7 +641,7 @@ $query = "CREATE TABLE IF NOT EXISTS `modules` ( `active` enum('Y','N') DEFAULT 'Y', `type` enum('A','C','P','U') DEFAULT 'A', PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=1001;"; +) ENGINE=InnoDB;"; $add = $sql->prepare($query); $add->execute(); diff --git a/web/template/adminlte/admin/admin_images_dl.tpl b/web/template/adminlte/admin/admin_images_dl.tpl index 2a479713..69b1cec9 100644 --- a/web/template/adminlte/admin/admin_images_dl.tpl +++ b/web/template/adminlte/admin/admin_images_dl.tpl @@ -11,7 +11,7 @@
-
+
diff --git a/web/template/adminlte/admin/admin_master_list.tpl b/web/template/adminlte/admin/admin_master_list.tpl index 1cc3d11e..c2343735 100644 --- a/web/template/adminlte/admin/admin_master_list.tpl +++ b/web/template/adminlte/admin/admin_master_list.tpl @@ -15,18 +15,18 @@ - - - + + + - - - + + + diff --git a/web/template/adminlte/admin/admin_modules_ad.tpl b/web/template/adminlte/admin/admin_modules_ad.tpl index 9f0af693..4dfc8251 100644 --- a/web/template/adminlte/admin/admin_modules_ad.tpl +++ b/web/template/adminlte/admin/admin_modules_ad.tpl @@ -7,77 +7,100 @@ -
-
-
- - 0){ ?> -
- -

errors;?>

- -
- - - - - -
- - + 0){ ?> +
+
+
+ +

errors;?>

+ +
+
+
+ + +
+
+
+ + + + + + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +

description;?>

+ +
+ + + +
+ + +
+ + +
+ +
+ + +
-
- - -
-
- - -
-
- - -
-
- - -
-
- - Flag: '.$lg.'.png';?> -
- -
- - -
-
- - -
\ No newline at end of file diff --git a/web/template/adminlte/admin/admin_modules_dl.tpl b/web/template/adminlte/admin/admin_modules_dl.tpl index 40e925ff..e84cd075 100644 --- a/web/template/adminlte/admin/admin_modules_dl.tpl +++ b/web/template/adminlte/admin/admin_modules_dl.tpl @@ -8,30 +8,28 @@ -
-
-
-
-
-
file;?>
-
-
+
+
+
+ +
+ + + + +
+
+ +
+
+
+ + + +
-
- -
-
-
-
- - - -
-
- - - -
\ No newline at end of file diff --git a/web/template/adminlte/admin/admin_modules_list.tpl b/web/template/adminlte/admin/admin_modules_list.tpl index 8443bfc2..1e27dd2b 100644 --- a/web/template/adminlte/admin/admin_modules_list.tpl +++ b/web/template/adminlte/admin/admin_modules_list.tpl @@ -1,39 +1,47 @@
-

logs;?>

+

modules;?>

-
-
- modules;?> + +
+
+ modules;?> add;?> +
- -
-
-
haupt_ip;?>IDdesc;?>haupt_ip;?>IDdesc;?> master;?> action;?>
haupt_ip;?>IDdesc;?>haupt_ip;?>IDdesc;?> master;?> action;?>
- - - - - - - - - - - - - - - - - - -
name;?>type;?>del;?>mod;?>
1000) { ?>
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + +
name;?>IDactive;?>type;?>action;?>
name;?>IDactive;?>type;?>action;?>
+
+
\ No newline at end of file diff --git a/web/template/adminlte/admin/admin_modules_md.tpl b/web/template/adminlte/admin/admin_modules_md.tpl index faef4d49..1ba7ae2f 100644 --- a/web/template/adminlte/admin/admin_modules_md.tpl +++ b/web/template/adminlte/admin/admin_modules_md.tpl @@ -8,82 +8,108 @@ -
-
-
- - 0){ ?> -
- -

errors;?>

- -
- - -
- - -
- - + 0){ ?> +
+
+
+ +

errors;?>

+ +
+
+
+ + +
+
+
+ + + + + + +
+

+
+ +
+ +
+ + +
+ + + +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +

description;?>

+ +
+ + + +
+ + +
+ + +
+ + + +
+ + +
- 1000){ ?> -
- - -
-
- - -
-
- - -
-
- - -
-
- - - - -
- -
- - -
- -
- - -
\ No newline at end of file