From a4104d7c17242c5f583891df7ed1f10f3ca94de2 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Tue, 17 Nov 2015 11:34:47 +0100 Subject: [PATCH 01/25] 1st stuff for federation stats in the admin panel --- mod/admin.php | 53 +++++++++++++++++++++++-- view/global.css | 6 +++ view/templates/admin_aside.tpl | 10 ++--- view/templates/admin_federation.tpl | 60 +++++++++++++++++++++++++++++ 4 files changed, 120 insertions(+), 9 deletions(-) create mode 100644 view/templates/admin_federation.tpl diff --git a/mod/admin.php b/mod/admin.php index 0636a3420..886d7a4d9 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -121,15 +121,17 @@ function admin_content(&$a) { /** * Side bar links */ - + $aside = Array(); // array( url, name, extra css classes ) - $aside = Array( + // not part of $aside to make the template more adjustable + $asidesubpages = Array( 'site' => Array($a->get_baseurl(true)."/admin/site/", t("Site") , "site"), 'users' => Array($a->get_baseurl(true)."/admin/users/", t("Users") , "users"), 'plugins'=> Array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"), 'themes' => Array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"), 'dbsync' => Array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync"), 'queue' => Array($a->get_baseurl(true)."/admin/queue/", t('Inspect Queue'), "queue"), + 'federation' => Array($a->get_baseurl(true)."/admin/federation/", t('Federation Statistics'), "federation"), //'update' => Array($a->get_baseurl(true)."/admin/update/", t("Software Update") , "update") ); @@ -150,7 +152,8 @@ function admin_content(&$a) { $t = get_markup_template("admin_aside.tpl"); $a->page['aside'] .= replace_macros( $t, array( - '$admin' => $aside, + '$admin' => $aside, + '$subpages' => $asidesubpages, '$admtxt' => t('Admin'), '$plugadmtxt' => t('Plugin Features'), '$logtxt' => t('Logs'), @@ -192,6 +195,9 @@ function admin_content(&$a) { case 'queue': $o = admin_page_queue($a); break; + case 'federation': + $o = admin_page_federation($a); + break; default: notice( t("Item not found.") ); } @@ -208,6 +214,47 @@ function admin_content(&$a) { } } +/** + * Admin Federation Stats Page; display some numbers from gserver + * @param App $a + * returning string + */ +function admin_page_federation(&$a) { + // get counts on active friendica, diaspora, redmatrix, hubzilla, gnu + // social and statusnet nodes this node is knowing + // + // We are looking for the following platforms in the DB, "Red" should find + // all variants of that platform ID string as the q() function is stripping + // off one % two of them are needed in the query + $platforms = array('Diaspora', 'Friendica', '%%red%%', 'Hubzilla', 'GNU Social', 'StatusNet'); + $counts = array(); + foreach ($platforms as $p) { + // get a totaƶ count for the platform, the name and version of the + // highest version and the protocol tpe + $c = q('select count(*), platform, network, version from gserver where platform like "'.$p.'" and last_contact > last_failure order by version asc;'); + // what versions for that platform do we know at all? + // again only the active nodes + $v = q('select count(*), version from gserver where last_contact > last_failure and platform like "'.$p.'" group by version order by version;'); + // the 3rd array item is needed for the JavaScript graphs as JS does + // not like some characters in the names of variables... + $counts[$p]=array($c[0], $v, str_replace(array(' ','%'),'',$p)); + } + // some helpful text + $intro = t('This page offers you some numbers to the known part of the federated social network your Friendica node is part of. These numbers are not complete but only reflect the part of the network your node is aware of.'); + $hint = t('The Auto Discovered Contact Directory feature is not enabled, it will improve the data displayed here.'); + // load the template, replace the macros and return the page content + $t = get_markup_template("admin_federation.tpl"); + return replace_macros($t, array( + '$title' => t('Administration'), + '$page' => t('Federation Statistics'), + '$intro' => $intro, + '$hint' => $hint, + '$autoactive' => get_config('system', 'poco_completion'), + '$counts' => $counts, + '$version' => FRIENDICA_VERSION, + '$legendtext' => t('Currently this node is aware of nodes from the following platforms:'), + )); +} /** * Admin Inspect Queue Page * @param App $a diff --git a/view/global.css b/view/global.css index f468633e7..ce69e2e27 100644 --- a/view/global.css +++ b/view/global.css @@ -276,9 +276,15 @@ a { #poke-recip-label, #poke-action-label, #prvmail-message-label { margin: 10px 0 10px; } +.version-match { + font-weight: bold; + color: #00a700; +} +ul.federation-stats, ul.credits { list-style: none; } +ul.federation-stats li, ul.credits li { float: left; width: 240px; diff --git a/view/templates/admin_aside.tpl b/view/templates/admin_aside.tpl index 4a6af8814..7753ce915 100644 --- a/view/templates/admin_aside.tpl +++ b/view/templates/admin_aside.tpl @@ -10,14 +10,12 @@ }); }); +

{{$admtxt}}

{{if $admin.update}} diff --git a/view/templates/admin_federation.tpl b/view/templates/admin_federation.tpl new file mode 100644 index 000000000..1fe8d2710 --- /dev/null +++ b/view/templates/admin_federation.tpl @@ -0,0 +1,60 @@ + + +
+

{{$title}} - {{$page}}

+

{{$intro}}

+ {{if not $autoactive}} +

{{$hint}}

+ {{/if}} +

{{$legendtext}} +

+

+
+ + + +{{foreach $counts as $c}} + + + + + + + +{{/foreach}} +
{{$c[0]['platform']}}{{$c[0]['count(*)']}} + {{$c[0]['network']}}
+ + +
    +{{foreach $c[1] as $v}} +
  • {{if ($c[0]['platform']==='Friendica' and $version===$v['version']) }}{{$v['version']}}{{else}}{{$v['version']}}{{/if}} ({{$v['count(*)']}})
  • +{{/foreach}} +
+
From 4af584cec22827aee495e9d6bdd7366306254b06 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Thu, 26 Nov 2015 10:22:00 +0100 Subject: [PATCH 02/25] small fix for the ShaShape font --- view/fonts/shashape.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/fonts/shashape.css b/view/fonts/shashape.css index b34cac798..5f4494dde 100644 --- a/view/fonts/shashape.css +++ b/view/fonts/shashape.css @@ -177,7 +177,7 @@ content: "Z"; } .shashape.hash:before{ - content: "/"; + content: "#"; } .shashape.tag:before{ content: "="; From 25bb977b870feebed0c0bf759d9b82e3eac3b785 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 30 Nov 2015 07:43:45 +0100 Subject: [PATCH 03/25] better names for some variable to reflect their intention --- mod/admin.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 886d7a4d9..5e9c705ea 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -121,10 +121,10 @@ function admin_content(&$a) { /** * Side bar links */ - $aside = Array(); + $aside_tools = Array(); // array( url, name, extra css classes ) // not part of $aside to make the template more adjustable - $asidesubpages = Array( + $aside_sub = Array( 'site' => Array($a->get_baseurl(true)."/admin/site/", t("Site") , "site"), 'users' => Array($a->get_baseurl(true)."/admin/users/", t("Users") , "users"), 'plugins'=> Array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"), @@ -138,7 +138,7 @@ function admin_content(&$a) { /* get plugins admin page */ $r = q("SELECT `name` FROM `addon` WHERE `plugin_admin`=1 ORDER BY `name`"); - $aside['plugins_admin']=Array(); + $aside_tools['plugins_admin']=Array(); foreach ($r as $h){ $plugin =$h['name']; $aside['plugins_admin'][] = Array($a->get_baseurl(true)."/admin/plugins/".$plugin, $plugin, "plugin"); @@ -146,14 +146,14 @@ function admin_content(&$a) { $a->plugins_admin[] = $plugin; } - $aside['logs'] = Array($a->get_baseurl(true)."/admin/logs/", t("Logs"), "logs"); - $aside['diagnostics_probe'] = Array($a->get_baseurl(true).'/probe/', t('probe address'), 'probe'); - $aside['diagnostics_webfinger'] = Array($a->get_baseurl(true).'/webfinger/', t('check webfinger'), 'webfinger'); + $aside_tools['logs'] = Array($a->get_baseurl(true)."/admin/logs/", t("Logs"), "logs"); + $aside_tools['diagnostics_probe'] = Array($a->get_baseurl(true).'/probe/', t('probe address'), 'probe'); + $aside_tools['diagnostics_webfinger'] = Array($a->get_baseurl(true).'/webfinger/', t('check webfinger'), 'webfinger'); $t = get_markup_template("admin_aside.tpl"); $a->page['aside'] .= replace_macros( $t, array( - '$admin' => $aside, - '$subpages' => $asidesubpages, + '$admin' => $aside_tools, + '$subpages' => $aside_sub, '$admtxt' => t('Admin'), '$plugadmtxt' => t('Plugin Features'), '$logtxt' => t('Logs'), From ce399928759320a29d9bfe47e60e607fe88408d9 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Tue, 1 Dec 2015 08:47:57 +0100 Subject: [PATCH 04/25] combine some versions for ~f and D* --- mod/admin.php | 63 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 5e9c705ea..39677fb38 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -229,12 +229,69 @@ function admin_page_federation(&$a) { $platforms = array('Diaspora', 'Friendica', '%%red%%', 'Hubzilla', 'GNU Social', 'StatusNet'); $counts = array(); foreach ($platforms as $p) { - // get a totaƶ count for the platform, the name and version of the + // get a total count for the platform, the name and version of the // highest version and the protocol tpe - $c = q('select count(*), platform, network, version from gserver where platform like "'.$p.'" and last_contact > last_failure order by version asc;'); + $c = q('select count(*), platform, network, version from gserver + where platform like "'.$p.'" and last_contact > last_failure + order by version asc;'); // what versions for that platform do we know at all? // again only the active nodes - $v = q('select count(*), version from gserver where last_contact > last_failure and platform like "'.$p.'" group by version order by version;'); + $v = q('select count(*), version from gserver + where last_contact > last_failure and platform like "'.$p.'" + group by version + order by version;'); + // + // clean up version numbers + // + // in the DB the Diaspora versions have the format x.x.x.x-xx the last + // part (-xx) should be removed to clean up the versions from the "head + // commit" information and combined into a single entry for x.x.x.x + if ($p=='Diaspora') { + $newV = array(); + $newVv = array(); + foreach($v as $vv) { + $newVC = $vv['count(*)']; + $newVV = $vv['version']; + $posDash = strpos($newVV, '-'); + if ($posDash) + $newVV = substr($newVV, 0, $posDash); + if (isset($newV[$newVV])) + { + $newV[$newVV] += $newVC; + } else { + $newV[$newVV] = $newVC; + } + } + foreach ($newV as $key => $value) { + array_push($newVv, array('count(*)'=>$value, 'version'=>$key)); + } + $v = $newVv; + } + // early friendica versions have the format x.x.xxxx where xxxx is the + // DB version stamp; those should be operated out and versions be + // conbined + if ($p=='Friendica') { + $newV = array(); + $newVv = array(); + foreach ($v as $vv) { + $newVC = $vv['count(*)']; + $newVV = $vv['version']; + $lastDot = strrpos($newVV,'.'); + $len = strlen($newVV)-1; + if ($lastDot == $len-4) + $newVV = substr($newVV, 0, $lastDot); + if (isset($newV[$newVV])) + { + $newV[$newVV] += $newVC; + } else { + $newV[$newVV] = $newVC; + } + } + foreach ($newV as $key => $value) { + array_push($newVv, array('count(*)'=>$value, 'version'=>$key)); + } + $v = $newVv; + } // the 3rd array item is needed for the JavaScript graphs as JS does // not like some characters in the names of variables... $counts[$p]=array($c[0], $v, str_replace(array(' ','%'),'',$p)); From 0905f18c0f2cbace91dd95a839e573ac89c1ad3c Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Wed, 9 Dec 2015 20:48:43 +0100 Subject: [PATCH 05/25] allow -rc in friendica version listings --- mod/admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/admin.php b/mod/admin.php index 39677fb38..772d186ed 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -278,7 +278,7 @@ function admin_page_federation(&$a) { $newVV = $vv['version']; $lastDot = strrpos($newVV,'.'); $len = strlen($newVV)-1; - if ($lastDot == $len-4) + if (($lastDot == $len-4) && (!strrpos($newVV,'-rc')==$len-3)) $newVV = substr($newVV, 0, $lastDot); if (isset($newV[$newVV])) { From 8b189aca9ec45ad2c42e7a47ac7c78eaa5a7d91b Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 26 Dec 2015 08:49:38 +0100 Subject: [PATCH 06/25] some doxygen stuff --- mod/admin.php | 53 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 772d186ed..8add5d7f0 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -7,9 +7,18 @@ require_once("include/remoteupdate.php"); require_once("include/enotify.php"); require_once("include/text.php"); - /** + * @brief process send data from the admin panels subpages + * + * This function acts as relais for processing the data send from the subpages + * of the admin panel. Depending on the 1st parameter of the url (argv[1]) + * specialized functions are called to process the data from the subpages. + * + * The function itself does not return anything, but the subsequencely function + * return the HTML for the pages of the admin panel. + * * @param App $a + * */ function admin_post(&$a){ @@ -100,6 +109,8 @@ function admin_post(&$a){ } /** + * This function generates the content for the admin panel. + * @brief generates content of the admin panel pages * @param App $a * @return string */ @@ -215,9 +226,17 @@ function admin_content(&$a) { } /** - * Admin Federation Stats Page; display some numbers from gserver + * This function generates the "Federation Statistics" subpage for the admin + * panel. The page lists some numbers to the part of "The Federation" known to + * the node. This data includes the different connected networks (e.g. + * Diaspora, Hubzilla, GNU Social) and the used versions in the different + * networks. + * + * The returned string contains the HTML code of the subpage for display. + * + * @brief subpage with some stats about "the federstion" network * @param App $a - * returning string + * @return string */ function admin_page_federation(&$a) { // get counts on active friendica, diaspora, redmatrix, hubzilla, gnu @@ -313,9 +332,9 @@ function admin_page_federation(&$a) { )); } /** - * Admin Inspect Queue Page + * @brief Admin Inspect Queue Page * @param App $a - * return string + * @return string */ function admin_page_queue(&$a) { // get content from the queue table @@ -337,7 +356,7 @@ function admin_page_queue(&$a) { )); } /** - * Admin Summary Page + * @brief Admin Summary Page * @param App $a * @return string */ @@ -390,8 +409,8 @@ function admin_page_summary(&$a) { /** - * Admin Site Page - * @param App $a + * @brief process send data from Admin Site Page + * @param App $a */ function admin_page_site_post(&$a){ if (!x($_POST,"page_site")){ @@ -705,6 +724,7 @@ function admin_page_site_post(&$a){ } /** + * @brief generate Admin Site subpage * @param App $a * @return string */ @@ -915,7 +935,11 @@ function admin_page_site(&$a) { } - +/** + * @brief generates admin panel subpage for DB syncronization + * @param App $a + * @return string + **/ function admin_page_dbsync(&$a) { $o = ''; @@ -995,8 +1019,7 @@ function admin_page_dbsync(&$a) { } /** - * Users admin page - * + * @brief process data send by Users admin page * @param App $a */ function admin_page_users_post(&$a){ @@ -1091,6 +1114,7 @@ function admin_page_users_post(&$a){ } /** + * @brief admin panel subpage for User management * @param App $a * @return string */ @@ -1251,8 +1275,7 @@ function admin_page_users(&$a){ /** - * Plugins admin page - * + * @brief Plugins admin page * @param App $a * @return string */ @@ -1624,8 +1647,7 @@ function admin_page_themes(&$a){ /** - * Logs admin page - * + * @brief prosesses data send by Logs admin page * @param App $a */ @@ -1650,6 +1672,7 @@ function admin_page_logs_post(&$a) { } /** + * @brief generates admin panel subpage for Logs * @param App $a * @return string */ From c1aa668fef4335f7694f696bd8f8d3ebd6b42d23 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 27 Dec 2015 07:28:04 +0100 Subject: [PATCH 07/25] add log viewer to the aside menu of the admin panel --- view/templates/admin_aside.tpl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/view/templates/admin_aside.tpl b/view/templates/admin_aside.tpl index 7753ce915..9291477af 100644 --- a/view/templates/admin_aside.tpl +++ b/view/templates/admin_aside.tpl @@ -37,6 +37,8 @@

{{$logtxt}}

{{$diagnosticstxt}}

From ddb17d36a2791cf6ec3c66d5bd8276982663f182 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 27 Dec 2015 08:21:14 +0100 Subject: [PATCH 08/25] added PHP logging hint fields to the template --- view/templates/admin_logs.tpl | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/view/templates/admin_logs.tpl b/view/templates/admin_logs.tpl index 4cc0acb66..e79c7d7af 100644 --- a/view/templates/admin_logs.tpl +++ b/view/templates/admin_logs.tpl @@ -1,19 +1,21 @@
-

{{$title}} - {{$page}}

+

{{$title}} - {{$page}}

- + - {{include file="field_checkbox.tpl" field=$debugging}} - {{include file="field_input.tpl" field=$logfile}} - {{include file="field_select.tpl" field=$loglevel}} + {{include file="field_checkbox.tpl" field=$debugging}} + {{include file="field_input.tpl" field=$logfile}} + {{include file="field_select.tpl" field=$loglevel}} -
+
+ +

{{$phpheader}}

+
+

{{$phphint}}

+
{{$phplogcode}}
+
-

{{$logname}}

-
{{$data}}
- -
From 0a5c9e96a884cce4bcae6ced5d5572c19224f74c Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 27 Dec 2015 08:22:30 +0100 Subject: [PATCH 09/25] moved viewing of friendica logs into a separate subpage, thus created a new template --- view/templates/admin_viewlogs.tpl | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 view/templates/admin_viewlogs.tpl diff --git a/view/templates/admin_viewlogs.tpl b/view/templates/admin_viewlogs.tpl new file mode 100644 index 000000000..c80264c52 --- /dev/null +++ b/view/templates/admin_viewlogs.tpl @@ -0,0 +1,6 @@ +
+

{{$title}} - {{$page}}

+ +

{{$logname}}

+
{{$data}}
+
From 4d1545a1a924e82b73d894c715376ef55004a5b7 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 27 Dec 2015 08:23:26 +0100 Subject: [PATCH 10/25] viewing and configuration of logs are now on separate subpages in the admin panel --- mod/admin.php | 93 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 83 insertions(+), 10 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 8add5d7f0..c54b0e9cb 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -158,6 +158,7 @@ function admin_content(&$a) { } $aside_tools['logs'] = Array($a->get_baseurl(true)."/admin/logs/", t("Logs"), "logs"); + $aside_tools['viewlogs'] = Array($a->get_baseurl(true)."/admin/viewlogs/", t("View Logs"), 'viewlogs'); $aside_tools['diagnostics_probe'] = Array($a->get_baseurl(true).'/probe/', t('probe address'), 'probe'); $aside_tools['diagnostics_webfinger'] = Array($a->get_baseurl(true).'/webfinger/', t('check webfinger'), 'webfinger'); @@ -165,12 +166,12 @@ function admin_content(&$a) { $a->page['aside'] .= replace_macros( $t, array( '$admin' => $aside_tools, '$subpages' => $aside_sub, - '$admtxt' => t('Admin'), - '$plugadmtxt' => t('Plugin Features'), - '$logtxt' => t('Logs'), - '$diagnosticstxt' => t('diagnostics'), - '$h_pending' => t('User registrations waiting for confirmation'), - '$admurl'=> $a->get_baseurl(true)."/admin/" + '$admtxt' => t('Admin'), + '$plugadmtxt' => t('Plugin Features'), + '$logtxt' => t('Logs'), + '$diagnosticstxt' => t('diagnostics'), + '$h_pending' => t('User registrations waiting for confirmation'), + '$admurl'=> $a->get_baseurl(true)."/admin/" )); @@ -197,6 +198,9 @@ function admin_content(&$a) { case 'logs': $o = admin_page_logs($a); break; + case 'viewlogs': + $o = admin_page_viewlogs($a); + break; case 'dbsync': $o = admin_page_dbsync($a); break; @@ -1672,7 +1676,18 @@ function admin_page_logs_post(&$a) { } /** - * @brief generates admin panel subpage for Logs + * @brief generates admin panel subpage for configuration of the logs + * + * This function take the view/templates/admin_logs.tpl file and generates a + * page where admin can configure the logging of friendica. + * + * Displaying the log is separated from the log config as the logfile can get + * big depending on the settings and changing settings regarding the logs can + * thus waste bandwidth. + * + * The string returned contains the content of the template file with replaced + * macros. + * * @param App $a * @return string */ @@ -1688,7 +1703,7 @@ function admin_page_logs(&$a){ $t = get_markup_template("admin_logs.tpl"); - $f = get_config('system','logfile'); +/* $f = get_config('system','logfile'); $data = ''; @@ -1717,14 +1732,14 @@ readable."); } fclose($fp); } - } + }*/ return replace_macros($t, array( '$title' => t('Administration'), '$page' => t('Logs'), '$submit' => t('Save Settings'), '$clear' => t('Clear'), - '$data' => $data, +// '$data' => $data, '$baseurl' => $a->get_baseurl(true), '$logname' => get_config('system','logfile'), @@ -1734,9 +1749,67 @@ readable."); '$loglevel' => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices), '$form_security_token' => get_form_security_token("admin_logs"), + '$phpheader' => t("PHP logging"), + '$phphint' => t("To enable logging of PHP errors and warnings you can add the following to the .htconfig.php file of your installation. The filename set in the 'error_log' line is relative to the friendica top-level directory and must be writeable by the web server. The option '1' for 'log_errors' and 'display_errors' is to enable these options, set to '0' to disable them."), + '$phplogcode' => "error_reporting(E_ERROR | E_WARNING | E_PARSE );\nini_set('error_log','php.out');\nini_set('log_errors','1');\nini_set('display_errors', '1');", )); } +/** + * @brief generates admin panel subpage to view the Friendica log + * + * This function loads the template view/templates/admin_viewlogs.tpl to + * display the systemlog content. The filename for the systemlog of friendica + * is relative to the base directory and taken from the config entry 'logfile' + * in the 'system' category. + * + * Displaying the log is separated from the log config as the logfile can get + * big depending on the settings and changing settings regarding the logs can + * thus waste bandwidth. + * + * The string returned contains the content of the template file with replaced + * macros. + * + * @param App $a + * @return string + */ +function admin_page_viewlogs(&$a){ + $t = get_markup_template("admin_viewlogs.tpl"); + $f = get_config('system','logfile'); + $data = ''; + + if(!file_exists($f)) { + $data = t("Error trying to open $f log file.\r\n
Check to see if file $f exist and is readable."); + } + else { + $fp = fopen($f, 'r'); + if(!$fp) { + $data = t("Couldn't open $f log file.\r\n
Check to see if file $f is readable."); + } + else { + $fstat = fstat($fp); + $size = $fstat['size']; + if($size != 0) + { + if($size > 5000000 || $size < 0) + $size = 5000000; + $seek = fseek($fp,0-$size,SEEK_END); + if($seek === 0) { + $data = escape_tags(fread($fp,$size)); + while(! feof($fp)) + $data .= escape_tags(fread($fp,4096)); + } + } + fclose($fp); + } + } + return replace_macros($t, array( + '$title' => t('Administration'), + '$page' => t('View Logs'), + '$data' => $data, + '$logname' => get_config('system','logfile') + )); +} /** * @param App $a */ From 0d5fed5b3bfba169f98742a7de4188bea7a31e76 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 27 Dec 2015 08:27:53 +0100 Subject: [PATCH 11/25] beautification of HTML code --- view/templates/admin_aside.tpl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/view/templates/admin_aside.tpl b/view/templates/admin_aside.tpl index 9291477af..5c9cce0d0 100644 --- a/view/templates/admin_aside.tpl +++ b/view/templates/admin_aside.tpl @@ -37,8 +37,7 @@

{{$logtxt}}

{{$diagnosticstxt}}

From 1030c5f4b63df897c4cc96880063fc6ff0e56cb6 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 27 Dec 2015 16:03:42 +0100 Subject: [PATCH 12/25] some doc texts --- mod/admin.php | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index c54b0e9cb..616e8fcd4 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -337,6 +337,14 @@ function admin_page_federation(&$a) { } /** * @brief Admin Inspect Queue Page + * + * Generates a page for the admin to have a look into the current queue of + * postings that are not deliverabke. Shown are the name and url of the + * recipient, the delivery network and the dates when the posting was generated + * and the last time tried to deliver the posting. + * + * The returned string holds the content of the page. + * * @param App $a * @return string */ @@ -361,6 +369,12 @@ function admin_page_queue(&$a) { } /** * @brief Admin Summary Page + * + * The summary page is the "start page" of the admin panel. It gives the admin + * a first overview of the open adminastrative tasks. + * + * The returned string contains the HTML content of the generated page. + * * @param App $a * @return string */ @@ -1660,14 +1674,12 @@ function admin_page_logs_post(&$a) { check_form_security_token_redirectOnErr('/admin/logs', 'admin_logs'); $logfile = ((x($_POST,'logfile')) ? notags(trim($_POST['logfile'])) : ''); - $debugging = ((x($_POST,'debugging')) ? true : false); + $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); - - } info( t("Log settings updated.") ); From 8e7d53cd417951f855cd9aae51bd9993e5b969e0 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 4 Jan 2016 08:19:32 +0100 Subject: [PATCH 13/25] added Chart.js 1.0.2 to friendica library and use it instead of CDN version for graphs --- library/Chart.js-1.0.2/Chart.min.js | 11 +++++++++++ library/Chart.js-1.0.2/LICENSE.md | 7 +++++++ library/Chart.js-1.0.2/README.md | 20 ++++++++++++++++++++ view/templates/admin_federation.tpl | 2 +- 4 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 library/Chart.js-1.0.2/Chart.min.js create mode 100644 library/Chart.js-1.0.2/LICENSE.md create mode 100644 library/Chart.js-1.0.2/README.md diff --git a/library/Chart.js-1.0.2/Chart.min.js b/library/Chart.js-1.0.2/Chart.min.js new file mode 100644 index 000000000..3a0a2c873 --- /dev/null +++ b/library/Chart.js-1.0.2/Chart.min.js @@ -0,0 +1,11 @@ +/*! + * Chart.js + * http://chartjs.org/ + * Version: 1.0.2 + * + * Copyright 2015 Nick Downie + * Released under the MIT license + * https://github.com/nnnick/Chart.js/blob/master/LICENSE.md + */ +(function(){"use strict";var t=this,i=t.Chart,e=function(t){this.canvas=t.canvas,this.ctx=t;var i=function(t,i){return t["offset"+i]?t["offset"+i]:document.defaultView.getComputedStyle(t).getPropertyValue(i)},e=this.width=i(t.canvas,"Width"),n=this.height=i(t.canvas,"Height");t.canvas.width=e,t.canvas.height=n;var e=this.width=t.canvas.width,n=this.height=t.canvas.height;return this.aspectRatio=this.width/this.height,s.retinaScale(this),this};e.defaults={global:{animation:!0,animationSteps:60,animationEasing:"easeOutQuart",showScale:!0,scaleOverride:!1,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleLineColor:"rgba(0,0,0,.1)",scaleLineWidth:1,scaleShowLabels:!0,scaleLabel:"<%=value%>",scaleIntegersOnly:!0,scaleBeginAtZero:!1,scaleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",responsive:!1,maintainAspectRatio:!0,showTooltips:!0,customTooltips:!1,tooltipEvents:["mousemove","touchstart","touchmove","mouseout"],tooltipFillColor:"rgba(0,0,0,0.8)",tooltipFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipFontSize:14,tooltipFontStyle:"normal",tooltipFontColor:"#fff",tooltipTitleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipTitleFontSize:14,tooltipTitleFontStyle:"bold",tooltipTitleFontColor:"#fff",tooltipYPadding:6,tooltipXPadding:6,tooltipCaretSize:8,tooltipCornerRadius:6,tooltipXOffset:10,tooltipTemplate:"<%if (label){%><%=label%>: <%}%><%= value %>",multiTooltipTemplate:"<%= value %>",multiTooltipKeyBackground:"#fff",onAnimationProgress:function(){},onAnimationComplete:function(){}}},e.types={};var s=e.helpers={},n=s.each=function(t,i,e){var s=Array.prototype.slice.call(arguments,3);if(t)if(t.length===+t.length){var n;for(n=0;n=0;s--){var n=t[s];if(i(n))return n}},s.inherits=function(t){var i=this,e=t&&t.hasOwnProperty("constructor")?t.constructor:function(){return i.apply(this,arguments)},s=function(){this.constructor=e};return s.prototype=i.prototype,e.prototype=new s,e.extend=r,t&&a(e.prototype,t),e.__super__=i.prototype,e}),c=s.noop=function(){},u=s.uid=function(){var t=0;return function(){return"chart-"+t++}}(),d=s.warn=function(t){window.console&&"function"==typeof window.console.warn&&console.warn(t)},p=s.amd="function"==typeof define&&define.amd,f=s.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},g=s.max=function(t){return Math.max.apply(Math,t)},m=s.min=function(t){return Math.min.apply(Math,t)},v=(s.cap=function(t,i,e){if(f(i)){if(t>i)return i}else if(f(e)&&e>t)return e;return t},s.getDecimalPlaces=function(t){return t%1!==0&&f(t)?t.toString().split(".")[1].length:0}),S=s.radians=function(t){return t*(Math.PI/180)},x=(s.getAngleFromPoint=function(t,i){var e=i.x-t.x,s=i.y-t.y,n=Math.sqrt(e*e+s*s),o=2*Math.PI+Math.atan2(s,e);return 0>e&&0>s&&(o+=2*Math.PI),{angle:o,distance:n}},s.aliasPixel=function(t){return t%2===0?0:.5}),y=(s.splineCurve=function(t,i,e,s){var n=Math.sqrt(Math.pow(i.x-t.x,2)+Math.pow(i.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-i.x,2)+Math.pow(e.y-i.y,2)),a=s*n/(n+o),h=s*o/(n+o);return{inner:{x:i.x-a*(e.x-t.x),y:i.y-a*(e.y-t.y)},outer:{x:i.x+h*(e.x-t.x),y:i.y+h*(e.y-t.y)}}},s.calculateOrderOfMagnitude=function(t){return Math.floor(Math.log(t)/Math.LN10)}),C=(s.calculateScaleRange=function(t,i,e,s,n){var o=2,a=Math.floor(i/(1.5*e)),h=o>=a,l=g(t),r=m(t);l===r&&(l+=.5,r>=.5&&!s?r-=.5:l+=.5);for(var c=Math.abs(l-r),u=y(c),d=Math.ceil(l/(1*Math.pow(10,u)))*Math.pow(10,u),p=s?0:Math.floor(r/(1*Math.pow(10,u)))*Math.pow(10,u),f=d-p,v=Math.pow(10,u),S=Math.round(f/v);(S>a||a>2*S)&&!h;)if(S>a)v*=2,S=Math.round(f/v),S%1!==0&&(h=!0);else if(n&&u>=0){if(v/2%1!==0)break;v/=2,S=Math.round(f/v)}else v/=2,S=Math.round(f/v);return h&&(S=o,v=f/S),{steps:S,stepValue:v,min:p,max:p+S*v}},s.template=function(t,i){function e(t,i){var e=/\W/.test(t)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+t.replace(/[\r\t\n]/g," ").split("<%").join(" ").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split(" ").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):s[t]=s[t];return i?e(i):e}if(t instanceof Function)return t(i);var s={};return e(t,i)}),w=(s.generateLabels=function(t,i,e,s){var o=new Array(i);return labelTemplateString&&n(o,function(i,n){o[n]=C(t,{value:e+s*(n+1)})}),o},s.easingEffects={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-1*t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-0.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return 1*((t=t/1-1)*t*t+1)},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-1*((t=t/1-1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-0.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return 1*(t/=1)*t*t*t*t},easeOutQuint:function(t){return 1*((t=t/1-1)*t*t*t*t+1)},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return-1*Math.cos(t/1*(Math.PI/2))+1},easeOutSine:function(t){return 1*Math.sin(t/1*(Math.PI/2))},easeInOutSine:function(t){return-0.5*(Math.cos(Math.PI*t/1)-1)},easeInExpo:function(t){return 0===t?1:1*Math.pow(2,10*(t/1-1))},easeOutExpo:function(t){return 1===t?1:1*(-Math.pow(2,-10*t/1)+1)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(-Math.pow(2,-10*--t)+2)},easeInCirc:function(t){return t>=1?t:-1*(Math.sqrt(1-(t/=1)*t)-1)},easeOutCirc:function(t){return 1*Math.sqrt(1-(t=t/1-1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-0.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var i=1.70158,e=0,s=1;return 0===t?0:1==(t/=1)?1:(e||(e=.3),st?-.5*s*Math.pow(2,10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e):s*Math.pow(2,-10*(t-=1))*Math.sin(2*(1*t-i)*Math.PI/e)*.5+1)},easeInBack:function(t){var i=1.70158;return 1*(t/=1)*t*((i+1)*t-i)},easeOutBack:function(t){var i=1.70158;return 1*((t=t/1-1)*t*((i+1)*t+i)+1)},easeInOutBack:function(t){var i=1.70158;return(t/=.5)<1?.5*t*t*(((i*=1.525)+1)*t-i):.5*((t-=2)*t*(((i*=1.525)+1)*t+i)+2)},easeInBounce:function(t){return 1-w.easeOutBounce(1-t)},easeOutBounce:function(t){return(t/=1)<1/2.75?7.5625*t*t:2/2.75>t?1*(7.5625*(t-=1.5/2.75)*t+.75):2.5/2.75>t?1*(7.5625*(t-=2.25/2.75)*t+.9375):1*(7.5625*(t-=2.625/2.75)*t+.984375)},easeInOutBounce:function(t){return.5>t?.5*w.easeInBounce(2*t):.5*w.easeOutBounce(2*t-1)+.5}}),b=s.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)}}(),P=s.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(t){return window.clearTimeout(t,1e3/60)}}(),L=(s.animationLoop=function(t,i,e,s,n,o){var a=0,h=w[e]||w.linear,l=function(){a++;var e=a/i,r=h(e);t.call(o,r,e,a),s.call(o,r,e),i>a?o.animationFrame=b(l):n.apply(o)};b(l)},s.getRelativePosition=function(t){var i,e,s=t.originalEvent||t,n=t.currentTarget||t.srcElement,o=n.getBoundingClientRect();return s.touches?(i=s.touches[0].clientX-o.left,e=s.touches[0].clientY-o.top):(i=s.clientX-o.left,e=s.clientY-o.top),{x:i,y:e}},s.addEvent=function(t,i,e){t.addEventListener?t.addEventListener(i,e):t.attachEvent?t.attachEvent("on"+i,e):t["on"+i]=e}),k=s.removeEvent=function(t,i,e){t.removeEventListener?t.removeEventListener(i,e,!1):t.detachEvent?t.detachEvent("on"+i,e):t["on"+i]=c},F=(s.bindEvents=function(t,i,e){t.events||(t.events={}),n(i,function(i){t.events[i]=function(){e.apply(t,arguments)},L(t.chart.canvas,i,t.events[i])})},s.unbindEvents=function(t,i){n(i,function(i,e){k(t.chart.canvas,e,i)})}),R=s.getMaximumWidth=function(t){var i=t.parentNode;return i.clientWidth},T=s.getMaximumHeight=function(t){var i=t.parentNode;return i.clientHeight},A=(s.getMaximumSize=s.getMaximumWidth,s.retinaScale=function(t){var i=t.ctx,e=t.canvas.width,s=t.canvas.height;window.devicePixelRatio&&(i.canvas.style.width=e+"px",i.canvas.style.height=s+"px",i.canvas.height=s*window.devicePixelRatio,i.canvas.width=e*window.devicePixelRatio,i.scale(window.devicePixelRatio,window.devicePixelRatio))}),M=s.clear=function(t){t.ctx.clearRect(0,0,t.width,t.height)},W=s.fontString=function(t,i,e){return i+" "+t+"px "+e},z=s.longestText=function(t,i,e){t.font=i;var s=0;return n(e,function(i){var e=t.measureText(i).width;s=e>s?e:s}),s},B=s.drawRoundedRectangle=function(t,i,e,s,n,o){t.beginPath(),t.moveTo(i+o,e),t.lineTo(i+s-o,e),t.quadraticCurveTo(i+s,e,i+s,e+o),t.lineTo(i+s,e+n-o),t.quadraticCurveTo(i+s,e+n,i+s-o,e+n),t.lineTo(i+o,e+n),t.quadraticCurveTo(i,e+n,i,e+n-o),t.lineTo(i,e+o),t.quadraticCurveTo(i,e,i+o,e),t.closePath()};e.instances={},e.Type=function(t,i,s){this.options=i,this.chart=s,this.id=u(),e.instances[this.id]=this,i.responsive&&this.resize(),this.initialize.call(this,t)},a(e.Type.prototype,{initialize:function(){return this},clear:function(){return M(this.chart),this},stop:function(){return P(this.animationFrame),this},resize:function(t){this.stop();var i=this.chart.canvas,e=R(this.chart.canvas),s=this.options.maintainAspectRatio?e/this.chart.aspectRatio:T(this.chart.canvas);return i.width=this.chart.width=e,i.height=this.chart.height=s,A(this.chart),"function"==typeof t&&t.apply(this,Array.prototype.slice.call(arguments,1)),this},reflow:c,render:function(t){return t&&this.reflow(),this.options.animation&&!t?s.animationLoop(this.draw,this.options.animationSteps,this.options.animationEasing,this.options.onAnimationProgress,this.options.onAnimationComplete,this):(this.draw(),this.options.onAnimationComplete.call(this)),this},generateLegend:function(){return C(this.options.legendTemplate,this)},destroy:function(){this.clear(),F(this,this.events);var t=this.chart.canvas;t.width=this.chart.width,t.height=this.chart.height,t.style.removeProperty?(t.style.removeProperty("width"),t.style.removeProperty("height")):(t.style.removeAttribute("width"),t.style.removeAttribute("height")),delete e.instances[this.id]},showTooltip:function(t,i){"undefined"==typeof this.activeElements&&(this.activeElements=[]);var o=function(t){var i=!1;return t.length!==this.activeElements.length?i=!0:(n(t,function(t,e){t!==this.activeElements[e]&&(i=!0)},this),i)}.call(this,t);if(o||i){if(this.activeElements=t,this.draw(),this.options.customTooltips&&this.options.customTooltips(!1),t.length>0)if(this.datasets&&this.datasets.length>1){for(var a,h,r=this.datasets.length-1;r>=0&&(a=this.datasets[r].points||this.datasets[r].bars||this.datasets[r].segments,h=l(a,t[0]),-1===h);r--);var c=[],u=[],d=function(){var t,i,e,n,o,a=[],l=[],r=[];return s.each(this.datasets,function(i){t=i.points||i.bars||i.segments,t[h]&&t[h].hasValue()&&a.push(t[h])}),s.each(a,function(t){l.push(t.x),r.push(t.y),c.push(s.template(this.options.multiTooltipTemplate,t)),u.push({fill:t._saved.fillColor||t.fillColor,stroke:t._saved.strokeColor||t.strokeColor})},this),o=m(r),e=g(r),n=m(l),i=g(l),{x:n>this.chart.width/2?n:i,y:(o+e)/2}}.call(this,h);new e.MultiTooltip({x:d.x,y:d.y,xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,xOffset:this.options.tooltipXOffset,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,titleTextColor:this.options.tooltipTitleFontColor,titleFontFamily:this.options.tooltipTitleFontFamily,titleFontStyle:this.options.tooltipTitleFontStyle,titleFontSize:this.options.tooltipTitleFontSize,cornerRadius:this.options.tooltipCornerRadius,labels:c,legendColors:u,legendColorBackground:this.options.multiTooltipKeyBackground,title:t[0].label,chart:this.chart,ctx:this.chart.ctx,custom:this.options.customTooltips}).draw()}else n(t,function(t){var i=t.tooltipPosition();new e.Tooltip({x:Math.round(i.x),y:Math.round(i.y),xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,caretHeight:this.options.tooltipCaretSize,cornerRadius:this.options.tooltipCornerRadius,text:C(this.options.tooltipTemplate,t),chart:this.chart,custom:this.options.customTooltips}).draw()},this);return this}},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)}}),e.Type.extend=function(t){var i=this,s=function(){return i.apply(this,arguments)};if(s.prototype=o(i.prototype),a(s.prototype,t),s.extend=e.Type.extend,t.name||i.prototype.name){var n=t.name||i.prototype.name,l=e.defaults[i.prototype.name]?o(e.defaults[i.prototype.name]):{};e.defaults[n]=a(l,t.defaults),e.types[n]=s,e.prototype[n]=function(t,i){var o=h(e.defaults.global,e.defaults[n],i||{});return new s(t,o,this)}}else d("Name not provided for this chart, so it hasn't been registered");return i},e.Element=function(t){a(this,t),this.initialize.apply(this,arguments),this.save()},a(e.Element.prototype,{initialize:function(){},restore:function(t){return t?n(t,function(t){this[t]=this._saved[t]},this):a(this,this._saved),this},save:function(){return this._saved=o(this),delete this._saved._saved,this},update:function(t){return n(t,function(t,i){this._saved[i]=this[i],this[i]=t},this),this},transition:function(t,i){return n(t,function(t,e){this[e]=(t-this._saved[e])*i+this._saved[e]},this),this},tooltipPosition:function(){return{x:this.x,y:this.y}},hasValue:function(){return f(this.value)}}),e.Element.extend=r,e.Point=e.Element.extend({display:!0,inRange:function(t,i){var e=this.hitDetectionRadius+this.radius;return Math.pow(t-this.x,2)+Math.pow(i-this.y,2)=this.startAngle&&e.angle<=this.endAngle,o=e.distance>=this.innerRadius&&e.distance<=this.outerRadius;return n&&o},tooltipPosition:function(){var t=this.startAngle+(this.endAngle-this.startAngle)/2,i=(this.outerRadius-this.innerRadius)/2+this.innerRadius;return{x:this.x+Math.cos(t)*i,y:this.y+Math.sin(t)*i}},draw:function(t){var i=this.ctx;i.beginPath(),i.arc(this.x,this.y,this.outerRadius,this.startAngle,this.endAngle),i.arc(this.x,this.y,this.innerRadius,this.endAngle,this.startAngle,!0),i.closePath(),i.strokeStyle=this.strokeColor,i.lineWidth=this.strokeWidth,i.fillStyle=this.fillColor,i.fill(),i.lineJoin="bevel",this.showStroke&&i.stroke()}}),e.Rectangle=e.Element.extend({draw:function(){var t=this.ctx,i=this.width/2,e=this.x-i,s=this.x+i,n=this.base-(this.base-this.y),o=this.strokeWidth/2;this.showStroke&&(e+=o,s-=o,n+=o),t.beginPath(),t.fillStyle=this.fillColor,t.strokeStyle=this.strokeColor,t.lineWidth=this.strokeWidth,t.moveTo(e,this.base),t.lineTo(e,n),t.lineTo(s,n),t.lineTo(s,this.base),t.fill(),this.showStroke&&t.stroke()},height:function(){return this.base-this.y},inRange:function(t,i){return t>=this.x-this.width/2&&t<=this.x+this.width/2&&i>=this.y&&i<=this.base}}),e.Tooltip=e.Element.extend({draw:function(){var t=this.chart.ctx;t.font=W(this.fontSize,this.fontStyle,this.fontFamily),this.xAlign="center",this.yAlign="above";var i=this.caretPadding=2,e=t.measureText(this.text).width+2*this.xPadding,s=this.fontSize+2*this.yPadding,n=s+this.caretHeight+i;this.x+e/2>this.chart.width?this.xAlign="left":this.x-e/2<0&&(this.xAlign="right"),this.y-n<0&&(this.yAlign="below");var o=this.x-e/2,a=this.y-n;if(t.fillStyle=this.fillColor,this.custom)this.custom(this);else{switch(this.yAlign){case"above":t.beginPath(),t.moveTo(this.x,this.y-i),t.lineTo(this.x+this.caretHeight,this.y-(i+this.caretHeight)),t.lineTo(this.x-this.caretHeight,this.y-(i+this.caretHeight)),t.closePath(),t.fill();break;case"below":a=this.y+i+this.caretHeight,t.beginPath(),t.moveTo(this.x,this.y+i),t.lineTo(this.x+this.caretHeight,this.y+i+this.caretHeight),t.lineTo(this.x-this.caretHeight,this.y+i+this.caretHeight),t.closePath(),t.fill()}switch(this.xAlign){case"left":o=this.x-e+(this.cornerRadius+this.caretHeight);break;case"right":o=this.x-(this.cornerRadius+this.caretHeight)}B(t,o,a,e,s,this.cornerRadius),t.fill(),t.fillStyle=this.textColor,t.textAlign="center",t.textBaseline="middle",t.fillText(this.text,o+e/2,a+s/2)}}}),e.MultiTooltip=e.Element.extend({initialize:function(){this.font=W(this.fontSize,this.fontStyle,this.fontFamily),this.titleFont=W(this.titleFontSize,this.titleFontStyle,this.titleFontFamily),this.height=this.labels.length*this.fontSize+(this.labels.length-1)*(this.fontSize/2)+2*this.yPadding+1.5*this.titleFontSize,this.ctx.font=this.titleFont;var t=this.ctx.measureText(this.title).width,i=z(this.ctx,this.font,this.labels)+this.fontSize+3,e=g([i,t]);this.width=e+2*this.xPadding;var s=this.height/2;this.y-s<0?this.y=s:this.y+s>this.chart.height&&(this.y=this.chart.height-s),this.x>this.chart.width/2?this.x-=this.xOffset+this.width:this.x+=this.xOffset},getLineHeight:function(t){var i=this.y-this.height/2+this.yPadding,e=t-1;return 0===t?i+this.titleFontSize/2:i+(1.5*this.fontSize*e+this.fontSize/2)+1.5*this.titleFontSize},draw:function(){if(this.custom)this.custom(this);else{B(this.ctx,this.x,this.y-this.height/2,this.width,this.height,this.cornerRadius);var t=this.ctx;t.fillStyle=this.fillColor,t.fill(),t.closePath(),t.textAlign="left",t.textBaseline="middle",t.fillStyle=this.titleTextColor,t.font=this.titleFont,t.fillText(this.title,this.x+this.xPadding,this.getLineHeight(0)),t.font=this.font,s.each(this.labels,function(i,e){t.fillStyle=this.textColor,t.fillText(i,this.x+this.xPadding+this.fontSize+3,this.getLineHeight(e+1)),t.fillStyle=this.legendColorBackground,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize),t.fillStyle=this.legendColors[e].fill,t.fillRect(this.x+this.xPadding,this.getLineHeight(e+1)-this.fontSize/2,this.fontSize,this.fontSize)},this)}}}),e.Scale=e.Element.extend({initialize:function(){this.fit()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(C(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}));this.yLabelWidth=this.display&&this.showLabels?z(this.ctx,this.font,this.yLabels):0},addXLabel:function(t){this.xLabels.push(t),this.valuesCount++,this.fit()},removeXLabel:function(){this.xLabels.shift(),this.valuesCount--,this.fit()},fit:function(){this.startPoint=this.display?this.fontSize:0,this.endPoint=this.display?this.height-1.5*this.fontSize-5:this.height,this.startPoint+=this.padding,this.endPoint-=this.padding;var t,i=this.endPoint-this.startPoint;for(this.calculateYRange(i),this.buildYLabels(),this.calculateXLabelRotation();i>this.endPoint-this.startPoint;)i=this.endPoint-this.startPoint,t=this.yLabelWidth,this.calculateYRange(i),this.buildYLabels(),tthis.yLabelWidth+10?e/2:this.yLabelWidth+10,this.xLabelRotation=0,this.display){var n,o=z(this.ctx,this.font,this.xLabels);this.xLabelWidth=o;for(var a=Math.floor(this.calculateX(1)-this.calculateX(0))-6;this.xLabelWidth>a&&0===this.xLabelRotation||this.xLabelWidth>a&&this.xLabelRotation<=90&&this.xLabelRotation>0;)n=Math.cos(S(this.xLabelRotation)),t=n*e,i=n*s,t+this.fontSize/2>this.yLabelWidth+8&&(this.xScalePaddingLeft=t+this.fontSize/2),this.xScalePaddingRight=this.fontSize/2,this.xLabelRotation++,this.xLabelWidth=n*o;this.xLabelRotation>0&&(this.endPoint-=Math.sin(S(this.xLabelRotation))*o+3)}else this.xLabelWidth=0,this.xScalePaddingRight=this.padding,this.xScalePaddingLeft=this.padding},calculateYRange:c,drawingArea:function(){return this.startPoint-this.endPoint},calculateY:function(t){var i=this.drawingArea()/(this.min-this.max);return this.endPoint-i*(t-this.min)},calculateX:function(t){var i=(this.xLabelRotation>0,this.width-(this.xScalePaddingLeft+this.xScalePaddingRight)),e=i/Math.max(this.valuesCount-(this.offsetGridLines?0:1),1),s=e*t+this.xScalePaddingLeft;return this.offsetGridLines&&(s+=e/2),Math.round(s)},update:function(t){s.extend(this,t),this.fit()},draw:function(){var t=this.ctx,i=(this.endPoint-this.startPoint)/this.steps,e=Math.round(this.xScalePaddingLeft);this.display&&(t.fillStyle=this.textColor,t.font=this.font,n(this.yLabels,function(n,o){var a=this.endPoint-i*o,h=Math.round(a),l=this.showHorizontalLines;t.textAlign="right",t.textBaseline="middle",this.showLabels&&t.fillText(n,e-10,a),0!==o||l||(l=!0),l&&t.beginPath(),o>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),h+=s.aliasPixel(t.lineWidth),l&&(t.moveTo(e,h),t.lineTo(this.width,h),t.stroke(),t.closePath()),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(e-5,h),t.lineTo(e,h),t.stroke(),t.closePath()},this),n(this.xLabels,function(i,e){var s=this.calculateX(e)+x(this.lineWidth),n=this.calculateX(e-(this.offsetGridLines?.5:0))+x(this.lineWidth),o=this.xLabelRotation>0,a=this.showVerticalLines;0!==e||a||(a=!0),a&&t.beginPath(),e>0?(t.lineWidth=this.gridLineWidth,t.strokeStyle=this.gridLineColor):(t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor),a&&(t.moveTo(n,this.endPoint),t.lineTo(n,this.startPoint-3),t.stroke(),t.closePath()),t.lineWidth=this.lineWidth,t.strokeStyle=this.lineColor,t.beginPath(),t.moveTo(n,this.endPoint),t.lineTo(n,this.endPoint+5),t.stroke(),t.closePath(),t.save(),t.translate(s,o?this.endPoint+12:this.endPoint+8),t.rotate(-1*S(this.xLabelRotation)),t.font=this.font,t.textAlign=o?"right":"center",t.textBaseline=o?"middle":"top",t.fillText(i,0,0),t.restore()},this))}}),e.RadialScale=e.Element.extend({initialize:function(){this.size=m([this.height,this.width]),this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2},calculateCenterOffset:function(t){var i=this.drawingArea/(this.max-this.min);return(t-this.min)*i},update:function(){this.lineArc?this.drawingArea=this.display?this.size/2-(this.fontSize/2+this.backdropPaddingY):this.size/2:this.setScaleSize(),this.buildYLabels()},buildYLabels:function(){this.yLabels=[];for(var t=v(this.stepValue),i=0;i<=this.steps;i++)this.yLabels.push(C(this.templateString,{value:(this.min+i*this.stepValue).toFixed(t)}))},getCircumference:function(){return 2*Math.PI/this.valuesCount},setScaleSize:function(){var t,i,e,s,n,o,a,h,l,r,c,u,d=m([this.height/2-this.pointLabelFontSize-5,this.width/2]),p=this.width,g=0;for(this.ctx.font=W(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),i=0;ip&&(p=t.x+s,n=i),t.x-sp&&(p=t.x+e,n=i):i>this.valuesCount/2&&t.x-e0){var s,n=e*(this.drawingArea/this.steps),o=this.yCenter-n;if(this.lineWidth>0)if(t.strokeStyle=this.lineColor,t.lineWidth=this.lineWidth,this.lineArc)t.beginPath(),t.arc(this.xCenter,this.yCenter,n,0,2*Math.PI),t.closePath(),t.stroke();else{t.beginPath();for(var a=0;a=0;i--){if(this.angleLineWidth>0){var e=this.getPointPosition(i,this.calculateCenterOffset(this.max));t.beginPath(),t.moveTo(this.xCenter,this.yCenter),t.lineTo(e.x,e.y),t.stroke(),t.closePath()}var s=this.getPointPosition(i,this.calculateCenterOffset(this.max)+5);t.font=W(this.pointLabelFontSize,this.pointLabelFontStyle,this.pointLabelFontFamily),t.fillStyle=this.pointLabelFontColor;var o=this.labels.length,a=this.labels.length/2,h=a/2,l=h>i||i>o-h,r=i===h||i===o-h;t.textAlign=0===i?"center":i===a?"center":a>i?"left":"right",t.textBaseline=r?"middle":l?"bottom":"top",t.fillText(this.labels[i],s.x,s.y)}}}}}),s.addEvent(window,"resize",function(){var t;return function(){clearTimeout(t),t=setTimeout(function(){n(e.instances,function(t){t.options.responsive&&t.resize(t.render,!0)})},50)}}()),p?define(function(){return e}):"object"==typeof module&&module.exports&&(module.exports=e),t.Chart=e,e.noConflict=function(){return t.Chart=i,e}}).call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleBeginAtZero:!0,scaleShowGridLines:!0,scaleGridLineColor:"rgba(0,0,0,.05)",scaleGridLineWidth:1,scaleShowHorizontalLines:!0,scaleShowVerticalLines:!0,barShowStroke:!0,barStrokeWidth:2,barValueSpacing:5,barDatasetSpacing:1,legendTemplate:'
    <% for (var i=0; i
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>
'};i.Type.extend({name:"Bar",defaults:s,initialize:function(t){var s=this.options;this.ScaleClass=i.Scale.extend({offsetGridLines:!0,calculateBarX:function(t,i,e){var n=this.calculateBaseWidth(),o=this.calculateX(e)-n/2,a=this.calculateBarWidth(t);return o+a*i+i*s.barDatasetSpacing+a/2},calculateBaseWidth:function(){return this.calculateX(1)-this.calculateX(0)-2*s.barValueSpacing},calculateBarWidth:function(t){var i=this.calculateBaseWidth()-(t-1)*s.barDatasetSpacing;return i/t}}),this.datasets=[],this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getBarsAtEvent(t):[];this.eachBars(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),this.BarClass=i.Rectangle.extend({strokeWidth:this.options.barStrokeWidth,showStroke:this.options.barShowStroke,ctx:this.chart.ctx}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,bars:[]};this.datasets.push(s),e.each(i.data,function(e,n){s.bars.push(new this.BarClass({value:e,label:t.labels[n],datasetLabel:i.label,strokeColor:i.strokeColor,fillColor:i.fillColor,highlightFill:i.highlightFill||i.fillColor,highlightStroke:i.highlightStroke||i.strokeColor}))},this)},this),this.buildScale(t.labels),this.BarClass.prototype.base=this.scale.endPoint,this.eachBars(function(t,i,s){e.extend(t,{width:this.scale.calculateBarWidth(this.datasets.length),x:this.scale.calculateBarX(this.datasets.length,s,i),y:this.scale.endPoint}),t.save()},this),this.render()},update:function(){this.scale.update(),e.each(this.activeElements,function(t){t.restore(["fillColor","strokeColor"])}),this.eachBars(function(t){t.save()}),this.render()},eachBars:function(t){e.each(this.datasets,function(i,s){e.each(i.bars,t,this,s)},this)},getBarsAtEvent:function(t){for(var i,s=[],n=e.getRelativePosition(t),o=function(t){s.push(t.bars[i])},a=0;a<% for (var i=0; i
  • <%if(segments[i].label){%><%=segments[i].label%><%}%>
  • <%}%>'};i.Type.extend({name:"Doughnut",defaults:s,initialize:function(t){this.segments=[],this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,this.SegmentArc=i.Arc.extend({ctx:this.chart.ctx,x:this.chart.width/2,y:this.chart.height/2}),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.calculateTotal(t),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({value:t.value,outerRadius:this.options.animateScale?0:this.outerRadius,innerRadius:this.options.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout,fillColor:t.color,highlightColor:t.highlight||t.color,showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,startAngle:1.5*Math.PI,circumference:this.options.animateRotate?0:this.calculateCircumference(t.value),label:t.label})),e||(this.reflow(),this.update())},calculateCircumference:function(t){return 2*Math.PI*(Math.abs(t)/this.total)},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=Math.abs(t.value)},this)},update:function(){this.calculateTotal(this.segments),e.each(this.activeElements,function(t){t.restore(["fillColor"])}),e.each(this.segments,function(t){t.save()}),this.render()},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.outerRadius=(e.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2,e.each(this.segments,function(t){t.update({outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout})},this)},draw:function(t){var i=t?t:1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.calculateCircumference(t.value),outerRadius:this.outerRadius,innerRadius:this.outerRadius/100*this.options.percentageInnerCutout},i),t.endAngle=t.startAngle+t.circumference,t.draw(),0===e&&(t.startAngle=1.5*Math.PI),e<% for (var i=0; i
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>'};i.Type.extend({name:"Line",defaults:s,initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx,inRange:function(t){return Math.pow(t-this.x,2)0&&ithis.scale.endPoint?t.controlPoints.outer.y=this.scale.endPoint:t.controlPoints.outer.ythis.scale.endPoint?t.controlPoints.inner.y=this.scale.endPoint:t.controlPoints.inner.y0&&(s.lineTo(h[h.length-1].x,this.scale.endPoint),s.lineTo(h[0].x,this.scale.endPoint),s.fillStyle=t.fillColor,s.closePath(),s.fill()),e.each(h,function(t){t.draw()})},this)}})}.call(this),function(){"use strict";var t=this,i=t.Chart,e=i.helpers,s={scaleShowLabelBackdrop:!0,scaleBackdropColor:"rgba(255,255,255,0.75)",scaleBeginAtZero:!0,scaleBackdropPaddingY:2,scaleBackdropPaddingX:2,scaleShowLine:!0,segmentShowStroke:!0,segmentStrokeColor:"#fff",segmentStrokeWidth:2,animationSteps:100,animationEasing:"easeOutBounce",animateRotate:!0,animateScale:!1,legendTemplate:'
      <% for (var i=0; i
    • <%if(segments[i].label){%><%=segments[i].label%><%}%>
    • <%}%>
    '};i.Type.extend({name:"PolarArea",defaults:s,initialize:function(t){this.segments=[],this.SegmentArc=i.Arc.extend({showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,ctx:this.chart.ctx,innerRadius:0,x:this.chart.width/2,y:this.chart.height/2}),this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,lineArc:!0,width:this.chart.width,height:this.chart.height,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,valuesCount:t.length}),this.updateScaleRange(t),this.scale.update(),e.each(t,function(t,i){this.addData(t,i,!0)},this),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getSegmentsAtEvent(t):[];e.each(this.segments,function(t){t.restore(["fillColor"])}),e.each(i,function(t){t.fillColor=t.highlightColor}),this.showTooltip(i)}),this.render()},getSegmentsAtEvent:function(t){var i=[],s=e.getRelativePosition(t);return e.each(this.segments,function(t){t.inRange(s.x,s.y)&&i.push(t)},this),i},addData:function(t,i,e){var s=i||this.segments.length;this.segments.splice(s,0,new this.SegmentArc({fillColor:t.color,highlightColor:t.highlight||t.color,label:t.label,value:t.value,outerRadius:this.options.animateScale?0:this.scale.calculateCenterOffset(t.value),circumference:this.options.animateRotate?0:this.scale.getCircumference(),startAngle:1.5*Math.PI})),e||(this.reflow(),this.update())},removeData:function(t){var i=e.isNumber(t)?t:this.segments.length-1;this.segments.splice(i,1),this.reflow(),this.update()},calculateTotal:function(t){this.total=0,e.each(t,function(t){this.total+=t.value},this),this.scale.valuesCount=this.segments.length},updateScaleRange:function(t){var i=[];e.each(t,function(t){i.push(t.value)});var s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s,{size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2})},update:function(){this.calculateTotal(this.segments),e.each(this.segments,function(t){t.save()}),this.reflow(),this.render()},reflow:function(){e.extend(this.SegmentArc.prototype,{x:this.chart.width/2,y:this.chart.height/2}),this.updateScaleRange(this.segments),this.scale.update(),e.extend(this.scale,{xCenter:this.chart.width/2,yCenter:this.chart.height/2}),e.each(this.segments,function(t){t.update({outerRadius:this.scale.calculateCenterOffset(t.value)})},this)},draw:function(t){var i=t||1;this.clear(),e.each(this.segments,function(t,e){t.transition({circumference:this.scale.getCircumference(),outerRadius:this.scale.calculateCenterOffset(t.value)},i),t.endAngle=t.startAngle+t.circumference,0===e&&(t.startAngle=1.5*Math.PI),e<% for (var i=0; i
  • <%if(datasets[i].label){%><%=datasets[i].label%><%}%>
  • <%}%>'},initialize:function(t){this.PointClass=i.Point.extend({strokeWidth:this.options.pointDotStrokeWidth,radius:this.options.pointDotRadius,display:this.options.pointDot,hitDetectionRadius:this.options.pointHitDetectionRadius,ctx:this.chart.ctx}),this.datasets=[],this.buildScale(t),this.options.showTooltips&&e.bindEvents(this,this.options.tooltipEvents,function(t){var i="mouseout"!==t.type?this.getPointsAtEvent(t):[];this.eachPoints(function(t){t.restore(["fillColor","strokeColor"])}),e.each(i,function(t){t.fillColor=t.highlightFill,t.strokeColor=t.highlightStroke}),this.showTooltip(i)}),e.each(t.datasets,function(i){var s={label:i.label||null,fillColor:i.fillColor,strokeColor:i.strokeColor,pointColor:i.pointColor,pointStrokeColor:i.pointStrokeColor,points:[]};this.datasets.push(s),e.each(i.data,function(e,n){var o;this.scale.animation||(o=this.scale.getPointPosition(n,this.scale.calculateCenterOffset(e))),s.points.push(new this.PointClass({value:e,label:t.labels[n],datasetLabel:i.label,x:this.options.animation?this.scale.xCenter:o.x,y:this.options.animation?this.scale.yCenter:o.y,strokeColor:i.pointStrokeColor,fillColor:i.pointColor,highlightFill:i.pointHighlightFill||i.pointColor,highlightStroke:i.pointHighlightStroke||i.pointStrokeColor}))},this)},this),this.render()},eachPoints:function(t){e.each(this.datasets,function(i){e.each(i.points,t,this)},this)},getPointsAtEvent:function(t){var i=e.getRelativePosition(t),s=e.getAngleFromPoint({x:this.scale.xCenter,y:this.scale.yCenter},i),n=2*Math.PI/this.scale.valuesCount,o=Math.round((s.angle-1.5*Math.PI)/n),a=[];return(o>=this.scale.valuesCount||0>o)&&(o=0),s.distance<=this.scale.drawingArea&&e.each(this.datasets,function(t){a.push(t.points[o])}),a},buildScale:function(t){this.scale=new i.RadialScale({display:this.options.showScale,fontStyle:this.options.scaleFontStyle,fontSize:this.options.scaleFontSize,fontFamily:this.options.scaleFontFamily,fontColor:this.options.scaleFontColor,showLabels:this.options.scaleShowLabels,showLabelBackdrop:this.options.scaleShowLabelBackdrop,backdropColor:this.options.scaleBackdropColor,backdropPaddingY:this.options.scaleBackdropPaddingY,backdropPaddingX:this.options.scaleBackdropPaddingX,lineWidth:this.options.scaleShowLine?this.options.scaleLineWidth:0,lineColor:this.options.scaleLineColor,angleLineColor:this.options.angleLineColor,angleLineWidth:this.options.angleShowLineOut?this.options.angleLineWidth:0,pointLabelFontColor:this.options.pointLabelFontColor,pointLabelFontSize:this.options.pointLabelFontSize,pointLabelFontFamily:this.options.pointLabelFontFamily,pointLabelFontStyle:this.options.pointLabelFontStyle,height:this.chart.height,width:this.chart.width,xCenter:this.chart.width/2,yCenter:this.chart.height/2,ctx:this.chart.ctx,templateString:this.options.scaleLabel,labels:t.labels,valuesCount:t.datasets[0].data.length}),this.scale.setScaleSize(),this.updateScaleRange(t.datasets),this.scale.buildYLabels()},updateScaleRange:function(t){var i=function(){var i=[];return e.each(t,function(t){t.data?i=i.concat(t.data):e.each(t.points,function(t){i.push(t.value)})}),i}(),s=this.options.scaleOverride?{steps:this.options.scaleSteps,stepValue:this.options.scaleStepWidth,min:this.options.scaleStartValue,max:this.options.scaleStartValue+this.options.scaleSteps*this.options.scaleStepWidth}:e.calculateScaleRange(i,e.min([this.chart.width,this.chart.height])/2,this.options.scaleFontSize,this.options.scaleBeginAtZero,this.options.scaleIntegersOnly);e.extend(this.scale,s)},addData:function(t,i){this.scale.valuesCount++,e.each(t,function(t,e){var s=this.scale.getPointPosition(this.scale.valuesCount,this.scale.calculateCenterOffset(t));this.datasets[e].points.push(new this.PointClass({value:t,label:i,x:s.x,y:s.y,strokeColor:this.datasets[e].pointStrokeColor,fillColor:this.datasets[e].pointColor}))},this),this.scale.labels.push(i),this.reflow(),this.update()},removeData:function(){this.scale.valuesCount--,this.scale.labels.shift(),e.each(this.datasets,function(t){t.points.shift()},this),this.reflow(),this.update()},update:function(){this.eachPoints(function(t){t.save()}),this.reflow(),this.render()},reflow:function(){e.extend(this.scale,{width:this.chart.width,height:this.chart.height,size:e.min([this.chart.width,this.chart.height]),xCenter:this.chart.width/2,yCenter:this.chart.height/2}),this.updateScaleRange(this.datasets),this.scale.setScaleSize(),this.scale.buildYLabels()},draw:function(t){var i=t||1,s=this.chart.ctx;this.clear(),this.scale.draw(),e.each(this.datasets,function(t){e.each(t.points,function(t,e){t.hasValue()&&t.transition(this.scale.getPointPosition(e,this.scale.calculateCenterOffset(t.value)),i)},this),s.lineWidth=this.options.datasetStrokeWidth,s.strokeStyle=t.strokeColor,s.beginPath(),e.each(t.points,function(t,i){0===i?s.moveTo(t.x,t.y):s.lineTo(t.x,t.y)},this),s.closePath(),s.stroke(),s.fillStyle=t.fillColor,s.fill(),e.each(t.points,function(t){t.hasValue()&&t.draw()})},this)}})}.call(this); \ No newline at end of file diff --git a/library/Chart.js-1.0.2/LICENSE.md b/library/Chart.js-1.0.2/LICENSE.md new file mode 100644 index 000000000..e10bc0ff1 --- /dev/null +++ b/library/Chart.js-1.0.2/LICENSE.md @@ -0,0 +1,7 @@ +Copyright (c) 2013-2015 Nick Downie + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/library/Chart.js-1.0.2/README.md b/library/Chart.js-1.0.2/README.md new file mode 100644 index 000000000..7c4fa8bf6 --- /dev/null +++ b/library/Chart.js-1.0.2/README.md @@ -0,0 +1,20 @@ +# Chart.js + +[![Build Status](https://travis-ci.org/nnnick/Chart.js.svg?branch=master)](https://travis-ci.org/nnnick/Chart.js) [![Code Climate](https://codeclimate.com/github/nnnick/Chart.js/badges/gpa.svg)](https://codeclimate.com/github/nnnick/Chart.js) + + +*Simple HTML5 Charts using the canvas element* [chartjs.org](http://www.chartjs.org) + +## Documentation + +You can find documentation at [chartjs.org/docs](http://www.chartjs.org/docs/). The markdown files that build the site are available under `/docs`. Please note - in some of the json examples of configuration you might notice some liquid tags - this is just for the generating the site html, please disregard. + +## Bugs, issues and contributing + +Before submitting an issue or a pull request to the project, please take a moment to look over the [contributing guidelines](https://github.com/nnnick/Chart.js/blob/master/CONTRIBUTING.md) first. + +For support using Chart.js, please post questions with the [`chartjs` tag on Stack Overflow](http://stackoverflow.com/questions/tagged/chartjs). + +## License + +Chart.js is available under the [MIT license](http://opensource.org/licenses/MIT). diff --git a/view/templates/admin_federation.tpl b/view/templates/admin_federation.tpl index 1fe8d2710..2cc12ad0a 100644 --- a/view/templates/admin_federation.tpl +++ b/view/templates/admin_federation.tpl @@ -1,4 +1,4 @@ - +

    {{$title}} - {{$page}}

    From 5099f43c423909e257f601186b0f6697f9d4a928 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 4 Jan 2016 09:54:12 +0100 Subject: [PATCH 14/25] only show platforms with counts > 0 --- view/templates/admin_federation.tpl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/view/templates/admin_federation.tpl b/view/templates/admin_federation.tpl index 2cc12ad0a..cd452c666 100644 --- a/view/templates/admin_federation.tpl +++ b/view/templates/admin_federation.tpl @@ -9,7 +9,9 @@

    {{$legendtext}}

      {{foreach $counts as $c}} + {{if $c[0]['count(*)'] > 0}}
    • {{$c[0]['platform']}} ({{$c[0]['count(*)']}})
    • + {{/if}} {{/foreach}}

    @@ -30,6 +32,7 @@ document.getElementById('FederationLegend').innerHTML = myDoughnutChart.generate {{foreach $counts as $c}} +{{if $c[0]['count(*)'] > 0}} +{{/if}} {{/foreach}}
    {{$c[0]['platform']}} {{$c[0]['count(*)']}} @@ -56,5 +59,6 @@ var my{{$c[2]}}DoughnutChart = new Chart(ctx).Doughnut({{$c[2]}}data,
    From e3fd0a269b8ab29c2af2fb84a2714d92ee50681d Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Mon, 4 Jan 2016 09:55:30 +0100 Subject: [PATCH 15/25] some doc strings, sort platforms for federation stats page --- mod/admin.php | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 616e8fcd4..34e9b5c03 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -238,7 +238,7 @@ function admin_content(&$a) { * * The returned string contains the HTML code of the subpage for display. * - * @brief subpage with some stats about "the federstion" network + * @brief subpage with some stats about "the federation" network * @param App $a * @return string */ @@ -249,7 +249,9 @@ function admin_page_federation(&$a) { // We are looking for the following platforms in the DB, "Red" should find // all variants of that platform ID string as the q() function is stripping // off one % two of them are needed in the query - $platforms = array('Diaspora', 'Friendica', '%%red%%', 'Hubzilla', 'GNU Social', 'StatusNet'); + // Add more platforms if you like, when one returns 0 known nodes it is not + // displayed on the stats page. + $platforms = array('Friendica', 'Diaspora', '%%red%%', 'Hubzilla', 'GNU Social', 'StatusNet'); $counts = array(); foreach ($platforms as $p) { // get a total count for the platform, the name and version of the @@ -333,6 +335,7 @@ function admin_page_federation(&$a) { '$counts' => $counts, '$version' => FRIENDICA_VERSION, '$legendtext' => t('Currently this node is aware of nodes from the following platforms:'), + '$baseurl' => $a->get_baseurl(), )); } /** @@ -743,6 +746,9 @@ function admin_page_site_post(&$a){ /** * @brief generate Admin Site subpage + * + * This function generates the main configuration page of the admin panel. + * * @param App $a * @return string */ @@ -955,6 +961,13 @@ function admin_page_site(&$a) { /** * @brief generates admin panel subpage for DB syncronization + * + * This page checks if the database of friendica is in sync with the specs. + * Should this not be the case, it attemps to sync the structure and notifies + * the admin if the automatic process was failing. + * + * The returned string holds the HTML code of the page. + * * @param App $a * @return string **/ @@ -1133,6 +1146,13 @@ function admin_page_users_post(&$a){ /** * @brief admin panel subpage for User management + * + * This function generates the admin panel page for user management of the + * node. It offers functionality to add/block/delete users and offers some + * statistics about the userbase. + * + * The returned string holds the HTML code of the page. + * * @param App $a * @return string */ From 7a7ffb2299e6614c00545a35f3d1a844bed52982 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 10 Jan 2016 13:04:07 +0100 Subject: [PATCH 16/25] issue 2240 when no addon are installed hint the location of sources in the admin panel --- mod/admin.php | 2 ++ view/templates/admin_plugins.tpl | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/mod/admin.php b/mod/admin.php index 34e9b5c03..16c3a23d4 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -1441,6 +1441,8 @@ function admin_page_plugins(&$a){ '$baseurl' => $a->get_baseurl(true), '$function' => 'plugins', '$plugins' => $plugins, + '$pcount' => count($plugins), + '$noplugshint' => sprintf( t('There are currently no plugins available on your node. You can find the official plugin repository at %1$s and might find other interesting plugins in the open plugin registry at %2$s'), 'https://github.com/friendica/friendica-addons', 'http://addons.friendi.ca'), '$form_security_token' => get_form_security_token("admin_themes"), )); } diff --git a/view/templates/admin_plugins.tpl b/view/templates/admin_plugins.tpl index 6caa04a3a..fb1f26a90 100644 --- a/view/templates/admin_plugins.tpl +++ b/view/templates/admin_plugins.tpl @@ -2,6 +2,11 @@

    {{$title}} - {{$page}}

    {{$reload}} + {{if $pcount eq 0}} +
    + {{$noplugshint}} +
    + {{else}}
      {{foreach $plugins as $p}}
    • @@ -13,4 +18,5 @@
    • {{/foreach}}
    + {{/if}}
    From 629c69d9ddd27806d56cccac872c22d730360d4d Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Fri, 15 Jan 2016 19:35:45 +0100 Subject: [PATCH 17/25] only show the reload link if plugins are found --- view/templates/admin_plugins.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/view/templates/admin_plugins.tpl b/view/templates/admin_plugins.tpl index fb1f26a90..75565dd2e 100644 --- a/view/templates/admin_plugins.tpl +++ b/view/templates/admin_plugins.tpl @@ -1,12 +1,12 @@

    {{$title}} - {{$page}}

    - {{$reload}} {{if $pcount eq 0}} -
    +
    {{$noplugshint}}
    {{else}} + {{$reload}}
      {{foreach $plugins as $p}}
    • From 11aa76c270e616862728107c0612767040e74d2a Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Fri, 15 Jan 2016 20:03:41 +0100 Subject: [PATCH 18/25] Theme listing works again, added some docs for theme and plugin listing funkctions --- mod/admin.php | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 16c3a23d4..a72eed9e3 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -1314,6 +1314,15 @@ function admin_page_users(&$a){ /** * @brief Plugins admin page + * + * This function generates the admin panel page for managing plugins on the + * friendica node. + * + * The template used for displaying the list of plugins and the details of the + * plugin are the same as used for the templates. + * + * The returned string returned hulds the HTML code of the page. + * * @param App $a * @return string */ @@ -1507,7 +1516,15 @@ function rebuild_theme_table($themes) { /** - * Themes admin page + * @brief Themes admin page + * + * This function generates the admin panel page to control the themes available + * on the friendica node. + * + * The template used for displaying the list of themes and the details of the + * themes are the same as used for the plugins. + * + * The returned string contains the HTML code of the admin panel page. * * @param App $a * @return string @@ -1619,6 +1636,7 @@ function admin_page_themes(&$a){ if(! stristr($screenshot[0],$theme)) $screenshot = null; + $t = get_markup_template("admin_plugins_details.tpl"); return replace_macros($t, array( '$title' => t('Administration'), @@ -1626,7 +1644,6 @@ function admin_page_themes(&$a){ '$toggle' => t('Toggle'), '$settings' => t('Settings'), '$baseurl' => $a->get_baseurl(true), - '$plugin' => $theme, '$status' => $status, '$action' => $action, @@ -1679,6 +1696,8 @@ function admin_page_themes(&$a){ '$baseurl' => $a->get_baseurl(true), '$function' => 'themes', '$plugins' => $xthemes, + '$pcount' => count($themes), + '$noplugshint' => sprintf(t('No themes found on the system. They should be paced in %1$s'),'/view/themes'), '$experimental' => t('[Experimental]'), '$unsupported' => t('[Unsupported]'), '$form_security_token' => get_form_security_token("admin_themes"), From 954e4f2754e4e497a313d0b80ce528318df52731 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Fri, 15 Jan 2016 20:40:01 +0100 Subject: [PATCH 19/25] more docs --- mod/admin.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index a72eed9e3..f3fb56f60 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -1316,7 +1316,9 @@ function admin_page_users(&$a){ * @brief Plugins admin page * * This function generates the admin panel page for managing plugins on the - * friendica node. + * friendica node. If a plugin name is given a single page showing the details + * for this addon is generated. If no name is given, a list of available + * plugins is shown. * * The template used for displaying the list of plugins and the details of the * plugin are the same as used for the templates. @@ -1519,7 +1521,9 @@ function rebuild_theme_table($themes) { * @brief Themes admin page * * This function generates the admin panel page to control the themes available - * on the friendica node. + * on the friendica node. If the name of a theme is given as parameter a page + * with the details for the theme is shown. Otherwise a list of available + * themes is generated. * * The template used for displaying the list of themes and the details of the * themes are the same as used for the plugins. From 20fe67f3782e6ad90fed64d70f752d6524d20157 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 16 Jan 2016 11:52:21 +0100 Subject: [PATCH 20/25] removed remote update functionality from admin panel --- include/remoteupdate.php | 261 -------------------------- mod/admin.php | 59 ------ view/templates/admin_remoteupdate.tpl | 99 ---------- 3 files changed, 419 deletions(-) delete mode 100644 include/remoteupdate.php delete mode 100644 view/templates/admin_remoteupdate.tpl diff --git a/include/remoteupdate.php b/include/remoteupdate.php deleted file mode 100644 index 9effc9b6e..000000000 --- a/include/remoteupdate.php +++ /dev/null @@ -1,261 +0,0 @@ -tags as $i=>$v){ - $i = (float)$i; - if ($i>$tag) $tag=$i; - } - - if ($tag==0.0) return false; - $f = fetch_url("https://raw.github.com/".F9KREPO."/".$tag."/boot.php","r"); - preg_match("|'FRIENDICA_VERSION', *'([^']*)'|", $f, $m); - $version = $m[1]; - - $lv = explode(".", FRIENDICA_VERSION); - $rv = explode(".",$version); - foreach($lv as $i=>$v){ - if ((int)$lv[$i] < (int)$rv[$i]) { - return array($tag, $version, "https://github.com/friendica/friendica/zipball/".$tag); - break; - } - } - return false; -} -function canWeWrite(){ - $bd = dirname(dirname(__file__)); - return is_writable( $bd."/boot.php" ); -} - -function out($txt){ echo "Ā§".$txt."Ā§"; ob_end_flush(); flush();} - -function up_count($path){ - - $file_count = 0; - - $dir_handle = opendir($path); - - if (!$dir_handle) return -1; - - while ($file = readdir($dir_handle)) { - - if ($file == '.' || $file == '..') continue; - $file_count++; - - if (is_dir($path . $file)){ - $file_count += up_count($path . $file . DIRECTORY_SEPARATOR); - } - - } - - closedir($dir_handle); - - return $file_count; -} - - - -function up_unzip($file, $folder="/tmp"){ - $folder.="/"; - $zip = zip_open($file); - if ($zip) { - while ($zip_entry = zip_read($zip)) { - $zip_entry_name = zip_entry_name($zip_entry); - if (substr($zip_entry_name,strlen($zip_entry_name)-1,1)=="/"){ - mkdir($folder.$zip_entry_name,0777, true); - } else { - $fp = fopen($folder.$zip_entry_name, "w"); - if (zip_entry_open($zip, $zip_entry, "r")) { - $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)); - fwrite($fp,"$buf"); - zip_entry_close($zip_entry); - fclose($fp); - } - } - } - zip_close($zip); - } -} - -/** - * Walk recoursively in a folder and call a callback function on every - * dir entry. - * args: - * $dir string base dir to walk - * $callback function callback function - * $sort int 0: ascending, 1: descending - * $cb_argv any extra value passed to callback - * - * callback signature: - * function name($fn, $dir [, $argv]) - * $fn string full dir entry name - * $dir string start dir path - * $argv any user value to callback - * - */ -function up_walktree($dir, $callback=Null, $sort=0, $cb_argv=Null , $startdir=Null){ - if (is_null($callback)) return; - if (is_null($startdir)) $startdir = $dir; - $res = scandir($dir, $sort); - foreach($res as $i=>$v){ - if ($v!="." && $v!=".."){ - $fn = $dir."/".$v; - if ($sort==0) $callback($fn, $startdir, $cb_argv); - if (is_dir($fn)) up_walktree($fn, $callback, $sort, $cb_argv, $startdir); - if ($sort==1) $callback($fn, $startdir, $cb_argv); - } - } - -} - -function up_copy($fn, $dir){ - global $up_countfiles, $up_totalfiles, $up_lastp; - $up_countfiles++; $prc=(int)(((float)$up_countfiles/(float)$up_totalfiles)*100); - - if (strpos($fn, ".gitignore")>-1 || strpos($fn, ".htaccess")>-1) return; - $ddest = dirname(dirname(__file__)); - $fd = str_replace($dir, $ddest, $fn); - - if (is_dir($fn) && !is_dir($fd)) { - $re=mkdir($fd,0777,true); - } - if (!is_dir($fn)){ - $re=copy($fn, $fd); - } - - if ($re===false) { - out("ERROR. Abort."); - killme(); - } - out("copy@Copy@$prc%"); -} - -function up_ftp($fn, $dir, $argv){ - global $up_countfiles, $up_totalfiles, $up_lastp; - $up_countfiles++; $prc=(int)(((float)$up_countfiles/(float)$up_totalfiles)*100); - - if (strpos($fn, ".gitignore")>-1 || strpos($fn, ".htaccess")>-1) return; - - list($ddest, $conn_id) = $argv; - $l = strlen($ddest)-1; - if (substr($ddest,$l,1)=="/") $ddest = substr($ddest,0,$l); - $fd = str_replace($dir, $ddest, $fn); - - if (is_dir($fn)){ - if (ftp_nlist($conn_id, $fd)===false) { - $ret = ftp_mkdir($conn_id, $fd); - } else { - $ret=true; - } - } else { - $ret = ftp_put($conn_id, $fd, $fn, FTP_BINARY); - } - if (!$ret) { - out("ERROR. Abort."); - killme(); - } - out("copy@Copy@$prc%"); -} - -function up_rm($fn, $dir){ - if (is_dir($fn)){ - rmdir($fn); - } else { - unlink($fn); - } -} - -function up_dlfile($url, $file) { - $in = fopen ($url, "r"); - $out = fopen ($file, "w"); - - $fs = filesize($url); - - - if (!$in || !$out) return false; - - $s=0; $count=0; - while (!feof ($in)) { - $line = fgets ($in, 1024); - fwrite( $out, $line); - - $count++; $s += strlen($line); - if ($count==50){ - $count=0; - $sp=$s/1024.0; $ex="Kb"; - if ($sp>1024) { $sp=$sp/1024; $ex="Mb"; } - if ($sp>1024) { $sp=$sp/1024; $ex="Gb"; } - $sp = ((int)($sp*100))/100; - out("dwl@Download@".$sp.$ex); - } - } - fclose($in); - return true; -} - -function doUpdate($remotefile, $ftpdata=false){ - global $up_totalfiles; - - - $localtmpfile = tempnam("/tmp", "fk"); - out("dwl@Download@starting..."); - $rt= up_dlfile($remotefile, $localtmpfile); - if ($rt==false || filesize($localtmpfile)==0){ - out("dwl@Download@ERROR."); - unlink($localtmpfile); - return; - } - out("dwl@Download@Ok."); - - out("unzip@Unzip@"); - $tmpdirname = $localfile."ex"; - mkdir($tmpdirname); - up_unzip($localtmpfile, $tmpdirname); - $basedir = glob($tmpdirname."/*"); $basedir=$basedir[0]; - out ("unzip@Unzip@Ok."); - - $up_totalfiles = up_count($basedir."/"); - - if (canWeWrite()){ - out("copy@Copy@"); - up_walktree($basedir, 'up_copy'); - } - if ($ftpdata!==false && is_array($ftpdata) && $ftpdata['ftphost']!="" ){ - out("ftpcon@Connect to FTP@"); - $conn_id = ftp_connect($ftpdata['ftphost']); - $login_result = ftp_login($conn_id, $ftpdata['ftpuser'], $ftpdata['ftppwd']); - - if ((!$conn_id) || (!$login_result)) { - out("ftpcon@Connect to FTP@FAILED"); - up_clean($tmpdirname, $localtmpfile); - return; - } else { - out("ftpcon@Connect to FTP@Ok."); - } - out("copy@Copy@"); - up_walktree($basedir, 'up_ftp', 0, array( $ftpdata['ftppath'], $conn_id)); - - ftp_close($conn_id); - } - - up_clean($tmpdirname, $localtmpfile); - -} - -function up_clean($tmpdirname, $localtmpfile){ - out("clean@Clean up@"); - unlink($localtmpfile); - up_walktree($tmpdirname, 'up_rm', 1); - rmdir($tmpdirname); - out("clean@Clean up@Ok."); -} diff --git a/mod/admin.php b/mod/admin.php index f3fb56f60..52367e8a2 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -3,7 +3,6 @@ /** * Friendica admin */ -require_once("include/remoteupdate.php"); require_once("include/enotify.php"); require_once("include/text.php"); @@ -1867,61 +1866,3 @@ function admin_page_viewlogs(&$a){ '$logname' => get_config('system','logfile') )); } -/** - * @param App $a - */ -function admin_page_remoteupdate_post(&$a) { - // this function should be called via ajax post - if(!is_site_admin()) { - return; - } - - - if (x($_POST,'remotefile') && $_POST['remotefile']!=""){ - $remotefile = $_POST['remotefile']; - $ftpdata = (x($_POST['ftphost'])?$_POST:false); - doUpdate($remotefile, $ftpdata); - } else { - echo "No remote file to download. Abort!"; - } - - killme(); -} - -/** - * @param App $a - * @return string - */ -function admin_page_remoteupdate(&$a) { - if(!is_site_admin()) { - return login(false); - } - - $canwrite = canWeWrite(); - $canftp = function_exists('ftp_connect'); - - $needupdate = true; - $u = checkUpdate(); - if (!is_array($u)){ - $needupdate = false; - $u = array('','',''); - } - - $tpl = get_markup_template("admin_remoteupdate.tpl"); - return replace_macros($tpl, array( - '$baseurl' => $a->get_baseurl(true), - '$submit' => t("Update now"), - '$close' => t("Close"), - '$localversion' => FRIENDICA_VERSION, - '$remoteversion' => $u[1], - '$needupdate' => $needupdate, - '$canwrite' => $canwrite, - '$canftp' => $canftp, - '$ftphost' => array('ftphost', t("FTP Host"), '',''), - '$ftppath' => array('ftppath', t("FTP Path"), '/',''), - '$ftpuser' => array('ftpuser', t("FTP User"), '',''), - '$ftppwd' => array('ftppwd', t("FTP Password"), '',''), - '$remotefile'=>array('remotefile','', $u['2'],''), - )); - -} diff --git a/view/templates/admin_remoteupdate.tpl b/view/templates/admin_remoteupdate.tpl deleted file mode 100644 index c3e85f2e8..000000000 --- a/view/templates/admin_remoteupdate.tpl +++ /dev/null @@ -1,99 +0,0 @@ - - - - -
      -
      Your version:
      {{$localversion}}
      -{{if $needupdate}} -
      New version:
      {{$remoteversion}}
      - -
      - - - {{if $canwrite}} -
      - {{else}} -

      Your friendica installation is not writable by web server.

      - {{if $canftp}} -

      You can try to update via FTP

      - {{include file="field_input.tpl" field=$ftphost}} - {{include file="field_input.tpl" field=$ftppath}} - {{include file="field_input.tpl" field=$ftpuser}} - {{include file="field_password.tpl" field=$ftppwd}} -
      - {{/if}} - {{/if}} -
      -{{else}} -

      No updates

      -{{/if}} -
      From 7f80de6db8af7a50b4d99ebdac1cf064e9b669c3 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 16 Jan 2016 12:45:48 +0100 Subject: [PATCH 21/25] removed calls to the remote_update funcions --- mod/admin.php | 7 ------- 1 file changed, 7 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 52367e8a2..2c519729e 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -97,9 +97,6 @@ function admin_post(&$a){ case 'dbsync': admin_page_dbsync_post($a); break; - case 'update': - admin_page_remoteupdate_post($a); - break; } } @@ -142,7 +139,6 @@ function admin_content(&$a) { 'dbsync' => Array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync"), 'queue' => Array($a->get_baseurl(true)."/admin/queue/", t('Inspect Queue'), "queue"), 'federation' => Array($a->get_baseurl(true)."/admin/federation/", t('Federation Statistics'), "federation"), - //'update' => Array($a->get_baseurl(true)."/admin/update/", t("Software Update") , "update") ); /* get plugins admin page */ @@ -203,9 +199,6 @@ function admin_content(&$a) { case 'dbsync': $o = admin_page_dbsync($a); break; - case 'update': - $o = admin_page_remoteupdate($a); - break; case 'queue': $o = admin_page_queue($a); break; From 8730c72156a9b605eac97a4ac4822529733a733d Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 16 Jan 2016 13:45:21 +0100 Subject: [PATCH 22/25] removed commented out code, beautification of MySQL statements --- mod/admin.php | 54 +++++++++++---------------------------------------- 1 file changed, 11 insertions(+), 43 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index 2c519729e..a846ddb0e 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -248,15 +248,15 @@ function admin_page_federation(&$a) { foreach ($platforms as $p) { // get a total count for the platform, the name and version of the // highest version and the protocol tpe - $c = q('select count(*), platform, network, version from gserver - where platform like "'.$p.'" and last_contact > last_failure - order by version asc;'); + $c = q('SELECT count(*) AS total, platform, network, version FROM gserver + WHERE platform LIKE "%s" AND last_contact > last_failure + ORDER BY version ASC;', $p); // what versions for that platform do we know at all? // again only the active nodes - $v = q('select count(*), version from gserver - where last_contact > last_failure and platform like "'.$p.'" - group by version - order by version;'); + $v = q('SELECT count(*) AS total, version FROM gserver + WHERE last_contact > last_failure AND platform LIKE "%s" + GROUP BY version + ORDER BY version;', $p); // // clean up version numbers // @@ -267,7 +267,7 @@ function admin_page_federation(&$a) { $newV = array(); $newVv = array(); foreach($v as $vv) { - $newVC = $vv['count(*)']; + $newVC = $vv['total']; $newVV = $vv['version']; $posDash = strpos($newVV, '-'); if ($posDash) @@ -280,7 +280,7 @@ function admin_page_federation(&$a) { } } foreach ($newV as $key => $value) { - array_push($newVv, array('count(*)'=>$value, 'version'=>$key)); + array_push($newVv, array('total'=>$value, 'version'=>$key)); } $v = $newVv; } @@ -291,7 +291,7 @@ function admin_page_federation(&$a) { $newV = array(); $newVv = array(); foreach ($v as $vv) { - $newVC = $vv['count(*)']; + $newVC = $vv['total']; $newVV = $vv['version']; $lastDot = strrpos($newVV,'.'); $len = strlen($newVV)-1; @@ -305,7 +305,7 @@ function admin_page_federation(&$a) { } } foreach ($newV as $key => $value) { - array_push($newVv, array('count(*)'=>$value, 'version'=>$key)); + array_push($newVv, array('total'=>$value, 'version'=>$key)); } $v = $newVv; } @@ -1752,43 +1752,11 @@ function admin_page_logs(&$a){ $t = get_markup_template("admin_logs.tpl"); -/* $f = get_config('system','logfile'); - - $data = ''; - - if(!file_exists($f)) { - $data = t("Error trying to open $f log file.\r\n
      Check to see if file $f exist and is -readable."); - } - else { - $fp = fopen($f, 'r'); - if(!$fp) { - $data = t("Couldn't open $f log file.\r\n
      Check to see if file $f is readable."); - } - else { - $fstat = fstat($fp); - $size = $fstat['size']; - if($size != 0) - { - if($size > 5000000 || $size < 0) - $size = 5000000; - $seek = fseek($fp,0-$size,SEEK_END); - if($seek === 0) { - $data = escape_tags(fread($fp,$size)); - while(! feof($fp)) - $data .= escape_tags(fread($fp,4096)); - } - } - fclose($fp); - } - }*/ - return replace_macros($t, array( '$title' => t('Administration'), '$page' => t('Logs'), '$submit' => t('Save Settings'), '$clear' => t('Clear'), -// '$data' => $data, '$baseurl' => $a->get_baseurl(true), '$logname' => get_config('system','logfile'), From 75f005355077eda510e7446bddababa5dc06b347 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 16 Jan 2016 13:57:40 +0100 Subject: [PATCH 23/25] forgot the template --- view/templates/admin_federation.tpl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/view/templates/admin_federation.tpl b/view/templates/admin_federation.tpl index cd452c666..b1c56cd07 100644 --- a/view/templates/admin_federation.tpl +++ b/view/templates/admin_federation.tpl @@ -9,8 +9,8 @@

      {{$legendtext}}

        {{foreach $counts as $c}} - {{if $c[0]['count(*)'] > 0}} -
      • {{$c[0]['platform']}} ({{$c[0]['count(*)']}})
      • + {{if $c[0]['total'] > 0}} +
      • {{$c[0]['platform']}} ({{$c[0]['total']}})
      • {{/if}} {{/foreach}}
      @@ -19,7 +19,7 @@
        {{foreach $c[1] as $v}} -
      • {{if ($c[0]['platform']==='Friendica' and $version===$v['version']) }}{{$v['version']}}{{else}}{{$v['version']}}{{/if}} ({{$v['count(*)']}})
      • +
      • {{if ($c[0]['platform']==='Friendica' and $version===$v['version']) }}{{$v['version']}}{{else}}{{$v['version']}}{{/if}} ({{$v['total']}})
      • {{/foreach}}
      From 1770267934a71e30a5dc288711e64af7045718c9 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 16 Jan 2016 14:12:55 +0100 Subject: [PATCH 24/25] move @brief to the top of the doc block --- mod/admin.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mod/admin.php b/mod/admin.php index a846ddb0e..a035b746a 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -105,8 +105,10 @@ function admin_post(&$a){ } /** - * This function generates the content for the admin panel. * @brief generates content of the admin panel pages + * + * This function generates the content for the admin panel. + * * @param App $a * @return string */ @@ -222,6 +224,8 @@ function admin_content(&$a) { } /** + * @brief subpage with some stats about "the federation" network + * * This function generates the "Federation Statistics" subpage for the admin * panel. The page lists some numbers to the part of "The Federation" known to * the node. This data includes the different connected networks (e.g. @@ -230,7 +234,6 @@ function admin_content(&$a) { * * The returned string contains the HTML code of the subpage for display. * - * @brief subpage with some stats about "the federation" network * @param App $a * @return string */ From bcc8fa197199f83be4ffc1db4cc4b3300f98188e Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sat, 16 Jan 2016 16:22:02 +0100 Subject: [PATCH 25/25] regenerated messages.po file for translation work --- util/messages.po | 1597 ++++++++++++++++++++++------------------------ 1 file changed, 773 insertions(+), 824 deletions(-) diff --git a/util/messages.po b/util/messages.po index 71148e827..074055683 100644 --- a/util/messages.po +++ b/util/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-12-27 08:40+0100\n" +"POT-Creation-Date: 2016-01-16 16:21+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,15 +18,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" -#: mod/contacts.php:50 include/identity.php:389 +#: mod/contacts.php:50 include/identity.php:395 msgid "Network:" msgstr "" -#: mod/contacts.php:51 mod/contacts.php:986 mod/videos.php:37 -#: mod/viewcontacts.php:105 mod/dirfind.php:208 mod/network.php:596 +#: mod/contacts.php:51 mod/contacts.php:961 mod/videos.php:37 +#: mod/viewcontacts.php:105 mod/dirfind.php:214 mod/network.php:598 #: mod/allfriends.php:77 mod/match.php:82 mod/directory.php:172 #: mod/common.php:123 mod/suggest.php:95 mod/photos.php:41 -#: include/identity.php:295 +#: include/identity.php:298 msgid "Forum" msgstr "" @@ -37,7 +37,7 @@ msgid_plural "%d contacts edited" msgstr[0] "" msgstr[1] "" -#: mod/contacts.php:159 mod/contacts.php:382 +#: mod/contacts.php:159 mod/contacts.php:383 msgid "Could not access contact record." msgstr "" @@ -49,14 +49,14 @@ msgstr "" msgid "Contact updated." msgstr "" -#: mod/contacts.php:208 mod/dfrn_request.php:578 +#: mod/contacts.php:208 mod/dfrn_request.php:575 msgid "Failed to update contact record." msgstr "" -#: mod/contacts.php:364 mod/manage.php:96 mod/display.php:493 +#: mod/contacts.php:365 mod/manage.php:96 mod/display.php:504 #: mod/profile_photo.php:19 mod/profile_photo.php:175 mod/profile_photo.php:186 -#: mod/profile_photo.php:199 mod/ostatus_subscribe.php:9 mod/follow.php:10 -#: mod/follow.php:72 mod/follow.php:137 mod/item.php:169 mod/item.php:181 +#: mod/profile_photo.php:199 mod/ostatus_subscribe.php:9 mod/follow.php:11 +#: mod/follow.php:73 mod/follow.php:155 mod/item.php:180 mod/item.php:192 #: mod/group.php:19 mod/dfrn_confirm.php:55 mod/fsuggest.php:78 #: mod/wall_upload.php:77 mod/wall_upload.php:80 mod/viewcontacts.php:40 #: mod/notifications.php:69 mod/message.php:45 mod/message.php:181 @@ -70,123 +70,123 @@ msgstr "" #: mod/api.php:31 mod/notes.php:22 mod/poke.php:149 mod/repair_ostatus.php:9 #: mod/invite.php:15 mod/invite.php:101 mod/photos.php:171 mod/photos.php:1105 #: mod/regmod.php:110 mod/uimport.php:23 mod/attach.php:33 -#: include/items.php:5070 index.php:383 +#: include/items.php:5073 index.php:383 msgid "Permission denied." msgstr "" -#: mod/contacts.php:403 +#: mod/contacts.php:404 msgid "Contact has been blocked" msgstr "" -#: mod/contacts.php:403 +#: mod/contacts.php:404 msgid "Contact has been unblocked" msgstr "" -#: mod/contacts.php:414 +#: mod/contacts.php:415 msgid "Contact has been ignored" msgstr "" -#: mod/contacts.php:414 +#: mod/contacts.php:415 msgid "Contact has been unignored" msgstr "" -#: mod/contacts.php:426 +#: mod/contacts.php:427 msgid "Contact has been archived" msgstr "" -#: mod/contacts.php:426 +#: mod/contacts.php:427 msgid "Contact has been unarchived" msgstr "" -#: mod/contacts.php:453 mod/contacts.php:801 +#: mod/contacts.php:454 mod/contacts.php:802 msgid "Do you really want to delete this contact?" msgstr "" -#: mod/contacts.php:455 mod/follow.php:105 mod/message.php:216 +#: mod/contacts.php:456 mod/follow.php:110 mod/message.php:216 #: mod/settings.php:1094 mod/settings.php:1100 mod/settings.php:1108 #: mod/settings.php:1112 mod/settings.php:1117 mod/settings.php:1123 #: mod/settings.php:1129 mod/settings.php:1135 mod/settings.php:1161 #: mod/settings.php:1162 mod/settings.php:1163 mod/settings.php:1164 -#: mod/settings.php:1165 mod/dfrn_request.php:850 mod/register.php:238 +#: mod/settings.php:1165 mod/dfrn_request.php:857 mod/register.php:238 #: mod/suggest.php:29 mod/profiles.php:658 mod/profiles.php:661 -#: mod/profiles.php:687 mod/api.php:105 include/items.php:4902 +#: mod/profiles.php:687 mod/api.php:105 include/items.php:4905 msgid "Yes" msgstr "" -#: mod/contacts.php:458 mod/tagrm.php:11 mod/tagrm.php:94 mod/follow.php:116 +#: mod/contacts.php:459 mod/tagrm.php:11 mod/tagrm.php:94 mod/follow.php:121 #: mod/videos.php:131 mod/message.php:219 mod/fbrowser.php:93 #: mod/fbrowser.php:128 mod/settings.php:651 mod/settings.php:677 -#: mod/dfrn_request.php:864 mod/suggest.php:32 mod/editpost.php:148 -#: mod/photos.php:247 mod/photos.php:336 include/conversation.php:1221 -#: include/items.php:4905 +#: mod/dfrn_request.php:871 mod/suggest.php:32 mod/editpost.php:148 +#: mod/photos.php:247 mod/photos.php:336 include/conversation.php:1220 +#: include/items.php:4908 msgid "Cancel" msgstr "" -#: mod/contacts.php:470 +#: mod/contacts.php:471 msgid "Contact has been removed." msgstr "" -#: mod/contacts.php:511 +#: mod/contacts.php:512 #, php-format msgid "You are mutual friends with %s" msgstr "" -#: mod/contacts.php:515 +#: mod/contacts.php:516 #, php-format msgid "You are sharing with %s" msgstr "" -#: mod/contacts.php:520 +#: mod/contacts.php:521 #, php-format msgid "%s is sharing with you" msgstr "" -#: mod/contacts.php:540 +#: mod/contacts.php:541 msgid "Private communications are not available for this contact." msgstr "" -#: mod/contacts.php:543 mod/admin.php:647 +#: mod/contacts.php:544 mod/admin.php:790 msgid "Never" msgstr "" -#: mod/contacts.php:547 +#: mod/contacts.php:548 msgid "(Update was successful)" msgstr "" -#: mod/contacts.php:547 +#: mod/contacts.php:548 msgid "(Update was not successful)" msgstr "" -#: mod/contacts.php:549 +#: mod/contacts.php:550 msgid "Suggest friends" msgstr "" -#: mod/contacts.php:553 +#: mod/contacts.php:554 #, php-format msgid "Network type: %s" msgstr "" -#: mod/contacts.php:566 +#: mod/contacts.php:567 msgid "Communications lost with this contact!" msgstr "" -#: mod/contacts.php:569 +#: mod/contacts.php:570 msgid "Fetch further information for feeds" msgstr "" -#: mod/contacts.php:570 mod/admin.php:656 +#: mod/contacts.php:571 mod/admin.php:799 msgid "Disabled" msgstr "" -#: mod/contacts.php:570 +#: mod/contacts.php:571 msgid "Fetch information" msgstr "" -#: mod/contacts.php:570 +#: mod/contacts.php:571 msgid "Fetch information and keywords" msgstr "" -#: mod/contacts.php:586 mod/manage.php:143 mod/fsuggest.php:107 +#: mod/contacts.php:587 mod/manage.php:143 mod/fsuggest.php:107 #: mod/message.php:342 mod/message.php:525 mod/crepair.php:196 #: mod/events.php:574 mod/content.php:712 mod/install.php:261 #: mod/install.php:299 mod/mood.php:137 mod/profiles.php:696 @@ -195,307 +195,308 @@ msgstr "" #: mod/photos.php:1678 mod/photos.php:1766 object/Item.php:710 #: view/theme/cleanzero/config.php:80 view/theme/dispy/config.php:70 #: view/theme/quattro/config.php:64 view/theme/diabook/config.php:148 -#: view/theme/diabook/theme.php:633 view/theme/clean/config.php:83 -#: view/theme/vier/config.php:107 view/theme/duepuntozero/config.php:59 +#: view/theme/diabook/theme.php:633 view/theme/vier/config.php:107 +#: view/theme/duepuntozero/config.php:59 msgid "Submit" msgstr "" -#: mod/contacts.php:587 +#: mod/contacts.php:588 msgid "Profile Visibility" msgstr "" -#: mod/contacts.php:588 +#: mod/contacts.php:589 #, php-format msgid "" "Please choose the profile you would like to display to %s when viewing your " "profile securely." msgstr "" -#: mod/contacts.php:589 +#: mod/contacts.php:590 msgid "Contact Information / Notes" msgstr "" -#: mod/contacts.php:590 +#: mod/contacts.php:591 msgid "Edit contact notes" msgstr "" -#: mod/contacts.php:595 mod/contacts.php:977 mod/viewcontacts.php:97 +#: mod/contacts.php:596 mod/contacts.php:952 mod/viewcontacts.php:97 #: mod/nogroup.php:41 #, php-format msgid "Visit %s's profile [%s]" msgstr "" -#: mod/contacts.php:596 +#: mod/contacts.php:597 msgid "Block/Unblock contact" msgstr "" -#: mod/contacts.php:597 +#: mod/contacts.php:598 msgid "Ignore contact" msgstr "" -#: mod/contacts.php:598 +#: mod/contacts.php:599 msgid "Repair URL settings" msgstr "" -#: mod/contacts.php:599 +#: mod/contacts.php:600 msgid "View conversations" msgstr "" -#: mod/contacts.php:601 +#: mod/contacts.php:602 msgid "Delete contact" msgstr "" -#: mod/contacts.php:605 +#: mod/contacts.php:606 msgid "Last update:" msgstr "" -#: mod/contacts.php:607 +#: mod/contacts.php:608 msgid "Update public posts" msgstr "" -#: mod/contacts.php:609 mod/admin.php:1656 +#: mod/contacts.php:610 msgid "Update now" msgstr "" -#: mod/contacts.php:611 mod/dirfind.php:190 mod/allfriends.php:65 -#: mod/match.php:71 mod/suggest.php:82 include/contact_widgets.php:32 -#: include/Contact.php:310 include/conversation.php:924 +#: mod/contacts.php:612 mod/follow.php:103 mod/dirfind.php:196 +#: mod/allfriends.php:65 mod/match.php:71 mod/suggest.php:82 +#: include/contact_widgets.php:32 include/Contact.php:297 +#: include/conversation.php:924 msgid "Connect/Follow" msgstr "" -#: mod/contacts.php:614 mod/contacts.php:805 mod/contacts.php:864 -#: mod/admin.php:1120 +#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:865 +#: mod/admin.php:1281 msgid "Unblock" msgstr "" -#: mod/contacts.php:614 mod/contacts.php:805 mod/contacts.php:864 -#: mod/admin.php:1119 +#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:865 +#: mod/admin.php:1280 msgid "Block" msgstr "" -#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:871 +#: mod/contacts.php:616 mod/contacts.php:807 mod/contacts.php:872 msgid "Unignore" msgstr "" -#: mod/contacts.php:615 mod/contacts.php:806 mod/contacts.php:871 +#: mod/contacts.php:616 mod/contacts.php:807 mod/contacts.php:872 #: mod/notifications.php:54 mod/notifications.php:179 mod/notifications.php:259 msgid "Ignore" msgstr "" -#: mod/contacts.php:618 +#: mod/contacts.php:619 msgid "Currently blocked" msgstr "" -#: mod/contacts.php:619 +#: mod/contacts.php:620 msgid "Currently ignored" msgstr "" -#: mod/contacts.php:620 +#: mod/contacts.php:621 msgid "Currently archived" msgstr "" -#: mod/contacts.php:621 mod/notifications.php:172 mod/notifications.php:251 +#: mod/contacts.php:622 mod/notifications.php:172 mod/notifications.php:251 msgid "Hide this contact from others" msgstr "" -#: mod/contacts.php:621 +#: mod/contacts.php:622 msgid "" "Replies/likes to your public posts may still be visible" msgstr "" -#: mod/contacts.php:622 +#: mod/contacts.php:623 msgid "Notification for new posts" msgstr "" -#: mod/contacts.php:622 +#: mod/contacts.php:623 msgid "Send a notification of every new post of this contact" msgstr "" -#: mod/contacts.php:625 +#: mod/contacts.php:626 msgid "Blacklisted keywords" msgstr "" -#: mod/contacts.php:625 +#: mod/contacts.php:626 msgid "" "Comma separated list of keywords that should not be converted to hashtags, " "when \"Fetch information and keywords\" is selected" msgstr "" -#: mod/contacts.php:632 mod/follow.php:121 mod/notifications.php:255 +#: mod/contacts.php:633 mod/follow.php:126 mod/notifications.php:255 msgid "Profile URL" msgstr "" -#: mod/contacts.php:635 mod/follow.php:125 mod/notifications.php:244 -#: mod/events.php:566 mod/directory.php:145 include/identity.php:304 -#: include/bb2diaspora.php:170 include/event.php:36 include/event.php:60 +#: mod/contacts.php:636 mod/notifications.php:244 mod/events.php:566 +#: mod/directory.php:145 include/identity.php:308 include/bb2diaspora.php:170 +#: include/event.php:36 include/event.php:60 msgid "Location:" msgstr "" -#: mod/contacts.php:637 mod/follow.php:127 mod/notifications.php:246 -#: mod/directory.php:153 include/identity.php:313 include/identity.php:630 +#: mod/contacts.php:638 mod/notifications.php:246 mod/directory.php:153 +#: include/identity.php:317 include/identity.php:631 msgid "About:" msgstr "" -#: mod/contacts.php:639 mod/follow.php:129 mod/notifications.php:248 -#: include/identity.php:624 +#: mod/contacts.php:640 mod/follow.php:134 mod/notifications.php:248 +#: include/identity.php:625 msgid "Tags:" msgstr "" -#: mod/contacts.php:684 +#: mod/contacts.php:685 msgid "Suggestions" msgstr "" -#: mod/contacts.php:687 +#: mod/contacts.php:688 msgid "Suggest potential friends" msgstr "" -#: mod/contacts.php:692 mod/group.php:192 +#: mod/contacts.php:693 mod/group.php:192 msgid "All Contacts" msgstr "" -#: mod/contacts.php:695 +#: mod/contacts.php:696 msgid "Show all contacts" msgstr "" -#: mod/contacts.php:700 +#: mod/contacts.php:701 msgid "Unblocked" msgstr "" -#: mod/contacts.php:703 +#: mod/contacts.php:704 msgid "Only show unblocked contacts" msgstr "" -#: mod/contacts.php:709 +#: mod/contacts.php:710 msgid "Blocked" msgstr "" -#: mod/contacts.php:712 +#: mod/contacts.php:713 msgid "Only show blocked contacts" msgstr "" -#: mod/contacts.php:718 +#: mod/contacts.php:719 msgid "Ignored" msgstr "" -#: mod/contacts.php:721 +#: mod/contacts.php:722 msgid "Only show ignored contacts" msgstr "" -#: mod/contacts.php:727 +#: mod/contacts.php:728 msgid "Archived" msgstr "" -#: mod/contacts.php:730 +#: mod/contacts.php:731 msgid "Only show archived contacts" msgstr "" -#: mod/contacts.php:736 +#: mod/contacts.php:737 msgid "Hidden" msgstr "" -#: mod/contacts.php:739 +#: mod/contacts.php:740 msgid "Only show hidden contacts" msgstr "" -#: mod/contacts.php:792 mod/contacts.php:840 mod/viewcontacts.php:116 +#: mod/contacts.php:793 mod/contacts.php:841 mod/viewcontacts.php:116 #: include/identity.php:741 include/identity.php:744 include/text.php:1012 #: include/nav.php:123 include/nav.php:187 view/theme/diabook/theme.php:125 msgid "Contacts" msgstr "" -#: mod/contacts.php:796 +#: mod/contacts.php:797 msgid "Search your contacts" msgstr "" -#: mod/contacts.php:797 +#: mod/contacts.php:798 msgid "Finding: " msgstr "" -#: mod/contacts.php:798 mod/directory.php:210 include/contact_widgets.php:34 +#: mod/contacts.php:799 mod/directory.php:210 include/contact_widgets.php:34 msgid "Find" msgstr "" -#: mod/contacts.php:804 mod/settings.php:146 mod/settings.php:676 +#: mod/contacts.php:805 mod/settings.php:146 mod/settings.php:676 msgid "Update" msgstr "" -#: mod/contacts.php:807 mod/contacts.php:878 +#: mod/contacts.php:808 mod/contacts.php:879 msgid "Archive" msgstr "" -#: mod/contacts.php:807 mod/contacts.php:878 +#: mod/contacts.php:808 mod/contacts.php:879 msgid "Unarchive" msgstr "" -#: mod/contacts.php:808 mod/group.php:171 mod/admin.php:1118 +#: mod/contacts.php:809 mod/group.php:171 mod/admin.php:1279 #: mod/content.php:440 mod/content.php:743 mod/settings.php:713 #: mod/photos.php:1723 object/Item.php:134 include/conversation.php:635 msgid "Delete" msgstr "" -#: mod/contacts.php:821 include/identity.php:686 include/nav.php:75 +#: mod/contacts.php:822 include/identity.php:686 include/nav.php:75 msgid "Status" msgstr "" -#: mod/contacts.php:824 include/identity.php:689 +#: mod/contacts.php:825 mod/follow.php:143 include/identity.php:689 msgid "Status Messages and Posts" msgstr "" -#: mod/contacts.php:829 mod/profperm.php:104 mod/newmember.php:32 -#: include/identity.php:578 include/identity.php:664 include/identity.php:694 +#: mod/contacts.php:830 mod/profperm.php:104 mod/newmember.php:32 +#: include/identity.php:579 include/identity.php:665 include/identity.php:694 #: include/nav.php:76 view/theme/diabook/theme.php:124 msgid "Profile" msgstr "" -#: mod/contacts.php:832 include/identity.php:697 +#: mod/contacts.php:833 include/identity.php:697 msgid "Profile Details" msgstr "" -#: mod/contacts.php:843 +#: mod/contacts.php:844 msgid "View all contacts" msgstr "" -#: mod/contacts.php:849 mod/common.php:134 +#: mod/contacts.php:850 mod/common.php:134 msgid "Common Friends" msgstr "" -#: mod/contacts.php:852 +#: mod/contacts.php:853 msgid "View all common friends" msgstr "" -#: mod/contacts.php:856 +#: mod/contacts.php:857 msgid "Repair" msgstr "" -#: mod/contacts.php:859 +#: mod/contacts.php:860 msgid "Advanced Contact Settings" msgstr "" -#: mod/contacts.php:867 +#: mod/contacts.php:868 msgid "Toggle Blocked status" msgstr "" -#: mod/contacts.php:874 +#: mod/contacts.php:875 msgid "Toggle Ignored status" msgstr "" -#: mod/contacts.php:881 +#: mod/contacts.php:882 msgid "Toggle Archive status" msgstr "" -#: mod/contacts.php:949 +#: mod/contacts.php:924 msgid "Mutual Friendship" msgstr "" -#: mod/contacts.php:953 +#: mod/contacts.php:928 msgid "is a fan of yours" msgstr "" -#: mod/contacts.php:957 +#: mod/contacts.php:932 msgid "you are a fan of" msgstr "" -#: mod/contacts.php:978 mod/nogroup.php:42 +#: mod/contacts.php:953 mod/nogroup.php:42 msgid "Edit contact" msgstr "" @@ -545,23 +546,23 @@ msgstr "" msgid "All Contacts (with secure profile access)" msgstr "" -#: mod/display.php:82 mod/display.php:280 mod/display.php:497 -#: mod/viewsrc.php:15 mod/admin.php:196 mod/admin.php:1163 mod/admin.php:1384 -#: mod/notice.php:15 include/items.php:4861 +#: mod/display.php:82 mod/display.php:291 mod/display.php:508 +#: mod/viewsrc.php:15 mod/admin.php:211 mod/admin.php:1334 mod/admin.php:1567 +#: mod/notice.php:15 include/items.php:4864 msgid "Item not found." msgstr "" -#: mod/display.php:209 mod/videos.php:197 mod/viewcontacts.php:35 -#: mod/community.php:18 mod/dfrn_request.php:779 mod/search.php:93 +#: mod/display.php:220 mod/videos.php:197 mod/viewcontacts.php:35 +#: mod/community.php:18 mod/dfrn_request.php:786 mod/search.php:93 #: mod/search.php:99 mod/directory.php:37 mod/photos.php:976 msgid "Public access denied." msgstr "" -#: mod/display.php:328 mod/profile.php:155 +#: mod/display.php:339 mod/profile.php:155 msgid "Access to this profile has been restricted." msgstr "" -#: mod/display.php:490 +#: mod/display.php:501 msgid "Item has been removed." msgstr "" @@ -596,7 +597,7 @@ msgid "" "join." msgstr "" -#: mod/newmember.php:22 mod/admin.php:1215 mod/admin.php:1460 +#: mod/newmember.php:22 mod/admin.php:1386 mod/admin.php:1644 #: mod/settings.php:99 include/nav.php:182 view/theme/diabook/theme.php:544 #: view/theme/diabook/theme.php:648 msgid "Settings" @@ -658,60 +659,44 @@ msgstr "" msgid "Connecting" msgstr "" -#: mod/newmember.php:49 mod/newmember.php:51 include/contact_selectors.php:81 -msgid "Facebook" -msgstr "" - -#: mod/newmember.php:49 -msgid "" -"Authorise the Facebook Connector if you currently have a Facebook account " -"and we will (optionally) import all your Facebook friends and conversations." -msgstr "" - #: mod/newmember.php:51 -msgid "" -"If this is your own personal server, installing the Facebook addon " -"may ease your transition to the free social web." -msgstr "" - -#: mod/newmember.php:56 msgid "Importing Emails" msgstr "" -#: mod/newmember.php:56 +#: mod/newmember.php:51 msgid "" "Enter your email access information on your Connector Settings page if you " "wish to import and interact with friends or mailing lists from your email " "INBOX" msgstr "" -#: mod/newmember.php:58 +#: mod/newmember.php:53 msgid "Go to Your Contacts Page" msgstr "" -#: mod/newmember.php:58 +#: mod/newmember.php:53 msgid "" "Your Contacts page is your gateway to managing friendships and connecting " "with friends on other networks. Typically you enter their address or site " "URL in the Add New Contact dialog." msgstr "" -#: mod/newmember.php:60 +#: mod/newmember.php:55 msgid "Go to Your Site's Directory" msgstr "" -#: mod/newmember.php:60 +#: mod/newmember.php:55 msgid "" "The Directory page lets you find other people in this network or other " "federated sites. Look for a Connect or Follow link on " "their profile page. Provide your own Identity Address if requested." msgstr "" -#: mod/newmember.php:62 +#: mod/newmember.php:57 msgid "Finding New People" msgstr "" -#: mod/newmember.php:62 +#: mod/newmember.php:57 msgid "" "On the side panel of the Contacts page are several tools to find new " "friends. We can match people by interest, look up people by name or " @@ -720,41 +705,41 @@ msgid "" "hours." msgstr "" -#: mod/newmember.php:66 include/group.php:283 +#: mod/newmember.php:61 include/group.php:283 msgid "Groups" msgstr "" -#: mod/newmember.php:70 +#: mod/newmember.php:65 msgid "Group Your Contacts" msgstr "" -#: mod/newmember.php:70 +#: mod/newmember.php:65 msgid "" "Once you have made some friends, organize them into private conversation " "groups from the sidebar of your Contacts page and then you can interact with " "each group privately on your Network page." msgstr "" -#: mod/newmember.php:73 +#: mod/newmember.php:68 msgid "Why Aren't My Posts Public?" msgstr "" -#: mod/newmember.php:73 +#: mod/newmember.php:68 msgid "" "Friendica respects your privacy. By default, your posts will only show up to " "people you've added as friends. For more information, see the help section " "from the link above." msgstr "" -#: mod/newmember.php:78 +#: mod/newmember.php:73 msgid "Getting Help" msgstr "" -#: mod/newmember.php:82 +#: mod/newmember.php:77 msgid "Go to the Help Section" msgstr "" -#: mod/newmember.php:82 +#: mod/newmember.php:77 msgid "" "Our help pages may be consulted for detail on other program " "features and resources." @@ -769,7 +754,7 @@ msgid "" "Account not found and OpenID registration is not permitted on this site." msgstr "" -#: mod/openid.php:93 include/auth.php:112 include/auth.php:175 +#: mod/openid.php:93 include/auth.php:118 include/auth.php:181 msgid "Login failed." msgstr "" @@ -855,18 +840,18 @@ msgstr "" msgid "Image upload failed." msgstr "" -#: mod/subthread.php:87 mod/tagger.php:62 mod/like.php:168 +#: mod/subthread.php:87 mod/tagger.php:62 include/like.php:165 #: include/conversation.php:130 include/conversation.php:266 #: include/text.php:1993 include/diaspora.php:2147 #: view/theme/diabook/theme.php:471 msgid "photo" msgstr "" -#: mod/subthread.php:87 mod/tagger.php:62 mod/like.php:168 mod/like.php:346 -#: include/conversation.php:125 include/conversation.php:134 -#: include/conversation.php:261 include/conversation.php:270 -#: include/diaspora.php:2147 view/theme/diabook/theme.php:466 -#: view/theme/diabook/theme.php:475 +#: mod/subthread.php:87 mod/tagger.php:62 include/like.php:165 +#: include/like.php:325 include/conversation.php:125 +#: include/conversation.php:134 include/conversation.php:261 +#: include/conversation.php:270 include/diaspora.php:2147 +#: view/theme/diabook/theme.php:466 view/theme/diabook/theme.php:475 msgid "status" msgstr "" @@ -927,7 +912,7 @@ msgstr "" msgid "Keep this window open until done." msgstr "" -#: mod/filer.php:30 include/conversation.php:1133 include/conversation.php:1151 +#: mod/filer.php:30 include/conversation.php:1132 include/conversation.php:1150 msgid "Save to Folder:" msgstr "" @@ -939,54 +924,54 @@ msgstr "" msgid "Save" msgstr "" -#: mod/follow.php:18 mod/dfrn_request.php:863 +#: mod/follow.php:19 mod/dfrn_request.php:870 msgid "Submit Request" msgstr "" -#: mod/follow.php:29 +#: mod/follow.php:30 msgid "You already added this contact." msgstr "" -#: mod/follow.php:38 +#: mod/follow.php:39 msgid "Diaspora support isn't enabled. Contact can't be added." msgstr "" -#: mod/follow.php:45 +#: mod/follow.php:46 msgid "OStatus support is disabled. Contact can't be added." msgstr "" -#: mod/follow.php:52 +#: mod/follow.php:53 msgid "The network type couldn't be detected. Contact can't be added." msgstr "" -#: mod/follow.php:104 mod/dfrn_request.php:849 +#: mod/follow.php:109 mod/dfrn_request.php:856 msgid "Please answer the following:" msgstr "" -#: mod/follow.php:105 mod/dfrn_request.php:850 +#: mod/follow.php:110 mod/dfrn_request.php:857 #, php-format msgid "Does %s know you?" msgstr "" -#: mod/follow.php:105 mod/settings.php:1094 mod/settings.php:1100 +#: mod/follow.php:110 mod/settings.php:1094 mod/settings.php:1100 #: mod/settings.php:1108 mod/settings.php:1112 mod/settings.php:1117 #: mod/settings.php:1123 mod/settings.php:1129 mod/settings.php:1135 #: mod/settings.php:1161 mod/settings.php:1162 mod/settings.php:1163 -#: mod/settings.php:1164 mod/settings.php:1165 mod/dfrn_request.php:850 +#: mod/settings.php:1164 mod/settings.php:1165 mod/dfrn_request.php:857 #: mod/register.php:239 mod/profiles.php:658 mod/profiles.php:662 #: mod/profiles.php:687 mod/api.php:106 msgid "No" msgstr "" -#: mod/follow.php:106 mod/dfrn_request.php:854 +#: mod/follow.php:111 mod/dfrn_request.php:861 msgid "Add a personal note:" msgstr "" -#: mod/follow.php:112 mod/dfrn_request.php:860 +#: mod/follow.php:117 mod/dfrn_request.php:867 msgid "Your Identity Address:" msgstr "" -#: mod/follow.php:162 +#: mod/follow.php:180 msgid "Contact added" msgstr "" @@ -994,38 +979,38 @@ msgstr "" msgid "Unable to locate original post." msgstr "" -#: mod/item.php:318 +#: mod/item.php:329 msgid "Empty post discarded." msgstr "" -#: mod/item.php:456 mod/wall_upload.php:213 mod/wall_upload.php:227 +#: mod/item.php:467 mod/wall_upload.php:213 mod/wall_upload.php:227 #: mod/wall_upload.php:234 include/Photo.php:954 include/Photo.php:969 #: include/Photo.php:976 include/Photo.php:998 include/message.php:145 msgid "Wall Photos" msgstr "" -#: mod/item.php:830 +#: mod/item.php:842 msgid "System error. Post not saved." msgstr "" -#: mod/item.php:959 +#: mod/item.php:971 #, php-format msgid "" "This message was sent to you by %s, a member of the Friendica social network." msgstr "" -#: mod/item.php:961 +#: mod/item.php:973 #, php-format msgid "You may visit them online at %s" msgstr "" -#: mod/item.php:962 +#: mod/item.php:974 msgid "" "Please contact the sender by replying to this post if you do not wish to " "receive these messages." msgstr "" -#: mod/item.php:966 +#: mod/item.php:978 #, php-format msgid "%s posted an update." msgstr "" @@ -1074,7 +1059,7 @@ msgstr "" msgid "Members" msgstr "" -#: mod/group.php:193 mod/network.php:563 mod/content.php:130 +#: mod/group.php:193 mod/network.php:576 mod/content.php:130 msgid "Group is empty" msgstr "" @@ -1176,7 +1161,7 @@ msgstr "" msgid "Unable to update your contact profile details on our system" msgstr "" -#: mod/dfrn_confirm.php:753 mod/dfrn_request.php:734 include/items.php:4273 +#: mod/dfrn_confirm.php:753 mod/dfrn_request.php:741 include/items.php:4276 msgid "[Name Withheld]" msgstr "" @@ -1185,7 +1170,7 @@ msgstr "" msgid "%1$s has joined %2$s" msgstr "" -#: mod/profile.php:21 include/identity.php:53 +#: mod/profile.php:21 include/identity.php:51 msgid "Requested profile is not available." msgstr "" @@ -1245,7 +1230,7 @@ msgstr "" #: mod/wall_upload.php:20 mod/wall_upload.php:33 mod/wall_upload.php:86 #: mod/wall_upload.php:122 mod/wall_upload.php:125 mod/wall_attach.php:17 -#: mod/wall_attach.php:25 mod/wall_attach.php:76 include/api.php:1735 +#: mod/wall_attach.php:25 mod/wall_attach.php:76 include/api.php:1781 msgid "Invalid request." msgstr "" @@ -1303,7 +1288,7 @@ msgid "" "Password reset failed." msgstr "" -#: mod/lostpass.php:109 boot.php:1310 +#: mod/lostpass.php:109 boot.php:1418 msgid "Password Reset" msgstr "" @@ -1379,37 +1364,6 @@ msgstr "" msgid "Reset" msgstr "" -#: mod/like.php:170 include/conversation.php:122 include/conversation.php:258 -#: include/text.php:1991 view/theme/diabook/theme.php:463 -msgid "event" -msgstr "" - -#: mod/like.php:187 include/conversation.php:141 include/diaspora.php:2163 -#: view/theme/diabook/theme.php:480 -#, php-format -msgid "%1$s likes %2$s's %3$s" -msgstr "" - -#: mod/like.php:189 include/conversation.php:144 -#, php-format -msgid "%1$s doesn't like %2$s's %3$s" -msgstr "" - -#: mod/like.php:191 -#, php-format -msgid "%1$s is attending %2$s's %3$s" -msgstr "" - -#: mod/like.php:193 -#, php-format -msgid "%1$s is not attending %2$s's %3$s" -msgstr "" - -#: mod/like.php:195 -#, php-format -msgid "%1$s may attend %2$s's %3$s" -msgstr "" - #: mod/ping.php:265 msgid "{0} wants to be your friend" msgstr "" @@ -1438,11 +1392,11 @@ msgstr "" msgid "System" msgstr "" -#: mod/notifications.php:87 mod/admin.php:228 include/nav.php:154 +#: mod/notifications.php:87 mod/admin.php:361 include/nav.php:154 msgid "Network" msgstr "" -#: mod/notifications.php:93 mod/network.php:381 +#: mod/notifications.php:93 mod/network.php:384 msgid "Personal" msgstr "" @@ -1484,7 +1438,7 @@ msgstr "" msgid "if applicable" msgstr "" -#: mod/notifications.php:176 mod/notifications.php:257 mod/admin.php:1116 +#: mod/notifications.php:176 mod/notifications.php:257 mod/admin.php:1277 msgid "Approve" msgstr "" @@ -1534,8 +1488,8 @@ msgstr "" msgid "New Follower" msgstr "" -#: mod/notifications.php:250 mod/directory.php:147 include/identity.php:306 -#: include/identity.php:589 +#: mod/notifications.php:250 mod/directory.php:147 include/identity.php:310 +#: include/identity.php:590 msgid "Gender:" msgstr "" @@ -1706,7 +1660,7 @@ msgstr "" #: mod/message.php:290 mod/message.php:298 mod/message.php:427 #: mod/message.php:435 mod/wallmessage.php:127 mod/wallmessage.php:135 -#: include/conversation.php:1129 include/conversation.php:1147 +#: include/conversation.php:1128 include/conversation.php:1146 msgid "Please enter a link URL:" msgstr "" @@ -1728,19 +1682,19 @@ msgid "Your message:" msgstr "" #: mod/message.php:339 mod/message.php:523 mod/wallmessage.php:154 -#: mod/editpost.php:110 include/conversation.php:1184 +#: mod/editpost.php:110 include/conversation.php:1183 msgid "Upload photo" msgstr "" #: mod/message.php:340 mod/message.php:524 mod/wallmessage.php:155 -#: mod/editpost.php:114 include/conversation.php:1188 +#: mod/editpost.php:114 include/conversation.php:1187 msgid "Insert web link" msgstr "" #: mod/message.php:341 mod/message.php:526 mod/content.php:501 #: mod/content.php:885 mod/wallmessage.php:156 mod/editpost.php:124 #: mod/photos.php:1610 object/Item.php:396 include/conversation.php:713 -#: include/conversation.php:1202 +#: include/conversation.php:1201 msgid "Please wait" msgstr "" @@ -1756,7 +1710,7 @@ msgstr "" msgid "Delete message" msgstr "" -#: mod/message.php:507 mod/message.php:582 +#: mod/message.php:507 mod/message.php:584 msgid "Delete conversation" msgstr "" @@ -1770,26 +1724,26 @@ msgstr "" msgid "Send Reply" msgstr "" -#: mod/message.php:555 +#: mod/message.php:557 #, php-format msgid "Unknown sender - %s" msgstr "" -#: mod/message.php:558 +#: mod/message.php:560 #, php-format msgid "You and %s" msgstr "" -#: mod/message.php:561 +#: mod/message.php:563 #, php-format msgid "%s and You" msgstr "" -#: mod/message.php:585 +#: mod/message.php:587 msgid "D, d M Y - g:i A" msgstr "" -#: mod/message.php:588 +#: mod/message.php:590 #, php-format msgid "%d message" msgid_plural "%d messages" @@ -1841,8 +1795,8 @@ msgstr "" msgid "Refetch contact data" msgstr "" -#: mod/crepair.php:170 mod/admin.php:1114 mod/admin.php:1126 mod/admin.php:1127 -#: mod/admin.php:1140 mod/settings.php:652 mod/settings.php:678 +#: mod/crepair.php:170 mod/admin.php:1275 mod/admin.php:1287 mod/admin.php:1288 +#: mod/admin.php:1301 mod/settings.php:652 mod/settings.php:678 msgid "Name" msgstr "" @@ -1892,7 +1846,7 @@ msgid "" "entries from this contact." msgstr "" -#: mod/bookmarklet.php:12 boot.php:1296 include/nav.php:91 +#: mod/bookmarklet.php:12 boot.php:1404 include/nav.php:91 msgid "Login" msgstr "" @@ -1904,24 +1858,24 @@ msgstr "" msgid "Access denied." msgstr "" -#: mod/dirfind.php:188 mod/allfriends.php:80 mod/match.php:85 -#: mod/suggest.php:98 include/contact_widgets.php:10 include/identity.php:209 +#: mod/dirfind.php:194 mod/allfriends.php:80 mod/match.php:85 +#: mod/suggest.php:98 include/contact_widgets.php:10 include/identity.php:212 msgid "Connect" msgstr "" -#: mod/dirfind.php:189 mod/allfriends.php:64 mod/match.php:70 -#: mod/directory.php:162 mod/suggest.php:81 include/Contact.php:296 -#: include/Contact.php:309 include/Contact.php:351 include/conversation.php:912 +#: mod/dirfind.php:195 mod/allfriends.php:64 mod/match.php:70 +#: mod/directory.php:162 mod/suggest.php:81 include/Contact.php:283 +#: include/Contact.php:296 include/Contact.php:338 include/conversation.php:912 #: include/conversation.php:926 msgid "View Profile" msgstr "" -#: mod/dirfind.php:218 +#: mod/dirfind.php:224 #, php-format msgid "People Search - %s" msgstr "" -#: mod/dirfind.php:225 mod/match.php:105 +#: mod/dirfind.php:231 mod/match.php:105 msgid "No matches" msgstr "" @@ -1944,776 +1898,801 @@ msgstr "" msgid "Contacts who are not members of a group" msgstr "" -#: mod/admin.php:80 +#: mod/admin.php:88 msgid "Theme settings updated." msgstr "" -#: mod/admin.php:127 mod/admin.php:713 +#: mod/admin.php:137 mod/admin.php:856 msgid "Site" msgstr "" -#: mod/admin.php:128 mod/admin.php:657 mod/admin.php:1109 mod/admin.php:1124 +#: mod/admin.php:138 mod/admin.php:800 mod/admin.php:1270 mod/admin.php:1285 msgid "Users" msgstr "" -#: mod/admin.php:129 mod/admin.php:1213 mod/admin.php:1273 mod/settings.php:66 +#: mod/admin.php:139 mod/admin.php:1384 mod/admin.php:1444 mod/settings.php:66 msgid "Plugins" msgstr "" -#: mod/admin.php:130 mod/admin.php:1458 mod/admin.php:1509 +#: mod/admin.php:140 mod/admin.php:1642 mod/admin.php:1692 msgid "Themes" msgstr "" -#: mod/admin.php:131 +#: mod/admin.php:141 msgid "DB updates" msgstr "" -#: mod/admin.php:132 mod/admin.php:223 +#: mod/admin.php:142 mod/admin.php:356 msgid "Inspect Queue" msgstr "" -#: mod/admin.php:147 mod/admin.php:156 mod/admin.php:1597 +#: mod/admin.php:143 mod/admin.php:326 +msgid "Federation Statistics" +msgstr "" + +#: mod/admin.php:157 mod/admin.php:168 mod/admin.php:1760 msgid "Logs" msgstr "" -#: mod/admin.php:148 +#: mod/admin.php:158 mod/admin.php:1828 +msgid "View Logs" +msgstr "" + +#: mod/admin.php:159 msgid "probe address" msgstr "" -#: mod/admin.php:149 +#: mod/admin.php:160 msgid "check webfinger" msgstr "" -#: mod/admin.php:154 include/nav.php:194 +#: mod/admin.php:166 include/nav.php:194 msgid "Admin" msgstr "" -#: mod/admin.php:155 +#: mod/admin.php:167 msgid "Plugin Features" msgstr "" -#: mod/admin.php:157 +#: mod/admin.php:169 msgid "diagnostics" msgstr "" -#: mod/admin.php:158 +#: mod/admin.php:170 msgid "User registrations waiting for confirmation" msgstr "" -#: mod/admin.php:222 mod/admin.php:272 mod/admin.php:712 mod/admin.php:1108 -#: mod/admin.php:1212 mod/admin.php:1272 mod/admin.php:1457 mod/admin.php:1508 -#: mod/admin.php:1596 +#: mod/admin.php:320 +msgid "" +"This page offers you some numbers to the known part of the federated social " +"network your Friendica node is part of. These numbers are not complete but " +"only reflect the part of the network your node is aware of." +msgstr "" + +#: mod/admin.php:321 +msgid "" +"The Auto Discovered Contact Directory feature is not enabled, it " +"will improve the data displayed here." +msgstr "" + +#: mod/admin.php:325 mod/admin.php:355 mod/admin.php:411 mod/admin.php:855 +#: mod/admin.php:1269 mod/admin.php:1383 mod/admin.php:1443 mod/admin.php:1641 +#: mod/admin.php:1691 mod/admin.php:1759 mod/admin.php:1827 msgid "Administration" msgstr "" -#: mod/admin.php:225 +#: mod/admin.php:332 +msgid "Currently this node is aware of nodes from the following platforms:" +msgstr "" + +#: mod/admin.php:358 msgid "ID" msgstr "" -#: mod/admin.php:226 +#: mod/admin.php:359 msgid "Recipient Name" msgstr "" -#: mod/admin.php:227 +#: mod/admin.php:360 msgid "Recipient Profile" msgstr "" -#: mod/admin.php:229 +#: mod/admin.php:362 msgid "Created" msgstr "" -#: mod/admin.php:230 +#: mod/admin.php:363 msgid "Last Tried" msgstr "" -#: mod/admin.php:231 +#: mod/admin.php:364 msgid "" "This page lists the content of the queue for outgoing postings. These are " "postings the initial delivery failed for. They will be resend later and " "eventually deleted if the delivery fails permanently." msgstr "" -#: mod/admin.php:243 mod/admin.php:1062 +#: mod/admin.php:382 mod/admin.php:1223 msgid "Normal Account" msgstr "" -#: mod/admin.php:244 mod/admin.php:1063 +#: mod/admin.php:383 mod/admin.php:1224 msgid "Soapbox Account" msgstr "" -#: mod/admin.php:245 mod/admin.php:1064 +#: mod/admin.php:384 mod/admin.php:1225 msgid "Community/Celebrity Account" msgstr "" -#: mod/admin.php:246 mod/admin.php:1065 +#: mod/admin.php:385 mod/admin.php:1226 msgid "Automatic Friend Account" msgstr "" -#: mod/admin.php:247 +#: mod/admin.php:386 msgid "Blog Account" msgstr "" -#: mod/admin.php:248 +#: mod/admin.php:387 msgid "Private Forum" msgstr "" -#: mod/admin.php:267 +#: mod/admin.php:406 msgid "Message queues" msgstr "" -#: mod/admin.php:273 +#: mod/admin.php:412 msgid "Summary" msgstr "" -#: mod/admin.php:275 +#: mod/admin.php:414 msgid "Registered users" msgstr "" -#: mod/admin.php:277 +#: mod/admin.php:416 msgid "Pending registrations" msgstr "" -#: mod/admin.php:278 +#: mod/admin.php:417 msgid "Version" msgstr "" -#: mod/admin.php:283 +#: mod/admin.php:422 msgid "Active plugins" msgstr "" -#: mod/admin.php:306 +#: mod/admin.php:445 msgid "Can not parse base url. Must have at least ://" msgstr "" -#: mod/admin.php:589 +#: mod/admin.php:728 msgid "RINO2 needs mcrypt php extension to work." msgstr "" -#: mod/admin.php:597 +#: mod/admin.php:736 msgid "Site settings updated." msgstr "" -#: mod/admin.php:621 mod/settings.php:903 +#: mod/admin.php:764 mod/settings.php:903 msgid "No special theme for mobile devices" msgstr "" -#: mod/admin.php:640 +#: mod/admin.php:783 msgid "No community page" msgstr "" -#: mod/admin.php:641 +#: mod/admin.php:784 msgid "Public postings from users of this site" msgstr "" -#: mod/admin.php:642 +#: mod/admin.php:785 msgid "Global community page" msgstr "" -#: mod/admin.php:648 +#: mod/admin.php:791 msgid "At post arrival" msgstr "" -#: mod/admin.php:649 include/contact_selectors.php:56 +#: mod/admin.php:792 include/contact_selectors.php:56 msgid "Frequently" msgstr "" -#: mod/admin.php:650 include/contact_selectors.php:57 +#: mod/admin.php:793 include/contact_selectors.php:57 msgid "Hourly" msgstr "" -#: mod/admin.php:651 include/contact_selectors.php:58 +#: mod/admin.php:794 include/contact_selectors.php:58 msgid "Twice daily" msgstr "" -#: mod/admin.php:652 include/contact_selectors.php:59 +#: mod/admin.php:795 include/contact_selectors.php:59 msgid "Daily" msgstr "" -#: mod/admin.php:658 +#: mod/admin.php:801 msgid "Users, Global Contacts" msgstr "" -#: mod/admin.php:659 +#: mod/admin.php:802 msgid "Users, Global Contacts/fallback" msgstr "" -#: mod/admin.php:663 +#: mod/admin.php:806 msgid "One month" msgstr "" -#: mod/admin.php:664 +#: mod/admin.php:807 msgid "Three months" msgstr "" -#: mod/admin.php:665 +#: mod/admin.php:808 msgid "Half a year" msgstr "" -#: mod/admin.php:666 +#: mod/admin.php:809 msgid "One year" msgstr "" -#: mod/admin.php:671 +#: mod/admin.php:814 msgid "Multi user instance" msgstr "" -#: mod/admin.php:694 +#: mod/admin.php:837 msgid "Closed" msgstr "" -#: mod/admin.php:695 +#: mod/admin.php:838 msgid "Requires approval" msgstr "" -#: mod/admin.php:696 +#: mod/admin.php:839 msgid "Open" msgstr "" -#: mod/admin.php:700 +#: mod/admin.php:843 msgid "No SSL policy, links will track page SSL state" msgstr "" -#: mod/admin.php:701 +#: mod/admin.php:844 msgid "Force all links to use SSL" msgstr "" -#: mod/admin.php:702 +#: mod/admin.php:845 msgid "Self-signed certificate, use SSL for local links only (discouraged)" msgstr "" -#: mod/admin.php:714 mod/admin.php:1274 mod/admin.php:1510 mod/admin.php:1598 +#: mod/admin.php:857 mod/admin.php:1445 mod/admin.php:1693 mod/admin.php:1761 #: mod/settings.php:650 mod/settings.php:760 mod/settings.php:804 #: mod/settings.php:873 mod/settings.php:960 mod/settings.php:1195 msgid "Save Settings" msgstr "" -#: mod/admin.php:715 mod/register.php:263 +#: mod/admin.php:858 mod/register.php:263 msgid "Registration" msgstr "" -#: mod/admin.php:716 +#: mod/admin.php:859 msgid "File upload" msgstr "" -#: mod/admin.php:717 +#: mod/admin.php:860 msgid "Policies" msgstr "" -#: mod/admin.php:718 +#: mod/admin.php:861 msgid "Advanced" msgstr "" -#: mod/admin.php:719 +#: mod/admin.php:862 msgid "Auto Discovered Contact Directory" msgstr "" -#: mod/admin.php:720 +#: mod/admin.php:863 msgid "Performance" msgstr "" -#: mod/admin.php:721 +#: mod/admin.php:864 msgid "" "Relocate - WARNING: advanced function. Could make this server unreachable." msgstr "" -#: mod/admin.php:724 +#: mod/admin.php:867 msgid "Site name" msgstr "" -#: mod/admin.php:725 +#: mod/admin.php:868 msgid "Host name" msgstr "" -#: mod/admin.php:726 +#: mod/admin.php:869 msgid "Sender Email" msgstr "" -#: mod/admin.php:726 +#: mod/admin.php:869 msgid "" "The email address your server shall use to send notification emails from." msgstr "" -#: mod/admin.php:727 +#: mod/admin.php:870 msgid "Banner/Logo" msgstr "" -#: mod/admin.php:728 +#: mod/admin.php:871 msgid "Shortcut icon" msgstr "" -#: mod/admin.php:728 +#: mod/admin.php:871 msgid "Link to an icon that will be used for browsers." msgstr "" -#: mod/admin.php:729 +#: mod/admin.php:872 msgid "Touch icon" msgstr "" -#: mod/admin.php:729 +#: mod/admin.php:872 msgid "Link to an icon that will be used for tablets and mobiles." msgstr "" -#: mod/admin.php:730 +#: mod/admin.php:873 msgid "Additional Info" msgstr "" -#: mod/admin.php:730 +#: mod/admin.php:873 #, php-format msgid "" "For public servers: you can add additional information here that will be " "listed at %s/siteinfo." msgstr "" -#: mod/admin.php:731 +#: mod/admin.php:874 msgid "System language" msgstr "" -#: mod/admin.php:732 +#: mod/admin.php:875 msgid "System theme" msgstr "" -#: mod/admin.php:732 +#: mod/admin.php:875 msgid "" "Default system theme - may be over-ridden by user profiles - change theme settings" msgstr "" -#: mod/admin.php:733 +#: mod/admin.php:876 msgid "Mobile system theme" msgstr "" -#: mod/admin.php:733 +#: mod/admin.php:876 msgid "Theme for mobile devices" msgstr "" -#: mod/admin.php:734 +#: mod/admin.php:877 msgid "SSL link policy" msgstr "" -#: mod/admin.php:734 +#: mod/admin.php:877 msgid "Determines whether generated links should be forced to use SSL" msgstr "" -#: mod/admin.php:735 +#: mod/admin.php:878 msgid "Force SSL" msgstr "" -#: mod/admin.php:735 +#: mod/admin.php:878 msgid "" "Force all Non-SSL requests to SSL - Attention: on some systems it could lead " "to endless loops." msgstr "" -#: mod/admin.php:736 +#: mod/admin.php:879 msgid "Old style 'Share'" msgstr "" -#: mod/admin.php:736 +#: mod/admin.php:879 msgid "Deactivates the bbcode element 'share' for repeating items." msgstr "" -#: mod/admin.php:737 +#: mod/admin.php:880 msgid "Hide help entry from navigation menu" msgstr "" -#: mod/admin.php:737 +#: mod/admin.php:880 msgid "" "Hides the menu entry for the Help pages from the navigation menu. You can " "still access it calling /help directly." msgstr "" -#: mod/admin.php:738 +#: mod/admin.php:881 msgid "Single user instance" msgstr "" -#: mod/admin.php:738 +#: mod/admin.php:881 msgid "Make this instance multi-user or single-user for the named user" msgstr "" -#: mod/admin.php:739 +#: mod/admin.php:882 msgid "Maximum image size" msgstr "" -#: mod/admin.php:739 +#: mod/admin.php:882 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "" -#: mod/admin.php:740 +#: mod/admin.php:883 msgid "Maximum image length" msgstr "" -#: mod/admin.php:740 +#: mod/admin.php:883 msgid "" "Maximum length in pixels of the longest side of uploaded images. Default is " "-1, which means no limits." msgstr "" -#: mod/admin.php:741 +#: mod/admin.php:884 msgid "JPEG image quality" msgstr "" -#: mod/admin.php:741 +#: mod/admin.php:884 msgid "" "Uploaded JPEGS will be saved at this quality setting [0-100]. Default is " "100, which is full quality." msgstr "" -#: mod/admin.php:743 +#: mod/admin.php:886 msgid "Register policy" msgstr "" -#: mod/admin.php:744 +#: mod/admin.php:887 msgid "Maximum Daily Registrations" msgstr "" -#: mod/admin.php:744 +#: mod/admin.php:887 msgid "" "If registration is permitted above, this sets the maximum number of new user " "registrations to accept per day. If register is set to closed, this setting " "has no effect." msgstr "" -#: mod/admin.php:745 +#: mod/admin.php:888 msgid "Register text" msgstr "" -#: mod/admin.php:745 +#: mod/admin.php:888 msgid "Will be displayed prominently on the registration page." msgstr "" -#: mod/admin.php:746 +#: mod/admin.php:889 msgid "Accounts abandoned after x days" msgstr "" -#: mod/admin.php:746 +#: mod/admin.php:889 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "" -#: mod/admin.php:747 +#: mod/admin.php:890 msgid "Allowed friend domains" msgstr "" -#: mod/admin.php:747 +#: mod/admin.php:890 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "" -#: mod/admin.php:748 +#: mod/admin.php:891 msgid "Allowed email domains" msgstr "" -#: mod/admin.php:748 +#: mod/admin.php:891 msgid "" "Comma separated list of domains which are allowed in email addresses for " "registrations to this site. Wildcards are accepted. Empty to allow any " "domains" msgstr "" -#: mod/admin.php:749 +#: mod/admin.php:892 msgid "Block public" msgstr "" -#: mod/admin.php:749 +#: mod/admin.php:892 msgid "" "Check to block public access to all otherwise public personal pages on this " "site unless you are currently logged in." msgstr "" -#: mod/admin.php:750 +#: mod/admin.php:893 msgid "Force publish" msgstr "" -#: mod/admin.php:750 +#: mod/admin.php:893 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "" -#: mod/admin.php:751 +#: mod/admin.php:894 msgid "Global directory URL" msgstr "" -#: mod/admin.php:751 +#: mod/admin.php:894 msgid "" "URL to the global directory. If this is not set, the global directory is " "completely unavailable to the application." msgstr "" -#: mod/admin.php:752 +#: mod/admin.php:895 msgid "Allow threaded items" msgstr "" -#: mod/admin.php:752 +#: mod/admin.php:895 msgid "Allow infinite level threading for items on this site." msgstr "" -#: mod/admin.php:753 +#: mod/admin.php:896 msgid "Private posts by default for new users" msgstr "" -#: mod/admin.php:753 +#: mod/admin.php:896 msgid "" "Set default post permissions for all new members to the default privacy " "group rather than public." msgstr "" -#: mod/admin.php:754 +#: mod/admin.php:897 msgid "Don't include post content in email notifications" msgstr "" -#: mod/admin.php:754 +#: mod/admin.php:897 msgid "" "Don't include the content of a post/comment/private message/etc. in the " "email notifications that are sent out from this site, as a privacy measure." msgstr "" -#: mod/admin.php:755 +#: mod/admin.php:898 msgid "Disallow public access to addons listed in the apps menu." msgstr "" -#: mod/admin.php:755 +#: mod/admin.php:898 msgid "" "Checking this box will restrict addons listed in the apps menu to members " "only." msgstr "" -#: mod/admin.php:756 +#: mod/admin.php:899 msgid "Don't embed private images in posts" msgstr "" -#: mod/admin.php:756 +#: mod/admin.php:899 msgid "" "Don't replace locally-hosted private photos in posts with an embedded copy " "of the image. This means that contacts who receive posts containing private " "photos will have to authenticate and load each image, which may take a while." msgstr "" -#: mod/admin.php:757 +#: mod/admin.php:900 msgid "Allow Users to set remote_self" msgstr "" -#: mod/admin.php:757 +#: mod/admin.php:900 msgid "" "With checking this, every user is allowed to mark every contact as a " "remote_self in the repair contact dialog. Setting this flag on a contact " "causes mirroring every posting of that contact in the users stream." msgstr "" -#: mod/admin.php:758 +#: mod/admin.php:901 msgid "Block multiple registrations" msgstr "" -#: mod/admin.php:758 +#: mod/admin.php:901 msgid "Disallow users to register additional accounts for use as pages." msgstr "" -#: mod/admin.php:759 +#: mod/admin.php:902 msgid "OpenID support" msgstr "" -#: mod/admin.php:759 +#: mod/admin.php:902 msgid "OpenID support for registration and logins." msgstr "" -#: mod/admin.php:760 +#: mod/admin.php:903 msgid "Fullname check" msgstr "" -#: mod/admin.php:760 +#: mod/admin.php:903 msgid "" "Force users to register with a space between firstname and lastname in Full " "name, as an antispam measure" msgstr "" -#: mod/admin.php:761 +#: mod/admin.php:904 msgid "UTF-8 Regular expressions" msgstr "" -#: mod/admin.php:761 +#: mod/admin.php:904 msgid "Use PHP UTF8 regular expressions" msgstr "" -#: mod/admin.php:762 +#: mod/admin.php:905 msgid "Community Page Style" msgstr "" -#: mod/admin.php:762 +#: mod/admin.php:905 msgid "" "Type of community page to show. 'Global community' shows every public " "posting from an open distributed network that arrived on this server." msgstr "" -#: mod/admin.php:763 +#: mod/admin.php:906 msgid "Posts per user on community page" msgstr "" -#: mod/admin.php:763 +#: mod/admin.php:906 msgid "" "The maximum number of posts per user on the community page. (Not valid for " "'Global Community')" msgstr "" -#: mod/admin.php:764 +#: mod/admin.php:907 msgid "Enable OStatus support" msgstr "" -#: mod/admin.php:764 +#: mod/admin.php:907 msgid "" "Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All " "communications in OStatus are public, so privacy warnings will be " "occasionally displayed." msgstr "" -#: mod/admin.php:765 +#: mod/admin.php:908 msgid "OStatus conversation completion interval" msgstr "" -#: mod/admin.php:765 +#: mod/admin.php:908 msgid "" "How often shall the poller check for new entries in OStatus conversations? " "This can be a very ressource task." msgstr "" -#: mod/admin.php:766 +#: mod/admin.php:909 msgid "OStatus support can only be enabled if threading is enabled." msgstr "" -#: mod/admin.php:768 +#: mod/admin.php:911 msgid "" "Diaspora support can't be enabled because Friendica was installed into a sub " "directory." msgstr "" -#: mod/admin.php:769 +#: mod/admin.php:912 msgid "Enable Diaspora support" msgstr "" -#: mod/admin.php:769 +#: mod/admin.php:912 msgid "Provide built-in Diaspora network compatibility." msgstr "" -#: mod/admin.php:770 +#: mod/admin.php:913 msgid "Only allow Friendica contacts" msgstr "" -#: mod/admin.php:770 +#: mod/admin.php:913 msgid "" "All contacts must use Friendica protocols. All other built-in communication " "protocols disabled." msgstr "" -#: mod/admin.php:771 +#: mod/admin.php:914 msgid "Verify SSL" msgstr "" -#: mod/admin.php:771 +#: mod/admin.php:914 msgid "" "If you wish, you can turn on strict certificate checking. This will mean you " "cannot connect (at all) to self-signed SSL sites." msgstr "" -#: mod/admin.php:772 +#: mod/admin.php:915 msgid "Proxy user" msgstr "" -#: mod/admin.php:773 +#: mod/admin.php:916 msgid "Proxy URL" msgstr "" -#: mod/admin.php:774 +#: mod/admin.php:917 msgid "Network timeout" msgstr "" -#: mod/admin.php:774 +#: mod/admin.php:917 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "" -#: mod/admin.php:775 +#: mod/admin.php:918 msgid "Delivery interval" msgstr "" -#: mod/admin.php:775 +#: mod/admin.php:918 msgid "" "Delay background delivery processes by this many seconds to reduce system " "load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 " "for large dedicated servers." msgstr "" -#: mod/admin.php:776 +#: mod/admin.php:919 msgid "Poll interval" msgstr "" -#: mod/admin.php:776 +#: mod/admin.php:919 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "" -#: mod/admin.php:777 +#: mod/admin.php:920 msgid "Maximum Load Average" msgstr "" -#: mod/admin.php:777 +#: mod/admin.php:920 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "" -#: mod/admin.php:778 +#: mod/admin.php:921 msgid "Maximum Load Average (Frontend)" msgstr "" -#: mod/admin.php:778 +#: mod/admin.php:921 msgid "Maximum system load before the frontend quits service - default 50." msgstr "" -#: mod/admin.php:779 +#: mod/admin.php:922 msgid "Maximum table size for optimization" msgstr "" -#: mod/admin.php:779 +#: mod/admin.php:922 msgid "" "Maximum table size (in MB) for the automatic optimization - default 100 MB. " "Enter -1 to disable it." msgstr "" -#: mod/admin.php:780 +#: mod/admin.php:923 msgid "Minimum level of fragmentation" msgstr "" -#: mod/admin.php:780 +#: mod/admin.php:923 msgid "" "Minimum fragmenation level to start the automatic optimization - default " "value is 30%." msgstr "" -#: mod/admin.php:782 +#: mod/admin.php:925 msgid "Periodical check of global contacts" msgstr "" -#: mod/admin.php:782 +#: mod/admin.php:925 msgid "" "If enabled, the global contacts are checked periodically for missing or " "outdated data and the vitality of the contacts and servers." msgstr "" -#: mod/admin.php:783 +#: mod/admin.php:926 msgid "Days between requery" msgstr "" -#: mod/admin.php:783 +#: mod/admin.php:926 msgid "Number of days after which a server is requeried for his contacts." msgstr "" -#: mod/admin.php:784 +#: mod/admin.php:927 msgid "Discover contacts from other servers" msgstr "" -#: mod/admin.php:784 +#: mod/admin.php:927 msgid "" "Periodically query other servers for contacts. You can choose between " "'users': the users on the remote system, 'Global Contacts': active contacts " @@ -2723,32 +2702,32 @@ msgid "" "Global Contacts'." msgstr "" -#: mod/admin.php:785 +#: mod/admin.php:928 msgid "Timeframe for fetching global contacts" msgstr "" -#: mod/admin.php:785 +#: mod/admin.php:928 msgid "" "When the discovery is activated, this value defines the timeframe for the " "activity of the global contacts that are fetched from other servers." msgstr "" -#: mod/admin.php:786 +#: mod/admin.php:929 msgid "Search the local directory" msgstr "" -#: mod/admin.php:786 +#: mod/admin.php:929 msgid "" "Search the local directory instead of the global directory. When searching " "locally, every search will be executed on the global directory in the " "background. This improves the search results when the search is repeated." msgstr "" -#: mod/admin.php:788 +#: mod/admin.php:931 msgid "Publish server information" msgstr "" -#: mod/admin.php:788 +#: mod/admin.php:931 msgid "" "If enabled, general server and usage data will be published. The data " "contains the name and version of the server, number of users with public " @@ -2756,204 +2735,204 @@ msgid "" "href='http://the-federation.info/'>the-federation.info for details." msgstr "" -#: mod/admin.php:790 +#: mod/admin.php:933 msgid "Use MySQL full text engine" msgstr "" -#: mod/admin.php:790 +#: mod/admin.php:933 msgid "" "Activates the full text engine. Speeds up search - but can only search for " "four and more characters." msgstr "" -#: mod/admin.php:791 +#: mod/admin.php:934 msgid "Suppress Language" msgstr "" -#: mod/admin.php:791 +#: mod/admin.php:934 msgid "Suppress language information in meta information about a posting." msgstr "" -#: mod/admin.php:792 +#: mod/admin.php:935 msgid "Suppress Tags" msgstr "" -#: mod/admin.php:792 +#: mod/admin.php:935 msgid "Suppress showing a list of hashtags at the end of the posting." msgstr "" -#: mod/admin.php:793 +#: mod/admin.php:936 msgid "Path to item cache" msgstr "" -#: mod/admin.php:793 +#: mod/admin.php:936 msgid "The item caches buffers generated bbcode and external images." msgstr "" -#: mod/admin.php:794 +#: mod/admin.php:937 msgid "Cache duration in seconds" msgstr "" -#: mod/admin.php:794 +#: mod/admin.php:937 msgid "" "How long should the cache files be hold? Default value is 86400 seconds (One " "day). To disable the item cache, set the value to -1." msgstr "" -#: mod/admin.php:795 +#: mod/admin.php:938 msgid "Maximum numbers of comments per post" msgstr "" -#: mod/admin.php:795 +#: mod/admin.php:938 msgid "How much comments should be shown for each post? Default value is 100." msgstr "" -#: mod/admin.php:796 +#: mod/admin.php:939 msgid "Path for lock file" msgstr "" -#: mod/admin.php:796 +#: mod/admin.php:939 msgid "" "The lock file is used to avoid multiple pollers at one time. Only define a " "folder here." msgstr "" -#: mod/admin.php:797 +#: mod/admin.php:940 msgid "Temp path" msgstr "" -#: mod/admin.php:797 +#: mod/admin.php:940 msgid "" "If you have a restricted system where the webserver can't access the system " "temp path, enter another path here." msgstr "" -#: mod/admin.php:798 +#: mod/admin.php:941 msgid "Base path to installation" msgstr "" -#: mod/admin.php:798 +#: mod/admin.php:941 msgid "" "If the system cannot detect the correct path to your installation, enter the " "correct path here. This setting should only be set if you are using a " "restricted system and symbolic links to your webroot." msgstr "" -#: mod/admin.php:799 +#: mod/admin.php:942 msgid "Disable picture proxy" msgstr "" -#: mod/admin.php:799 +#: mod/admin.php:942 msgid "" "The picture proxy increases performance and privacy. It shouldn't be used on " "systems with very low bandwith." msgstr "" -#: mod/admin.php:800 +#: mod/admin.php:943 msgid "Enable old style pager" msgstr "" -#: mod/admin.php:800 +#: mod/admin.php:943 msgid "" "The old style pager has page numbers but slows down massively the page speed." msgstr "" -#: mod/admin.php:801 +#: mod/admin.php:944 msgid "Only search in tags" msgstr "" -#: mod/admin.php:801 +#: mod/admin.php:944 msgid "On large systems the text search can slow down the system extremely." msgstr "" -#: mod/admin.php:803 +#: mod/admin.php:946 msgid "New base url" msgstr "" -#: mod/admin.php:803 +#: mod/admin.php:946 msgid "" "Change base url for this server. Sends relocate message to all DFRN contacts " "of all users." msgstr "" -#: mod/admin.php:805 +#: mod/admin.php:948 msgid "RINO Encryption" msgstr "" -#: mod/admin.php:805 +#: mod/admin.php:948 msgid "Encryption layer between nodes." msgstr "" -#: mod/admin.php:806 +#: mod/admin.php:949 msgid "Embedly API key" msgstr "" -#: mod/admin.php:806 +#: mod/admin.php:949 msgid "" "Embedly is used to fetch additional data for " "web pages. This is an optional parameter." msgstr "" -#: mod/admin.php:824 +#: mod/admin.php:978 msgid "Update has been marked successful" msgstr "" -#: mod/admin.php:832 +#: mod/admin.php:986 #, php-format msgid "Database structure update %s was successfully applied." msgstr "" -#: mod/admin.php:835 +#: mod/admin.php:989 #, php-format msgid "Executing of database structure update %s failed with error: %s" msgstr "" -#: mod/admin.php:847 +#: mod/admin.php:1001 #, php-format msgid "Executing %s failed with error: %s" msgstr "" -#: mod/admin.php:850 +#: mod/admin.php:1004 #, php-format msgid "Update %s was successfully applied." msgstr "" -#: mod/admin.php:854 +#: mod/admin.php:1008 #, php-format msgid "Update %s did not return a status. Unknown if it succeeded." msgstr "" -#: mod/admin.php:856 +#: mod/admin.php:1010 #, php-format msgid "There was no additional update function %s that needed to be called." msgstr "" -#: mod/admin.php:875 +#: mod/admin.php:1029 msgid "No failed updates." msgstr "" -#: mod/admin.php:876 +#: mod/admin.php:1030 msgid "Check database structure" msgstr "" -#: mod/admin.php:881 +#: mod/admin.php:1035 msgid "Failed Updates" msgstr "" -#: mod/admin.php:882 +#: mod/admin.php:1036 msgid "" "This does not include updates prior to 1139, which did not return a status." msgstr "" -#: mod/admin.php:883 +#: mod/admin.php:1037 msgid "Mark success (if update was manually applied)" msgstr "" -#: mod/admin.php:884 +#: mod/admin.php:1038 msgid "Attempt to execute this update step automatically" msgstr "" -#: mod/admin.php:916 +#: mod/admin.php:1069 #, php-format msgid "" "\n" @@ -2961,7 +2940,7 @@ msgid "" "\t\t\t\tthe administrator of %2$s has set up an account for you." msgstr "" -#: mod/admin.php:919 +#: mod/admin.php:1072 #, php-format msgid "" "\n" @@ -2997,232 +2976,237 @@ msgid "" "\t\t\tThank you and welcome to %4$s." msgstr "" -#: mod/admin.php:951 include/user.php:423 +#: mod/admin.php:1104 include/user.php:423 #, php-format msgid "Registration details for %s" msgstr "" -#: mod/admin.php:963 +#: mod/admin.php:1116 #, php-format msgid "%s user blocked/unblocked" msgid_plural "%s users blocked/unblocked" msgstr[0] "" msgstr[1] "" -#: mod/admin.php:970 +#: mod/admin.php:1123 #, php-format msgid "%s user deleted" msgid_plural "%s users deleted" msgstr[0] "" msgstr[1] "" -#: mod/admin.php:1009 +#: mod/admin.php:1170 #, php-format msgid "User '%s' deleted" msgstr "" -#: mod/admin.php:1017 +#: mod/admin.php:1178 #, php-format msgid "User '%s' unblocked" msgstr "" -#: mod/admin.php:1017 +#: mod/admin.php:1178 #, php-format msgid "User '%s' blocked" msgstr "" -#: mod/admin.php:1110 +#: mod/admin.php:1271 msgid "Add User" msgstr "" -#: mod/admin.php:1111 +#: mod/admin.php:1272 msgid "select all" msgstr "" -#: mod/admin.php:1112 +#: mod/admin.php:1273 msgid "User registrations waiting for confirm" msgstr "" -#: mod/admin.php:1113 +#: mod/admin.php:1274 msgid "User waiting for permanent deletion" msgstr "" -#: mod/admin.php:1114 +#: mod/admin.php:1275 msgid "Request date" msgstr "" -#: mod/admin.php:1114 mod/admin.php:1126 mod/admin.php:1127 mod/admin.php:1142 +#: mod/admin.php:1275 mod/admin.php:1287 mod/admin.php:1288 mod/admin.php:1303 #: include/contact_selectors.php:79 include/contact_selectors.php:86 msgid "Email" msgstr "" -#: mod/admin.php:1115 +#: mod/admin.php:1276 msgid "No registrations." msgstr "" -#: mod/admin.php:1117 +#: mod/admin.php:1278 msgid "Deny" msgstr "" -#: mod/admin.php:1121 +#: mod/admin.php:1282 msgid "Site admin" msgstr "" -#: mod/admin.php:1122 +#: mod/admin.php:1283 msgid "Account expired" msgstr "" -#: mod/admin.php:1125 +#: mod/admin.php:1286 msgid "New User" msgstr "" -#: mod/admin.php:1126 mod/admin.php:1127 +#: mod/admin.php:1287 mod/admin.php:1288 msgid "Register date" msgstr "" -#: mod/admin.php:1126 mod/admin.php:1127 +#: mod/admin.php:1287 mod/admin.php:1288 msgid "Last login" msgstr "" -#: mod/admin.php:1126 mod/admin.php:1127 +#: mod/admin.php:1287 mod/admin.php:1288 msgid "Last item" msgstr "" -#: mod/admin.php:1126 +#: mod/admin.php:1287 msgid "Deleted since" msgstr "" -#: mod/admin.php:1127 mod/settings.php:41 +#: mod/admin.php:1288 mod/settings.php:41 msgid "Account" msgstr "" -#: mod/admin.php:1129 +#: mod/admin.php:1290 msgid "" "Selected users will be deleted!\\n\\nEverything these users had posted on " "this site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: mod/admin.php:1130 +#: mod/admin.php:1291 msgid "" "The user {0} will be deleted!\\n\\nEverything this user has posted on this " "site will be permanently deleted!\\n\\nAre you sure?" msgstr "" -#: mod/admin.php:1140 +#: mod/admin.php:1301 msgid "Name of the new user." msgstr "" -#: mod/admin.php:1141 +#: mod/admin.php:1302 msgid "Nickname" msgstr "" -#: mod/admin.php:1141 +#: mod/admin.php:1302 msgid "Nickname of the new user." msgstr "" -#: mod/admin.php:1142 +#: mod/admin.php:1303 msgid "Email address of the new user." msgstr "" -#: mod/admin.php:1175 +#: mod/admin.php:1346 #, php-format msgid "Plugin %s disabled." msgstr "" -#: mod/admin.php:1179 +#: mod/admin.php:1350 #, php-format msgid "Plugin %s enabled." msgstr "" -#: mod/admin.php:1189 mod/admin.php:1413 +#: mod/admin.php:1360 mod/admin.php:1596 msgid "Disable" msgstr "" -#: mod/admin.php:1191 mod/admin.php:1415 +#: mod/admin.php:1362 mod/admin.php:1598 msgid "Enable" msgstr "" -#: mod/admin.php:1214 mod/admin.php:1459 +#: mod/admin.php:1385 mod/admin.php:1643 msgid "Toggle" msgstr "" -#: mod/admin.php:1222 mod/admin.php:1469 +#: mod/admin.php:1393 mod/admin.php:1652 msgid "Author: " msgstr "" -#: mod/admin.php:1223 mod/admin.php:1470 +#: mod/admin.php:1394 mod/admin.php:1653 msgid "Maintainer: " msgstr "" -#: mod/admin.php:1275 -#: view/smarty3/compiled/f835364006028b1061f37be121c9bd9db5fa50a9.file.admin_plugins.tpl.php:42 +#: mod/admin.php:1446 msgid "Reload active plugins" msgstr "" -#: mod/admin.php:1373 +#: mod/admin.php:1451 +#, php-format +msgid "" +"There are currently no plugins available on your node. You can find the " +"official plugin repository at %1$s and might find other interesting plugins " +"in the open plugin registry at %2$s" +msgstr "" + +#: mod/admin.php:1556 msgid "No themes found." msgstr "" -#: mod/admin.php:1451 +#: mod/admin.php:1634 msgid "Screenshot" msgstr "" -#: mod/admin.php:1511 +#: mod/admin.php:1694 msgid "Reload active themes" msgstr "" -#: mod/admin.php:1515 +#: mod/admin.php:1699 +#, php-format +msgid "No themes found on the system. They should be paced in %1$s" +msgstr "" + +#: mod/admin.php:1700 msgid "[Experimental]" msgstr "" -#: mod/admin.php:1516 +#: mod/admin.php:1701 msgid "[Unsupported]" msgstr "" -#: mod/admin.php:1543 +#: mod/admin.php:1725 msgid "Log settings updated." msgstr "" -#: mod/admin.php:1599 +#: mod/admin.php:1762 msgid "Clear" msgstr "" -#: mod/admin.php:1605 +#: mod/admin.php:1767 msgid "Enable Debugging" msgstr "" -#: mod/admin.php:1606 +#: mod/admin.php:1768 msgid "Log file" msgstr "" -#: mod/admin.php:1606 +#: mod/admin.php:1768 msgid "" "Must be writable by web server. Relative to your Friendica top-level " "directory." msgstr "" -#: mod/admin.php:1607 +#: mod/admin.php:1769 msgid "Log level" msgstr "" -#: mod/admin.php:1657 include/acl_selectors.php:348 -msgid "Close" +#: mod/admin.php:1772 +msgid "PHP logging" msgstr "" -#: mod/admin.php:1663 -msgid "FTP Host" -msgstr "" - -#: mod/admin.php:1664 -msgid "FTP Path" -msgstr "" - -#: mod/admin.php:1665 -msgid "FTP User" -msgstr "" - -#: mod/admin.php:1666 -msgid "FTP Password" +#: mod/admin.php:1773 +msgid "" +"To enable logging of PHP errors and warnings you can add the following to " +"the .htconfig.php file of your installation. The filename set in the " +"'error_log' line is relative to the friendica top-level directory and must " +"be writeable by the web server. The option '1' for 'log_errors' and " +"'display_errors' is to enable these options, set to '0' to disable them." msgstr "" #: mod/network.php:146 @@ -3242,51 +3226,51 @@ msgstr "" msgid "add" msgstr "" -#: mod/network.php:362 +#: mod/network.php:365 msgid "Commented Order" msgstr "" -#: mod/network.php:365 +#: mod/network.php:368 msgid "Sort by Comment Date" msgstr "" -#: mod/network.php:370 +#: mod/network.php:373 msgid "Posted Order" msgstr "" -#: mod/network.php:373 +#: mod/network.php:376 msgid "Sort by Post Date" msgstr "" -#: mod/network.php:384 +#: mod/network.php:387 msgid "Posts that mention or involve you" msgstr "" -#: mod/network.php:392 +#: mod/network.php:395 msgid "New" msgstr "" -#: mod/network.php:395 +#: mod/network.php:398 msgid "Activity Stream - by date" msgstr "" -#: mod/network.php:403 +#: mod/network.php:406 msgid "Shared Links" msgstr "" -#: mod/network.php:406 +#: mod/network.php:409 msgid "Interesting Links" msgstr "" -#: mod/network.php:414 +#: mod/network.php:417 msgid "Starred" msgstr "" -#: mod/network.php:417 +#: mod/network.php:420 msgid "Favourite Posts" msgstr "" -#: mod/network.php:476 +#: mod/network.php:479 #, php-format msgid "Warning: This group contains %s member from an insecure network." msgid_plural "" @@ -3294,24 +3278,24 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: mod/network.php:479 +#: mod/network.php:482 msgid "Private messages to this group are at risk of public disclosure." msgstr "" -#: mod/network.php:546 mod/content.php:119 +#: mod/network.php:549 mod/content.php:119 msgid "No such group" msgstr "" -#: mod/network.php:574 mod/content.php:135 +#: mod/network.php:580 mod/content.php:135 #, php-format msgid "Group: %s" msgstr "" -#: mod/network.php:606 +#: mod/network.php:608 msgid "Private messages to this person are at risk of public disclosure." msgstr "" -#: mod/network.php:611 +#: mod/network.php:613 msgid "Invalid contact." msgstr "" @@ -3562,7 +3546,7 @@ msgstr "" #: mod/events.php:572 mod/content.php:721 mod/editpost.php:145 #: mod/photos.php:1631 mod/photos.php:1679 mod/photos.php:1767 -#: object/Item.php:719 include/conversation.php:1217 +#: object/Item.php:719 include/conversation.php:1216 msgid "Preview" msgstr "" @@ -3612,9 +3596,9 @@ msgid_plural "comments" msgstr[0] "" msgstr[1] "" -#: mod/content.php:608 boot.php:788 object/Item.php:422 +#: mod/content.php:608 boot.php:863 object/Item.php:422 #: include/contact_widgets.php:242 include/forums.php:110 -#: include/items.php:5181 view/theme/vier/theme.php:264 +#: include/items.php:5184 view/theme/vier/theme.php:264 msgid "show more" msgstr "" @@ -3652,7 +3636,7 @@ msgid "This is you" msgstr "" #: mod/content.php:711 mod/photos.php:1629 mod/photos.php:1677 -#: mod/photos.php:1765 boot.php:787 object/Item.php:393 object/Item.php:709 +#: mod/photos.php:1765 boot.php:862 object/Item.php:393 object/Item.php:709 msgid "Comment" msgstr "" @@ -4083,19 +4067,19 @@ msgid "" "your site allow private mail from unknown senders." msgstr "" -#: mod/help.php:31 +#: mod/help.php:41 msgid "Help:" msgstr "" -#: mod/help.php:36 include/nav.php:113 view/theme/vier/theme.php:302 +#: mod/help.php:47 include/nav.php:113 view/theme/vier/theme.php:302 msgid "Help" msgstr "" -#: mod/help.php:42 mod/p.php:16 mod/p.php:25 index.php:270 +#: mod/help.php:53 mod/p.php:16 mod/p.php:25 index.php:270 msgid "Not Found" msgstr "" -#: mod/help.php:45 index.php:273 +#: mod/help.php:56 index.php:273 msgid "Page not found." msgstr "" @@ -4365,7 +4349,7 @@ msgstr "" msgid "Built-in support for %s connectivity is %s" msgstr "" -#: mod/settings.php:811 mod/dfrn_request.php:858 +#: mod/settings.php:811 mod/dfrn_request.php:865 #: include/contact_selectors.php:80 msgid "Diaspora" msgstr "" @@ -4506,8 +4490,8 @@ msgstr "" #: mod/settings.php:976 view/theme/cleanzero/config.php:82 #: view/theme/dispy/config.php:72 view/theme/quattro/config.php:66 -#: view/theme/diabook/config.php:150 view/theme/clean/config.php:85 -#: view/theme/vier/config.php:109 view/theme/duepuntozero/config.php:61 +#: view/theme/diabook/config.php:150 view/theme/vier/config.php:109 +#: view/theme/duepuntozero/config.php:61 msgid "Theme settings" msgstr "" @@ -4686,7 +4670,7 @@ msgstr "" msgid "Basic Settings" msgstr "" -#: mod/settings.php:1210 include/identity.php:587 +#: mod/settings.php:1210 include/identity.php:588 msgid "Full Name:" msgstr "" @@ -4854,151 +4838,153 @@ msgstr "" msgid "Resend relocate message to contacts" msgstr "" -#: mod/dfrn_request.php:95 +#: mod/dfrn_request.php:96 msgid "This introduction has already been accepted." msgstr "" -#: mod/dfrn_request.php:120 mod/dfrn_request.php:519 +#: mod/dfrn_request.php:119 mod/dfrn_request.php:516 msgid "Profile location is not valid or does not contain profile information." msgstr "" -#: mod/dfrn_request.php:125 mod/dfrn_request.php:524 +#: mod/dfrn_request.php:124 mod/dfrn_request.php:521 msgid "Warning: profile location has no identifiable owner name." msgstr "" -#: mod/dfrn_request.php:127 mod/dfrn_request.php:526 +#: mod/dfrn_request.php:126 mod/dfrn_request.php:523 msgid "Warning: profile location has no profile photo." msgstr "" -#: mod/dfrn_request.php:130 mod/dfrn_request.php:529 +#: mod/dfrn_request.php:129 mod/dfrn_request.php:526 #, php-format msgid "%d required parameter was not found at the given location" msgid_plural "%d required parameters were not found at the given location" msgstr[0] "" msgstr[1] "" -#: mod/dfrn_request.php:173 +#: mod/dfrn_request.php:172 msgid "Introduction complete." msgstr "" -#: mod/dfrn_request.php:215 +#: mod/dfrn_request.php:214 msgid "Unrecoverable protocol error." msgstr "" -#: mod/dfrn_request.php:243 +#: mod/dfrn_request.php:242 msgid "Profile unavailable." msgstr "" -#: mod/dfrn_request.php:268 +#: mod/dfrn_request.php:267 #, php-format msgid "%s has received too many connection requests today." msgstr "" -#: mod/dfrn_request.php:269 +#: mod/dfrn_request.php:268 msgid "Spam protection measures have been invoked." msgstr "" -#: mod/dfrn_request.php:270 +#: mod/dfrn_request.php:269 msgid "Friends are advised to please try again in 24 hours." msgstr "" -#: mod/dfrn_request.php:332 +#: mod/dfrn_request.php:331 msgid "Invalid locator" msgstr "" -#: mod/dfrn_request.php:341 +#: mod/dfrn_request.php:340 msgid "Invalid email address." msgstr "" -#: mod/dfrn_request.php:368 +#: mod/dfrn_request.php:367 msgid "This account has not been configured for email. Request failed." msgstr "" -#: mod/dfrn_request.php:464 -msgid "Unable to resolve your name at the provided location." -msgstr "" - -#: mod/dfrn_request.php:477 +#: mod/dfrn_request.php:474 msgid "You have already introduced yourself here." msgstr "" -#: mod/dfrn_request.php:481 +#: mod/dfrn_request.php:478 #, php-format msgid "Apparently you are already friends with %s." msgstr "" -#: mod/dfrn_request.php:502 +#: mod/dfrn_request.php:499 msgid "Invalid profile URL." msgstr "" -#: mod/dfrn_request.php:508 include/follow.php:72 +#: mod/dfrn_request.php:505 include/follow.php:72 msgid "Disallowed profile URL." msgstr "" -#: mod/dfrn_request.php:599 +#: mod/dfrn_request.php:596 msgid "Your introduction has been sent." msgstr "" -#: mod/dfrn_request.php:652 +#: mod/dfrn_request.php:636 +msgid "" +"Remote subscription can't be done for your network. Please subscribe " +"directly on your system." +msgstr "" + +#: mod/dfrn_request.php:659 msgid "Please login to confirm introduction." msgstr "" -#: mod/dfrn_request.php:662 +#: mod/dfrn_request.php:669 msgid "" "Incorrect identity currently logged in. Please login to this profile." msgstr "" -#: mod/dfrn_request.php:676 mod/dfrn_request.php:693 +#: mod/dfrn_request.php:683 mod/dfrn_request.php:700 msgid "Confirm" msgstr "" -#: mod/dfrn_request.php:688 +#: mod/dfrn_request.php:695 msgid "Hide this contact" msgstr "" -#: mod/dfrn_request.php:691 +#: mod/dfrn_request.php:698 #, php-format msgid "Welcome home %s." msgstr "" -#: mod/dfrn_request.php:692 +#: mod/dfrn_request.php:699 #, php-format msgid "Please confirm your introduction/connection request to %s." msgstr "" -#: mod/dfrn_request.php:821 +#: mod/dfrn_request.php:828 msgid "" "Please enter your 'Identity Address' from one of the following supported " "communications networks:" msgstr "" -#: mod/dfrn_request.php:842 +#: mod/dfrn_request.php:849 #, php-format msgid "" "If you are not yet a member of the free social web, follow this link to find a public Friendica site and join us today." msgstr "" -#: mod/dfrn_request.php:847 +#: mod/dfrn_request.php:854 msgid "Friend/Connection Request" msgstr "" -#: mod/dfrn_request.php:848 +#: mod/dfrn_request.php:855 msgid "" "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " "testuser@identi.ca" msgstr "" -#: mod/dfrn_request.php:856 include/contact_selectors.php:76 +#: mod/dfrn_request.php:863 include/contact_selectors.php:76 msgid "Friendica" msgstr "" -#: mod/dfrn_request.php:857 +#: mod/dfrn_request.php:864 msgid "StatusNet/Federated Social Web" msgstr "" -#: mod/dfrn_request.php:859 +#: mod/dfrn_request.php:866 #, php-format msgid "" " - please do not use this form. Instead, enter %s into your Diaspora search " @@ -5086,7 +5072,7 @@ msgstr "" msgid "Choose a nickname: " msgstr "" -#: mod/register.php:280 boot.php:1271 include/nav.php:108 +#: mod/register.php:280 boot.php:1379 include/nav.php:108 msgid "Register" msgstr "" @@ -5128,11 +5114,11 @@ msgstr "" msgid "Search results for: %s" msgstr "" -#: mod/directory.php:149 include/identity.php:309 include/identity.php:609 +#: mod/directory.php:149 include/identity.php:313 include/identity.php:610 msgid "Status:" msgstr "" -#: mod/directory.php:151 include/identity.php:311 include/identity.php:620 +#: mod/directory.php:151 include/identity.php:315 include/identity.php:621 msgid "Homepage:" msgstr "" @@ -5460,7 +5446,7 @@ msgstr "" msgid "Since [date]:" msgstr "" -#: mod/profiles.php:724 include/identity.php:618 +#: mod/profiles.php:724 include/identity.php:619 msgid "Sexual Preference:" msgstr "" @@ -5468,11 +5454,11 @@ msgstr "" msgid "Homepage URL:" msgstr "" -#: mod/profiles.php:726 include/identity.php:622 +#: mod/profiles.php:726 include/identity.php:623 msgid "Hometown:" msgstr "" -#: mod/profiles.php:727 include/identity.php:626 +#: mod/profiles.php:727 include/identity.php:627 msgid "Political Views:" msgstr "" @@ -5488,11 +5474,11 @@ msgstr "" msgid "Private Keywords:" msgstr "" -#: mod/profiles.php:731 include/identity.php:634 +#: mod/profiles.php:731 include/identity.php:635 msgid "Likes:" msgstr "" -#: mod/profiles.php:732 include/identity.php:636 +#: mod/profiles.php:732 include/identity.php:637 msgid "Dislikes:" msgstr "" @@ -5562,23 +5548,23 @@ msgstr "" msgid "Edit/Manage Profiles" msgstr "" -#: mod/profiles.php:814 include/identity.php:257 include/identity.php:283 +#: mod/profiles.php:814 include/identity.php:260 include/identity.php:286 msgid "Change profile photo" msgstr "" -#: mod/profiles.php:815 include/identity.php:258 +#: mod/profiles.php:815 include/identity.php:261 msgid "Create New Profile" msgstr "" -#: mod/profiles.php:826 include/identity.php:268 +#: mod/profiles.php:826 include/identity.php:271 msgid "Profile Image" msgstr "" -#: mod/profiles.php:828 include/identity.php:271 +#: mod/profiles.php:828 include/identity.php:274 msgid "visible to everybody" msgstr "" -#: mod/profiles.php:829 include/identity.php:272 +#: mod/profiles.php:829 include/identity.php:275 msgid "Edit visibility" msgstr "" @@ -5590,55 +5576,55 @@ msgstr "" msgid "Edit post" msgstr "" -#: mod/editpost.php:111 include/conversation.php:1185 +#: mod/editpost.php:111 include/conversation.php:1184 msgid "upload photo" msgstr "" -#: mod/editpost.php:112 include/conversation.php:1186 +#: mod/editpost.php:112 include/conversation.php:1185 msgid "Attach file" msgstr "" -#: mod/editpost.php:113 include/conversation.php:1187 +#: mod/editpost.php:113 include/conversation.php:1186 msgid "attach file" msgstr "" -#: mod/editpost.php:115 include/conversation.php:1189 +#: mod/editpost.php:115 include/conversation.php:1188 msgid "web link" msgstr "" -#: mod/editpost.php:116 include/conversation.php:1190 +#: mod/editpost.php:116 include/conversation.php:1189 msgid "Insert video link" msgstr "" -#: mod/editpost.php:117 include/conversation.php:1191 +#: mod/editpost.php:117 include/conversation.php:1190 msgid "video link" msgstr "" -#: mod/editpost.php:118 include/conversation.php:1192 +#: mod/editpost.php:118 include/conversation.php:1191 msgid "Insert audio link" msgstr "" -#: mod/editpost.php:119 include/conversation.php:1193 +#: mod/editpost.php:119 include/conversation.php:1192 msgid "audio link" msgstr "" -#: mod/editpost.php:120 include/conversation.php:1194 +#: mod/editpost.php:120 include/conversation.php:1193 msgid "Set your location" msgstr "" -#: mod/editpost.php:121 include/conversation.php:1195 +#: mod/editpost.php:121 include/conversation.php:1194 msgid "set location" msgstr "" -#: mod/editpost.php:122 include/conversation.php:1196 +#: mod/editpost.php:122 include/conversation.php:1195 msgid "Clear browser location" msgstr "" -#: mod/editpost.php:123 include/conversation.php:1197 +#: mod/editpost.php:123 include/conversation.php:1196 msgid "clear location" msgstr "" -#: mod/editpost.php:125 include/conversation.php:1203 +#: mod/editpost.php:125 include/conversation.php:1202 msgid "Permission settings" msgstr "" @@ -5646,15 +5632,15 @@ msgstr "" msgid "CC: email addresses" msgstr "" -#: mod/editpost.php:134 include/conversation.php:1212 +#: mod/editpost.php:134 include/conversation.php:1211 msgid "Public post" msgstr "" -#: mod/editpost.php:137 include/conversation.php:1199 +#: mod/editpost.php:137 include/conversation.php:1198 msgid "Set title" msgstr "" -#: mod/editpost.php:139 include/conversation.php:1201 +#: mod/editpost.php:139 include/conversation.php:1200 msgid "Categories (comma-separated list)" msgstr "" @@ -6051,12 +6037,12 @@ msgstr "" msgid "Public photo" msgstr "" -#: mod/photos.php:1609 include/conversation.php:1183 +#: mod/photos.php:1609 include/conversation.php:1182 msgid "Share" msgstr "" #: mod/photos.php:1648 include/conversation.php:509 -#: include/conversation.php:1414 +#: include/conversation.php:1413 msgid "Attending" msgid_plural "Attending" msgstr[0] "" @@ -6130,60 +6116,60 @@ msgstr "" msgid "Item was not found." msgstr "" -#: boot.php:786 +#: boot.php:861 msgid "Delete this item?" msgstr "" -#: boot.php:789 +#: boot.php:864 msgid "show fewer" msgstr "" -#: boot.php:1163 +#: boot.php:1266 #, php-format msgid "Update %s failed. See error logs." msgstr "" -#: boot.php:1270 +#: boot.php:1378 msgid "Create a New Account" msgstr "" -#: boot.php:1295 include/nav.php:72 +#: boot.php:1403 include/nav.php:72 msgid "Logout" msgstr "" -#: boot.php:1298 +#: boot.php:1406 msgid "Nickname or Email address: " msgstr "" -#: boot.php:1299 +#: boot.php:1407 msgid "Password: " msgstr "" -#: boot.php:1300 +#: boot.php:1408 msgid "Remember me" msgstr "" -#: boot.php:1303 +#: boot.php:1411 msgid "Or login using OpenID: " msgstr "" -#: boot.php:1309 +#: boot.php:1417 msgid "Forgot your password?" msgstr "" -#: boot.php:1312 +#: boot.php:1420 msgid "Website Terms of Service" msgstr "" -#: boot.php:1313 +#: boot.php:1421 msgid "terms of service" msgstr "" -#: boot.php:1315 +#: boot.php:1423 msgid "Website Privacy Policy" msgstr "" -#: boot.php:1316 +#: boot.php:1424 msgid "privacy policy" msgstr "" @@ -6245,25 +6231,25 @@ msgid "" "[pre]%s[/pre]" msgstr "" -#: include/dbstructure.php:151 +#: include/dbstructure.php:153 msgid "Errors encountered creating database tables." msgstr "" -#: include/dbstructure.php:209 +#: include/dbstructure.php:230 msgid "Errors encountered performing database changes." msgstr "" -#: include/auth.php:38 +#: include/auth.php:44 msgid "Logged out." msgstr "" -#: include/auth.php:128 include/user.php:75 +#: include/auth.php:134 include/user.php:75 msgid "" "We encountered a problem while logging in with the OpenID you provided. " "Please check the correct spelling of the ID." msgstr "" -#: include/auth.php:128 include/user.php:75 +#: include/auth.php:134 include/user.php:75 msgid "The error message was:" msgstr "" @@ -6685,134 +6671,134 @@ msgstr "" msgid "%1$d %2$s ago" msgstr "" -#: include/datetime.php:474 include/items.php:2473 +#: include/datetime.php:474 include/items.php:2477 #, php-format msgid "%s's birthday" msgstr "" -#: include/datetime.php:475 include/items.php:2474 +#: include/datetime.php:475 include/items.php:2478 #, php-format msgid "Happy Birthday %s" msgstr "" -#: include/identity.php:44 +#: include/identity.php:42 msgid "Requested account is not available." msgstr "" -#: include/identity.php:97 include/identity.php:281 include/identity.php:661 +#: include/identity.php:95 include/identity.php:284 include/identity.php:662 msgid "Edit profile" msgstr "" -#: include/identity.php:241 +#: include/identity.php:244 msgid "Atom feed" msgstr "" -#: include/identity.php:246 +#: include/identity.php:249 msgid "Message" msgstr "" -#: include/identity.php:252 include/nav.php:185 +#: include/identity.php:255 include/nav.php:185 msgid "Profiles" msgstr "" -#: include/identity.php:252 +#: include/identity.php:255 msgid "Manage/edit profiles" msgstr "" -#: include/identity.php:421 include/identity.php:507 +#: include/identity.php:425 include/identity.php:509 msgid "g A l F d" msgstr "" -#: include/identity.php:422 include/identity.php:508 +#: include/identity.php:426 include/identity.php:510 msgid "F d" msgstr "" -#: include/identity.php:467 include/identity.php:554 +#: include/identity.php:471 include/identity.php:556 msgid "[today]" msgstr "" -#: include/identity.php:479 +#: include/identity.php:483 msgid "Birthday Reminders" msgstr "" -#: include/identity.php:480 +#: include/identity.php:484 msgid "Birthdays this week:" msgstr "" -#: include/identity.php:541 +#: include/identity.php:543 msgid "[No description]" msgstr "" -#: include/identity.php:565 +#: include/identity.php:567 msgid "Event Reminders" msgstr "" -#: include/identity.php:566 +#: include/identity.php:568 msgid "Events this week:" msgstr "" -#: include/identity.php:594 +#: include/identity.php:595 msgid "j F, Y" msgstr "" -#: include/identity.php:595 +#: include/identity.php:596 msgid "j F" msgstr "" -#: include/identity.php:602 +#: include/identity.php:603 msgid "Birthday:" msgstr "" -#: include/identity.php:606 +#: include/identity.php:607 msgid "Age:" msgstr "" -#: include/identity.php:615 +#: include/identity.php:616 #, php-format msgid "for %1$d %2$s" msgstr "" -#: include/identity.php:628 +#: include/identity.php:629 msgid "Religion:" msgstr "" -#: include/identity.php:632 +#: include/identity.php:633 msgid "Hobbies/Interests:" msgstr "" -#: include/identity.php:639 +#: include/identity.php:640 msgid "Contact information and Social Networks:" msgstr "" -#: include/identity.php:641 +#: include/identity.php:642 msgid "Musical interests:" msgstr "" -#: include/identity.php:643 +#: include/identity.php:644 msgid "Books, literature:" msgstr "" -#: include/identity.php:645 +#: include/identity.php:646 msgid "Television:" msgstr "" -#: include/identity.php:647 +#: include/identity.php:648 msgid "Film/dance/culture/entertainment:" msgstr "" -#: include/identity.php:649 +#: include/identity.php:650 msgid "Love/Romance:" msgstr "" -#: include/identity.php:651 +#: include/identity.php:652 msgid "Work/employment:" msgstr "" -#: include/identity.php:653 +#: include/identity.php:654 msgid "School/education:" msgstr "" -#: include/identity.php:657 +#: include/identity.php:658 msgid "Forums:" msgstr "" @@ -6828,6 +6814,38 @@ msgstr "" msgid "Only You Can See This" msgstr "" +#: include/like.php:167 include/conversation.php:122 +#: include/conversation.php:258 include/text.php:1991 +#: view/theme/diabook/theme.php:463 +msgid "event" +msgstr "" + +#: include/like.php:184 include/conversation.php:141 include/diaspora.php:2163 +#: view/theme/diabook/theme.php:480 +#, php-format +msgid "%1$s likes %2$s's %3$s" +msgstr "" + +#: include/like.php:186 include/conversation.php:144 +#, php-format +msgid "%1$s doesn't like %2$s's %3$s" +msgstr "" + +#: include/like.php:188 +#, php-format +msgid "%1$s is attending %2$s's %3$s" +msgstr "" + +#: include/like.php:190 +#, php-format +msgid "%1$s is not attending %2$s's %3$s" +msgstr "" + +#: include/like.php:192 +#, php-format +msgid "%1$s may attend %2$s's %3$s" +msgstr "" + #: include/acl_selectors.php:325 msgid "Post to Email" msgstr "" @@ -6851,6 +6869,10 @@ msgstr "" msgid "don't show" msgstr "" +#: include/acl_selectors.php:348 +msgid "Close" +msgstr "" + #: include/message.php:15 include/message.php:173 msgid "[no subject]" msgstr "" @@ -6859,31 +6881,31 @@ msgstr "" msgid "stopped following" msgstr "" -#: include/Contact.php:350 include/conversation.php:911 +#: include/Contact.php:337 include/conversation.php:911 msgid "View Status" msgstr "" -#: include/Contact.php:352 include/conversation.php:913 +#: include/Contact.php:339 include/conversation.php:913 msgid "View Photos" msgstr "" -#: include/Contact.php:353 include/conversation.php:914 +#: include/Contact.php:340 include/conversation.php:914 msgid "Network Posts" msgstr "" -#: include/Contact.php:354 include/conversation.php:915 +#: include/Contact.php:341 include/conversation.php:915 msgid "Edit Contact" msgstr "" -#: include/Contact.php:355 +#: include/Contact.php:342 msgid "Drop Contact" msgstr "" -#: include/Contact.php:356 include/conversation.php:916 +#: include/Contact.php:343 include/conversation.php:916 msgid "Send PM" msgstr "" -#: include/Contact.php:357 include/conversation.php:920 +#: include/Contact.php:344 include/conversation.php:920 msgid "Poke" msgstr "" @@ -6946,153 +6968,153 @@ msgstr "" msgid "Follow Thread" msgstr "" -#: include/conversation.php:1035 +#: include/conversation.php:1034 #, php-format msgid "%s likes this." msgstr "" -#: include/conversation.php:1038 +#: include/conversation.php:1037 #, php-format msgid "%s doesn't like this." msgstr "" -#: include/conversation.php:1041 +#: include/conversation.php:1040 #, php-format msgid "%s attends." msgstr "" -#: include/conversation.php:1044 +#: include/conversation.php:1043 #, php-format msgid "%s doesn't attend." msgstr "" -#: include/conversation.php:1047 +#: include/conversation.php:1046 #, php-format msgid "%s attends maybe." msgstr "" -#: include/conversation.php:1057 +#: include/conversation.php:1056 msgid "and" msgstr "" -#: include/conversation.php:1063 +#: include/conversation.php:1062 #, php-format msgid ", and %d other people" msgstr "" -#: include/conversation.php:1072 +#: include/conversation.php:1071 #, php-format msgid "%2$d people like this" msgstr "" -#: include/conversation.php:1073 +#: include/conversation.php:1072 #, php-format msgid "%s like this." msgstr "" -#: include/conversation.php:1076 +#: include/conversation.php:1075 #, php-format msgid "%2$d people don't like this" msgstr "" -#: include/conversation.php:1077 +#: include/conversation.php:1076 #, php-format msgid "%s don't like this." msgstr "" -#: include/conversation.php:1080 +#: include/conversation.php:1079 #, php-format msgid "%2$d people attend" msgstr "" -#: include/conversation.php:1081 +#: include/conversation.php:1080 #, php-format msgid "%s attend." msgstr "" -#: include/conversation.php:1084 +#: include/conversation.php:1083 #, php-format msgid "%2$d people don't attend" msgstr "" -#: include/conversation.php:1085 +#: include/conversation.php:1084 #, php-format msgid "%s don't attend." msgstr "" -#: include/conversation.php:1088 +#: include/conversation.php:1087 #, php-format msgid "%2$d people anttend maybe" msgstr "" -#: include/conversation.php:1089 +#: include/conversation.php:1088 #, php-format msgid "%s anttend maybe." msgstr "" -#: include/conversation.php:1128 include/conversation.php:1146 +#: include/conversation.php:1127 include/conversation.php:1145 msgid "Visible to everybody" msgstr "" -#: include/conversation.php:1130 include/conversation.php:1148 +#: include/conversation.php:1129 include/conversation.php:1147 msgid "Please enter a video link/URL:" msgstr "" -#: include/conversation.php:1131 include/conversation.php:1149 +#: include/conversation.php:1130 include/conversation.php:1148 msgid "Please enter an audio link/URL:" msgstr "" -#: include/conversation.php:1132 include/conversation.php:1150 +#: include/conversation.php:1131 include/conversation.php:1149 msgid "Tag term:" msgstr "" -#: include/conversation.php:1134 include/conversation.php:1152 +#: include/conversation.php:1133 include/conversation.php:1151 msgid "Where are you right now?" msgstr "" -#: include/conversation.php:1135 +#: include/conversation.php:1134 msgid "Delete item(s)?" msgstr "" -#: include/conversation.php:1204 +#: include/conversation.php:1203 msgid "permissions" msgstr "" -#: include/conversation.php:1227 +#: include/conversation.php:1226 msgid "Post to Groups" msgstr "" -#: include/conversation.php:1228 +#: include/conversation.php:1227 msgid "Post to Contacts" msgstr "" -#: include/conversation.php:1229 +#: include/conversation.php:1228 msgid "Private post" msgstr "" -#: include/conversation.php:1386 +#: include/conversation.php:1385 msgid "View all" msgstr "" -#: include/conversation.php:1408 +#: include/conversation.php:1407 msgid "Like" msgid_plural "Likes" msgstr[0] "" msgstr[1] "" -#: include/conversation.php:1411 +#: include/conversation.php:1410 msgid "Dislike" msgid_plural "Dislikes" msgstr[0] "" msgstr[1] "" -#: include/conversation.php:1417 +#: include/conversation.php:1416 msgid "Not Attending" msgid_plural "Not Attending" msgstr[0] "" msgstr[1] "" -#: include/conversation.php:1420 include/profile_selectors.php:6 +#: include/conversation.php:1419 include/profile_selectors.php:6 msgid "Undecided" msgid_plural "Undecided" msgstr[0] "" @@ -7322,38 +7344,30 @@ msgstr "" msgid "Item filed" msgstr "" -#: include/bbcode.php:483 include/bbcode.php:1143 include/bbcode.php:1144 +#: include/bbcode.php:482 include/bbcode.php:1157 include/bbcode.php:1158 msgid "Image/photo" msgstr "" -#: include/bbcode.php:581 +#: include/bbcode.php:595 #, php-format msgid "%2$s %3$s" msgstr "" -#: include/bbcode.php:615 +#: include/bbcode.php:629 #, php-format msgid "" "%s wrote the following post" msgstr "" -#: include/bbcode.php:1103 include/bbcode.php:1123 +#: include/bbcode.php:1117 include/bbcode.php:1137 msgid "$1 wrote:" msgstr "" -#: include/bbcode.php:1152 include/bbcode.php:1153 +#: include/bbcode.php:1166 include/bbcode.php:1167 msgid "Encrypted content" msgstr "" -#: include/notifier.php:843 include/delivery.php:459 -msgid "(no subject)" -msgstr "" - -#: include/notifier.php:853 include/delivery.php:470 include/enotify.php:37 -msgid "noreply" -msgstr "" - #: include/dba_pdo.php:72 include/dba.php:55 #, php-format msgid "Cannot locate DNS info for database server '%s'" @@ -7399,6 +7413,10 @@ msgstr "" msgid "RSS/Atom" msgstr "" +#: include/contact_selectors.php:81 +msgid "Facebook" +msgstr "" + #: include/contact_selectors.php:82 msgid "Zot!" msgstr "" @@ -7443,7 +7461,7 @@ msgstr "" msgid "Redmatrix" msgstr "" -#: include/Scrape.php:610 +#: include/Scrape.php:624 msgid " on Last.fm" msgstr "" @@ -7619,46 +7637,21 @@ msgstr "" msgid "Site map" msgstr "" -#: include/api.php:345 include/api.php:356 include/api.php:465 -#: include/api.php:1184 include/api.php:1186 -msgid "User not found." -msgstr "" - -#: include/api.php:832 +#: include/api.php:878 #, php-format msgid "Daily posting limit of %d posts reached. The post was rejected." msgstr "" -#: include/api.php:851 +#: include/api.php:897 #, php-format msgid "Weekly posting limit of %d posts reached. The post was rejected." msgstr "" -#: include/api.php:870 +#: include/api.php:916 #, php-format msgid "Monthly posting limit of %d posts reached. The post was rejected." msgstr "" -#: include/api.php:1393 -msgid "There is no status with this id." -msgstr "" - -#: include/api.php:1467 -msgid "There is no conversation with this id." -msgstr "" - -#: include/api.php:1746 -msgid "Invalid item." -msgstr "" - -#: include/api.php:1756 -msgid "Invalid action. " -msgstr "" - -#: include/api.php:1764 -msgid "DB error" -msgstr "" - #: include/user.php:48 msgid "An invitation is required." msgstr "" @@ -7721,8 +7714,7 @@ msgstr "" msgid "An error occurred during registration. Please try again." msgstr "" -#: include/user.php:256 view/theme/clean/config.php:56 -#: view/theme/duepuntozero/config.php:44 +#: include/user.php:256 view/theme/duepuntozero/config.php:44 msgid "default" msgstr "" @@ -7782,15 +7774,23 @@ msgstr "" msgid "Sharing notification from Diaspora network" msgstr "" -#: include/diaspora.php:2607 +#: include/diaspora.php:2604 msgid "Attachments:" msgstr "" -#: include/items.php:4900 +#: include/delivery.php:533 +msgid "(no subject)" +msgstr "" + +#: include/delivery.php:544 include/enotify.php:37 +msgid "noreply" +msgstr "" + +#: include/items.php:4903 msgid "Do you really want to delete this item?" msgstr "" -#: include/items.php:5175 +#: include/items.php:5178 msgid "Archives" msgstr "" @@ -8306,11 +8306,11 @@ msgstr "" msgid "Please visit %s to approve or reject the request." msgstr "" -#: include/oembed.php:220 +#: include/oembed.php:214 msgid "Embedded content" msgstr "" -#: include/oembed.php:229 +#: include/oembed.php:223 msgid "Embedding disabled" msgstr "" @@ -8368,7 +8368,6 @@ msgid "Set theme width" msgstr "" #: view/theme/cleanzero/config.php:86 view/theme/quattro/config.php:68 -#: view/theme/clean/config.php:88 msgid "Color scheme" msgstr "" @@ -8490,56 +8489,6 @@ msgstr "" msgid "Show/hide boxes at right-hand column:" msgstr "" -#: view/theme/clean/config.php:57 -msgid "Midnight" -msgstr "" - -#: view/theme/clean/config.php:58 -msgid "Zenburn" -msgstr "" - -#: view/theme/clean/config.php:59 -msgid "Bootstrap" -msgstr "" - -#: view/theme/clean/config.php:60 -msgid "Shades of Pink" -msgstr "" - -#: view/theme/clean/config.php:61 -msgid "Lime and Orange" -msgstr "" - -#: view/theme/clean/config.php:62 -msgid "GeoCities Retro" -msgstr "" - -#: view/theme/clean/config.php:86 -msgid "Background Image" -msgstr "" - -#: view/theme/clean/config.php:86 -msgid "" -"The URL to a picture (e.g. from your photo album) that should be used as " -"background image." -msgstr "" - -#: view/theme/clean/config.php:87 -msgid "Background Color" -msgstr "" - -#: view/theme/clean/config.php:87 -msgid "HEX value for the background color. Don't include the #" -msgstr "" - -#: view/theme/clean/config.php:89 -msgid "font size" -msgstr "" - -#: view/theme/clean/config.php:89 -msgid "base font size for your interface" -msgstr "" - #: view/theme/vier/config.php:64 msgid "Comma separated list of helper forums" msgstr ""