]> git.mxchange.org Git - friendica.git/commitdiff
theme shakeup commences - themes are now administered in admin panel.
authorfriendica <info@friendica.com>
Fri, 24 Feb 2012 04:29:09 +0000 (20:29 -0800)
committerfriendica <info@friendica.com>
Fri, 24 Feb 2012 04:29:09 +0000 (20:29 -0800)
boot.php
htconfig.php
mod/admin.php
mod/follow.php
mod/settings.php
update.php
view/admin_aside.tpl
view/admin_plugins.tpl
view/admin_plugins_details.tpl

index 9219d5cfa0b66c213cf4c0e17918f811467a6fb3..3cf8f8e3cb1f251a10c935d2726765c5e010e6c7 100755 (executable)
--- a/boot.php
+++ b/boot.php
@@ -11,7 +11,7 @@ require_once('include/cache.php');
 define ( 'FRIENDICA_PLATFORM',     'Friendica');
 define ( 'FRIENDICA_VERSION',      '2.3.1261' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.22'    );
-define ( 'DB_UPDATE_VERSION',      1123      );
+define ( 'DB_UPDATE_VERSION',      1124      );
 
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
index cb6e7b7840d323f5cfd88716ae396513b53d50bb..01f56f2c42375e27a92bf525b5682d3e09521b8e 100755 (executable)
@@ -32,6 +32,9 @@ $a->config['sitename'] = "Friendica Social Network";
 // to the email address of an already registered person who can authorise
 // 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_text'] = '';
 $a->config['admin_email'] = '';
@@ -64,6 +67,10 @@ $a->config['system']['huburl'] = 'http://pubsubhubbub.appspot.com';
 
 $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
 
 $a->config['system']['theme'] = 'duepuntozero';
index 028ed8624d86e353f8fd7d99b00a64e366c3fc06..d9864dc6af0421a3a1d11d11f5255b99f9ba067c 100755 (executable)
@@ -6,14 +6,19 @@
 require_once("include/remoteupdate.php");
  
 function admin_post(&$a){
+
+
        if(!is_site_admin()) {
                return;
        }
 
+       // do not allow a page manager to access the admin panel at all.
 
        if(x($_SESSION,'submanage') && intval($_SESSION['submanage']))
                return;
        
+
+
        // urls
        if ($a->argc > 1){
                switch ($a->argv[1]){
@@ -66,6 +71,7 @@ function admin_content(&$a) {
                'site'   =>     Array($a->get_baseurl()."/admin/site/", t("Site") , "site"),
                'users'  =>     Array($a->get_baseurl()."/admin/users/", t("Users") , "users"),
                '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")
        );
        
@@ -108,6 +114,9 @@ function admin_content(&$a) {
                        case 'plugins':
                                $o = admin_page_plugins($a);
                                break;
+                       case 'themes':
+                               $o = admin_page_themes($a);
+                               break;
                        case 'logs':
                                $o = admin_page_logs($a);
                                break;
@@ -564,7 +573,7 @@ function admin_page_plugins(&$a){
                        '$info' => get_plugin_info($plugin),
                
                        '$admin_form' => $admin_form,
-                       
+                       '$function' => $plugins,                        
                        '$readme' => $readme
                ));
        } 
@@ -593,11 +602,177 @@ function admin_page_plugins(&$a){
                '$page' => t('Plugins'),
                '$submit' => t('Submit'),
                '$baseurl' => $a->get_baseurl(),
-       
+               '$function' => '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
index f8964885e187050b34f4a59cf9477eaea20ea238..ae8cb200c74f68f1d70f1a1440e20038f2f8e50d 100755 (executable)
@@ -49,6 +49,11 @@ function follow_init(&$a) {
                        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?
        
index 57a4e6db03e9967028e37f1cc541b2406c78fcac..91f4325dad3b73a2d0495e1e356d485a1afbf834 100755 (executable)
@@ -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']))     : '');
        $email            = ((x($_POST,'email'))      ? notags(trim($_POST['email']))        : '');
        $timezone         = ((x($_POST,'timezone'))   ? notags(trim($_POST['timezone']))     : '');
@@ -728,13 +728,23 @@ function settings_content(&$a) {
        $default_theme = get_config('system','theme');
        if(! $default_theme)
                $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();
        $files = glob('view/theme/*');
-       if($files) {
-               foreach($files as $file) {
-                       $f = basename($file);
-                       $is_experimental = file_exists($file . '/experimental');
+       if($allowed_themes) {
+               foreach($allowed_themes as $th) {
+                       $f = $th;
+                       $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))){ 
                                $theme_name = (($is_experimental) ?  sprintf("%s - \x28Experimental\x29", $f) : $f);
                                $themes[$f]=$theme_name;
index 16c1d78488b6e60bd74e7c4b5c57e66508867dba..07555bc01943692c98526acd2ccc1cb6641fe917 100755 (executable)
@@ -1,6 +1,6 @@
 <?php
 
-define( 'UPDATE_VERSION' , 1123 );
+define( 'UPDATE_VERSION' , 1124 );
 
 /**
  *
@@ -1068,4 +1068,8 @@ function update_1121() {
 function update_1122() {
 q("ALTER TABLE `notify` ADD `hash` CHAR( 64 ) NOT NULL AFTER `id` ,
 ADD INDEX ( `hash` ) ");
-}
\ No newline at end of file
+}
+
+function update_1123() {
+set_config('system','allowed_themes','dispy,quattro,testbubble,vier,darkbubble,darkzero,duepuntozero,greenzero,purplezero,quattro-green,slackr');
+}
index a10c06f4ee4ead8ab603528306695eff6538017d..4bf7ce9d3a1f172f0db4653112da0d5620fa627f 100755 (executable)
@@ -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.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.themes.2'><a href='$admin.themes.0'>$admin.themes.1</a></li>
 </ul>
 
 <ul class='admin linklist'>
index bb1f5c90f70769bbbfd2c2e26f885c8b0d830940..f4afd2cf036c6e1099445ed05022fefa3e54e3f3 100755 (executable)
@@ -4,8 +4,8 @@
                <ul id='pluginslist'>
                {{ for $plugins as $p }}
                        <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 href='$baseurl/admin/plugins/$p.0'><span class='name'>$p.2.name</span></a> - <span class="version">$p.2.version</span>
+                               <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/$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>
                        </li>
                {{ endfor }}
index f3c0685f59b3f3a1f118ca79b79bf91258f382b6..76ea73d4d95a04d6c155b769259bb0ae5b74c3d4 100755 (executable)
@@ -1,7 +1,7 @@
 <div id='adminpage'>
        <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 class="author">