From afd0f8e4d8ff0a37d1a337f160eeae642a2f07d6 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 13 Jun 2011 12:51:36 +0200 Subject: load $a->config from db --- index.php | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/index.php b/index.php index 534cb93f7..9bca1527b 100644 --- a/index.php +++ b/index.php @@ -29,7 +29,6 @@ $install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false @include(".htconfig.php"); - $lang = get_language(); load_translation_table($lang); @@ -45,6 +44,20 @@ $db = new dba($db_host, $db_user, $db_pass, $db_data, $install); unset($db_host, $db_user, $db_pass, $db_data); +/** + * Load configs from db. Overwrite configs from .htconfig.php + */ +$r = q("SELECT * FROM `config` WHERE `cat` IN ('system', 'config')"); +foreach ($r as $c) { + if ($c['cat']=='config') { + $a->config[$c['k']] = $c['v']; + } else { + $a->config[$c['cat']][$c['k']] = $c['v']; + } +} +unset($r); + + /** * * Important stuff we always need to do. -- cgit v1.2.3 From 3364c2a2d8ab88703c5566a39df13ef1042f8644 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 13 Jun 2011 12:52:29 +0200 Subject: Initial admin page --- mod/admin.php | 105 +++++++++++++++++++++++++++++++++++++++++++++++++ view/admin_aside.tpl | 20 ++++++++++ view/admin_summary.tpl | 33 ++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 mod/admin.php create mode 100644 view/admin_aside.tpl create mode 100644 view/admin_summary.tpl diff --git a/mod/admin.php b/mod/admin.php new file mode 100644 index 000000000..13131f013 --- /dev/null +++ b/mod/admin.php @@ -0,0 +1,105 @@ + 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") + ); + + /* get plugins admin page */ + + $r = q("SELECT * FROM `hook` WHERE `hook`='plugin_admin'"); + $aside['plugins_admin']=Array(); + foreach ($r as $h){ + $plugin = explode("/",$h['file']); $plugin = $plugin[1]; + $aside['plugins_admin'][] = Array($a->get_baseurl()."/admin/plugins/".$plugin, $plugin, "plugin"); + } + + $aside['logs'] = Array($a->get_baseurl()."/admin/logs/", t("Logs"), "logs"); + + $t = get_markup_template("admin_aside.tpl"); + $a->page['aside'] = replace_macros( $t, array('$admin' => $aside) ); + + + + /** + * Page content + */ + $o = ''; + + // urls + if ($a->argc > 1){ + switch ($a->argv[1]){ + case 'site': { + $o = admin_page_site($a); + break; + } + default: + notice( t("Item not found.") ); + } + } else { + $o = admin_page_summary($a); + } + return $o; +} + + +/** + * Admin Summary Page + */ +function admin_page_summary(&$a) { + $r = q("SELECT `page-flags`, COUNT(uid) as `count` FROM `user` GROUP BY `page-flags`"); + $accounts = Array( + Array( t('Normal Account'), 0), + Array( t('Soapbox Account'), 0), + Array( t('Community/Celebrity Account'), 0), + Array( t('Automatic Friend Account'), 0) + ); + $users=0; + foreach ($r as $u){ $accounts[$u['page-flags']][1] = $u['count']; $users+=$u['count']; } + + //echo "
"; var_dump($a->plugins); die("
"); + + + $r = q("SELECT COUNT(id) as `count` FROM `register`"); + $pending = $r[0]['count']; + + + + + + $t = get_markup_template("admin_summary.tpl"); + return replace_macros($t, array( + '$title' => t('Administration'), + '$page' => t('Summary'), + '$users' => Array( t('Registered users'), $users), + '$accounts' => $accounts, + '$pending' => Array( t('Pending registrations'), $pending), + '$version' => Array( t('Version'), FRIENDIKA_VERSION), + '$build' => get_config('system','build'), + '$plugins' => Array( t('Active plugins'), $a->plugins ) + )); +} diff --git a/view/admin_aside.tpl b/view/admin_aside.tpl new file mode 100644 index 000000000..24aafa775 --- /dev/null +++ b/view/admin_aside.tpl @@ -0,0 +1,20 @@ +

Admin

+ + + +{{ if $admin.plugins_admin }}

Plugins

{{ endif }} + + + +

Logs

+ diff --git a/view/admin_summary.tpl b/view/admin_summary.tpl new file mode 100644 index 000000000..cbd659d07 --- /dev/null +++ b/view/admin_summary.tpl @@ -0,0 +1,33 @@ +

$title - $page

+ +
+
$users.0
+
$users.1
+
+{{ for $accounts as $p }} +
+
$p.0
+
$p.1
+
+{{ endfor }} + +
+
$pending.0
+
$pending.1 +
+ +
+
$version.0
+
$version.1 - $build +
+ + + +
+
$plugins.0
+ + {{ for $plugins.1 as $p }} +
$p
+ {{ endfor }} + +
-- cgit v1.2.3 From 494288ab9f9370bdf4f7b4ab9990b64f05adbd9d Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 13 Jun 2011 12:52:52 +0200 Subject: Add admin page in nav --- include/nav.php | 9 +++++++-- view/nav.tpl | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/include/nav.php b/include/nav.php index 66fdbc49b..5e50a8b79 100644 --- a/include/nav.php +++ b/include/nav.php @@ -107,10 +107,15 @@ function nav(&$a) { $nav['settings'] = array('settings', t('Settings'),""); $nav['profiles'] = array('profiles', t('Profiles'),""); $nav['contacts'] = array('contacts', t('Contacts'),""); - - } + /** + * Admin page + */ + if (is_site_admin()){ + $nav['admin'] = array('admin/', t('Admin'), ""); + } + /** * diff --git a/view/nav.tpl b/view/nav.tpl index 7e76811d9..79114749a 100644 --- a/view/nav.tpl +++ b/view/nav.tpl @@ -16,6 +16,8 @@ $langselector $nav.search.1 $nav.directory.1 +{{ if $nav.admin }}$nav.admin.1{{ endif }} + {{ if $nav.network }} $nav.network.1 -- cgit v1.2.3 From a1c59d6011138ca2a0d366d1ea6f6369e679df81 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 13 Jun 2011 12:53:03 +0200 Subject: Fix it strings --- view/it/strings.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/it/strings.php b/view/it/strings.php index 75459e23a..32092a3f1 100644 --- a/view/it/strings.php +++ b/view/it/strings.php @@ -123,7 +123,7 @@ $a->strings["Administrator"] = "Amministratore"; $a->strings["Friend/Connection Request"] = "Richieste di Amicizia/Connessione"; $a->strings["Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca"] = "Esempi: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca"; $a->strings["Please answer the following:"] = "Rispondi al seguente:"; -$a->strings["Does \$name know you?"] = "$name ti conosce?"; +$a->strings["Does \$name know you?"] = "\$name ti conosce?"; $a->strings["Yes"] = "Si"; $a->strings["No"] = "No"; $a->strings["Add a personal note:"] = "Aggiungi una nota personale:"; -- cgit v1.2.3 From e14d5851a76e73675800787dcbcc7582b4dbd5ed Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 13 Jun 2011 12:53:41 +0200 Subject: fix template's {{ for }} variable lookup --- include/template_processor.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/template_processor.php b/include/template_processor.php index d8dfbaedb..3dc249c40 100644 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -58,7 +58,8 @@ list($keyname, $varname) = explode("=>",$m[1]); if (is_null($varname)) { $varname=$keyname; $keyname=""; } if ($m[0]=="" || $varname=="" || is_null($varname)) die("template error: 'for ".$m[0]." as ".$varname."'") ; - $vals = $this->r[$m[0]]; + //$vals = $this->r[$m[0]]; + $vals = $this->_get_var($m[0]); $ret=""; if (!is_array($vals)) return $ret; foreach ($vals as $k=>$v){ -- cgit v1.2.3 From f80521923d35d15dfd2f0ea24359a08a02638845 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 13 Jun 2011 18:02:40 +0200 Subject: Add {{ if a==b }} and {{ if a!=b }} to templates --- include/template_processor.php | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/include/template_processor.php b/include/template_processor.php index 3dc249c40..a2c24b00b 100644 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -41,9 +41,24 @@ * IF node * * {{ if <$var> }}...{{ endif }} + * {{ if <$var>== }}...{{ endif }} + * {{ if <$var>!= }}...{{ endif }} */ private function _replcb_if($args){ - $val = $this->_get_var($args[2]); + + if (strpos($args[2],"==")>0){ + list($a,$b) = array_map("trim",explode("==",$args[2])); + $a = $this->_get_var($a); + if ($b[0]=="$") $b = $this->_get_var($b); + $val = ($a == $b); + } else if (strpos($args[2],"!=")>0){ + list($a,$b) = explode("!=",$args[2]); + $a = $this->_get_var($a); + if ($b[0]=="$") $b = $this->_get_var($b); + $val = ($a != $b); + } else { + $val = $this->_get_var($args[2]); + } return ($val?$args[3]:""); } -- cgit v1.2.3 From ab27f1393e72e8fa6c05db5948413beef9e0367f Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 13 Jun 2011 18:03:06 +0200 Subject: Admin site page --- mod/admin.php | 191 +++++++++++++++++++++++++++++++++++++- view/admin_aside.tpl | 2 +- view/admin_site.tpl | 45 +++++++++ view/admin_summary.tpl | 53 ++++++----- view/field.tpl | 4 + view/field_checkbox.tpl | 6 ++ view/field_input.tpl | 6 ++ view/field_select.tpl | 8 ++ view/field_textarea.tpl | 6 ++ view/theme/duepuntozero/style.css | 52 +++++++++++ 10 files changed, 344 insertions(+), 29 deletions(-) create mode 100644 view/admin_site.tpl create mode 100644 view/field.tpl create mode 100644 view/field_checkbox.tpl create mode 100644 view/field_input.tpl create mode 100644 view/field_select.tpl create mode 100644 view/field_textarea.tpl diff --git a/mod/admin.php b/mod/admin.php index 13131f013..70720f5d8 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -11,6 +11,24 @@ function admin_init(&$a) { } } +function admin_post(&$a){ + if(!is_site_admin()) { + return login(false); + } + + // urls + if ($a->argc > 1){ + switch ($a->argv[1]){ + case 'site': { + admin_page_site_post($a); + break; + } + } + } + + goaway($a->get_baseurl() . '/admin' ); + return; // NOTREACHED +} function admin_content(&$a) { @@ -41,7 +59,10 @@ function admin_content(&$a) { $aside['logs'] = Array($a->get_baseurl()."/admin/logs/", t("Logs"), "logs"); $t = get_markup_template("admin_aside.tpl"); - $a->page['aside'] = replace_macros( $t, array('$admin' => $aside) ); + $a->page['aside'] = replace_macros( $t, array( + '$admin' => $aside, + '$admurl'=> $a->get_baseurl()."/admin/" + )); @@ -81,8 +102,6 @@ function admin_page_summary(&$a) { $users=0; foreach ($r as $u){ $accounts[$u['page-flags']][1] = $u['count']; $users+=$u['count']; } - //echo "
"; var_dump($a->plugins); die("
"); - $r = q("SELECT COUNT(id) as `count` FROM `register`"); $pending = $r[0]['count']; @@ -103,3 +122,169 @@ function admin_page_summary(&$a) { '$plugins' => Array( t('Active plugins'), $a->plugins ) )); } + + +/** + * Admin Site Page + */ +function admin_page_site_post(&$a){ + if (!x($_POST,"page_site")){ + return; + } + + + $sitename = ((x($_POST,'sitename')) ? notags(trim($_POST['sitename'])) : ''); + $banner = ((x($_POST,'banner')) ? trim($_POST['banner']) : false); + $language = ((x($_POST,'language')) ? notags(trim($_POST['language'])) : ''); + $theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : ''); + $maximagesize = ((x($_POST,'maximagesize')) ? intval(trim($_POST['maximagesize'])) : 0); + $allowed_sites = ((x($_POST,'allowed_sites')) ? notags(trim($_POST['allowed_sites'])) : ''); + $allowed_email = ((x($_POST,'allowed_email')) ? notags(trim($_POST['allowed_email'])) : ''); + $block_public = ((x($_POST,'block_public')) ? True : False); + $force_publish = ((x($_POST,'publish_all')) ? True : False); + $global_directory = ((x($_POST,'directory_submit_url')) ? notags(trim($_POST['directory_submit_url'])) : ''); + $global_search_url = ((x($_POST,'directory_search_url'))? notags(trim($_POST['directory_search_url'])) : ''); + $no_multi_reg = ((x($_POST,'no_multi_reg')) ? True : False); + $no_openid = ((x($_POST,'no_openid')) ? True : False); + $no_gravatar = ((x($_POST,'no_gravatar')) ? True : False); + $no_regfullname = ((x($_POST,'no_regfullname')) ? True : False); + $no_utf = ((x($_POST,'no_utf')) ? True : False); + $rino_enc = ((x($_POST,'rino_enc')) ? True : False); + $verifyssl = ((x($_POST,'verifyssl')) ? True : False); + $proxyuser = ((x($_POST,'proxyuser')) ? notags(trim($_POST['global_search_url'])) : ''); + $proxy = ((x($_POST,'proxy')) ? notags(trim($_POST['global_search_url'])) : ''); + $timeout = ((x($_POST,'timeout')) ? intval(trim($_POST['maximagesize'])) : 60); + + + $a->config['sitename'] = $sitename; + if ($banner==""){ + // don't know why, but del_config doesn't work... + q("DELETE FROM `config` WHERE `cat` = '%s' AND `k` = '%s' LIMIT 1", + dbesc("system"), + dbesc("banner") + ); + } else { + set_config('system','banner', $banner); + } + set_config('system','language', $language); + set_config('system','theme', $theme); + set_config('system','maximagesize', $maximagesize); + set_config('system','allowed_sites', $allowed_sites); + set_config('system','allowed_email', $allowed_email); + set_config('system','block_public', $block_public); + set_config('system','publish_all', $force_publish); + if ($global_directory==""){ + // don't know why, but del_config doesn't work... + q("DELETE FROM `config` WHERE `cat` = '%s' AND `k` = '%s' LIMIT 1", + dbesc("system"), + dbesc("directory_submit_url") + ); + } else { + set_config('system','directory_submit_url', $global_directory); + } + set_config('system','directory_search_url', $global_search_url); + set_config('system','block_extended_register', $no_multi_reg); + set_config('system','no_openid', $no_openid); + set_config('system','no_gravatar', $no_gravatar); + set_config('system','no_regfullname', $no_regfullname); + set_config('system','proxy', $no_utf); + set_config('system','rino_encrypt', $rino_enc); + set_config('system','verifyssl', $verifyssl); + set_config('system','proxyuser', $proxyuser); + set_config('system','proxy', $proxy); + set_config('system','curl_timeout', $timeout); + + $r = q("SELECT * FROM `config` WHERE `cat`='config' AND `k`='sitename'"); + if (count($r)>0){ + q("UPDATE `config` SET `v`='%s' WHERE `cat`='config' AND `k`='sitename'", + dbesc($a->config['sitename']) + ); + } else { + q("INSERT INTO `config` ( `cat`, `k`, `v` ) VALUES ( 'config', 'sitename', '%s' )", + dbesc($a->config['sitename']) + ); + } + + + + goaway($a->get_baseurl() . '/admin/site' ); + return; // NOTREACHED + +} + +function admin_page_site(&$a) { + + /* Installed langs */ + $lang_choices = array(); + $langs = glob('view/*/strings.php'); + + if(is_array($langs) && count($langs)) { + if(! in_array('view/en/strings.php',$langs)) + $langs[] = 'view/en/'; + asort($langs); + foreach($langs as $l) { + $t = explode("/",$l); + $lang_choices[$t[1]] = $t[1]; + } + } + + /* Installed themes */ + $theme_choices = array(); + $files = glob('view/theme/*'); + if($files) { + foreach($files as $file) { + $f = basename($file); + $theme_name = ((file_exists($file . '/experimental')) ? sprintf("%s - \x28Experimental\x29", $f) : $f); + $theme_choices[$f] = $theme_name; + } + } + + + /* Banner */ + $banner = get_config('system','banner'); + if($banner == false) + $banner = htmlspecialchars('logoFriendika'); + + //echo "
"; var_dump($lang_choices); die("
"); + + + + $t = get_markup_template("admin_site.tpl"); + return replace_macros($t, array( + '$title' => t('Administration'), + '$page' => t('Site'), + '$submit' => t('Submit'), + '$baseurl' => $a->get_baseurl(), + + // name, label, value, help string, extra data... + '$sitename' => array('sitename', t("Site name"), $a->config['sitename'], ""), + '$banner' => array('banner', t("Banner/Logo"), $banner, ""), + '$language' => array('language', t("System language"), get_config('system','language'), "", $lang_choices), + '$theme' => array('theme', t("System theme"), get_config('system','theme'), "Default system theme (which may be over-ridden by user profiles)", $theme_choices), + + '$maximagesize' => array('maximagesize', t("Maximum image size"), get_config('system','maximagesize'), "Maximum size in bytes of uploaded images. Default is 0, which means no limits."), + + '$allowed_sites' => array('allowed_sites', t("Allowed friend domains"), get_config('system','allowed_sites'), "Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"), + '$allowed_email' => array('allowed_email', t("Allowed email domains"), get_config('system','allowed_email'), "Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"), + '$block_public' => array('block_public', t("Block public"), get_config('system','block_public'), "Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."), + '$force_publish' => array('publish_all', t("Force publish"), get_config('system','publish_all'), "Check to force all profiles on this site to be listed in the site directory."), + '$global_directory' => array('directory_submit_url', t("Global directory update URL"), get_config('system','directory_submit_url'), "URL to update the global directory. If this is not set, the global directory is completely unavailable to the application."), + '$global_search_url'=> array('directory_search_url', t("Global directory search URL"), get_config('system','directory_search_url'), ""), + + + '$no_multi_reg' => array('no_multi_reg', t("Block multiple registrations"), get_config('system','block_extended_register'), "Disallow users to register additional accounts for use as pages."), + '$no_openid' => array('no_openid', t("No OpenID support"), get_config('system','no_openid'), "Disable OpenID support for registration and logins."), + '$no_gravatar' => array('no_gravatar', t("No Gravatar support"), get_config('system','no_gravatar'), ""), + '$no_regfullname' => array('no_regfullname', t("No fullname check"), get_config('system','no_regfullname'), "If unchecked, force users to registrate with a space between his firsname and lastname in Full name, as an antispam measure"), + '$no_utf' => array('no_utf', t("No UTF-8 Regular expressions"), get_config('system','proxy'), "Default is false (meaning UTF8 regular expressions are supported and working)"), + + '$rino_enc' => array('rino_enc', t("Enable Rino encrypt"), get_config('system','rino_encrypt'),""), + '$verifyssl' => array('verifyssl', t("Verify SSL"), get_config('system','verifyssl'), "If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."), + '$proxyuser' => array('proxyuser', t("Proxy user"), get_config('system','proxyuser'), ""), + '$proxy' => array('proxy', t("Proxy URL"), get_config('system','proxy'), ""), + '$timeout' => array('timeout', t("Network timeout"), (x(get_config('system','curl_timeout'))?get_config('system','curl_timeout'):60), "Value is in seconds. Set to 0 for unlimited (not recommended)."), + + + )); + +} diff --git a/view/admin_aside.tpl b/view/admin_aside.tpl index 24aafa775..dd81a6fee 100644 --- a/view/admin_aside.tpl +++ b/view/admin_aside.tpl @@ -1,4 +1,4 @@ -

Admin

+

Admin

    diff --git a/view/admin_site.tpl b/view/admin_site.tpl new file mode 100644 index 000000000..f120461aa --- /dev/null +++ b/view/admin_site.tpl @@ -0,0 +1,45 @@ +
    +

    $title - $page

    + +
    + + {{ inc field_input.tpl with $field=$sitename }}{{ endinc }} + {{ inc field_textarea.tpl with $field=$banner }}{{ endinc }} + {{ inc field_select.tpl with $field=$language }}{{ endinc }} + {{ inc field_select.tpl with $field=$theme }}{{ endinc }} + +
    + +

    Upload

    + {{ inc field_input.tpl with $field=$maximagesize }}{{ endinc }} + +

    Corporate/Edu

    + {{ inc field_input.tpl with $field=$allowed_sites }}{{ endinc }} + {{ inc field_input.tpl with $field=$allowed_email }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$block_public }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$force_publish }}{{ endinc }} + {{ inc field_input.tpl with $field=$global_directory }}{{ endinc }} + {{ inc field_input.tpl with $field=$global_search_url }}{{ endinc }} + +
    + +

    Registration

    + {{ inc field_checkbox.tpl with $field=$no_multi_reg }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$no_openid }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$no_gravatar }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$no_regfullname }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$no_utf }}{{ endinc }} + +
    + +

    Advanced

    + {{ inc field_checkbox.tpl with $field=$rino_enc }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$verifyssl }}{{ endinc }} + {{ inc field_input.tpl with $field=$proxy }}{{ endinc }} + {{ inc field_input.tpl with $field=$proxyuser }}{{ endinc }} + {{ inc field_input.tpl with $field=$timeout }}{{ endinc }} + +
    + +
    +
    diff --git a/view/admin_summary.tpl b/view/admin_summary.tpl index cbd659d07..59428986a 100644 --- a/view/admin_summary.tpl +++ b/view/admin_summary.tpl @@ -1,33 +1,36 @@ -

    $title - $page

    +
    +

    $title - $page

    -
    -
    $users.0
    -
    $users.1
    -
    -{{ for $accounts as $p }}
    -
    $p.0
    -
    $p.1
    +
    $pending.0
    +
    $pending.1
    -{{ endfor }} -
    -
    $pending.0
    -
    $pending.1 -
    +
    +
    $users.0
    +
    $users.1
    +
    + {{ for $accounts as $p }} +
    +
    $p.0
    +
    $p.1
    +
    + {{ endfor }} -
    -
    $version.0
    -
    $version.1 - $build -
    +
    +
    $plugins.0
    + + {{ for $plugins.1 as $p }} +
    $p
    + {{ endfor }} + +
    +
    +
    $version.0
    +
    $version.1 - $build +
    -
    -
    $plugins.0
    - - {{ for $plugins.1 as $p }} -
    $p
    - {{ endfor }} - -
    + +
    diff --git a/view/field.tpl b/view/field.tpl new file mode 100644 index 000000000..35f5afd39 --- /dev/null +++ b/view/field.tpl @@ -0,0 +1,4 @@ + + {{ if $field.0==select }} + {{ inc field_select.tpl }}{{ endinc }} + {{ endif }} diff --git a/view/field_checkbox.tpl b/view/field_checkbox.tpl new file mode 100644 index 000000000..4a86da7ea --- /dev/null +++ b/view/field_checkbox.tpl @@ -0,0 +1,6 @@ + +
    + + + $field.3 +
    diff --git a/view/field_input.tpl b/view/field_input.tpl new file mode 100644 index 000000000..748d93f3e --- /dev/null +++ b/view/field_input.tpl @@ -0,0 +1,6 @@ + +
    + + + $field.3 +
    diff --git a/view/field_select.tpl b/view/field_select.tpl new file mode 100644 index 000000000..d79eb48e0 --- /dev/null +++ b/view/field_select.tpl @@ -0,0 +1,8 @@ + +
    + + + $field.3 +
    diff --git a/view/field_textarea.tpl b/view/field_textarea.tpl new file mode 100644 index 000000000..2425cdd3b --- /dev/null +++ b/view/field_textarea.tpl @@ -0,0 +1,6 @@ + +
    + + + $field.3 +
    diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index 892814804..294a86690 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -2468,6 +2468,58 @@ a.mail-list-link { filter:alpha(opacity=100); } +/** + * ADMIN + */ + +#adminpage dl { + clear: left; + margin-bottom: 2px; + padding-bottom: 2px; + border-bottom: 1px solid black; +} +#adminpage dt { + width: 200px; + float: left; + font-weight: bold; +} +#adminpage dd { + margin-left: 200px; +} + +#adminpage .field { + clear: left; + margin-bottom: 5px; + padding-bottom: 5px; +} + +#adminpage .field label { + float: left; + width: 200px; + font-weight: bold; +} + +#adminpage .field input, +#adminpage .field textarea { + width: 400px; +} +#adminpage .field textarea { height: 100px; } +#adminpage .field_help { + display: block; + margin-left: 200px; + color: #666666; + +} + +#adminpage h3 { + border-bottom: 1px solid #cccccc; +} + +#adminpage .submit { + clear:left; + text-align: right; +} + /** * ICONS -- cgit v1.2.3 From 4ba23df20a46bec640177df0555b5d98486c8540 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Mon, 13 Jun 2011 18:29:14 +0200 Subject: fix a typo in site settings page --- mod/admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/admin.php b/mod/admin.php index 70720f5d8..73da3814b 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -153,7 +153,7 @@ function admin_page_site_post(&$a){ $verifyssl = ((x($_POST,'verifyssl')) ? True : False); $proxyuser = ((x($_POST,'proxyuser')) ? notags(trim($_POST['global_search_url'])) : ''); $proxy = ((x($_POST,'proxy')) ? notags(trim($_POST['global_search_url'])) : ''); - $timeout = ((x($_POST,'timeout')) ? intval(trim($_POST['maximagesize'])) : 60); + $timeout = ((x($_POST,'timeout')) ? intval(trim($_POST['timeout'])) : 60); $a->config['sitename'] = $sitename; -- cgit v1.2.3 From 5882d8d022c14a12ba7b314c96289061bd195ed4 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Tue, 14 Jun 2011 10:35:56 +0200 Subject: Initial plugins admin page --- mod/admin.php | 51 +++++++++++++++++++++++++++++++++++++-- view/admin_plugins.tpl | 14 +++++++++++ view/theme/duepuntozero/style.css | 18 +++++++++++++- 3 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 view/admin_plugins.tpl diff --git a/mod/admin.php b/mod/admin.php index 73da3814b..f9d248210 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -74,10 +74,15 @@ function admin_content(&$a) { // urls if ($a->argc > 1){ switch ($a->argv[1]){ - case 'site': { + case 'site': $o = admin_page_site($a); break; - } + case 'users': + $o = admin_page_users($a); + break; + case 'plugins': + $o = admin_page_plugins($a); + break; default: notice( t("Item not found.") ); } @@ -288,3 +293,45 @@ function admin_page_site(&$a) { )); } + + +/** + * Users admin page + */ + +function admin_page_users(&$a){ + return ":)"; +} + + +/* + * Plugins admin page + */ + +function admin_page_plugins(&$a){ + + /* all plugins */ + $plugins = array(); + $files = glob("addon/*/"); + if($files) { + foreach($files as $file) { + if (is_dir($file)){ + list($tmp, $id)=array_map("trim", explode("/",$file)); + // TODO: plugins info + $name=$author=$description=$homepage=""; + $plugins[] = array( $id, (in_array($id, $a->plugins)?"on":"off") , $name, $author, $description, $homepage); + } + } + } + + $t = get_markup_template("admin_plugins.tpl"); + return replace_macros($t, array( + '$title' => t('Administration'), + '$page' => t('Plugins'), + '$submit' => t('Submit'), + '$baseurl' => $a->get_baseurl(), + + '$plugins' => $plugins + )); +} + diff --git a/view/admin_plugins.tpl b/view/admin_plugins.tpl new file mode 100644 index 000000000..d29665a06 --- /dev/null +++ b/view/admin_plugins.tpl @@ -0,0 +1,14 @@ +
    +

    $title - $page

    + +
      + {{ for $plugins as $p }} +
    • + + + $p.0 + +
    • + {{ endfor }} +
    +
    diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index 294a86690..8799726c7 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -2520,6 +2520,21 @@ a.mail-list-link { text-align: right; } +#adminpage #pluginslist { + margin: 0px; padding: 0px; +} +#adminpage .plugin { + list-style: none; + display: block; + border: 1px solid #888888; + padding: 1em; + margin-bottom: 5px; + clear: left; +} +#adminpage .plugin .toggle { + float:left; + margin-right: 1em; +} /** * ICONS @@ -2557,7 +2572,8 @@ a.mail-list-link { .youtube { background-position: -64px -32px;} .attach { background-position: -80px -32px; } .language { background-position: -96px -32px; } - +.on { background-position: -112px -32px; } +.off { background-position: -128px -32px; } .attachtype { display: block; width: 20px; height: 23px; -- cgit v1.2.3 From 5dc8fbccb29169601ad5fed2b5289631e32e5ac5 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Tue, 14 Jun 2011 11:16:27 +0200 Subject: enable/disable plugins from admin page --- boot.php | 54 +++++++++++++++++++++++++++++++++--------------------- images/icons.png | Bin 10126 -> 10702 bytes mod/admin.php | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 85 insertions(+), 22 deletions(-) diff --git a/boot.php b/boot.php index 8edc74910..42b0ca41e 100644 --- a/boot.php +++ b/boot.php @@ -453,6 +453,37 @@ function system_unavailable() { killme(); }} + +// install and uninstall plugin +if (! function_exists('uninstall_plugin')){ +function uninstall_plugin($plugin){ + logger("Addons: uninstalling " . $plugin); + q("DELETE FROM `addon` WHERE `name` = '%s' LIMIT 1", + dbesc($plugin) + ); + + @include_once('addon/' . $plugin . '/' . $plugin . '.php'); + if(function_exists($plugin . '_uninstall')) { + $func = $plugin . '_uninstall'; + $func(); + } +}} + +if (! function_exists('install_plugin')){ +function install_plugin($plugin){ + logger("Addons: installing " . $plugin); + $t = filemtime('addon/' . $plugin . '/' . $plugin . '.php'); + @include_once('addon/' . $plugin . '/' . $plugin . '.php'); + if(function_exists($plugin . '_install')) { + $func = $plugin . '_install'; + $func(); + $r = q("INSERT INTO `addon` (`name`, `installed`, `timestamp`) VALUES ( '%s', 1, %d ) ", + dbesc($plugin), + intval($t) + ); + } +}} + // Primarily involved with database upgrade, but also sets the // base url for use in cmdline programs which don't have // $_SERVER variables, and synchronising the state of installed plugins. @@ -538,16 +569,7 @@ function check_config(&$a) { if(count($installed)) { foreach($installed as $i) { if(! in_array($i['name'],$plugins_arr)) { - logger("Addons: uninstalling " . $i['name']); - q("DELETE FROM `addon` WHERE `id` = %d LIMIT 1", - intval($i['id']) - ); - - @include_once('addon/' . $i['name'] . '/' . $i['name'] . '.php'); - if(function_exists($i['name'] . '_uninstall')) { - $func = $i['name'] . '_uninstall'; - $func(); - } + uninstall_plugin($i['name']); } else $installed_arr[] = $i['name']; @@ -557,17 +579,7 @@ function check_config(&$a) { if(count($plugins_arr)) { foreach($plugins_arr as $p) { if(! in_array($p,$installed_arr)) { - logger("Addons: installing " . $p); - $t = filemtime('addon/' . $p . '/' . $p . '.php'); - @include_once('addon/' . $p . '/' . $p . '.php'); - if(function_exists($p . '_install')) { - $func = $p . '_install'; - $func(); - $r = q("INSERT INTO `addon` (`name`, `installed`, `timestamp`) VALUES ( '%s', 1, %d ) ", - dbesc($p), - intval($t) - ); - } + install_plugin($p); } } } diff --git a/images/icons.png b/images/icons.png index 4c4c00b8a..fee7781c8 100644 Binary files a/images/icons.png and b/images/icons.png differ diff --git a/mod/admin.php b/mod/admin.php index f9d248210..054b49a21 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -310,7 +310,58 @@ function admin_page_users(&$a){ function admin_page_plugins(&$a){ - /* all plugins */ + /** + * Single plugin + */ + if ($a->argc == 3){ + $plugin = $a->argv[2]; + if (!is_file("addon/$plugin/$plugin.php")){ + notice( t("Item not found.") ); + return; + } + + if (x($_GET,"a") && $_GET['a']=="t"){ + // Toggle plugin status + $idx = array_search($plugin, $a->plugins); + if ($idx){ + unset($a->plugins[$idx]); + uninstall_plugin($plugin); + } else { + $a->plugins[] = $plugin; + install_plugin($plugin); + } + set_config("system","addon", implode(", ",$a->plugins)); + goaway($a->get_baseurl() . '/admin/plugins' ); + return; // NOTREACHED + } + // display plugin details + + + if (in_array($plugin, $a->plugins)){ + $status="on"; $action= t("Disable"); + } else { + $status="off"; $action= t("Enable"); + } + + $t = get_markup_template("admin_plugins_details.tpl"); + return replace_macros($t, array( + '$title' => t('Administration'), + '$page' => t('Plugins'), + '$toggle' => t('Toggle'), + '$baseurl' => $a->get_baseurl(), + + '$plugin' => $plugin, + '$status' => $status, + '$action' => $action + )); + } + + + + /** + * List plugins + */ + $plugins = array(); $files = glob("addon/*/"); if($files) { -- cgit v1.2.3 From 25d1637ec4b980d6ac8daf2f028f0ff579d5c977 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Tue, 14 Jun 2011 11:54:14 +0200 Subject: simple plugin details and log view in admin --- mod/admin.php | 58 ++++++++++++++++++++++++++++++++++++++++-- view/admin_logs.tpl | 17 +++++++++++++ view/admin_plugins_details.tpl | 7 +++++ 3 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 view/admin_logs.tpl create mode 100644 view/admin_plugins_details.tpl diff --git a/mod/admin.php b/mod/admin.php index 054b49a21..e40c50396 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -19,10 +19,12 @@ function admin_post(&$a){ // urls if ($a->argc > 1){ switch ($a->argv[1]){ - case 'site': { + case 'site': admin_page_site_post($a); break; - } + case 'logs': + admin_page_logs_post($a); + break; } } @@ -83,6 +85,9 @@ function admin_content(&$a) { case 'plugins': $o = admin_page_plugins($a); break; + case 'logs': + $o = admin_page_logs($a); + break; default: notice( t("Item not found.") ); } @@ -386,3 +391,52 @@ function admin_page_plugins(&$a){ )); } + +/** + * Logs admin page + */ + +function admin_page_logs_post(&$a) { + if (x($_POST,"page_logs")) { + + $logfile = ((x($_POST,'logfile')) ? notags(trim($_POST['logfile'])) : ''); + $debugging = ((x($_POST,'debugging')) ? true : false); + $loglevel = ((x($_POST,'loglevel')) ? intval(trim($_POST['loglevel'])) : 0); + + set_config('system','logfile', $logfile); + set_config('system','debugging', $debugging); + set_config('system','loglevel', $loglevel); + + + } + + goaway($a->get_baseurl() . '/admin/logs' ); + return; // NOTREACHED +} + +function admin_page_logs(&$a){ + + $log_choices = Array( + LOGGER_NORMAL => 'Normal', + LOGGER_TRACE => 'Trace', + LOGGER_DEBUG => 'Debug', + LOGGER_DATA => 'Data', + LOGGER_ALL => 'All' + ); + + $t = get_markup_template("admin_logs.tpl"); + return replace_macros($t, array( + '$title' => t('Administration'), + '$page' => t('Logs'), + '$submit' => t('Submit'), + '$clear' => t('Clear'), + '$baseurl' => $a->get_baseurl(), + '$logname' => get_config('system','logfile'), + + // name, label, value, help string, extra data... + '$debugging' => array('debugging', t("Debugging"),get_config('system','debugging'), ""), + '$logfile' => array('logfile', t("Log file"), get_config('system','logfile'), "Must be writable by web server. Relative to your Friendika index.php."), + '$loglevel' => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices), + )); +} + diff --git a/view/admin_logs.tpl b/view/admin_logs.tpl new file mode 100644 index 000000000..f2939a7ac --- /dev/null +++ b/view/admin_logs.tpl @@ -0,0 +1,17 @@ +
    +

    $title - $page

    + +
    + + {{ inc field_checkbox.tpl with $field=$debugging }}{{ endinc }} + {{ inc field_input.tpl with $field=$logfile }}{{ endinc }} + {{ inc field_select.tpl with $field=$loglevel }}{{ endinc }} + +
    + +
    + +

    $logname

    + + +
    diff --git a/view/admin_plugins_details.tpl b/view/admin_plugins_details.tpl new file mode 100644 index 000000000..7e2e95521 --- /dev/null +++ b/view/admin_plugins_details.tpl @@ -0,0 +1,7 @@ +
    +

    $title - $page

    + +

    $plugin

    + +

    $action

    +
    -- cgit v1.2.3 From 283160901fcb5670b48c7897ccce615872cb956e Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Tue, 14 Jun 2011 14:21:00 +0200 Subject: update styles --- view/theme/duepuntozero/style.css | 3 +- view/theme/loozah/style.css | 70 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index 563234238..c2fb9700c 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -2545,7 +2545,8 @@ a.mail-list-link { margin-bottom: 5px; clear: left; } -#adminpage .plugin .toggle { +#adminpage .plugin .desc { margin-left: 2.5em;} +#adminpage .toggleplugin { float:left; margin-right: 1em; } diff --git a/view/theme/loozah/style.css b/view/theme/loozah/style.css index a566acadc..db53cb678 100644 --- a/view/theme/loozah/style.css +++ b/view/theme/loozah/style.css @@ -2497,6 +2497,73 @@ a.mail-list-link { top: 0px; } +/** + * ADMIN + */ + +#adminpage dl { + clear: left; + margin-bottom: 2px; + padding-bottom: 2px; + border-bottom: 1px solid black; +} +#adminpage dt { + width: 200px; + float: left; + font-weight: bold; +} +#adminpage dd { + margin-left: 200px; +} + +#adminpage .field { + clear: left; + margin-bottom: 5px; + padding-bottom: 5px; +} + +#adminpage .field label { + float: left; + width: 200px; + font-weight: bold; +} + +#adminpage .field input, +#adminpage .field textarea { + width: 400px; +} +#adminpage .field textarea { height: 100px; } +#adminpage .field_help { + display: block; + margin-left: 200px; + color: #666666; + +} + +#adminpage h3 { + border-bottom: 1px solid #cccccc; +} + +#adminpage .submit { + clear:left; +} + +#adminpage #pluginslist { + margin: 0px; padding: 0px; +} +#adminpage .plugin { + list-style: none; + display: block; + border: 1px solid #888888; + padding: 1em; + margin-bottom: 5px; + clear: left; +} +#adminpage .plugin .toggle { + float:left; + margin-right: 1em; +} + /** * ICONS */ @@ -2535,6 +2602,9 @@ a.mail-list-link { .language { background-position: -96px -32px; } .prev { background-position: -112px -32px; } .next { background-position: -128px -32px; } +.on { background-position: -144px -32px; } + +.off { background-position: 0px -48px; } .attachtype { display: block; width: 20px; height: 23px; -- cgit v1.2.3 From 00e142e4f753005a8b4003585c6a88548f006315 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Tue, 14 Jun 2011 14:21:43 +0200 Subject: Load plugin info from plugin file. Show README.md or README from plugin dir in plugin details page --- addon/oembed/oembed.php | 9 ++++---- boot.php | 52 ++++++++++++++++++++++++++++++++++++++++++ mod/admin.php | 20 ++++++++++++---- view/admin_plugins.tpl | 7 +++--- view/admin_plugins_details.tpl | 16 +++++++++++-- 5 files changed, 88 insertions(+), 16 deletions(-) diff --git a/addon/oembed/oembed.php b/addon/oembed/oembed.php index a0a0239aa..f5be44194 100644 --- a/addon/oembed/oembed.php +++ b/addon/oembed/oembed.php @@ -1,10 +1,9 @@ */ require_once('include/oembed.php'); diff --git a/boot.php b/boot.php index 42b0ca41e..5d45de36f 100644 --- a/boot.php +++ b/boot.php @@ -2828,3 +2828,55 @@ function is_site_admin() { return false; }} +/* + * parse plugin comment in search of plugin infos. + * like + * + * * Name: Plugin + * * Description: A plugin which plugs in + * * Version: 1.2.3 + * * Author: John + * * Author: Jane + * * + */ + +if (! function_exists('get_plugin_info')){ +function get_plugin_info($plugin){ + if (!is_file("addon/$plugin/$plugin.php")) return false; + + $f = file_get_contents("addon/$plugin/$plugin.php"); + $r = preg_match("|/\*.*\*/|msU", $f, $m); + + $info=Array( + 'name' => $plugin, + 'description' => "", + 'author' => array(), + 'version' => "" + ); + + if ($r){ + $ll = explode("\n", $m[0]); + foreach( $ll as $l ) { + $l = trim($l,"\t\n\r */"); + if ($l!=""){ + list($k,$v) = array_map("trim", explode(":",$l,2)); + $k= strtolower($k); + if ($k=="author"){ + $r=preg_match("|([^<]+)<([^>]+)>|", $v, $m); + if ($r) { + $info['author'][] = array('name'=>$m[1], 'link'=>$m[2]); + } else { + $info['author'][] = array('name'=>$v); + } + } else { + if (array_key_exists($k,$info)){ + $info[$k]=$v; + } + } + + } + } + + } + return $info; +}} diff --git a/mod/admin.php b/mod/admin.php index e40c50396..6386e6ebc 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -340,7 +340,7 @@ function admin_page_plugins(&$a){ return; // NOTREACHED } // display plugin details - + require_once('library/markdown.php'); if (in_array($plugin, $a->plugins)){ $status="on"; $action= t("Disable"); @@ -348,6 +348,14 @@ function admin_page_plugins(&$a){ $status="off"; $action= t("Enable"); } + $readme=Null; + if (is_file("addon/$plugin/README.md")){ + $readme = file_get_contents("addon/$plugin/README.md"); + $readme = Markdown($readme); + } else if (is_file("addon/$plugin/README")){ + $readme = "
    ". file_get_contents("addon/$plugin/README") ."
    "; + } + $t = get_markup_template("admin_plugins_details.tpl"); return replace_macros($t, array( '$title' => t('Administration'), @@ -357,7 +365,10 @@ function admin_page_plugins(&$a){ '$plugin' => $plugin, '$status' => $status, - '$action' => $action + '$action' => $action, + '$info' => get_plugin_info($plugin), + + '$readme' => $readme )); } @@ -373,9 +384,8 @@ function admin_page_plugins(&$a){ foreach($files as $file) { if (is_dir($file)){ list($tmp, $id)=array_map("trim", explode("/",$file)); - // TODO: plugins info - $name=$author=$description=$homepage=""; - $plugins[] = array( $id, (in_array($id, $a->plugins)?"on":"off") , $name, $author, $description, $homepage); + $info = get_plugin_info($id); + $plugins[] = array( $id, (in_array($id, $a->plugins)?"on":"off") , $info); } } } diff --git a/view/admin_plugins.tpl b/view/admin_plugins.tpl index d29665a06..ee0fa67e6 100644 --- a/view/admin_plugins.tpl +++ b/view/admin_plugins.tpl @@ -4,10 +4,9 @@
      {{ for $plugins as $p }}
    • - - - $p.0 - + + $p.2.name - $p.2.version +
      $p.2.description
    • {{ endfor }}
    diff --git a/view/admin_plugins_details.tpl b/view/admin_plugins_details.tpl index 7e2e95521..acb3d2862 100644 --- a/view/admin_plugins_details.tpl +++ b/view/admin_plugins_details.tpl @@ -1,7 +1,19 @@

    $title - $page

    -

    $plugin

    +

    $info.name - $info.version : $action

    +

    $info.description

    +

    + {{ for $info.author as $a }} + $a.name + {{ endfor }} +

    -

    $action

    + + {{ if $readme }} +

    Readme

    +
    + $readme +
    + {{ endif }}
    -- cgit v1.2.3 From b7dc9f8867e783a0db109cce4cb0db90500129eb Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Tue, 14 Jun 2011 15:08:03 +0200 Subject: Update info comments in all plugins --- addon/calc/calc.php | 7 +++++++ addon/convert/convert.php | 7 ++++++- addon/facebook/README | 33 +++++++++++++++++++++++++++++++++ addon/facebook/facebook.php | 5 +++++ addon/fortunate/fortunate.php | 9 ++++++--- addon/java_upload/java_upload.php | 9 ++++++++- addon/js_upload/js_upload.php | 7 +++++++ addon/ldapauth/README | 17 +++++++++++++++++ addon/ldapauth/ldapauth.php | 8 +++++++- addon/piwik/piwik.php | 7 +++++++ addon/poormancron/poormancron.php | 8 ++++---- addon/randplace/randplace.php | 17 ++++++++--------- addon/sniper/sniper.php | 8 +++++++- addon/statusnet/statusnet.php | 7 ++++++- addon/tictac/tictac.php | 6 ++++++ addon/twitter/twitter.php | 6 ++++++ addon/widgets/widgets.php | 13 +++++++------ view/admin_plugins_details.tpl | 6 +++--- view/theme/duepuntozero/style.css | 1 + 19 files changed, 151 insertions(+), 30 deletions(-) create mode 100644 addon/facebook/README create mode 100644 addon/ldapauth/README diff --git a/addon/calc/calc.php b/addon/calc/calc.php index a095e3960..8c079dc7a 100644 --- a/addon/calc/calc.php +++ b/addon/calc/calc.php @@ -1,4 +1,11 @@ + */ + function calc_install() { register_hook('app_menu', 'addon/calc/calc.php', 'calc_app_menu'); diff --git a/addon/convert/convert.php b/addon/convert/convert.php index a3448ce01..7a4c90a53 100644 --- a/addon/convert/convert.php +++ b/addon/convert/convert.php @@ -1,5 +1,10 @@ + */ function convert_install() { register_hook('app_menu', 'addon/convert/convert.php', 'convert_app_menu'); diff --git a/addon/facebook/README b/addon/facebook/README new file mode 100644 index 000000000..42ec01383 --- /dev/null +++ b/addon/facebook/README @@ -0,0 +1,33 @@ +Installing the Friendika/Facebook connector + +1. register an API key for your site from developer.facebook.com + a. We'd be very happy if you include "Friendika" in the application name + to increase name recognition. The Friendika icons are also present + in the images directory and may be uploaded as a Facebook app icon. + Use images/friendika-16.jpg for the Icon and images/friendika-128.jpg for the Logo. + b. The url should be your site URL with a trailing slash. + You may use http://portal.friendika.com/privacy as the privacy policy + URL unless your site has different requirements, and + http://portal.friendika.com as the Terms of Service URL unless + you have different requirements. (Friendika is a software application + and does not require Terms of Service, though your installation of it might). + c. Set the following values in your .htconfig.php file + $a->config['facebook']['appid'] = 'xxxxxxxxxxx'; + $a->config['facebook']['appsecret'] = 'xxxxxxxxxxxxxxx'; + Replace with the settings Facebook gives you. +2. Enable the facebook plugin by including it in .htconfig.php - e.g. + $a->config['system']['addon'] = 'plugin1,plugin2,facebook'; +3. Visit the Facebook Settings section of the "Settings->Plugin Settings" page. + and click 'Install Facebook Connector'. +4. This will ask you to login to Facebook and grant permission to the + plugin to do its stuff. Allow it to do so. +5. You're done. To turn it off visit the Plugin Settings page again and + 'Remove Facebook posting'. + +Vidoes and embeds will not be posted if there is no other content. Links +and images will be converted to a format suitable for the Facebook API and +long posts truncated - with a link to view the full post. + +Facebook contacts will not be able to view private photos, as they are not able to +authenticate to your site to establish identity. We will address this +in a future release. diff --git a/addon/facebook/facebook.php b/addon/facebook/facebook.php index 545779cd5..5d86c66c2 100644 --- a/addon/facebook/facebook.php +++ b/addon/facebook/facebook.php @@ -1,4 +1,9 @@ + */ /** * Installing the Friendika/Facebook connector diff --git a/addon/fortunate/fortunate.php b/addon/fortunate/fortunate.php index b91080f51..5a6302e58 100644 --- a/addon/fortunate/fortunate.php +++ b/addon/fortunate/fortunate.php @@ -1,7 +1,10 @@ + */ function fortunate_install() { diff --git a/addon/java_upload/java_upload.php b/addon/java_upload/java_upload.php index 8b8a57604..09e321f0a 100644 --- a/addon/java_upload/java_upload.php +++ b/addon/java_upload/java_upload.php @@ -1,5 +1,12 @@ + */ + /** * * Java photo uploader, uses Jumploader @@ -93,4 +100,4 @@ function java_upload_photo_post_end(&$a,&$b) { if(x($a->data,'java_upload') && $a->data['java_upload']) killme(); -} \ No newline at end of file +} diff --git a/addon/js_upload/js_upload.php b/addon/js_upload/js_upload.php index 9f3fa9600..042e9a988 100644 --- a/addon/js_upload/js_upload.php +++ b/addon/js_upload/js_upload.php @@ -1,5 +1,12 @@ + */ + /** * * JavaScript Photo/Image Uploader diff --git a/addon/ldapauth/README b/addon/ldapauth/README new file mode 100644 index 000000000..cf28ef1e0 --- /dev/null +++ b/addon/ldapauth/README @@ -0,0 +1,17 @@ +Authenticate a user against an LDAP directory +Useful for Windows Active Directory and other LDAP-based organisations +to maintain a single password across the organisation. + +Optionally authenticates only if a member of a given group in the directory. + +The person must have registered with Friendika using the normal registration +procedures in order to have a Friendika user record, contact, and profile. + +Note when using with Windows Active Directory: you may need to set TLS_CACERT in your site +ldap.conf file to the signing cert for your LDAP server. + +The required configuration options for this module may be set in the .htconfig.php file +e.g.: + +$a->config['ldapauth']['ldap_server'] = 'host.example.com'; +...etc. diff --git a/addon/ldapauth/ldapauth.php b/addon/ldapauth/ldapauth.php index 2ec30caad..7230302e9 100644 --- a/addon/ldapauth/ldapauth.php +++ b/addon/ldapauth/ldapauth.php @@ -1,5 +1,11 @@ + */ + /** * Friendika addon * diff --git a/addon/piwik/piwik.php b/addon/piwik/piwik.php index 52bdaeb0d..032f84f4b 100644 --- a/addon/piwik/piwik.php +++ b/addon/piwik/piwik.php @@ -1,4 +1,11 @@ + */ + /* Piwik Analytics Plugin for Friendika * diff --git a/addon/poormancron/poormancron.php b/addon/poormancron/poormancron.php index 830c10ddf..9a8dc1e33 100644 --- a/addon/poormancron/poormancron.php +++ b/addon/poormancron/poormancron.php @@ -1,9 +1,9 @@ */ function poormancron_install() { diff --git a/addon/randplace/randplace.php b/addon/randplace/randplace.php index fa38de377..bae8e7c69 100644 --- a/addon/randplace/randplace.php +++ b/addon/randplace/randplace.php @@ -1,13 +1,12 @@ + * + * + * * * Addons are registered with the system in the * .htconfig.php file. @@ -178,4 +177,4 @@ function randplace_settings(&$a,&$s) { $s .= '
    '; -} \ No newline at end of file +} diff --git a/addon/sniper/sniper.php b/addon/sniper/sniper.php index 79d7daad2..bb4eace30 100644 --- a/addon/sniper/sniper.php +++ b/addon/sniper/sniper.php @@ -1,4 +1,10 @@ + */ function sniper_install() { register_hook('app_menu', 'addon/sniper/sniper.php', 'sniper_app_menu'); @@ -28,4 +34,4 @@ $o .= <<< EOT EOT; return $o; -} \ No newline at end of file +} diff --git a/addon/statusnet/statusnet.php b/addon/statusnet/statusnet.php index 39df7d962..e24ebc1ee 100644 --- a/addon/statusnet/statusnet.php +++ b/addon/statusnet/statusnet.php @@ -1,5 +1,10 @@ + */ + /* StatusNet Plugin for Friendika * * Author: Tobias Diekershoff diff --git a/addon/tictac/tictac.php b/addon/tictac/tictac.php index a69cda132..d6cec08a0 100644 --- a/addon/tictac/tictac.php +++ b/addon/tictac/tictac.php @@ -1,4 +1,10 @@ + */ function tictac_install() { diff --git a/addon/twitter/twitter.php b/addon/twitter/twitter.php index c59d1b9e5..fef6583f6 100644 --- a/addon/twitter/twitter.php +++ b/addon/twitter/twitter.php @@ -1,4 +1,10 @@ + */ + /* Twitter Plugin for Friendika * diff --git a/addon/widgets/widgets.php b/addon/widgets/widgets.php index af17d9e9a..f5f868222 100644 --- a/addon/widgets/widgets.php +++ b/addon/widgets/widgets.php @@ -1,10 +1,11 @@ + */ + function widgets_install() { register_hook('plugin_settings', 'addon/widgets/widgets.php', 'widgets_settings'); diff --git a/view/admin_plugins_details.tpl b/view/admin_plugins_details.tpl index acb3d2862..85ee8dfb4 100644 --- a/view/admin_plugins_details.tpl +++ b/view/admin_plugins_details.tpl @@ -3,11 +3,11 @@

    $info.name - $info.version : $action

    $info.description

    -

    + {{ for $info.author as $a }} - $a.name +

    {{ if $a.link }}{{ endif }}$a.name

    {{ endfor }} -

    + {{ if $readme }} diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index c2fb9700c..78e02681a 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -2550,6 +2550,7 @@ a.mail-list-link { float:left; margin-right: 1em; } +#adminpage .author .icon { float: left;} /** * ICONS -- cgit v1.2.3 From 63390aa8001a9d8f28f66c8e8686f406b28d6cbc Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Thu, 16 Jun 2011 12:02:05 +0200 Subject: {{ if }} {{ else }} support in templates --- include/template_processor.php | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/include/template_processor.php b/include/template_processor.php index a2c24b00b..be40a31ab 100644 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -8,6 +8,18 @@ var $nodes = array(); var $done = false; + private function _preg_error(){ + switch(preg_last_error()){ + case PREG_INTERNAL_ERROR: die('PREG_INTERNAL_ERROR'); break; + case PREG_BACKTRACK_LIMIT_ERROR: die('PREG_BACKTRACK_LIMIT_ERROR'); break; + case PREG_RECURSION_LIMIT_ERROR: die('PREG_RECURSION_LIMIT_ERROR'); break; + case PREG_BAD_UTF8_ERROR: die('PREG_BAD_UTF8_ERROR'); break; + case PREG_BAD_UTF8_OFFSET_ERROR: die('PREG_BAD_UTF8_OFFSET_ERROR'); break; + default: + die("Unknown preg error."); + } + } + private function _build_replace($r, $prefix){ if(is_array($r) && count($r)) { @@ -40,9 +52,9 @@ /** * IF node * - * {{ if <$var> }}...{{ endif }} - * {{ if <$var>== }}...{{ endif }} - * {{ if <$var>!= }}...{{ endif }} + * {{ if <$var> }}...[{{ else }} ...] {{ endif }} + * {{ if <$var>== }}...[{{ else }} ...]{{ endif }} + * {{ if <$var>!= }}...[{{ else }} ...]{{ endif }} */ private function _replcb_if($args){ @@ -59,7 +71,13 @@ } else { $val = $this->_get_var($args[2]); } - return ($val?$args[3]:""); + if (isset($args[4])) { + list($strue, $sfalse)= explode($args[4], $args[3]); + } else { + $strue = $args[3]; $sfalse = ""; + } + + return ($val?$strue:$sfalse); } /** @@ -112,13 +130,17 @@ private function _replcb_node($m) { $node = $this->nodes[$m[1]]; if (method_exists($this, "_replcb_".$node[1])){ - return call_user_func(array($this, "_replcb_".$node[1]), $node); + $s = call_user_func(array($this, "_replcb_".$node[1]), $node); } else { - return ""; + $s = ""; } + $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s); + if ($s==Null) $this->_preg_error() + return $s; } private function _replcb($m){ + //var_dump(array_map('htmlspecialchars', $m)); $this->done = false; $this->nodes[] = (array) $m; return "||". (count($this->nodes)-1) ."||"; @@ -128,8 +150,10 @@ $this->done = false; while (!$this->done){ $this->done=true; - $s = preg_replace_callback('|{{ *([a-z]*) *([^}]*)}}([^{]*){{ *end\1 *}}|', array($this, "_replcb"), $s); + $s = preg_replace_callback('|{{ *([a-z]*) *([^}]*)}}([^{]*({{ *else *}}[^{]*)?){{ *end\1 *}}|', array($this, "_replcb"), $s); + if ($s==Null) $this->_preg_error(); } + //({{ *else *}}[^{]*)? krsort($this->nodes); return $s; } @@ -144,6 +168,7 @@ #$s = str_replace(array("\n","\r"),array("§n§","§r§"),$s); $s = $this->_build_nodes($s); $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s); + if ($s==Null) $this->_preg_error() $s = str_replace($this->search,$this->replace, $s); return $s; -- cgit v1.2.3 From ffee5dd69e424f33c0ceb9cf8b0cfe78e4025794 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Thu, 16 Jun 2011 12:04:27 +0200 Subject: ping updates trigger 'nav-update' custom event from