mirror of
https://github.com/friendica/friendica
synced 2024-11-09 17:02:54 +00:00
theme shakeup commences - themes are now administered in admin panel.
This commit is contained in:
parent
65ddefe9c5
commit
44c23cda8e
9 changed files with 215 additions and 13 deletions
2
boot.php
2
boot.php
|
@ -11,7 +11,7 @@ require_once('include/cache.php');
|
||||||
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
||||||
define ( 'FRIENDICA_VERSION', '2.3.1261' );
|
define ( 'FRIENDICA_VERSION', '2.3.1261' );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
|
||||||
define ( 'DB_UPDATE_VERSION', 1123 );
|
define ( 'DB_UPDATE_VERSION', 1124 );
|
||||||
|
|
||||||
define ( 'EOL', "<br />\r\n" );
|
define ( 'EOL', "<br />\r\n" );
|
||||||
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
||||||
|
|
|
@ -32,6 +32,9 @@ $a->config['sitename'] = "Friendica Social Network";
|
||||||
// to the email address of an already registered person who can authorise
|
// to the email address of an already registered person who can authorise
|
||||||
// and/or approve/deny the request.
|
// and/or approve/deny the request.
|
||||||
|
|
||||||
|
// In order to perform system administration via the admin panel, admin_email
|
||||||
|
// must precisely match the email address of the person logged in.
|
||||||
|
|
||||||
$a->config['register_policy'] = REGISTER_OPEN;
|
$a->config['register_policy'] = REGISTER_OPEN;
|
||||||
$a->config['register_text'] = '';
|
$a->config['register_text'] = '';
|
||||||
$a->config['admin_email'] = '';
|
$a->config['admin_email'] = '';
|
||||||
|
@ -64,6 +67,10 @@ $a->config['system']['huburl'] = 'http://pubsubhubbub.appspot.com';
|
||||||
|
|
||||||
$a->config['system']['rino_encrypt'] = true;
|
$a->config['system']['rino_encrypt'] = true;
|
||||||
|
|
||||||
|
// allowed themes (change this from admin panel after installation)
|
||||||
|
|
||||||
|
$a->config['system']['allowed_themes'] = 'dispy,quattro,testbubble,vier,darkbubble,darkzero,duepuntozero,greenzero,purplezero,quattro-green,slackr';
|
||||||
|
|
||||||
// default system theme
|
// default system theme
|
||||||
|
|
||||||
$a->config['system']['theme'] = 'duepuntozero';
|
$a->config['system']['theme'] = 'duepuntozero';
|
||||||
|
|
179
mod/admin.php
179
mod/admin.php
|
@ -6,14 +6,19 @@
|
||||||
require_once("include/remoteupdate.php");
|
require_once("include/remoteupdate.php");
|
||||||
|
|
||||||
function admin_post(&$a){
|
function admin_post(&$a){
|
||||||
|
|
||||||
|
|
||||||
if(!is_site_admin()) {
|
if(!is_site_admin()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// do not allow a page manager to access the admin panel at all.
|
||||||
|
|
||||||
if(x($_SESSION,'submanage') && intval($_SESSION['submanage']))
|
if(x($_SESSION,'submanage') && intval($_SESSION['submanage']))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// urls
|
// urls
|
||||||
if ($a->argc > 1){
|
if ($a->argc > 1){
|
||||||
switch ($a->argv[1]){
|
switch ($a->argv[1]){
|
||||||
|
@ -66,6 +71,7 @@ function admin_content(&$a) {
|
||||||
'site' => Array($a->get_baseurl()."/admin/site/", t("Site") , "site"),
|
'site' => Array($a->get_baseurl()."/admin/site/", t("Site") , "site"),
|
||||||
'users' => Array($a->get_baseurl()."/admin/users/", t("Users") , "users"),
|
'users' => Array($a->get_baseurl()."/admin/users/", t("Users") , "users"),
|
||||||
'plugins'=> Array($a->get_baseurl()."/admin/plugins/", t("Plugins") , "plugins"),
|
'plugins'=> Array($a->get_baseurl()."/admin/plugins/", t("Plugins") , "plugins"),
|
||||||
|
'themes' => Array($a->get_baseurl()."/admin/themes/", t("Themes") , "themes"),
|
||||||
'update' => Array($a->get_baseurl()."/admin/update/", t("Update") , "update")
|
'update' => Array($a->get_baseurl()."/admin/update/", t("Update") , "update")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -108,6 +114,9 @@ function admin_content(&$a) {
|
||||||
case 'plugins':
|
case 'plugins':
|
||||||
$o = admin_page_plugins($a);
|
$o = admin_page_plugins($a);
|
||||||
break;
|
break;
|
||||||
|
case 'themes':
|
||||||
|
$o = admin_page_themes($a);
|
||||||
|
break;
|
||||||
case 'logs':
|
case 'logs':
|
||||||
$o = admin_page_logs($a);
|
$o = admin_page_logs($a);
|
||||||
break;
|
break;
|
||||||
|
@ -564,7 +573,7 @@ function admin_page_plugins(&$a){
|
||||||
'$info' => get_plugin_info($plugin),
|
'$info' => get_plugin_info($plugin),
|
||||||
|
|
||||||
'$admin_form' => $admin_form,
|
'$admin_form' => $admin_form,
|
||||||
|
'$function' => $plugins,
|
||||||
'$readme' => $readme
|
'$readme' => $readme
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
@ -593,11 +602,177 @@ function admin_page_plugins(&$a){
|
||||||
'$page' => t('Plugins'),
|
'$page' => t('Plugins'),
|
||||||
'$submit' => t('Submit'),
|
'$submit' => t('Submit'),
|
||||||
'$baseurl' => $a->get_baseurl(),
|
'$baseurl' => $a->get_baseurl(),
|
||||||
|
'$function' => 'plugins',
|
||||||
'$plugins' => $plugins
|
'$plugins' => $plugins
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function toggle_theme(&$themes,$th,&$result) {
|
||||||
|
for($x = 0; $x < count($themes); $x ++) {
|
||||||
|
if($themes[$x]['name'] === $th) {
|
||||||
|
if($themes[$x]['allowed']) {
|
||||||
|
$themes[$x]['allowed'] = 0;
|
||||||
|
$result = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$themes[$x]['allowed'] = 1;
|
||||||
|
$result = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function theme_status($themes,$th) {
|
||||||
|
for($x = 0; $x < count($themes); $x ++) {
|
||||||
|
if($themes[$x]['name'] === $th) {
|
||||||
|
if($themes[$x]['allowed']) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function rebuild_theme_table($themes) {
|
||||||
|
$o = '';
|
||||||
|
if(count($themes)) {
|
||||||
|
foreach($themes as $th) {
|
||||||
|
if($th['allowed']) {
|
||||||
|
if(strlen($o))
|
||||||
|
$o .= ',';
|
||||||
|
$o .= $th['name'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $o;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Themes admin page
|
||||||
|
*/
|
||||||
|
|
||||||
|
function admin_page_themes(&$a){
|
||||||
|
|
||||||
|
$allowed_themes_str = get_config('system','allowed_themes');
|
||||||
|
$allowed_themes_raw = explode(',',$allowed_themes_str);
|
||||||
|
$allowed_themes = array();
|
||||||
|
if(count($allowed_themes_raw))
|
||||||
|
foreach($allowed_themes_raw as $x)
|
||||||
|
if(strlen(trim($x)))
|
||||||
|
$allowed_themes[] = trim($x);
|
||||||
|
|
||||||
|
$themes = array();
|
||||||
|
$files = glob('view/theme/*');
|
||||||
|
if($files) {
|
||||||
|
foreach($files as $file) {
|
||||||
|
$f = basename($file);
|
||||||
|
$is_experimental = intval(file_exists($file . '/experimental'));
|
||||||
|
$is_unsupported = 1-(intval(file_exists($file . '/unsupported')));
|
||||||
|
$is_allowed = intval(in_array($f,$allowed_themes));
|
||||||
|
$themes[] = array('name' => $f, 'experimental' => $is_experimental, 'supported' => $is_supported, 'allowed' => $is_allowed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(! count($themes)) {
|
||||||
|
notice( t('No themes found.'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Single theme
|
||||||
|
*/
|
||||||
|
|
||||||
|
if ($a->argc == 3){
|
||||||
|
$theme = $a->argv[2];
|
||||||
|
if(! is_dir("view/theme/$theme")){
|
||||||
|
notice( t("Item not found.") );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x($_GET,"a") && $_GET['a']=="t"){
|
||||||
|
|
||||||
|
// Toggle theme status
|
||||||
|
|
||||||
|
toggle_theme($themes,$theme,$result);
|
||||||
|
$s = rebuild_theme_table($themes);
|
||||||
|
if($result)
|
||||||
|
info( sprintf('Theme %s enabled.',$theme));
|
||||||
|
else
|
||||||
|
info( sprintf('Theme %s disabled.',$theme));
|
||||||
|
|
||||||
|
set_config('system','allowed_themes',$s);
|
||||||
|
goaway($a->get_baseurl() . '/admin/themes' );
|
||||||
|
return; // NOTREACHED
|
||||||
|
}
|
||||||
|
|
||||||
|
// display plugin details
|
||||||
|
require_once('library/markdown.php');
|
||||||
|
|
||||||
|
if (theme_status($themes,$theme)) {
|
||||||
|
$status="on"; $action= t("Disable");
|
||||||
|
} else {
|
||||||
|
$status="off"; $action= t("Enable");
|
||||||
|
}
|
||||||
|
|
||||||
|
$readme=Null;
|
||||||
|
if (is_file("view/$theme/README.md")){
|
||||||
|
$readme = file_get_contents("view/$theme/README.md");
|
||||||
|
$readme = Markdown($readme);
|
||||||
|
} else if (is_file("view/$theme/README")){
|
||||||
|
$readme = "<pre>". file_get_contents("view/$theme/README") ."</pre>";
|
||||||
|
}
|
||||||
|
|
||||||
|
$admin_form="";
|
||||||
|
|
||||||
|
$t = get_markup_template("admin_plugins_details.tpl");
|
||||||
|
return replace_macros($t, array(
|
||||||
|
'$title' => t('Administration'),
|
||||||
|
'$page' => t('Themes'),
|
||||||
|
'$toggle' => t('Toggle'),
|
||||||
|
'$settings' => t('Settings'),
|
||||||
|
'$baseurl' => $a->get_baseurl(),
|
||||||
|
|
||||||
|
'$plugin' => $theme,
|
||||||
|
'$status' => $status,
|
||||||
|
'$action' => $action,
|
||||||
|
'$info' => array('name' => $theme,'version' => '','description' => ''),
|
||||||
|
'$function' => 'themes',
|
||||||
|
'$admin_form' => $admin_form,
|
||||||
|
|
||||||
|
'$readme' => $readme
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List plugins
|
||||||
|
*/
|
||||||
|
|
||||||
|
$xthemes = array();
|
||||||
|
if($themes) {
|
||||||
|
foreach($themes as $th) {
|
||||||
|
$xthemes[] = array($th['name'],(($th['allowed']) ? "on" : "off"),array('name' => $th['name'],'version' => '','description' => ''));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$t = get_markup_template("admin_plugins.tpl");
|
||||||
|
return replace_macros($t, array(
|
||||||
|
'$title' => t('Administration'),
|
||||||
|
'$page' => t('Themes'),
|
||||||
|
'$submit' => t('Submit'),
|
||||||
|
'$baseurl' => $a->get_baseurl(),
|
||||||
|
'$function' => 'themes',
|
||||||
|
'$plugins' => $xthemes
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logs admin page
|
* Logs admin page
|
||||||
|
|
|
@ -49,6 +49,11 @@ function follow_init(&$a) {
|
||||||
goaway($_SESSION['return_url']);
|
goaway($_SESSION['return_url']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This just confuses things, remove it
|
||||||
|
if($ret['network'] === NETWORK_DIASPORA)
|
||||||
|
$ret['url'] = str_replace('?absolute=true','',$ret['url']);
|
||||||
|
|
||||||
|
|
||||||
// do we have enough information?
|
// do we have enough information?
|
||||||
|
|
||||||
|
|
|
@ -210,7 +210,7 @@ function settings_post(&$a) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : '');
|
$theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : $a->user['theme']);
|
||||||
$username = ((x($_POST,'username')) ? notags(trim($_POST['username'])) : '');
|
$username = ((x($_POST,'username')) ? notags(trim($_POST['username'])) : '');
|
||||||
$email = ((x($_POST,'email')) ? notags(trim($_POST['email'])) : '');
|
$email = ((x($_POST,'email')) ? notags(trim($_POST['email'])) : '');
|
||||||
$timezone = ((x($_POST,'timezone')) ? notags(trim($_POST['timezone'])) : '');
|
$timezone = ((x($_POST,'timezone')) ? notags(trim($_POST['timezone'])) : '');
|
||||||
|
@ -728,13 +728,23 @@ function settings_content(&$a) {
|
||||||
$default_theme = get_config('system','theme');
|
$default_theme = get_config('system','theme');
|
||||||
if(! $default_theme)
|
if(! $default_theme)
|
||||||
$default_theme = 'default';
|
$default_theme = 'default';
|
||||||
|
|
||||||
|
$allowed_themes_str = get_config('system','allowed_themes');
|
||||||
|
$allowed_themes_raw = explode(',',$allowed_themes_str);
|
||||||
|
$allowed_themes = array();
|
||||||
|
if(count($allowed_themes_raw))
|
||||||
|
foreach($allowed_themes_raw as $x)
|
||||||
|
if(strlen(trim($x)))
|
||||||
|
$allowed_themes[] = trim($x);
|
||||||
|
|
||||||
|
|
||||||
$themes = array();
|
$themes = array();
|
||||||
$files = glob('view/theme/*');
|
$files = glob('view/theme/*');
|
||||||
if($files) {
|
if($allowed_themes) {
|
||||||
foreach($files as $file) {
|
foreach($allowed_themes as $th) {
|
||||||
$f = basename($file);
|
$f = $th;
|
||||||
$is_experimental = file_exists($file . '/experimental');
|
$is_experimental = file_exists('view/theme/' . $th . '/experimental');
|
||||||
|
$unsupported = file_exists('view/theme/' . $th . '/unsupported');
|
||||||
if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){
|
if (!$is_experimental or ($is_experimental && (get_config('experimentals','exp_themes')==1 or get_config('experimentals','exp_themes')===false))){
|
||||||
$theme_name = (($is_experimental) ? sprintf("%s - \x28Experimental\x29", $f) : $f);
|
$theme_name = (($is_experimental) ? sprintf("%s - \x28Experimental\x29", $f) : $f);
|
||||||
$themes[$f]=$theme_name;
|
$themes[$f]=$theme_name;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
define( 'UPDATE_VERSION' , 1123 );
|
define( 'UPDATE_VERSION' , 1124 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -1068,4 +1068,8 @@ function update_1121() {
|
||||||
function update_1122() {
|
function update_1122() {
|
||||||
q("ALTER TABLE `notify` ADD `hash` CHAR( 64 ) NOT NULL AFTER `id` ,
|
q("ALTER TABLE `notify` ADD `hash` CHAR( 64 ) NOT NULL AFTER `id` ,
|
||||||
ADD INDEX ( `hash` ) ");
|
ADD INDEX ( `hash` ) ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_1123() {
|
||||||
|
set_config('system','allowed_themes','dispy,quattro,testbubble,vier,darkbubble,darkzero,duepuntozero,greenzero,purplezero,quattro-green,slackr');
|
||||||
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<li class='admin link button $admin.site.2'><a href='$admin.site.0'>$admin.site.1</a></li>
|
<li class='admin link button $admin.site.2'><a href='$admin.site.0'>$admin.site.1</a></li>
|
||||||
<li class='admin link button $admin.users.2'><a href='$admin.users.0'>$admin.users.1</a><span id='pending-update' title='$h_pending'></span></li>
|
<li class='admin link button $admin.users.2'><a href='$admin.users.0'>$admin.users.1</a><span id='pending-update' title='$h_pending'></span></li>
|
||||||
<li class='admin link button $admin.plugins.2'><a href='$admin.plugins.0'>$admin.plugins.1</a></li>
|
<li class='admin link button $admin.plugins.2'><a href='$admin.plugins.0'>$admin.plugins.1</a></li>
|
||||||
|
<li class='admin link button $admin.themes.2'><a href='$admin.themes.0'>$admin.themes.1</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<ul class='admin linklist'>
|
<ul class='admin linklist'>
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
<ul id='pluginslist'>
|
<ul id='pluginslist'>
|
||||||
{{ for $plugins as $p }}
|
{{ for $plugins as $p }}
|
||||||
<li class='plugin $p.1'>
|
<li class='plugin $p.1'>
|
||||||
<a class='toggleplugin' href='$baseurl/admin/plugins/$p.0?a=t' title="{{if $p.1==on }}Disable{{ else }}Enable{{ endif }}" ><span class='icon $p.1'></span></a>
|
<a class='toggleplugin' href='$baseurl/admin/$function/$p.0?a=t' title="{{if $p.1==on }}Disable{{ else }}Enable{{ endif }}" ><span class='icon $p.1'></span></a>
|
||||||
<a href='$baseurl/admin/plugins/$p.0'><span class='name'>$p.2.name</span></a> - <span class="version">$p.2.version</span>
|
<a href='$baseurl/admin/$function/$p.0'><span class='name'>$p.2.name</span></a> - <span class="version">$p.2.version</span>
|
||||||
<div class='desc'>$p.2.description</div>
|
<div class='desc'>$p.2.description</div>
|
||||||
</li>
|
</li>
|
||||||
{{ endfor }}
|
{{ endfor }}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div id='adminpage'>
|
<div id='adminpage'>
|
||||||
<h1>$title - $page</h1>
|
<h1>$title - $page</h1>
|
||||||
|
|
||||||
<p><span class='toggleplugin icon $status'></span> $info.name - $info.version : <a href="$baseurl/admin/plugins/$plugin/?a=t">$action</a></p>
|
<p><span class='toggleplugin icon $status'></span> $info.name - $info.version : <a href="$baseurl/admin/$function/$plugin/?a=t">$action</a></p>
|
||||||
<p>$info.description</p>
|
<p>$info.description</p>
|
||||||
|
|
||||||
<p class="author">
|
<p class="author">
|
||||||
|
|
Loading…
Reference in a new issue