X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=index.php;h=93e4cc63f503d6eae03952ec3ce7a0a8f3f74857;hb=refs%2Fpull%2F461%2Fhead;hp=beba9c32a2541abeb15b74587a7cf1a7ac86783a;hpb=893338f0d407a0989454d5e3c0e43c97f7eface5;p=github%2Fshaarli%2FShaarli.git diff --git a/index.php b/index.php index beba9c32..93e4cc63 100644 --- a/index.php +++ b/index.php @@ -1,6 +1,6 @@ /shaarli/ define('WEB_PATH', substr($_SERVER["REQUEST_URI"], 0, 1+strrpos($_SERVER["REQUEST_URI"], '/', 0))); @@ -1203,11 +1203,25 @@ function renderPage() // We sort tags alphabetically, then choose a font size according to count. // First, find max value. - $maxcount=0; foreach($tags as $key=>$value) $maxcount=max($maxcount,$value); - ksort($tags); + $maxcount = 0; + foreach ($tags as $value) { + $maxcount = max($maxcount, $value); + } + + // Sort tags alphabetically: case insensitive, support locale if avalaible. + uksort($tags, function($a, $b) { + // Collator is part of PHP intl. + if (class_exists('Collator')) { + $c = new Collator(setlocale(LC_ALL, 0)); + return $c->compare($a, $b); + } else { + return strcasecmp($a, $b); + } + }); + $tagList=array(); foreach($tags as $key=>$value) - // Tag font size scaling: default 15 and 30 logarithm bases affect scaling, 22 and 6 are arbitrary font sizes for max and min sizes. + // Tag font size scaling: default 15 and 30 logarithm bases affect scaling, 22 and 6 are arbitrary font sizes for max and min sizes. { $tagList[$key] = array('count'=>$value,'size'=>log($value, 15) / log($maxcount, 30) * (22-6) + 6); } @@ -1770,6 +1784,54 @@ HTML; exit; } + // Plugin administration page + if ($targetPage == Router::$PAGE_PLUGINSADMIN) { + $pluginMeta = $pluginManager->getPluginsMeta(); + + // Split plugins into 2 arrays: ordered enabled plugins and disabled. + $enabledPlugins = array_filter($pluginMeta, function($v) { return $v['order'] !== false; }); + // Load parameters. + $enabledPlugins = load_plugin_parameter_values($enabledPlugins, $GLOBALS['plugins']); + uasort( + $enabledPlugins, + function($a, $b) { return $a['order'] - $b['order']; } + ); + $disabledPlugins = array_filter($pluginMeta, function($v) { return $v['order'] === false; }); + + $PAGE->assign('enabledPlugins', $enabledPlugins); + $PAGE->assign('disabledPlugins', $disabledPlugins); + $PAGE->renderPage('pluginsadmin'); + exit; + } + + // Plugin administration form action + if ($targetPage == Router::$PAGE_SAVE_PLUGINSADMIN) { + try { + if (isset($_POST['parameters_form'])) { + unset($_POST['parameters_form']); + foreach ($_POST as $param => $value) { + $GLOBALS['plugins'][$param] = escape($value); + } + } + else { + $GLOBALS['config']['ENABLED_PLUGINS'] = save_plugin_config($_POST); + } + writeConfig($GLOBALS, isLoggedIn()); + } + catch (Exception $e) { + error_log( + 'ERROR while saving plugin configuration:.' . PHP_EOL . + $e->getMessage() + ); + + // TODO: do not handle exceptions/errors in JS. + echo ''; + exit; + } + header('Location: ?do='. Router::$PAGE_PLUGINSADMIN); + exit; + } + // -------- Otherwise, simply display search form and links: showLinkList($PAGE, $LINKSDB); exit;