From 7a33bf88cf546d55b5fac50f1168853c8dd83b39 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Tue, 19 Jun 2012 03:38:43 -0400 Subject: [PATCH 001/658] nav: add $baseurl to nav template context --- include/nav.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/nav.php b/include/nav.php index d760cc8ae..6759c31f6 100644 --- a/include/nav.php +++ b/include/nav.php @@ -162,6 +162,7 @@ function nav(&$a) { $tpl = get_markup_template('nav.tpl'); $a->page['nav'] .= replace_macros($tpl, array( + '$baseurl' => $a->get_baseurl(), '$langselector' => lang_selector(), '$sitelocation' => $sitelocation, '$nav' => $nav, From 77d0f4f2b8c147cd13c33af867b49e362629bb54 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Tue, 19 Jun 2012 03:40:36 -0400 Subject: [PATCH 002/658] blog theme: first commit --- view/theme/blog/conversation.tpl | 28 +++ view/theme/blog/default.php | 26 +++ view/theme/blog/headers/willow.jpg | Bin 0 -> 68450 bytes view/theme/blog/images/search.png | Bin 0 -> 441 bytes view/theme/blog/nav.tpl | 22 ++ view/theme/blog/style.css | 346 +++++++++++++++++++++++++++++ view/theme/blog/theme.php | 11 + 7 files changed, 433 insertions(+) create mode 100644 view/theme/blog/conversation.tpl create mode 100644 view/theme/blog/default.php create mode 100644 view/theme/blog/headers/willow.jpg create mode 100644 view/theme/blog/images/search.png create mode 100644 view/theme/blog/nav.tpl create mode 100644 view/theme/blog/style.css create mode 100644 view/theme/blog/theme.php diff --git a/view/theme/blog/conversation.tpl b/view/theme/blog/conversation.tpl new file mode 100644 index 000000000..980fb173c --- /dev/null +++ b/view/theme/blog/conversation.tpl @@ -0,0 +1,28 @@ +{{ for $threads as $thread }} +
+ {{if $mode == display}} + {{ for $thread.items as $item }} + {{ if $item.type == tag }} + {{ inc wall_item_tag.tpl }}{{ endinc }} + {{ else }} + {{ inc $item.template }}{{ endinc }} + {{ endif }} + {{ endfor }} + {{ else}} + + + {{ inc $thread.items.0.template with $item=$thread.items.0 }}{{ endinc }} + Commenti: {{if $thread.num_comments}}$thread.num_comments{{ else }}0{{ endif }} +
+ {{ endif }} +
+{{ endfor }} + +
+ +{{ if $dropping }} + + $dropping + +{{ endif }} + diff --git a/view/theme/blog/default.php b/view/theme/blog/default.php new file mode 100644 index 000000000..867207c62 --- /dev/null +++ b/view/theme/blog/default.php @@ -0,0 +1,26 @@ + + + + <?php if(x($page,'title')) echo $page['title'] ?> + + + + +
+ get_baseurl()."/view/theme/blog/headers/willow.jpg"; + echo str_replace("~blog.header.image~", $img, $page['nav']); + } + ?> + +
+ +
+ +
+
+ + + diff --git a/view/theme/blog/headers/willow.jpg b/view/theme/blog/headers/willow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..61bd538b1ac75f388d3ae22e8cddbda590cacd45 GIT binary patch literal 68450 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 literal 0 HcmV?d00001 diff --git a/view/theme/blog/images/search.png b/view/theme/blog/images/search.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9d8288bcd369aec1561e625cf2d87caca62f39 GIT binary patch literal 441 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaivoN?T>t<74`fmZ*x1O2n0B|IY0nNA|Y;GZnrtPszB4tN`m}?85o(E zSy1Xuw)0nBClsVDat??u3A~haPBCK7;!RKFnhtAg8Mg^ko!Rx{MnQMf z5m~RpJ!V;D2PeN?6Wo@uf>YaFwpUa#Ht!&dZrZss4Js +
+

Friendica

+

Previewing Another WordPress Blog

+
+ +
$sitelocation
+ + + + + +
+ + + +
+ + + diff --git a/view/theme/blog/style.css b/view/theme/blog/style.css new file mode 100644 index 000000000..82694e2e2 --- /dev/null +++ b/view/theme/blog/style.css @@ -0,0 +1,346 @@ +/* 'inspired' by http://wp-themes.com/twentyeleven/ */ + +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { + border: 0 none; + font-family: inherit; + font-size: 100%; + font-style: inherit; + font-weight: inherit; + margin: 0; + outline: 0 none; + padding: 0; + vertical-align: baseline; +} +:focus { + outline: 0 none; +} + +ol, ul { + list-style: none outside none; +} +table { + border-collapse: separate; + border-spacing: 0; +} +caption, th, td { + font-weight: normal; + text-align: left; +} +blockquote:before, blockquote:after, q:before, q:after { + content: ""; +} +blockquote, q { + quotes: "" ""; +} +a img { + border: 0 none; +} +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { + display: block; +} +body, input, textarea { + color: #373737; + font: 300 15px/1.625 "Helvetica Neue",Helvetica,Arial,sans-serif; +} +body { + padding: 0 2em; + line-height: 1; + background: none repeat scroll 0 0 #E2E2E2; +} +#page { + margin: 2em auto; + max-width: 1000px; + background: none repeat scroll 0 0 #FFFFFF; +} + +h1, h2, h3, h4, h5, h6 { + clear: both; +} +hr { + background-color: #CCCCCC; + border: 0 none; + height: 1px; + margin-bottom: 1.625em; +} +p { + margin-bottom: 1.625em; +} +ul, ol { + margin: 0 0 1.625em 2.5em; +} +ul { + list-style: square outside none; +} +ol { + list-style-type: decimal; +} +ol ol { + list-style: upper-alpha outside none; +} +ol ol ol { + list-style: lower-roman outside none; +} +ol ol ol ol { + list-style: lower-alpha outside none; +} +ul ul, ol ol, ul ol, ol ul { + margin-bottom: 0; +} +dl { + margin: 0 1.625em; +} +dt { + font-weight: bold; +} +dd { + margin-bottom: 1.625em; +} +strong { + font-weight: bold; +} +cite, em, i { + font-style: italic; +} +blockquote { + font-family: Georgia,"Bitstream Charter",serif; + font-style: italic; + font-weight: normal; + margin: 0 3em; +} +blockquote em, blockquote i, blockquote cite { + font-style: normal; +} +blockquote cite { + color: #666666; + font: 300 12px "Helvetica Neue",Helvetica,Arial,sans-serif; + letter-spacing: 0.05em; + text-transform: uppercase; +} +pre { + background: none repeat scroll 0 0 #F4F4F4; + font: 13px/1.5 "Courier 10 Pitch",Courier,monospace; + margin-bottom: 1.625em; + overflow: auto; + padding: 0.75em 1.625em; +} +code, kbd, samp, var { + font: 13px Monaco,Consolas,"Andale Mono","DejaVu Sans Mono",monospace; +} +abbr, acronym, dfn { + border-bottom: 1px dotted #666666; + cursor: help; +} +address { + display: block; + margin: 0 0 1.625em; +} +ins { + background: none repeat scroll 0 0 #FFF9C0; + text-decoration: none; +} +sup, sub { + font-size: 10px; + height: 0; + line-height: 1; + position: relative; + vertical-align: baseline; +} +sup { + bottom: 1ex; +} +sub { + top: 0.5ex; +} +input[type="text"], input[type="password"], textarea { + background: none repeat scroll 0 0 #FAFAFA; + border: 1px solid #DDDDDD; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1) inset; + color: #888888; +} +input[type="text"]:focus, textarea:focus { + color: #373737; +} +textarea { + padding-left: 3px; + width: 98%; +} +input[type="text"] { + padding: 3px; +} +input#search { + background: url("images/search.png") no-repeat scroll 5px 6px transparent; + border-radius: 2px 2px 2px 2px; + font-size: 14px; + height: 22px; + line-height: 1.2em; + padding: 4px 10px 4px 28px; +} +input#searchsubmit { + display: none; +} +a { + color: #1982D1; + text-decoration: none; +} +a:focus, a:active, a:hover { + text-decoration: underline; +} + +.assistive-text { + clip: rect(1px, 1px, 1px, 1px); + position: absolute !important; +} + +/* header */ +#branding hgroup { + margin: 0 7.6%; +} +#branding { + border-top: 2px solid #BBBBBB; + padding-bottom: 10px; + position: relative; + z-index: 9999; +} +#site-title { + margin-right: 270px; + padding: 3.65625em 0 0; +} +#site-title a { + color: #111111; + font-size: 30px; + font-weight: bold; + line-height: 36px; + text-decoration: none; +} +#site-title a:hover, #site-title a:focus, #site-title a:active { + color: #1982D1; +} +#site-description { + color: #7A7A7A; + font-size: 14px; + margin: 0 270px 3.65625em 0; +} +#branding img { + height: auto; + margin-bottom: -7px; + width: 100%; +} +#access { + background: -moz-linear-gradient(#252525, #0A0A0A) repeat scroll 0 0 transparent; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); + clear: both; + display: block; + float: left; + margin: 0 auto 6px; + width: 100%; +} +#access ul { + font-size: 13px; + list-style: none outside none; + margin: 0 0 0 -0.8125em; + padding-left: 0; +} +#access li { + float: left; + position: relative; +} +#access a { + color: #EEEEEE; + display: block; + line-height: 3.333em; + padding: 0 1.2125em; + text-decoration: none; +} +#access ul ul { + box-shadow: 0 3px 3px rgba(0, 0, 0, 0.2); + display: none; + float: left; + left: 0; + margin: 0; + position: absolute; + top: 3.333em; + width: 188px; + z-index: 99999; +} +#access ul ul ul { + left: 100%; + top: 0; +} +#access ul ul a { + background: none repeat scroll 0 0 #F9F9F9; + border-bottom: 1px dotted #DDDDDD; + color: #444444; + font-size: 13px; + font-weight: normal; + height: auto; + line-height: 1.4em; + padding: 10px; + width: 168px; +} +#access li:hover > a, #access ul ul *:hover > a, #access a:focus { + background: none repeat scroll 0 0 #EFEFEF; +} +#access li:hover > a, #access a:focus { + background: -moz-linear-gradient(#F9F9F9, #E5E5E5) repeat scroll 0 0 transparent; + color: #373737; +} +#access ul li:hover > ul { + display: block; +} +#access .current-menu-item > a, #access .current-menu-ancestor > a, #access .current_page_item > a, #access .current_page_ancestor > a { + font-weight: bold; +} +#branding #searchform { + position: absolute; + right: 7.6%; + text-align: right; + top: 3.8em; +} +#branding #searchform div { + margin: 0; +} +#branding #search { + -moz-transition-duration: 400ms; + -moz-transition-property: width, background; + -moz-transition-timing-function: ease; + float: right; + width: 72px; +} +#branding #search:focus { + background-color: #F9F9F9; + width: 196px; +} +#branding #searchsubmit { + display: none; +} +#branding .only-search #searchform { + top: 5px; + z-index: 1; +} +#branding .only-search #search { + background-color: #666666; + border-color: #000000; + color: #222222; +} +#branding .only-search #s, #branding .only-search #s:focus { + width: 85%; +} +#branding .only-search #s:focus { + background-color: #BBBBBB; +} +#branding .with-image #searchform { + bottom: -27px; + max-width: 195px; + top: auto; +} +#branding .only-search + #access div { + padding-right: 205px; +} +#branding #site-location { + font-size: 0.7em; + color: #666666; + position: absolute; + right: 7.6%; + text-align: right; + top: -1.4em; +} diff --git a/view/theme/blog/theme.php b/view/theme/blog/theme.php new file mode 100644 index 000000000..77c44d2c3 --- /dev/null +++ b/view/theme/blog/theme.php @@ -0,0 +1,11 @@ + +**/ +$a->theme_info = array( +); + +function blog_init(&$a) { + +} \ No newline at end of file From 34f01ece9ff836d12d99fb796e190991e79d45d4 Mon Sep 17 00:00:00 2001 From: Fabrixxm Date: Thu, 21 Jun 2012 15:37:03 +0200 Subject: [PATCH 003/658] blog theme: more on header/nav --- view/theme/blog/nav.tpl | 89 ++++++++++++++++++++++++++++++++++++++- view/theme/blog/style.css | 86 +++++++++++++++++++++++++++++++++++-- 2 files changed, 170 insertions(+), 5 deletions(-) diff --git a/view/theme/blog/nav.tpl b/view/theme/blog/nav.tpl index 06cfee776..483886d07 100644 --- a/view/theme/blog/nav.tpl +++ b/view/theme/blog/nav.tpl @@ -10,13 +10,98 @@ -
+
+ {{ if $nav.logout }} + + {{ endif }} + + diff --git a/view/theme/blog/style.css b/view/theme/blog/style.css index 82694e2e2..b3b84fe7a 100644 --- a/view/theme/blog/style.css +++ b/view/theme/blog/style.css @@ -234,6 +234,9 @@ a:focus, a:active, a:hover { margin: 0 auto 6px; width: 100%; } +#access div { + margin: 0 7.6%; +} #access ul { font-size: 13px; list-style: none outside none; @@ -287,7 +290,7 @@ a:focus, a:active, a:hover { #access ul li:hover > ul { display: block; } -#access .current-menu-item > a, #access .current-menu-ancestor > a, #access .current_page_item > a, #access .current_page_ancestor > a { +.selected > a, #access .current-menu-item > a, #access .current-menu-ancestor > a, #access .current_page_item > a, #access .current_page_ancestor > a { font-weight: bold; } #branding #searchform { @@ -338,9 +341,86 @@ a:focus, a:active, a:hover { } #branding #site-location { font-size: 0.7em; - color: #666666; + color: #BBBBBB; position: absolute; right: 7.6%; text-align: right; - top: -1.4em; + top: 13.5em; } + +/* user bar */ +#tools { + background: -moz-linear-gradient(#444444, #222222) repeat scroll 0 0 transparent; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); + clear: both; + display: block; + position: fixed; + top: 0px; + left: auto; + margin: 0 auto 6px; + width: 1000px; +} +#tools div { + margin: 0 7.6%; +} +#tools ul { + font-size: 10px; + list-style: none outside none; + margin: 0 0 0 -0.8125em; + padding-left: 0; +} +#tools li { + float: left; + position: relative; +} +#tools a { + color: #EEEEEE; + display: block; + line-height: 3.333em; + padding: 0 1.2125em; + text-decoration: none; +} +#tools ul ul { + box-shadow: 0 3px 3px rgba(0, 0, 0, 0.2); + display: none; + float: left; + left: 0; + margin: 0; + position: absolute; + top: 3.333em; + width: 188px; + z-index: 99999; +} +#tools ul ul .sep { + border-top: 1px dotted #DDDDDD; +} +#tools ul ul ul { + left: 100%; + top: 0; +} +#tools ul ul a { + background: none repeat scroll 0 0 #F9F9F9; + border-bottom: 1px dotted #DDDDDD; + color: #444444; + font-size: 13px; + font-weight: normal; + height: auto; + line-height: 1.4em; + padding: 10px; + width: 168px; +} +#tools li:hover > a, #access ul ul *:hover > a, #access a:focus { + background: none repeat scroll 0 0 #EFEFEF; +} +#tools li:hover > a, #access a:focus { + background: -moz-linear-gradient(#F9F9F9, #E5E5E5) repeat scroll 0 0 transparent; + color: #373737; +} +#tools ul li:hover > ul { + display: block; +} +#tools img { + width: 16px; + margin-bottom: -5px; + margin-right: 5px; +} \ No newline at end of file From 52569e536e217c3178f13d2a722eb8ebfd801465 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Fri, 29 Jun 2012 21:40:54 +0200 Subject: [PATCH 004/658] Tests considering removing of the title --- include/items.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/items.php b/include/items.php index a0dd1c815..fbd4af5f3 100755 --- a/include/items.php +++ b/include/items.php @@ -306,6 +306,9 @@ function get_atom_elements($feed,$item) { $res['body'] = unxmlify($item->get_content()); $res['plink'] = unxmlify($item->get_link(0)); + //$debugfile = tempnam("/home/ike/log", "item-res-"); + //file_put_contents($debugfile, serialize($res)); + if($res['plink']) $base_url = implode('/', array_slice(explode('/',$res['plink']),0,3)); else @@ -1645,7 +1648,6 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) $item_id = $item->get_id(); $datarray = get_atom_elements($feed,$item); - if((! x($datarray,'author-name')) && ($contact['network'] != NETWORK_DFRN)) $datarray['author-name'] = $contact['name']; if((! x($datarray,'author-link')) && ($contact['network'] != NETWORK_DFRN)) @@ -3469,4 +3471,4 @@ function posted_date_widget($url,$uid,$wall) { '$dates' => $ret )); return $o; -} \ No newline at end of file +} From bcca817b9ab8f0a9dc0af56d55a3a347056a4494 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 30 Jun 2012 09:25:22 +0200 Subject: [PATCH 005/658] Removing of the title if it is the same (or part) from the body. Helps against auto generated titles from tumblr. --- include/items.php | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/include/items.php b/include/items.php index aed0a8e68..87d6ab479 100755 --- a/include/items.php +++ b/include/items.php @@ -280,6 +280,29 @@ function construct_activity_target($item) { return ''; } +function title_is_body($title, $body) { + + $title = strip_tags($title); + $title = trim($title); + $title = str_replace(array("\n", "\r", "\t", " "), array("","","",""), $title); + + $body = strip_tags($body); + $body = trim($body); + $body = str_replace(array("\n", "\r", "\t", " "), array("","","",""), $body); + + if (strlen($title) < strlen($body)) + $body = substr($body, 0, strlen($title)); + + if (($title != $body) and (substr($title, -3) == "...")) { + $pos = strrpos($title, "..."); + if ($pos > 0) { + $title = substr($title, 0, $pos); + $body = substr($body, 0, $pos); + } + } + + return($title == $body); +} @@ -306,8 +329,10 @@ function get_atom_elements($feed,$item) { $res['body'] = unxmlify($item->get_content()); $res['plink'] = unxmlify($item->get_link(0)); - //$debugfile = tempnam("/home/ike/log", "item-res-"); - //file_put_contents($debugfile, serialize($res)); + // removing the content of the title if its identically to the body + // This helps with auto generated titles e.g. from tumblr + if (title_is_body($res["title"], $res["body"])) + $res['title'] = ""; if($res['plink']) $base_url = implode('/', array_slice(explode('/',$res['plink']),0,3)); From dafc84390db4b57e5958f1af386c778b481c7d04 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 5 Jul 2012 23:36:00 +0200 Subject: [PATCH 006/658] Improvments of the HTML to make a better bb2markdown conversion (nested lists, youtube, vimeo, ...) --- include/api.php | 1 + include/bb2diaspora.php | 4 ++-- include/bbcode.php | 46 +++++++++++++++++++++++++++++++++-------- include/items.php | 19 ++++++++++------- 4 files changed, 52 insertions(+), 18 deletions(-) diff --git a/include/api.php b/include/api.php index d790b4b87..629b5fcc2 100644 --- a/include/api.php +++ b/include/api.php @@ -1726,3 +1726,4 @@ notifications/leave blocks/exists blocks/blocking */ + diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index 77a5f5c2a..4a82635e5 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -112,7 +112,7 @@ function bb2diaspora($Text,$preserve_nl = false) { // Note that to get nested lists to work for Diaspora, we would need // to define the closing tag for the list elements. So nested lists // are going to be flattened out in Diaspora for now - $endlessloop = 0; +/* $endlessloop = 0; while ((((strpos($Text, "[/list]") !== false) && (strpos($Text, "[list") !== false)) || ((strpos($Text, "[/ol]") !== false) && (strpos($Text, "[ol]") !== false)) || ((strpos($Text, "[/ul]") !== false) && (strpos($Text, "[ul]") !== false))) && (++$endlessloop < 20)) { @@ -125,7 +125,7 @@ function bb2diaspora($Text,$preserve_nl = false) { $Text = preg_replace_callback("/\[ul\](.*?)\[\/ul\]/is", 'diaspora_ul', $Text); $Text = preg_replace_callback("/\[ol\](.*?)\[\/ol\]/is", 'diaspora_ol', $Text); } - +*/ // Convert it to HTML - don't try oembed $Text = bbcode($Text, $preserve_nl, false); diff --git a/include/bbcode.php b/include/bbcode.php index 9071c767b..988e75d41 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -251,21 +251,25 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { $Text = preg_replace("/\[img\](.*?)\[\/img\]/ism", '' . t('Image/photo') . '', $Text); - $Text = preg_replace("/\[video\](.*?\.(ogg|ogv|oga|ogm|webm|mp4))\[\/video\]/ism", '', $Text); - - $Text = preg_replace("/\[audio\](.*?\.(ogg|ogv|oga|ogm|webm|mp4|mp3))\[\/audio\]/ism", '', $Text); - // Try to Oembed if ($tryoembed) { + $Text = preg_replace("/\[video\](.*?\.(ogg|ogv|oga|ogm|webm|mp4))\[\/video\]/ism", '', $Text); + $Text = preg_replace("/\[audio\](.*?\.(ogg|ogv|oga|ogm|webm|mp4|mp3))\[\/audio\]/ism", '', $Text); + $Text = preg_replace_callback("/\[video\](.*?)\[\/video\]/ism", 'tryoembed', $Text); $Text = preg_replace_callback("/\[audio\](.*?)\[\/audio\]/ism", 'tryoembed', $Text); + } else { + $Text = preg_replace("/\[video\](.*?)\[\/video\]/", '$1', $Text); + $Text = preg_replace("/\[audio\](.*?)\[\/audio\]/", '$1', $Text); } // html5 video and audio - $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '', $Text); - + if ($tryoembed) + $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '', $Text); + else + $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '$1', $Text); // Youtube extensions if ($tryoembed) { @@ -278,7 +282,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/embed\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); $Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); - $Text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism", '', $Text); + if ($tryoembed) + $Text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism", '', $Text); + else + $Text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism", "http://www.youtube.com/watch?v=$1", $Text); if ($tryoembed) { @@ -287,8 +294,12 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { } $Text = preg_replace("/\[vimeo\]https?:\/\/player.vimeo.com\/video\/([0-9]+)(.*?)\[\/vimeo\]/ism",'[vimeo]$1[/vimeo]',$Text); - $Text = preg_replace("/\[vimeo\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/vimeo\]/ism",'[vimeo]$1[/vimeo]',$Text); - $Text = preg_replace("/\[vimeo\]([0-9]+)(.*?)\[\/vimeo\]/ism", '', $Text); + $Text = preg_replace("/\[vimeo\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/vimeo\]/ism",'[vimeo]$1[/vimeo]',$Text); + + if ($tryoembed) + $Text = preg_replace("/\[vimeo\]([0-9]+)(.*?)\[\/vimeo\]/ism", '', $Text); + else + $Text = preg_replace("/\[vimeo\]([0-9]+)(.*?)\[\/vimeo\]/ism", "http://vimeo.com/$1", $Text); // $Text = preg_replace("/\[youtube\](.*?)\[\/youtube\]/", '', $Text); @@ -327,6 +338,23 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { if(strlen($saved_image)) $Text = str_replace('[$#saved_image#$]','' . t('Image/photo') . '',$Text); + // Clean up the HTML by loading and saving the HTML with the DOM + // Only do it when it has to be done - for performance reasons + if (!$tryoembed) { + $doc = new DOMDocument(); + $doc->preserveWhiteSpace = false; + + $Text = mb_convert_encoding($Text, 'HTML-ENTITIES', "UTF-8"); + + $doctype = ''; + @$doc->loadHTML($doctype."".$Text.""); + + $Text = $doc->saveHTML(); + $Text = str_replace(array("", "", $doctype), array("", "", ""), $Text); + + $Text = str_replace('
','', $Text); + } + call_hooks('bbcode',$Text); return $Text; diff --git a/include/items.php b/include/items.php index 87d6ab479..6ab681c87 100755 --- a/include/items.php +++ b/include/items.php @@ -352,7 +352,7 @@ function get_atom_elements($feed,$item) { $res['author-avatar'] = unxmlify($link['attribs']['']['href']); } } - } + } $rawactor = $item->get_item_tags(NAMESPACE_ACTIVITY, 'actor'); @@ -384,7 +384,7 @@ function get_atom_elements($feed,$item) { $res['author-avatar'] = unxmlify($link['attribs']['']['href']); } } - } + } $rawactor = $feed->get_feed_tags(NAMESPACE_ACTIVITY, 'subject'); @@ -409,7 +409,7 @@ function get_atom_elements($feed,$item) { $res['app'] = strip_tags(unxmlify($apps[0]['attribs']['']['source'])); if($res['app'] === 'web') $res['app'] = 'OStatus'; - } + } // base64 encoded json structure representing Diaspora signature @@ -553,7 +553,7 @@ function get_atom_elements($feed,$item) { foreach($base as $link) { if(!x($res, 'owner-avatar') || !$res['owner-avatar']) { - if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar') + if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar') $res['owner-avatar'] = unxmlify($link['attribs']['']['href']); } } @@ -697,6 +697,11 @@ function get_atom_elements($feed,$item) { call_hooks('parse_atom', $arr); + //if (($res["title"] != "") or (strpos($res["body"], "RT @") > 0)) { + // $debugfile = tempnam("/home/ike/log", "item-res2-"); + // file_put_contents($debugfile, serialize($res)); + //} + return $res; } @@ -1644,7 +1649,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) // Now process the feed - if($feed->get_item_quantity()) { + if($feed->get_item_quantity()) { logger('consume_feed: feed item count = ' . $feed->get_item_quantity()); @@ -1657,7 +1662,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) foreach($items as $item) { - $is_reply = false; + $is_reply = false; $item_id = $item->get_id(); $rawthread = $item->get_item_tags( NAMESPACE_THREAD,'in-reply-to'); if(isset($rawthread[0]['attribs']['']['ref'])) { @@ -1671,7 +1676,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) continue; // Have we seen it? If not, import it. - + $item_id = $item->get_id(); $datarray = get_atom_elements($feed,$item); From e9d7f852978e7fe4231893680c60c13dc3eb5bd4 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 7 Jul 2012 20:40:15 +0200 Subject: [PATCH 007/658] network: Small changes --- include/network.php | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/include/network.php b/include/network.php index c1a76000e..500dff08b 100644 --- a/include/network.php +++ b/include/network.php @@ -14,15 +14,16 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_ return false; @curl_setopt($ch, CURLOPT_HEADER, true); - + if (!is_null($accept_content)){ curl_setopt($ch,CURLOPT_HTTPHEADER, array ( "Accept: " . $accept_content )); } - + @curl_setopt($ch, CURLOPT_RETURNTRANSFER,true); - @curl_setopt($ch, CURLOPT_USERAGENT, "Friendica"); + //@curl_setopt($ch, CURLOPT_USERAGENT, "Friendica"); + @curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Friendica)"); if(intval($timeout)) { @@ -59,7 +60,6 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_ $base = $s; $curl_info = @curl_getinfo($ch); $http_code = $curl_info['http_code']; - // logger('fetch_url:' . $http_code . ' data: ' . $s); $header = ''; @@ -73,24 +73,22 @@ function fetch_url($url,$binary = false, &$redirects = 0, $timeout = 0, $accept_ } if($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307) { - $matches = array(); - preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches); - $newurl = trim(array_pop($matches)); + $matches = array(); + preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches); + $newurl = trim(array_pop($matches)); if(strpos($newurl,'/') === 0) $newurl = $url . $newurl; - $url_parsed = @parse_url($newurl); - if (isset($url_parsed)) { - $redirects++; - return fetch_url($newurl,$binary,$redirects,$timeout); - } - } + $url_parsed = @parse_url($newurl); + if (isset($url_parsed)) { + $redirects++; + return fetch_url($newurl,$binary,$redirects,$timeout); + } + } $a->set_curl_code($http_code); $body = substr($s,strlen($header)); - $a->set_curl_headers($header); - @curl_close($ch); return($body); }} From db2f0f79190650e6c63e7c1ac10bf9f3304d2115 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 8 Jul 2012 18:27:11 +0200 Subject: [PATCH 008/658] Bugfix: API: No extra encoding for the status text - makes it more compatible to statusnet Bugfix: BBCode: Fixed charset problems. --- include/api.php | 6 ++++-- include/bbcode.php | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/include/api.php b/include/api.php index 629b5fcc2..3858b9fe3 100644 --- a/include/api.php +++ b/include/api.php @@ -490,7 +490,8 @@ $_REQUEST['type'] = 'wall'; $_REQUEST['profile_uid'] = local_user(); $_REQUEST['api_source'] = true; - $txt = urldecode(requestdata('status')); + $txt = requestdata('status'); + //$txt = urldecode(requestdata('status')); require_once('library/HTMLPurifier.auto.php'); require_once('include/html2bbcode.php'); @@ -554,7 +555,8 @@ } else - $_REQUEST['body'] = urldecode(requestdata('status')); + $_REQUEST['body'] = requestdata('status'); + //$_REQUEST['body'] = urldecode(requestdata('status')); $parent = requestdata('in_reply_to_status_id'); if(ctype_digit($parent)) diff --git a/include/bbcode.php b/include/bbcode.php index 988e75d41..e212ec4ae 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -353,6 +353,8 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { $Text = str_replace(array("", "", $doctype), array("", "", ""), $Text); $Text = str_replace('
','', $Text); + + $Text = mb_convert_encoding($Text, "UTF-8", 'HTML-ENTITIES'); } call_hooks('bbcode',$Text); From 47c48aa438e30573a4df7ade39ecaacb804f7710 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 8 Jul 2012 21:27:20 +0200 Subject: [PATCH 009/658] DBA: Possibility to log the database speed --- include/dba.php | 18 ++++++++++++++---- include/network.php | 3 +++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/include/dba.php b/include/dba.php index 881097f30..d37b756ae 100644 --- a/include/dba.php +++ b/include/dba.php @@ -71,22 +71,32 @@ class dba { } public function q($sql) { + global $a; if((! $this->db) || (! $this->connected)) return false; $this->error = ''; - //if (get_config("system", "db_log") != "") - // @file_put_contents(get_config("system", "db_log"), datetime_convert().':'.session_id(). ' Start '.$sql."\n", FILE_APPEND); + if ($a->config["system"]["db_log"] != "") + $stamp1 = microtime(true); if($this->mysqli) $result = @$this->db->query($sql); else $result = @mysql_query($sql,$this->db); - //if (get_config("system", "db_log") != "") - // @file_put_contents(get_config("system", "db_log"), datetime_convert().':'.session_id(). ' Stop '."\n", FILE_APPEND); + if ($a->config["system"]["db_log"] != "") { + $stamp2 = microtime(true); + $duration = round($stamp2-$stamp1, 3); + if ($duration > $a->config["system"]["db_loglimit"]) { + $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); + @file_put_contents($a->config["system"]["db_log"], $duration."\t". + basename($backtrace[1]["file"])."\t". + $backtrace[1]["line"]."\t".$backtrace[2]["function"]."\t". + substr($sql, 0, 2000)."\n", FILE_APPEND); + } + } if($this->mysqli) { if($this->db->errno) diff --git a/include/network.php b/include/network.php index 500dff08b..d69454899 100644 --- a/include/network.php +++ b/include/network.php @@ -795,6 +795,9 @@ function scale_external_images($s, $include_link = true, $scale_replace = false) $a = get_app(); + // Picture addresses can contain special characters + $s = htmlspecialchars_decode($s); + $matches = null; $c = preg_match_all('/\[img\](.*?)\[\/img\]/ism',$s,$matches,PREG_SET_ORDER); if($c) { From 00eb000e36489fc0e1bd9d27dcee916f157e39a0 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta Date: Mon, 9 Jul 2012 09:39:09 -0600 Subject: [PATCH 010/658] don't check for was_recently_delayed in diaspora_transmit during a queue run --- include/diaspora.php | 4 ++-- include/lock.php | 2 -- include/queue.php | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index df388737a..79b4d1a26 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -2517,7 +2517,7 @@ function diaspora_send_mail($item,$owner,$contact) { } -function diaspora_transmit($owner,$contact,$slap,$public_batch) { +function diaspora_transmit($owner,$contact,$slap,$public_batch,$queue_run=false) { $enabled = intval(get_config('system','diaspora_enabled')); if(! $enabled) { @@ -2534,7 +2534,7 @@ function diaspora_transmit($owner,$contact,$slap,$public_batch) { logger('diaspora_transmit: ' . $logid . ' ' . $dest_url); - if(was_recently_delayed($contact['id'])) { + if( (! $queue_run) && (was_recently_delayed($contact['id'])) ) { $return_code = 0; } else { diff --git a/include/lock.php b/include/lock.php index 5f1ca6323..707e33609 100644 --- a/include/lock.php +++ b/include/lock.php @@ -73,5 +73,3 @@ function unlock_function($fn_name) { return; }} - -?> diff --git a/include/queue.php b/include/queue.php index 7e92705be..ba3babe70 100644 --- a/include/queue.php +++ b/include/queue.php @@ -161,7 +161,7 @@ function queue_run($argv, $argc){ case NETWORK_DIASPORA: if($contact['notify']) { logger('queue: diaspora_delivery: item ' . $q_item['id'] . ' for ' . $contact['name']); - $deliver_status = diaspora_transmit($owner,$contact,$data,$public); + $deliver_status = diaspora_transmit($owner,$contact,$data,$public,true); if($deliver_status == (-1)) update_queue_time($q_item['id']); From d89b4cea643c121580285537ccfaf0770be91658 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta Date: Mon, 9 Jul 2012 20:35:59 -0600 Subject: [PATCH 011/658] missed a couple of variable names when I redid comment and like code --- include/diaspora.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 79b4d1a26..d07d756e6 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1272,7 +1272,7 @@ function diaspora_comment($importer,$xml,$msg) { if(($parent_item['origin']) && (! $parent_author_signature)) { q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", intval($message_id), - dbesc($author_signed_data), + dbesc($signed_data), dbesc(base64_encode($author_signature)), dbesc($diaspora_handle) ); @@ -1855,7 +1855,7 @@ EOT; if(! $parent_author_signature) { q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", intval($message_id), - dbesc($author_signed_data), + dbesc($signed_data), dbesc(base64_encode($author_signature)), dbesc($diaspora_handle) ); From 1fda9e9365c62cc61788e25d6c7d802f5065fbc8 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 10 Jul 2012 01:06:11 -0700 Subject: [PATCH 012/658] rev update --- boot.php | 2 +- util/messages.po | 154 +++++++++++++++++++++++------------------------ 2 files changed, 78 insertions(+), 78 deletions(-) diff --git a/boot.php b/boot.php index 5404faaa4..e6fc2e9c7 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1398' ); +define ( 'FRIENDICA_VERSION', '3.0.1399' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index 84c3ba4d7..b65dfb582 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1398\n" +"Project-Id-Version: 3.0.1399\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-08 10:00-0700\n" +"POT-Creation-Date: 2012-07-09 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -36,7 +36,7 @@ msgstr "" #: ../../mod/crepair.php:115 ../../mod/wall_attach.php:44 #: ../../mod/fsuggest.php:78 ../../mod/events.php:140 ../../mod/api.php:26 -#: ../../mod/api.php:31 ../../mod/photos.php:135 ../../mod/photos.php:958 +#: ../../mod/api.php:31 ../../mod/photos.php:135 ../../mod/photos.php:957 #: ../../mod/editpost.php:10 ../../mod/install.php:151 #: ../../mod/notifications.php:66 ../../mod/contacts.php:145 #: ../../mod/settings.php:106 ../../mod/settings.php:537 @@ -47,8 +47,8 @@ msgstr "" #: ../../mod/group.php:19 ../../mod/viewcontacts.php:22 #: ../../mod/register.php:38 ../../mod/regmod.php:116 ../../mod/item.php:124 #: ../../mod/item.php:140 ../../mod/profile_photo.php:19 -#: ../../mod/profile_photo.php:141 ../../mod/profile_photo.php:152 -#: ../../mod/profile_photo.php:165 ../../mod/message.php:45 +#: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:153 +#: ../../mod/profile_photo.php:166 ../../mod/message.php:45 #: ../../mod/message.php:175 ../../mod/allfriends.php:9 #: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53 #: ../../mod/follow.php:9 ../../mod/display.php:138 ../../mod/profiles.php:7 @@ -123,9 +123,9 @@ msgid "New photo from this URL" msgstr "" #: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107 -#: ../../mod/events.php:436 ../../mod/photos.php:993 ../../mod/photos.php:1064 -#: ../../mod/photos.php:1310 ../../mod/photos.php:1350 -#: ../../mod/photos.php:1390 ../../mod/photos.php:1421 +#: ../../mod/events.php:436 ../../mod/photos.php:992 ../../mod/photos.php:1063 +#: ../../mod/photos.php:1309 ../../mod/photos.php:1349 +#: ../../mod/photos.php:1389 ../../mod/photos.php:1420 #: ../../mod/install.php:246 ../../mod/install.php:284 #: ../../mod/localtime.php:45 ../../mod/content.php:691 #: ../../mod/contacts.php:343 ../../mod/settings.php:555 @@ -370,15 +370,15 @@ msgstr "" msgid "Photo Albums" msgstr "" -#: ../../mod/photos.php:54 ../../mod/photos.php:156 ../../mod/photos.php:972 -#: ../../mod/photos.php:1056 ../../mod/photos.php:1071 -#: ../../mod/photos.php:1499 ../../mod/photos.php:1511 +#: ../../mod/photos.php:54 ../../mod/photos.php:156 ../../mod/photos.php:971 +#: ../../mod/photos.php:1055 ../../mod/photos.php:1070 +#: ../../mod/photos.php:1498 ../../mod/photos.php:1510 #: ../../addon/communityhome/communityhome.php:110 #: ../../view/theme/diabook/theme.php:598 msgid "Contact Photos" msgstr "" -#: ../../mod/photos.php:61 ../../mod/photos.php:1081 ../../mod/photos.php:1549 +#: ../../mod/photos.php:61 ../../mod/photos.php:1080 ../../mod/photos.php:1548 msgid "Upload New Photos" msgstr "" @@ -390,11 +390,11 @@ msgstr "" msgid "Contact information unavailable" msgstr "" -#: ../../mod/photos.php:156 ../../mod/photos.php:660 ../../mod/photos.php:1056 -#: ../../mod/photos.php:1071 ../../mod/profile_photo.php:60 +#: ../../mod/photos.php:156 ../../mod/photos.php:660 ../../mod/photos.php:1055 +#: ../../mod/photos.php:1070 ../../mod/profile_photo.php:60 #: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74 -#: ../../mod/profile_photo.php:176 ../../mod/profile_photo.php:254 -#: ../../mod/profile_photo.php:263 +#: ../../mod/profile_photo.php:177 ../../mod/profile_photo.php:261 +#: ../../mod/profile_photo.php:270 #: ../../addon/communityhome/communityhome.php:111 #: ../../view/theme/diabook/theme.php:599 ../../include/user.php:304 #: ../../include/user.php:311 ../../include/user.php:318 @@ -405,11 +405,11 @@ msgstr "" msgid "Album not found." msgstr "" -#: ../../mod/photos.php:184 ../../mod/photos.php:1065 +#: ../../mod/photos.php:184 ../../mod/photos.php:1064 msgid "Delete Album" msgstr "" -#: ../../mod/photos.php:247 ../../mod/photos.php:1311 +#: ../../mod/photos.php:247 ../../mod/photos.php:1310 msgid "Delete Photo" msgstr "" @@ -420,7 +420,7 @@ msgstr "" #: ../../mod/photos.php:591 ../../mod/like.php:144 ../../mod/tagger.php:70 #: ../../addon/communityhome/communityhome.php:163 #: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1321 -#: ../../include/diaspora.php:1777 ../../include/conversation.php:115 +#: ../../include/diaspora.php:1792 ../../include/conversation.php:115 #: ../../include/conversation.php:188 msgid "photo" msgstr "" @@ -442,139 +442,139 @@ msgstr "" msgid "Unable to process image." msgstr "" -#: ../../mod/photos.php:764 ../../mod/profile_photo.php:259 -#: ../../mod/wall_upload.php:118 +#: ../../mod/photos.php:763 ../../mod/profile_photo.php:266 +#: ../../mod/wall_upload.php:125 msgid "Image upload failed." msgstr "" -#: ../../mod/photos.php:850 ../../mod/community.php:16 +#: ../../mod/photos.php:849 ../../mod/community.php:16 #: ../../mod/dfrn_request.php:759 ../../mod/viewcontacts.php:17 #: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29 msgid "Public access denied." msgstr "" -#: ../../mod/photos.php:860 +#: ../../mod/photos.php:859 msgid "No photos selected" msgstr "" -#: ../../mod/photos.php:939 +#: ../../mod/photos.php:938 msgid "Access to this item is restricted." msgstr "" -#: ../../mod/photos.php:1003 +#: ../../mod/photos.php:1002 #, php-format msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage." msgstr "" -#: ../../mod/photos.php:1006 +#: ../../mod/photos.php:1005 #, php-format msgid "You have used %1$.2f Mbytes of photo storage." msgstr "" -#: ../../mod/photos.php:1012 +#: ../../mod/photos.php:1011 msgid "Upload Photos" msgstr "" -#: ../../mod/photos.php:1016 ../../mod/photos.php:1060 +#: ../../mod/photos.php:1015 ../../mod/photos.php:1059 msgid "New album name: " msgstr "" -#: ../../mod/photos.php:1017 +#: ../../mod/photos.php:1016 msgid "or existing album name: " msgstr "" -#: ../../mod/photos.php:1018 +#: ../../mod/photos.php:1017 msgid "Do not show a status post for this upload" msgstr "" -#: ../../mod/photos.php:1020 ../../mod/photos.php:1306 +#: ../../mod/photos.php:1019 ../../mod/photos.php:1305 msgid "Permissions" msgstr "" -#: ../../mod/photos.php:1075 +#: ../../mod/photos.php:1074 msgid "Edit Album" msgstr "" -#: ../../mod/photos.php:1099 ../../mod/photos.php:1532 +#: ../../mod/photos.php:1098 ../../mod/photos.php:1531 msgid "View Photo" msgstr "" -#: ../../mod/photos.php:1134 +#: ../../mod/photos.php:1133 msgid "Permission denied. Access to this item may be restricted." msgstr "" -#: ../../mod/photos.php:1136 +#: ../../mod/photos.php:1135 msgid "Photo not available" msgstr "" -#: ../../mod/photos.php:1186 +#: ../../mod/photos.php:1185 msgid "View photo" msgstr "" -#: ../../mod/photos.php:1186 +#: ../../mod/photos.php:1185 msgid "Edit photo" msgstr "" -#: ../../mod/photos.php:1187 +#: ../../mod/photos.php:1186 msgid "Use as profile photo" msgstr "" -#: ../../mod/photos.php:1193 ../../mod/content.php:601 +#: ../../mod/photos.php:1192 ../../mod/content.php:601 #: ../../include/conversation.php:552 msgid "Private Message" msgstr "" -#: ../../mod/photos.php:1215 +#: ../../mod/photos.php:1214 msgid "View Full Size" msgstr "" -#: ../../mod/photos.php:1283 +#: ../../mod/photos.php:1282 msgid "Tags: " msgstr "" -#: ../../mod/photos.php:1286 +#: ../../mod/photos.php:1285 msgid "[Remove any tag]" msgstr "" -#: ../../mod/photos.php:1296 +#: ../../mod/photos.php:1295 msgid "Rotate CW (right)" msgstr "" -#: ../../mod/photos.php:1297 +#: ../../mod/photos.php:1296 msgid "Rotate CCW (left)" msgstr "" -#: ../../mod/photos.php:1299 +#: ../../mod/photos.php:1298 msgid "New album name" msgstr "" -#: ../../mod/photos.php:1302 +#: ../../mod/photos.php:1301 msgid "Caption" msgstr "" -#: ../../mod/photos.php:1304 +#: ../../mod/photos.php:1303 msgid "Add a Tag" msgstr "" -#: ../../mod/photos.php:1308 +#: ../../mod/photos.php:1307 msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "" -#: ../../mod/photos.php:1328 ../../mod/content.php:665 +#: ../../mod/photos.php:1327 ../../mod/content.php:665 #: ../../include/conversation.php:616 msgid "I like this (toggle)" msgstr "" -#: ../../mod/photos.php:1329 ../../mod/content.php:666 +#: ../../mod/photos.php:1328 ../../mod/content.php:666 #: ../../include/conversation.php:617 msgid "I don't like this (toggle)" msgstr "" -#: ../../mod/photos.php:1330 ../../include/conversation.php:1055 +#: ../../mod/photos.php:1329 ../../include/conversation.php:1055 msgid "Share" msgstr "" -#: ../../mod/photos.php:1331 ../../mod/editpost.php:104 +#: ../../mod/photos.php:1330 ../../mod/editpost.php:104 #: ../../mod/content.php:482 ../../mod/content.php:842 #: ../../mod/wallmessage.php:145 ../../mod/message.php:293 #: ../../mod/message.php:474 ../../include/conversation.php:433 @@ -582,36 +582,36 @@ msgstr "" msgid "Please wait" msgstr "" -#: ../../mod/photos.php:1347 ../../mod/photos.php:1387 -#: ../../mod/photos.php:1418 ../../mod/content.php:688 +#: ../../mod/photos.php:1346 ../../mod/photos.php:1386 +#: ../../mod/photos.php:1417 ../../mod/content.php:688 #: ../../include/conversation.php:639 msgid "This is you" msgstr "" -#: ../../mod/photos.php:1349 ../../mod/photos.php:1389 -#: ../../mod/photos.php:1420 ../../mod/content.php:690 +#: ../../mod/photos.php:1348 ../../mod/photos.php:1388 +#: ../../mod/photos.php:1419 ../../mod/content.php:690 #: ../../include/conversation.php:641 ../../boot.php:564 msgid "Comment" msgstr "" -#: ../../mod/photos.php:1351 ../../mod/editpost.php:125 +#: ../../mod/photos.php:1350 ../../mod/editpost.php:125 #: ../../mod/content.php:700 ../../include/conversation.php:651 #: ../../include/conversation.php:1092 msgid "Preview" msgstr "" -#: ../../mod/photos.php:1448 ../../mod/content.php:439 +#: ../../mod/photos.php:1447 ../../mod/content.php:439 #: ../../mod/content.php:720 ../../mod/settings.php:618 #: ../../mod/settings.php:707 ../../mod/group.php:168 ../../mod/admin.php:665 #: ../../include/conversation.php:390 ../../include/conversation.php:671 msgid "Delete" msgstr "" -#: ../../mod/photos.php:1538 +#: ../../mod/photos.php:1537 msgid "View Album" msgstr "" -#: ../../mod/photos.php:1547 +#: ../../mod/photos.php:1546 msgid "Recent Photos" msgstr "" @@ -2292,7 +2292,7 @@ msgstr "" msgid "Profile is not published." msgstr "" -#: ../../mod/settings.php:939 ../../mod/profile_photo.php:213 +#: ../../mod/settings.php:939 ../../mod/profile_photo.php:214 msgid "or" msgstr "" @@ -2930,7 +2930,7 @@ msgstr "" #: ../../addon/communityhome/communityhome.php:158 #: ../../addon/communityhome/communityhome.php:167 #: ../../view/theme/diabook/theme.php:565 -#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1777 +#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1792 #: ../../include/conversation.php:110 ../../include/conversation.php:119 #: ../../include/conversation.php:183 ../../include/conversation.php:192 msgid "status" @@ -2938,7 +2938,7 @@ msgstr "" #: ../../mod/like.php:161 ../../addon/facebook/facebook.php:1590 #: ../../addon/communityhome/communityhome.php:172 -#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1793 +#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1808 #: ../../include/conversation.php:127 #, php-format msgid "%1$s likes %2$s's %3$s" @@ -2989,8 +2989,8 @@ msgstr "" msgid "Empty post discarded." msgstr "" -#: ../../mod/item.php:379 ../../mod/wall_upload.php:115 -#: ../../mod/wall_upload.php:124 ../../mod/wall_upload.php:131 +#: ../../mod/item.php:379 ../../mod/wall_upload.php:122 +#: ../../mod/wall_upload.php:131 ../../mod/wall_upload.php:138 #: ../../include/message.php:144 msgid "Wall Photos" msgstr "" @@ -3026,7 +3026,7 @@ msgid "Image uploaded but image cropping failed." msgstr "" #: ../../mod/profile_photo.php:63 ../../mod/profile_photo.php:70 -#: ../../mod/profile_photo.php:77 ../../mod/profile_photo.php:266 +#: ../../mod/profile_photo.php:77 ../../mod/profile_photo.php:273 #, php-format msgid "Image size reduction [%s] failed." msgstr "" @@ -3046,39 +3046,39 @@ msgstr "" msgid "Image exceeds size limit of %d" msgstr "" -#: ../../mod/profile_photo.php:209 +#: ../../mod/profile_photo.php:210 msgid "Upload File:" msgstr "" -#: ../../mod/profile_photo.php:210 +#: ../../mod/profile_photo.php:211 msgid "Upload Profile Photo" msgstr "" -#: ../../mod/profile_photo.php:211 +#: ../../mod/profile_photo.php:212 msgid "Upload" msgstr "" -#: ../../mod/profile_photo.php:213 +#: ../../mod/profile_photo.php:214 msgid "skip this step" msgstr "" -#: ../../mod/profile_photo.php:213 +#: ../../mod/profile_photo.php:214 msgid "select a photo from your photo albums" msgstr "" -#: ../../mod/profile_photo.php:226 +#: ../../mod/profile_photo.php:227 msgid "Crop Image" msgstr "" -#: ../../mod/profile_photo.php:227 +#: ../../mod/profile_photo.php:228 msgid "Please adjust the image cropping for optimum viewing." msgstr "" -#: ../../mod/profile_photo.php:229 +#: ../../mod/profile_photo.php:230 msgid "Done Editing" msgstr "" -#: ../../mod/profile_photo.php:257 +#: ../../mod/profile_photo.php:264 msgid "Image uploaded successfully." msgstr "" @@ -6862,7 +6862,7 @@ msgstr "" msgid "Sharing notification from Diaspora network" msgstr "" -#: ../../include/diaspora.php:2152 +#: ../../include/diaspora.php:2173 msgid "Attachments:" msgstr "" @@ -7434,7 +7434,7 @@ msgstr "" msgid "You have a new follower at " msgstr "" -#: ../../include/items.php:3650 +#: ../../include/items.php:3652 msgid "Archives" msgstr "" From 12255dded50c9aa13f559169b939de390234d49a Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 10 Jul 2012 18:05:13 -0700 Subject: [PATCH 013/658] rev update --- boot.php | 2 +- util/messages.po | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/boot.php b/boot.php index e6fc2e9c7..9a4e19613 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1399' ); +define ( 'FRIENDICA_VERSION', '3.0.1400' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index b65dfb582..8b69020b8 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1399\n" +"Project-Id-Version: 3.0.1400\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-09 10:00-0700\n" +"POT-Creation-Date: 2012-07-10 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" From fc6f7daf38b02efba5e4f7eefb57544f1befb258 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta Date: Tue, 10 Jul 2012 19:28:38 -0600 Subject: [PATCH 014/658] small cleanup --- include/items.php | 2 +- mod/item.php | 5 ----- mod/like.php | 8 -------- 3 files changed, 1 insertion(+), 14 deletions(-) diff --git a/include/items.php b/include/items.php index e656fc244..a88246cd6 100755 --- a/include/items.php +++ b/include/items.php @@ -3683,7 +3683,7 @@ function store_diaspora_retract_sig($item, $user, $baseurl) { } else { $r = q("SELECT `nick`, `url` FROM `contact` WHERE `id` = '%d' LIMIT 1", - $item['contact-id'] + $item['contact-id'] // If this function gets called, drop_item() has already checked remote_user() == $item['contact-id'] ); if(count($r)) { // The below handle only works for NETWORK_DFRN. I think that's ok, because this function diff --git a/mod/item.php b/mod/item.php index 554e97fe4..da9185cb8 100644 --- a/mod/item.php +++ b/mod/item.php @@ -1039,16 +1039,11 @@ function store_diaspora_comment_sig($datarray, $author, $uprvkey, $parent_item, require_once('include/bb2diaspora.php'); $signed_body = html_entity_decode(bb2diaspora($datarray['body'])); -// $myaddr = $user['nickname'] . '@' . substr($baseurl, strpos($baseurl,'://') + 3); -// if( $author['network'] === NETWORK_DIASPORA) -// $diaspora_handle = $author['addr']; -// else { // Only works for NETWORK_DFRN $contact_baseurl_start = strpos($author['url'],'://') + 3; $contact_baseurl_length = strpos($author['url'],'/profile') - $contact_baseurl_start; $contact_baseurl = substr($author['url'], $contact_baseurl_start, $contact_baseurl_length); $diaspora_handle = $author['nick'] . '@' . $contact_baseurl; -// } $signed_text = $datarray['guid'] . ';' . $parent_item['guid'] . ';' . $signed_body . ';' . $diaspora_handle; diff --git a/mod/like.php b/mod/like.php index 1176c3110..5519bffdb 100755 --- a/mod/like.php +++ b/mod/like.php @@ -245,9 +245,6 @@ function store_diaspora_like_retract_sig($activity, $item, $like_item, $contact) if(($activity === ACTIVITY_LIKE) && (! $item['resource-id'])) { $signed_text = $like_item['guid'] . ';' . 'Like'; -// if( $contact['network'] === NETWORK_DIASPORA) -// $diaspora_handle = $contact['addr']; -// else { // Only works for NETWORK_DFRN $contact_baseurl_start = strpos($contact['url'],'://') + 3; $contact_baseurl_length = strpos($contact['url'],'/profile') - $contact_baseurl_start; @@ -268,7 +265,6 @@ function store_diaspora_like_retract_sig($activity, $item, $like_item, $contact) if( $r) $authorsig = base64_encode(rsa_sign($signed_text,$r['prvkey'],'sha256')); } -// } if(! isset($authorsig)) $authorsig = ''; @@ -299,9 +295,6 @@ function store_diaspora_like_sig($activity, $post_type, $contact, $post_id) { logger('mod_like: storing diaspora like signature'); if(($activity === ACTIVITY_LIKE) && ($post_type === t('status'))) { -// if( $contact['network'] === NETWORK_DIASPORA) -// $diaspora_handle = $contact['addr']; -// else { // Only works for NETWORK_DFRN $contact_baseurl_start = strpos($contact['url'],'://') + 3; $contact_baseurl_length = strpos($contact['url'],'/profile') - $contact_baseurl_start; @@ -322,7 +315,6 @@ function store_diaspora_like_sig($activity, $post_type, $contact, $post_id) { if( $r) $contact_uprvkey = $r['prvkey']; } -// } $r = q("SELECT guid, parent FROM `item` WHERE id = %d LIMIT 1", intval($post_id) From 86cb638637197423a7707af5dfcdb96c5ed42af4 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 11 Jul 2012 02:58:57 -0700 Subject: [PATCH 015/658] notification issue on wall-to-wall posts --- include/enotify.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/enotify.php b/include/enotify.php index 5e073bf3c..814bd06a4 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -124,9 +124,9 @@ function notification($params) { $preamble = sprintf( t('%1$s posted to your profile wall at %2$s') , $params['source_name'], $sitename); - $epreamble = sprintf( t('%1$s posted to [url=%2s]your wall[/url]') , + $epreamble = sprintf( t('%1$s posted to [url=%2$s]your wall[/url]') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', - $itemlink); + $params['link']); $sitelink = t('Please visit %s to view and/or reply to the conversation.'); $tsitelink = sprintf( $sitelink, $siteurl ); From 48f67ead9bbebe868e0ab585d56538540ba80339 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 12 Jul 2012 01:17:33 +0200 Subject: [PATCH 016/658] parse_url: complete new code for fetching website information --- mod/parse_url.php | 366 ++++++++++++++++++++++++---------------------- 1 file changed, 193 insertions(+), 173 deletions(-) diff --git a/mod/parse_url.php b/mod/parse_url.php index a38f7e270..09722341c 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -1,7 +1,163 @@ query("//".$node); + foreach ($list as $child) + $child->parentNode->removeChild($child); + } +} -require_once('library/HTML5/Parser.php'); -require_once('library/HTMLPurifier.auto.php'); +function parseurl_getsiteinfo($url) { + $siteinfo = array(); + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_HEADER, 1); + curl_setopt($ch, CURLOPT_NOBODY, 0); + curl_setopt($ch, CURLOPT_TIMEOUT, 3); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch,CURLOPT_USERAGENT,'Opera/9.64(Windows NT 5.1; U; de) Presto/2.1.1'); + + $header = curl_exec($ch); + curl_close($ch); + + if (preg_match('/charset=(.*?)\n/', $header, $matches)) + $charset = trim(array_pop($matches)); + else + $charset = "utf-8"; + + $pos = strpos($header, "\r\n\r\n"); + + if ($pos) + $body = trim(substr($header, $pos)); + else + $body = $header; + + $body = mb_convert_encoding($body, "UTF-8", $charset); + $body = mb_convert_encoding($body, 'HTML-ENTITIES', "UTF-8"); + + $doc = new DOMDocument(); + @$doc->loadHTML($body); + + deletenode($doc, 'style'); + deletenode($doc, 'script'); + deletenode($doc, 'option'); + deletenode($doc, 'h1'); + deletenode($doc, 'h2'); + deletenode($doc, 'h3'); + deletenode($doc, 'h4'); + deletenode($doc, 'h5'); + deletenode($doc, 'h6'); + deletenode($doc, 'ol'); + deletenode($doc, 'ul'); + + $xpath = new DomXPath($doc); + + $list = $xpath->query("head/title"); + foreach ($list as $node) + $siteinfo["title"] = html_entity_decode($node->nodeValue, ENT_QUOTES, "UTF-8"); + + $list = $xpath->query("head/meta[@name]"); + foreach ($list as $node) { + $attr = array(); + if ($node->attributes->length) + foreach ($node->attributes as $attribute) + $attr[$attribute->name] = $attribute->value; + + $attr["content"] = html_entity_decode($attr["content"], ENT_QUOTES, "UTF-8"); + + switch (strtolower($attr["name"])) { + case "fulltitle": + $siteinfo["title"] = $attr["content"]; + break; + case "description": + $siteinfo["text"] = $attr["content"]; + break; + case "dc.title": + $siteinfo["title"] = $attr["content"]; + break; + case "dc.description": + $siteinfo["text"] = $attr["content"]; + break; + } + } + + $list = $xpath->query("head/meta[@property]"); + foreach ($list as $node) { + $attr = array(); + if ($node->attributes->length) + foreach ($node->attributes as $attribute) + $attr[$attribute->name] = $attribute->value; + + $attr["content"] = html_entity_decode($attr["content"], ENT_QUOTES, "UTF-8"); + + switch (strtolower($attr["property"])) { + case "og:image": + $siteinfo["image"] = $attr["content"]; + break; + case "og:title": + $siteinfo["title"] = $attr["content"]; + break; + case "og:description": + $siteinfo["text"] = $attr["content"]; + break; + } + } + + if ($siteinfo["image"] == "") { + require_once('include/Photo.php'); + $list = $xpath->query("//img[@src]"); + foreach ($list as $node) { + $attr = array(); + if ($node->attributes->length) + foreach ($node->attributes as $attribute) + $attr[$attribute->name] = $attribute->value; + + // guess mimetype from headers or filename + $type = guess_image_type($attr["src"],true); + + $i = fetch_url($attr["src"]); + $ph = new Photo($i, $type); + + if(($ph->getWidth() > 200) and ($ph->getHeight() > 200)) + $siteinfo["image"] = $attr["src"]; + } + } + + if ($siteinfo["text"] == "") { + $text = ""; + + $list = $xpath->query("//div[@class='article']"); + foreach ($list as $node) + $text .= " ".trim($node->nodeValue); + + if ($text == "") { + $list = $xpath->query("//div[@class='content']"); + foreach ($list as $node) + $text .= " ".trim($node->nodeValue); + } + + // If none text was found then take the paragraph content + if ($text == "") { + $list = $xpath->query("//p"); + foreach ($list as $node) + $text .= " ".trim($node->nodeValue); + } + + if ($text != "") { + $text = trim(str_replace(array("\n", "\r"), array(" ", " "), $text)); + + while (strpos($text, " ")) + $text = trim(str_replace(" ", " ", $text)); + + $siteinfo["text"] = html_entity_decode(substr($text,0,350), ENT_QUOTES, "UTF-8").'...'; + } + } + + return($siteinfo); +} function arr_add_hashes(&$item,$k) { $item = '#' . $item; @@ -40,13 +196,11 @@ function parse_url_content(&$a) { logger('parse_url: ' . $url); - if($textmode) $template = $br . '[bookmark=%s]%s[/bookmark]%s' . $br; else $template = "
%s%s
"; - $arr = array('url' => $url, 'text' => ''); call_hooks('parse_link', $arr); @@ -60,187 +214,53 @@ function parse_url_content(&$a) { if($url && $title && $text) { if($textmode) - $text = $br . $br . '[quote]' . $text . '[/quote]' . $br; + $text = $br . $br . '[quote]' . trim($text) . '[/quote]' . $br; else - $text = '

' . $text . '

'; + $text = '

' . trim($text) . '

'; $title = str_replace(array("\r","\n"),array('',''),$title); $result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags; - logger('parse_url (unparsed): returns: ' . $result); + logger('parse_url (unparsed): returns: ' . $result); echo $result; killme(); } + $siteinfo = parseurl_getsiteinfo($url); - if($url) { - $s = fetch_url($url); + if($siteinfo["title"] == "") { + echo sprintf($template,$url,$url,'') . $str_tags; + killme(); } else { - echo ''; - killme(); + $image = $siteinfo["image"]; + $text = $siteinfo["text"]; + $title = $siteinfo["title"]; } -// logger('parse_url: data: ' . $s, LOGGER_DATA); + if ($image != "") { + $i = fetch_url($image); + if($i) { + require_once('include/Photo.php'); + // guess mimetype from headers or filename + $type = guess_image_type($image,true); - if(! $s) { - echo sprintf($template,$url,$url,'') . $str_tags; - killme(); - } - - $matches = ''; - $c = preg_match('/\(.*?)\<\/head\>/ism',$s,$matches); - if($c) { -// logger('parse_url: header: ' . $matches[2], LOGGER_DATA); - try { - $domhead = HTML5_Parser::parse($matches[2]); - } catch (DOMException $e) { - logger('scrape_dfrn: parse error: ' . $e); - } - if($domhead) - logger('parsed header'); - } - - if(! $title) { - if(strpos($s,'')) { - $title = substr($s,strpos($s,'<title>')+7,64); - if(strpos($title,'<') !== false) - $title = strip_tags(substr($title,0,strpos($title,'<'))); - } - } - - $config = HTMLPurifier_Config::createDefault(); - $config->set('Cache.DefinitionImpl', null); - $purifier = new HTMLPurifier($config); - $s = $purifier->purify($s); - -// logger('purify_output: ' . $s); - - try { - $dom = HTML5_Parser::parse($s); - } catch (DOMException $e) { - logger('scrape_dfrn: parse error: ' . $e); - } - - if(! $dom) { - echo sprintf($template,$url,$url,'') . $str_tags; - killme(); - } - - $items = $dom->getElementsByTagName('title'); - - if($items) { - foreach($items as $item) { - $title = trim($item->textContent); - break; - } - } - - - if(! $text) { - $divs = $dom->getElementsByTagName('div'); - if($divs) { - foreach($divs as $div) { - $class = $div->getAttribute('class'); - if($class && (stristr($class,'article') || stristr($class,'content'))) { - $items = $div->getElementsByTagName('p'); - if($items) { - foreach($items as $item) { - $text = $item->textContent; - if(stristr($text,'<script')) { - $text = ''; - continue; - } - $text = strip_tags($text); - if(strlen($text) < 100) { - $text = ''; - continue; - } - $text = substr($text,0,250) . '...' ; - break; - } - } - } - if($text) - break; - } - } - - if(! $text) { - $items = $dom->getElementsByTagName('p'); - if($items) { - foreach($items as $item) { - $text = $item->textContent; - if(stristr($text,'<script')) - continue; - $text = strip_tags($text); - if(strlen($text) < 100) { - $text = ''; - continue; - } - $text = substr($text,0,250) . '...' ; - break; - } - } - } - } - - if(! $text) { - logger('parsing meta'); - $items = (isset($domhead) && is_object($domhead) ? $domhead->getElementsByTagName('meta') : null); - if($items) { - foreach($items as $item) { - $property = $item->getAttribute('property'); - if($property && (stristr($property,':description'))) { - - $text = $item->getAttribute('content'); - if(stristr($text,'<script')) { - $text = ''; - continue; - } - $text = strip_tags($text); - - - $text = substr($text,0,250) . '...' ; - } - if($property && (stristr($property,':image'))) { - - $image = $item->getAttribute('content'); - if(stristr($text,'<script')) { - $image = ''; - continue; - } - $image = strip_tags($image); - - $i = fetch_url($image); - if($i) { - require_once('include/Photo.php'); - // guess mimetype from headers or filename - $type = guess_image_type($image,true); - - $ph = new Photo($i, $type); - if($ph->is_valid()) { - if($ph->getWidth() > 300 || $ph->getHeight() > 300) { - $ph->scaleImage(300); - $new_width = $ph->getWidth(); - $new_height = $ph->getHeight(); - if($textmode) - $image = $br . $br . '[img=' . $new_width . 'x' . $new_height . ']' . $image . '[/img]'; - else - $image = '<br /><br /><img height="' . $new_height . '" width="' . $new_width . '" src="' .$image . '" alt="photo" />'; - } - else { - if($textmode) - $image = $br . $br . '[img]' . $image . '[/img]'; - else - $image = '<br /><br /><img src="' . $image . '" alt="photo" />'; - } - } - else - $image = ''; - - } + $ph = new Photo($i, $type); + if($ph->is_valid()) { + if($ph->getWidth() > 300 || $ph->getHeight() > 300) { + $ph->scaleImage(300); + $new_width = $ph->getWidth(); + $new_height = $ph->getHeight(); + if($textmode) + $image = $br . $br . '[img=' . $new_width . 'x' . $new_height . ']' . $image . '[/img]'; + else + $image = '<br /><br /><img height="' . $new_height . '" width="' . $new_width . '" src="' .$image . '" alt="photo" />'; + } else { + if($textmode) + $image = $br.$br.'[img]'.$image.'[/img]'; + else + $image = '<br /><br /><img src="'.$image.'" alt="photo" />'; } } } @@ -248,19 +268,19 @@ function parse_url_content(&$a) { if(strlen($text)) { if($textmode) - $text = $br .$br . '[quote]' . $text . '[/quote]' . $br ; + $text = $br.$br.'[quote]'.trim($text).'[/quote]'.$br ; else - $text = '<br /><br /><blockquote>' . $text . '</blockquote><br />'; + $text = '<br /><br /><blockquote>'.trim($text).'</blockquote><br />'; } if($image) { - $text = $image . $br . $text; + $text = $image.$br.$text; } $title = str_replace(array("\r","\n"),array('',''),$title); $result = sprintf($template,$url,($title) ? $title : $url,$text) . $str_tags; - logger('parse_url: returns: ' . $result); + logger('parse_url: returns: ' . $result); echo $result; killme(); From 24ea480276a04043c4beac4c94ac84e852a7f7c4 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Wed, 11 Jul 2012 17:55:39 -0700 Subject: [PATCH 017/658] rev update --- boot.php | 2 +- util/messages.po | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/boot.php b/boot.php index 9a4e19613..63a2ad338 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1400' ); +define ( 'FRIENDICA_VERSION', '3.0.1401' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index 8b69020b8..d1c27894c 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1400\n" +"Project-Id-Version: 3.0.1401\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-10 10:00-0700\n" +"POT-Creation-Date: 2012-07-11 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -2925,7 +2925,7 @@ msgstr "" msgid "People Search" msgstr "" -#: ../../mod/like.php:144 ../../mod/like.php:301 ../../mod/tagger.php:70 +#: ../../mod/like.php:144 ../../mod/like.php:297 ../../mod/tagger.php:70 #: ../../addon/facebook/facebook.php:1586 #: ../../addon/communityhome/communityhome.php:158 #: ../../addon/communityhome/communityhome.php:167 @@ -7287,7 +7287,7 @@ msgstr "" #: ../../include/enotify.php:127 #, php-format -msgid "%1$s posted to [url=%2s]your wall[/url]" +msgid "%1$s posted to [url=%2$s]your wall[/url]" msgstr "" #: ../../include/enotify.php:138 From 085b589468adcbc94d0866b68c96b3ce87f4c011 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Wed, 11 Jul 2012 21:04:08 -0700 Subject: [PATCH 018/658] add some sparkle to plinks --- include/conversation.php | 12 +++++++++++- view/theme/diabook/wall_item.tpl | 2 +- view/theme/diabook/wallwall_item.tpl | 2 +- view/theme/dispy/wall_item.tpl | 2 +- view/theme/dispy/wallwall_item.tpl | 2 +- view/theme/quattro/wall_item.tpl | 4 ++-- view/theme/quattro/wallwall_item.tpl | 4 ++-- view/wall_item.tpl | 2 +- view/wallwall_item.tpl | 2 +- 9 files changed, 21 insertions(+), 11 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 240cd374f..716279181 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -73,7 +73,6 @@ function item_redir_and_replace_images($body, $images, $cid) { $newbody = str_replace('[!#saved_image' . $cnt . '#!]', '[img]' . $image . '[/img]', $newbody); $cnt++; } - return $newbody; }} @@ -242,6 +241,17 @@ function localize_item(&$item){ } } + // add sparkle links to appropriate permalinks + + $x = stristr($item['plink'],'/display/'); + if($x) { + $sparkle = false; + $y = best_link_url($item,$sparkle,true); + if(strstr($y,'/redir/')) + $item['plink'] = $y . '?f=&url=' . $item['plink']; + } + + } diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index 123834064..5b9de2968 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -22,7 +22,7 @@ <div class="wall-item-actions-author"> <a href="$item.profile_url" target="redir" title="$item.linktitle" class="wall-item-name-link"><span class="wall-item-name$item.sparkle">$item.name</span></a> <span class="wall-item-ago">- - {{ if $item.plink }}<a class="link" title="$item.plink.title" href="$item.plink.href" style="color: #999">$item.ago</a>{{ else }} $item.ago {{ endif }} + {{ if $item.plink }}<a class="link$item.sparkle" title="$item.plink.title" href="$item.plink.href" style="color: #999">$item.ago</a>{{ else }} $item.ago {{ endif }} {{ if $item.lock }} - <span class="fakelink" style="color: #999" onclick="lockview(event,$item.id);">$item.lock</span> {{ endif }} </span> </div> diff --git a/view/theme/diabook/wallwall_item.tpl b/view/theme/diabook/wallwall_item.tpl index bee75ad99..b2c980c78 100644 --- a/view/theme/diabook/wallwall_item.tpl +++ b/view/theme/diabook/wallwall_item.tpl @@ -28,7 +28,7 @@ <a href="$item.profile_url" target="redir" title="$item.linktitle" class="wall-item-name-link"><span class="wall-item-name$item.sparkle">$item.name</span></a> $item.to <a href="$item.owner_url" target="redir" title="$item.olinktitle" class="wall-item-name-link"><span class="wall-item-name$item.osparkle" id="wall-item-ownername-$item.id">$item.owner_name</span></a> $item.vwall <span class="wall-item-ago">-   - {{ if $item.plink }}<a class="link" title="$item.plink.title" href="$item.plink.href" style="color: #999">$item.ago</a>{{ else }} $item.ago {{ endif }} + {{ if $item.plink }}<a class="link$item.sparkle" title="$item.plink.title" href="$item.plink.href" style="color: #999">$item.ago</a>{{ else }} $item.ago {{ endif }} {{ if $item.lock }} - <span class="fakelink" style="color: #999" onclick="lockview(event,$item.id);">$item.lock</span> {{ endif }} </span> </div> diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl index 8ffae0403..8d6f258e6 100644 --- a/view/theme/dispy/wall_item.tpl +++ b/view/theme/dispy/wall_item.tpl @@ -52,7 +52,7 @@ <li><a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item icon file-as" title="$item.filer"></a></li> {{ endif }} {{ if $item.plink }} - <li class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link"></a></li> + <li class="wall-item-links-wrapper$item.sparkle"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link"></a></li> {{ endif }} {{ if $item.edpost }} <li><a class="editpost icon pencil" href="$item.edpost.0" title="$item.edpost.1"></a></li> diff --git a/view/theme/dispy/wallwall_item.tpl b/view/theme/dispy/wallwall_item.tpl index 84da598cd..f5187b710 100644 --- a/view/theme/dispy/wallwall_item.tpl +++ b/view/theme/dispy/wallwall_item.tpl @@ -59,7 +59,7 @@ class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick <li class="wall-item-filer-wrapper"><a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item icon file-as" title="$item.star.filer"></a></li> {{ endif }} {{ if $item.plink }} - <li class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link"></a></li> + <li class="wall-item-links-wrapper$item.sparkle"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link"></a></li> {{ endif }} {{ if $item.edpost }} <li><a class="editpost icon pencil" href="$item.edpost.0" title="$item.edpost.1"></a></li> diff --git a/view/theme/quattro/wall_item.tpl b/view/theme/quattro/wall_item.tpl index e771db068..2b12ce632 100644 --- a/view/theme/quattro/wall_item.tpl +++ b/view/theme/quattro/wall_item.tpl @@ -23,7 +23,7 @@ <div class="wall-item-location">$item.location</div> </div> <div class="wall-item-content"> - {{ if $item.title }}<h2><a href="$item.plink.href">$item.title</a></h2>{{ endif }} + {{ if $item.title }}<h2><a href="$item.plink.href" class="$item.sparkle">$item.title</a></h2>{{ endif }} $item.body </div> </div> @@ -38,7 +38,7 @@ </div> <div class="wall-item-bottom"> <div class=""> - {{ if $item.plink }}<a class="icon s16 link" title="$item.plink.title" href="$item.plink.href">$item.plink.title</a>{{ endif }} + {{ if $item.plink }}<a class="icon s16 link$item.sparkle" title="$item.plink.title" href="$item.plink.href">$item.plink.title</a>{{ endif }} </div> <div class="wall-item-actions"> <div class="wall-item-actions-author"> diff --git a/view/theme/quattro/wallwall_item.tpl b/view/theme/quattro/wallwall_item.tpl index 693ebaba6..a1d92773b 100644 --- a/view/theme/quattro/wallwall_item.tpl +++ b/view/theme/quattro/wallwall_item.tpl @@ -27,7 +27,7 @@ <div class="wall-item-location">$item.location</div> </div> <div class="wall-item-content"> - {{ if $item.title }}<h2><a href="$item.plink.href">$item.title</a></h2>{{ endif }} + {{ if $item.title }}<h2><a href="$item.plink.href" class="$item.sparkle">$item.title</a></h2>{{ endif }} $item.body </div> </div> @@ -42,7 +42,7 @@ </div> <div class="wall-item-bottom"> <div class="wall-item-links"> - {{ if $item.plink }}<a class="icon s16 link" title="$item.plink.title" href="$item.plink.href">$item.plink.title</a>{{ endif }} + {{ if $item.plink }}<a class="icon s16 link$item.sparkle" title="$item.plink.title" href="$item.plink.href">$item.plink.title</a>{{ endif }} </div> <div class="wall-item-actions"> <div class="wall-item-actions-author"> diff --git a/view/wall_item.tpl b/view/wall_item.tpl index dae33b3f7..60dde7600 100644 --- a/view/wall_item.tpl +++ b/view/wall_item.tpl @@ -48,7 +48,7 @@ </div> {{ endif }} {{ if $item.plink }} - <div class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link"></a></div> + <div class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link$item.sparkle"></a></div> {{ endif }} {{ if $item.edpost }} <a class="editpost icon pencil" href="$item.edpost.0" title="$item.edpost.1"></a> diff --git a/view/wallwall_item.tpl b/view/wallwall_item.tpl index a48acfec5..b7cca3fab 100644 --- a/view/wallwall_item.tpl +++ b/view/wallwall_item.tpl @@ -52,7 +52,7 @@ </div> {{ endif }} {{ if $item.plink }} - <div class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link"></a></div> + <div class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link$item.sparkle"></a></div> {{ endif }} {{ if $item.edpost }} <a class="editpost icon pencil" href="$item.edpost.0" title="$item.edpost.1"></a> From 9a299920ebfe28f9ab17737c3e741d39156a5c08 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Wed, 11 Jul 2012 22:45:14 -0700 Subject: [PATCH 019/658] language detection - result is stored in item['postopts'] --- boot.php | 1 + include/items.php | 6 ++++++ mod/item.php | 12 +++++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 63a2ad338..3d81c3c39 100644 --- a/boot.php +++ b/boot.php @@ -413,6 +413,7 @@ if(! class_exists('App')) { . 'include' . PATH_SEPARATOR . 'library' . PATH_SEPARATOR . 'library/phpsec' . PATH_SEPARATOR + . 'library/langdet' . PATH_SEPARATOR . '.' ); if((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'],0,2) === "q=") { diff --git a/include/items.php b/include/items.php index a88246cd6..388b27a19 100755 --- a/include/items.php +++ b/include/items.php @@ -816,6 +816,12 @@ function item_store($arr,$force_parent = false) { if((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false)) $arr['body'] = strip_tags($arr['body']); + require_once('Text/LanguageDetect.php'); + $naked_body = preg_replace('/\[(.+?)\]/','',$arr['body']); + $l = new Text_LanguageDetect; + $lng = $l->detectConfidence($naked_body); + $arr['postopts'] = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : ''); + $arr['wall'] = ((x($arr,'wall')) ? intval($arr['wall']) : 0); $arr['uri'] = ((x($arr,'uri')) ? notags(trim($arr['uri'])) : random_string()); diff --git a/mod/item.php b/mod/item.php index da9185cb8..b4e894337 100644 --- a/mod/item.php +++ b/mod/item.php @@ -18,6 +18,7 @@ require_once('include/crypto.php'); require_once('include/enotify.php'); require_once('include/email.php'); +require_once('Text/LanguageDetect.php'); function item_post(&$a) { @@ -216,6 +217,15 @@ function item_post(&$a) { $emailcc = notags(trim($_REQUEST['emailcc'])); $body = escape_tags(trim($_REQUEST['body'])); + + $naked_body = preg_replace('/\[(.+?)\]/','',$body); + $l = new Text_LanguageDetect; + $lng = $l->detectConfidence($naked_body); + + $postopts = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : ''); + + logger('mod_item: detect language' . print_r($lng,true) . $naked_body, LOGGER_DATA); + $private = ((strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) ? 1 : 0); // If this is a comment, set the permissions from the parent. @@ -561,7 +571,7 @@ function item_post(&$a) { $datarray['attach'] = $attachments; $datarray['bookmark'] = intval($bookmark); $datarray['thr-parent'] = $thr_parent; - $datarray['postopts'] = ''; + $datarray['postopts'] = $postopts; $datarray['origin'] = $origin; $datarray['moderated'] = $allow_moderated; From 09034ce0ee78e2906033b79f7844cd63b9bab18c Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Thu, 12 Jul 2012 08:20:27 +0200 Subject: [PATCH 020/658] parse_url: Fetch multiple pictures so that the user can decide what to take. --- mod/parse_url.php | 55 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/mod/parse_url.php b/mod/parse_url.php index 09722341c..97e1658c8 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -1,4 +1,6 @@ <?php +require_once('include/Photo.php'); + if(!function_exists('deletenode')) { function deletenode(&$doc, $node) { @@ -107,7 +109,6 @@ function parseurl_getsiteinfo($url) { } if ($siteinfo["image"] == "") { - require_once('include/Photo.php'); $list = $xpath->query("//img[@src]"); foreach ($list as $node) { $attr = array(); @@ -121,10 +122,33 @@ function parseurl_getsiteinfo($url) { $i = fetch_url($attr["src"]); $ph = new Photo($i, $type); - if(($ph->getWidth() > 200) and ($ph->getHeight() > 200)) - $siteinfo["image"] = $attr["src"]; + if($ph->is_valid() and ($ph->getWidth() > 200) and ($ph->getHeight() > 200)) { + if ($siteinfo["image"] == "") + $siteinfo["image"] = $attr["src"]; + + if($ph->getWidth() > 300 || $ph->getHeight() > 300) { + $ph->scaleImage(300); + $siteinfo["images"][] = array("src"=>$attr["src"], + "width"=>$ph->getWidth(), + "height"=>$ph->getHeight()); + } else + $siteinfo["images"][] = array("src"=>$attr["src"], + "width"=>$ph->getWidth(), + "height"=>$ph->getHeight()); + } } - } + } else { + // guess mimetype from headers or filename + $type = guess_image_type($siteinfo["image"],true); + + $i = fetch_url($siteinfo["image"]); + $ph = new Photo($i, $type); + + if($ph->is_valid()) + $siteinfo["images"][] = array("src"=>$siteinfo["image"], + "width"=>$ph->getWidth(), + "height"=>$ph->getHeight()); + } if ($siteinfo["text"] == "") { $text = ""; @@ -172,8 +196,8 @@ function parse_url_content(&$a) { if(local_user() && intval(get_pconfig(local_user(),'system','plaintext'))) $textmode = true; - if($textmode) - $br = (($textmode) ? "\n" : '<br /?'); + //if($textmode) + $br = (($textmode) ? "\n" : '<br />'); if(x($_GET,'binurl')) $url = trim(hex2bin($_GET['binurl'])); @@ -234,12 +258,19 @@ function parse_url_content(&$a) { echo sprintf($template,$url,$url,'') . $str_tags; killme(); } else { - $image = $siteinfo["image"]; $text = $siteinfo["text"]; $title = $siteinfo["title"]; } - if ($image != "") { + $image = ""; + + foreach ($siteinfo["images"] as $imagedata) + if($textmode) + $image .= '[img='.$imagedata["width"].'x'.$imagedata["height"].']'.$imagedata["src"].'[/img]'; + else + $image .= '<img height="'.$imagedata["height"].'" width="'.$imagedata["width"].'" src="'.$imagedata["src"].'" alt="photo" />'; + +/* if ($image != "") { $i = fetch_url($image); if($i) { require_once('include/Photo.php'); @@ -264,17 +295,17 @@ function parse_url_content(&$a) { } } } - } + }*/ if(strlen($text)) { if($textmode) - $text = $br.$br.'[quote]'.trim($text).'[/quote]'.$br ; + $text = $br.'[quote]'.trim($text).'[/quote]'.$br ; else - $text = '<br /><br /><blockquote>'.trim($text).'</blockquote><br />'; + $text = '<br /><blockquote>'.trim($text).'</blockquote><br />'; } if($image) { - $text = $image.$br.$text; + $text = $br.$br.$image.$br.$text; } $title = str_replace(array("\r","\n"),array('',''),$title); From bd08a6b565f36ee09aaa6ab4e1efe270f7b4ccd4 Mon Sep 17 00:00:00 2001 From: Thomas Willingham <founder@kakste.com> Date: Thu, 12 Jul 2012 19:21:21 +0100 Subject: [PATCH 021/658] Add sparkle cursor to Quattro/Vier/TestBubble --- view/theme/quattro/dark/style.css | 5 +++++ view/theme/quattro/green/style.css | 5 +++++ view/theme/quattro/icons/lock.cur | Bin 0 -> 4286 bytes view/theme/testbubble/lock.cur | Bin 0 -> 4286 bytes view/theme/testbubble/style.css | 4 ++++ view/theme/vier/lock.cur | Bin 0 -> 4286 bytes view/theme/vier/style.css | 4 ++++ 7 files changed, 18 insertions(+) create mode 100644 view/theme/quattro/icons/lock.cur create mode 100644 view/theme/testbubble/lock.cur create mode 100644 view/theme/vier/lock.cur diff --git a/view/theme/quattro/dark/style.css b/view/theme/quattro/dark/style.css index 35595c8bc..72febbf52 100644 --- a/view/theme/quattro/dark/style.css +++ b/view/theme/quattro/dark/style.css @@ -341,6 +341,11 @@ height: 16px; background-position: 0px 0px; } + +.sparkle { + cursor: url('icons/lock.cur'), pointer; +} + /* global */ body { font-family: Liberation Sans, helvetica, arial, clean, sans-serif; diff --git a/view/theme/quattro/green/style.css b/view/theme/quattro/green/style.css index 57fa38aa1..b1efb557f 100644 --- a/view/theme/quattro/green/style.css +++ b/view/theme/quattro/green/style.css @@ -341,6 +341,11 @@ height: 16px; background-position: 0px 0px; } + +.sparkle { + cursor: url('icons/lock.cur'), pointer; +} + /* global */ body { font-family: Liberation Sans, helvetica, arial, clean, sans-serif; diff --git a/view/theme/quattro/icons/lock.cur b/view/theme/quattro/icons/lock.cur new file mode 100644 index 0000000000000000000000000000000000000000..892c5e851eedc16e9844061b199e24194cfbc370 GIT binary patch literal 4286 zcmd^<F%H5o3`GqLAeJ&QGja<!TA8>C$KVDWfom`T#)dc~R#4I^Rs~r4O<XsAwiN&v z!w6O@fH}<IumD&Bz?wv_U`wJXJ-^<NIw+A<qnI;S-!JlWt^2sq41E6F#(<wgM)9Hf zTuj9pqTWiK+I-H}#VYYVasa+(^JYlCn`Kl_$_Z<9XK3kda))_k^T^Wu^HjY@F`w(J zhxM6?_(p6l;v?TNEqZ3ISj4B7az7+)y=uNSPv`H-m-(btox8;E&ZiT6Ya;dkZFJ|q z?}(m3Nx!LYBu^@)-^G2)9QyaK^XGi2HMQo>)`<Um|2#vUeQ4SbV-|bO)4l~W%&B?W z55KkAGgD;6`0BjRKh|S|C~BvOEMQIW?sTQ~B5EhEZ(2InZV-2rWzV`aUMJdPsM{G) Jbf-fvdjRyWblU&` literal 0 HcmV?d00001 diff --git a/view/theme/testbubble/lock.cur b/view/theme/testbubble/lock.cur new file mode 100644 index 0000000000000000000000000000000000000000..892c5e851eedc16e9844061b199e24194cfbc370 GIT binary patch literal 4286 zcmd^<F%H5o3`GqLAeJ&QGja<!TA8>C$KVDWfom`T#)dc~R#4I^Rs~r4O<XsAwiN&v z!w6O@fH}<IumD&Bz?wv_U`wJXJ-^<NIw+A<qnI;S-!JlWt^2sq41E6F#(<wgM)9Hf zTuj9pqTWiK+I-H}#VYYVasa+(^JYlCn`Kl_$_Z<9XK3kda))_k^T^Wu^HjY@F`w(J zhxM6?_(p6l;v?TNEqZ3ISj4B7az7+)y=uNSPv`H-m-(btox8;E&ZiT6Ya;dkZFJ|q z?}(m3Nx!LYBu^@)-^G2)9QyaK^XGi2HMQo>)`<Um|2#vUeQ4SbV-|bO)4l~W%&B?W z55KkAGgD;6`0BjRKh|S|C~BvOEMQIW?sTQ~B5EhEZ(2InZV-2rWzV`aUMJdPsM{G) Jbf-fvdjRyWblU&` literal 0 HcmV?d00001 diff --git a/view/theme/testbubble/style.css b/view/theme/testbubble/style.css index 58f31971b..1331a3f19 100644 --- a/view/theme/testbubble/style.css +++ b/view/theme/testbubble/style.css @@ -2875,6 +2875,10 @@ tr { /* = Icons = */ /* ========= */ +.sparkle { + cursor: url('lock.cur'), pointer; +} + .icon { display: block; width: 20px; height: 20px; background-image: url('icons.png'); diff --git a/view/theme/vier/lock.cur b/view/theme/vier/lock.cur new file mode 100644 index 0000000000000000000000000000000000000000..892c5e851eedc16e9844061b199e24194cfbc370 GIT binary patch literal 4286 zcmd^<F%H5o3`GqLAeJ&QGja<!TA8>C$KVDWfom`T#)dc~R#4I^Rs~r4O<XsAwiN&v z!w6O@fH}<IumD&Bz?wv_U`wJXJ-^<NIw+A<qnI;S-!JlWt^2sq41E6F#(<wgM)9Hf zTuj9pqTWiK+I-H}#VYYVasa+(^JYlCn`Kl_$_Z<9XK3kda))_k^T^Wu^HjY@F`w(J zhxM6?_(p6l;v?TNEqZ3ISj4B7az7+)y=uNSPv`H-m-(btox8;E&ZiT6Ya;dkZFJ|q z?}(m3Nx!LYBu^@)-^G2)9QyaK^XGi2HMQo>)`<Um|2#vUeQ4SbV-|bO)4l~W%&B?W z55KkAGgD;6`0BjRKh|S|C~BvOEMQIW?sTQ~B5EhEZ(2InZV-2rWzV`aUMJdPsM{G) Jbf-fvdjRyWblU&` literal 0 HcmV?d00001 diff --git a/view/theme/vier/style.css b/view/theme/vier/style.css index d8130e59f..64b3ba974 100644 --- a/view/theme/vier/style.css +++ b/view/theme/vier/style.css @@ -306,6 +306,10 @@ .icon.s48.unlock { background-image: url("../../../images/icons/48/unlock.png"); } +.sparkle { + cursor: url('lock.cur'), pointer; +} + #contact-edit-links ul { list-style: none; From 02a1fc9cd08fba2168895d1892a91d8143323848 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Thu, 12 Jul 2012 23:41:04 +0200 Subject: [PATCH 022/658] parse_url: Further improvements of the new method to fetch page data --- include/api.php | 1 + mod/parse_url.php | 106 ++++++++++++++++++++++++++++------------------ 2 files changed, 66 insertions(+), 41 deletions(-) diff --git a/include/api.php b/include/api.php index 3858b9fe3..e0b788424 100644 --- a/include/api.php +++ b/include/api.php @@ -1727,5 +1727,6 @@ notifications/follow notifications/leave blocks/exists blocks/blocking +lists */ diff --git a/mod/parse_url.php b/mod/parse_url.php index 97e1658c8..4d894969a 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -1,6 +1,4 @@ <?php -require_once('include/Photo.php'); - if(!function_exists('deletenode')) { function deletenode(&$doc, $node) { @@ -11,6 +9,30 @@ if(!function_exists('deletenode')) { } } +function completeurl($url, $scheme) { + $urlarr = parse_url($url); + + if (isset($urlarr["scheme"])) + return($url); + + $schemearr = parse_url($scheme); + + $complete = $schemearr["scheme"]."://".$schemearr["host"]; + + if ($schemearr["port"] != "") + $complete .= ":".$schemearr["port"]; + + $complete .= $urlarr["path"]; + + if ($urlarr["query"] != "") + $complete .= "?".$urlarr["query"]; + + if ($urlarr["fragment"] != "") + $complete .= "#".$urlarr["fragment"]; + + return($complete); +} + function parseurl_getsiteinfo($url) { $siteinfo = array(); @@ -25,7 +47,8 @@ function parseurl_getsiteinfo($url) { $header = curl_exec($ch); curl_close($ch); - if (preg_match('/charset=(.*?)\n/', $header, $matches)) + // Fetch the first mentioned charset. Can be in body or header + if (preg_match('/charset=(.*?)['."'".'"\s\n]/', $header, $matches)) $charset = trim(array_pop($matches)); else $charset = "utf-8"; @@ -57,11 +80,13 @@ function parseurl_getsiteinfo($url) { $xpath = new DomXPath($doc); - $list = $xpath->query("head/title"); + //$list = $xpath->query("head/title"); + $list = $xpath->query("//title"); foreach ($list as $node) $siteinfo["title"] = html_entity_decode($node->nodeValue, ENT_QUOTES, "UTF-8"); - $list = $xpath->query("head/meta[@name]"); + //$list = $xpath->query("head/meta[@name]"); + $list = $xpath->query("//meta[@name]"); foreach ($list as $node) { $attr = array(); if ($node->attributes->length) @@ -86,7 +111,8 @@ function parseurl_getsiteinfo($url) { } } - $list = $xpath->query("head/meta[@property]"); + //$list = $xpath->query("head/meta[@property]"); + $list = $xpath->query("//meta[@property]"); foreach ($list as $node) { $attr = array(); if ($node->attributes->length) @@ -116,38 +142,32 @@ function parseurl_getsiteinfo($url) { foreach ($node->attributes as $attribute) $attr[$attribute->name] = $attribute->value; - // guess mimetype from headers or filename - $type = guess_image_type($attr["src"],true); + $src = completeurl($attr["src"], $url); + $photodata = getimagesize($src); - $i = fetch_url($attr["src"]); - $ph = new Photo($i, $type); - - if($ph->is_valid() and ($ph->getWidth() > 200) and ($ph->getHeight() > 200)) { - if ($siteinfo["image"] == "") - $siteinfo["image"] = $attr["src"]; - - if($ph->getWidth() > 300 || $ph->getHeight() > 300) { - $ph->scaleImage(300); - $siteinfo["images"][] = array("src"=>$attr["src"], - "width"=>$ph->getWidth(), - "height"=>$ph->getHeight()); - } else - $siteinfo["images"][] = array("src"=>$attr["src"], - "width"=>$ph->getWidth(), - "height"=>$ph->getHeight()); + if (($photodata[0] > 150) and ($photodata[1] > 150)) { + if ($photodata[0] > 300) { + $photodata[1] = $photodata[1] * (300 / $photodata[0]); + $photodata[0] = 300; + } + if ($photodata[1] > 300) { + $photodata[0] = $photodata[0] * (300 / $photodata[1]); + $photodata[1] = 300; + } + $siteinfo["images"][] = array("src"=>$src, + "width"=>$photodata[0], + "height"=>$photodata[1]); } + } } else { - // guess mimetype from headers or filename - $type = guess_image_type($siteinfo["image"],true); + $src = completeurl($siteinfo["image"], $url); + $photodata = getimagesize($src); - $i = fetch_url($siteinfo["image"]); - $ph = new Photo($i, $type); - - if($ph->is_valid()) - $siteinfo["images"][] = array("src"=>$siteinfo["image"], - "width"=>$ph->getWidth(), - "height"=>$ph->getHeight()); + if (($photodata[0] > 10) and ($photodata[1] > 10)) + $siteinfo["images"][] = array("src"=>$src, + "width"=>$photodata[0], + "height"=>$photodata[1]); } if ($siteinfo["text"] == "") { @@ -155,19 +175,22 @@ function parseurl_getsiteinfo($url) { $list = $xpath->query("//div[@class='article']"); foreach ($list as $node) - $text .= " ".trim($node->nodeValue); + if (strlen($node->nodeValue) > 40) + $text .= " ".trim($node->nodeValue); if ($text == "") { $list = $xpath->query("//div[@class='content']"); foreach ($list as $node) - $text .= " ".trim($node->nodeValue); + if (strlen($node->nodeValue) > 40) + $text .= " ".trim($node->nodeValue); } // If none text was found then take the paragraph content if ($text == "") { $list = $xpath->query("//p"); foreach ($list as $node) - $text .= " ".trim($node->nodeValue); + if (strlen($node->nodeValue) > 40) + $text .= " ".trim($node->nodeValue); } if ($text != "") { @@ -238,9 +261,9 @@ function parse_url_content(&$a) { if($url && $title && $text) { if($textmode) - $text = $br . $br . '[quote]' . trim($text) . '[/quote]' . $br; + $text = $br . '[quote]' . trim($text) . '[/quote]' . $br; else - $text = '<br /><br /><blockquote>' . trim($text) . '</blockquote><br />'; + $text = '<br /><blockquote>' . trim($text) . '</blockquote><br />'; $title = str_replace(array("\r","\n"),array('',''),$title); @@ -255,7 +278,8 @@ function parse_url_content(&$a) { $siteinfo = parseurl_getsiteinfo($url); if($siteinfo["title"] == "") { - echo sprintf($template,$url,$url,'') . $str_tags; + echo print_r($siteinfo, true); + //echo sprintf($template,$url,$url,'') . $str_tags; killme(); } else { $text = $siteinfo["text"]; @@ -305,7 +329,7 @@ function parse_url_content(&$a) { } if($image) { - $text = $br.$br.$image.$br.$text; + $text = $br.$br.$image.$text; } $title = str_replace(array("\r","\n"),array('',''),$title); @@ -313,6 +337,6 @@ function parse_url_content(&$a) { logger('parse_url: returns: ' . $result); - echo $result; + echo trim($result); killme(); } From ce5ca967c1b2c72d81866cfe9e33803517d23737 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Thu, 12 Jul 2012 16:11:43 -0700 Subject: [PATCH 023/658] rev update --- boot.php | 2 +- util/messages.po | 330 +++++++++++++++++++++++------------------------ 2 files changed, 166 insertions(+), 166 deletions(-) diff --git a/boot.php b/boot.php index 3d81c3c39..78c952a61 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1401' ); +define ( 'FRIENDICA_VERSION', '3.0.1402' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index d1c27894c..06a9c4f00 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1401\n" +"Project-Id-Version: 3.0.1402\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-11 10:00-0700\n" +"POT-Creation-Date: 2012-07-12 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -45,8 +45,8 @@ msgstr "" #: ../../mod/wallmessage.php:33 ../../mod/wallmessage.php:79 #: ../../mod/wallmessage.php:103 ../../mod/attach.php:33 #: ../../mod/group.php:19 ../../mod/viewcontacts.php:22 -#: ../../mod/register.php:38 ../../mod/regmod.php:116 ../../mod/item.php:124 -#: ../../mod/item.php:140 ../../mod/profile_photo.php:19 +#: ../../mod/register.php:38 ../../mod/regmod.php:116 ../../mod/item.php:125 +#: ../../mod/item.php:141 ../../mod/profile_photo.php:19 #: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:153 #: ../../mod/profile_photo.php:166 ../../mod/message.php:45 #: ../../mod/message.php:175 ../../mod/allfriends.php:9 @@ -56,7 +56,7 @@ msgstr "" #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:510 #: ../../addon/facebook/facebook.php:516 ../../addon/dav/layout.fnk.php:353 -#: ../../include/items.php:3585 ../../index.php:309 +#: ../../include/items.php:3591 ../../index.php:309 msgid "Permission denied." msgstr "" @@ -169,7 +169,7 @@ msgstr "" #: ../../view/theme/diabook/theme.php:757 #: ../../view/theme/diabook/config.php:190 #: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70 -#: ../../include/conversation.php:642 +#: ../../include/conversation.php:652 msgid "Submit" msgstr "" @@ -229,7 +229,7 @@ msgid "link to source" msgstr "" #: ../../mod/events.php:328 ../../view/theme/diabook/theme.php:131 -#: ../../include/nav.php:52 ../../boot.php:1595 +#: ../../include/nav.php:52 ../../boot.php:1596 msgid "Events" msgstr "" @@ -285,7 +285,7 @@ msgstr "" #: ../../mod/events.php:429 ../../mod/directory.php:132 #: ../../include/event.php:40 ../../include/bb2diaspora.php:409 -#: ../../boot.php:1172 +#: ../../boot.php:1173 msgid "Location:" msgstr "" @@ -366,7 +366,7 @@ msgstr "" msgid "No" msgstr "" -#: ../../mod/photos.php:46 ../../boot.php:1589 +#: ../../mod/photos.php:46 ../../boot.php:1590 msgid "Photo Albums" msgstr "" @@ -420,8 +420,8 @@ msgstr "" #: ../../mod/photos.php:591 ../../mod/like.php:144 ../../mod/tagger.php:70 #: ../../addon/communityhome/communityhome.php:163 #: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1321 -#: ../../include/diaspora.php:1792 ../../include/conversation.php:115 -#: ../../include/conversation.php:188 +#: ../../include/diaspora.php:1792 ../../include/conversation.php:114 +#: ../../include/conversation.php:187 msgid "photo" msgstr "" @@ -520,7 +520,7 @@ msgid "Use as profile photo" msgstr "" #: ../../mod/photos.php:1192 ../../mod/content.php:601 -#: ../../include/conversation.php:552 +#: ../../include/conversation.php:562 msgid "Private Message" msgstr "" @@ -561,49 +561,49 @@ msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "" #: ../../mod/photos.php:1327 ../../mod/content.php:665 -#: ../../include/conversation.php:616 +#: ../../include/conversation.php:626 msgid "I like this (toggle)" msgstr "" #: ../../mod/photos.php:1328 ../../mod/content.php:666 -#: ../../include/conversation.php:617 +#: ../../include/conversation.php:627 msgid "I don't like this (toggle)" msgstr "" -#: ../../mod/photos.php:1329 ../../include/conversation.php:1055 +#: ../../mod/photos.php:1329 ../../include/conversation.php:1065 msgid "Share" msgstr "" #: ../../mod/photos.php:1330 ../../mod/editpost.php:104 #: ../../mod/content.php:482 ../../mod/content.php:842 #: ../../mod/wallmessage.php:145 ../../mod/message.php:293 -#: ../../mod/message.php:474 ../../include/conversation.php:433 -#: ../../include/conversation.php:793 ../../include/conversation.php:1074 +#: ../../mod/message.php:474 ../../include/conversation.php:443 +#: ../../include/conversation.php:803 ../../include/conversation.php:1084 msgid "Please wait" msgstr "" #: ../../mod/photos.php:1346 ../../mod/photos.php:1386 #: ../../mod/photos.php:1417 ../../mod/content.php:688 -#: ../../include/conversation.php:639 +#: ../../include/conversation.php:649 msgid "This is you" msgstr "" #: ../../mod/photos.php:1348 ../../mod/photos.php:1388 #: ../../mod/photos.php:1419 ../../mod/content.php:690 -#: ../../include/conversation.php:641 ../../boot.php:564 +#: ../../include/conversation.php:651 ../../boot.php:565 msgid "Comment" msgstr "" #: ../../mod/photos.php:1350 ../../mod/editpost.php:125 -#: ../../mod/content.php:700 ../../include/conversation.php:651 -#: ../../include/conversation.php:1092 +#: ../../mod/content.php:700 ../../include/conversation.php:661 +#: ../../include/conversation.php:1102 msgid "Preview" msgstr "" #: ../../mod/photos.php:1447 ../../mod/content.php:439 #: ../../mod/content.php:720 ../../mod/settings.php:618 #: ../../mod/settings.php:707 ../../mod/group.php:168 ../../mod/admin.php:665 -#: ../../include/conversation.php:390 ../../include/conversation.php:671 +#: ../../include/conversation.php:400 ../../include/conversation.php:681 msgid "Delete" msgstr "" @@ -668,28 +668,28 @@ msgstr "" msgid "Edit post" msgstr "" -#: ../../mod/editpost.php:80 ../../include/conversation.php:1041 +#: ../../mod/editpost.php:80 ../../include/conversation.php:1051 msgid "Post to Email" msgstr "" #: ../../mod/editpost.php:95 ../../mod/content.php:707 -#: ../../mod/settings.php:617 ../../include/conversation.php:658 +#: ../../mod/settings.php:617 ../../include/conversation.php:668 msgid "Edit" msgstr "" #: ../../mod/editpost.php:96 ../../mod/wallmessage.php:143 #: ../../mod/message.php:291 ../../mod/message.php:471 -#: ../../include/conversation.php:1056 +#: ../../include/conversation.php:1066 msgid "Upload photo" msgstr "" -#: ../../mod/editpost.php:97 ../../include/conversation.php:1058 +#: ../../mod/editpost.php:97 ../../include/conversation.php:1068 msgid "Attach file" msgstr "" #: ../../mod/editpost.php:98 ../../mod/wallmessage.php:144 #: ../../mod/message.php:292 ../../mod/message.php:472 -#: ../../include/conversation.php:1060 +#: ../../include/conversation.php:1070 msgid "Insert web link" msgstr "" @@ -705,35 +705,35 @@ msgstr "" msgid "Insert Vorbis [.ogg] audio" msgstr "" -#: ../../mod/editpost.php:102 ../../include/conversation.php:1066 +#: ../../mod/editpost.php:102 ../../include/conversation.php:1076 msgid "Set your location" msgstr "" -#: ../../mod/editpost.php:103 ../../include/conversation.php:1068 +#: ../../mod/editpost.php:103 ../../include/conversation.php:1078 msgid "Clear browser location" msgstr "" -#: ../../mod/editpost.php:105 ../../include/conversation.php:1075 +#: ../../mod/editpost.php:105 ../../include/conversation.php:1085 msgid "Permission settings" msgstr "" -#: ../../mod/editpost.php:113 ../../include/conversation.php:1084 +#: ../../mod/editpost.php:113 ../../include/conversation.php:1094 msgid "CC: email addresses" msgstr "" -#: ../../mod/editpost.php:114 ../../include/conversation.php:1085 +#: ../../mod/editpost.php:114 ../../include/conversation.php:1095 msgid "Public post" msgstr "" -#: ../../mod/editpost.php:117 ../../include/conversation.php:1071 +#: ../../mod/editpost.php:117 ../../include/conversation.php:1081 msgid "Set title" msgstr "" -#: ../../mod/editpost.php:119 ../../include/conversation.php:1073 +#: ../../mod/editpost.php:119 ../../include/conversation.php:1083 msgid "Categories (comma-separated list)" msgstr "" -#: ../../mod/editpost.php:120 ../../include/conversation.php:1087 +#: ../../mod/editpost.php:120 ../../include/conversation.php:1097 msgid "Example: bob@example.com, mary@example.com" msgstr "" @@ -854,7 +854,7 @@ msgstr "" msgid "Confirm" msgstr "" -#: ../../mod/dfrn_request.php:715 ../../include/items.php:2976 +#: ../../mod/dfrn_request.php:715 ../../include/items.php:2982 msgid "[Name Withheld]" msgstr "" @@ -1226,7 +1226,7 @@ msgid "is interested in:" msgstr "" #: ../../mod/match.php:58 ../../mod/suggest.php:59 -#: ../../include/contact_widgets.php:9 ../../boot.php:1116 +#: ../../include/contact_widgets.php:9 ../../boot.php:1117 msgid "Connect" msgstr "" @@ -1255,28 +1255,28 @@ msgid "Group: " msgstr "" #: ../../mod/content.php:438 ../../mod/content.php:719 -#: ../../include/conversation.php:389 ../../include/conversation.php:670 +#: ../../include/conversation.php:399 ../../include/conversation.php:680 msgid "Select" msgstr "" #: ../../mod/content.php:455 ../../mod/content.php:812 -#: ../../mod/content.php:813 ../../include/conversation.php:406 -#: ../../include/conversation.php:763 ../../include/conversation.php:764 +#: ../../mod/content.php:813 ../../include/conversation.php:416 +#: ../../include/conversation.php:773 ../../include/conversation.php:774 #, php-format msgid "View %s's profile @ %s" msgstr "" #: ../../mod/content.php:465 ../../mod/content.php:824 -#: ../../include/conversation.php:416 ../../include/conversation.php:775 +#: ../../include/conversation.php:426 ../../include/conversation.php:785 #, php-format msgid "%s from %s" msgstr "" -#: ../../mod/content.php:480 ../../include/conversation.php:431 +#: ../../mod/content.php:480 ../../include/conversation.php:441 msgid "View in context" msgstr "" -#: ../../mod/content.php:586 ../../include/conversation.php:537 +#: ../../mod/content.php:586 ../../include/conversation.php:547 #, php-format msgid "%d comment" msgid_plural "%d comments" @@ -1285,92 +1285,92 @@ msgstr[1] "" #: ../../mod/content.php:587 ../../addon/page/page.php:76 #: ../../addon/page/page.php:110 ../../addon/showmore/showmore.php:87 -#: ../../include/contact_widgets.php:188 ../../include/conversation.php:538 -#: ../../boot.php:565 +#: ../../include/contact_widgets.php:188 ../../include/conversation.php:548 +#: ../../boot.php:566 msgid "show more" msgstr "" -#: ../../mod/content.php:665 ../../include/conversation.php:616 +#: ../../mod/content.php:665 ../../include/conversation.php:626 msgid "like" msgstr "" -#: ../../mod/content.php:666 ../../include/conversation.php:617 +#: ../../mod/content.php:666 ../../include/conversation.php:627 msgid "dislike" msgstr "" -#: ../../mod/content.php:668 ../../include/conversation.php:619 +#: ../../mod/content.php:668 ../../include/conversation.php:629 msgid "Share this" msgstr "" -#: ../../mod/content.php:668 ../../include/conversation.php:619 +#: ../../mod/content.php:668 ../../include/conversation.php:629 msgid "share" msgstr "" -#: ../../mod/content.php:692 ../../include/conversation.php:643 +#: ../../mod/content.php:692 ../../include/conversation.php:653 msgid "Bold" msgstr "" -#: ../../mod/content.php:693 ../../include/conversation.php:644 +#: ../../mod/content.php:693 ../../include/conversation.php:654 msgid "Italic" msgstr "" -#: ../../mod/content.php:694 ../../include/conversation.php:645 +#: ../../mod/content.php:694 ../../include/conversation.php:655 msgid "Underline" msgstr "" -#: ../../mod/content.php:695 ../../include/conversation.php:646 +#: ../../mod/content.php:695 ../../include/conversation.php:656 msgid "Quote" msgstr "" -#: ../../mod/content.php:696 ../../include/conversation.php:647 +#: ../../mod/content.php:696 ../../include/conversation.php:657 msgid "Code" msgstr "" -#: ../../mod/content.php:697 ../../include/conversation.php:648 +#: ../../mod/content.php:697 ../../include/conversation.php:658 msgid "Image" msgstr "" -#: ../../mod/content.php:698 ../../include/conversation.php:649 +#: ../../mod/content.php:698 ../../include/conversation.php:659 msgid "Link" msgstr "" -#: ../../mod/content.php:699 ../../include/conversation.php:650 +#: ../../mod/content.php:699 ../../include/conversation.php:660 msgid "Video" msgstr "" -#: ../../mod/content.php:732 ../../include/conversation.php:683 +#: ../../mod/content.php:732 ../../include/conversation.php:693 msgid "add star" msgstr "" -#: ../../mod/content.php:733 ../../include/conversation.php:684 +#: ../../mod/content.php:733 ../../include/conversation.php:694 msgid "remove star" msgstr "" -#: ../../mod/content.php:734 ../../include/conversation.php:685 +#: ../../mod/content.php:734 ../../include/conversation.php:695 msgid "toggle star status" msgstr "" -#: ../../mod/content.php:737 ../../include/conversation.php:688 +#: ../../mod/content.php:737 ../../include/conversation.php:698 msgid "starred" msgstr "" -#: ../../mod/content.php:738 ../../include/conversation.php:689 +#: ../../mod/content.php:738 ../../include/conversation.php:699 msgid "add tag" msgstr "" -#: ../../mod/content.php:742 ../../include/conversation.php:693 +#: ../../mod/content.php:742 ../../include/conversation.php:703 msgid "save to folder" msgstr "" -#: ../../mod/content.php:814 ../../include/conversation.php:765 +#: ../../mod/content.php:814 ../../include/conversation.php:775 msgid "to" msgstr "" -#: ../../mod/content.php:815 ../../include/conversation.php:766 +#: ../../mod/content.php:815 ../../include/conversation.php:776 msgid "Wall-to-Wall" msgstr "" -#: ../../mod/content.php:816 ../../include/conversation.php:767 +#: ../../mod/content.php:816 ../../include/conversation.php:777 msgid "via Wall-To-Wall:" msgstr "" @@ -1888,8 +1888,8 @@ msgstr "" #: ../../addon/facebook/facebook.php:702 #: ../../addon/facebook/facebook.php:1192 #: ../../addon/public_server/public_server.php:62 -#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2985 -#: ../../boot.php:766 +#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2991 +#: ../../boot.php:767 msgid "Administrator" msgstr "" @@ -1899,7 +1899,7 @@ msgid "" "Password reset failed." msgstr "" -#: ../../mod/lostpass.php:83 ../../boot.php:898 +#: ../../mod/lostpass.php:83 ../../boot.php:899 msgid "Password Reset" msgstr "" @@ -2562,7 +2562,7 @@ msgstr "" msgid "Invalid contact." msgstr "" -#: ../../mod/notes.php:44 ../../boot.php:1601 +#: ../../mod/notes.php:44 ../../boot.php:1602 msgid "Personal Notes" msgstr "" @@ -2603,7 +2603,7 @@ msgid "No recipient." msgstr "" #: ../../mod/wallmessage.php:124 ../../mod/message.php:250 -#: ../../include/conversation.php:1009 +#: ../../include/conversation.php:1019 msgid "Please enter a link URL:" msgstr "" @@ -2813,7 +2813,7 @@ msgstr "" #: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128 #: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:84 -#: ../../include/nav.php:50 ../../boot.php:1580 +#: ../../include/nav.php:50 ../../boot.php:1581 msgid "Profile" msgstr "" @@ -2917,7 +2917,7 @@ msgstr "" msgid "Choose a nickname: " msgstr "" -#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:864 +#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:865 msgid "Register" msgstr "" @@ -2931,27 +2931,27 @@ msgstr "" #: ../../addon/communityhome/communityhome.php:167 #: ../../view/theme/diabook/theme.php:565 #: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1792 -#: ../../include/conversation.php:110 ../../include/conversation.php:119 -#: ../../include/conversation.php:183 ../../include/conversation.php:192 +#: ../../include/conversation.php:109 ../../include/conversation.php:118 +#: ../../include/conversation.php:182 ../../include/conversation.php:191 msgid "status" msgstr "" #: ../../mod/like.php:161 ../../addon/facebook/facebook.php:1590 #: ../../addon/communityhome/communityhome.php:172 #: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1808 -#: ../../include/conversation.php:127 +#: ../../include/conversation.php:126 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "" -#: ../../mod/like.php:163 ../../include/conversation.php:130 +#: ../../mod/like.php:163 ../../include/conversation.php:129 #, php-format msgid "%1$s doesn't like %2$s's %3$s" msgstr "" #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159 #: ../../mod/admin.php:702 ../../mod/admin.php:901 ../../mod/display.php:37 -#: ../../mod/display.php:142 ../../include/items.php:3464 +#: ../../mod/display.php:142 ../../include/items.php:3470 msgid "Item not found." msgstr "" @@ -2960,7 +2960,7 @@ msgid "Access denied." msgstr "" #: ../../mod/fbrowser.php:25 ../../view/theme/diabook/theme.php:130 -#: ../../include/nav.php:51 ../../boot.php:1586 +#: ../../include/nav.php:51 ../../boot.php:1587 msgid "Photos" msgstr "" @@ -2981,42 +2981,42 @@ msgstr "" msgid "Please login." msgstr "" -#: ../../mod/item.php:89 +#: ../../mod/item.php:90 msgid "Unable to locate original post." msgstr "" -#: ../../mod/item.php:258 +#: ../../mod/item.php:268 msgid "Empty post discarded." msgstr "" -#: ../../mod/item.php:379 ../../mod/wall_upload.php:122 +#: ../../mod/item.php:389 ../../mod/wall_upload.php:122 #: ../../mod/wall_upload.php:131 ../../mod/wall_upload.php:138 #: ../../include/message.php:144 msgid "Wall Photos" msgstr "" -#: ../../mod/item.php:784 +#: ../../mod/item.php:794 msgid "System error. Post not saved." msgstr "" -#: ../../mod/item.php:809 +#: ../../mod/item.php:819 #, php-format msgid "" "This message was sent to you by %s, a member of the Friendica social network." msgstr "" -#: ../../mod/item.php:811 +#: ../../mod/item.php:821 #, php-format msgid "You may visit them online at %s" msgstr "" -#: ../../mod/item.php:812 +#: ../../mod/item.php:822 msgid "" "Please contact the sender by replying to this post if you do not wish to " "receive these messages." msgstr "" -#: ../../mod/item.php:814 +#: ../../mod/item.php:824 #, php-format msgid "%s posted an update." msgstr "" @@ -3771,7 +3771,7 @@ msgstr "" msgid "FTP Password" msgstr "" -#: ../../mod/profile.php:21 ../../boot.php:1029 +#: ../../mod/profile.php:21 ../../boot.php:1030 msgid "Requested profile is not available." msgstr "" @@ -4166,27 +4166,27 @@ msgstr "" msgid "Edit/Manage Profiles" msgstr "" -#: ../../mod/profiles.php:664 ../../boot.php:1138 +#: ../../mod/profiles.php:664 ../../boot.php:1139 msgid "Change profile photo" msgstr "" -#: ../../mod/profiles.php:665 ../../boot.php:1139 +#: ../../mod/profiles.php:665 ../../boot.php:1140 msgid "Create New Profile" msgstr "" -#: ../../mod/profiles.php:676 ../../boot.php:1149 +#: ../../mod/profiles.php:676 ../../boot.php:1150 msgid "Profile Image" msgstr "" -#: ../../mod/profiles.php:678 ../../boot.php:1152 +#: ../../mod/profiles.php:678 ../../boot.php:1153 msgid "visible to everybody" msgstr "" -#: ../../mod/profiles.php:679 ../../boot.php:1153 +#: ../../mod/profiles.php:679 ../../boot.php:1154 msgid "Edit visibility" msgstr "" -#: ../../mod/filer.php:29 ../../include/conversation.php:1013 +#: ../../mod/filer.php:29 ../../include/conversation.php:1023 msgid "Save to Folder:" msgstr "" @@ -4194,7 +4194,7 @@ msgstr "" msgid "- select -" msgstr "" -#: ../../mod/tagger.php:103 ../../include/conversation.php:200 +#: ../../mod/tagger.php:103 ../../include/conversation.php:199 #, php-format msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "" @@ -4298,17 +4298,17 @@ msgid "Gender: " msgstr "" #: ../../mod/directory.php:134 ../../include/profile_advanced.php:17 -#: ../../boot.php:1174 +#: ../../boot.php:1175 msgid "Gender:" msgstr "" #: ../../mod/directory.php:136 ../../include/profile_advanced.php:37 -#: ../../boot.php:1177 +#: ../../boot.php:1178 msgid "Status:" msgstr "" #: ../../mod/directory.php:138 ../../include/profile_advanced.php:48 -#: ../../boot.php:1179 +#: ../../boot.php:1180 msgid "Homepage:" msgstr "" @@ -4440,7 +4440,7 @@ msgid "Unable to set contact photo." msgstr "" #: ../../mod/dfrn_confirm.php:477 ../../include/diaspora.php:577 -#: ../../include/conversation.php:163 +#: ../../include/conversation.php:162 #, php-format msgid "%1$s is now friends with %2$s" msgstr "" @@ -4903,7 +4903,7 @@ msgstr "" #: ../../addon/communityhome/communityhome.php:34 #: ../../addon/communityhome/twillingham/communityhome.php:28 #: ../../addon/communityhome/twillingham/communityhome.php:34 -#: ../../include/nav.php:64 ../../boot.php:885 +#: ../../include/nav.php:64 ../../boot.php:886 msgid "Login" msgstr "" @@ -4932,7 +4932,7 @@ msgstr "" #: ../../addon/communityhome/communityhome.php:155 #: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1319 -#: ../../include/conversation.php:107 ../../include/conversation.php:180 +#: ../../include/conversation.php:106 ../../include/conversation.php:179 msgid "event" msgstr "" @@ -6913,7 +6913,7 @@ msgstr "" msgid "Contacts not in any group" msgstr "" -#: ../../include/nav.php:46 ../../boot.php:884 +#: ../../include/nav.php:46 ../../boot.php:885 msgid "Logout" msgstr "" @@ -6921,7 +6921,7 @@ msgstr "" msgid "End this session" msgstr "" -#: ../../include/nav.php:49 ../../boot.php:1574 +#: ../../include/nav.php:49 ../../boot.php:1575 msgid "Status" msgstr "" @@ -7001,11 +7001,11 @@ msgstr "" msgid "Manage other pages" msgstr "" -#: ../../include/nav.php:138 ../../boot.php:1132 +#: ../../include/nav.php:138 ../../boot.php:1133 msgid "Profiles" msgstr "" -#: ../../include/nav.php:138 ../../boot.php:1132 +#: ../../include/nav.php:138 ../../boot.php:1133 msgid "Manage/edit profiles" msgstr "" @@ -7167,12 +7167,12 @@ msgstr "" msgid "%1$d %2$s ago" msgstr "" -#: ../../include/datetime.php:450 ../../include/items.php:1553 +#: ../../include/datetime.php:450 ../../include/items.php:1559 #, php-format msgid "%s's birthday" msgstr "" -#: ../../include/datetime.php:451 ../../include/items.php:1554 +#: ../../include/datetime.php:451 ../../include/items.php:1560 #, php-format msgid "Happy Birthday %s" msgstr "" @@ -7426,15 +7426,15 @@ msgstr "" msgid "following" msgstr "" -#: ../../include/items.php:2983 +#: ../../include/items.php:2989 msgid "A new person is sharing with you at " msgstr "" -#: ../../include/items.php:2983 +#: ../../include/items.php:2989 msgid "You have a new follower at " msgstr "" -#: ../../include/items.php:3652 +#: ../../include/items.php:3658 msgid "Archives" msgstr "" @@ -7533,142 +7533,142 @@ msgstr "" msgid "stopped following" msgstr "" -#: ../../include/Contact.php:218 ../../include/conversation.php:904 +#: ../../include/Contact.php:218 ../../include/conversation.php:914 msgid "View Status" msgstr "" -#: ../../include/Contact.php:219 ../../include/conversation.php:905 +#: ../../include/Contact.php:219 ../../include/conversation.php:915 msgid "View Profile" msgstr "" -#: ../../include/Contact.php:220 ../../include/conversation.php:906 +#: ../../include/Contact.php:220 ../../include/conversation.php:916 msgid "View Photos" msgstr "" #: ../../include/Contact.php:221 ../../include/Contact.php:234 -#: ../../include/conversation.php:907 +#: ../../include/conversation.php:917 msgid "Network Posts" msgstr "" #: ../../include/Contact.php:222 ../../include/Contact.php:234 -#: ../../include/conversation.php:908 +#: ../../include/conversation.php:918 msgid "Edit Contact" msgstr "" #: ../../include/Contact.php:223 ../../include/Contact.php:234 -#: ../../include/conversation.php:909 +#: ../../include/conversation.php:919 msgid "Send PM" msgstr "" -#: ../../include/conversation.php:225 +#: ../../include/conversation.php:224 msgid "post/item" msgstr "" -#: ../../include/conversation.php:226 +#: ../../include/conversation.php:225 #, php-format msgid "%1$s marked %2$s's %3$s as favorite" msgstr "" -#: ../../include/conversation.php:812 +#: ../../include/conversation.php:822 msgid "Delete Selected Items" msgstr "" -#: ../../include/conversation.php:967 +#: ../../include/conversation.php:977 #, php-format msgid "%s likes this." msgstr "" -#: ../../include/conversation.php:967 +#: ../../include/conversation.php:977 #, php-format msgid "%s doesn't like this." msgstr "" -#: ../../include/conversation.php:971 +#: ../../include/conversation.php:981 #, php-format msgid "<span %1$s>%2$d people</span> like this." msgstr "" -#: ../../include/conversation.php:973 +#: ../../include/conversation.php:983 #, php-format msgid "<span %1$s>%2$d people</span> don't like this." msgstr "" -#: ../../include/conversation.php:979 +#: ../../include/conversation.php:989 msgid "and" msgstr "" -#: ../../include/conversation.php:982 +#: ../../include/conversation.php:992 #, php-format msgid ", and %d other people" msgstr "" -#: ../../include/conversation.php:983 +#: ../../include/conversation.php:993 #, php-format msgid "%s like this." msgstr "" -#: ../../include/conversation.php:983 +#: ../../include/conversation.php:993 #, php-format msgid "%s don't like this." msgstr "" -#: ../../include/conversation.php:1008 +#: ../../include/conversation.php:1018 msgid "Visible to <strong>everybody</strong>" msgstr "" -#: ../../include/conversation.php:1010 +#: ../../include/conversation.php:1020 msgid "Please enter a video link/URL:" msgstr "" -#: ../../include/conversation.php:1011 +#: ../../include/conversation.php:1021 msgid "Please enter an audio link/URL:" msgstr "" -#: ../../include/conversation.php:1012 +#: ../../include/conversation.php:1022 msgid "Tag term:" msgstr "" -#: ../../include/conversation.php:1014 +#: ../../include/conversation.php:1024 msgid "Where are you right now?" msgstr "" -#: ../../include/conversation.php:1057 +#: ../../include/conversation.php:1067 msgid "upload photo" msgstr "" -#: ../../include/conversation.php:1059 +#: ../../include/conversation.php:1069 msgid "attach file" msgstr "" -#: ../../include/conversation.php:1061 +#: ../../include/conversation.php:1071 msgid "web link" msgstr "" -#: ../../include/conversation.php:1062 +#: ../../include/conversation.php:1072 msgid "Insert video link" msgstr "" -#: ../../include/conversation.php:1063 +#: ../../include/conversation.php:1073 msgid "video link" msgstr "" -#: ../../include/conversation.php:1064 +#: ../../include/conversation.php:1074 msgid "Insert audio link" msgstr "" -#: ../../include/conversation.php:1065 +#: ../../include/conversation.php:1075 msgid "audio link" msgstr "" -#: ../../include/conversation.php:1067 +#: ../../include/conversation.php:1077 msgid "set location" msgstr "" -#: ../../include/conversation.php:1069 +#: ../../include/conversation.php:1079 msgid "clear location" msgstr "" -#: ../../include/conversation.php:1076 +#: ../../include/conversation.php:1086 msgid "permissions" msgstr "" @@ -7684,96 +7684,96 @@ msgstr "" msgid "This action is not available under your subscription plan." msgstr "" -#: ../../boot.php:563 +#: ../../boot.php:564 msgid "Delete this item?" msgstr "" -#: ../../boot.php:566 +#: ../../boot.php:567 msgid "show fewer" msgstr "" -#: ../../boot.php:761 +#: ../../boot.php:762 #, php-format msgid "Update %s failed. See error logs." msgstr "" -#: ../../boot.php:763 +#: ../../boot.php:764 #, php-format msgid "Update Error at %s" msgstr "" -#: ../../boot.php:863 +#: ../../boot.php:864 msgid "Create a New Account" msgstr "" -#: ../../boot.php:887 +#: ../../boot.php:888 msgid "Nickname or Email address: " msgstr "" -#: ../../boot.php:888 +#: ../../boot.php:889 msgid "Password: " msgstr "" -#: ../../boot.php:891 +#: ../../boot.php:892 msgid "Or login using OpenID: " msgstr "" -#: ../../boot.php:897 +#: ../../boot.php:898 msgid "Forgot your password?" msgstr "" -#: ../../boot.php:1064 +#: ../../boot.php:1065 msgid "Edit profile" msgstr "" -#: ../../boot.php:1124 +#: ../../boot.php:1125 msgid "Message" msgstr "" -#: ../../boot.php:1240 ../../boot.php:1319 +#: ../../boot.php:1241 ../../boot.php:1320 msgid "g A l F d" msgstr "" -#: ../../boot.php:1241 ../../boot.php:1320 +#: ../../boot.php:1242 ../../boot.php:1321 msgid "F d" msgstr "" -#: ../../boot.php:1286 ../../boot.php:1360 +#: ../../boot.php:1287 ../../boot.php:1361 msgid "[today]" msgstr "" -#: ../../boot.php:1298 +#: ../../boot.php:1299 msgid "Birthday Reminders" msgstr "" -#: ../../boot.php:1299 +#: ../../boot.php:1300 msgid "Birthdays this week:" msgstr "" -#: ../../boot.php:1353 +#: ../../boot.php:1354 msgid "[No description]" msgstr "" -#: ../../boot.php:1371 +#: ../../boot.php:1372 msgid "Event Reminders" msgstr "" -#: ../../boot.php:1372 +#: ../../boot.php:1373 msgid "Events this week:" msgstr "" -#: ../../boot.php:1577 +#: ../../boot.php:1578 msgid "Status Messages and Posts" msgstr "" -#: ../../boot.php:1583 +#: ../../boot.php:1584 msgid "Profile Details" msgstr "" -#: ../../boot.php:1598 +#: ../../boot.php:1599 msgid "Events and Calendar" msgstr "" -#: ../../boot.php:1604 +#: ../../boot.php:1605 msgid "Only You Can See This" msgstr "" From 7f7e2c5de0f9191ed86cee2e0282276f6269250a Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Thu, 12 Jul 2012 16:12:37 -0700 Subject: [PATCH 024/658] add plink to profile notifications --- include/conversation.php | 1 + mod/profiles.php | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/conversation.php b/include/conversation.php index 716279181..6c3f13477 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -234,6 +234,7 @@ function localize_item(&$item){ $item['body'] = str_replace($mtch[0],'@[url=' . zrl($mtch[1]). ']',$item['body']); } } + // add zrl's to public images if(preg_match_all('/\[url=(.*?)\/photos\/(.*?)\/image\/(.*?)\]\[img(.*?)\]h(.*?)\[\/img\]\[\/url\]/is',$item['body'],$matches,PREG_SET_ORDER)) { foreach($matches as $mtch) { diff --git a/mod/profiles.php b/mod/profiles.php index 4df8a5af7..61f525e0f 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -385,9 +385,17 @@ function profile_activity($changed, $value) { $arr['deny_gid'] = $a->user['deny_gid']; $i = item_store($arr); - if($i) + if($i) { + + // give it a permanent link + q("update item set plink = '%s' where id = %d limit 1", + dbesc($a->get_baseurl() . '/display/' . $a->user['nickname'] . '/' . $i), + intval($i) + ); + proc_run('php',"include/notifier.php","activity","$i"); + } } From 92db5e5ec295fc83d3fc479f42cf0c4fe1ffaa74 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta <fermion@gmx.com> Date: Thu, 12 Jul 2012 23:12:48 -0600 Subject: [PATCH 025/658] focus preg_replace to prevent it from catching too much --- include/bb2diaspora.php | 68 ++++++++++++++++++++++++++++++++++++++--- mod/babel.php | 19 ++++++++++++ 2 files changed, 83 insertions(+), 4 deletions(-) diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index d0cb60302..b5feacea8 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -7,6 +7,66 @@ require_once("include/html2bbcode.php"); require_once("include/bbcode.php"); require_once("include/markdownify/markdownify.php"); + +function get_bb_tag_pos($s, $name, $occurance = 1) { + + if($occurance < 1) + $occurance = 1; + + $start_open = -1; + for($i = 1; $i <= $occurance; $i++) { + if( $start_open !== false) + $start_open = strpos($s, '[' . $name, $start_open + 1); // allow [name= type tags + } + + if( $start_open === false) + return false; + + $start_equal = strpos($s, '=', $start_open); + $start_close = strpos($s, ']', $start_open); + + if( $start_close === false) + return false; + + $start_close++; + + $end_open = strpos($s, '[/' . $name . ']', $start_close); + + if( $end_open === false) + return false; + + $res = array( 'start' => array('open' => $start_open, 'close' => $start_close), + 'end' => array('open' => $end_open, 'close' => $end_open + strlen('[/' . $name . ']')) ); + if( $start_equal !== false) + $res['start']['equal'] = $start_equal + 1; + + return $res; +} + +function bb_tag_preg_replace($pattern, $replace, $name, $s) { + + $string = $s; + + $occurance = 1; + $pos = get_bb_tag_pos($string, $name, $occurance); + while($pos !== false && $occurance < 1000) { + + $start = substr($string, 0, $pos['start']['open']); + $subject = substr($string, $pos['start']['open'], $pos['end']['close'] - $pos['start']['open']); + $end = substr($string, $pos['end']['close']); + if($end === false) + $end = ''; + + $subject = preg_replace($pattern, $replace, $subject); + $string = $start . $subject . $end; + + $occurance++; + $pos = get_bb_tag_pos($string, $name, $occurance); + } + + return $string; +} + // we don't want to support a bbcode specific markdown interpreter // and the markdown library we have is pretty good, but provides HTML output. // So we'll use that to convert to HTML, then convert the HTML back to bbcode, @@ -51,10 +111,10 @@ function diaspora2bb($s) { $s = preg_replace("/([^\]\=]|^)(https?\:\/\/)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3]$2$3[/url]',$s); //$s = preg_replace("/([^\]\=]|^)(https?\:\/\/)(vimeo|youtu|www\.youtube|soundcloud)([a-zA-Z0-9\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,]+)/ism", '$1[url=$2$3$4]$2$3$4[/url]',$s); - $s = preg_replace("/\[url\=?(.*?)\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/url\]/ism",'[youtube]$2[/youtube]',$s); - $s = preg_replace("/\[url\=https?:\/\/www.youtube.com\/watch\?v\=(.*?)\].*?\[\/url\]/ism",'[youtube]$1[/youtube]',$s); - $s = preg_replace("/\[url\=?(.*?)\]https?:\/\/vimeo.com\/([0-9]+)(.*?)\[\/url\]/ism",'[vimeo]$2[/vimeo]',$s); - $s = preg_replace("/\[url\=https?:\/\/vimeo.com\/([0-9]+)\](.*?)\[\/url\]/ism",'[vimeo]$1[/vimeo]',$s); + $s = bb_tag_preg_replace("/\[url\=?(.*?)\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/url\]/ism",'[youtube]$2[/youtube]','url',$s); + $s = bb_tag_preg_replace("/\[url\=https?:\/\/www.youtube.com\/watch\?v\=(.*?)\].*?\[\/url\]/ism",'[youtube]$1[/youtube]','url',$s); + $s = bb_tag_preg_replace("/\[url\=?(.*?)\]https?:\/ \/vimeo.com\/([0-9]+)(.*?)\[\/url\]/ism",'[vimeo]$2[/vimeo]','url',$s); + $s = bb_tag_preg_replace("/\[url\=https?:\/\/vimeo.com\/([0-9]+)\](.*?)\[\/url\]/ism",'[vimeo]$1[/vimeo]','url',$s); // remove duplicate adjacent code tags $s = preg_replace("/(\[code\])+(.*?)(\[\/code\])+/ism","[code]$2[/code]", $s); diff --git a/mod/babel.php b/mod/babel.php index 1c881a5bd..ca2c068f8 100644 --- a/mod/babel.php +++ b/mod/babel.php @@ -19,6 +19,12 @@ function babel_content(&$a) { $o .= '<br /><br />'; + $o .= '<form action="babel" method="post">'; + $o .= t('Source (Diaspora) text to convert to BBcode:') . EOL . '<textarea name="d2bbtext" >' . htmlspecialchars($_REQUEST['d2bbtext']) .'</textarea>' . EOL; + $o .= '<input type="submit" name="submit" value="Submit" /></form>'; + + $o .= '<br /><br />'; + if(x($_REQUEST,'text')) { $text = trim($_REQUEST['text']); @@ -52,5 +58,18 @@ function babel_content(&$a) { } + + if(x($_REQUEST,'d2bbtext')) { + + $d2bbtext = trim($_REQUEST['d2bbtext']); + $o .= t("Source input (Diaspora format): ") . EOL. EOL; + $o .= visible_lf($d2bbtext) . EOL. EOL; + + + $bb = diaspora2bb($d2bbtext); + $o .= t("diaspora2bb: ") . EOL. EOL; + $o .= visible_lf($bb) . EOL. EOL; + } + return $o; } From f92338d79be7694ee39dc2e311eed8314e973776 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta <fermion@gmx.com> Date: Thu, 12 Jul 2012 18:53:51 -0600 Subject: [PATCH 026/658] make likes on comments work with Diaspora, some small bugs --- include/diaspora.php | 69 +++++++++++++++++++++++++++----------------- include/items.php | 2 +- mod/like.php | 5 ++-- 3 files changed, 47 insertions(+), 29 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index d07d756e6..af9a91f02 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1236,6 +1236,7 @@ function diaspora_comment($importer,$xml,$msg) { $datarray['uid'] = $importer['uid']; $datarray['contact-id'] = $contact['id']; + $datarray['type'] = 'remote-comment'; $datarray['wall'] = $parent_item['wall']; $datarray['gravity'] = GRAVITY_COMMENT; $datarray['guid'] = $guid; @@ -1673,8 +1674,8 @@ function diaspora_like($importer,$xml,$msg) { // likes on comments not supported here and likes on photos not supported by Diaspora - if($target_type !== 'Post') - return; +// if($target_type !== 'Post') +// return; $contact = diaspora_get_contact_by_handle($importer['uid'],$msg['author']); if(! $contact) { @@ -2253,22 +2254,30 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) { $myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); // $theiraddr = $contact['addr']; - // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always - // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent. - // The only item with `parent` and `id` as the parent id is the parent item. - $p = q("select guid from item where parent = %d and id = %d limit 1", - intval($item['parent']), - intval($item['parent']) - ); + if($item['thr-parent']) { + $p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1", + dbesc($item['thr-parent']) + ); + } + else { + // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always + // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent. + // The only item with `parent` and `id` as the parent id is the parent item. + $p = q("select guid, type, uri, `parent-uri` from item where parent = %d and id = %d limit 1", + intval($item['parent']), + intval($item['parent']) + ); + } if(count($p)) - $parent_guid = $p[0]['guid']; + $parent = $p[0]; else return; if($item['verb'] === ACTIVITY_LIKE) { $tpl = get_markup_template('diaspora_like.tpl'); $like = true; - $target_type = 'Post'; + $target_type = ( $parent['uri'] === $parent['parent-uri'] ? 'Post' : 'Comment'); +// $target_type = (strpos($parent['type'], 'comment') ? 'Comment' : 'Post'); // $positive = (($item['deleted']) ? 'false' : 'true'); $positive = 'true'; @@ -2285,15 +2294,15 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) { // sign it if($like) - $signed_text = $item['guid'] . ';' . $target_type . ';' . $parent_guid . ';' . $positive . ';' . $myaddr; + $signed_text = $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $positive . ';' . $myaddr; else - $signed_text = $item['guid'] . ';' . $parent_guid . ';' . $text . ';' . $myaddr; + $signed_text = $item['guid'] . ';' . $parent['guid'] . ';' . $text . ';' . $myaddr; $authorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')); $msg = replace_macros($tpl,array( '$guid' => xmlify($item['guid']), - '$parent_guid' => xmlify($parent_guid), + '$parent_guid' => xmlify($parent['guid']), '$target_type' =>xmlify($target_type), '$authorsig' => xmlify($authorsig), '$body' => xmlify($text), @@ -2321,15 +2330,22 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) { $text = html_entity_decode(bb2diaspora($body)); - // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always - // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent. - // The only item with `parent` and `id` as the parent id is the parent item. - $p = q("select guid from item where parent = %d and id = %d limit 1", - intval($item['parent']), - intval($item['parent']) - ); + if($item['thr-parent']) { + $p = q("select guid, type, uri, `parent-uri` from item where uri = '%s' limit 1", + dbesc($item['thr-parent']) + ); + } + else { + // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always + // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent. + // The only item with `parent` and `id` as the parent id is the parent item. + $p = q("select guid, type, uri, `parent-uri` from item where parent = %d and id = %d limit 1", + intval($item['parent']), + intval($item['parent']) + ); + } if(count($p)) - $parent_guid = $p[0]['guid']; + $parent = $p[0]; else return; @@ -2347,7 +2363,8 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) { elseif($item['verb'] === ACTIVITY_LIKE) { $like = true; - $target_type = 'Post'; + $target_type = ( $parent['uri'] === $parent['parent-uri'] ? 'Post' : 'Comment'); +// $target_type = (strpos($parent['type'], 'comment') ? 'Comment' : 'Post'); // $positive = (($item['deleted']) ? 'false' : 'true'); $positive = 'true'; @@ -2382,9 +2399,9 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) { if($relay_retract) $sender_signed_text = $item['guid'] . ';' . $target_type; elseif($like) - $sender_signed_text = $item['guid'] . ';' . $target_type . ';' . $parent_guid . ';' . $positive . ';' . $handle; + $sender_signed_text = $item['guid'] . ';' . $target_type . ';' . $parent['guid'] . ';' . $positive . ';' . $handle; else - $sender_signed_text = $item['guid'] . ';' . $parent_guid . ';' . $text . ';' . $handle; + $sender_signed_text = $item['guid'] . ';' . $parent['guid'] . ';' . $text . ';' . $handle; // Sign the relayable with the top-level owner's signature // @@ -2401,7 +2418,7 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) { $msg = replace_macros($tpl,array( '$guid' => xmlify($item['guid']), - '$parent_guid' => xmlify($parent_guid), + '$parent_guid' => xmlify($parent['guid']), '$target_type' =>xmlify($target_type), '$authorsig' => xmlify($authorsig), '$parentsig' => xmlify($parentauthorsig), diff --git a/include/items.php b/include/items.php index 388b27a19..6d58bd182 100755 --- a/include/items.php +++ b/include/items.php @@ -890,7 +890,7 @@ function item_store($arr,$force_parent = false) { if($r[0]['uri'] != $r[0]['parent-uri']) { $arr['thr-parent'] = $arr['parent-uri']; $arr['parent-uri'] = $r[0]['parent-uri']; - $z = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND `parent-uri` = '%s' AND `uid` = %d + $z = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `parent-uri` = '%s' AND `uid` = %d ORDER BY `id` ASC LIMIT 1", dbesc($r[0]['parent-uri']), dbesc($r[0]['parent-uri']), diff --git a/mod/like.php b/mod/like.php index 5519bffdb..8fe0cf735 100755 --- a/mod/like.php +++ b/mod/like.php @@ -106,11 +106,12 @@ function like_content(&$a) { $r = q("SELECT * FROM `item` WHERE `verb` = '%s' AND `deleted` = 0 - AND `contact-id` = %d AND ( `parent` = '%s' OR `parent-uri` = '%s') LIMIT 1", + AND `contact-id` = %d AND ( `parent` = '%s' OR `parent-uri` = '%s' OR `thr-parent` = '%s') LIMIT 1", dbesc($activity), intval($contact['id']), dbesc($item_id), - dbesc($item_id) + dbesc($item_id), + dbesc($item['uri']) ); if(count($r)) { $like_item = $r[0]; From d08a97bb9fa91abf58e74de38603595ca7d14f03 Mon Sep 17 00:00:00 2001 From: Simon L'nu <simon.lnu@gmail.com> Date: Fri, 13 Jul 2012 02:37:45 -0400 Subject: [PATCH 027/658] add some sparkle ;) Signed-off-by: Simon L'nu <simon.lnu@gmail.com> --- view/theme/dispy/dark/style.css | 1 + view/theme/dispy/dark/style.less | 3 +++ view/theme/dispy/icons/sparkle.cur | Bin 0 -> 23510 bytes view/theme/dispy/light/style.css | 1 + view/theme/dispy/light/style.less | 3 +++ 5 files changed, 8 insertions(+) create mode 100644 view/theme/dispy/icons/sparkle.cur diff --git a/view/theme/dispy/dark/style.css b/view/theme/dispy/dark/style.css index 8ab192368..95e2bb998 100644 --- a/view/theme/dispy/dark/style.css +++ b/view/theme/dispy/dark/style.css @@ -97,6 +97,7 @@ nav .nav-link{display:inline-block;width:22px;height:22px;overflow:hidden;margin #nav-network-link{background-position:0px -177px;}#nav-network-link:hover{background-position:-22px -177px;} #nav-search-link{background-position:0 -44px;}#nav-search-link:hover{background-position:-22px -44px;} #jot-title,#profile-link,#profile-title,#profile-attach-wrapper,#profile-audio,#profile-link,#profile-location,#profile-nolocation,#profile-title,#profile-upload-wrapper,#profile-video,#profile-jot-submit,#wall-image-upload,#wall-file-upload,#wall-image-upload-div,#wall-file-upload-div,.icon,.hover,.focus,.pointer{cursor:pointer;} +.sparkle{cursor:url("icons/sparkle.cur"),pointer;} div.jGrowl div.notice{background:#3320bc url("../../../images/icons/48/notice.png") no-repeat 5px center;color:white;padding-left:58px;margin-top:50px;} div.jGrowl div.info{background:#1353b1 url("../../../images/icons/48/info.png") no-repeat 5px center;color:white;padding-left:58px;margin-top:50px;} #nav-notifications-menu{margin:30px 0 0 -20px;width:275px;max-height:300px;overflow-y:auto;font-size:9pt;}#nav-notifications-menu img{float:left;margin-right:5px;} diff --git a/view/theme/dispy/dark/style.less b/view/theme/dispy/dark/style.less index 60b49865e..f701c1225 100644 --- a/view/theme/dispy/dark/style.less +++ b/view/theme/dispy/dark/style.less @@ -594,6 +594,9 @@ nav .nav-link { .pointer { cursor: pointer; } +.sparkle { + cursor: url("icons/sparkle.cur"), pointer; +} //* popup notifications */ div.jGrowl div { &.notice { diff --git a/view/theme/dispy/icons/sparkle.cur b/view/theme/dispy/icons/sparkle.cur new file mode 100644 index 0000000000000000000000000000000000000000..c45cd1648a277f18cfefcbf0d4a44592df016b5f GIT binary patch literal 23510 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 literal 0 HcmV?d00001 diff --git a/view/theme/dispy/light/style.css b/view/theme/dispy/light/style.css index de2717f0c..9a991b796 100644 --- a/view/theme/dispy/light/style.css +++ b/view/theme/dispy/light/style.css @@ -97,6 +97,7 @@ nav .nav-link{display:inline-block;width:22px;height:22px;overflow:hidden;margin #nav-network-link{background-position:0px -177px;}#nav-network-link:hover{background-position:-22px -177px;} #nav-search-link{background-position:0 -44px;}#nav-search-link:hover{background-position:-22px -44px;} #jot-title,#profile-link,#profile-title,#profile-attach-wrapper,#profile-audio,#profile-link,#profile-location,#profile-nolocation,#profile-title,#profile-upload-wrapper,#profile-video,#profile-jot-submit,#wall-image-upload,#wall-file-upload,#wall-image-upload-div,#wall-file-upload-div,.icon,.hover,.focus,.pointer{cursor:pointer;} +.sparkle{cursor:url("icons/sparkle.cur"),pointer;} div.jGrowl div.notice{background:#511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;color:white;padding-left:58px;margin-top:50px;} div.jGrowl div.info{background:#364e59 url("../../../images/icons/48/info.png") no-repeat 5px center;color:white;padding-left:58px;margin-top:50px;} #nav-notifications-menu{margin:30px 0 0 -20px;width:275px;max-height:300px;overflow-y:auto;font-size:9pt;}#nav-notifications-menu img{float:left;margin-right:5px;} diff --git a/view/theme/dispy/light/style.less b/view/theme/dispy/light/style.less index e18f9a01b..87b405470 100644 --- a/view/theme/dispy/light/style.less +++ b/view/theme/dispy/light/style.less @@ -595,6 +595,9 @@ nav .nav-link { .pointer { cursor: pointer; } +.sparkle { + cursor: url("icons/sparkle.cur"), pointer; +} //* popup notifications */ div.jGrowl div { &.notice { From 10ce535cacc8db484a8a491c7395d1ae71eaf337 Mon Sep 17 00:00:00 2001 From: Simon L'nu <simon.lnu@gmail.com> Date: Fri, 13 Jul 2012 04:35:16 -0400 Subject: [PATCH 028/658] add doctitle thingy, and update cursor Signed-off-by: Simon L'nu <simon.lnu@gmail.com> --- view/theme/dispy/bottom.tpl | 13 +++++++++++++ view/theme/dispy/icons/sparkle.cur | Bin 23510 -> 19942 bytes 2 files changed, 13 insertions(+) diff --git a/view/theme/dispy/bottom.tpl b/view/theme/dispy/bottom.tpl index 130bfb25a..0bcc3aca4 100644 --- a/view/theme/dispy/bottom.tpl +++ b/view/theme/dispy/bottom.tpl @@ -43,4 +43,17 @@ function insertFormatting(comment, BBcode, id) { function cmtBbOpen(id) { $(".comment-edit-bb-" + id).show(); } +function cmtBbClose(id) { + $(".comment-edit-bb-" + id).hide(); +} + +var doctitle = document.title; +function checkNotify() { + if(document.getElementById("notify-update").innerHTML != "") { + document.title = "("+document.getElementById("notify-update").innerHTML+") " + doctitle; + } else { + document.title = doctitle; + }; + setInterval(function () {checkNotify();}, 10 * 1000); +} </script> diff --git a/view/theme/dispy/icons/sparkle.cur b/view/theme/dispy/icons/sparkle.cur index c45cd1648a277f18cfefcbf0d4a44592df016b5f..253259d8d54f755a2ba244be61fe5b9b58e5efcd 100644 GIT binary patch delta 79 zcmcb%o$=XhMi&MKCI%J;0|N#IMj*XHm4U&Hfq_9m0mNr!SRuf`@D3;jm*-<(m}Z6~ O&%wZ8=en_FkuL!877Szn delta 2411 zcmai0J&YSw5dPMCx!seawS|K2I-G(uAY@$;xj@7s(B=4%B1M7*sA!NZgs>x|cmmPI z;*jIW0%Flb6e#7P6gkNfZ2GHHQEY`$ownQSmT%_0UE39NesA7<^ZS1H{{1a@@hlhv z4aDenfdE^0@;Yz`pwm$~#FIAg))lPu3Gm|Tnmz{Zys!GU`G2_$T=_utDu;O40H!xp z-!OeQ1irncdX+<TF9g6JpZxjW?+5c=t|m9Pm>UqsY^)uN@FY}nDB>7<4%q~0no?2P z4`rz%HvX0KkM}PJ*~8Cw>+aQYGL2sXt(-=ln#Pk!d<L9PDim-ykkMSCvi8`(G2}Wr zS{^%|0r3E+@aD;qxJy_NjeVfyQjX|y{y@D7MB^$!bEyu+NWBD+PRG$w$cu<2o&%8z zR-7xez$jN--8OMr61Oz0Dx=b7z;vUsQY2>yXKz$6_Hcm6i<##v(J&uhSH%%=rEy7O z%*-Tqeme1pRIP=rig$>VSTkuywD-6UF)=)z>39tvx>+n9Dee>K(1nQ?w+9qf_Cs5{ zoyCklkGo2oJ>tbe)*XC!;MdIr-kkfoQP7a9=V)^R&YY*rlP_pji)a3o!p&g2vac1+ zA##(QItQJK!>ekXd5sSzKHXG#OZUR!4_y|o)NOKseE1Wm(0fx_f{_@aXHcoK_vScq zaGk(c)2vRvT|XXYSIyCPM<-PVI`aJca!!_iFRM_d@aGe&K$@tCMVV4nkO@U)j=CVj zSGN>Ct-)55jpiR7w1S*Z!qdO5PXqtz@FCowb}b2?7z%u4jIrnN|6iTGaYnCo%GL$o zEXnGcj#ZVRRROi^_OHo_w`h@D&-Ecta8Gk@uljtXN`iX*=%0_HyyfgY!24;kCMM;2 zmqkaJcIK*Eov+Kop*?Opm7bi(7i)5)DfMnCC#iZdBQSP=>DLTYzZO8%$(pQc%1Y{Q z>WuG_pPPBB-pMYw$}F4qBaZB4EA#S;oHNuI1~>!N!yQu#pz7tZ0V=cAdJY&s$@z0o znz)kl`K^No`sLc?cZ?*CIV<*!`RV=}<DEeGwF9<(NR4B==lLasqKb=%QsA?A5AU2a zYuqz=wl^^SX}4qcKX#q}q36%@zU8~?vx?_wSZY*O^A)3VKZLRQWd_|d<$^}4GZlt^ zjmnfWx}B+<KxM(3c1}|C;Ovh*rx7U)`mu5e#V(Cpz-0zOn(%)Ka=8Qq8F>!~^G~Vx zC`9XR0$E4^xZ4lS;JNU-M2GvhmMcG0PCAAAvOPkmA~)9Y%=6Sx#(Vng`p-eN_#UiS zV}4_QZ`?%(H`w0Apnos;=kZS%JdDv<w9&cWW`qvgHG#a+@3WM?1d>S@p2#*bxrn~R tY+bW!ONzD#dR*_b?*sJih0>lRS$oD!e9W~^*@W47h04OW`PT>E{0EZfzAyj) From 15cae001d947d27a75147aecec089e44d7b8c31f Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Fri, 13 Jul 2012 04:22:42 -0700 Subject: [PATCH 029/658] move plink sparkles to the right html element in dispy --- view/theme/dispy/wall_item.tpl | 2 +- view/theme/dispy/wallwall_item.tpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl index 8d6f258e6..7b17d9b82 100644 --- a/view/theme/dispy/wall_item.tpl +++ b/view/theme/dispy/wall_item.tpl @@ -52,7 +52,7 @@ <li><a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item icon file-as" title="$item.filer"></a></li> {{ endif }} {{ if $item.plink }} - <li class="wall-item-links-wrapper$item.sparkle"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link"></a></li> + <li class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link$item.sparkle"></a></li> {{ endif }} {{ if $item.edpost }} <li><a class="editpost icon pencil" href="$item.edpost.0" title="$item.edpost.1"></a></li> diff --git a/view/theme/dispy/wallwall_item.tpl b/view/theme/dispy/wallwall_item.tpl index f5187b710..a308bb07a 100644 --- a/view/theme/dispy/wallwall_item.tpl +++ b/view/theme/dispy/wallwall_item.tpl @@ -59,7 +59,7 @@ class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick <li class="wall-item-filer-wrapper"><a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item icon file-as" title="$item.star.filer"></a></li> {{ endif }} {{ if $item.plink }} - <li class="wall-item-links-wrapper$item.sparkle"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link"></a></li> + <li class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link$item.sparkle"></a></li> {{ endif }} {{ if $item.edpost }} <li><a class="editpost icon pencil" href="$item.edpost.0" title="$item.edpost.1"></a></li> From 88711deceb1f3c1187c6aa649adcfdeed45a9016 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta <fermion@gmx.com> Date: Fri, 13 Jul 2012 09:09:01 -0600 Subject: [PATCH 030/658] allow live updates for unlikes and undislikes --- js/main.js | 6 +++--- mod/like.php | 2 +- mod/network.php | 3 ++- mod/profile.php | 2 ++ 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/js/main.js b/js/main.js index 885e042aa..a5ce89460 100644 --- a/js/main.js +++ b/js/main.js @@ -357,9 +357,9 @@ function dolike(ident,verb) { unpause(); $('#like-rotator-' + ident.toString()).show(); - $.get('like/' + ident.toString() + '?verb=' + verb ); - if(timer) clearTimeout(timer); - timer = setTimeout(NavUpdate,3000); + $.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate ); +// if(timer) clearTimeout(timer); +// timer = setTimeout(NavUpdate,3000); liking = 1; } diff --git a/mod/like.php b/mod/like.php index 8fe0cf735..aaa85928c 100755 --- a/mod/like.php +++ b/mod/like.php @@ -117,7 +117,7 @@ function like_content(&$a) { $like_item = $r[0]; // Already voted, undo it - $r = q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1", + $r = q("UPDATE `item` SET `deleted` = 1, `unseen` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1", dbesc(datetime_convert()), intval($like_item['id']) ); diff --git a/mod/network.php b/mod/network.php index 5f009dacd..3d8fa7c14 100644 --- a/mod/network.php +++ b/mod/network.php @@ -616,7 +616,8 @@ function network_content(&$a, $update = 0) { if($update) { $r = q("SELECT `parent` AS `item_id`, `contact`.`uid` AS `contact_uid` FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` - WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 + WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND + (`item`.`deleted` = 0 OR item.verb = '" . ACTIVITY_LIKE ."' OR item.verb = '" . ACTIVITY_DISLIKE . "') and `item`.`moderated` = 0 and `item`.`unseen` = 1 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 $sql_extra3 $sql_extra $sql_nets ", diff --git a/mod/profile.php b/mod/profile.php index 24e03d6ea..b142943c1 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -204,6 +204,8 @@ function profile_content(&$a, $update = 0) { $r = q("SELECT distinct(parent) AS `item_id`, `contact`.`uid` AS `contact-uid` FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` + WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND + (`item`.`deleted` = 0 OR item.verb = '" . ACTIVITY_LIKE ."' OR item.verb = '" . ACTIVITY_DISLIKE . "') WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 and `item`.`unseen` = 1 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 From bbb022f56461e6aa9944505a3584f30fee21fdc7 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Fri, 13 Jul 2012 13:52:23 -0700 Subject: [PATCH 031/658] rev update --- boot.php | 2 +- util/messages.po | 350 ++++++++++++++++++++++++----------------------- 2 files changed, 182 insertions(+), 170 deletions(-) diff --git a/boot.php b/boot.php index 78c952a61..05fa86897 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1402' ); +define ( 'FRIENDICA_VERSION', '3.0.1403' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index 06a9c4f00..d5cdeda96 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1402\n" +"Project-Id-Version: 3.0.1403\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-12 10:00-0700\n" +"POT-Creation-Date: 2012-07-13 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -52,7 +52,7 @@ msgstr "" #: ../../mod/message.php:175 ../../mod/allfriends.php:9 #: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53 #: ../../mod/follow.php:9 ../../mod/display.php:138 ../../mod/profiles.php:7 -#: ../../mod/profiles.php:400 ../../mod/delegate.php:6 +#: ../../mod/profiles.php:408 ../../mod/delegate.php:6 #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:510 #: ../../addon/facebook/facebook.php:516 ../../addon/dav/layout.fnk.php:353 @@ -133,7 +133,7 @@ msgstr "" #: ../../mod/settings.php:971 ../../mod/group.php:85 ../../mod/message.php:294 #: ../../mod/message.php:473 ../../mod/admin.php:422 ../../mod/admin.php:658 #: ../../mod/admin.php:794 ../../mod/admin.php:993 ../../mod/admin.php:1080 -#: ../../mod/profiles.php:569 ../../mod/invite.php:119 +#: ../../mod/profiles.php:577 ../../mod/invite.php:119 #: ../../addon/fromgplus/fromgplus.php:40 #: ../../addon/facebook/facebook.php:619 #: ../../addon/snautofollow/snautofollow.php:64 @@ -169,7 +169,7 @@ msgstr "" #: ../../view/theme/diabook/theme.php:757 #: ../../view/theme/diabook/config.php:190 #: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70 -#: ../../include/conversation.php:652 +#: ../../include/conversation.php:653 msgid "Submit" msgstr "" @@ -284,7 +284,7 @@ msgid "Description:" msgstr "" #: ../../mod/events.php:429 ../../mod/directory.php:132 -#: ../../include/event.php:40 ../../include/bb2diaspora.php:409 +#: ../../include/event.php:40 ../../include/bb2diaspora.php:469 #: ../../boot.php:1173 msgid "Location:" msgstr "" @@ -350,7 +350,7 @@ msgstr "" #: ../../mod/settings.php:958 ../../mod/settings.php:959 #: ../../mod/settings.php:960 ../../mod/settings.php:961 #: ../../mod/settings.php:962 ../../mod/register.php:234 -#: ../../mod/profiles.php:546 +#: ../../mod/profiles.php:554 msgid "Yes" msgstr "" @@ -362,7 +362,7 @@ msgstr "" #: ../../mod/settings.php:958 ../../mod/settings.php:959 #: ../../mod/settings.php:960 ../../mod/settings.php:961 #: ../../mod/settings.php:962 ../../mod/register.php:235 -#: ../../mod/profiles.php:547 +#: ../../mod/profiles.php:555 msgid "No" msgstr "" @@ -417,10 +417,10 @@ msgstr "" msgid "was tagged in a" msgstr "" -#: ../../mod/photos.php:591 ../../mod/like.php:144 ../../mod/tagger.php:70 +#: ../../mod/photos.php:591 ../../mod/like.php:145 ../../mod/tagger.php:70 #: ../../addon/communityhome/communityhome.php:163 #: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1321 -#: ../../include/diaspora.php:1792 ../../include/conversation.php:114 +#: ../../include/diaspora.php:1793 ../../include/conversation.php:114 #: ../../include/conversation.php:187 msgid "photo" msgstr "" @@ -520,7 +520,7 @@ msgid "Use as profile photo" msgstr "" #: ../../mod/photos.php:1192 ../../mod/content.php:601 -#: ../../include/conversation.php:562 +#: ../../include/conversation.php:563 msgid "Private Message" msgstr "" @@ -561,49 +561,49 @@ msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "" #: ../../mod/photos.php:1327 ../../mod/content.php:665 -#: ../../include/conversation.php:626 +#: ../../include/conversation.php:627 msgid "I like this (toggle)" msgstr "" #: ../../mod/photos.php:1328 ../../mod/content.php:666 -#: ../../include/conversation.php:627 +#: ../../include/conversation.php:628 msgid "I don't like this (toggle)" msgstr "" -#: ../../mod/photos.php:1329 ../../include/conversation.php:1065 +#: ../../mod/photos.php:1329 ../../include/conversation.php:1066 msgid "Share" msgstr "" #: ../../mod/photos.php:1330 ../../mod/editpost.php:104 #: ../../mod/content.php:482 ../../mod/content.php:842 #: ../../mod/wallmessage.php:145 ../../mod/message.php:293 -#: ../../mod/message.php:474 ../../include/conversation.php:443 -#: ../../include/conversation.php:803 ../../include/conversation.php:1084 +#: ../../mod/message.php:474 ../../include/conversation.php:444 +#: ../../include/conversation.php:804 ../../include/conversation.php:1085 msgid "Please wait" msgstr "" #: ../../mod/photos.php:1346 ../../mod/photos.php:1386 #: ../../mod/photos.php:1417 ../../mod/content.php:688 -#: ../../include/conversation.php:649 +#: ../../include/conversation.php:650 msgid "This is you" msgstr "" #: ../../mod/photos.php:1348 ../../mod/photos.php:1388 #: ../../mod/photos.php:1419 ../../mod/content.php:690 -#: ../../include/conversation.php:651 ../../boot.php:565 +#: ../../include/conversation.php:652 ../../boot.php:565 msgid "Comment" msgstr "" #: ../../mod/photos.php:1350 ../../mod/editpost.php:125 -#: ../../mod/content.php:700 ../../include/conversation.php:661 -#: ../../include/conversation.php:1102 +#: ../../mod/content.php:700 ../../include/conversation.php:662 +#: ../../include/conversation.php:1103 msgid "Preview" msgstr "" #: ../../mod/photos.php:1447 ../../mod/content.php:439 #: ../../mod/content.php:720 ../../mod/settings.php:618 #: ../../mod/settings.php:707 ../../mod/group.php:168 ../../mod/admin.php:665 -#: ../../include/conversation.php:400 ../../include/conversation.php:681 +#: ../../include/conversation.php:401 ../../include/conversation.php:682 msgid "Delete" msgstr "" @@ -668,28 +668,28 @@ msgstr "" msgid "Edit post" msgstr "" -#: ../../mod/editpost.php:80 ../../include/conversation.php:1051 +#: ../../mod/editpost.php:80 ../../include/conversation.php:1052 msgid "Post to Email" msgstr "" #: ../../mod/editpost.php:95 ../../mod/content.php:707 -#: ../../mod/settings.php:617 ../../include/conversation.php:668 +#: ../../mod/settings.php:617 ../../include/conversation.php:669 msgid "Edit" msgstr "" #: ../../mod/editpost.php:96 ../../mod/wallmessage.php:143 #: ../../mod/message.php:291 ../../mod/message.php:471 -#: ../../include/conversation.php:1066 +#: ../../include/conversation.php:1067 msgid "Upload photo" msgstr "" -#: ../../mod/editpost.php:97 ../../include/conversation.php:1068 +#: ../../mod/editpost.php:97 ../../include/conversation.php:1069 msgid "Attach file" msgstr "" #: ../../mod/editpost.php:98 ../../mod/wallmessage.php:144 #: ../../mod/message.php:292 ../../mod/message.php:472 -#: ../../include/conversation.php:1070 +#: ../../include/conversation.php:1071 msgid "Insert web link" msgstr "" @@ -705,35 +705,35 @@ msgstr "" msgid "Insert Vorbis [.ogg] audio" msgstr "" -#: ../../mod/editpost.php:102 ../../include/conversation.php:1076 +#: ../../mod/editpost.php:102 ../../include/conversation.php:1077 msgid "Set your location" msgstr "" -#: ../../mod/editpost.php:103 ../../include/conversation.php:1078 +#: ../../mod/editpost.php:103 ../../include/conversation.php:1079 msgid "Clear browser location" msgstr "" -#: ../../mod/editpost.php:105 ../../include/conversation.php:1085 +#: ../../mod/editpost.php:105 ../../include/conversation.php:1086 msgid "Permission settings" msgstr "" -#: ../../mod/editpost.php:113 ../../include/conversation.php:1094 +#: ../../mod/editpost.php:113 ../../include/conversation.php:1095 msgid "CC: email addresses" msgstr "" -#: ../../mod/editpost.php:114 ../../include/conversation.php:1095 +#: ../../mod/editpost.php:114 ../../include/conversation.php:1096 msgid "Public post" msgstr "" -#: ../../mod/editpost.php:117 ../../include/conversation.php:1081 +#: ../../mod/editpost.php:117 ../../include/conversation.php:1082 msgid "Set title" msgstr "" -#: ../../mod/editpost.php:119 ../../include/conversation.php:1083 +#: ../../mod/editpost.php:119 ../../include/conversation.php:1084 msgid "Categories (comma-separated list)" msgstr "" -#: ../../mod/editpost.php:120 ../../include/conversation.php:1097 +#: ../../mod/editpost.php:120 ../../include/conversation.php:1098 msgid "Example: bob@example.com, mary@example.com" msgstr "" @@ -1180,7 +1180,7 @@ msgid "" msgstr "" #: ../../mod/localtime.php:12 ../../include/event.php:11 -#: ../../include/bb2diaspora.php:387 +#: ../../include/bb2diaspora.php:447 msgid "l F d, Y \\@ g:i A" msgstr "" @@ -1255,28 +1255,28 @@ msgid "Group: " msgstr "" #: ../../mod/content.php:438 ../../mod/content.php:719 -#: ../../include/conversation.php:399 ../../include/conversation.php:680 +#: ../../include/conversation.php:400 ../../include/conversation.php:681 msgid "Select" msgstr "" #: ../../mod/content.php:455 ../../mod/content.php:812 -#: ../../mod/content.php:813 ../../include/conversation.php:416 -#: ../../include/conversation.php:773 ../../include/conversation.php:774 +#: ../../mod/content.php:813 ../../include/conversation.php:417 +#: ../../include/conversation.php:774 ../../include/conversation.php:775 #, php-format msgid "View %s's profile @ %s" msgstr "" #: ../../mod/content.php:465 ../../mod/content.php:824 -#: ../../include/conversation.php:426 ../../include/conversation.php:785 +#: ../../include/conversation.php:427 ../../include/conversation.php:786 #, php-format msgid "%s from %s" msgstr "" -#: ../../mod/content.php:480 ../../include/conversation.php:441 +#: ../../mod/content.php:480 ../../include/conversation.php:442 msgid "View in context" msgstr "" -#: ../../mod/content.php:586 ../../include/conversation.php:547 +#: ../../mod/content.php:586 ../../include/conversation.php:548 #, php-format msgid "%d comment" msgid_plural "%d comments" @@ -1285,92 +1285,92 @@ msgstr[1] "" #: ../../mod/content.php:587 ../../addon/page/page.php:76 #: ../../addon/page/page.php:110 ../../addon/showmore/showmore.php:87 -#: ../../include/contact_widgets.php:188 ../../include/conversation.php:548 +#: ../../include/contact_widgets.php:188 ../../include/conversation.php:549 #: ../../boot.php:566 msgid "show more" msgstr "" -#: ../../mod/content.php:665 ../../include/conversation.php:626 +#: ../../mod/content.php:665 ../../include/conversation.php:627 msgid "like" msgstr "" -#: ../../mod/content.php:666 ../../include/conversation.php:627 +#: ../../mod/content.php:666 ../../include/conversation.php:628 msgid "dislike" msgstr "" -#: ../../mod/content.php:668 ../../include/conversation.php:629 +#: ../../mod/content.php:668 ../../include/conversation.php:630 msgid "Share this" msgstr "" -#: ../../mod/content.php:668 ../../include/conversation.php:629 +#: ../../mod/content.php:668 ../../include/conversation.php:630 msgid "share" msgstr "" -#: ../../mod/content.php:692 ../../include/conversation.php:653 +#: ../../mod/content.php:692 ../../include/conversation.php:654 msgid "Bold" msgstr "" -#: ../../mod/content.php:693 ../../include/conversation.php:654 +#: ../../mod/content.php:693 ../../include/conversation.php:655 msgid "Italic" msgstr "" -#: ../../mod/content.php:694 ../../include/conversation.php:655 +#: ../../mod/content.php:694 ../../include/conversation.php:656 msgid "Underline" msgstr "" -#: ../../mod/content.php:695 ../../include/conversation.php:656 +#: ../../mod/content.php:695 ../../include/conversation.php:657 msgid "Quote" msgstr "" -#: ../../mod/content.php:696 ../../include/conversation.php:657 +#: ../../mod/content.php:696 ../../include/conversation.php:658 msgid "Code" msgstr "" -#: ../../mod/content.php:697 ../../include/conversation.php:658 +#: ../../mod/content.php:697 ../../include/conversation.php:659 msgid "Image" msgstr "" -#: ../../mod/content.php:698 ../../include/conversation.php:659 +#: ../../mod/content.php:698 ../../include/conversation.php:660 msgid "Link" msgstr "" -#: ../../mod/content.php:699 ../../include/conversation.php:660 +#: ../../mod/content.php:699 ../../include/conversation.php:661 msgid "Video" msgstr "" -#: ../../mod/content.php:732 ../../include/conversation.php:693 +#: ../../mod/content.php:732 ../../include/conversation.php:694 msgid "add star" msgstr "" -#: ../../mod/content.php:733 ../../include/conversation.php:694 +#: ../../mod/content.php:733 ../../include/conversation.php:695 msgid "remove star" msgstr "" -#: ../../mod/content.php:734 ../../include/conversation.php:695 +#: ../../mod/content.php:734 ../../include/conversation.php:696 msgid "toggle star status" msgstr "" -#: ../../mod/content.php:737 ../../include/conversation.php:698 +#: ../../mod/content.php:737 ../../include/conversation.php:699 msgid "starred" msgstr "" -#: ../../mod/content.php:738 ../../include/conversation.php:699 +#: ../../mod/content.php:738 ../../include/conversation.php:700 msgid "add tag" msgstr "" -#: ../../mod/content.php:742 ../../include/conversation.php:703 +#: ../../mod/content.php:742 ../../include/conversation.php:704 msgid "save to folder" msgstr "" -#: ../../mod/content.php:814 ../../include/conversation.php:775 +#: ../../mod/content.php:814 ../../include/conversation.php:776 msgid "to" msgstr "" -#: ../../mod/content.php:815 ../../include/conversation.php:776 +#: ../../mod/content.php:815 ../../include/conversation.php:777 msgid "Wall-to-Wall" msgstr "" -#: ../../mod/content.php:816 ../../include/conversation.php:777 +#: ../../mod/content.php:816 ../../include/conversation.php:778 msgid "via Wall-To-Wall:" msgstr "" @@ -2603,7 +2603,7 @@ msgid "No recipient." msgstr "" #: ../../mod/wallmessage.php:124 ../../mod/message.php:250 -#: ../../include/conversation.php:1019 +#: ../../include/conversation.php:1020 msgid "Please enter a link URL:" msgstr "" @@ -2925,26 +2925,26 @@ msgstr "" msgid "People Search" msgstr "" -#: ../../mod/like.php:144 ../../mod/like.php:297 ../../mod/tagger.php:70 +#: ../../mod/like.php:145 ../../mod/like.php:298 ../../mod/tagger.php:70 #: ../../addon/facebook/facebook.php:1586 #: ../../addon/communityhome/communityhome.php:158 #: ../../addon/communityhome/communityhome.php:167 #: ../../view/theme/diabook/theme.php:565 -#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1792 +#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1793 #: ../../include/conversation.php:109 ../../include/conversation.php:118 #: ../../include/conversation.php:182 ../../include/conversation.php:191 msgid "status" msgstr "" -#: ../../mod/like.php:161 ../../addon/facebook/facebook.php:1590 +#: ../../mod/like.php:162 ../../addon/facebook/facebook.php:1590 #: ../../addon/communityhome/communityhome.php:172 -#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1808 +#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1809 #: ../../include/conversation.php:126 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "" -#: ../../mod/like.php:163 ../../include/conversation.php:129 +#: ../../mod/like.php:164 ../../include/conversation.php:129 #, php-format msgid "%1$s doesn't like %2$s's %3$s" msgstr "" @@ -3858,7 +3858,7 @@ msgstr "" msgid "No contacts in common." msgstr "" -#: ../../mod/share.php:28 ../../include/bb2diaspora.php:226 +#: ../../mod/share.php:28 ../../include/bb2diaspora.php:286 msgid "link" msgstr "" @@ -3879,8 +3879,8 @@ msgstr "" msgid "Search" msgstr "" -#: ../../mod/profiles.php:21 ../../mod/profiles.php:410 -#: ../../mod/profiles.php:524 ../../mod/dfrn_confirm.php:62 +#: ../../mod/profiles.php:21 ../../mod/profiles.php:418 +#: ../../mod/profiles.php:532 ../../mod/dfrn_confirm.php:62 msgid "Profile not found." msgstr "" @@ -3967,226 +3967,226 @@ msgstr "" msgid "%1$s has an updated %2$s, changing %3$s." msgstr "" -#: ../../mod/profiles.php:429 +#: ../../mod/profiles.php:437 msgid "Profile deleted." msgstr "" -#: ../../mod/profiles.php:447 ../../mod/profiles.php:481 +#: ../../mod/profiles.php:455 ../../mod/profiles.php:489 msgid "Profile-" msgstr "" -#: ../../mod/profiles.php:466 ../../mod/profiles.php:508 +#: ../../mod/profiles.php:474 ../../mod/profiles.php:516 msgid "New profile created." msgstr "" -#: ../../mod/profiles.php:487 +#: ../../mod/profiles.php:495 msgid "Profile unavailable to clone." msgstr "" -#: ../../mod/profiles.php:545 +#: ../../mod/profiles.php:553 msgid "Hide your contact/friend list from viewers of this profile?" msgstr "" -#: ../../mod/profiles.php:568 +#: ../../mod/profiles.php:576 msgid "Edit Profile Details" msgstr "" -#: ../../mod/profiles.php:570 +#: ../../mod/profiles.php:578 msgid "View this profile" msgstr "" -#: ../../mod/profiles.php:571 +#: ../../mod/profiles.php:579 msgid "Create a new profile using these settings" msgstr "" -#: ../../mod/profiles.php:572 +#: ../../mod/profiles.php:580 msgid "Clone this profile" msgstr "" -#: ../../mod/profiles.php:573 +#: ../../mod/profiles.php:581 msgid "Delete this profile" msgstr "" -#: ../../mod/profiles.php:574 +#: ../../mod/profiles.php:582 msgid "Profile Name:" msgstr "" -#: ../../mod/profiles.php:575 +#: ../../mod/profiles.php:583 msgid "Your Full Name:" msgstr "" -#: ../../mod/profiles.php:576 +#: ../../mod/profiles.php:584 msgid "Title/Description:" msgstr "" -#: ../../mod/profiles.php:577 +#: ../../mod/profiles.php:585 msgid "Your Gender:" msgstr "" -#: ../../mod/profiles.php:578 +#: ../../mod/profiles.php:586 #, php-format msgid "Birthday (%s):" msgstr "" -#: ../../mod/profiles.php:579 +#: ../../mod/profiles.php:587 msgid "Street Address:" msgstr "" -#: ../../mod/profiles.php:580 +#: ../../mod/profiles.php:588 msgid "Locality/City:" msgstr "" -#: ../../mod/profiles.php:581 +#: ../../mod/profiles.php:589 msgid "Postal/Zip Code:" msgstr "" -#: ../../mod/profiles.php:582 +#: ../../mod/profiles.php:590 msgid "Country:" msgstr "" -#: ../../mod/profiles.php:583 +#: ../../mod/profiles.php:591 msgid "Region/State:" msgstr "" -#: ../../mod/profiles.php:584 +#: ../../mod/profiles.php:592 msgid "<span class=\"heart\">♥</span> Marital Status:" msgstr "" -#: ../../mod/profiles.php:585 +#: ../../mod/profiles.php:593 msgid "Who: (if applicable)" msgstr "" -#: ../../mod/profiles.php:586 +#: ../../mod/profiles.php:594 msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgstr "" -#: ../../mod/profiles.php:587 +#: ../../mod/profiles.php:595 msgid "Since [date]:" msgstr "" -#: ../../mod/profiles.php:588 ../../include/profile_advanced.php:46 +#: ../../mod/profiles.php:596 ../../include/profile_advanced.php:46 msgid "Sexual Preference:" msgstr "" -#: ../../mod/profiles.php:589 +#: ../../mod/profiles.php:597 msgid "Homepage URL:" msgstr "" -#: ../../mod/profiles.php:590 ../../include/profile_advanced.php:50 +#: ../../mod/profiles.php:598 ../../include/profile_advanced.php:50 msgid "Hometown:" msgstr "" -#: ../../mod/profiles.php:591 ../../include/profile_advanced.php:54 +#: ../../mod/profiles.php:599 ../../include/profile_advanced.php:54 msgid "Political Views:" msgstr "" -#: ../../mod/profiles.php:592 +#: ../../mod/profiles.php:600 msgid "Religious Views:" msgstr "" -#: ../../mod/profiles.php:593 +#: ../../mod/profiles.php:601 msgid "Public Keywords:" msgstr "" -#: ../../mod/profiles.php:594 +#: ../../mod/profiles.php:602 msgid "Private Keywords:" msgstr "" -#: ../../mod/profiles.php:595 ../../include/profile_advanced.php:62 +#: ../../mod/profiles.php:603 ../../include/profile_advanced.php:62 msgid "Likes:" msgstr "" -#: ../../mod/profiles.php:596 ../../include/profile_advanced.php:64 +#: ../../mod/profiles.php:604 ../../include/profile_advanced.php:64 msgid "Dislikes:" msgstr "" -#: ../../mod/profiles.php:597 +#: ../../mod/profiles.php:605 msgid "Example: fishing photography software" msgstr "" -#: ../../mod/profiles.php:598 +#: ../../mod/profiles.php:606 msgid "(Used for suggesting potential friends, can be seen by others)" msgstr "" -#: ../../mod/profiles.php:599 +#: ../../mod/profiles.php:607 msgid "(Used for searching profiles, never shown to others)" msgstr "" -#: ../../mod/profiles.php:600 +#: ../../mod/profiles.php:608 msgid "Tell us about yourself..." msgstr "" -#: ../../mod/profiles.php:601 +#: ../../mod/profiles.php:609 msgid "Hobbies/Interests" msgstr "" -#: ../../mod/profiles.php:602 +#: ../../mod/profiles.php:610 msgid "Contact information and Social Networks" msgstr "" -#: ../../mod/profiles.php:603 +#: ../../mod/profiles.php:611 msgid "Musical interests" msgstr "" -#: ../../mod/profiles.php:604 +#: ../../mod/profiles.php:612 msgid "Books, literature" msgstr "" -#: ../../mod/profiles.php:605 +#: ../../mod/profiles.php:613 msgid "Television" msgstr "" -#: ../../mod/profiles.php:606 +#: ../../mod/profiles.php:614 msgid "Film/dance/culture/entertainment" msgstr "" -#: ../../mod/profiles.php:607 +#: ../../mod/profiles.php:615 msgid "Love/romance" msgstr "" -#: ../../mod/profiles.php:608 +#: ../../mod/profiles.php:616 msgid "Work/employment" msgstr "" -#: ../../mod/profiles.php:609 +#: ../../mod/profiles.php:617 msgid "School/education" msgstr "" -#: ../../mod/profiles.php:614 +#: ../../mod/profiles.php:622 msgid "" "This is your <strong>public</strong> profile.<br />It <strong>may</strong> " "be visible to anybody using the internet." msgstr "" -#: ../../mod/profiles.php:624 ../../mod/directory.php:109 +#: ../../mod/profiles.php:632 ../../mod/directory.php:109 msgid "Age: " msgstr "" -#: ../../mod/profiles.php:663 +#: ../../mod/profiles.php:671 msgid "Edit/Manage Profiles" msgstr "" -#: ../../mod/profiles.php:664 ../../boot.php:1139 +#: ../../mod/profiles.php:672 ../../boot.php:1139 msgid "Change profile photo" msgstr "" -#: ../../mod/profiles.php:665 ../../boot.php:1140 +#: ../../mod/profiles.php:673 ../../boot.php:1140 msgid "Create New Profile" msgstr "" -#: ../../mod/profiles.php:676 ../../boot.php:1150 +#: ../../mod/profiles.php:684 ../../boot.php:1150 msgid "Profile Image" msgstr "" -#: ../../mod/profiles.php:678 ../../boot.php:1153 +#: ../../mod/profiles.php:686 ../../boot.php:1153 msgid "visible to everybody" msgstr "" -#: ../../mod/profiles.php:679 ../../boot.php:1154 +#: ../../mod/profiles.php:687 ../../boot.php:1154 msgid "Edit visibility" msgstr "" -#: ../../mod/filer.php:29 ../../include/conversation.php:1023 +#: ../../mod/filer.php:29 ../../include/conversation.php:1024 msgid "Save to Folder:" msgstr "" @@ -4238,34 +4238,46 @@ msgstr "" msgid "Source (bbcode) text:" msgstr "" -#: ../../mod/babel.php:25 +#: ../../mod/babel.php:23 +msgid "Source (Diaspora) text to convert to BBcode:" +msgstr "" + +#: ../../mod/babel.php:31 msgid "Source input: " msgstr "" -#: ../../mod/babel.php:29 +#: ../../mod/babel.php:35 msgid "bb2html: " msgstr "" -#: ../../mod/babel.php:33 +#: ../../mod/babel.php:39 msgid "bb2html2bb: " msgstr "" -#: ../../mod/babel.php:37 +#: ../../mod/babel.php:43 msgid "bb2md: " msgstr "" -#: ../../mod/babel.php:41 +#: ../../mod/babel.php:47 msgid "bb2md2html: " msgstr "" -#: ../../mod/babel.php:45 +#: ../../mod/babel.php:51 msgid "bb2dia2bb: " msgstr "" -#: ../../mod/babel.php:49 +#: ../../mod/babel.php:55 msgid "bb2md2html2bb: " msgstr "" +#: ../../mod/babel.php:65 +msgid "Source input (Diaspora format): " +msgstr "" + +#: ../../mod/babel.php:70 +msgid "diaspora2bb: " +msgstr "" + #: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:626 #: ../../include/contact_widgets.php:34 msgid "Friend Suggestions" @@ -6686,11 +6698,11 @@ msgstr "" msgid "Ask me" msgstr "" -#: ../../include/event.php:20 ../../include/bb2diaspora.php:393 +#: ../../include/event.php:20 ../../include/bb2diaspora.php:453 msgid "Starts:" msgstr "" -#: ../../include/event.php:30 ../../include/bb2diaspora.php:401 +#: ../../include/event.php:30 ../../include/bb2diaspora.php:461 msgid "Finishes:" msgstr "" @@ -6862,7 +6874,7 @@ msgstr "" msgid "Sharing notification from Diaspora network" msgstr "" -#: ../../include/diaspora.php:2173 +#: ../../include/diaspora.php:2174 msgid "Attachments:" msgstr "" @@ -7438,8 +7450,8 @@ msgstr "" msgid "Archives" msgstr "" -#: ../../include/bb2diaspora.php:226 ../../include/bb2diaspora.php:236 -#: ../../include/bb2diaspora.php:237 +#: ../../include/bb2diaspora.php:286 ../../include/bb2diaspora.php:296 +#: ../../include/bb2diaspora.php:297 msgid "image/photo" msgstr "" @@ -7533,30 +7545,30 @@ msgstr "" msgid "stopped following" msgstr "" -#: ../../include/Contact.php:218 ../../include/conversation.php:914 +#: ../../include/Contact.php:218 ../../include/conversation.php:915 msgid "View Status" msgstr "" -#: ../../include/Contact.php:219 ../../include/conversation.php:915 +#: ../../include/Contact.php:219 ../../include/conversation.php:916 msgid "View Profile" msgstr "" -#: ../../include/Contact.php:220 ../../include/conversation.php:916 +#: ../../include/Contact.php:220 ../../include/conversation.php:917 msgid "View Photos" msgstr "" #: ../../include/Contact.php:221 ../../include/Contact.php:234 -#: ../../include/conversation.php:917 +#: ../../include/conversation.php:918 msgid "Network Posts" msgstr "" #: ../../include/Contact.php:222 ../../include/Contact.php:234 -#: ../../include/conversation.php:918 +#: ../../include/conversation.php:919 msgid "Edit Contact" msgstr "" #: ../../include/Contact.php:223 ../../include/Contact.php:234 -#: ../../include/conversation.php:919 +#: ../../include/conversation.php:920 msgid "Send PM" msgstr "" @@ -7569,106 +7581,106 @@ msgstr "" msgid "%1$s marked %2$s's %3$s as favorite" msgstr "" -#: ../../include/conversation.php:822 +#: ../../include/conversation.php:823 msgid "Delete Selected Items" msgstr "" -#: ../../include/conversation.php:977 +#: ../../include/conversation.php:978 #, php-format msgid "%s likes this." msgstr "" -#: ../../include/conversation.php:977 +#: ../../include/conversation.php:978 #, php-format msgid "%s doesn't like this." msgstr "" -#: ../../include/conversation.php:981 +#: ../../include/conversation.php:982 #, php-format msgid "<span %1$s>%2$d people</span> like this." msgstr "" -#: ../../include/conversation.php:983 +#: ../../include/conversation.php:984 #, php-format msgid "<span %1$s>%2$d people</span> don't like this." msgstr "" -#: ../../include/conversation.php:989 +#: ../../include/conversation.php:990 msgid "and" msgstr "" -#: ../../include/conversation.php:992 +#: ../../include/conversation.php:993 #, php-format msgid ", and %d other people" msgstr "" -#: ../../include/conversation.php:993 +#: ../../include/conversation.php:994 #, php-format msgid "%s like this." msgstr "" -#: ../../include/conversation.php:993 +#: ../../include/conversation.php:994 #, php-format msgid "%s don't like this." msgstr "" -#: ../../include/conversation.php:1018 +#: ../../include/conversation.php:1019 msgid "Visible to <strong>everybody</strong>" msgstr "" -#: ../../include/conversation.php:1020 +#: ../../include/conversation.php:1021 msgid "Please enter a video link/URL:" msgstr "" -#: ../../include/conversation.php:1021 +#: ../../include/conversation.php:1022 msgid "Please enter an audio link/URL:" msgstr "" -#: ../../include/conversation.php:1022 +#: ../../include/conversation.php:1023 msgid "Tag term:" msgstr "" -#: ../../include/conversation.php:1024 +#: ../../include/conversation.php:1025 msgid "Where are you right now?" msgstr "" -#: ../../include/conversation.php:1067 +#: ../../include/conversation.php:1068 msgid "upload photo" msgstr "" -#: ../../include/conversation.php:1069 +#: ../../include/conversation.php:1070 msgid "attach file" msgstr "" -#: ../../include/conversation.php:1071 +#: ../../include/conversation.php:1072 msgid "web link" msgstr "" -#: ../../include/conversation.php:1072 +#: ../../include/conversation.php:1073 msgid "Insert video link" msgstr "" -#: ../../include/conversation.php:1073 +#: ../../include/conversation.php:1074 msgid "video link" msgstr "" -#: ../../include/conversation.php:1074 +#: ../../include/conversation.php:1075 msgid "Insert audio link" msgstr "" -#: ../../include/conversation.php:1075 +#: ../../include/conversation.php:1076 msgid "audio link" msgstr "" -#: ../../include/conversation.php:1077 +#: ../../include/conversation.php:1078 msgid "set location" msgstr "" -#: ../../include/conversation.php:1079 +#: ../../include/conversation.php:1080 msgid "clear location" msgstr "" -#: ../../include/conversation.php:1086 +#: ../../include/conversation.php:1087 msgid "permissions" msgstr "" From 5f400c4a9798d04c267cc05f2250a6c810802553 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Fri, 13 Jul 2012 23:23:31 +0200 Subject: [PATCH 032/658] API: Now returns a real 404 when a function isn't implemented parse_url: Image handling improved --- include/api.php | 1 + include/items.php | 7 ++++--- mod/parse_url.php | 27 --------------------------- 3 files changed, 5 insertions(+), 30 deletions(-) diff --git a/include/api.php b/include/api.php index e0b788424..7d230629b 100644 --- a/include/api.php +++ b/include/api.php @@ -156,6 +156,7 @@ //echo "<pre>"; var_dump($r); die(); } } + header("HTTP/1.1 404 Not Found"); logger('API call not implemented: '.$a->query_string." - ".print_r($_REQUEST,true)); $r = '<status><error>not implemented</error></status>'; switch($type){ diff --git a/include/items.php b/include/items.php index 6ab681c87..d888f314d 100755 --- a/include/items.php +++ b/include/items.php @@ -698,9 +698,10 @@ function get_atom_elements($feed,$item) { call_hooks('parse_atom', $arr); //if (($res["title"] != "") or (strpos($res["body"], "RT @") > 0)) { - // $debugfile = tempnam("/home/ike/log", "item-res2-"); - // file_put_contents($debugfile, serialize($res)); - //} + if (strpos($res["body"], "RT @") !== false) { + $debugfile = tempnam("/home/ike/log", "item-res2-"); + file_put_contents($debugfile, serialize($arr)); + } return $res; } diff --git a/mod/parse_url.php b/mod/parse_url.php index 4d894969a..32f28b7b7 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -294,33 +294,6 @@ function parse_url_content(&$a) { else $image .= '<img height="'.$imagedata["height"].'" width="'.$imagedata["width"].'" src="'.$imagedata["src"].'" alt="photo" />'; -/* if ($image != "") { - $i = fetch_url($image); - if($i) { - require_once('include/Photo.php'); - // guess mimetype from headers or filename - $type = guess_image_type($image,true); - - $ph = new Photo($i, $type); - if($ph->is_valid()) { - if($ph->getWidth() > 300 || $ph->getHeight() > 300) { - $ph->scaleImage(300); - $new_width = $ph->getWidth(); - $new_height = $ph->getHeight(); - if($textmode) - $image = $br . $br . '[img=' . $new_width . 'x' . $new_height . ']' . $image . '[/img]'; - else - $image = '<br /><br /><img height="' . $new_height . '" width="' . $new_width . '" src="' .$image . '" alt="photo" />'; - } else { - if($textmode) - $image = $br.$br.'[img]'.$image.'[/img]'; - else - $image = '<br /><br /><img src="'.$image.'" alt="photo" />'; - } - } - } - }*/ - if(strlen($text)) { if($textmode) $text = $br.'[quote]'.trim($text).'[/quote]'.$br ; From 8b6942c5727a80d85ab4a9fca2d74acb2b7c9739 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Fri, 13 Jul 2012 15:38:02 -0700 Subject: [PATCH 033/658] don't use language detection if < php 5.3 --- include/items.php | 12 +++++++----- mod/item.php | 14 ++++++++++---- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/include/items.php b/include/items.php index 6d58bd182..06da4bd61 100755 --- a/include/items.php +++ b/include/items.php @@ -816,12 +816,14 @@ function item_store($arr,$force_parent = false) { if((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false)) $arr['body'] = strip_tags($arr['body']); - require_once('Text/LanguageDetect.php'); - $naked_body = preg_replace('/\[(.+?)\]/','',$arr['body']); - $l = new Text_LanguageDetect; - $lng = $l->detectConfidence($naked_body); - $arr['postopts'] = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : ''); + if (version_compare(PHP_VERSION, '5.3.0', '>=')) { + require_once('Text/LanguageDetect.php'); + $naked_body = preg_replace('/\[(.+?)\]/','',$arr['body']); + $l = new Text_LanguageDetect; + $lng = $l->detectConfidence($naked_body); + $arr['postopts'] = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : ''); + } $arr['wall'] = ((x($arr,'wall')) ? intval($arr['wall']) : 0); $arr['uri'] = ((x($arr,'uri')) ? notags(trim($arr['uri'])) : random_string()); diff --git a/mod/item.php b/mod/item.php index b4e894337..fddc3fd12 100644 --- a/mod/item.php +++ b/mod/item.php @@ -219,12 +219,18 @@ function item_post(&$a) { $naked_body = preg_replace('/\[(.+?)\]/','',$body); - $l = new Text_LanguageDetect; - $lng = $l->detectConfidence($naked_body); - $postopts = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : ''); + if (version_compare(PHP_VERSION, '5.3.0', '>=')) { + $l = new Text_LanguageDetect; + $lng = $l->detectConfidence($naked_body); + + $postopts = (($lng['language']) ? 'lang=' . $lng['language'] . ';' . $lng['confidence'] : ''); + + logger('mod_item: detect language' . print_r($lng,true) . $naked_body, LOGGER_DATA); + } + else + $postopts = ''; - logger('mod_item: detect language' . print_r($lng,true) . $naked_body, LOGGER_DATA); $private = ((strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) ? 1 : 0); From 476b86e1a21754e4236319fcdcc758edf9f9cd76 Mon Sep 17 00:00:00 2001 From: Michael Johnston <michaelgeorgejohnston@gmail.com> Date: Sat, 14 Jul 2012 00:46:41 -0400 Subject: [PATCH 034/658] fix pagination on community page --- mod/community.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mod/community.php b/mod/community.php index fb28f7805..becb5642b 100644 --- a/mod/community.php +++ b/mod/community.php @@ -45,13 +45,13 @@ function community_content(&$a, $update = 0) { // OR your own posts if you are a logged in member - $r = q("SELECT distinct(`item`.`uri`) AS `total` + $r = q("SELECT COUNT(distinct(`item`.`uri`)) AS `total` FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid` WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `user`.`hidewall` = 0 - AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 group by `item`.`uri` " + AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0" ); if(count($r)) From 72f430ae58b830e499114241d340f39a228b867c Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Sat, 14 Jul 2012 13:59:42 +0200 Subject: [PATCH 035/658] parse_url: Problem when resizing images --- include/items.php | 8 ++++---- mod/parse_url.php | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/items.php b/include/items.php index b81208f36..724e0ac0f 100755 --- a/include/items.php +++ b/include/items.php @@ -791,10 +791,10 @@ function get_atom_elements($feed,$item) { call_hooks('parse_atom', $arr); //if (($res["title"] != "") or (strpos($res["body"], "RT @") > 0)) { - if (strpos($res["body"], "RT @") !== false) { - $debugfile = tempnam("/home/ike/log", "item-res2-"); - file_put_contents($debugfile, serialize($arr)); - } + //if (strpos($res["body"], "RT @") !== false) { + // $debugfile = tempnam("/home/ike/log", "item-res2-"); + // file_put_contents($debugfile, serialize($arr)); + //} return $res; } diff --git a/mod/parse_url.php b/mod/parse_url.php index 32f28b7b7..3d4018745 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -147,11 +147,11 @@ function parseurl_getsiteinfo($url) { if (($photodata[0] > 150) and ($photodata[1] > 150)) { if ($photodata[0] > 300) { - $photodata[1] = $photodata[1] * (300 / $photodata[0]); + $photodata[1] = round($photodata[1] * (300 / $photodata[0])); $photodata[0] = 300; } if ($photodata[1] > 300) { - $photodata[0] = $photodata[0] * (300 / $photodata[1]); + $photodata[0] = round($photodata[0] * (300 / $photodata[1])); $photodata[1] = 300; } $siteinfo["images"][] = array("src"=>$src, From 8d7d46ae7a4a2ff049491f1c4b053fc55e8f0e13 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Sat, 14 Jul 2012 19:54:27 +0200 Subject: [PATCH 036/658] Bugfix: multiple linefeeds were generated when items where written in the editor. The existing fix didn't really work --- include/bbcode.php | 3 +++ include/items.php | 25 +++++++++++++++++++++++++ include/text.php | 1 + 3 files changed, 29 insertions(+) diff --git a/include/bbcode.php b/include/bbcode.php index 4aac33f11..a90be5de7 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -369,6 +369,9 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { // oembed tag $Text = oembed_bbcode2html($Text); + // Avoid triple linefeeds through oembed + $Text = str_replace("<br style='clear:left'></span><br /><br />", "<br style='clear:left'></span><br />", $Text); + // If we found an event earlier, strip out all the event code and replace with a reformatted version. // Replace the event-start section with the entire formatted event. The other bbcode is stripped. // Summary (e.g. title) is required, earlier revisions only required description (in addition to diff --git a/include/items.php b/include/items.php index 724e0ac0f..fff9e5fcf 100755 --- a/include/items.php +++ b/include/items.php @@ -786,6 +786,31 @@ function get_atom_elements($feed,$item) { $res['target'] .= '</target>' . "\n"; } + // This is some experimental stuff. By now retweets are shown with "RT:" + // But: There is data so that the message could be shown similar to native retweets + // There is some better way to parse this array - but it didn't worked for me. + $child = $item->feed->data["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["feed"][0]["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["entry"][0]["child"]["http://activitystrea.ms/spec/1.0/"][object][0]["child"]; + if (is_array($child)) { + $message = $child["http://activitystrea.ms/spec/1.0/"]["object"][0]["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["content"][0]["data"]; + $author = $child[SIMPLEPIE_NAMESPACE_ATOM_10]["author"][0]["child"][SIMPLEPIE_NAMESPACE_ATOM_10]; + $uri = $author["uri"][0]["data"]; + $name = $author["name"][0]["data"]; + $avatar = @array_shift($author["link"][2]["attribs"]); + $avatar = $avatar["href"]; + + if (($name != "") and ($uri != "") and ($avatar != "") and ($message != "")) { + $res["owner-name"] = $res["author-name"]; + $res["owner-link"] = $res["author-link"]; + $res["owner-avatar"] = $res["author-avatar"]; + + $res["author-name"] = $name; + $res["author-link"] = $uri; + $res["author-avatar"] = $avatar; + + $res["body"] = html2bbcode($message); + } + } + $arr = array('feed' => $feed, 'item' => $item, 'result' => $res); call_hooks('parse_atom', $arr); diff --git a/include/text.php b/include/text.php index 409d40d59..c3558c641 100644 --- a/include/text.php +++ b/include/text.php @@ -1537,6 +1537,7 @@ function undo_post_tagging($s) { function fix_mce_lf($s) { $s = str_replace("\r\n","\n",$s); + $s = str_replace("\n\n","\n",$s); return $s; } From 717fd8539b10eb478d0f05bb4fd823167a43e581 Mon Sep 17 00:00:00 2001 From: Michael Johnston <michaelgeorgejohnston@gmail.com> Date: Sat, 14 Jul 2012 14:21:58 -0400 Subject: [PATCH 037/658] add alt_pager function, add ability to use new pager logic on network, profile, community, and search. --- include/text.php | 25 +++++++++++++++++++++++++ mod/community.php | 44 ++++++++++++++++++++++++++++---------------- mod/network.php | 37 ++++++++++++++++++++++--------------- mod/profile.php | 32 +++++++++++++++++++------------- mod/search.php | 44 +++++++++++++++++++++++++++++--------------- 5 files changed, 123 insertions(+), 59 deletions(-) diff --git a/include/text.php b/include/text.php index 409d40d59..a35c9a8d6 100644 --- a/include/text.php +++ b/include/text.php @@ -280,6 +280,31 @@ function paginate(&$a) { return $o; }} +if(! function_exists('alt_pager')) { +function alt_pager(&$a, $i) { + $o = ''; + $stripped = preg_replace('/(&page=[0-9]*)/','',$a->query_string); + $stripped = str_replace('q=','',$stripped); + $stripped = trim($stripped,'/'); + $pagenum = $a->pager['page']; + $url = $a->get_baseurl() . '/' . $stripped; + + $o .= '<div class="pager">'; + + if($a->pager['page']>1) + $o .= "<a href=\"$url"."&page=".($a->pager['page'] - 1).'">' . t('newer') . '</a>'; + if($i>0) { + if($a->pager['page']>1) + $o .= " - "; + $o .= "<a href=\"$url"."&page=".($a->pager['page'] + 1).'">' . t('older') . '</a>'; + } + + + $o .= '</div>'."\r\n"; + + return $o; +}} + // Turn user/group ACLs stored as angle bracketed text into arrays if(! function_exists('expand_acl')) { diff --git a/mod/community.php b/mod/community.php index becb5642b..354f68528 100644 --- a/mod/community.php +++ b/mod/community.php @@ -44,22 +44,24 @@ function community_content(&$a, $update = 0) { // Only public posts can be shown // OR your own posts if you are a logged in member + if(! get_pconfig(local_user(),'system','alt_pager')) { + $r = q("SELECT COUNT(distinct(`item`.`uri`)) AS `total` + FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid` + WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 + AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' + AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' + AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `user`.`hidewall` = 0 + AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0" + ); - $r = q("SELECT COUNT(distinct(`item`.`uri`)) AS `total` - FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid` - WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 - AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' - AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' - AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `user`.`hidewall` = 0 - AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0" - ); + if(count($r)) + $a->set_pager_total($r[0]['total']); - if(count($r)) - $a->set_pager_total($r[0]['total']); + if(! $r[0]['total']) { + info( t('No results.') . EOL); + return $o; + } - if(! $r[0]['total']) { - info( t('No results.') . EOL); - return $o; } $r = q("SELECT distinct(`item`.`uri`), `item`.*, `item`.`id` AS `item_id`, @@ -70,9 +72,9 @@ function community_content(&$a, $update = 0) { FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid` WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 - AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' + AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' - AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `user`.`hidewall` = 0 + AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `user`.`hidewall` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 group by `item`.`uri` ORDER BY `received` DESC LIMIT %d, %d ", intval($a->pager['start']), @@ -80,11 +82,21 @@ function community_content(&$a, $update = 0) { ); + if(! count($r)) { + info( t('No results.') . EOL); + return $o; + } + // we behave the same in message lists as the search module $o .= conversation($a,$r,'community',$update); - $o .= paginate($a); + if(! get_pconfig(local_user(),'system','alt_pager')) { + $o .= paginate($a); + } + else { + $o .= alt_pager($a,count($r)); + } return $o; } diff --git a/mod/network.php b/mod/network.php index 3d8fa7c14..17368ab92 100644 --- a/mod/network.php +++ b/mod/network.php @@ -563,21 +563,23 @@ function network_content(&$a, $update = 0) { } else { - $r = q("SELECT COUNT(*) AS `total` - FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` - WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 - AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - $sql_extra2 $sql_extra3 - $sql_extra $sql_nets ", - intval($_SESSION['uid']) - ); + if(! get_pconfig(local_user(),'system','alt_pager')) { + $r = q("SELECT COUNT(*) AS `total` + FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` + WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 + AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 + $sql_extra2 $sql_extra3 + $sql_extra $sql_nets ", + intval($_SESSION['uid']) + ); - if(count($r)) { - $a->set_pager_total($r[0]['total']); - $itemspage_network = get_pconfig(local_user(),'system','itemspage_network'); - $a->set_pager_itemspage(((intval($itemspage_network)) ? $itemspage_network : 40)); - } - $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage'])); + if(count($r)) { + $a->set_pager_total($r[0]['total']); + } + } + $itemspage_network = get_pconfig(local_user(),'system','itemspage_network'); + $a->set_pager_itemspage(((intval($itemspage_network)) ? $itemspage_network : 40)); + $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage'])); } $simple_update = (($update) ? " and `item`.`unseen` = 1 " : ''); @@ -688,7 +690,12 @@ function network_content(&$a, $update = 0) { $o .= conversation($a,$items,$mode,$update); if(! $update) { - $o .= paginate($a); + if(! get_pconfig(local_user(),'system','alt_pager')) { + $o .= paginate($a); + } + else { + $o .= alt_pager($a,count($items)); + } } return $o; diff --git a/mod/profile.php b/mod/profile.php index b142943c1..78fb5487c 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -229,20 +229,21 @@ function profile_content(&$a, $update = 0) { $sql_extra2 .= protect_sprintf(sprintf(" AND item.created >= '%s' ", dbesc(datetime_convert(date_default_timezone_get(),'',$datequery2)))); } + if(! get_pconfig($a->profile['profile_uid'],'system','alt_pager')) { + $r = q("SELECT COUNT(*) AS `total` + FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` + WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 + and `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 + AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 1 + $sql_extra $sql_extra2 ", + intval($a->profile['profile_uid']) + ); - $r = q("SELECT COUNT(*) AS `total` - FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` - WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 - and `item`.`moderated` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - AND `item`.`id` = `item`.`parent` AND `item`.`wall` = 1 - $sql_extra $sql_extra2 ", - intval($a->profile['profile_uid']) - ); - - if(count($r)) { - $a->set_pager_total($r[0]['total']); - $a->set_pager_itemspage(40); + if(count($r)) { + $a->set_pager_total($r[0]['total']); } + } + $a->set_pager_itemspage(40); $pager_sql = sprintf(" LIMIT %d, %d ",intval($a->pager['start']), intval($a->pager['itemspage'])); @@ -313,7 +314,12 @@ function profile_content(&$a, $update = 0) { $o .= conversation($a,$items,'profile',$update); if(! $update) { - $o .= paginate($a); + if(! get_pconfig($a->profile['profile_uid'],'system','alt_pager')) { + $o .= paginate($a); + } + else { + $o .= alt_pager($a,count($items)); + } } return $o; diff --git a/mod/search.php b/mod/search.php index 320ffddce..8f73b9244 100644 --- a/mod/search.php +++ b/mod/search.php @@ -128,21 +128,24 @@ function search_content(&$a) { // OR your own posts if you are a logged in member // No items will be shown if the member has a blocked profile wall. - $r = q("SELECT distinct(`item`.`uri`) as `total` - FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid` - WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 - AND (( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0) - OR `item`.`uid` = %d ) - AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 - $sql_extra group by `item`.`uri` ", - intval(local_user()) - ); + if(! get_pconfig(local_user(),'system','alt_pager')) { + $r = q("SELECT distinct(`item`.`uri`) as `total` + FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid` + WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 + AND (( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0) + OR `item`.`uid` = %d ) + AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 + $sql_extra group by `item`.`uri` ", + intval(local_user()) + ); - if(count($r)) - $a->set_pager_total(count($r)); - if(! count($r)) { - info( t('No results.') . EOL); - return $o; + if(count($r)) + $a->set_pager_total(count($r)); + + if(! count($r)) { + info( t('No results.') . EOL); + return $o; + } } $r = q("SELECT distinct(`item`.`uri`), `item`.*, `item`.`id` AS `item_id`, @@ -165,6 +168,12 @@ function search_content(&$a) { ); + if(! count($r)) { + info( t('No results.') . EOL); + return $o; + } + + if($tag) $o .= '<h2>Items tagged with: ' . $search . '</h2>'; else @@ -172,7 +181,12 @@ function search_content(&$a) { $o .= conversation($a,$r,'search',false); - $o .= paginate($a); + if(! get_pconfig(local_user(),'system','alt_pager')) { + $o .= paginate($a); + } + else { + $o .= alt_pager($a,count($r)); + } return $o; } From c87d3cb86faef926aa33bc2135ca0d621d881ece Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Sat, 14 Jul 2012 14:16:24 -0700 Subject: [PATCH 038/658] rev update --- boot.php | 2 +- util/messages.po | 36 ++++++++++++++++++------------------ 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/boot.php b/boot.php index 05fa86897..e0d0de8f2 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1403' ); +define ( 'FRIENDICA_VERSION', '3.0.1404' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index d5cdeda96..a5c0be308 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1403\n" +"Project-Id-Version: 3.0.1404\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-13 10:00-0700\n" +"POT-Creation-Date: 2012-07-14 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -56,7 +56,7 @@ msgstr "" #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:510 #: ../../addon/facebook/facebook.php:516 ../../addon/dav/layout.fnk.php:353 -#: ../../include/items.php:3591 ../../index.php:309 +#: ../../include/items.php:3593 ../../index.php:309 msgid "Permission denied." msgstr "" @@ -854,7 +854,7 @@ msgstr "" msgid "Confirm" msgstr "" -#: ../../mod/dfrn_request.php:715 ../../include/items.php:2982 +#: ../../mod/dfrn_request.php:715 ../../include/items.php:2984 msgid "[Name Withheld]" msgstr "" @@ -1888,7 +1888,7 @@ msgstr "" #: ../../addon/facebook/facebook.php:702 #: ../../addon/facebook/facebook.php:1192 #: ../../addon/public_server/public_server.php:62 -#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2991 +#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2993 #: ../../boot.php:767 msgid "Administrator" msgstr "" @@ -2951,7 +2951,7 @@ msgstr "" #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159 #: ../../mod/admin.php:702 ../../mod/admin.php:901 ../../mod/display.php:37 -#: ../../mod/display.php:142 ../../include/items.php:3470 +#: ../../mod/display.php:142 ../../include/items.php:3472 msgid "Item not found." msgstr "" @@ -2985,38 +2985,38 @@ msgstr "" msgid "Unable to locate original post." msgstr "" -#: ../../mod/item.php:268 +#: ../../mod/item.php:274 msgid "Empty post discarded." msgstr "" -#: ../../mod/item.php:389 ../../mod/wall_upload.php:122 +#: ../../mod/item.php:395 ../../mod/wall_upload.php:122 #: ../../mod/wall_upload.php:131 ../../mod/wall_upload.php:138 #: ../../include/message.php:144 msgid "Wall Photos" msgstr "" -#: ../../mod/item.php:794 +#: ../../mod/item.php:800 msgid "System error. Post not saved." msgstr "" -#: ../../mod/item.php:819 +#: ../../mod/item.php:825 #, php-format msgid "" "This message was sent to you by %s, a member of the Friendica social network." msgstr "" -#: ../../mod/item.php:821 +#: ../../mod/item.php:827 #, php-format msgid "You may visit them online at %s" msgstr "" -#: ../../mod/item.php:822 +#: ../../mod/item.php:828 msgid "" "Please contact the sender by replying to this post if you do not wish to " "receive these messages." msgstr "" -#: ../../mod/item.php:824 +#: ../../mod/item.php:830 #, php-format msgid "%s posted an update." msgstr "" @@ -7179,12 +7179,12 @@ msgstr "" msgid "%1$d %2$s ago" msgstr "" -#: ../../include/datetime.php:450 ../../include/items.php:1559 +#: ../../include/datetime.php:450 ../../include/items.php:1561 #, php-format msgid "%s's birthday" msgstr "" -#: ../../include/datetime.php:451 ../../include/items.php:1560 +#: ../../include/datetime.php:451 ../../include/items.php:1562 #, php-format msgid "Happy Birthday %s" msgstr "" @@ -7438,15 +7438,15 @@ msgstr "" msgid "following" msgstr "" -#: ../../include/items.php:2989 +#: ../../include/items.php:2991 msgid "A new person is sharing with you at " msgstr "" -#: ../../include/items.php:2989 +#: ../../include/items.php:2991 msgid "You have a new follower at " msgstr "" -#: ../../include/items.php:3658 +#: ../../include/items.php:3660 msgid "Archives" msgstr "" From 79b5520e770dcf40fafcc614f2e11515b0804cf0 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Sat, 14 Jul 2012 20:28:17 -0700 Subject: [PATCH 039/658] sql errors on profile page --- mod/profile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/profile.php b/mod/profile.php index 78fb5487c..cc333d36e 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -206,7 +206,7 @@ function profile_content(&$a, $update = 0) { FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND (`item`.`deleted` = 0 OR item.verb = '" . ACTIVITY_LIKE ."' OR item.verb = '" . ACTIVITY_DISLIKE . "') - WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0 + AND `item`.`deleted` = 0 and `item`.`moderated` = 0 and `item`.`unseen` = 1 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `item`.`wall` = 1 From 8767eedaac61d8d8d61559799e2c0267c9f5a7ef Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Sat, 14 Jul 2012 20:38:30 -0700 Subject: [PATCH 040/658] sql fix - this should work a bit better --- mod/profile.php | 1 - 1 file changed, 1 deletion(-) diff --git a/mod/profile.php b/mod/profile.php index cc333d36e..a3e25b76a 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -206,7 +206,6 @@ function profile_content(&$a, $update = 0) { FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND (`item`.`deleted` = 0 OR item.verb = '" . ACTIVITY_LIKE ."' OR item.verb = '" . ACTIVITY_DISLIKE . "') - AND `item`.`deleted` = 0 and `item`.`moderated` = 0 and `item`.`unseen` = 1 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `item`.`wall` = 1 From 4e9086f9b0a07672821c1d2dd72d01fcf639c45d Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Sun, 15 Jul 2012 12:47:24 +0200 Subject: [PATCH 041/658] Changes in the bbcode to markdown converter to make it more compatible with Diaspora --- include/bb2diaspora.php | 9 +++++++++ include/bbcode.php | 4 ++++ include/markdownify/markdownify.php | 10 +++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index 436412dbd..25e4640b3 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -196,6 +196,15 @@ function bb2diaspora($Text,$preserve_nl = false) { // The bbcode parser now handles youtube-links (and the other stuff) correctly. // Additionally the html code is now fixed so that lists are now working. + // Converting images with size parameters to simple images. Markdown doesn't know it. + $Text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $Text); + + // the following was added on 10-January-2012 due to an inability of Diaspora's + // new javascript markdown processor to handle links with images as the link "text" + // It is not optimal and may be removed if this ability is restored in the future + $Text = preg_replace("/\[url\=([^\[\]]*)\]\[img\](.*?)\[\/img\]\[\/url\]/ism", + "[img]$2[/img]\n[url]$1[/url]", $Text); + // Convert it to HTML - don't try oembed $Text = bbcode($Text, $preserve_nl, false); diff --git a/include/bbcode.php b/include/bbcode.php index a90be5de7..b5f2ec569 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -115,6 +115,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { $a = get_app(); + // Move all spaces out of the tags + $Text = preg_replace("/\[(\w*)\](\s*)/ism", '$2[$1]', $Text); + $Text = preg_replace("/(\s*)\[\/(\w*)\]/ism", '[/$2]$1', $Text); + // Hide all [noparse] contained bbtags by spacefying them // POSSIBLE BUG --> Will the 'preg' functions crash if there's an embedded image? diff --git a/include/markdownify/markdownify.php b/include/markdownify/markdownify.php index 43730cb77..7bbf1cbbe 100644 --- a/include/markdownify/markdownify.php +++ b/include/markdownify/markdownify.php @@ -735,6 +735,13 @@ class Markdownify { $this->parser->tagAttributes['src'] = $this->decode($this->parser->tagAttributes['src']); } +// ![Alt text](/path/to/img.jpg "Optional title") + if ($this->parser->tagAttributes['title'] != "") + $this->out('!['.$this->parser->tagAttributes['alt'].']('.$this->parser->tagAttributes['src'].'"'.$this->parser->tagAttributes['title'].'")', true); + else + $this->out('!['.$this->parser->tagAttributes['alt'].']('.$this->parser->tagAttributes['src'].')', true); + +/* # [This link][id] $link_id = false; if (!empty($this->stack['a'])) { @@ -759,6 +766,7 @@ class Markdownify { } $this->out('!['.$this->parser->tagAttributes['alt'].']['.$link_id.']', true); +*/ } /** * handle <code> tags @@ -1181,4 +1189,4 @@ class Markdownify { function parent() { return end($this->parser->openTags); } -} \ No newline at end of file +} From 8aeb3ec2fb2596ddef0200122583c23b0d549351 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Sun, 15 Jul 2012 13:12:24 +0200 Subject: [PATCH 042/658] Corrected the fix for images with links --- include/bb2diaspora.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index 25e4640b3..1a7d8eaff 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -202,7 +202,7 @@ function bb2diaspora($Text,$preserve_nl = false) { // the following was added on 10-January-2012 due to an inability of Diaspora's // new javascript markdown processor to handle links with images as the link "text" // It is not optimal and may be removed if this ability is restored in the future - $Text = preg_replace("/\[url\=([^\[\]]*)\]\[img\](.*?)\[\/img\]\[\/url\]/ism", + $Text = preg_replace("/\[url\=([^\[\]]*)\]\s*\[img\](.*?)\[\/img\]\s*\[\/url\]/ism", "[img]$2[/img]\n[url]$1[/url]", $Text); // Convert it to HTML - don't try oembed From 335c15ede55997989647552c05dd74db3431b499 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Sun, 15 Jul 2012 13:40:01 +0200 Subject: [PATCH 043/658] Hopefully the final fix for image links in bb2diaspora --- include/bb2diaspora.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index 1a7d8eaff..b95dee8f3 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -190,7 +190,7 @@ function diaspora_ol($s) { } -function bb2diaspora($Text,$preserve_nl = false) { +function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) { // Re-enabling the converter again. // The bbcode parser now handles youtube-links (and the other stuff) correctly. @@ -202,8 +202,9 @@ function bb2diaspora($Text,$preserve_nl = false) { // the following was added on 10-January-2012 due to an inability of Diaspora's // new javascript markdown processor to handle links with images as the link "text" // It is not optimal and may be removed if this ability is restored in the future - $Text = preg_replace("/\[url\=([^\[\]]*)\]\s*\[img\](.*?)\[\/img\]\s*\[\/url\]/ism", - "[img]$2[/img]\n[url]$1[/url]", $Text); + if ($fordiaspora) + $Text = preg_replace("/\[url\=([^\[\]]*)\]\s*\[img\](.*?)\[\/img\]\s*\[\/url\]/ism", + "[url]$1[/url]\n[img]$2[/img]", $Text); // Convert it to HTML - don't try oembed $Text = bbcode($Text, $preserve_nl, false); From 021f0829e6f698ab63537684c5baaaaf996a7396 Mon Sep 17 00:00:00 2001 From: Simon L'nu <simon.lnu@gmail.com> Date: Sun, 15 Jul 2012 12:03:53 -0400 Subject: [PATCH 044/658] re-add the sparkle stuff Signed-off-by: Simon L'nu <simon.lnu@gmail.com> --- view/theme/dispy/wall_item.tpl | 2 +- view/theme/dispy/wallwall_item.tpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl index 7b17d9b82..8d6f258e6 100644 --- a/view/theme/dispy/wall_item.tpl +++ b/view/theme/dispy/wall_item.tpl @@ -52,7 +52,7 @@ <li><a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item icon file-as" title="$item.filer"></a></li> {{ endif }} {{ if $item.plink }} - <li class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link$item.sparkle"></a></li> + <li class="wall-item-links-wrapper$item.sparkle"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link"></a></li> {{ endif }} {{ if $item.edpost }} <li><a class="editpost icon pencil" href="$item.edpost.0" title="$item.edpost.1"></a></li> diff --git a/view/theme/dispy/wallwall_item.tpl b/view/theme/dispy/wallwall_item.tpl index a308bb07a..f5187b710 100644 --- a/view/theme/dispy/wallwall_item.tpl +++ b/view/theme/dispy/wallwall_item.tpl @@ -59,7 +59,7 @@ class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick <li class="wall-item-filer-wrapper"><a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item icon file-as" title="$item.star.filer"></a></li> {{ endif }} {{ if $item.plink }} - <li class="wall-item-links-wrapper"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link$item.sparkle"></a></li> + <li class="wall-item-links-wrapper$item.sparkle"><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="icon remote-link"></a></li> {{ endif }} {{ if $item.edpost }} <li><a class="editpost icon pencil" href="$item.edpost.0" title="$item.edpost.1"></a></li> From 3408a56dd30d43eb8e82b7bcc17d0685d3f07358 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Sun, 15 Jul 2012 14:22:45 -0700 Subject: [PATCH 045/658] rev update --- boot.php | 2 +- util/messages.po | 214 +++++++++++++++++++++++++++++++---------------- 2 files changed, 142 insertions(+), 74 deletions(-) diff --git a/boot.php b/boot.php index e0d0de8f2..a33289a2b 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1404' ); +define ( 'FRIENDICA_VERSION', '3.0.1405' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index a5c0be308..f68f6213b 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1404\n" +"Project-Id-Version: 3.0.1405\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-14 10:00-0700\n" +"POT-Creation-Date: 2012-07-15 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -148,9 +148,10 @@ msgstr "" #: ../../addon/notimeline/notimeline.php:64 ../../addon/blockem/blockem.php:57 #: ../../addon/qcomment/qcomment.php:61 #: ../../addon/openstreetmap/openstreetmap.php:70 -#: ../../addon/libertree/libertree.php:90 ../../addon/mathjax/mathjax.php:42 -#: ../../addon/editplain/editplain.php:84 ../../addon/blackout/blackout.php:98 -#: ../../addon/gravatar/gravatar.php:86 +#: ../../addon/libravatar/libravatar.php:99 +#: ../../addon/libertree/libertree.php:90 ../../addon/altpager/altpager.php:87 +#: ../../addon/mathjax/mathjax.php:42 ../../addon/editplain/editplain.php:84 +#: ../../addon/blackout/blackout.php:98 ../../addon/gravatar/gravatar.php:95 #: ../../addon/pageheader/pageheader.php:55 ../../addon/ijpost/ijpost.php:93 #: ../../addon/jappixmini/jappixmini.php:302 #: ../../addon/statusnet/statusnet.php:278 @@ -224,7 +225,7 @@ msgstr "" msgid "Edit event" msgstr "" -#: ../../mod/events.php:304 ../../include/text.php:1069 +#: ../../mod/events.php:304 ../../include/text.php:1094 msgid "link to source" msgstr "" @@ -419,7 +420,7 @@ msgstr "" #: ../../mod/photos.php:591 ../../mod/like.php:145 ../../mod/tagger.php:70 #: ../../addon/communityhome/communityhome.php:163 -#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1321 +#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1346 #: ../../include/diaspora.php:1793 ../../include/conversation.php:114 #: ../../include/conversation.php:187 msgid "photo" @@ -624,7 +625,8 @@ msgstr "" msgid "Community" msgstr "" -#: ../../mod/community.php:61 ../../mod/search.php:144 +#: ../../mod/community.php:61 ../../mod/community.php:86 +#: ../../mod/search.php:146 ../../mod/search.php:172 msgid "No results." msgstr "" @@ -2569,7 +2571,7 @@ msgstr "" #: ../../mod/notes.php:63 ../../mod/filer.php:30 #: ../../addon/facebook/facebook.php:770 #: ../../addon/privacy_image_cache/privacy_image_cache.php:187 -#: ../../addon/dav/layout.fnk.php:384 ../../include/text.php:652 +#: ../../addon/dav/layout.fnk.php:384 ../../include/text.php:677 msgid "Save" msgstr "" @@ -2829,7 +2831,7 @@ msgstr "" msgid "No contacts." msgstr "" -#: ../../mod/viewcontacts.php:76 ../../include/text.php:589 +#: ../../mod/viewcontacts.php:76 ../../include/text.php:614 msgid "View Contacts" msgstr "" @@ -3874,8 +3876,8 @@ msgstr "" msgid "No installed applications." msgstr "" -#: ../../mod/search.php:83 ../../include/text.php:649 -#: ../../include/text.php:650 ../../include/nav.php:91 +#: ../../mod/search.php:83 ../../include/text.php:674 +#: ../../include/text.php:675 ../../include/nav.php:91 msgid "Search" msgstr "" @@ -4943,7 +4945,7 @@ msgid "Latest likes" msgstr "" #: ../../addon/communityhome/communityhome.php:155 -#: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1319 +#: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1344 #: ../../include/conversation.php:106 ../../include/conversation.php:179 msgid "event" msgstr "" @@ -5053,7 +5055,7 @@ msgstr "" msgid "Limitations" msgstr "" -#: ../../addon/dav/layout.fnk.php:391 +#: ../../addon/dav/layout.fnk.php:391 ../../addon/libravatar/libravatar.php:82 msgid "Warning" msgstr "" @@ -5537,6 +5539,69 @@ msgstr "" msgid "The default zoom level. (1:world, 18:highest)" msgstr "" +#: ../../addon/libravatar/libravatar.php:14 +msgid "Could NOT install Libravatar successfully.<br>It requires PHP >= 5.3" +msgstr "" + +#: ../../addon/libravatar/libravatar.php:73 +#: ../../addon/gravatar/gravatar.php:71 +msgid "generic profile image" +msgstr "" + +#: ../../addon/libravatar/libravatar.php:74 +#: ../../addon/gravatar/gravatar.php:72 +msgid "random geometric pattern" +msgstr "" + +#: ../../addon/libravatar/libravatar.php:75 +#: ../../addon/gravatar/gravatar.php:73 +msgid "monster face" +msgstr "" + +#: ../../addon/libravatar/libravatar.php:76 +#: ../../addon/gravatar/gravatar.php:74 +msgid "computer generated face" +msgstr "" + +#: ../../addon/libravatar/libravatar.php:77 +#: ../../addon/gravatar/gravatar.php:75 +msgid "retro arcade style face" +msgstr "" + +#: ../../addon/libravatar/libravatar.php:83 +#, php-format +msgid "Your PHP version %s is lower than the required PHP >= 5.3." +msgstr "" + +#: ../../addon/libravatar/libravatar.php:84 +msgid "This addon is not functional on your server." +msgstr "" + +#: ../../addon/libravatar/libravatar.php:93 +#: ../../addon/gravatar/gravatar.php:89 +msgid "Information" +msgstr "" + +#: ../../addon/libravatar/libravatar.php:93 +msgid "" +"Gravatar addon is installed. Please disable the Gravatar addon.<br>The " +"Libravatar addon will fall back to Gravatar if nothing was found at " +"Libravatar." +msgstr "" + +#: ../../addon/libravatar/libravatar.php:100 +#: ../../addon/gravatar/gravatar.php:96 +msgid "Default avatar image" +msgstr "" + +#: ../../addon/libravatar/libravatar.php:100 +msgid "Select default avatar image if none was found. See README" +msgstr "" + +#: ../../addon/libravatar/libravatar.php:112 +msgid "Libravatar settings updated." +msgstr "" + #: ../../addon/libertree/libertree.php:36 msgid "Post to libertree" msgstr "" @@ -5561,6 +5626,18 @@ msgstr "" msgid "Post to Libertree by default" msgstr "" +#: ../../addon/altpager/altpager.php:46 +msgid "Altpager settings updated." +msgstr "" + +#: ../../addon/altpager/altpager.php:79 +msgid "Alternate Pagination Setting" +msgstr "" + +#: ../../addon/altpager/altpager.php:81 +msgid "Use links to \"newer\" and \"older\" pages in place of page numbers?" +msgstr "" + #: ../../addon/mathjax/mathjax.php:37 msgid "" "The MathJax addon renders mathematical formulae written using the LaTeX " @@ -5594,43 +5671,26 @@ msgstr "" msgid "Disable richtext status editor" msgstr "" -#: ../../addon/gravatar/gravatar.php:71 -msgid "generic profile image" +#: ../../addon/gravatar/gravatar.php:89 +msgid "" +"Libravatar addon is installed, too. Please disable Libravatar addon or this " +"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if " +"nothing was found at Libravatar." msgstr "" -#: ../../addon/gravatar/gravatar.php:72 -msgid "random geometric pattern" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:73 -msgid "monster face" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:74 -msgid "computer generated face" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:75 -msgid "retro arcade style face" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:87 -msgid "Default avatar image" -msgstr "" - -#: ../../addon/gravatar/gravatar.php:87 +#: ../../addon/gravatar/gravatar.php:96 msgid "Select default avatar image if none was found at Gravatar. See README" msgstr "" -#: ../../addon/gravatar/gravatar.php:88 +#: ../../addon/gravatar/gravatar.php:97 msgid "Rating of images" msgstr "" -#: ../../addon/gravatar/gravatar.php:88 +#: ../../addon/gravatar/gravatar.php:97 msgid "Select the appropriate avatar rating for your site. See README" msgstr "" -#: ../../addon/gravatar/gravatar.php:102 +#: ../../addon/gravatar/gravatar.php:111 msgid "Gravatar settings updated." msgstr "" @@ -6735,138 +6795,146 @@ msgstr "" msgid "next" msgstr "" -#: ../../include/text.php:568 +#: ../../include/text.php:295 +msgid "newer" +msgstr "" + +#: ../../include/text.php:299 +msgid "older" +msgstr "" + +#: ../../include/text.php:593 msgid "No contacts" msgstr "" -#: ../../include/text.php:577 +#: ../../include/text.php:602 #, php-format msgid "%d Contact" msgid_plural "%d Contacts" msgstr[0] "" msgstr[1] "" -#: ../../include/text.php:839 +#: ../../include/text.php:864 msgid "Monday" msgstr "" -#: ../../include/text.php:839 +#: ../../include/text.php:864 msgid "Tuesday" msgstr "" -#: ../../include/text.php:839 +#: ../../include/text.php:864 msgid "Wednesday" msgstr "" -#: ../../include/text.php:839 +#: ../../include/text.php:864 msgid "Thursday" msgstr "" -#: ../../include/text.php:839 +#: ../../include/text.php:864 msgid "Friday" msgstr "" -#: ../../include/text.php:839 +#: ../../include/text.php:864 msgid "Saturday" msgstr "" -#: ../../include/text.php:839 +#: ../../include/text.php:864 msgid "Sunday" msgstr "" -#: ../../include/text.php:843 +#: ../../include/text.php:868 msgid "January" msgstr "" -#: ../../include/text.php:843 +#: ../../include/text.php:868 msgid "February" msgstr "" -#: ../../include/text.php:843 +#: ../../include/text.php:868 msgid "March" msgstr "" -#: ../../include/text.php:843 +#: ../../include/text.php:868 msgid "April" msgstr "" -#: ../../include/text.php:843 +#: ../../include/text.php:868 msgid "May" msgstr "" -#: ../../include/text.php:843 +#: ../../include/text.php:868 msgid "June" msgstr "" -#: ../../include/text.php:843 +#: ../../include/text.php:868 msgid "July" msgstr "" -#: ../../include/text.php:843 +#: ../../include/text.php:868 msgid "August" msgstr "" -#: ../../include/text.php:843 +#: ../../include/text.php:868 msgid "September" msgstr "" -#: ../../include/text.php:843 +#: ../../include/text.php:868 msgid "October" msgstr "" -#: ../../include/text.php:843 +#: ../../include/text.php:868 msgid "November" msgstr "" -#: ../../include/text.php:843 +#: ../../include/text.php:868 msgid "December" msgstr "" -#: ../../include/text.php:929 +#: ../../include/text.php:954 msgid "bytes" msgstr "" -#: ../../include/text.php:949 ../../include/text.php:964 +#: ../../include/text.php:974 ../../include/text.php:989 msgid "remove" msgstr "" -#: ../../include/text.php:949 ../../include/text.php:964 +#: ../../include/text.php:974 ../../include/text.php:989 msgid "[remove]" msgstr "" -#: ../../include/text.php:952 +#: ../../include/text.php:977 msgid "Categories:" msgstr "" -#: ../../include/text.php:967 +#: ../../include/text.php:992 msgid "Filed under:" msgstr "" -#: ../../include/text.php:983 ../../include/text.php:995 +#: ../../include/text.php:1008 ../../include/text.php:1020 msgid "Click to open/close" msgstr "" -#: ../../include/text.php:1101 ../../include/user.php:236 +#: ../../include/text.php:1126 ../../include/user.php:236 msgid "default" msgstr "" -#: ../../include/text.php:1113 +#: ../../include/text.php:1138 msgid "Select an alternate language" msgstr "" -#: ../../include/text.php:1323 +#: ../../include/text.php:1348 msgid "activity" msgstr "" -#: ../../include/text.php:1325 +#: ../../include/text.php:1350 msgid "comment" msgstr "" -#: ../../include/text.php:1326 +#: ../../include/text.php:1351 msgid "post" msgstr "" -#: ../../include/text.php:1481 +#: ../../include/text.php:1506 msgid "Item filed" msgstr "" From 210fe188b28ffb6079b6a54ea7fed0e3fcf2061f Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Sun, 15 Jul 2012 17:07:53 -0700 Subject: [PATCH 046/658] missing param --- include/socgraph.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/socgraph.php b/include/socgraph.php index eccb133cc..4fe9eaf90 100644 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -229,7 +229,7 @@ function count_common_friends_zcid($uid,$zcid) { } -function common_friends_zcid($uid,$zcid,$start = 0, $limit = 9999,$shuffle) { +function common_friends_zcid($uid,$zcid,$start = 0, $limit = 9999,$shuffle = false) { if($shuffle) $sql_extra = " order by rand() "; From 02d88e7cbe06c93378ca9a115ac0fb5a89c31426 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Sun, 15 Jul 2012 20:56:09 -0700 Subject: [PATCH 047/658] name mixup in wall-to-wall hovertips --- include/conversation.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/conversation.php b/include/conversation.php index 6c3f13477..546e27db6 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -772,7 +772,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'text' => strip_tags(template_escape($body)), 'id' => $item['item_id'], 'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])), - 'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])), + 'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $owner-name, ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])), 'to' => t('to'), 'wall' => t('Wall-to-Wall'), 'vwall' => t('via Wall-To-Wall:'), From f440d762001ff7f41c5c7fc85353c7216267538e Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Sun, 15 Jul 2012 21:00:11 -0700 Subject: [PATCH 048/658] recover from datetime parse issues, inspired by https://github.com/friendica/friendica/pull/396 --- include/datetime.php | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/include/datetime.php b/include/datetime.php index 75ae685f3..efcfa0a17 100644 --- a/include/datetime.php +++ b/include/datetime.php @@ -100,11 +100,33 @@ function datetime_convert($from = 'UTC', $to = 'UTC', $s = 'now', $fmt = "Y-m-d return str_replace('1','0',$d->format($fmt)); } - $d = new DateTime($s, new DateTimeZone($from)); - $d->setTimeZone(new DateTimeZone($to)); + try { + $from_obj = new DateTimeZone($from); + } + catch(Exception $e) { + $from_obj = new DateTimeZone('UTC'); + } + + try { + $d = new DateTime($s, $from_obj); + } + catch(Exception $e) { + logger('datetime_convert: exception: ' . $e->getMessage()); + $d = new DateTime('now', $from_obj); + } + + try { + $to_obj = new DateTimeZone($to); + } + catch(Exception $e) { + $to_obj = new DateTimeZone('UTC'); + } + + $d->setTimeZone($to_obj); return($d->format($fmt)); }} + // wrapper for date selector, tailored for use in birthday fields function dob($dob) { From eae6e665c06051edc412a60879a623d25d40b7f8 Mon Sep 17 00:00:00 2001 From: Martin Schmitt <mas@scsy.de> Date: Mon, 16 Jul 2012 22:33:23 +0200 Subject: [PATCH 049/658] Esperanto -> 100% --- view/eo/messages.po | 1637 +++++++++++++++++++++++-------------------- view/eo/strings.php | 120 ++-- 2 files changed, 965 insertions(+), 792 deletions(-) diff --git a/view/eo/messages.po b/view/eo/messages.po index 26d823d73..267cbdd85 100644 --- a/view/eo/messages.po +++ b/view/eo/messages.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: http://bugs.friendica.com/\n" -"POT-Creation-Date: 2012-06-30 10:00-0700\n" -"PO-Revision-Date: 2012-07-01 16:55+0000\n" +"POT-Creation-Date: 2012-07-15 10:00-0700\n" +"PO-Revision-Date: 2012-07-16 19:31+0000\n" "Last-Translator: Martin Schmitt <mas@scsy.de>\n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/friendica/language/eo/)\n" "MIME-Version: 1.0\n" @@ -38,7 +38,7 @@ msgstr "Ĝisdatigo de kontakto malsukcesis." #: ../../mod/crepair.php:115 ../../mod/wall_attach.php:44 #: ../../mod/fsuggest.php:78 ../../mod/events.php:140 ../../mod/api.php:26 -#: ../../mod/api.php:31 ../../mod/photos.php:135 ../../mod/photos.php:951 +#: ../../mod/api.php:31 ../../mod/photos.php:135 ../../mod/photos.php:957 #: ../../mod/editpost.php:10 ../../mod/install.php:151 #: ../../mod/notifications.php:66 ../../mod/contacts.php:145 #: ../../mod/settings.php:106 ../../mod/settings.php:537 @@ -47,18 +47,18 @@ msgstr "Ĝisdatigo de kontakto malsukcesis." #: ../../mod/wallmessage.php:33 ../../mod/wallmessage.php:79 #: ../../mod/wallmessage.php:103 ../../mod/attach.php:33 #: ../../mod/group.php:19 ../../mod/viewcontacts.php:22 -#: ../../mod/register.php:38 ../../mod/regmod.php:116 ../../mod/item.php:124 -#: ../../mod/item.php:140 ../../mod/profile_photo.php:19 -#: ../../mod/profile_photo.php:141 ../../mod/profile_photo.php:152 -#: ../../mod/profile_photo.php:165 ../../mod/message.php:45 -#: ../../mod/message.php:97 ../../mod/allfriends.php:9 +#: ../../mod/register.php:38 ../../mod/regmod.php:116 ../../mod/item.php:125 +#: ../../mod/item.php:141 ../../mod/profile_photo.php:19 +#: ../../mod/profile_photo.php:142 ../../mod/profile_photo.php:153 +#: ../../mod/profile_photo.php:166 ../../mod/message.php:45 +#: ../../mod/message.php:175 ../../mod/allfriends.php:9 #: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53 #: ../../mod/follow.php:9 ../../mod/display.php:138 ../../mod/profiles.php:7 -#: ../../mod/profiles.php:400 ../../mod/delegate.php:6 +#: ../../mod/profiles.php:408 ../../mod/delegate.php:6 #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81 -#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:508 -#: ../../addon/facebook/facebook.php:514 ../../addon/dav/layout.fnk.php:353 -#: ../../include/items.php:3455 ../../index.php:309 +#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:510 +#: ../../addon/facebook/facebook.php:516 ../../addon/dav/layout.fnk.php:353 +#: ../../include/items.php:3593 ../../index.php:309 msgid "Permission denied." msgstr "Malpermesita." @@ -88,7 +88,7 @@ msgid "Return to contact editor" msgstr "Reen al kontakta redaktilo" #: ../../mod/crepair.php:148 ../../mod/settings.php:557 -#: ../../mod/settings.php:583 ../../mod/admin.php:659 ../../mod/admin.php:668 +#: ../../mod/settings.php:583 ../../mod/admin.php:661 ../../mod/admin.php:670 msgid "Name" msgstr "Nomo" @@ -125,21 +125,22 @@ msgid "New photo from this URL" msgstr "Nova bildo el tiu adreso" #: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107 -#: ../../mod/events.php:436 ../../mod/photos.php:986 ../../mod/photos.php:1057 -#: ../../mod/photos.php:1303 ../../mod/photos.php:1343 -#: ../../mod/photos.php:1383 ../../mod/photos.php:1414 +#: ../../mod/events.php:436 ../../mod/photos.php:992 ../../mod/photos.php:1063 +#: ../../mod/photos.php:1309 ../../mod/photos.php:1349 +#: ../../mod/photos.php:1389 ../../mod/photos.php:1420 #: ../../mod/install.php:246 ../../mod/install.php:284 -#: ../../mod/localtime.php:45 ../../mod/contacts.php:343 -#: ../../mod/settings.php:555 ../../mod/settings.php:709 -#: ../../mod/settings.php:770 ../../mod/settings.php:971 -#: ../../mod/group.php:85 ../../mod/message.php:216 ../../mod/message.php:410 -#: ../../mod/admin.php:420 ../../mod/admin.php:656 ../../mod/admin.php:792 -#: ../../mod/admin.php:991 ../../mod/admin.php:1078 ../../mod/profiles.php:569 -#: ../../mod/invite.php:119 ../../addon/fromgplus/fromgplus.php:40 -#: ../../addon/facebook/facebook.php:617 +#: ../../mod/localtime.php:45 ../../mod/content.php:691 +#: ../../mod/contacts.php:343 ../../mod/settings.php:555 +#: ../../mod/settings.php:709 ../../mod/settings.php:770 +#: ../../mod/settings.php:971 ../../mod/group.php:85 ../../mod/message.php:294 +#: ../../mod/message.php:473 ../../mod/admin.php:422 ../../mod/admin.php:658 +#: ../../mod/admin.php:794 ../../mod/admin.php:993 ../../mod/admin.php:1080 +#: ../../mod/profiles.php:577 ../../mod/invite.php:119 +#: ../../addon/fromgplus/fromgplus.php:40 +#: ../../addon/facebook/facebook.php:619 #: ../../addon/snautofollow/snautofollow.php:64 #: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93 -#: ../../addon/nsfw/nsfw.php:57 ../../addon/page/page.php:208 +#: ../../addon/nsfw/nsfw.php:57 ../../addon/page/page.php:210 #: ../../addon/planets/planets.php:158 #: ../../addon/uhremotestorage/uhremotestorage.php:89 #: ../../addon/randplace/randplace.php:177 ../../addon/dwpost/dwpost.php:93 @@ -149,9 +150,10 @@ msgstr "Nova bildo el tiu adreso" #: ../../addon/notimeline/notimeline.php:64 ../../addon/blockem/blockem.php:57 #: ../../addon/qcomment/qcomment.php:61 #: ../../addon/openstreetmap/openstreetmap.php:70 -#: ../../addon/libertree/libertree.php:90 ../../addon/mathjax/mathjax.php:42 -#: ../../addon/editplain/editplain.php:84 ../../addon/blackout/blackout.php:98 -#: ../../addon/gravatar/gravatar.php:86 +#: ../../addon/libravatar/libravatar.php:99 +#: ../../addon/libertree/libertree.php:90 ../../addon/altpager/altpager.php:87 +#: ../../addon/mathjax/mathjax.php:42 ../../addon/editplain/editplain.php:84 +#: ../../addon/blackout/blackout.php:98 ../../addon/gravatar/gravatar.php:95 #: ../../addon/pageheader/pageheader.php:55 ../../addon/ijpost/ijpost.php:93 #: ../../addon/jappixmini/jappixmini.php:302 #: ../../addon/statusnet/statusnet.php:278 @@ -170,7 +172,7 @@ msgstr "Nova bildo el tiu adreso" #: ../../view/theme/diabook/theme.php:757 #: ../../view/theme/diabook/config.php:190 #: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70 -#: ../../include/conversation.php:580 +#: ../../include/conversation.php:653 msgid "Submit" msgstr "Sendi" @@ -225,12 +227,12 @@ msgstr "l, F j" msgid "Edit event" msgstr "Redakti okazon" -#: ../../mod/events.php:304 ../../include/text.php:1065 +#: ../../mod/events.php:304 ../../include/text.php:1094 msgid "link to source" msgstr "ligilo al fonto" #: ../../mod/events.php:328 ../../view/theme/diabook/theme.php:131 -#: ../../include/nav.php:52 ../../boot.php:1559 +#: ../../include/nav.php:52 ../../boot.php:1596 msgid "Events" msgstr "Okazoj" @@ -284,8 +286,9 @@ msgstr "Agordi al horzono de la leganto" msgid "Description:" msgstr "Priskribo" -#: ../../mod/events.php:429 ../../include/event.php:40 -#: ../../include/bb2diaspora.php:357 ../../boot.php:1136 +#: ../../mod/events.php:429 ../../mod/directory.php:132 +#: ../../include/event.php:40 ../../include/bb2diaspora.php:469 +#: ../../boot.php:1173 msgid "Location:" msgstr "Loko:" @@ -350,7 +353,7 @@ msgstr "Ĉu rajtigi ĉi tiun programon por atingi viajn afiŝojn kaj kontaktojn #: ../../mod/settings.php:958 ../../mod/settings.php:959 #: ../../mod/settings.php:960 ../../mod/settings.php:961 #: ../../mod/settings.php:962 ../../mod/register.php:234 -#: ../../mod/profiles.php:546 +#: ../../mod/profiles.php:554 msgid "Yes" msgstr "Jes" @@ -362,23 +365,23 @@ msgstr "Jes" #: ../../mod/settings.php:958 ../../mod/settings.php:959 #: ../../mod/settings.php:960 ../../mod/settings.php:961 #: ../../mod/settings.php:962 ../../mod/register.php:235 -#: ../../mod/profiles.php:547 +#: ../../mod/profiles.php:555 msgid "No" msgstr "Ne" -#: ../../mod/photos.php:46 ../../boot.php:1553 +#: ../../mod/photos.php:46 ../../boot.php:1590 msgid "Photo Albums" msgstr "Bildalbumoj" -#: ../../mod/photos.php:54 ../../mod/photos.php:156 ../../mod/photos.php:965 -#: ../../mod/photos.php:1049 ../../mod/photos.php:1064 -#: ../../mod/photos.php:1492 ../../mod/photos.php:1504 +#: ../../mod/photos.php:54 ../../mod/photos.php:156 ../../mod/photos.php:971 +#: ../../mod/photos.php:1055 ../../mod/photos.php:1070 +#: ../../mod/photos.php:1498 ../../mod/photos.php:1510 #: ../../addon/communityhome/communityhome.php:110 #: ../../view/theme/diabook/theme.php:598 msgid "Contact Photos" msgstr "Kontaktbildoj" -#: ../../mod/photos.php:61 ../../mod/photos.php:1074 ../../mod/photos.php:1542 +#: ../../mod/photos.php:61 ../../mod/photos.php:1080 ../../mod/photos.php:1548 msgid "Upload New Photos" msgstr "Alŝuti novajn bildojn" @@ -390,11 +393,11 @@ msgstr "ĉiuj" msgid "Contact information unavailable" msgstr "Kontaktoj informoj ne disponeblas" -#: ../../mod/photos.php:156 ../../mod/photos.php:660 ../../mod/photos.php:1049 -#: ../../mod/photos.php:1064 ../../mod/profile_photo.php:60 +#: ../../mod/photos.php:156 ../../mod/photos.php:660 ../../mod/photos.php:1055 +#: ../../mod/photos.php:1070 ../../mod/profile_photo.php:60 #: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74 -#: ../../mod/profile_photo.php:176 ../../mod/profile_photo.php:254 -#: ../../mod/profile_photo.php:263 +#: ../../mod/profile_photo.php:177 ../../mod/profile_photo.php:261 +#: ../../mod/profile_photo.php:270 #: ../../addon/communityhome/communityhome.php:111 #: ../../view/theme/diabook/theme.php:599 ../../include/user.php:304 #: ../../include/user.php:311 ../../include/user.php:318 @@ -405,11 +408,11 @@ msgstr "Profilbildoj" msgid "Album not found." msgstr "Albumo ne trovita." -#: ../../mod/photos.php:184 ../../mod/photos.php:1058 +#: ../../mod/photos.php:184 ../../mod/photos.php:1064 msgid "Delete Album" msgstr "Forviŝi albumon" -#: ../../mod/photos.php:247 ../../mod/photos.php:1304 +#: ../../mod/photos.php:247 ../../mod/photos.php:1310 msgid "Delete Photo" msgstr "Forviŝi bildon" @@ -417,11 +420,11 @@ msgstr "Forviŝi bildon" msgid "was tagged in a" msgstr "estas markita en" -#: ../../mod/photos.php:591 ../../mod/like.php:144 ../../mod/tagger.php:70 +#: ../../mod/photos.php:591 ../../mod/like.php:145 ../../mod/tagger.php:70 #: ../../addon/communityhome/communityhome.php:163 -#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1317 -#: ../../include/diaspora.php:1710 ../../include/conversation.php:53 -#: ../../include/conversation.php:126 +#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1346 +#: ../../include/diaspora.php:1793 ../../include/conversation.php:114 +#: ../../include/conversation.php:187 msgid "photo" msgstr "bildo" @@ -442,170 +445,177 @@ msgstr "Bilddosiero estas malplena." msgid "Unable to process image." msgstr "Ne eblas procedi la bildon." -#: ../../mod/photos.php:757 ../../mod/profile_photo.php:259 -#: ../../mod/wall_upload.php:118 +#: ../../mod/photos.php:763 ../../mod/profile_photo.php:266 +#: ../../mod/wall_upload.php:125 msgid "Image upload failed." msgstr "Alŝuto de bildo malsukcesis." -#: ../../mod/photos.php:843 ../../mod/community.php:16 +#: ../../mod/photos.php:849 ../../mod/community.php:16 #: ../../mod/dfrn_request.php:759 ../../mod/viewcontacts.php:17 #: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29 msgid "Public access denied." msgstr "Publika atingo ne permesita." -#: ../../mod/photos.php:853 +#: ../../mod/photos.php:859 msgid "No photos selected" msgstr "Neniu bildoj elektita" -#: ../../mod/photos.php:932 +#: ../../mod/photos.php:938 msgid "Access to this item is restricted." msgstr "Atingo al tio elemento estas limigita." -#: ../../mod/photos.php:996 +#: ../../mod/photos.php:1002 #, php-format msgid "You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage." msgstr "Vi uzas %1$.2f MB de %2$.2f MB bildkonservejo." -#: ../../mod/photos.php:999 +#: ../../mod/photos.php:1005 #, php-format msgid "You have used %1$.2f Mbytes of photo storage." msgstr "Vi uzas %1$.2f MB de bildkonservejo." -#: ../../mod/photos.php:1005 +#: ../../mod/photos.php:1011 msgid "Upload Photos" msgstr "Alŝuti bildojn" -#: ../../mod/photos.php:1009 ../../mod/photos.php:1053 +#: ../../mod/photos.php:1015 ../../mod/photos.php:1059 msgid "New album name: " msgstr "Nomo por nova albumo:" -#: ../../mod/photos.php:1010 +#: ../../mod/photos.php:1016 msgid "or existing album name: " msgstr "aŭ nomo de estanta albumo:" -#: ../../mod/photos.php:1011 +#: ../../mod/photos.php:1017 msgid "Do not show a status post for this upload" msgstr "Ne kreu statan afiŝon por tio alŝuto." -#: ../../mod/photos.php:1013 ../../mod/photos.php:1299 +#: ../../mod/photos.php:1019 ../../mod/photos.php:1305 msgid "Permissions" msgstr "Permesoj" -#: ../../mod/photos.php:1068 +#: ../../mod/photos.php:1074 msgid "Edit Album" msgstr "Redakti albumon" -#: ../../mod/photos.php:1092 ../../mod/photos.php:1525 +#: ../../mod/photos.php:1098 ../../mod/photos.php:1531 msgid "View Photo" msgstr "Vidi bildon" -#: ../../mod/photos.php:1127 +#: ../../mod/photos.php:1133 msgid "Permission denied. Access to this item may be restricted." msgstr "Malpermesita. Atingo al tio elemento eble estas limigita." -#: ../../mod/photos.php:1129 +#: ../../mod/photos.php:1135 msgid "Photo not available" msgstr "La bildo ne disponeblas" -#: ../../mod/photos.php:1179 +#: ../../mod/photos.php:1185 msgid "View photo" msgstr "Vidi bildon" -#: ../../mod/photos.php:1179 +#: ../../mod/photos.php:1185 msgid "Edit photo" msgstr "Redakti bildon" -#: ../../mod/photos.php:1180 +#: ../../mod/photos.php:1186 msgid "Use as profile photo" msgstr "Uzi kiel profilbildo" -#: ../../mod/photos.php:1186 ../../include/conversation.php:490 +#: ../../mod/photos.php:1192 ../../mod/content.php:601 +#: ../../include/conversation.php:563 msgid "Private Message" msgstr "Privata mesaĝo" -#: ../../mod/photos.php:1208 +#: ../../mod/photos.php:1214 msgid "View Full Size" msgstr "Vidi plengrande " -#: ../../mod/photos.php:1276 +#: ../../mod/photos.php:1282 msgid "Tags: " msgstr "Markoj:" -#: ../../mod/photos.php:1279 +#: ../../mod/photos.php:1285 msgid "[Remove any tag]" msgstr "[Forviŝi iun markon]" -#: ../../mod/photos.php:1289 +#: ../../mod/photos.php:1295 msgid "Rotate CW (right)" msgstr "Turni horloĝdirekte (dekstren)" -#: ../../mod/photos.php:1290 +#: ../../mod/photos.php:1296 msgid "Rotate CCW (left)" msgstr "Turni kontraŭhorloĝdirekte (maldekstren)" -#: ../../mod/photos.php:1292 +#: ../../mod/photos.php:1298 msgid "New album name" msgstr "Nova nomo de albumo" -#: ../../mod/photos.php:1295 +#: ../../mod/photos.php:1301 msgid "Caption" msgstr "Apudskribo" -#: ../../mod/photos.php:1297 +#: ../../mod/photos.php:1303 msgid "Add a Tag" msgstr "Aldoni markon" -#: ../../mod/photos.php:1301 +#: ../../mod/photos.php:1307 msgid "" "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "Ekzemple: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" -#: ../../mod/photos.php:1321 ../../include/conversation.php:554 +#: ../../mod/photos.php:1327 ../../mod/content.php:665 +#: ../../include/conversation.php:627 msgid "I like this (toggle)" msgstr "Mi ŝatas tion (ŝalti)" -#: ../../mod/photos.php:1322 ../../include/conversation.php:555 +#: ../../mod/photos.php:1328 ../../mod/content.php:666 +#: ../../include/conversation.php:628 msgid "I don't like this (toggle)" msgstr "Mi malŝatas tion(ŝalti)" -#: ../../mod/photos.php:1323 ../../include/conversation.php:993 +#: ../../mod/photos.php:1329 ../../include/conversation.php:1066 msgid "Share" msgstr "Kunhavigi" -#: ../../mod/photos.php:1324 ../../mod/editpost.php:104 -#: ../../mod/wallmessage.php:145 ../../mod/message.php:215 -#: ../../mod/message.php:411 ../../include/conversation.php:371 -#: ../../include/conversation.php:731 ../../include/conversation.php:1012 +#: ../../mod/photos.php:1330 ../../mod/editpost.php:104 +#: ../../mod/content.php:482 ../../mod/content.php:842 +#: ../../mod/wallmessage.php:145 ../../mod/message.php:293 +#: ../../mod/message.php:474 ../../include/conversation.php:444 +#: ../../include/conversation.php:804 ../../include/conversation.php:1085 msgid "Please wait" msgstr "Bonvolu atendi" -#: ../../mod/photos.php:1340 ../../mod/photos.php:1380 -#: ../../mod/photos.php:1411 ../../include/conversation.php:577 +#: ../../mod/photos.php:1346 ../../mod/photos.php:1386 +#: ../../mod/photos.php:1417 ../../mod/content.php:688 +#: ../../include/conversation.php:650 msgid "This is you" msgstr "Tiu estas vi" -#: ../../mod/photos.php:1342 ../../mod/photos.php:1382 -#: ../../mod/photos.php:1413 ../../include/conversation.php:579 -#: ../../boot.php:528 +#: ../../mod/photos.php:1348 ../../mod/photos.php:1388 +#: ../../mod/photos.php:1419 ../../mod/content.php:690 +#: ../../include/conversation.php:652 ../../boot.php:565 msgid "Comment" msgstr "Komenti" -#: ../../mod/photos.php:1344 ../../mod/editpost.php:125 -#: ../../include/conversation.php:589 ../../include/conversation.php:1030 +#: ../../mod/photos.php:1350 ../../mod/editpost.php:125 +#: ../../mod/content.php:700 ../../include/conversation.php:662 +#: ../../include/conversation.php:1103 msgid "Preview" msgstr "Antaŭrigardi" -#: ../../mod/photos.php:1441 ../../mod/settings.php:618 -#: ../../mod/settings.php:707 ../../mod/group.php:168 ../../mod/admin.php:663 -#: ../../include/conversation.php:328 ../../include/conversation.php:609 +#: ../../mod/photos.php:1447 ../../mod/content.php:439 +#: ../../mod/content.php:720 ../../mod/settings.php:618 +#: ../../mod/settings.php:707 ../../mod/group.php:168 ../../mod/admin.php:665 +#: ../../include/conversation.php:401 ../../include/conversation.php:682 msgid "Delete" msgstr "Forviŝi" -#: ../../mod/photos.php:1531 +#: ../../mod/photos.php:1537 msgid "View Album" msgstr "Vidi albumon" -#: ../../mod/photos.php:1540 +#: ../../mod/photos.php:1546 msgid "Recent Photos" msgstr "̂Ĵusaj bildoj" @@ -618,7 +628,8 @@ msgstr "Ne disponebla." msgid "Community" msgstr "Komunumo" -#: ../../mod/community.php:61 ../../mod/search.php:144 +#: ../../mod/community.php:61 ../../mod/community.php:86 +#: ../../mod/search.php:146 ../../mod/search.php:172 msgid "No results." msgstr "Nenion trovita." @@ -662,28 +673,28 @@ msgstr "Elemento ne trovita" msgid "Edit post" msgstr "Redakti afiŝon" -#: ../../mod/editpost.php:80 ../../include/conversation.php:979 +#: ../../mod/editpost.php:80 ../../include/conversation.php:1052 msgid "Post to Email" msgstr "Sendi per retpoŝto" -#: ../../mod/editpost.php:95 ../../mod/settings.php:617 -#: ../../include/conversation.php:596 +#: ../../mod/editpost.php:95 ../../mod/content.php:707 +#: ../../mod/settings.php:617 ../../include/conversation.php:669 msgid "Edit" msgstr "Redakti" #: ../../mod/editpost.php:96 ../../mod/wallmessage.php:143 -#: ../../mod/message.php:213 ../../mod/message.php:408 -#: ../../include/conversation.php:994 +#: ../../mod/message.php:291 ../../mod/message.php:471 +#: ../../include/conversation.php:1067 msgid "Upload photo" msgstr "Alŝuti bildon" -#: ../../mod/editpost.php:97 ../../include/conversation.php:996 +#: ../../mod/editpost.php:97 ../../include/conversation.php:1069 msgid "Attach file" msgstr "Kunligi dosieron" #: ../../mod/editpost.php:98 ../../mod/wallmessage.php:144 -#: ../../mod/message.php:214 ../../mod/message.php:409 -#: ../../include/conversation.php:998 +#: ../../mod/message.php:292 ../../mod/message.php:472 +#: ../../include/conversation.php:1071 msgid "Insert web link" msgstr "Enmeti retan adreson" @@ -699,35 +710,35 @@ msgstr "Enmeti videton en formato Vorbis [.ogg]" msgid "Insert Vorbis [.ogg] audio" msgstr "Enmeti sonon en formato Vorbis [.ogg]" -#: ../../mod/editpost.php:102 ../../include/conversation.php:1004 +#: ../../mod/editpost.php:102 ../../include/conversation.php:1077 msgid "Set your location" msgstr "Agordi vian lokon" -#: ../../mod/editpost.php:103 ../../include/conversation.php:1006 +#: ../../mod/editpost.php:103 ../../include/conversation.php:1079 msgid "Clear browser location" msgstr "Forviŝu retesplorilan lokon" -#: ../../mod/editpost.php:105 ../../include/conversation.php:1013 +#: ../../mod/editpost.php:105 ../../include/conversation.php:1086 msgid "Permission settings" msgstr "Permesagordoj" -#: ../../mod/editpost.php:113 ../../include/conversation.php:1022 +#: ../../mod/editpost.php:113 ../../include/conversation.php:1095 msgid "CC: email addresses" msgstr "CC: retpoŝtadresojn" -#: ../../mod/editpost.php:114 ../../include/conversation.php:1023 +#: ../../mod/editpost.php:114 ../../include/conversation.php:1096 msgid "Public post" msgstr "Publika afiŝo" -#: ../../mod/editpost.php:117 ../../include/conversation.php:1009 +#: ../../mod/editpost.php:117 ../../include/conversation.php:1082 msgid "Set title" msgstr "Redakti titolon" -#: ../../mod/editpost.php:119 ../../include/conversation.php:1011 +#: ../../mod/editpost.php:119 ../../include/conversation.php:1084 msgid "Categories (comma-separated list)" msgstr "Kategorioj (disigita per komo)" -#: ../../mod/editpost.php:120 ../../include/conversation.php:1025 +#: ../../mod/editpost.php:120 ../../include/conversation.php:1098 msgid "Example: bob@example.com, mary@example.com" msgstr "Ekzemple: bob@example.com, mary@example.com" @@ -848,7 +859,7 @@ msgstr "Bonvolu konfirmi vian prezenton / kontaktpeton al %s." msgid "Confirm" msgstr "Konfirmi." -#: ../../mod/dfrn_request.php:715 ../../include/items.php:2881 +#: ../../mod/dfrn_request.php:715 ../../include/items.php:2984 msgid "[Name Withheld]" msgstr "[Kaŝita nomo]" @@ -1175,7 +1186,7 @@ msgid "" msgstr "GRAVA: Vi bezonas [mane] agordi planitan taskon por la Friendica poller." #: ../../mod/localtime.php:12 ../../include/event.php:11 -#: ../../include/bb2diaspora.php:335 +#: ../../include/bb2diaspora.php:447 msgid "l F d, Y \\@ g:i A" msgstr "l F d, Y \\@ g:i A" @@ -1221,7 +1232,7 @@ msgid "is interested in:" msgstr "interesiĝas pri:" #: ../../mod/match.php:58 ../../mod/suggest.php:59 -#: ../../include/contact_widgets.php:9 ../../boot.php:1080 +#: ../../include/contact_widgets.php:9 ../../boot.php:1117 msgid "Connect" msgstr "Konekti" @@ -1237,6 +1248,138 @@ msgstr "Informoj pri fora privateca ne estas disponebla." msgid "Visible to:" msgstr "Videbla al:" +#: ../../mod/content.php:119 ../../mod/network.php:436 +msgid "No such group" +msgstr "Grupo ne estas trovita" + +#: ../../mod/content.php:130 ../../mod/network.php:447 +msgid "Group is empty" +msgstr "Grupo estas malplena" + +#: ../../mod/content.php:134 ../../mod/network.php:451 +msgid "Group: " +msgstr "Grupo:" + +#: ../../mod/content.php:438 ../../mod/content.php:719 +#: ../../include/conversation.php:400 ../../include/conversation.php:681 +msgid "Select" +msgstr "Elekti" + +#: ../../mod/content.php:455 ../../mod/content.php:812 +#: ../../mod/content.php:813 ../../include/conversation.php:417 +#: ../../include/conversation.php:774 ../../include/conversation.php:775 +#, php-format +msgid "View %s's profile @ %s" +msgstr "Vidi la profilon de %s ĉe %s" + +#: ../../mod/content.php:465 ../../mod/content.php:824 +#: ../../include/conversation.php:427 ../../include/conversation.php:786 +#, php-format +msgid "%s from %s" +msgstr "%s de %s" + +#: ../../mod/content.php:480 ../../include/conversation.php:442 +msgid "View in context" +msgstr "Vidi kun kunteksto" + +#: ../../mod/content.php:586 ../../include/conversation.php:548 +#, php-format +msgid "%d comment" +msgid_plural "%d comments" +msgstr[0] "%d komento" +msgstr[1] "%d komentoj" + +#: ../../mod/content.php:587 ../../addon/page/page.php:76 +#: ../../addon/page/page.php:110 ../../addon/showmore/showmore.php:87 +#: ../../include/contact_widgets.php:188 ../../include/conversation.php:549 +#: ../../boot.php:566 +msgid "show more" +msgstr "montri pli" + +#: ../../mod/content.php:665 ../../include/conversation.php:627 +msgid "like" +msgstr "ŝati" + +#: ../../mod/content.php:666 ../../include/conversation.php:628 +msgid "dislike" +msgstr "malŝati" + +#: ../../mod/content.php:668 ../../include/conversation.php:630 +msgid "Share this" +msgstr "Kunhavigi ĉi tiun" + +#: ../../mod/content.php:668 ../../include/conversation.php:630 +msgid "share" +msgstr "kunhavigi" + +#: ../../mod/content.php:692 ../../include/conversation.php:654 +msgid "Bold" +msgstr "Grasa" + +#: ../../mod/content.php:693 ../../include/conversation.php:655 +msgid "Italic" +msgstr "Kursiva" + +#: ../../mod/content.php:694 ../../include/conversation.php:656 +msgid "Underline" +msgstr "Substreki" + +#: ../../mod/content.php:695 ../../include/conversation.php:657 +msgid "Quote" +msgstr "Citaĵo" + +#: ../../mod/content.php:696 ../../include/conversation.php:658 +msgid "Code" +msgstr "Kodo" + +#: ../../mod/content.php:697 ../../include/conversation.php:659 +msgid "Image" +msgstr "Bildo" + +#: ../../mod/content.php:698 ../../include/conversation.php:660 +msgid "Link" +msgstr "Ligilo" + +#: ../../mod/content.php:699 ../../include/conversation.php:661 +msgid "Video" +msgstr "Video" + +#: ../../mod/content.php:732 ../../include/conversation.php:694 +msgid "add star" +msgstr "aldoni stelon" + +#: ../../mod/content.php:733 ../../include/conversation.php:695 +msgid "remove star" +msgstr "forpreni stelon" + +#: ../../mod/content.php:734 ../../include/conversation.php:696 +msgid "toggle star status" +msgstr "ŝalti/malŝalti steloŝtato" + +#: ../../mod/content.php:737 ../../include/conversation.php:699 +msgid "starred" +msgstr "steligita" + +#: ../../mod/content.php:738 ../../include/conversation.php:700 +msgid "add tag" +msgstr "aldoni markon" + +#: ../../mod/content.php:742 ../../include/conversation.php:704 +msgid "save to folder" +msgstr "konservi en dosierujo" + +#: ../../mod/content.php:814 ../../include/conversation.php:776 +msgid "to" +msgstr "al" + +#: ../../mod/content.php:815 ../../include/conversation.php:777 +msgid "Wall-to-Wall" +msgstr "Muro-al-Muro" + +#: ../../mod/content.php:816 ../../include/conversation.php:778 +msgid "via Wall-To-Wall:" +msgstr "per Muro-al-Muro:" + #: ../../mod/home.php:26 ../../addon/communityhome/communityhome.php:179 #, php-format msgid "Welcome to %s" @@ -1278,7 +1421,7 @@ msgstr "Hejmo" msgid "Introductions" msgstr "Prezentoj" -#: ../../mod/notifications.php:100 ../../mod/message.php:105 +#: ../../mod/notifications.php:100 ../../mod/message.php:183 #: ../../include/nav.php:128 msgid "Messages" msgstr "Mesaĝoj" @@ -1318,7 +1461,7 @@ msgid "if applicable" msgstr "se aplikebla" #: ../../mod/notifications.php:157 ../../mod/notifications.php:204 -#: ../../mod/admin.php:661 +#: ../../mod/admin.php:663 msgid "Approve" msgstr "Aprobi" @@ -1519,12 +1662,12 @@ msgid "View all contacts" msgstr "Vidi ĉiujn kontaktojn" #: ../../mod/contacts.php:310 ../../mod/contacts.php:369 -#: ../../mod/admin.php:665 +#: ../../mod/admin.php:667 msgid "Unblock" msgstr "Malbloki" #: ../../mod/contacts.php:310 ../../mod/contacts.php:369 -#: ../../mod/admin.php:664 +#: ../../mod/admin.php:666 msgid "Block" msgstr "Bloki" @@ -1621,7 +1764,7 @@ msgstr "Plej ĵusa ĝisdatigo:" msgid "Update public posts" msgstr "Ĝisdatigi publikajn afiŝojn" -#: ../../mod/contacts.php:366 ../../mod/admin.php:1136 +#: ../../mod/contacts.php:366 ../../mod/admin.php:1138 msgid "Update now" msgstr "Ĝisdatigi nun" @@ -1748,11 +1891,11 @@ msgstr "Pasvorta riparado petita je %s" #: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107 #: ../../mod/register.php:90 ../../mod/register.php:144 #: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752 -#: ../../addon/facebook/facebook.php:700 -#: ../../addon/facebook/facebook.php:1190 +#: ../../addon/facebook/facebook.php:702 +#: ../../addon/facebook/facebook.php:1192 #: ../../addon/public_server/public_server.php:62 -#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2890 -#: ../../boot.php:730 +#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2993 +#: ../../boot.php:767 msgid "Administrator" msgstr "Administranto" @@ -1762,7 +1905,7 @@ msgid "" "Password reset failed." msgstr "Ne povis konfirmi la peton. (Eble vi sendis ĝin antaŭ.) Pasvorta riparado malsukcesis." -#: ../../mod/lostpass.php:83 ../../boot.php:862 +#: ../../mod/lostpass.php:83 ../../boot.php:899 msgid "Password Reset" msgstr "Pasvorta riparado" @@ -1834,7 +1977,7 @@ msgstr "Eksporto" msgid "Remove account" msgstr "Forigi konton" -#: ../../mod/settings.php:89 ../../mod/admin.php:751 ../../mod/admin.php:956 +#: ../../mod/settings.php:89 ../../mod/admin.php:753 ../../mod/admin.php:958 #: ../../addon/dav/layout.fnk.php:116 ../../addon/mathjax/mathjax.php:36 #: ../../view/theme/diabook/theme.php:643 #: ../../view/theme/diabook/theme.php:773 ../../include/nav.php:137 @@ -1897,7 +2040,7 @@ msgstr "Privata forumo ne havas privatecajn agordojn. Defaŭlta privateca grupo msgid "Private forum has no privacy permissions and no default privacy group." msgstr "Privata forumo havas nek privatecajn agordojn nek defaŭltan privatecan grupon." -#: ../../mod/settings.php:484 ../../addon/facebook/facebook.php:493 +#: ../../mod/settings.php:484 ../../addon/facebook/facebook.php:495 #: ../../addon/impressum/impressum.php:77 #: ../../addon/openstreetmap/openstreetmap.php:80 #: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105 @@ -2156,7 +2299,7 @@ msgstr "Permesigi nekonatulojn sendi retpoŝton al vi?" msgid "Profile is <strong>not published</strong>." msgstr "Profilo <strong>ne estas publika</strong>." -#: ../../mod/settings.php:939 ../../mod/profile_photo.php:213 +#: ../../mod/settings.php:939 ../../mod/profile_photo.php:214 msgid "or" msgstr "aŭ" @@ -2414,18 +2557,6 @@ msgstr[1] "Averto: La grupo enhavas %s membrojn el nesekuraj retejoj." msgid "Private messages to this group are at risk of public disclosure." msgstr "La privateco de privataj mesaĝoj al ĉi tiu grupo ne ĉiam estas garantita." -#: ../../mod/network.php:436 -msgid "No such group" -msgstr "Grupo ne estas trovita" - -#: ../../mod/network.php:447 -msgid "Group is empty" -msgstr "Grupo estas malplena" - -#: ../../mod/network.php:451 -msgid "Group: " -msgstr "Grupo:" - #: ../../mod/network.php:461 msgid "Contact: " msgstr "Kontakto:" @@ -2438,14 +2569,14 @@ msgstr "La privateco de privataj mesaĝoj al ĉi tiu persono ne ĉiam estas gara msgid "Invalid contact." msgstr "Nevalida kontakto." -#: ../../mod/notes.php:44 ../../boot.php:1565 +#: ../../mod/notes.php:44 ../../boot.php:1602 msgid "Personal Notes" msgstr "Personaj Notoj" #: ../../mod/notes.php:63 ../../mod/filer.php:30 -#: ../../addon/facebook/facebook.php:768 +#: ../../addon/facebook/facebook.php:770 #: ../../addon/privacy_image_cache/privacy_image_cache.php:187 -#: ../../addon/dav/layout.fnk.php:384 ../../include/text.php:652 +#: ../../addon/dav/layout.fnk.php:384 ../../include/text.php:677 msgid "Save" msgstr "Konservi" @@ -2478,12 +2609,12 @@ msgstr "Mesaĝo estas sendita." msgid "No recipient." msgstr "Neniom da ricevontoj." -#: ../../mod/wallmessage.php:124 ../../mod/message.php:172 -#: ../../include/conversation.php:947 +#: ../../mod/wallmessage.php:124 ../../mod/message.php:250 +#: ../../include/conversation.php:1020 msgid "Please enter a link URL:" msgstr "Bonvolu entajpu adreson de ligilo:" -#: ../../mod/wallmessage.php:131 ../../mod/message.php:200 +#: ../../mod/wallmessage.php:131 ../../mod/message.php:278 msgid "Send Private Message" msgstr "Sendi Privatan Mesaĝon" @@ -2494,18 +2625,18 @@ msgid "" "your site allow private mail from unknown senders." msgstr "Se vi deziras ke %s respondu, bonvolu kontroli ke la privatecaj agordoj je via retejo permesas privatajn mesaĝojn de nekonataj sendantoj." -#: ../../mod/wallmessage.php:133 ../../mod/message.php:201 -#: ../../mod/message.php:399 +#: ../../mod/wallmessage.php:133 ../../mod/message.php:279 +#: ../../mod/message.php:462 msgid "To:" msgstr "Al:" -#: ../../mod/wallmessage.php:134 ../../mod/message.php:206 -#: ../../mod/message.php:401 +#: ../../mod/wallmessage.php:134 ../../mod/message.php:284 +#: ../../mod/message.php:464 msgid "Subject:" msgstr "Temo:" -#: ../../mod/wallmessage.php:140 ../../mod/message.php:210 -#: ../../mod/message.php:404 ../../mod/invite.php:113 +#: ../../mod/wallmessage.php:140 ../../mod/message.php:288 +#: ../../mod/message.php:467 ../../mod/invite.php:113 msgid "Your message:" msgstr "Via mesaĝo:" @@ -2689,7 +2820,7 @@ msgstr "Redaktilo por profila videbleco." #: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128 #: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:84 -#: ../../include/nav.php:50 ../../boot.php:1544 +#: ../../include/nav.php:50 ../../boot.php:1581 msgid "Profile" msgstr "Profilo" @@ -2705,7 +2836,7 @@ msgstr "Ĉiuj Kontaktoj (kun sekura atingo al la profilo)" msgid "No contacts." msgstr "Neniu kontaktojn." -#: ../../mod/viewcontacts.php:76 ../../include/text.php:589 +#: ../../mod/viewcontacts.php:76 ../../include/text.php:614 msgid "View Contacts" msgstr "Vidi Kontaktojn" @@ -2770,7 +2901,7 @@ msgstr "Membriĝi ĉi tie nur eblas laŭ invito." msgid "Your invitation ID: " msgstr "Via invita idento: " -#: ../../mod/register.php:255 ../../mod/admin.php:421 +#: ../../mod/register.php:255 ../../mod/admin.php:423 msgid "Registration" msgstr "Registrado" @@ -2793,7 +2924,7 @@ msgstr "Elektu kaŝnomon por la profilo. Tiu bezonas komenci kun teksta litero. msgid "Choose a nickname: " msgstr "Elektu kaŝnomon: " -#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:828 +#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:865 msgid "Register" msgstr "Registri" @@ -2801,33 +2932,33 @@ msgstr "Registri" msgid "People Search" msgstr "Serĉi Membrojn" -#: ../../mod/like.php:144 ../../mod/like.php:301 ../../mod/tagger.php:70 -#: ../../addon/facebook/facebook.php:1584 +#: ../../mod/like.php:145 ../../mod/like.php:298 ../../mod/tagger.php:70 +#: ../../addon/facebook/facebook.php:1586 #: ../../addon/communityhome/communityhome.php:158 #: ../../addon/communityhome/communityhome.php:167 #: ../../view/theme/diabook/theme.php:565 -#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1710 -#: ../../include/conversation.php:48 ../../include/conversation.php:57 -#: ../../include/conversation.php:121 ../../include/conversation.php:130 +#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1793 +#: ../../include/conversation.php:109 ../../include/conversation.php:118 +#: ../../include/conversation.php:182 ../../include/conversation.php:191 msgid "status" msgstr "staton" -#: ../../mod/like.php:161 ../../addon/facebook/facebook.php:1588 +#: ../../mod/like.php:162 ../../addon/facebook/facebook.php:1590 #: ../../addon/communityhome/communityhome.php:172 -#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1726 -#: ../../include/conversation.php:65 +#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1809 +#: ../../include/conversation.php:126 #, php-format msgid "%1$s likes %2$s's %3$s" msgstr "%1$s ŝatas la %3$s de %2$s" -#: ../../mod/like.php:163 ../../include/conversation.php:68 +#: ../../mod/like.php:164 ../../include/conversation.php:129 #, php-format msgid "%1$s doesn't like %2$s's %3$s" msgstr "%1$s malŝatas la %3$s de %2$s" #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159 -#: ../../mod/admin.php:700 ../../mod/admin.php:899 ../../mod/display.php:37 -#: ../../mod/display.php:142 ../../include/items.php:3334 +#: ../../mod/admin.php:702 ../../mod/admin.php:901 ../../mod/display.php:37 +#: ../../mod/display.php:142 ../../include/items.php:3472 msgid "Item not found." msgstr "Elemento ne estas trovita." @@ -2836,7 +2967,7 @@ msgid "Access denied." msgstr "Atingo nepermesita." #: ../../mod/fbrowser.php:25 ../../view/theme/diabook/theme.php:130 -#: ../../include/nav.php:51 ../../boot.php:1550 +#: ../../include/nav.php:51 ../../boot.php:1587 msgid "Photos" msgstr "Bildoj" @@ -2857,43 +2988,43 @@ msgstr "Registraĵo por %s senvalidigita." msgid "Please login." msgstr "Bonvolu ensaluti." -#: ../../mod/item.php:89 +#: ../../mod/item.php:90 msgid "Unable to locate original post." msgstr "Ne eblas trovi originalan afiŝon." -#: ../../mod/item.php:258 +#: ../../mod/item.php:274 msgid "Empty post discarded." msgstr "Forviŝis malplenan afiŝon." -#: ../../mod/item.php:379 ../../mod/wall_upload.php:115 -#: ../../mod/wall_upload.php:124 ../../mod/wall_upload.php:131 +#: ../../mod/item.php:395 ../../mod/wall_upload.php:122 +#: ../../mod/wall_upload.php:131 ../../mod/wall_upload.php:138 #: ../../include/message.php:144 msgid "Wall Photos" msgstr "Muraj Bildoj" -#: ../../mod/item.php:784 +#: ../../mod/item.php:800 msgid "System error. Post not saved." msgstr "Sistema eraro. Afiŝo ne registrita." -#: ../../mod/item.php:809 +#: ../../mod/item.php:825 #, php-format msgid "" "This message was sent to you by %s, a member of the Friendica social " "network." msgstr "Ĉi mesaĝo estas sendita al vi de %s, membro de la Friendica interkona reto." -#: ../../mod/item.php:811 +#: ../../mod/item.php:827 #, php-format msgid "You may visit them online at %s" msgstr "Vi povas viziti ilin rete ĉe %s" -#: ../../mod/item.php:812 +#: ../../mod/item.php:828 msgid "" "Please contact the sender by replying to this post if you do not wish to " "receive these messages." msgstr "Bonvolu rispondi al ĉi mesaĝo kaj kontaktu la sendinto se vi ne volas ricevi tiujn mesaĝojn." -#: ../../mod/item.php:814 +#: ../../mod/item.php:830 #, php-format msgid "%s posted an update." msgstr "%s publikigis afiŝon." @@ -2903,7 +3034,7 @@ msgid "Image uploaded but image cropping failed." msgstr "Bildo estas alŝutita, sed malsukcesis tranĉi la bildon." #: ../../mod/profile_photo.php:63 ../../mod/profile_photo.php:70 -#: ../../mod/profile_photo.php:77 ../../mod/profile_photo.php:266 +#: ../../mod/profile_photo.php:77 ../../mod/profile_photo.php:273 #, php-format msgid "Image size reduction [%s] failed." msgstr "Malsukcesis malpligrandigi [%s] la bildon." @@ -2923,39 +3054,39 @@ msgstr "Ne eblas procezi bildon." msgid "Image exceeds size limit of %d" msgstr "Bildo estas pli granda ol la limito %d" -#: ../../mod/profile_photo.php:209 +#: ../../mod/profile_photo.php:210 msgid "Upload File:" msgstr "Alŝuti dosieron:" -#: ../../mod/profile_photo.php:210 +#: ../../mod/profile_photo.php:211 msgid "Upload Profile Photo" msgstr "Alŝuti profilbildon" -#: ../../mod/profile_photo.php:211 +#: ../../mod/profile_photo.php:212 msgid "Upload" msgstr "Alŝuti" -#: ../../mod/profile_photo.php:213 +#: ../../mod/profile_photo.php:214 msgid "skip this step" msgstr "Preterpasi tian paŝon" -#: ../../mod/profile_photo.php:213 +#: ../../mod/profile_photo.php:214 msgid "select a photo from your photo albums" msgstr "elekti bildon el viaj albumoj" -#: ../../mod/profile_photo.php:226 +#: ../../mod/profile_photo.php:227 msgid "Crop Image" msgstr "Stuci Bildon" -#: ../../mod/profile_photo.php:227 +#: ../../mod/profile_photo.php:228 msgid "Please adjust the image cropping for optimum viewing." msgstr "Bonvolu agordi la stuco de la bildo por optimuma aspekto." -#: ../../mod/profile_photo.php:229 +#: ../../mod/profile_photo.php:230 msgid "Done Editing" msgstr "Finigi Redaktado" -#: ../../mod/profile_photo.php:257 +#: ../../mod/profile_photo.php:264 msgid "Image uploaded successfully." msgstr "Bildo estas sukcese enŝutita." @@ -2985,63 +3116,63 @@ msgstr "Nova Mesaĝo" msgid "Unable to locate contact information." msgstr "Ne eblas trovi kontaktajn informojn." -#: ../../mod/message.php:120 +#: ../../mod/message.php:198 msgid "Message deleted." msgstr "Mesaĝo estas forviŝita." -#: ../../mod/message.php:150 +#: ../../mod/message.php:228 msgid "Conversation removed." msgstr "Dialogo estas forviŝita." -#: ../../mod/message.php:247 +#: ../../mod/message.php:327 msgid "No messages." msgstr "Neniom da mesaĝoj." -#: ../../mod/message.php:254 +#: ../../mod/message.php:334 #, php-format msgid "Unknown sender - %s" msgstr "Nekonata sendanto - %s" -#: ../../mod/message.php:257 +#: ../../mod/message.php:337 #, php-format msgid "You and %s" msgstr "Vi kaj %s" -#: ../../mod/message.php:260 +#: ../../mod/message.php:340 #, php-format msgid "%s and You" msgstr "%s kaj vi" -#: ../../mod/message.php:270 ../../mod/message.php:392 +#: ../../mod/message.php:350 ../../mod/message.php:455 msgid "Delete conversation" msgstr "Forviŝi dialogon" -#: ../../mod/message.php:273 +#: ../../mod/message.php:353 msgid "D, d M Y - g:i A" msgstr "D, d M Y - g:i A" -#: ../../mod/message.php:275 +#: ../../mod/message.php:355 #, php-format msgid "%d message" msgid_plural "%d messages" msgstr[0] "%d mesaĝo" msgstr[1] "%d mesaĝoj" -#: ../../mod/message.php:310 +#: ../../mod/message.php:390 msgid "Message not available." msgstr "Mesaĝo nedisponebla." -#: ../../mod/message.php:375 +#: ../../mod/message.php:438 msgid "Delete message" msgstr "Forviŝu mesaĝon" -#: ../../mod/message.php:394 +#: ../../mod/message.php:457 msgid "" "No secure communications available. You <strong>may</strong> be able to " "respond from the sender's profile page." msgstr "Sekura komunikado ne disponeblas. Vi <strong>eble</strong> povus respondi sur la profilpaĝo de la sendanto." -#: ../../mod/message.php:398 +#: ../../mod/message.php:461 msgid "Send Reply" msgstr "Respondi" @@ -3058,19 +3189,19 @@ msgstr "Neniom da amiko al montri." msgid "Theme settings updated." msgstr "Gisdatigis agordojn pri etosoj." -#: ../../mod/admin.php:96 ../../mod/admin.php:419 +#: ../../mod/admin.php:96 ../../mod/admin.php:421 msgid "Site" msgstr "Retejo" -#: ../../mod/admin.php:97 ../../mod/admin.php:655 ../../mod/admin.php:667 +#: ../../mod/admin.php:97 ../../mod/admin.php:657 ../../mod/admin.php:669 msgid "Users" msgstr "Uzantoj" -#: ../../mod/admin.php:98 ../../mod/admin.php:749 ../../mod/admin.php:791 +#: ../../mod/admin.php:98 ../../mod/admin.php:751 ../../mod/admin.php:793 msgid "Plugins" msgstr "Kromprogramoj" -#: ../../mod/admin.php:99 ../../mod/admin.php:954 ../../mod/admin.php:990 +#: ../../mod/admin.php:99 ../../mod/admin.php:956 ../../mod/admin.php:992 msgid "Themes" msgstr "Etosoj" @@ -3078,7 +3209,7 @@ msgstr "Etosoj" msgid "DB updates" msgstr "DB ĝisdatigoj" -#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1077 +#: ../../mod/admin.php:115 ../../mod/admin.php:122 ../../mod/admin.php:1079 msgid "Logs" msgstr "Protokoloj" @@ -3094,553 +3225,561 @@ msgstr "Kromprogramaj Trajtoj" msgid "User registrations waiting for confirmation" msgstr "Uzantaj registradoj atendante konfirmon" -#: ../../mod/admin.php:183 ../../mod/admin.php:637 +#: ../../mod/admin.php:183 ../../mod/admin.php:639 msgid "Normal Account" msgstr "Normala konto" -#: ../../mod/admin.php:184 ../../mod/admin.php:638 +#: ../../mod/admin.php:184 ../../mod/admin.php:640 msgid "Soapbox Account" msgstr "Soapbox Konto" -#: ../../mod/admin.php:185 ../../mod/admin.php:639 +#: ../../mod/admin.php:185 ../../mod/admin.php:641 msgid "Community/Celebrity Account" msgstr "Komunuma/eminentula Konto" -#: ../../mod/admin.php:186 ../../mod/admin.php:640 +#: ../../mod/admin.php:186 ../../mod/admin.php:642 msgid "Automatic Friend Account" msgstr "Aŭtomata Amika Konto" -#: ../../mod/admin.php:205 +#: ../../mod/admin.php:187 +msgid "Blog Account" +msgstr "Blogkonto" + +#: ../../mod/admin.php:188 +msgid "Private Forum" +msgstr "Privata Forumo" + +#: ../../mod/admin.php:207 msgid "Message queues" msgstr "Mesaĝvicoj" -#: ../../mod/admin.php:210 ../../mod/admin.php:418 ../../mod/admin.php:654 -#: ../../mod/admin.php:748 ../../mod/admin.php:790 ../../mod/admin.php:953 -#: ../../mod/admin.php:989 ../../mod/admin.php:1076 +#: ../../mod/admin.php:212 ../../mod/admin.php:420 ../../mod/admin.php:656 +#: ../../mod/admin.php:750 ../../mod/admin.php:792 ../../mod/admin.php:955 +#: ../../mod/admin.php:991 ../../mod/admin.php:1078 msgid "Administration" msgstr "Administrado" -#: ../../mod/admin.php:211 +#: ../../mod/admin.php:213 msgid "Summary" msgstr "Resumo" -#: ../../mod/admin.php:213 +#: ../../mod/admin.php:215 msgid "Registered users" msgstr "Registrataj uzantoj" -#: ../../mod/admin.php:215 +#: ../../mod/admin.php:217 msgid "Pending registrations" msgstr "Okazontaj registradoj" -#: ../../mod/admin.php:216 +#: ../../mod/admin.php:218 msgid "Version" msgstr "Versio" -#: ../../mod/admin.php:218 +#: ../../mod/admin.php:220 msgid "Active plugins" msgstr "Ŝaltitaj kromprogramoj" -#: ../../mod/admin.php:357 +#: ../../mod/admin.php:359 msgid "Site settings updated." msgstr "Ĝisdatigis retejaj agordoj." -#: ../../mod/admin.php:405 +#: ../../mod/admin.php:407 msgid "Closed" msgstr "Ferma" -#: ../../mod/admin.php:406 +#: ../../mod/admin.php:408 msgid "Requires approval" msgstr "Bezonas aprobon" -#: ../../mod/admin.php:407 +#: ../../mod/admin.php:409 msgid "Open" msgstr "Malferma" -#: ../../mod/admin.php:411 +#: ../../mod/admin.php:413 msgid "No SSL policy, links will track page SSL state" msgstr "Sen SSL strategio. Ligiloj sekvos la SSL staton de la paĝo." -#: ../../mod/admin.php:412 +#: ../../mod/admin.php:414 msgid "Force all links to use SSL" msgstr "Devigi ke ĉiuj ligiloj uzu SSL." -#: ../../mod/admin.php:413 +#: ../../mod/admin.php:415 msgid "Self-signed certificate, use SSL for local links only (discouraged)" msgstr "Memsubskribita atestilo, nur uzu SSL por lokaj ligiloj (malkuraĝigata)" -#: ../../mod/admin.php:422 +#: ../../mod/admin.php:424 msgid "File upload" msgstr "Alŝuto" -#: ../../mod/admin.php:423 +#: ../../mod/admin.php:425 msgid "Policies" msgstr "Politiko" -#: ../../mod/admin.php:424 +#: ../../mod/admin.php:426 msgid "Advanced" msgstr "Altnivela" -#: ../../mod/admin.php:428 ../../addon/statusnet/statusnet.php:558 +#: ../../mod/admin.php:430 ../../addon/statusnet/statusnet.php:558 msgid "Site name" msgstr "Nomo de retejo" -#: ../../mod/admin.php:429 +#: ../../mod/admin.php:431 msgid "Banner/Logo" msgstr "Emblemo" -#: ../../mod/admin.php:430 +#: ../../mod/admin.php:432 msgid "System language" msgstr "Sistema lingvo" -#: ../../mod/admin.php:431 +#: ../../mod/admin.php:433 msgid "System theme" msgstr "Sistema etoso" -#: ../../mod/admin.php:431 +#: ../../mod/admin.php:433 msgid "" "Default system theme - may be over-ridden by user profiles - <a href='#' " "id='cnftheme'>change theme settings</a>" msgstr "Defaŭlta sistema etoso - transpasebla de uzantprofiloj - <a href='#' id='cnftheme'>redakti agordoj pri etosoj</a>" -#: ../../mod/admin.php:432 +#: ../../mod/admin.php:434 msgid "SSL link policy" msgstr "Strategio por SSL ligiloj" -#: ../../mod/admin.php:432 +#: ../../mod/admin.php:434 msgid "Determines whether generated links should be forced to use SSL" msgstr "Difinas ĉu generotaj ligiloj devige uzu SSL." -#: ../../mod/admin.php:433 +#: ../../mod/admin.php:435 msgid "Maximum image size" msgstr "Maksimuma bildgrando" -#: ../../mod/admin.php:433 +#: ../../mod/admin.php:435 msgid "" "Maximum size in bytes of uploaded images. Default is 0, which means no " "limits." msgstr "Maksimuma grando en bajtoj por alŝutotaj bildoj. Defaŭlte 0, kio signifas neniu limito." -#: ../../mod/admin.php:435 +#: ../../mod/admin.php:437 msgid "Register policy" msgstr "Interkonsento pri registrado" -#: ../../mod/admin.php:436 +#: ../../mod/admin.php:438 msgid "Register text" msgstr "Interkonsento teksto" -#: ../../mod/admin.php:436 +#: ../../mod/admin.php:438 msgid "Will be displayed prominently on the registration page." msgstr "Tio estos eminente montrata en la registro paĝo." -#: ../../mod/admin.php:437 +#: ../../mod/admin.php:439 msgid "Accounts abandoned after x days" msgstr "Kontoj forlasitaj post x tagoj" -#: ../../mod/admin.php:437 +#: ../../mod/admin.php:439 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "Mi ne malŝparu energion por enketi aliajn retejojn pri forlasitaj kontoj. Entajpu 0 por ne uzi templimo." -#: ../../mod/admin.php:438 +#: ../../mod/admin.php:440 msgid "Allowed friend domains" msgstr "Permesitaj amikaj domainoj" -#: ../../mod/admin.php:438 +#: ../../mod/admin.php:440 msgid "" "Comma separated list of domains which are allowed to establish friendships " "with this site. Wildcards are accepted. Empty to allow any domains" msgstr "Perkome disigita listo da domajnoj kiuj rajtas konstrui amikecojn kun ĉi tiu retejo. Ĵokeroj eblas. Malplena por rajtigi ĉiujn ajn domajnojn." -#: ../../mod/admin.php:439 +#: ../../mod/admin.php:441 msgid "Allowed email domains" msgstr "Permesitaj retpoŝtaj domajnoj" -#: ../../mod/admin.php:439 +#: ../../mod/admin.php:441 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 "Perkome disigita listo da domajnoj kiuj uzeblas kiel retpoŝtaj adresoj en novaj registradoj. Ĵokeroj eblas. Malplena por rajtigi ĉiujn ajn domajnojn." -#: ../../mod/admin.php:440 +#: ../../mod/admin.php:442 msgid "Block public" msgstr "Bloki publike" -#: ../../mod/admin.php:440 +#: ../../mod/admin.php:442 msgid "" "Check to block public access to all otherwise public personal pages on this " "site unless you are currently logged in." msgstr "Elektu por bloki publikan atingon al ĉiuj alie publikajn paĝojn en ĉi tiu retejo kiam vi ne estas ensalutita." -#: ../../mod/admin.php:441 +#: ../../mod/admin.php:443 msgid "Force publish" msgstr "Devigi publikigon" -#: ../../mod/admin.php:441 +#: ../../mod/admin.php:443 msgid "" "Check to force all profiles on this site to be listed in the site directory." msgstr "Elektu por devigi la registradon en la loka katalogo al ĉiuj profiloj en ĉi tiu retejo." -#: ../../mod/admin.php:442 +#: ../../mod/admin.php:444 msgid "Global directory update URL" msgstr "Ĝenerala adreso por ĝisdatigi la katalogon" -#: ../../mod/admin.php:442 +#: ../../mod/admin.php:444 msgid "" "URL to update the global directory. If this is not set, the global directory" " is completely unavailable to the application." msgstr "URL adreso por ĝisdatigi la tutmondan katalogon. Se ne agordita, la tutmonda katatolge tute ne disponeblas al la programo." -#: ../../mod/admin.php:444 +#: ../../mod/admin.php:446 msgid "Block multiple registrations" msgstr "Bloki pluroblajn registradojn." -#: ../../mod/admin.php:444 +#: ../../mod/admin.php:446 msgid "Disallow users to register additional accounts for use as pages." msgstr "Malpermesi al uzantoj la permeson por registri pluajn kontojn kiel paĝoj." -#: ../../mod/admin.php:445 +#: ../../mod/admin.php:447 msgid "OpenID support" msgstr "Subteno por OpenID" -#: ../../mod/admin.php:445 +#: ../../mod/admin.php:447 msgid "OpenID support for registration and logins." msgstr "Subteni OpenID por registrado kaj ensaluto." -#: ../../mod/admin.php:446 +#: ../../mod/admin.php:448 msgid "Fullname check" msgstr "Kontroli plenan nomon" -#: ../../mod/admin.php:446 +#: ../../mod/admin.php:448 msgid "" "Force users to register with a space between firstname and lastname in Full " "name, as an antispam measure" msgstr "Kiel kontraŭspamilo, devigi uzantoj al registrado kun spaceto inter la persona nomo kaj la familia nomo." -#: ../../mod/admin.php:447 +#: ../../mod/admin.php:449 msgid "UTF-8 Regular expressions" msgstr "UTF-8 regulaj exprimoj" -#: ../../mod/admin.php:447 +#: ../../mod/admin.php:449 msgid "Use PHP UTF8 regular expressions" msgstr "Uzi PHP UTF8 regulajn esprimojn." -#: ../../mod/admin.php:448 +#: ../../mod/admin.php:450 msgid "Show Community Page" msgstr "Montri Komunuma Paĝo" -#: ../../mod/admin.php:448 +#: ../../mod/admin.php:450 msgid "" "Display a Community page showing all recent public postings on this site." msgstr "Montri komunuma paĝo kun ĉiuj ĵusaj afiŝoj en ĉi tiu retejo." -#: ../../mod/admin.php:449 +#: ../../mod/admin.php:451 msgid "Enable OStatus support" msgstr "Ŝalti subtenon por OStatus" -#: ../../mod/admin.php:449 +#: ../../mod/admin.php:451 msgid "" "Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All " "communications in OStatus are public, so privacy warnings will be " "occasionally displayed." msgstr "Provizi integritan OStatus (identi.ca, status.net ktp) subtenon. Ĉiuj komunikadoj en OStatus estas publikaj, do privatecaj avertoj aperos de tempo al tempo." -#: ../../mod/admin.php:450 +#: ../../mod/admin.php:452 msgid "Enable Diaspora support" msgstr "Ŝalti subtenon por Diaspora" -#: ../../mod/admin.php:450 +#: ../../mod/admin.php:452 msgid "Provide built-in Diaspora network compatibility." msgstr "Provizi integritan Diaspora subtenon." -#: ../../mod/admin.php:451 +#: ../../mod/admin.php:453 msgid "Only allow Friendica contacts" msgstr "Nur permesigi Friendica kontaktojn" -#: ../../mod/admin.php:451 +#: ../../mod/admin.php:453 msgid "" "All contacts must use Friendica protocols. All other built-in communication " "protocols disabled." msgstr "Ĉiuj kontaktoj devas uzi Friendica protokolojn. Ĉiuj aliaj komunikaj protokoloj malaktivita." -#: ../../mod/admin.php:452 +#: ../../mod/admin.php:454 msgid "Verify SSL" msgstr "Kontroli SSL" -#: ../../mod/admin.php:452 +#: ../../mod/admin.php:454 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 "Se vi deziras, vi povas aktivigi severan kontroladon de SSL atestiloj. Pro tio, vie (tute) ne eblos konekti al SSL retejoj kun memsubskribitaj atestiloj." -#: ../../mod/admin.php:453 +#: ../../mod/admin.php:455 msgid "Proxy user" msgstr "Uzantnomo por retperanto" -#: ../../mod/admin.php:454 +#: ../../mod/admin.php:456 msgid "Proxy URL" msgstr "URL adreso de retperanto" -#: ../../mod/admin.php:455 +#: ../../mod/admin.php:457 msgid "Network timeout" msgstr "Reta tempolimo" -#: ../../mod/admin.php:455 +#: ../../mod/admin.php:457 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." msgstr "Valoro en sekundoj. Uzu 0 por mallimitigi (ne rekomendata)." -#: ../../mod/admin.php:456 +#: ../../mod/admin.php:458 msgid "Delivery interval" msgstr "Intervalo de liverado" -#: ../../mod/admin.php:456 +#: ../../mod/admin.php:458 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 "Malfruigi fonan liveradon dum tiom da sekundoj por malpliigi la ŝargon de la sistemo. Rekomendoj: 4-5 por komunaj serviloj, 2-3 por virtualaj privataj serviloj, 0-1 por grandaj dediĉitaj serviloj." -#: ../../mod/admin.php:457 +#: ../../mod/admin.php:459 msgid "Poll interval" msgstr "Enketintervalo" -#: ../../mod/admin.php:457 +#: ../../mod/admin.php:459 msgid "" "Delay background polling processes by this many seconds to reduce system " "load. If 0, use delivery interval." msgstr "Malfruigi fonajn enketprocesojn je tiom da sekundoj por malpliigi la ŝargon de la sistemo. Se 0, uzas la liverintervalon." -#: ../../mod/admin.php:458 +#: ../../mod/admin.php:460 msgid "Maximum Load Average" msgstr "Maksimuma Meza Sistemŝargo" -#: ../../mod/admin.php:458 +#: ../../mod/admin.php:460 msgid "" "Maximum system load before delivery and poll processes are deferred - " "default 50." msgstr "Maksimuma sistemŝargo post kiu livero- kaj enketprocesoj estos prokrastinataj. - Defaŭlte 50." -#: ../../mod/admin.php:472 +#: ../../mod/admin.php:474 msgid "Update has been marked successful" msgstr "Ĝisdatigo estas markita sukcesa" -#: ../../mod/admin.php:482 +#: ../../mod/admin.php:484 #, php-format msgid "Executing %s failed. Check system logs." msgstr "Ne sukcesis plenumi %s. Kontrolu la sistemprotokolojn." -#: ../../mod/admin.php:485 +#: ../../mod/admin.php:487 #, php-format msgid "Update %s was successfully applied." msgstr "Sukcese aplikis la ĝisdatigo %s." -#: ../../mod/admin.php:489 +#: ../../mod/admin.php:491 #, php-format msgid "Update %s did not return a status. Unknown if it succeeded." msgstr "Ĝisdatigo %s ne liveris elirstaton. " -#: ../../mod/admin.php:492 +#: ../../mod/admin.php:494 #, php-format msgid "Update function %s could not be found." msgstr "Ne troveblas ĝisdatigo funkcio %s." -#: ../../mod/admin.php:507 +#: ../../mod/admin.php:509 msgid "No failed updates." msgstr "Neniom da malsukcesaj ĝisdatigoj." -#: ../../mod/admin.php:511 +#: ../../mod/admin.php:513 msgid "Failed Updates" msgstr "Malsukcesaj Ĝisdatigoj" -#: ../../mod/admin.php:512 +#: ../../mod/admin.php:514 msgid "" "This does not include updates prior to 1139, which did not return a status." msgstr "Ne inkluzivas ĝisdatigojn antaŭ 1139, kiuj ne liveris elirstaton." -#: ../../mod/admin.php:513 +#: ../../mod/admin.php:515 msgid "Mark success (if update was manually applied)" msgstr "Marki sukcesa (se la ĝisdatigo estas instalita mane)" -#: ../../mod/admin.php:514 +#: ../../mod/admin.php:516 msgid "Attempt to execute this update step automatically" msgstr "Provi automate plenumi ĉi tian paŝon de la ĝisdatigo." -#: ../../mod/admin.php:539 +#: ../../mod/admin.php:541 #, php-format msgid "%s user blocked/unblocked" msgid_plural "%s users blocked/unblocked" msgstr[0] "Blokis/malblokis %s uzanton" msgstr[1] "Blokis/malblokis %s uzantojn" -#: ../../mod/admin.php:546 +#: ../../mod/admin.php:548 #, php-format msgid "%s user deleted" msgid_plural "%s users deleted" msgstr[0] "%s uzanto forviŝita" msgstr[1] "%s uzanto forviŝitaj" -#: ../../mod/admin.php:585 +#: ../../mod/admin.php:587 #, php-format msgid "User '%s' deleted" msgstr "Uzanto '%s' forviŝita" -#: ../../mod/admin.php:593 +#: ../../mod/admin.php:595 #, php-format msgid "User '%s' unblocked" msgstr "Uzanto '%s' malblokita" -#: ../../mod/admin.php:593 +#: ../../mod/admin.php:595 #, php-format msgid "User '%s' blocked" msgstr "Uzanto '%s' blokita" -#: ../../mod/admin.php:657 +#: ../../mod/admin.php:659 msgid "select all" msgstr "elekti ĉiujn" -#: ../../mod/admin.php:658 +#: ../../mod/admin.php:660 msgid "User registrations waiting for confirm" msgstr "Registriĝoj atendante aprobon" -#: ../../mod/admin.php:659 +#: ../../mod/admin.php:661 msgid "Request date" msgstr "Dato de peto" -#: ../../mod/admin.php:659 ../../mod/admin.php:668 +#: ../../mod/admin.php:661 ../../mod/admin.php:670 #: ../../include/contact_selectors.php:79 msgid "Email" msgstr "Retpoŝto" -#: ../../mod/admin.php:660 +#: ../../mod/admin.php:662 msgid "No registrations." msgstr "Neniom da registriĝoj." -#: ../../mod/admin.php:662 +#: ../../mod/admin.php:664 msgid "Deny" msgstr "Negi" -#: ../../mod/admin.php:668 +#: ../../mod/admin.php:670 msgid "Register date" msgstr "Dato de registrado" -#: ../../mod/admin.php:668 +#: ../../mod/admin.php:670 msgid "Last login" msgstr "Plej ĵusa ensaluto" -#: ../../mod/admin.php:668 +#: ../../mod/admin.php:670 msgid "Last item" msgstr "Plej ĵusa elemento" -#: ../../mod/admin.php:668 +#: ../../mod/admin.php:670 msgid "Account" msgstr "Konto" -#: ../../mod/admin.php:670 +#: ../../mod/admin.php:672 msgid "" "Selected users will be deleted!\\n\\nEverything these users had posted on " "this site will be permanently deleted!\\n\\nAre you sure?" msgstr "La elektitaj uzantkontoj estas forviŝotaj!\\n\\nĈiuj elementoj kiujn ili afiŝis je la retpaĝo estos permanente forviŝitaj.\\n\\nĈu vi certas?" -#: ../../mod/admin.php:671 +#: ../../mod/admin.php:673 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 "La uzanto {0} estas forviŝota!\\n\\nĈiuj elementoj kiujn li afiŝis je la retpaĝo estos permanente forviŝitaj.\\n\\nĈu vi certas?" -#: ../../mod/admin.php:712 +#: ../../mod/admin.php:714 #, php-format msgid "Plugin %s disabled." msgstr "Kromprogramo %s estas malŝaltita." -#: ../../mod/admin.php:716 +#: ../../mod/admin.php:718 #, php-format msgid "Plugin %s enabled." msgstr "Kromprogramo %s estas ŝaltita." -#: ../../mod/admin.php:726 ../../mod/admin.php:924 +#: ../../mod/admin.php:728 ../../mod/admin.php:926 msgid "Disable" msgstr "Malŝalti" -#: ../../mod/admin.php:728 ../../mod/admin.php:926 +#: ../../mod/admin.php:730 ../../mod/admin.php:928 msgid "Enable" msgstr "Ŝalti" -#: ../../mod/admin.php:750 ../../mod/admin.php:955 +#: ../../mod/admin.php:752 ../../mod/admin.php:957 msgid "Toggle" msgstr "Ŝalti/Malŝalti" -#: ../../mod/admin.php:758 ../../mod/admin.php:965 +#: ../../mod/admin.php:760 ../../mod/admin.php:967 msgid "Author: " msgstr "Aŭtoro: " -#: ../../mod/admin.php:759 ../../mod/admin.php:966 +#: ../../mod/admin.php:761 ../../mod/admin.php:968 msgid "Maintainer: " msgstr "Prizorganto: " -#: ../../mod/admin.php:888 +#: ../../mod/admin.php:890 msgid "No themes found." msgstr "Ne trovis etosojn." -#: ../../mod/admin.php:947 +#: ../../mod/admin.php:949 msgid "Screenshot" msgstr "Ekrankopio" -#: ../../mod/admin.php:995 +#: ../../mod/admin.php:997 msgid "[Experimental]" msgstr "[Eksperimenta]" -#: ../../mod/admin.php:996 +#: ../../mod/admin.php:998 msgid "[Unsupported]" msgstr "[Nesubtenata]" -#: ../../mod/admin.php:1023 +#: ../../mod/admin.php:1025 msgid "Log settings updated." msgstr "Protokolagordoj ĝisdatigitaj." -#: ../../mod/admin.php:1079 +#: ../../mod/admin.php:1081 msgid "Clear" msgstr "Forviŝi" -#: ../../mod/admin.php:1085 +#: ../../mod/admin.php:1087 msgid "Debugging" msgstr "Sencimigado" -#: ../../mod/admin.php:1086 +#: ../../mod/admin.php:1088 msgid "Log file" msgstr "Protokolo" -#: ../../mod/admin.php:1086 +#: ../../mod/admin.php:1088 msgid "" "Must be writable by web server. Relative to your Friendica top-level " "directory." msgstr "Devas esti skribebla de la retservilo. Relativa al via plej supra Friendica dosierujo." -#: ../../mod/admin.php:1087 +#: ../../mod/admin.php:1089 msgid "Log level" msgstr "Protokolnivelo" -#: ../../mod/admin.php:1137 +#: ../../mod/admin.php:1139 msgid "Close" msgstr "Fermi" -#: ../../mod/admin.php:1143 +#: ../../mod/admin.php:1145 msgid "FTP Host" msgstr "FTP Servilo" -#: ../../mod/admin.php:1144 +#: ../../mod/admin.php:1146 msgid "FTP Path" msgstr "FTP Vojo" -#: ../../mod/admin.php:1145 +#: ../../mod/admin.php:1147 msgid "FTP User" msgstr "FTP Uzanto" -#: ../../mod/admin.php:1146 +#: ../../mod/admin.php:1148 msgid "FTP Password" msgstr "FTP Pasvorto" -#: ../../mod/profile.php:21 ../../boot.php:993 +#: ../../mod/profile.php:21 ../../boot.php:1030 msgid "Requested profile is not available." msgstr "La petita profilo ne disponeblas." @@ -3727,6 +3866,10 @@ msgstr "Komunaj Amikoj" msgid "No contacts in common." msgstr "Neniom da komunaj kontaktoj." +#: ../../mod/share.php:28 ../../include/bb2diaspora.php:286 +msgid "link" +msgstr "ligilo" + #: ../../mod/display.php:135 msgid "Item has been removed." msgstr "Elemento estas forviŝita." @@ -3739,13 +3882,13 @@ msgstr "Programoj" msgid "No installed applications." msgstr "Neniom da instalitaj programoj." -#: ../../mod/search.php:83 ../../include/text.php:649 -#: ../../include/text.php:650 ../../include/nav.php:91 +#: ../../mod/search.php:83 ../../include/text.php:674 +#: ../../include/text.php:675 ../../include/nav.php:91 msgid "Search" msgstr "Serĉi" -#: ../../mod/profiles.php:21 ../../mod/profiles.php:410 -#: ../../mod/profiles.php:524 ../../mod/dfrn_confirm.php:62 +#: ../../mod/profiles.php:21 ../../mod/profiles.php:418 +#: ../../mod/profiles.php:532 ../../mod/dfrn_confirm.php:62 msgid "Profile not found." msgstr "Profilo ne trovita." @@ -3832,226 +3975,226 @@ msgstr " - Vizitu la %2$s de %1$s" msgid "%1$s has an updated %2$s, changing %3$s." msgstr "%1$s havas ĝisdatigigan %2$s, ŝanĝas %3$s." -#: ../../mod/profiles.php:429 +#: ../../mod/profiles.php:437 msgid "Profile deleted." msgstr "Profilo forviŝita." -#: ../../mod/profiles.php:447 ../../mod/profiles.php:481 +#: ../../mod/profiles.php:455 ../../mod/profiles.php:489 msgid "Profile-" msgstr "Profilo-" -#: ../../mod/profiles.php:466 ../../mod/profiles.php:508 +#: ../../mod/profiles.php:474 ../../mod/profiles.php:516 msgid "New profile created." msgstr "Nova profilo kreita." -#: ../../mod/profiles.php:487 +#: ../../mod/profiles.php:495 msgid "Profile unavailable to clone." msgstr "Ne eblas kopii profilon." -#: ../../mod/profiles.php:545 +#: ../../mod/profiles.php:553 msgid "Hide your contact/friend list from viewers of this profile?" msgstr "Kaŝi vian liston de kontaktoj/amikoj al vidantoj de ĉi-tio profilo?" -#: ../../mod/profiles.php:568 +#: ../../mod/profiles.php:576 msgid "Edit Profile Details" msgstr "Redakti Detalojn de Profilo" -#: ../../mod/profiles.php:570 +#: ../../mod/profiles.php:578 msgid "View this profile" msgstr "Vidi la profilon." -#: ../../mod/profiles.php:571 +#: ../../mod/profiles.php:579 msgid "Create a new profile using these settings" msgstr "Krei novan profilon kun tiaj agordoj" -#: ../../mod/profiles.php:572 +#: ../../mod/profiles.php:580 msgid "Clone this profile" msgstr "Kopii ĉi tiun profilon" -#: ../../mod/profiles.php:573 +#: ../../mod/profiles.php:581 msgid "Delete this profile" msgstr "Forviŝi ĉi tiun profilon" -#: ../../mod/profiles.php:574 +#: ../../mod/profiles.php:582 msgid "Profile Name:" msgstr "Nomo de Profilo:" -#: ../../mod/profiles.php:575 +#: ../../mod/profiles.php:583 msgid "Your Full Name:" msgstr "Via Plena Nomo:" -#: ../../mod/profiles.php:576 +#: ../../mod/profiles.php:584 msgid "Title/Description:" msgstr "Titolo/Priskribo:" -#: ../../mod/profiles.php:577 +#: ../../mod/profiles.php:585 msgid "Your Gender:" msgstr "Via Sekso:" -#: ../../mod/profiles.php:578 +#: ../../mod/profiles.php:586 #, php-format msgid "Birthday (%s):" msgstr "Naskiĝtago (%s):" -#: ../../mod/profiles.php:579 +#: ../../mod/profiles.php:587 msgid "Street Address:" msgstr "Adreso:" -#: ../../mod/profiles.php:580 +#: ../../mod/profiles.php:588 msgid "Locality/City:" msgstr "Urbo:" -#: ../../mod/profiles.php:581 +#: ../../mod/profiles.php:589 msgid "Postal/Zip Code:" msgstr "Poŝtkodo:" -#: ../../mod/profiles.php:582 +#: ../../mod/profiles.php:590 msgid "Country:" msgstr "Lando:" -#: ../../mod/profiles.php:583 +#: ../../mod/profiles.php:591 msgid "Region/State:" msgstr "Ŝtato:" -#: ../../mod/profiles.php:584 +#: ../../mod/profiles.php:592 msgid "<span class=\"heart\">♥</span> Marital Status:" msgstr "<span class=\"heart\">♥</span> Civita Stato:" -#: ../../mod/profiles.php:585 +#: ../../mod/profiles.php:593 msgid "Who: (if applicable)" msgstr "Kiu (se aplikeble):" -#: ../../mod/profiles.php:586 +#: ../../mod/profiles.php:594 msgid "Examples: cathy123, Cathy Williams, cathy@example.com" msgstr "Ekzemploj: cathy123, Cathy Williams, cathy@example.com" -#: ../../mod/profiles.php:587 +#: ../../mod/profiles.php:595 msgid "Since [date]:" msgstr "Ekde [dato]:" -#: ../../mod/profiles.php:588 ../../include/profile_advanced.php:46 +#: ../../mod/profiles.php:596 ../../include/profile_advanced.php:46 msgid "Sexual Preference:" msgstr "Seksa Prefero:" -#: ../../mod/profiles.php:589 +#: ../../mod/profiles.php:597 msgid "Homepage URL:" msgstr "Adreso de Hejmpaĝo:" -#: ../../mod/profiles.php:590 ../../include/profile_advanced.php:50 +#: ../../mod/profiles.php:598 ../../include/profile_advanced.php:50 msgid "Hometown:" msgstr "Hejmurbo:" -#: ../../mod/profiles.php:591 ../../include/profile_advanced.php:54 +#: ../../mod/profiles.php:599 ../../include/profile_advanced.php:54 msgid "Political Views:" msgstr "Politikaj Opinioj:" -#: ../../mod/profiles.php:592 +#: ../../mod/profiles.php:600 msgid "Religious Views:" msgstr "Religiaj Opinioj:" -#: ../../mod/profiles.php:593 +#: ../../mod/profiles.php:601 msgid "Public Keywords:" msgstr "Publikaj ŝlosilvortoj:" -#: ../../mod/profiles.php:594 +#: ../../mod/profiles.php:602 msgid "Private Keywords:" msgstr "Privataj ŝlosilvortoj:" -#: ../../mod/profiles.php:595 ../../include/profile_advanced.php:62 +#: ../../mod/profiles.php:603 ../../include/profile_advanced.php:62 msgid "Likes:" msgstr "Ŝatoj:" -#: ../../mod/profiles.php:596 ../../include/profile_advanced.php:64 +#: ../../mod/profiles.php:604 ../../include/profile_advanced.php:64 msgid "Dislikes:" msgstr "Malŝatoj:" -#: ../../mod/profiles.php:597 +#: ../../mod/profiles.php:605 msgid "Example: fishing photography software" msgstr "Ekzemple: fiŝkapti fotografio programaro" -#: ../../mod/profiles.php:598 +#: ../../mod/profiles.php:606 msgid "(Used for suggesting potential friends, can be seen by others)" msgstr "(Por sugesti amikoj. Videbla al aliaj.)" -#: ../../mod/profiles.php:599 +#: ../../mod/profiles.php:607 msgid "(Used for searching profiles, never shown to others)" msgstr "(Por serĉi profilojn. Neniam videbla al aliaj.)" -#: ../../mod/profiles.php:600 +#: ../../mod/profiles.php:608 msgid "Tell us about yourself..." msgstr "Diru al ni pri vi..." -#: ../../mod/profiles.php:601 +#: ../../mod/profiles.php:609 msgid "Hobbies/Interests" msgstr "Ŝatokupoj/Interesoj" -#: ../../mod/profiles.php:602 +#: ../../mod/profiles.php:610 msgid "Contact information and Social Networks" msgstr "Kontaktaj informoj kaj Interkonaj Retejoj" -#: ../../mod/profiles.php:603 +#: ../../mod/profiles.php:611 msgid "Musical interests" msgstr "Muzikaj interesoj" -#: ../../mod/profiles.php:604 +#: ../../mod/profiles.php:612 msgid "Books, literature" msgstr "Libroj, literaturo" -#: ../../mod/profiles.php:605 +#: ../../mod/profiles.php:613 msgid "Television" msgstr "Televido" -#: ../../mod/profiles.php:606 +#: ../../mod/profiles.php:614 msgid "Film/dance/culture/entertainment" msgstr "Filmoj/dancoj/arto/amuzaĵoj" -#: ../../mod/profiles.php:607 +#: ../../mod/profiles.php:615 msgid "Love/romance" msgstr "Amo/romanco" -#: ../../mod/profiles.php:608 +#: ../../mod/profiles.php:616 msgid "Work/employment" msgstr "Laboro" -#: ../../mod/profiles.php:609 +#: ../../mod/profiles.php:617 msgid "School/education" msgstr "Lernejo/eduko" -#: ../../mod/profiles.php:614 +#: ../../mod/profiles.php:622 msgid "" "This is your <strong>public</strong> profile.<br />It <strong>may</strong> " "be visible to anybody using the internet." msgstr "Ĉi tio estas via <strong>publika</strong> profilo. Ĝi <strong>eble</strong> estas videbla al ĉiuj en interreto. " -#: ../../mod/profiles.php:624 ../../mod/directory.php:111 +#: ../../mod/profiles.php:632 ../../mod/directory.php:109 msgid "Age: " msgstr "Aĝo:" -#: ../../mod/profiles.php:663 +#: ../../mod/profiles.php:671 msgid "Edit/Manage Profiles" msgstr "Redakti/administri Profilojn" -#: ../../mod/profiles.php:664 ../../boot.php:1102 +#: ../../mod/profiles.php:672 ../../boot.php:1139 msgid "Change profile photo" msgstr "Ŝanĝi profilbildon" -#: ../../mod/profiles.php:665 ../../boot.php:1103 +#: ../../mod/profiles.php:673 ../../boot.php:1140 msgid "Create New Profile" msgstr "Krei novan profilon" -#: ../../mod/profiles.php:676 ../../boot.php:1113 +#: ../../mod/profiles.php:684 ../../boot.php:1150 msgid "Profile Image" msgstr "Profilbildo" -#: ../../mod/profiles.php:678 ../../boot.php:1116 +#: ../../mod/profiles.php:686 ../../boot.php:1153 msgid "visible to everybody" msgstr "videbla al ĉiuj" -#: ../../mod/profiles.php:679 ../../boot.php:1117 +#: ../../mod/profiles.php:687 ../../boot.php:1154 msgid "Edit visibility" msgstr "Redakti videblecon" -#: ../../mod/filer.php:29 ../../include/conversation.php:951 +#: ../../mod/filer.php:29 ../../include/conversation.php:1024 msgid "Save to Folder:" msgstr "Konservi en Dosierujo:" @@ -4059,7 +4202,7 @@ msgstr "Konservi en Dosierujo:" msgid "- select -" msgstr "- elekti -" -#: ../../mod/tagger.php:103 ../../include/conversation.php:138 +#: ../../mod/tagger.php:103 ../../include/conversation.php:199 #, php-format msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "%1$s markis la %3$s de %2$s kun %4$s" @@ -4099,6 +4242,50 @@ msgstr "Aldoni" msgid "No entries." msgstr "Neniom da afiŝoj." +#: ../../mod/babel.php:17 +msgid "Source (bbcode) text:" +msgstr "Fontkodo (bbcode):" + +#: ../../mod/babel.php:23 +msgid "Source (Diaspora) text to convert to BBcode:" +msgstr "Fontokodo (Diaspora) konvertota al BBcode:" + +#: ../../mod/babel.php:31 +msgid "Source input: " +msgstr "Fontoenigo:" + +#: ../../mod/babel.php:35 +msgid "bb2html: " +msgstr "bb2html: " + +#: ../../mod/babel.php:39 +msgid "bb2html2bb: " +msgstr "bb2html2bb: " + +#: ../../mod/babel.php:43 +msgid "bb2md: " +msgstr "bb2md: " + +#: ../../mod/babel.php:47 +msgid "bb2md2html: " +msgstr "bb2md2html: " + +#: ../../mod/babel.php:51 +msgid "bb2dia2bb: " +msgstr "bb2dia2bb: " + +#: ../../mod/babel.php:55 +msgid "bb2md2html2bb: " +msgstr "bb2md2html2bb: " + +#: ../../mod/babel.php:65 +msgid "Source input (Diaspora format): " +msgstr "Fontoenigo (Diaspora formato):" + +#: ../../mod/babel.php:70 +msgid "diaspora2bb: " +msgstr "diaspora2bb: " + #: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:626 #: ../../include/contact_widgets.php:34 msgid "Friend Suggestions" @@ -4126,11 +4313,30 @@ msgstr "Trovi en ĉi retejo" msgid "Site Directory" msgstr "Reteja Katalogo" -#: ../../mod/directory.php:114 +#: ../../mod/directory.php:112 msgid "Gender: " msgstr "Sekso:" -#: ../../mod/directory.php:140 +#: ../../mod/directory.php:134 ../../include/profile_advanced.php:17 +#: ../../boot.php:1175 +msgid "Gender:" +msgstr "Sekso:" + +#: ../../mod/directory.php:136 ../../include/profile_advanced.php:37 +#: ../../boot.php:1178 +msgid "Status:" +msgstr "Stato:" + +#: ../../mod/directory.php:138 ../../include/profile_advanced.php:48 +#: ../../boot.php:1180 +msgid "Homepage:" +msgstr "Hejmpaĝo:" + +#: ../../mod/directory.php:140 ../../include/profile_advanced.php:58 +msgid "About:" +msgstr "Pri:" + +#: ../../mod/directory.php:178 msgid "No entries (some entries may be hidden)." msgstr "Neniom da afiŝoj (kelkaj afiŝoj eble ne estas videbla)." @@ -4253,8 +4459,8 @@ msgstr "La prezento malsukcesis au estas revokita." msgid "Unable to set contact photo." msgstr "Neeblas agordi la kontaktbildo." -#: ../../mod/dfrn_confirm.php:477 ../../include/diaspora.php:510 -#: ../../include/conversation.php:101 +#: ../../mod/dfrn_confirm.php:477 ../../include/diaspora.php:577 +#: ../../include/conversation.php:162 #, php-format msgid "%1$s is now friends with %2$s" msgstr "%1$s amikiĝis kun %2$s" @@ -4321,83 +4527,83 @@ msgstr "Google Konto ID" msgid "Google+ Import Settings saved." msgstr "Konservis Agordojn por Google+ Importo." -#: ../../addon/facebook/facebook.php:521 +#: ../../addon/facebook/facebook.php:523 msgid "Facebook disabled" msgstr "Facebook malŝaltita" -#: ../../addon/facebook/facebook.php:526 +#: ../../addon/facebook/facebook.php:528 msgid "Updating contacts" msgstr "Mi ĝisdatigas la kontaktojn." -#: ../../addon/facebook/facebook.php:549 +#: ../../addon/facebook/facebook.php:551 msgid "Facebook API key is missing." msgstr "La API ŝlosilo de Facebook ne estas konata ĉi tie." -#: ../../addon/facebook/facebook.php:556 +#: ../../addon/facebook/facebook.php:558 msgid "Facebook Connect" msgstr "Kontekto al Facebook" -#: ../../addon/facebook/facebook.php:562 +#: ../../addon/facebook/facebook.php:564 msgid "Install Facebook connector for this account." msgstr "Instali la Facebook konektilo por ĉi tiu konto." -#: ../../addon/facebook/facebook.php:569 +#: ../../addon/facebook/facebook.php:571 msgid "Remove Facebook connector" msgstr "Forigi la Facebook konektilon." -#: ../../addon/facebook/facebook.php:574 +#: ../../addon/facebook/facebook.php:576 msgid "" "Re-authenticate [This is necessary whenever your Facebook password is " "changed.]" msgstr "Reaŭtentiĝi [Tio estas bezonata ĉiam kiam vi ŝanĝis vian pasvorton ĉe Facebook.]" -#: ../../addon/facebook/facebook.php:581 +#: ../../addon/facebook/facebook.php:583 msgid "Post to Facebook by default" msgstr "Ĉiam afiŝi al Facebook." -#: ../../addon/facebook/facebook.php:587 +#: ../../addon/facebook/facebook.php:589 msgid "" "Facebook friend linking has been disabled on this site. The following " "settings will have no effect." msgstr "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. La sekvantaj agordoj do ne havas validecon." -#: ../../addon/facebook/facebook.php:591 +#: ../../addon/facebook/facebook.php:593 msgid "" "Facebook friend linking has been disabled on this site. If you disable it, " "you will be unable to re-enable it." msgstr "Ligado kun Facebook amikoj estas malaktivita ĉe tiu retejo. Se vi malŝaltas ĝin, vi ne eblos ree ŝalti ĝin." -#: ../../addon/facebook/facebook.php:594 +#: ../../addon/facebook/facebook.php:596 msgid "Link all your Facebook friends and conversations on this website" msgstr "Alligu ĉiujn viajn Facebook amikojn kaj konversaciojn je ĉi-tiu retejo." -#: ../../addon/facebook/facebook.php:596 +#: ../../addon/facebook/facebook.php:598 msgid "" "Facebook conversations consist of your <em>profile wall</em> and your friend" " <em>stream</em>." msgstr "Facebok konversacioj konsistas el via <em>profilmuro</em> kaj la <em>fluo</em> de viaj amikoj." -#: ../../addon/facebook/facebook.php:597 +#: ../../addon/facebook/facebook.php:599 msgid "On this website, your Facebook friend stream is only visible to you." msgstr "Je ĉi-tiu retejo, la fluo de viaj amikoj ĉe Facebook nur videblas al vi." -#: ../../addon/facebook/facebook.php:598 +#: ../../addon/facebook/facebook.php:600 msgid "" "The following settings determine the privacy of your Facebook profile wall " "on this website." msgstr "La sekvontaj agordoj difinas la privatecon de via Facebook profilmuro je ĉi-tiu retejo." -#: ../../addon/facebook/facebook.php:602 +#: ../../addon/facebook/facebook.php:604 msgid "" "On this website your Facebook profile wall conversations will only be " "visible to you" msgstr "Je ĉi-tiu retejo, la conversacioj sur via Facebook profilmuro nur videblas al vi." -#: ../../addon/facebook/facebook.php:607 +#: ../../addon/facebook/facebook.php:609 msgid "Do not import your Facebook profile wall conversations" msgstr "Ne importi konversaciojn de via Facebook profilmuro" -#: ../../addon/facebook/facebook.php:609 +#: ../../addon/facebook/facebook.php:611 msgid "" "If you choose to link conversations and leave both of these boxes unchecked," " your Facebook profile wall will be merged with your profile wall on this " @@ -4405,120 +4611,120 @@ msgid "" "who may see the conversations." msgstr "Se vi elektas alligi conversaciojn kaj ne elektas tiujn butonojn, via Facebook profilmuro estas kunigota kun via profilmuro ĉi tie. Viaj privatecaj agordoj ĉi tie difinos kiu povas vidi la coversaciojn." -#: ../../addon/facebook/facebook.php:614 +#: ../../addon/facebook/facebook.php:616 msgid "Comma separated applications to ignore" msgstr "Ignorotaj programoj, disigita per komo" -#: ../../addon/facebook/facebook.php:698 +#: ../../addon/facebook/facebook.php:700 msgid "Problems with Facebook Real-Time Updates" msgstr "Problemoj kun Facebook Realtempaj Ĝisdatigoj" -#: ../../addon/facebook/facebook.php:726 +#: ../../addon/facebook/facebook.php:728 #: ../../include/contact_selectors.php:81 msgid "Facebook" msgstr "Facebook" -#: ../../addon/facebook/facebook.php:727 +#: ../../addon/facebook/facebook.php:729 msgid "Facebook Connector Settings" msgstr "Agordoj por la Facebook konektilo" -#: ../../addon/facebook/facebook.php:742 +#: ../../addon/facebook/facebook.php:744 msgid "Facebook API Key" msgstr "Facebook API ŝlosilo" -#: ../../addon/facebook/facebook.php:752 +#: ../../addon/facebook/facebook.php:754 msgid "" "Error: it appears that you have specified the App-ID and -Secret in your " ".htconfig.php file. As long as they are specified there, they cannot be set " "using this form.<br><br>" msgstr "Eraro: Ŝajnas kvazaŭ vi agordis la App-ID kaj la sekreton en via .htconfig.php dosiero. Kiam ili estas agordita tie, vi ne povas agordi ĝin en tiu ĉi formo.<br><br>" -#: ../../addon/facebook/facebook.php:757 +#: ../../addon/facebook/facebook.php:759 msgid "" "Error: the given API Key seems to be incorrect (the application access token" " could not be retrieved)." msgstr "Eraro: La API ŝlosilo aspektas malĝusta (ne eblas ricevi la programa atingoĵetono)." -#: ../../addon/facebook/facebook.php:759 +#: ../../addon/facebook/facebook.php:761 msgid "The given API Key seems to work correctly." msgstr "La API ŝlosilo ŝajne ĝuste funkcias." -#: ../../addon/facebook/facebook.php:761 +#: ../../addon/facebook/facebook.php:763 msgid "" -"The correctness of the API Key could not be detected. Somthing strange's " +"The correctness of the API Key could not be detected. Something strange's " "going on." -msgstr "Ne povis kontroli la ĝustecon de la API ŝlosilo. Ia stranga afero okazas. " +msgstr "Ne povis kontroli la ĝusteco de la API ŝlosilo. Stranga afero okazas." -#: ../../addon/facebook/facebook.php:764 +#: ../../addon/facebook/facebook.php:766 msgid "App-ID / API-Key" msgstr "Programo ID / API Ŝlosilo" -#: ../../addon/facebook/facebook.php:765 +#: ../../addon/facebook/facebook.php:767 msgid "Application secret" msgstr "Programo sekreto" -#: ../../addon/facebook/facebook.php:766 +#: ../../addon/facebook/facebook.php:768 #, php-format msgid "Polling Interval in minutes (minimum %1$s minutes)" msgstr "Intervalo de enketo en minutoj (minimume %1$s minutoj)" -#: ../../addon/facebook/facebook.php:767 +#: ../../addon/facebook/facebook.php:769 msgid "" "Synchronize comments (no comments on Facebook are missed, at the cost of " "increased system load)" msgstr "Sinkronigi komentojn (vi ricevas ĉiujn komentojn de Facebook, sed la ŝargo de la sistemo iom kreskas)" -#: ../../addon/facebook/facebook.php:771 +#: ../../addon/facebook/facebook.php:773 msgid "Real-Time Updates" msgstr "Realtempaj Ĝisdatigoj" -#: ../../addon/facebook/facebook.php:775 +#: ../../addon/facebook/facebook.php:777 msgid "Real-Time Updates are activated." msgstr "Realtempaj Ĝisdatigoj estas ŝaltita" -#: ../../addon/facebook/facebook.php:776 +#: ../../addon/facebook/facebook.php:778 msgid "Deactivate Real-Time Updates" msgstr "Malŝalti Realtempaj Ĝisdatigoj" -#: ../../addon/facebook/facebook.php:778 +#: ../../addon/facebook/facebook.php:780 msgid "Real-Time Updates not activated." msgstr "Realtempaj Ĝisdatigoj estas malŝaltita" -#: ../../addon/facebook/facebook.php:778 +#: ../../addon/facebook/facebook.php:780 msgid "Activate Real-Time Updates" msgstr "Ŝalti Realtempaj Ĝisdatigoj" -#: ../../addon/facebook/facebook.php:797 ../../addon/dav/layout.fnk.php:360 +#: ../../addon/facebook/facebook.php:799 ../../addon/dav/layout.fnk.php:360 msgid "The new values have been saved." msgstr "Konservis novajn valorojn." -#: ../../addon/facebook/facebook.php:821 +#: ../../addon/facebook/facebook.php:823 msgid "Post to Facebook" msgstr "Afiŝi al Facebook" -#: ../../addon/facebook/facebook.php:919 +#: ../../addon/facebook/facebook.php:921 msgid "" "Post to Facebook cancelled because of multi-network access permission " "conflict." msgstr "Afiŝado al Facebook nuligita ĉar okazis konflikto en la multretpermesoj." -#: ../../addon/facebook/facebook.php:1139 +#: ../../addon/facebook/facebook.php:1141 msgid "View on Friendica" msgstr "Vidi ĉe Friendica" -#: ../../addon/facebook/facebook.php:1172 +#: ../../addon/facebook/facebook.php:1174 msgid "Facebook post failed. Queued for retry." msgstr "Malsukcesis afiŝi ĉe Facebook. Enigita en vico." -#: ../../addon/facebook/facebook.php:1212 +#: ../../addon/facebook/facebook.php:1214 msgid "Your Facebook connection became invalid. Please Re-authenticate." msgstr "Via Facbook konekto iĝis nevalida. Bonvolu reaŭtentiĝi." -#: ../../addon/facebook/facebook.php:1213 +#: ../../addon/facebook/facebook.php:1215 msgid "Facebook connection became invalid" msgstr "Facebook konekto iĝis nevalida." -#: ../../addon/facebook/facebook.php:1214 +#: ../../addon/facebook/facebook.php:1216 #, php-format msgid "" "Hi %1$s,\n" @@ -4679,33 +4885,27 @@ msgstr "%s - Klaku por malfermi/fermi" msgid "Forums" msgstr "Forumoj" -#: ../../addon/page/page.php:76 ../../addon/page/page.php:110 -#: ../../addon/showmore/showmore.php:87 ../../include/contact_widgets.php:188 -#: ../../include/conversation.php:476 ../../boot.php:529 -msgid "show more" -msgstr "montri pli" - #: ../../addon/page/page.php:129 msgid "Forums:" msgstr "Forumoj:" -#: ../../addon/page/page.php:163 +#: ../../addon/page/page.php:165 msgid "Page settings updated." msgstr "Paĝajn agordojn ĝisdatigita." -#: ../../addon/page/page.php:192 +#: ../../addon/page/page.php:194 msgid "Page Settings" msgstr "Paĝaj Agordoj" -#: ../../addon/page/page.php:194 +#: ../../addon/page/page.php:196 msgid "How many forums to display on sidebar without paging" msgstr "Montri tiom da forumoj en la flanka strio sen paĝigo" -#: ../../addon/page/page.php:197 +#: ../../addon/page/page.php:199 msgid "Randomise Page/Forum list" msgstr "Hazardigi la liston de Paĝoj/Forumoj" -#: ../../addon/page/page.php:200 +#: ../../addon/page/page.php:202 msgid "Show pages/forums on profile page" msgstr "Montri paĝojn/forumojn sur la profilpaĝo" @@ -4721,7 +4921,7 @@ msgstr "Ŝalti la Planets kromprogamon" #: ../../addon/communityhome/communityhome.php:34 #: ../../addon/communityhome/twillingham/communityhome.php:28 #: ../../addon/communityhome/twillingham/communityhome.php:34 -#: ../../include/nav.php:64 ../../boot.php:849 +#: ../../include/nav.php:64 ../../boot.php:886 msgid "Login" msgstr "Ensaluti" @@ -4749,8 +4949,8 @@ msgid "Latest likes" msgstr "Ĵusaj ŝatitaĵoj" #: ../../addon/communityhome/communityhome.php:155 -#: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1315 -#: ../../include/conversation.php:45 ../../include/conversation.php:118 +#: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1344 +#: ../../include/conversation.php:106 ../../include/conversation.php:179 msgid "event" msgstr "okazo" @@ -4859,7 +5059,7 @@ msgstr "Horzono" msgid "Limitations" msgstr "Limigoj" -#: ../../addon/dav/layout.fnk.php:391 +#: ../../addon/dav/layout.fnk.php:391 ../../addon/libravatar/libravatar.php:82 msgid "Warning" msgstr "Averto" @@ -5343,6 +5543,69 @@ msgstr "Defaŭlta zoma faktoro" msgid "The default zoom level. (1:world, 18:highest)" msgstr "La defaŭlta zoma faktoro. (1:tutmonda, 18:plej proksima)" +#: ../../addon/libravatar/libravatar.php:14 +msgid "Could NOT install Libravatar successfully.<br>It requires PHP >= 5.3" +msgstr "NE SUKCESIS instali la bibliotekon Libravatar.<br>Ĝi bezonas PHP >= 5.3" + +#: ../../addon/libravatar/libravatar.php:73 +#: ../../addon/gravatar/gravatar.php:71 +msgid "generic profile image" +msgstr "komuna profilbildo" + +#: ../../addon/libravatar/libravatar.php:74 +#: ../../addon/gravatar/gravatar.php:72 +msgid "random geometric pattern" +msgstr "loteca geometria skemo" + +#: ../../addon/libravatar/libravatar.php:75 +#: ../../addon/gravatar/gravatar.php:73 +msgid "monster face" +msgstr "monstrobildo" + +#: ../../addon/libravatar/libravatar.php:76 +#: ../../addon/gravatar/gravatar.php:74 +msgid "computer generated face" +msgstr "komputita vizaĝo" + +#: ../../addon/libravatar/libravatar.php:77 +#: ../../addon/gravatar/gravatar.php:75 +msgid "retro arcade style face" +msgstr "retrostila videoludstila vizaĝo" + +#: ../../addon/libravatar/libravatar.php:83 +#, php-format +msgid "Your PHP version %s is lower than the required PHP >= 5.3." +msgstr "Via PHP versio %s estas malpli alta ol la bezonata PHP >= 5.3." + +#: ../../addon/libravatar/libravatar.php:84 +msgid "This addon is not functional on your server." +msgstr "Tiu ĉi kromprogramo ne funkcieblas je via servilo." + +#: ../../addon/libravatar/libravatar.php:93 +#: ../../addon/gravatar/gravatar.php:89 +msgid "Information" +msgstr "Informo" + +#: ../../addon/libravatar/libravatar.php:93 +msgid "" +"Gravatar addon is installed. Please disable the Gravatar addon.<br>The " +"Libravatar addon will fall back to Gravatar if nothing was found at " +"Libravatar." +msgstr "La Gravatar kromprogramo estas instalita. Bonvolu malŝalti la Gravatar kromprogramon.<tr>La Libravatar kromprogramo retropaŝos al Gravatar se neniu troveblis ĉe Libravatar." + +#: ../../addon/libravatar/libravatar.php:100 +#: ../../addon/gravatar/gravatar.php:96 +msgid "Default avatar image" +msgstr "Defaŭlta avatarbildo" + +#: ../../addon/libravatar/libravatar.php:100 +msgid "Select default avatar image if none was found. See README" +msgstr "Elektu la defaŭltan avatar bildon sen neniu troveblis. Legu README." + +#: ../../addon/libravatar/libravatar.php:112 +msgid "Libravatar settings updated." +msgstr "Ĝisdatigis Libravatar agordojn." + #: ../../addon/libertree/libertree.php:36 msgid "Post to libertree" msgstr "Afiŝi al libertree" @@ -5367,6 +5630,18 @@ msgstr "URL adreso de libertree retejo:" msgid "Post to Libertree by default" msgstr "Defaŭlte afiŝi ĉe Libertree" +#: ../../addon/altpager/altpager.php:46 +msgid "Altpager settings updated." +msgstr "Ĝisdatigis Altpager agordojn." + +#: ../../addon/altpager/altpager.php:79 +msgid "Alternate Pagination Setting" +msgstr "Alternativa paĝonumerado agordoj" + +#: ../../addon/altpager/altpager.php:81 +msgid "Use links to \"newer\" and \"older\" pages in place of page numbers?" +msgstr "Uzi ligilojn al \"pli nova\" kaj \"pli malnova\" paĝoj anstataŭ paĝnombrojn?" + #: ../../addon/mathjax/mathjax.php:37 msgid "" "The MathJax addon renders mathematical formulae written using the LaTeX " @@ -5400,43 +5675,26 @@ msgstr "Agordoj por Editplain" msgid "Disable richtext status editor" msgstr "Malŝalti la riĉteksto-redaktilon" -#: ../../addon/gravatar/gravatar.php:71 -msgid "generic profile image" -msgstr "komuna profilbildo" +#: ../../addon/gravatar/gravatar.php:89 +msgid "" +"Libravatar addon is installed, too. Please disable Libravatar addon or this " +"Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if " +"nothing was found at Libravatar." +msgstr "La Libravatar kromprogramo estas ankaŭ instaltga. Bonvolu malŝalti la Libravatar kromprogramon.<br>La Libravatar kromprogramo retropaŝos al Gravatar se neniu troveblis ĉe Libravatar." -#: ../../addon/gravatar/gravatar.php:72 -msgid "random geometric pattern" -msgstr "loteca geometria skemo" - -#: ../../addon/gravatar/gravatar.php:73 -msgid "monster face" -msgstr "monstrobildo" - -#: ../../addon/gravatar/gravatar.php:74 -msgid "computer generated face" -msgstr "komputita vizaĝo" - -#: ../../addon/gravatar/gravatar.php:75 -msgid "retro arcade style face" -msgstr "retrostila videoludstila vizaĝo" - -#: ../../addon/gravatar/gravatar.php:87 -msgid "Default avatar image" -msgstr "Defaŭlta avatarbildo" - -#: ../../addon/gravatar/gravatar.php:87 +#: ../../addon/gravatar/gravatar.php:96 msgid "Select default avatar image if none was found at Gravatar. See README" msgstr "Elektu defaŭltan avatarbildon se neniu troviĝis ĉe Gravatar. Vidu README." -#: ../../addon/gravatar/gravatar.php:88 +#: ../../addon/gravatar/gravatar.php:97 msgid "Rating of images" msgstr "Pritakso de bildoj" -#: ../../addon/gravatar/gravatar.php:88 +#: ../../addon/gravatar/gravatar.php:97 msgid "Select the appropriate avatar rating for your site. See README" msgstr "Elektu la ĝustan pritakson de via avataro por via retejo. Vidu README." -#: ../../addon/gravatar/gravatar.php:102 +#: ../../addon/gravatar/gravatar.php:111 msgid "Gravatar settings updated." msgstr "Gravatar agordoj ĝisdatigitaj." @@ -6130,10 +6388,6 @@ msgstr "Centren" msgid "Set colour scheme" msgstr "Agordi Kolorskemon" -#: ../../include/profile_advanced.php:17 ../../boot.php:1138 -msgid "Gender:" -msgstr "Sekso:" - #: ../../include/profile_advanced.php:22 msgid "j F, Y" msgstr "j F, Y" @@ -6150,19 +6404,11 @@ msgstr "Naskiĝtago:" msgid "Age:" msgstr "Aĝo:" -#: ../../include/profile_advanced.php:37 ../../boot.php:1141 -msgid "Status:" -msgstr "Stato:" - #: ../../include/profile_advanced.php:43 #, php-format msgid "for %1$d %2$s" msgstr "por %1$d %2$s" -#: ../../include/profile_advanced.php:48 ../../boot.php:1143 -msgid "Homepage:" -msgstr "Hejmpaĝo:" - #: ../../include/profile_advanced.php:52 msgid "Tags:" msgstr "Markoj:" @@ -6171,10 +6417,6 @@ msgstr "Markoj:" msgid "Religion:" msgstr "Religio:" -#: ../../include/profile_advanced.php:58 -msgid "About:" -msgstr "Pri:" - #: ../../include/profile_advanced.php:60 msgid "Hobbies/Interests:" msgstr "Ŝatokupoj/Interesoj:" @@ -6515,11 +6757,11 @@ msgstr "Egala" msgid "Ask me" msgstr "Demandu min" -#: ../../include/event.php:20 ../../include/bb2diaspora.php:341 +#: ../../include/event.php:20 ../../include/bb2diaspora.php:453 msgid "Starts:" msgstr "Ekas:" -#: ../../include/event.php:30 ../../include/bb2diaspora.php:349 +#: ../../include/event.php:30 ../../include/bb2diaspora.php:461 msgid "Finishes:" msgstr "Finas:" @@ -6552,150 +6794,158 @@ msgstr "lasta" msgid "next" msgstr "sekvanta" -#: ../../include/text.php:568 +#: ../../include/text.php:295 +msgid "newer" +msgstr "pli nova" + +#: ../../include/text.php:299 +msgid "older" +msgstr "pli malnova" + +#: ../../include/text.php:593 msgid "No contacts" msgstr "Neniu kontaktoj" -#: ../../include/text.php:577 +#: ../../include/text.php:602 #, php-format msgid "%d Contact" msgid_plural "%d Contacts" msgstr[0] "%d Kontakto" msgstr[1] "%d Kontaktoj" -#: ../../include/text.php:835 +#: ../../include/text.php:864 msgid "Monday" msgstr "Lundo" -#: ../../include/text.php:835 +#: ../../include/text.php:864 msgid "Tuesday" msgstr "Mardo" -#: ../../include/text.php:835 +#: ../../include/text.php:864 msgid "Wednesday" msgstr "Merkredo" -#: ../../include/text.php:835 +#: ../../include/text.php:864 msgid "Thursday" msgstr "Ĵaŭdo" -#: ../../include/text.php:835 +#: ../../include/text.php:864 msgid "Friday" msgstr "Vendredo" -#: ../../include/text.php:835 +#: ../../include/text.php:864 msgid "Saturday" msgstr "Sabato" -#: ../../include/text.php:835 +#: ../../include/text.php:864 msgid "Sunday" msgstr "Dimanĉo" -#: ../../include/text.php:839 +#: ../../include/text.php:868 msgid "January" msgstr "Januaro" -#: ../../include/text.php:839 +#: ../../include/text.php:868 msgid "February" msgstr "Februaro" -#: ../../include/text.php:839 +#: ../../include/text.php:868 msgid "March" msgstr "Marto" -#: ../../include/text.php:839 +#: ../../include/text.php:868 msgid "April" msgstr "Aprilo" -#: ../../include/text.php:839 +#: ../../include/text.php:868 msgid "May" msgstr "Majo" -#: ../../include/text.php:839 +#: ../../include/text.php:868 msgid "June" msgstr "Junio" -#: ../../include/text.php:839 +#: ../../include/text.php:868 msgid "July" msgstr "Julio" -#: ../../include/text.php:839 +#: ../../include/text.php:868 msgid "August" msgstr "Aŭgusto" -#: ../../include/text.php:839 +#: ../../include/text.php:868 msgid "September" msgstr "Septembro" -#: ../../include/text.php:839 +#: ../../include/text.php:868 msgid "October" msgstr "Oktobro" -#: ../../include/text.php:839 +#: ../../include/text.php:868 msgid "November" msgstr "Novembro" -#: ../../include/text.php:839 +#: ../../include/text.php:868 msgid "December" msgstr "Decembro" -#: ../../include/text.php:925 +#: ../../include/text.php:954 msgid "bytes" msgstr "bajtoj" -#: ../../include/text.php:945 ../../include/text.php:960 +#: ../../include/text.php:974 ../../include/text.php:989 msgid "remove" msgstr "forviŝi" -#: ../../include/text.php:945 ../../include/text.php:960 +#: ../../include/text.php:974 ../../include/text.php:989 msgid "[remove]" msgstr "[forviŝi]" -#: ../../include/text.php:948 +#: ../../include/text.php:977 msgid "Categories:" msgstr "Kategorioj:" -#: ../../include/text.php:963 +#: ../../include/text.php:992 msgid "Filed under:" msgstr "Enarkivigita kiel:" -#: ../../include/text.php:979 ../../include/text.php:991 +#: ../../include/text.php:1008 ../../include/text.php:1020 msgid "Click to open/close" msgstr "Klaku por malfermi/fermi" -#: ../../include/text.php:1097 ../../include/user.php:236 +#: ../../include/text.php:1126 ../../include/user.php:236 msgid "default" msgstr "defaŭlta" -#: ../../include/text.php:1109 +#: ../../include/text.php:1138 msgid "Select an alternate language" msgstr "Elekti alian lingvon" -#: ../../include/text.php:1319 +#: ../../include/text.php:1348 msgid "activity" msgstr "aktiveco" -#: ../../include/text.php:1321 +#: ../../include/text.php:1350 msgid "comment" msgstr "komento" -#: ../../include/text.php:1322 +#: ../../include/text.php:1351 msgid "post" msgstr "afiŝo" -#: ../../include/text.php:1477 +#: ../../include/text.php:1506 msgid "Item filed" msgstr "Enarkivigis elementon " -#: ../../include/diaspora.php:593 +#: ../../include/diaspora.php:660 msgid "Sharing notification from Diaspora network" msgstr "Antentigo pri kunhavigado de la Diaspora reto" -#: ../../include/diaspora.php:2085 +#: ../../include/diaspora.php:2174 msgid "Attachments:" msgstr "Kunsendaĵoj:" -#: ../../include/network.php:839 +#: ../../include/network.php:842 msgid "view full size" msgstr "vidi plengrande" @@ -6742,7 +6992,7 @@ msgstr "Krei novan grupon" msgid "Contacts not in any group" msgstr "Kontaktoj en neniu grupo" -#: ../../include/nav.php:46 ../../boot.php:848 +#: ../../include/nav.php:46 ../../boot.php:885 msgid "Logout" msgstr "Elsaluti" @@ -6750,7 +7000,7 @@ msgstr "Elsaluti" msgid "End this session" msgstr "Fini ĉi-tiun seancon" -#: ../../include/nav.php:49 ../../boot.php:1538 +#: ../../include/nav.php:49 ../../boot.php:1575 msgid "Status" msgstr "Stato" @@ -6830,11 +7080,11 @@ msgstr "Administri" msgid "Manage other pages" msgstr "Administri aliajn paĝojn" -#: ../../include/nav.php:138 ../../boot.php:1096 +#: ../../include/nav.php:138 ../../boot.php:1133 msgid "Profiles" msgstr "Profiloj" -#: ../../include/nav.php:138 ../../boot.php:1096 +#: ../../include/nav.php:138 ../../boot.php:1133 msgid "Manage/edit profiles" msgstr "Administri/redakti profilojn" @@ -6996,12 +7246,12 @@ msgstr "sekundoj" msgid "%1$d %2$s ago" msgstr "antaŭ %1$d %2$s" -#: ../../include/datetime.php:450 ../../include/items.php:1460 +#: ../../include/datetime.php:450 ../../include/items.php:1561 #, php-format msgid "%s's birthday" msgstr "Naskiĝtago de %s" -#: ../../include/datetime.php:451 ../../include/items.php:1461 +#: ../../include/datetime.php:451 ../../include/items.php:1562 #, php-format msgid "Happy Birthday %s" msgstr "Feliĉan Naskiĝtagon al %s" @@ -7010,14 +7260,14 @@ msgstr "Feliĉan Naskiĝtagon al %s" msgid "From: " msgstr "De: " -#: ../../include/bbcode.php:216 ../../include/bbcode.php:236 -msgid "$1 wrote:" -msgstr "$1 skribis:" - -#: ../../include/bbcode.php:251 ../../include/bbcode.php:328 +#: ../../include/bbcode.php:102 ../../include/bbcode.php:313 msgid "Image/photo" msgstr "Bildo" +#: ../../include/bbcode.php:278 ../../include/bbcode.php:298 +msgid "$1 wrote:" +msgstr "$1 skribis:" + #: ../../include/dba.php:41 #, php-format msgid "Cannot locate DNS info for database server '%s'" @@ -7073,130 +7323,130 @@ msgstr "privatan mesaĝon" msgid "Please visit %s to view and/or reply to your private messages." msgstr "Bonvolu viziti %s por vidi aŭ respondi viajn privatajn mesaĝojn." -#: ../../include/enotify.php:73 +#: ../../include/enotify.php:87 #, php-format msgid "%1$s commented on [url=%2$s]a %3$s[/url]" msgstr "%1$s komentis pri [url=%2$s]%3$s[/url]" -#: ../../include/enotify.php:80 +#: ../../include/enotify.php:94 #, php-format msgid "%1$s commented on [url=%2$s]%3$s's %4$s[/url]" msgstr "%1$s komentis pri [url=%2$s]%4$s de %3$s[/url]" -#: ../../include/enotify.php:88 +#: ../../include/enotify.php:102 #, php-format msgid "%1$s commented on [url=%2$s]your %3$s[/url]" msgstr "%1$s komentis pri [url=%2$s]via %3$s[/url]" -#: ../../include/enotify.php:98 +#: ../../include/enotify.php:112 #, php-format msgid "[Friendica:Notify] Comment to conversation #%1$d by %2$s" msgstr "[Friendica:Atentigo] Komento pri konversacio #%1$d de %2$s" -#: ../../include/enotify.php:99 +#: ../../include/enotify.php:113 #, php-format msgid "%s commented on an item/conversation you have been following." msgstr "%s komentis pri elemento/konversacio kiun vi sekvas." -#: ../../include/enotify.php:102 ../../include/enotify.php:117 -#: ../../include/enotify.php:130 ../../include/enotify.php:143 +#: ../../include/enotify.php:116 ../../include/enotify.php:131 +#: ../../include/enotify.php:144 ../../include/enotify.php:157 #, php-format msgid "Please visit %s to view and/or reply to the conversation." msgstr "Bonvolu viziti %s por vidi aŭ respondi la konversacion." -#: ../../include/enotify.php:109 +#: ../../include/enotify.php:123 #, php-format msgid "[Friendica:Notify] %s posted to your profile wall" msgstr "[Friendica:Atentigo] %s afiŝis al via profilmuro" -#: ../../include/enotify.php:111 +#: ../../include/enotify.php:125 #, php-format msgid "%1$s posted to your profile wall at %2$s" msgstr "%1$s skribis al via profilmuro ĉe %2$s" -#: ../../include/enotify.php:113 +#: ../../include/enotify.php:127 #, php-format -msgid "%1$s posted to [url=%2s]your wall[/url]" -msgstr "%1$s afiŝis al [url=%2s]via muro[/url]" +msgid "%1$s posted to [url=%2$s]your wall[/url]" +msgstr "%1$s afiŝis al [url=%2$s]via muro[/url]" -#: ../../include/enotify.php:124 +#: ../../include/enotify.php:138 #, php-format msgid "[Friendica:Notify] %s tagged you" msgstr "[Friendica:Atentigo] %s markis vin" -#: ../../include/enotify.php:125 +#: ../../include/enotify.php:139 #, php-format msgid "%1$s tagged you at %2$s" msgstr "%1$s markis vin ĉe %2$s" -#: ../../include/enotify.php:126 +#: ../../include/enotify.php:140 #, php-format msgid "%1$s [url=%2$s]tagged you[/url]." msgstr "%1$s [url=%2$s]markis vin[/url]." -#: ../../include/enotify.php:137 +#: ../../include/enotify.php:151 #, php-format msgid "[Friendica:Notify] %s tagged your post" msgstr "[Friendica:Atentigo] %s markis vian afiŝon" -#: ../../include/enotify.php:138 +#: ../../include/enotify.php:152 #, php-format msgid "%1$s tagged your post at %2$s" msgstr "%1$s markis vian afiŝon ĉe %2$s" -#: ../../include/enotify.php:139 +#: ../../include/enotify.php:153 #, php-format msgid "%1$s tagged [url=%2$s]your post[/url]" msgstr "%1$s markis [url=%2$s]vian afiŝon[/url]" -#: ../../include/enotify.php:150 +#: ../../include/enotify.php:164 msgid "[Friendica:Notify] Introduction received" msgstr "[Friendica:Atentigo] Ricevis prezenton" -#: ../../include/enotify.php:151 +#: ../../include/enotify.php:165 #, php-format msgid "You've received an introduction from '%1$s' at %2$s" msgstr "Vi ricevis prezenton de '%1$s' ĉe %2$s" -#: ../../include/enotify.php:152 +#: ../../include/enotify.php:166 #, php-format msgid "You've received [url=%1$s]an introduction[/url] from %2$s." msgstr "Vi ricevis [url=%1$s]prezenton[/url] de %2$s." -#: ../../include/enotify.php:155 ../../include/enotify.php:173 +#: ../../include/enotify.php:169 ../../include/enotify.php:187 #, php-format msgid "You may visit their profile at %s" msgstr "Vi povas vidi la profilon de li aŭ ŝi ĉe %s" -#: ../../include/enotify.php:157 +#: ../../include/enotify.php:171 #, php-format msgid "Please visit %s to approve or reject the introduction." msgstr "Bonvolu viziti %s por aprobi aŭ malaprobi la prezenton." -#: ../../include/enotify.php:164 +#: ../../include/enotify.php:178 msgid "[Friendica:Notify] Friend suggestion received" msgstr "[Friendica:Atentigo] Ricevis amikosugeston" -#: ../../include/enotify.php:165 +#: ../../include/enotify.php:179 #, php-format msgid "You've received a friend suggestion from '%1$s' at %2$s" msgstr "Vi ricevis amikosugeston de '%1$s' ĉe %2$s" -#: ../../include/enotify.php:166 +#: ../../include/enotify.php:180 #, php-format msgid "" "You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s." msgstr "Vi ricevis [url=%1$s]amikosugeston[/url] pri %2$s de %3$s." -#: ../../include/enotify.php:171 +#: ../../include/enotify.php:185 msgid "Name:" msgstr "Nomo:" -#: ../../include/enotify.php:172 +#: ../../include/enotify.php:186 msgid "Photo:" msgstr "Bildo:" -#: ../../include/enotify.php:175 +#: ../../include/enotify.php:189 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "Bonvolu viziti %s por aprobi aŭ malaprobi la sugeston." @@ -7256,18 +7506,23 @@ msgstr "Ne eblas ricevi kontaktinformojn." msgid "following" msgstr "sekvanta" -#: ../../include/items.php:2888 +#: ../../include/items.php:2991 msgid "A new person is sharing with you at " msgstr "Nova persono kunhavigas kun vi ĉe " -#: ../../include/items.php:2888 +#: ../../include/items.php:2991 msgid "You have a new follower at " msgstr "Vi havas novan sekvanton ĉe " -#: ../../include/items.php:3520 +#: ../../include/items.php:3660 msgid "Archives" msgstr "Arkivoj" +#: ../../include/bb2diaspora.php:286 ../../include/bb2diaspora.php:296 +#: ../../include/bb2diaspora.php:297 +msgid "image/photo" +msgstr "bildo/foto" + #: ../../include/user.php:38 msgid "An invitation is required." msgstr "Invio bezonata." @@ -7358,252 +7613,142 @@ msgstr "La sekuriga ĵetono de la formo estis malĝusta. Tio verŝajne okazis ĉ msgid "stopped following" msgstr "ne plu sekvas" -#: ../../include/Contact.php:218 ../../include/conversation.php:842 +#: ../../include/Contact.php:218 ../../include/conversation.php:915 msgid "View Status" msgstr "Vidi Staton" -#: ../../include/Contact.php:219 ../../include/conversation.php:843 +#: ../../include/Contact.php:219 ../../include/conversation.php:916 msgid "View Profile" msgstr "Vidi Profilon" -#: ../../include/Contact.php:220 ../../include/conversation.php:844 +#: ../../include/Contact.php:220 ../../include/conversation.php:917 msgid "View Photos" msgstr "Vidi Bildojn" #: ../../include/Contact.php:221 ../../include/Contact.php:234 -#: ../../include/conversation.php:845 +#: ../../include/conversation.php:918 msgid "Network Posts" msgstr "Enretaj Afiŝoj" #: ../../include/Contact.php:222 ../../include/Contact.php:234 -#: ../../include/conversation.php:846 +#: ../../include/conversation.php:919 msgid "Edit Contact" msgstr "Redakti Kontakton" #: ../../include/Contact.php:223 ../../include/Contact.php:234 -#: ../../include/conversation.php:847 +#: ../../include/conversation.php:920 msgid "Send PM" msgstr "Sendi PM" -#: ../../include/conversation.php:163 +#: ../../include/conversation.php:224 msgid "post/item" msgstr "afiŝo/elemento" -#: ../../include/conversation.php:164 +#: ../../include/conversation.php:225 #, php-format msgid "%1$s marked %2$s's %3$s as favorite" msgstr "%1$s markis la %3$s de %2$s kiel preferita." -#: ../../include/conversation.php:327 ../../include/conversation.php:608 -msgid "Select" -msgstr "Elekti" - -#: ../../include/conversation.php:344 ../../include/conversation.php:701 -#: ../../include/conversation.php:702 -#, php-format -msgid "View %s's profile @ %s" -msgstr "Vidi la profilon de %s ĉe %s" - -#: ../../include/conversation.php:354 ../../include/conversation.php:713 -#, php-format -msgid "%s from %s" -msgstr "%s de %s" - -#: ../../include/conversation.php:369 -msgid "View in context" -msgstr "Vidi kun kunteksto" - -#: ../../include/conversation.php:475 -#, php-format -msgid "%d comment" -msgid_plural "%d comments" -msgstr[0] "%d komento" -msgstr[1] "%d komentoj" - -#: ../../include/conversation.php:554 -msgid "like" -msgstr "ŝati" - -#: ../../include/conversation.php:555 -msgid "dislike" -msgstr "malŝati" - -#: ../../include/conversation.php:557 -msgid "Share this" -msgstr "Kunhavigi ĉi tiun" - -#: ../../include/conversation.php:557 -msgid "share" -msgstr "kunhavigi" - -#: ../../include/conversation.php:581 -msgid "Bold" -msgstr "Grasa" - -#: ../../include/conversation.php:582 -msgid "Italic" -msgstr "Kursiva" - -#: ../../include/conversation.php:583 -msgid "Underline" -msgstr "Substreki" - -#: ../../include/conversation.php:584 -msgid "Quote" -msgstr "Citaĵo" - -#: ../../include/conversation.php:585 -msgid "Code" -msgstr "Kodo" - -#: ../../include/conversation.php:586 -msgid "Image" -msgstr "Bildo" - -#: ../../include/conversation.php:587 -msgid "Link" -msgstr "Ligilo" - -#: ../../include/conversation.php:588 -msgid "Video" -msgstr "Video" - -#: ../../include/conversation.php:621 -msgid "add star" -msgstr "aldoni stelon" - -#: ../../include/conversation.php:622 -msgid "remove star" -msgstr "forpreni stelon" - -#: ../../include/conversation.php:623 -msgid "toggle star status" -msgstr "ŝalti/malŝalti steloŝtato" - -#: ../../include/conversation.php:626 -msgid "starred" -msgstr "steligita" - -#: ../../include/conversation.php:627 -msgid "add tag" -msgstr "aldoni markon" - -#: ../../include/conversation.php:631 -msgid "save to folder" -msgstr "konservi en dosierujo" - -#: ../../include/conversation.php:703 -msgid "to" -msgstr "al" - -#: ../../include/conversation.php:704 -msgid "Wall-to-Wall" -msgstr "Muro-al-Muro" - -#: ../../include/conversation.php:705 -msgid "via Wall-To-Wall:" -msgstr "per Muro-al-Muro:" - -#: ../../include/conversation.php:750 +#: ../../include/conversation.php:823 msgid "Delete Selected Items" msgstr "Forviŝi Elektitajn Elementojn" -#: ../../include/conversation.php:905 +#: ../../include/conversation.php:978 #, php-format msgid "%s likes this." msgstr "%s ŝatas tiun." -#: ../../include/conversation.php:905 +#: ../../include/conversation.php:978 #, php-format msgid "%s doesn't like this." msgstr "%s malŝatas tiun." -#: ../../include/conversation.php:909 +#: ../../include/conversation.php:982 #, php-format msgid "<span %1$s>%2$d people</span> like this." msgstr "<span %1$s>%2$d homoj</span> ŝatas tiun." -#: ../../include/conversation.php:911 +#: ../../include/conversation.php:984 #, php-format msgid "<span %1$s>%2$d people</span> don't like this." msgstr "<span %1$s>%2$d homoj</span>malŝatas tiun." -#: ../../include/conversation.php:917 +#: ../../include/conversation.php:990 msgid "and" msgstr "kaj" -#: ../../include/conversation.php:920 +#: ../../include/conversation.php:993 #, php-format msgid ", and %d other people" msgstr ", kaj %d aliaj homoj." -#: ../../include/conversation.php:921 +#: ../../include/conversation.php:994 #, php-format msgid "%s like this." msgstr "%s ŝatas tiun." -#: ../../include/conversation.php:921 +#: ../../include/conversation.php:994 #, php-format msgid "%s don't like this." msgstr "%s malŝatas tiun." -#: ../../include/conversation.php:946 +#: ../../include/conversation.php:1019 msgid "Visible to <strong>everybody</strong>" msgstr "Videbla al <strong>ĉiuj</strong>" -#: ../../include/conversation.php:948 +#: ../../include/conversation.php:1021 msgid "Please enter a video link/URL:" msgstr "Bonvolu entajpi ligilon/adreson de video:" -#: ../../include/conversation.php:949 +#: ../../include/conversation.php:1022 msgid "Please enter an audio link/URL:" msgstr "Bonvolu entajpi ligilon/adreson de sono:" -#: ../../include/conversation.php:950 +#: ../../include/conversation.php:1023 msgid "Tag term:" msgstr "Markfrazo:" -#: ../../include/conversation.php:952 +#: ../../include/conversation.php:1025 msgid "Where are you right now?" msgstr "Kie vi estas nun?" -#: ../../include/conversation.php:995 +#: ../../include/conversation.php:1068 msgid "upload photo" msgstr "alŝuti bildon" -#: ../../include/conversation.php:997 +#: ../../include/conversation.php:1070 msgid "attach file" msgstr "kunsendi dosieron" -#: ../../include/conversation.php:999 +#: ../../include/conversation.php:1072 msgid "web link" msgstr "TTT ligilo" -#: ../../include/conversation.php:1000 +#: ../../include/conversation.php:1073 msgid "Insert video link" msgstr "Alglui ligilon de video" -#: ../../include/conversation.php:1001 +#: ../../include/conversation.php:1074 msgid "video link" msgstr "video ligilo" -#: ../../include/conversation.php:1002 +#: ../../include/conversation.php:1075 msgid "Insert audio link" msgstr "Alglui ligilon de sono" -#: ../../include/conversation.php:1003 +#: ../../include/conversation.php:1076 msgid "audio link" msgstr "sono ligilo" -#: ../../include/conversation.php:1005 +#: ../../include/conversation.php:1078 msgid "set location" msgstr "agordi lokon" -#: ../../include/conversation.php:1007 +#: ../../include/conversation.php:1080 msgid "clear location" msgstr "forviŝi lokon" -#: ../../include/conversation.php:1014 +#: ../../include/conversation.php:1087 msgid "permissions" msgstr "permesoj" @@ -7619,96 +7764,96 @@ msgstr "Tia ago preterpasas la limojn de via abono." msgid "This action is not available under your subscription plan." msgstr "Tia ago ne estas permesita laŭ via abono." -#: ../../boot.php:527 +#: ../../boot.php:564 msgid "Delete this item?" msgstr "Forviŝi ĉi tiun elementon?" -#: ../../boot.php:530 +#: ../../boot.php:567 msgid "show fewer" msgstr "montri malpli" -#: ../../boot.php:725 +#: ../../boot.php:762 #, php-format msgid "Update %s failed. See error logs." msgstr "Malsukcesis ĝisdatigi %s. Vidu la protokolojn." -#: ../../boot.php:727 +#: ../../boot.php:764 #, php-format msgid "Update Error at %s" msgstr "Eraro dum ĝisdatigo ĉe %s" -#: ../../boot.php:827 +#: ../../boot.php:864 msgid "Create a New Account" msgstr "Krei Novan Konton" -#: ../../boot.php:851 +#: ../../boot.php:888 msgid "Nickname or Email address: " msgstr "Kaŝnomo aŭ retpoŝtadreso:" -#: ../../boot.php:852 +#: ../../boot.php:889 msgid "Password: " msgstr "Pasvorto:" -#: ../../boot.php:855 +#: ../../boot.php:892 msgid "Or login using OpenID: " msgstr "Aŭ ensaluti per OpenID:" -#: ../../boot.php:861 +#: ../../boot.php:898 msgid "Forgot your password?" msgstr "Ĉu vi vorgesis vian pasvorton?" -#: ../../boot.php:1028 +#: ../../boot.php:1065 msgid "Edit profile" msgstr "Redakti profilon" -#: ../../boot.php:1088 +#: ../../boot.php:1125 msgid "Message" msgstr "Mesaĝo" -#: ../../boot.php:1204 ../../boot.php:1283 +#: ../../boot.php:1241 ../../boot.php:1320 msgid "g A l F d" msgstr "\\j\\e \\l\\a G\\a \\h\\o\\r\\o, l F d" -#: ../../boot.php:1205 ../../boot.php:1284 +#: ../../boot.php:1242 ../../boot.php:1321 msgid "F d" msgstr "F d" -#: ../../boot.php:1250 ../../boot.php:1324 +#: ../../boot.php:1287 ../../boot.php:1361 msgid "[today]" msgstr "[hodiaŭ]" -#: ../../boot.php:1262 +#: ../../boot.php:1299 msgid "Birthday Reminders" msgstr "Memorigilo pri naskiĝtagoj" -#: ../../boot.php:1263 +#: ../../boot.php:1300 msgid "Birthdays this week:" msgstr "Naskiĝtagoj ĉi-semajne:" -#: ../../boot.php:1317 +#: ../../boot.php:1354 msgid "[No description]" msgstr "[Neniu priskribo]" -#: ../../boot.php:1335 +#: ../../boot.php:1372 msgid "Event Reminders" msgstr "Memorigilo pri Okazoj" -#: ../../boot.php:1336 +#: ../../boot.php:1373 msgid "Events this week:" msgstr "Okazoj ĉi-semajne:" -#: ../../boot.php:1541 +#: ../../boot.php:1578 msgid "Status Messages and Posts" msgstr "Ŝtatmesaĝoj kaj Afiŝoj" -#: ../../boot.php:1547 +#: ../../boot.php:1584 msgid "Profile Details" msgstr "Profildetaloj" -#: ../../boot.php:1562 +#: ../../boot.php:1599 msgid "Events and Calendar" msgstr "Okazoj kaj Kalendaro" -#: ../../boot.php:1568 +#: ../../boot.php:1605 msgid "Only You Can See This" msgstr "Nur Vi Povas Vidi Tiun" diff --git a/view/eo/strings.php b/view/eo/strings.php index 236022993..54e5f15a8 100644 --- a/view/eo/strings.php +++ b/view/eo/strings.php @@ -259,6 +259,39 @@ $a->strings["Connect"] = "Konekti"; $a->strings["No matches"] = "Nenio estas trovita"; $a->strings["Remote privacy information not available."] = "Informoj pri fora privateca ne estas disponebla."; $a->strings["Visible to:"] = "Videbla al:"; +$a->strings["No such group"] = "Grupo ne estas trovita"; +$a->strings["Group is empty"] = "Grupo estas malplena"; +$a->strings["Group: "] = "Grupo:"; +$a->strings["Select"] = "Elekti"; +$a->strings["View %s's profile @ %s"] = "Vidi la profilon de %s ĉe %s"; +$a->strings["%s from %s"] = "%s de %s"; +$a->strings["View in context"] = "Vidi kun kunteksto"; +$a->strings["%d comment"] = array( + 0 => "%d komento", + 1 => "%d komentoj", +); +$a->strings["show more"] = "montri pli"; +$a->strings["like"] = "ŝati"; +$a->strings["dislike"] = "malŝati"; +$a->strings["Share this"] = "Kunhavigi ĉi tiun"; +$a->strings["share"] = "kunhavigi"; +$a->strings["Bold"] = "Grasa"; +$a->strings["Italic"] = "Kursiva"; +$a->strings["Underline"] = "Substreki"; +$a->strings["Quote"] = "Citaĵo"; +$a->strings["Code"] = "Kodo"; +$a->strings["Image"] = "Bildo"; +$a->strings["Link"] = "Ligilo"; +$a->strings["Video"] = "Video"; +$a->strings["add star"] = "aldoni stelon"; +$a->strings["remove star"] = "forpreni stelon"; +$a->strings["toggle star status"] = "ŝalti/malŝalti steloŝtato"; +$a->strings["starred"] = "steligita"; +$a->strings["add tag"] = "aldoni markon"; +$a->strings["save to folder"] = "konservi en dosierujo"; +$a->strings["to"] = "al"; +$a->strings["Wall-to-Wall"] = "Muro-al-Muro"; +$a->strings["via Wall-To-Wall:"] = "per Muro-al-Muro:"; $a->strings["Welcome to %s"] = "Bonvenon ĉe %s"; $a->strings["Invalid request identifier."] = "Nevalida peta identigilo."; $a->strings["Discard"] = "Forviŝi"; @@ -542,9 +575,6 @@ $a->strings["Warning: This group contains %s member from an insecure network."] 1 => "Averto: La grupo enhavas %s membrojn el nesekuraj retejoj.", ); $a->strings["Private messages to this group are at risk of public disclosure."] = "La privateco de privataj mesaĝoj al ĉi tiu grupo ne ĉiam estas garantita."; -$a->strings["No such group"] = "Grupo ne estas trovita"; -$a->strings["Group is empty"] = "Grupo estas malplena"; -$a->strings["Group: "] = "Grupo:"; $a->strings["Contact: "] = "Kontakto:"; $a->strings["Private messages to this person are at risk of public disclosure."] = "La privateco de privataj mesaĝoj al ĉi tiu persono ne ĉiam estas garantita."; $a->strings["Invalid contact."] = "Nevalida kontakto."; @@ -691,6 +721,8 @@ $a->strings["Normal Account"] = "Normala konto"; $a->strings["Soapbox Account"] = "Soapbox Konto"; $a->strings["Community/Celebrity Account"] = "Komunuma/eminentula Konto"; $a->strings["Automatic Friend Account"] = "Aŭtomata Amika Konto"; +$a->strings["Blog Account"] = "Blogkonto"; +$a->strings["Private Forum"] = "Privata Forumo"; $a->strings["Message queues"] = "Mesaĝvicoj"; $a->strings["Administration"] = "Administrado"; $a->strings["Summary"] = "Resumo"; @@ -835,6 +867,7 @@ $a->strings["Login failed."] = "Ensalutado malsukcesis."; $a->strings["Contact added"] = "Aldonis kontakton"; $a->strings["Common Friends"] = "Komunaj Amikoj"; $a->strings["No contacts in common."] = "Neniom da komunaj kontaktoj."; +$a->strings["link"] = "ligilo"; $a->strings["Item has been removed."] = "Elemento estas forviŝita."; $a->strings["Applications"] = "Programoj"; $a->strings["No installed applications."] = "Neniom da instalitaj programoj."; @@ -925,6 +958,17 @@ $a->strings["Existing Page Delegates"] = "Estantaj Delegitoj de la Paĝo"; $a->strings["Potential Delegates"] = "Eblaj Delegitoj"; $a->strings["Add"] = "Aldoni"; $a->strings["No entries."] = "Neniom da afiŝoj."; +$a->strings["Source (bbcode) text:"] = "Fontkodo (bbcode):"; +$a->strings["Source (Diaspora) text to convert to BBcode:"] = "Fontokodo (Diaspora) konvertota al BBcode:"; +$a->strings["Source input: "] = "Fontoenigo:"; +$a->strings["bb2html: "] = "bb2html: "; +$a->strings["bb2html2bb: "] = "bb2html2bb: "; +$a->strings["bb2md: "] = "bb2md: "; +$a->strings["bb2md2html: "] = "bb2md2html: "; +$a->strings["bb2dia2bb: "] = "bb2dia2bb: "; +$a->strings["bb2md2html2bb: "] = "bb2md2html2bb: "; +$a->strings["Source input (Diaspora format): "] = "Fontoenigo (Diaspora formato):"; +$a->strings["diaspora2bb: "] = "diaspora2bb: "; $a->strings["Friend Suggestions"] = "Amikosugestoj"; $a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Neniu sugestoj disponeblas. Se ĉi tiu estas nova retejo, bonvolu reprovi post 24 horoj."; $a->strings["Ignore/Hide"] = "Ignori/Kaŝi"; @@ -932,6 +976,10 @@ $a->strings["Global Directory"] = "Tutmonda Katalogo"; $a->strings["Find on this site"] = "Trovi en ĉi retejo"; $a->strings["Site Directory"] = "Reteja Katalogo"; $a->strings["Gender: "] = "Sekso:"; +$a->strings["Gender:"] = "Sekso:"; +$a->strings["Status:"] = "Stato:"; +$a->strings["Homepage:"] = "Hejmpaĝo:"; +$a->strings["About:"] = "Pri:"; $a->strings["No entries (some entries may be hidden)."] = "Neniom da afiŝoj (kelkaj afiŝoj eble ne estas videbla)."; $a->strings["%s : Not a valid email address."] = "%s: Ne estas valida retpoŝtadreso."; $a->strings["Please join us on Friendica"] = "Bonvolu aliĝi kun ni ĉe Friendica"; @@ -999,7 +1047,7 @@ $a->strings["Facebook API Key"] = "Facebook API ŝlosilo"; $a->strings["Error: it appears that you have specified the App-ID and -Secret in your .htconfig.php file. As long as they are specified there, they cannot be set using this form.<br><br>"] = "Eraro: Ŝajnas kvazaŭ vi agordis la App-ID kaj la sekreton en via .htconfig.php dosiero. Kiam ili estas agordita tie, vi ne povas agordi ĝin en tiu ĉi formo.<br><br>"; $a->strings["Error: the given API Key seems to be incorrect (the application access token could not be retrieved)."] = "Eraro: La API ŝlosilo aspektas malĝusta (ne eblas ricevi la programa atingoĵetono)."; $a->strings["The given API Key seems to work correctly."] = "La API ŝlosilo ŝajne ĝuste funkcias."; -$a->strings["The correctness of the API Key could not be detected. Somthing strange's going on."] = "Ne povis kontroli la ĝustecon de la API ŝlosilo. Ia stranga afero okazas. "; +$a->strings["The correctness of the API Key could not be detected. Something strange's going on."] = "Ne povis kontroli la ĝusteco de la API ŝlosilo. Stranga afero okazas."; $a->strings["App-ID / API-Key"] = "Programo ID / API Ŝlosilo"; $a->strings["Application secret"] = "Programo sekreto"; $a->strings["Polling Interval in minutes (minimum %1\$s minutes)"] = "Intervalo de enketo en minutoj (minimume %1\$s minutoj)"; @@ -1058,7 +1106,6 @@ $a->strings["Use /expression/ to provide regular expressions"] = "Uzu /expr/ por $a->strings["NSFW Settings saved."] = "NSFW agordoj konservitaj."; $a->strings["%s - Click to open/close"] = "%s - Klaku por malfermi/fermi"; $a->strings["Forums"] = "Forumoj"; -$a->strings["show more"] = "montri pli"; $a->strings["Forums:"] = "Forumoj:"; $a->strings["Page settings updated."] = "Paĝajn agordojn ĝisdatigita."; $a->strings["Page Settings"] = "Paĝaj Agordoj"; @@ -1212,12 +1259,28 @@ $a->strings["Tile Server URL"] = "Adreso de Kahelservilo"; $a->strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Listo de <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">publikaj kahelserviloj</a>"; $a->strings["Default zoom"] = "Defaŭlta zoma faktoro"; $a->strings["The default zoom level. (1:world, 18:highest)"] = "La defaŭlta zoma faktoro. (1:tutmonda, 18:plej proksima)"; +$a->strings["Could NOT install Libravatar successfully.<br>It requires PHP >= 5.3"] = "NE SUKCESIS instali la bibliotekon Libravatar.<br>Ĝi bezonas PHP >= 5.3"; +$a->strings["generic profile image"] = "komuna profilbildo"; +$a->strings["random geometric pattern"] = "loteca geometria skemo"; +$a->strings["monster face"] = "monstrobildo"; +$a->strings["computer generated face"] = "komputita vizaĝo"; +$a->strings["retro arcade style face"] = "retrostila videoludstila vizaĝo"; +$a->strings["Your PHP version %s is lower than the required PHP >= 5.3."] = "Via PHP versio %s estas malpli alta ol la bezonata PHP >= 5.3."; +$a->strings["This addon is not functional on your server."] = "Tiu ĉi kromprogramo ne funkcieblas je via servilo."; +$a->strings["Information"] = "Informo"; +$a->strings["Gravatar addon is installed. Please disable the Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar."] = "La Gravatar kromprogramo estas instalita. Bonvolu malŝalti la Gravatar kromprogramon.<tr>La Libravatar kromprogramo retropaŝos al Gravatar se neniu troveblis ĉe Libravatar."; +$a->strings["Default avatar image"] = "Defaŭlta avatarbildo"; +$a->strings["Select default avatar image if none was found. See README"] = "Elektu la defaŭltan avatar bildon sen neniu troveblis. Legu README."; +$a->strings["Libravatar settings updated."] = "Ĝisdatigis Libravatar agordojn."; $a->strings["Post to libertree"] = "Afiŝi al libertree"; $a->strings["libertree Post Settings"] = "Agordoj por Afiŝoj ĉe libertree"; $a->strings["Enable Libertree Post Plugin"] = "Aktivigi Kromprogramon por Afiŝoj ĉe libertree"; $a->strings["Libertree API token"] = "Libertree API ĵetono"; $a->strings["Libertree site URL"] = "URL adreso de libertree retejo:"; $a->strings["Post to Libertree by default"] = "Defaŭlte afiŝi ĉe Libertree"; +$a->strings["Altpager settings updated."] = "Ĝisdatigis Altpager agordojn."; +$a->strings["Alternate Pagination Setting"] = "Alternativa paĝonumerado agordoj"; +$a->strings["Use links to \"newer\" and \"older\" pages in place of page numbers?"] = "Uzi ligilojn al \"pli nova\" kaj \"pli malnova\" paĝoj anstataŭ paĝnombrojn?"; $a->strings["The MathJax addon renders mathematical formulae written using the LaTeX syntax surrounded by the usual $$ or an eqnarray block in the postings of your wall,network tab and private mail."] = "La Mathjax kromprogramo bildigas matematikajn formulojn skribitajn en la LaTeX sintakso, cirkaŭigita de la komuna $$ aŭ eqnarray bloko en afiŝoj ĉe via muro, Reto folio kaj privataj mesaĝoj."; $a->strings["Use the MathJax renderer"] = "Ĉu uzi la Mathjax bildigilo"; $a->strings["MathJax Base URL"] = "Mathjax Baza URL Adreso"; @@ -1225,12 +1288,7 @@ $a->strings["The URL for the javascript file that should be included to use Math $a->strings["Editplain settings updated."] = "Ĝisdatigis la Editplain agordojn."; $a->strings["Editplain Settings"] = "Agordoj por Editplain"; $a->strings["Disable richtext status editor"] = "Malŝalti la riĉteksto-redaktilon"; -$a->strings["generic profile image"] = "komuna profilbildo"; -$a->strings["random geometric pattern"] = "loteca geometria skemo"; -$a->strings["monster face"] = "monstrobildo"; -$a->strings["computer generated face"] = "komputita vizaĝo"; -$a->strings["retro arcade style face"] = "retrostila videoludstila vizaĝo"; -$a->strings["Default avatar image"] = "Defaŭlta avatarbildo"; +$a->strings["Libravatar addon is installed, too. Please disable Libravatar addon or this Gravatar addon.<br>The Libravatar addon will fall back to Gravatar if nothing was found at Libravatar."] = "La Libravatar kromprogramo estas ankaŭ instaltga. Bonvolu malŝalti la Libravatar kromprogramon.<br>La Libravatar kromprogramo retropaŝos al Gravatar se neniu troveblis ĉe Libravatar."; $a->strings["Select default avatar image if none was found at Gravatar. See README"] = "Elektu defaŭltan avatarbildon se neniu troviĝis ĉe Gravatar. Vidu README."; $a->strings["Rating of images"] = "Pritakso de bildoj"; $a->strings["Select the appropriate avatar rating for your site. See README"] = "Elektu la ĝustan pritakson de via avataro por via retejo. Vidu README."; @@ -1383,17 +1441,13 @@ $a->strings["Alignment"] = "Ĝisrandigo"; $a->strings["Left"] = "Maldekstren"; $a->strings["Center"] = "Centren"; $a->strings["Set colour scheme"] = "Agordi Kolorskemon"; -$a->strings["Gender:"] = "Sekso:"; $a->strings["j F, Y"] = "j F, Y"; $a->strings["j F"] = "j F"; $a->strings["Birthday:"] = "Naskiĝtago:"; $a->strings["Age:"] = "Aĝo:"; -$a->strings["Status:"] = "Stato:"; $a->strings["for %1\$d %2\$s"] = "por %1\$d %2\$s"; -$a->strings["Homepage:"] = "Hejmpaĝo:"; $a->strings["Tags:"] = "Markoj:"; $a->strings["Religion:"] = "Religio:"; -$a->strings["About:"] = "Pri:"; $a->strings["Hobbies/Interests:"] = "Ŝatokupoj/Interesoj:"; $a->strings["Contact information and Social Networks:"] = "Kontaktinformoj kaj Interkonaj Retejoj:"; $a->strings["Musical interests:"] = "Muzaikaj interesoj:"; @@ -1488,6 +1542,8 @@ $a->strings["prev"] = "antaŭa"; $a->strings["first"] = "unua"; $a->strings["last"] = "lasta"; $a->strings["next"] = "sekvanta"; +$a->strings["newer"] = "pli nova"; +$a->strings["older"] = "pli malnova"; $a->strings["No contacts"] = "Neniu kontaktoj"; $a->strings["%d Contact"] = array( 0 => "%d Kontakto", @@ -1605,8 +1661,8 @@ $a->strings["%1\$d %2\$s ago"] = "antaŭ %1\$d %2\$s"; $a->strings["%s's birthday"] = "Naskiĝtago de %s"; $a->strings["Happy Birthday %s"] = "Feliĉan Naskiĝtagon al %s"; $a->strings["From: "] = "De: "; -$a->strings["$1 wrote:"] = "$1 skribis:"; $a->strings["Image/photo"] = "Bildo"; +$a->strings["$1 wrote:"] = "$1 skribis:"; $a->strings["Cannot locate DNS info for database server '%s'"] = "Ne trovis DNS informojn por datumbaza servilo '%s'."; $a->strings["[no subject]"] = "[neniu temo]"; $a->strings["Visible to everybody"] = "Videbla al ĉiuj"; @@ -1627,7 +1683,7 @@ $a->strings["%s commented on an item/conversation you have been following."] = " $a->strings["Please visit %s to view and/or reply to the conversation."] = "Bonvolu viziti %s por vidi aŭ respondi la konversacion."; $a->strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica:Atentigo] %s afiŝis al via profilmuro"; $a->strings["%1\$s posted to your profile wall at %2\$s"] = "%1\$s skribis al via profilmuro ĉe %2\$s"; -$a->strings["%1\$s posted to [url=%2s]your wall[/url]"] = "%1\$s afiŝis al [url=%2s]via muro[/url]"; +$a->strings["%1\$s posted to [url=%2\$s]your wall[/url]"] = "%1\$s afiŝis al [url=%2\$s]via muro[/url]"; $a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica:Atentigo] %s markis vin"; $a->strings["%1\$s tagged you at %2\$s"] = "%1\$s markis vin ĉe %2\$s"; $a->strings["%1\$s [url=%2\$s]tagged you[/url]."] = "%1\$s [url=%2\$s]markis vin[/url]."; @@ -1660,6 +1716,7 @@ $a->strings["following"] = "sekvanta"; $a->strings["A new person is sharing with you at "] = "Nova persono kunhavigas kun vi ĉe "; $a->strings["You have a new follower at "] = "Vi havas novan sekvanton ĉe "; $a->strings["Archives"] = "Arkivoj"; +$a->strings["image/photo"] = "bildo/foto"; $a->strings["An invitation is required."] = "Invio bezonata."; $a->strings["Invitation could not be verified."] = "Ne povis kontroli la inviton."; $a->strings["Invalid OpenID url"] = "Nevalida OpenID adreso"; @@ -1689,35 +1746,6 @@ $a->strings["Edit Contact"] = "Redakti Kontakton"; $a->strings["Send PM"] = "Sendi PM"; $a->strings["post/item"] = "afiŝo/elemento"; $a->strings["%1\$s marked %2\$s's %3\$s as favorite"] = "%1\$s markis la %3\$s de %2\$s kiel preferita."; -$a->strings["Select"] = "Elekti"; -$a->strings["View %s's profile @ %s"] = "Vidi la profilon de %s ĉe %s"; -$a->strings["%s from %s"] = "%s de %s"; -$a->strings["View in context"] = "Vidi kun kunteksto"; -$a->strings["%d comment"] = array( - 0 => "%d komento", - 1 => "%d komentoj", -); -$a->strings["like"] = "ŝati"; -$a->strings["dislike"] = "malŝati"; -$a->strings["Share this"] = "Kunhavigi ĉi tiun"; -$a->strings["share"] = "kunhavigi"; -$a->strings["Bold"] = "Grasa"; -$a->strings["Italic"] = "Kursiva"; -$a->strings["Underline"] = "Substreki"; -$a->strings["Quote"] = "Citaĵo"; -$a->strings["Code"] = "Kodo"; -$a->strings["Image"] = "Bildo"; -$a->strings["Link"] = "Ligilo"; -$a->strings["Video"] = "Video"; -$a->strings["add star"] = "aldoni stelon"; -$a->strings["remove star"] = "forpreni stelon"; -$a->strings["toggle star status"] = "ŝalti/malŝalti steloŝtato"; -$a->strings["starred"] = "steligita"; -$a->strings["add tag"] = "aldoni markon"; -$a->strings["save to folder"] = "konservi en dosierujo"; -$a->strings["to"] = "al"; -$a->strings["Wall-to-Wall"] = "Muro-al-Muro"; -$a->strings["via Wall-To-Wall:"] = "per Muro-al-Muro:"; $a->strings["Delete Selected Items"] = "Forviŝi Elektitajn Elementojn"; $a->strings["%s likes this."] = "%s ŝatas tiun."; $a->strings["%s doesn't like this."] = "%s malŝatas tiun."; From e477683987a635cad98f2132341e0d4c03fd0899 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Mon, 16 Jul 2012 17:03:23 -0700 Subject: [PATCH 050/658] rev update --- boot.php | 2 +- util/messages.po | 42 +++++++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/boot.php b/boot.php index a33289a2b..64ec10549 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1405' ); +define ( 'FRIENDICA_VERSION', '3.0.1406' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index f68f6213b..5c96401d1 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1405\n" +"Project-Id-Version: 3.0.1406\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-15 10:00-0700\n" +"POT-Creation-Date: 2012-07-16 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -7178,81 +7178,81 @@ msgstr "" msgid "Miscellaneous" msgstr "" -#: ../../include/datetime.php:131 ../../include/datetime.php:263 +#: ../../include/datetime.php:153 ../../include/datetime.php:285 msgid "year" msgstr "" -#: ../../include/datetime.php:136 ../../include/datetime.php:264 +#: ../../include/datetime.php:158 ../../include/datetime.php:286 msgid "month" msgstr "" -#: ../../include/datetime.php:141 ../../include/datetime.php:266 +#: ../../include/datetime.php:163 ../../include/datetime.php:288 msgid "day" msgstr "" -#: ../../include/datetime.php:254 +#: ../../include/datetime.php:276 msgid "never" msgstr "" -#: ../../include/datetime.php:260 +#: ../../include/datetime.php:282 msgid "less than a second ago" msgstr "" -#: ../../include/datetime.php:263 +#: ../../include/datetime.php:285 msgid "years" msgstr "" -#: ../../include/datetime.php:264 +#: ../../include/datetime.php:286 msgid "months" msgstr "" -#: ../../include/datetime.php:265 +#: ../../include/datetime.php:287 msgid "week" msgstr "" -#: ../../include/datetime.php:265 +#: ../../include/datetime.php:287 msgid "weeks" msgstr "" -#: ../../include/datetime.php:266 +#: ../../include/datetime.php:288 msgid "days" msgstr "" -#: ../../include/datetime.php:267 +#: ../../include/datetime.php:289 msgid "hour" msgstr "" -#: ../../include/datetime.php:267 +#: ../../include/datetime.php:289 msgid "hours" msgstr "" -#: ../../include/datetime.php:268 +#: ../../include/datetime.php:290 msgid "minute" msgstr "" -#: ../../include/datetime.php:268 +#: ../../include/datetime.php:290 msgid "minutes" msgstr "" -#: ../../include/datetime.php:269 +#: ../../include/datetime.php:291 msgid "second" msgstr "" -#: ../../include/datetime.php:269 +#: ../../include/datetime.php:291 msgid "seconds" msgstr "" -#: ../../include/datetime.php:278 +#: ../../include/datetime.php:300 #, php-format msgid "%1$d %2$s ago" msgstr "" -#: ../../include/datetime.php:450 ../../include/items.php:1561 +#: ../../include/datetime.php:472 ../../include/items.php:1561 #, php-format msgid "%s's birthday" msgstr "" -#: ../../include/datetime.php:451 ../../include/items.php:1562 +#: ../../include/datetime.php:473 ../../include/items.php:1562 #, php-format msgid "Happy Birthday %s" msgstr "" From 749ae9b29720b880d6afbb943a3099fb39f82536 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Tue, 17 Jul 2012 18:33:04 -0700 Subject: [PATCH 051/658] filter the protocol specifier in bbcode links. --- boot.php | 2 +- include/bbcode.php | 1 + util/messages.po | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/boot.php b/boot.php index 64ec10549..6695d4e52 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1406' ); +define ( 'FRIENDICA_VERSION', '3.0.1407' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/include/bbcode.php b/include/bbcode.php index 63dd9695e..5449fae3e 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -386,6 +386,7 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) { // fix any escaped ampersands that may have been converted into links $Text = preg_replace("/\<(.*?)(src|href)=(.*?)\&\;(.*?)\>/ism",'<$1$2=$3&$4>',$Text); + $Text = preg_replace("/\<(.*?)(src|href)=\"[^hfm](.*?)\>/ism",'<$1$2="">',$Text); if($saved_image) $Text = bb_replace_images($Text, $saved_image); diff --git a/util/messages.po b/util/messages.po index 5c96401d1..7b4d43bcf 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1406\n" +"Project-Id-Version: 3.0.1407\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-16 10:00-0700\n" +"POT-Creation-Date: 2012-07-17 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" From 222635d15afba7d3a7aef002e90d06f549961012 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Wed, 18 Jul 2012 21:06:38 +0200 Subject: [PATCH 052/658] parse_url: Just added a comment for future elements that should be added as well. --- mod/parse_url.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/mod/parse_url.php b/mod/parse_url.php index 3d4018745..061053196 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -1,4 +1,18 @@ <?php +/* To-Do +https://developers.google.com/+/plugins/snippet/ + +<meta itemprop="name" content="Toller Titel"> +<meta itemprop="description" content="Eine tolle Beschreibung"> +<meta itemprop="image" content="http://maple.libertreeproject.org/images/tree-icon.png"> + +<body itemscope itemtype="http://schema.org/Product"> + <h1 itemprop="name">Shiny Trinket</h1> + <img itemprop="image" src="{image-url}" /> + <p itemprop="description">Shiny trinkets are shiny.</p> +</body> +*/ + if(!function_exists('deletenode')) { function deletenode(&$doc, $node) { From ac47edb775bc5ca51ae82747679656077ebde936 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Wed, 18 Jul 2012 16:28:19 -0700 Subject: [PATCH 053/658] rev update --- boot.php | 2 +- util/messages.po | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/boot.php b/boot.php index 6695d4e52..f0e319b97 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1407' ); +define ( 'FRIENDICA_VERSION', '3.0.1408' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index 7b4d43bcf..914ad9ce2 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1407\n" +"Project-Id-Version: 3.0.1408\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-17 10:00-0700\n" +"POT-Creation-Date: 2012-07-18 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" From b6a3471608476d974ab3d74c7d3ddbaa769219a0 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Thu, 19 Jul 2012 15:27:22 -0700 Subject: [PATCH 054/658] rev update --- boot.php | 2 +- util/messages.po | 61 +++++++++++++++++++++++++----------------------- 2 files changed, 33 insertions(+), 30 deletions(-) diff --git a/boot.php b/boot.php index f0e319b97..2e83bbb7f 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1408' ); +define ( 'FRIENDICA_VERSION', '3.0.1409' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index 914ad9ce2..915500799 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1408\n" +"Project-Id-Version: 3.0.1409\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-18 10:00-0700\n" +"POT-Creation-Date: 2012-07-19 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -56,7 +56,7 @@ msgstr "" #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:510 #: ../../addon/facebook/facebook.php:516 ../../addon/dav/layout.fnk.php:353 -#: ../../include/items.php:3593 ../../index.php:309 +#: ../../include/items.php:3651 ../../index.php:309 msgid "Permission denied." msgstr "" @@ -136,7 +136,7 @@ msgstr "" #: ../../mod/profiles.php:577 ../../mod/invite.php:119 #: ../../addon/fromgplus/fromgplus.php:40 #: ../../addon/facebook/facebook.php:619 -#: ../../addon/snautofollow/snautofollow.php:64 +#: ../../addon/snautofollow/snautofollow.php:64 ../../addon/bg/bg.php:90 #: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93 #: ../../addon/nsfw/nsfw.php:57 ../../addon/page/page.php:210 #: ../../addon/planets/planets.php:158 @@ -285,7 +285,7 @@ msgid "Description:" msgstr "" #: ../../mod/events.php:429 ../../mod/directory.php:132 -#: ../../include/event.php:40 ../../include/bb2diaspora.php:469 +#: ../../include/event.php:40 ../../include/bb2diaspora.php:447 #: ../../boot.php:1173 msgid "Location:" msgstr "" @@ -856,7 +856,7 @@ msgstr "" msgid "Confirm" msgstr "" -#: ../../mod/dfrn_request.php:715 ../../include/items.php:2984 +#: ../../mod/dfrn_request.php:715 ../../include/items.php:3042 msgid "[Name Withheld]" msgstr "" @@ -1182,7 +1182,7 @@ msgid "" msgstr "" #: ../../mod/localtime.php:12 ../../include/event.php:11 -#: ../../include/bb2diaspora.php:447 +#: ../../include/bb2diaspora.php:425 msgid "l F d, Y \\@ g:i A" msgstr "" @@ -1890,7 +1890,7 @@ msgstr "" #: ../../addon/facebook/facebook.php:702 #: ../../addon/facebook/facebook.php:1192 #: ../../addon/public_server/public_server.php:62 -#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2993 +#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:3051 #: ../../boot.php:767 msgid "Administrator" msgstr "" @@ -2953,7 +2953,7 @@ msgstr "" #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159 #: ../../mod/admin.php:702 ../../mod/admin.php:901 ../../mod/display.php:37 -#: ../../mod/display.php:142 ../../include/items.php:3472 +#: ../../mod/display.php:142 ../../include/items.php:3530 msgid "Item not found." msgstr "" @@ -3860,7 +3860,7 @@ msgstr "" msgid "No contacts in common." msgstr "" -#: ../../mod/share.php:28 ../../include/bb2diaspora.php:286 +#: ../../mod/share.php:28 msgid "link" msgstr "" @@ -4740,6 +4740,18 @@ msgstr "" msgid "Automatically follow any StatusNet followers/mentioners" msgstr "" +#: ../../addon/bg/bg.php:51 +msgid "Bg settings updated." +msgstr "" + +#: ../../addon/bg/bg.php:82 +msgid "Bg Settings" +msgstr "" + +#: ../../addon/bg/bg.php:84 ../../addon/numfriends/numfriends.php:79 +msgid "How many contacts to display on profile sidebar" +msgstr "" + #: ../../addon/privacy_image_cache/privacy_image_cache.php:184 msgid "Lifetime of the cache (in hours)" msgstr "" @@ -5908,10 +5920,6 @@ msgstr "" msgid "Numfriends Settings" msgstr "" -#: ../../addon/numfriends/numfriends.php:79 -msgid "How many contacts to display on profile sidebar" -msgstr "" - #: ../../addon/gnot/gnot.php:48 msgid "Gnot settings updated." msgstr "" @@ -6758,11 +6766,11 @@ msgstr "" msgid "Ask me" msgstr "" -#: ../../include/event.php:20 ../../include/bb2diaspora.php:453 +#: ../../include/event.php:20 ../../include/bb2diaspora.php:431 msgid "Starts:" msgstr "" -#: ../../include/event.php:30 ../../include/bb2diaspora.php:461 +#: ../../include/event.php:30 ../../include/bb2diaspora.php:439 msgid "Finishes:" msgstr "" @@ -6946,7 +6954,7 @@ msgstr "" msgid "Attachments:" msgstr "" -#: ../../include/network.php:842 +#: ../../include/network.php:843 msgid "view full size" msgstr "" @@ -7247,12 +7255,12 @@ msgstr "" msgid "%1$d %2$s ago" msgstr "" -#: ../../include/datetime.php:472 ../../include/items.php:1561 +#: ../../include/datetime.php:472 ../../include/items.php:1620 #, php-format msgid "%s's birthday" msgstr "" -#: ../../include/datetime.php:473 ../../include/items.php:1562 +#: ../../include/datetime.php:473 ../../include/items.php:1621 #, php-format msgid "Happy Birthday %s" msgstr "" @@ -7261,11 +7269,11 @@ msgstr "" msgid "From: " msgstr "" -#: ../../include/bbcode.php:102 ../../include/bbcode.php:313 +#: ../../include/bbcode.php:102 ../../include/bbcode.php:317 msgid "Image/photo" msgstr "" -#: ../../include/bbcode.php:278 ../../include/bbcode.php:298 +#: ../../include/bbcode.php:282 ../../include/bbcode.php:302 msgid "$1 wrote:" msgstr "" @@ -7506,23 +7514,18 @@ msgstr "" msgid "following" msgstr "" -#: ../../include/items.php:2991 +#: ../../include/items.php:3049 msgid "A new person is sharing with you at " msgstr "" -#: ../../include/items.php:2991 +#: ../../include/items.php:3049 msgid "You have a new follower at " msgstr "" -#: ../../include/items.php:3660 +#: ../../include/items.php:3718 msgid "Archives" msgstr "" -#: ../../include/bb2diaspora.php:286 ../../include/bb2diaspora.php:296 -#: ../../include/bb2diaspora.php:297 -msgid "image/photo" -msgstr "" - #: ../../include/user.php:38 msgid "An invitation is required." msgstr "" From d442bbc482201af7a8a1a4fe889ecae2b3157985 Mon Sep 17 00:00:00 2001 From: friendica <info@friendica.com> Date: Thu, 19 Jul 2012 18:17:16 -0700 Subject: [PATCH 055/658] have fun... --- boot.php | 4 +- include/conversation.php | 43 +++++++++++ include/text.php | 14 ++++ mod/poke.php | 149 +++++++++++++++++++++++++++++++++++++++ view/poke_content.tpl | 29 ++++++++ 5 files changed, 238 insertions(+), 1 deletion(-) create mode 100644 mod/poke.php create mode 100644 view/poke_content.tpl diff --git a/boot.php b/boot.php index 2e83bbb7f..4f52db863 100644 --- a/boot.php +++ b/boot.php @@ -215,7 +215,7 @@ define ( 'TERM_OBJ_PHOTO', 2 ); * various namespaces we may need to parse */ -define ( 'NAMESPACE_ZOT', 'http://purl.org/macgirvin/zot' ); +define ( 'NAMESPACE_ZOT', 'http://purl.org/zot' ); define ( 'NAMESPACE_DFRN' , 'http://purl.org/macgirvin/dfrn/1.0' ); define ( 'NAMESPACE_THREAD' , 'http://purl.org/syndication/thread/1.0' ); define ( 'NAMESPACE_TOMB' , 'http://purl.org/atompub/tombstones/1.0' ); @@ -250,6 +250,8 @@ define ( 'ACTIVITY_UPDATE', NAMESPACE_ACTIVITY_SCHEMA . 'update' ); define ( 'ACTIVITY_TAG', NAMESPACE_ACTIVITY_SCHEMA . 'tag' ); define ( 'ACTIVITY_FAVORITE', NAMESPACE_ACTIVITY_SCHEMA . 'favorite' ); +define ( 'ACTIVITY_POKE', NAMESPACE_ZOT . '/activity/poke' ); + define ( 'ACTIVITY_OBJ_COMMENT', NAMESPACE_ACTIVITY_SCHEMA . 'comment' ); define ( 'ACTIVITY_OBJ_NOTE', NAMESPACE_ACTIVITY_SCHEMA . 'note' ); define ( 'ACTIVITY_OBJ_PERSON', NAMESPACE_ACTIVITY_SCHEMA . 'person' ); diff --git a/include/conversation.php b/include/conversation.php index 546e27db6..44cd92c39 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -162,6 +162,49 @@ function localize_item(&$item){ $item['body'] = sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$Bphoto; } + if (stristr($item['verb'],ACTIVITY_POKE)) { + $verb = urldecode(substr($item['verb'],strpos($item['verb'],'#')+1)); + if(! $verb) + return; + if ($item['object-type']=="" || $item['object-type']!== ACTIVITY_OBJ_PERSON) return; + + $Aname = $item['author-name']; + $Alink = $item['author-link']; + + $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">"; + + $obj = parse_xml_string($xmlhead.$item['object']); + $links = parse_xml_string($xmlhead."<links>".unxmlify($obj->link)."</links>"); + + $Bname = $obj->title; + $Blink = ""; $Bphoto = ""; + foreach ($links->link as $l){ + $atts = $l->attributes(); + switch($atts['rel']){ + case "alternate": $Blink = $atts['href']; + case "photo": $Bphoto = $atts['href']; + } + + } + + $A = '[url=' . zrl($Alink) . ']' . $Aname . '[/url]'; + $B = '[url=' . zrl($Blink) . ']' . $Bname . '[/url]'; + if ($Bphoto!="") $Bphoto = '[url=' . zrl($Blink) . '][img=80x80]' . $Bphoto . '[/img][/url]'; + + // we can't have a translation string with three positions but no distinguishable text + // So here is the translate string. + + $txt = t('%1$s poked %2$s'); + + // now translate the verb + + $txt = str_replace( t('poked'), t($verb), $txt); + + // then do the sprintf on the translation string + + $item['body'] = sprintf($txt, $A, $B). "\n\n\n" . $Bphoto; + + } if ($item['verb']===ACTIVITY_TAG){ $r = q("SELECT * from `item`,`contact` WHERE `item`.`contact-id`=`contact`.`id` AND `item`.`uri`='%s';", diff --git a/include/text.php b/include/text.php index 83819d095..a390a2855 100644 --- a/include/text.php +++ b/include/text.php @@ -706,6 +706,20 @@ function linkify($s) { return($s); }} +function get_poke_verbs() { + + // index is present tense verb + // value is array containing past tense verb, translation of present, translation of past + + $arr = array( + 'poke' => array( 'poked', t('poke'), t('poked')), + 'prod' => array( 'prodded', t('prod'), t('prodded')), + 'slap' => array( 'slapped', t('slap'), t('slapped')), + 'finger' => array( 'fingered', t('finger'), t('fingered')) + ); + call_hooks('poke_verbs', $arr); + return $arr; +} /** * diff --git a/mod/poke.php b/mod/poke.php new file mode 100644 index 000000000..29b732f42 --- /dev/null +++ b/mod/poke.php @@ -0,0 +1,149 @@ +<?php + +require_once('include/security.php'); +require_once('include/bbcode.php'); +require_once('include/items.php'); + + +function poke_init(&$a) { + + if(! local_user()) + return; + + $uid = local_user(); + $verb = notags(trim($_GET['verb'])); + + if(! $verb) + return; + + $verbs = get_poke_verbs(); + + if(! array_key_exists($verb,$verbs)) + return; + + $activity = ACTIVITY_POKE . '#' . urlencode($verbs[$verb][0]); + + $contact_id = intval($_GET['cid']); + if(! $contact_id) + return; + + + logger('poke: verb ' . $verb . ' contact ' . $contact_id, LOGGER_DEBUG); + + + $r = q("SELECT * FROM `contact` WHERE `id` = %d and `uid` = %d LIMIT 1", + intval($contact_id), + intval($uid) + ); + + if(! count($r)) { + logger('poke: no contact ' . $contact_id); + return; + } + + $target = $r[0]; + + $poster = $a->contact; + + $uri = item_new_uri($a->get_hostname(),$owner_uid); + + $arr = array(); + + $arr['uid'] = $uid; + $arr['uri'] = $uri; + $arr['parent-uri'] = $uri; + $arr['type'] = 'activity'; + $arr['wall'] = 1; + $arr['contact-id'] = $target['id']; + $arr['owner-name'] = $poster['name']; + $arr['owner-link'] = $poster['url']; + $arr['owner-avatar'] = $poster['thumb']; + $arr['author-name'] = $poster['name']; + $arr['author-link'] = $poster['url']; + $arr['author-avatar'] = $poster['thumb']; + $arr['title'] = ''; + $arr['allow_cid'] = $a->user['allow_cid']; + $arr['allow_gid'] = $a->user['allow_gid']; + $arr['deny_cid'] = $a->user['deny_cid']; + $arr['deny_gid'] = $a->user['deny_gid']; + $arr['last-child'] = 1; + $arr['visible'] = 1; + $arr['verb'] = $activity; + $arr['object-type'] = ACTIVITY_OBJ_PERSON; + + $arr['origin'] = 1; + $arr['body'] = '[url=' . $poster['url'] . ']' . $poster['name'] . '[/url]' . ' ' . t($verbs[$verb][0]) . ' ' . '[url=' . $target['url'] . ']' . $target['name'] . '[/url]'; + + $arr['object'] = '<object><type>' . ACTIVITY_OBJ_PERSON . '</type><title>' . $target['name'] . '' . $a->get_baseurl() . '/contact/' . $target['id'] . ''; + $arr['object'] .= '' . xmlify('' . "\n"); + + $arr['object'] .= xmlify('' . "\n"); + $arr['object'] .= '' . "\n"; + + $item_id = item_store($arr); + if($item_id) { + q("UPDATE `item` SET `plink` = '%s' WHERE `uid` = %d AND `id` = %d LIMIT 1", + dbesc($a->get_baseurl() . '/display/' . $poster['nickname'] . '/' . $item_id), + intval($uid), + intval($item_id) + ); + proc_run('php',"include/notifier.php","tag","$item_id"); + } + + + call_hooks('post_local_end', $arr); + + proc_run('php',"include/notifier.php","like","$post_id"); + + return; +} + + + +function poke_content(&$a) { + + $base = $a->get_baseurl(); + + $a->page['htmlhead'] .= ''; + $a->page['htmlhead'] .= <<< EOT + + +EOT; + + + $verbs = get_poke_verbs(); + + $shortlist = array(); + foreach($verbs as $k => $v) + $shortlist[] = array($k,$v[1]); + + + $tpl = get_markup_template('poke_content.tpl'); + + $o = replace_macros($tpl,array( + '$title' => t('Poke/Prod'), + '$desc' => t('poke, prod or do other things to somebody'), + '$clabel' => t('Recipient'), + '$choice' => t('Choose what you wish to do to recipient'), + '$verbs' => $shortlist, + '$submit' => t('Submit') + )); + + return $o; + +} \ No newline at end of file diff --git a/view/poke_content.tpl b/view/poke_content.tpl new file mode 100644 index 000000000..09b3d8db4 --- /dev/null +++ b/view/poke_content.tpl @@ -0,0 +1,29 @@ +

$title

+ +
$desc
+ +
+
+
+ +
$clabel
+
+ + + +
+
+
$choice
+
+
+ +
+
+ + +
+ From 2f641ecdc86f91bd7e4abfe45de7318d6f6f7024 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 19 Jul 2012 18:50:33 -0700 Subject: [PATCH 056/658] id mismatch --- mod/poke.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/poke.php b/mod/poke.php index 29b732f42..8fe07b4cd 100644 --- a/mod/poke.php +++ b/mod/poke.php @@ -54,7 +54,7 @@ function poke_init(&$a) { $arr['parent-uri'] = $uri; $arr['type'] = 'activity'; $arr['wall'] = 1; - $arr['contact-id'] = $target['id']; + $arr['contact-id'] = $poster['id']; $arr['owner-name'] = $poster['name']; $arr['owner-link'] = $poster['url']; $arr['owner-avatar'] = $poster['thumb']; From b78bd8cc94a3f13a5feb753c1fe6b0fdebfdcbf3 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 19 Jul 2012 19:48:33 -0700 Subject: [PATCH 057/658] duplicate input names --- view/theme/duepuntozero/prv_message.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/duepuntozero/prv_message.tpl b/view/theme/duepuntozero/prv_message.tpl index b5cda9c85..e103497e1 100644 --- a/view/theme/duepuntozero/prv_message.tpl +++ b/view/theme/duepuntozero/prv_message.tpl @@ -9,7 +9,7 @@ $parent
$to
{{ if $showinputs }} - + {{ else }} $select From a54278649f73f1562a89c8e57e9018d9dcf4d9db Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 19 Jul 2012 20:13:40 -0700 Subject: [PATCH 058/658] poke notifications --- boot.php | 1 + include/enotify.php | 18 ++++++++++++++++ include/items.php | 52 ++++++++++++++++++++++++++++++++++++++++++++- mod/settings.php | 3 +++ view/settings.tpl | 1 + 5 files changed, 74 insertions(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 4f52db863..beaaeb247 100644 --- a/boot.php +++ b/boot.php @@ -191,6 +191,7 @@ define ( 'NOTIFY_SUGGEST', 0x0020 ); define ( 'NOTIFY_PROFILE', 0x0040 ); define ( 'NOTIFY_TAGSELF', 0x0080 ); define ( 'NOTIFY_TAGSHARE', 0x0100 ); +define ( 'NOTIFY_POKE', 0x0200 ); define ( 'NOTIFY_SYSTEM', 0x8000 ); diff --git a/include/enotify.php b/include/enotify.php index 814bd06a4..510991476 100644 --- a/include/enotify.php +++ b/include/enotify.php @@ -147,6 +147,24 @@ function notification($params) { $itemlink = $params['link']; } + if($params['type'] == NOTIFY_POKE) { + + $subject = sprintf( t('[Friendica:Notify] %1$s poked you') , $params['source_name']); + $preamble = sprintf( t('%1$s poked you at %2$s') , $params['source_name'], $sitename); + $epreamble = sprintf( t('%1$s [url=%2$s]poked you[/url].') , + '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', + $params['link']); + + $subject = str_replace('poked', t($params['activity']), $subject); + $preamble = str_replace('poked', t($params['activity']), $preamble); + $epreamble = str_replace('poked', t($params['activity']), $epreamble); + + $sitelink = t('Please visit %s to view and/or reply to the conversation.'); + $tsitelink = sprintf( $sitelink, $siteurl ); + $hsitelink = sprintf( $sitelink, '' . $sitename . ''); + $itemlink = $params['link']; + } + if($params['type'] == NOTIFY_TAGSHARE) { $subject = sprintf( t('[Friendica:Notify] %s tagged your post') , $params['source_name']); $preamble = sprintf( t('%1$s tagged your post at %2$s') , $params['source_name'], $sitename); diff --git a/include/items.php b/include/items.php index b933804fd..fe729000c 100755 --- a/include/items.php +++ b/include/items.php @@ -2958,7 +2958,57 @@ function local_delivery($importer,$data) { $datarray['owner-avatar'] = $importer['thumb']; } - $r = item_store($datarray); + $posted_id = item_store($datarray); + + if(stristr($datarray['verb'],ACTIVITY_POKE)) { + $verb = urldecode(substr($datarray['verb'],strpos($datarray['verb'],'#')+1)); + if(! $verb) + continue; + $xo = parse_xml_string($datarray['object'],false); + + if(($xo->type == ACTIVITY_OBJ_PERSON) && ($xo->id)) { + + // somebody was poked/prodded. Was it me? + + $links = parse_xml_string("".unxmlify($xo->link)."",false); + + foreach($links->link as $l) { + $atts = $l->attributes(); + switch($atts['rel']) { + case "alternate": + $Blink = $atts['href']; + break; + default: + break; + } + } + if($Blink && link_compare($Blink,$a->get_baseurl() . '/profile/' . $importer['nickname'])) { + + // send a notification + require_once('include/enotify.php'); + + notification(array( + 'type' => NOTIFY_POKE, + 'notify_flags' => $importer['notify-flags'], + 'language' => $importer['language'], + 'to_name' => $importer['username'], + 'to_email' => $importer['email'], + 'uid' => $importer['importer_uid'], + 'item' => $datarray, + 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id, + 'source_name' => stripslashes($datarray['author-name']), + 'source_link' => $datarray['author-link'], + 'source_photo' => ((link_compare($datarray['author-link'],$importer['url'])) + ? $importer['thumb'] : $datarray['author-avatar']), + 'verb' => $datarray['verb'], + 'otype' => 'person', + 'activity' => $verb, + + )); + } + } + } + continue; } } diff --git a/mod/settings.php b/mod/settings.php index b1c3cf7d4..0d9d35f69 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -373,6 +373,8 @@ function settings_post(&$a) { $notify += intval($_POST['notify6']); if(x($_POST,'notify7')) $notify += intval($_POST['notify7']); + if(x($_POST,'notify8')) + $notify += intval($_POST['notify8']); $email_changed = false; @@ -1025,6 +1027,7 @@ function settings_content(&$a) { '$notify5' => array('notify5', t('You receive a private message'), ($notify & NOTIFY_MAIL), NOTIFY_MAIL, ''), '$notify6' => array('notify6', t('You receive a friend suggestion'), ($notify & NOTIFY_SUGGEST), NOTIFY_SUGGEST, ''), '$notify7' => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, ''), + '$notify8' => array('notify8', t('You are poked/prodded/etc. in a post'), ($notify & NOTIFY_POKE), NOTIFY_POKE, ''), '$h_advn' => t('Advanced Account/Page Type Settings'), diff --git a/view/settings.tpl b/view/settings.tpl index 99ee9b51e..bebd0c12a 100644 --- a/view/settings.tpl +++ b/view/settings.tpl @@ -123,6 +123,7 @@ $group_select {{inc field_intcheckbox.tpl with $field=$notify5 }}{{endinc}} {{inc field_intcheckbox.tpl with $field=$notify6 }}{{endinc}} {{inc field_intcheckbox.tpl with $field=$notify7 }}{{endinc}} +{{inc field_intcheckbox.tpl with $field=$notify8 }}{{endinc}} From 1a75507f784f860e3228a58928e5ac00eb0a216b Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 19 Jul 2012 20:30:40 -0700 Subject: [PATCH 059/658] check permission --- mod/poke.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mod/poke.php b/mod/poke.php index 8fe07b4cd..851396e68 100644 --- a/mod/poke.php +++ b/mod/poke.php @@ -102,6 +102,11 @@ function poke_init(&$a) { function poke_content(&$a) { + if(! local_user()) { + notice( t('Permission denied.') . EOL); + return; + } + $base = $a->get_baseurl(); $a->page['htmlhead'] .= ''; From d1243c9ad78ce75ca82f0c07829e9f277428c149 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 19 Jul 2012 20:54:23 -0700 Subject: [PATCH 060/658] allow to prefill - url/poke?f=&c=nn - nn is contact id --- mod/poke.php | 19 ++++++++++++++++++- view/poke_content.tpl | 4 ++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/mod/poke.php b/mod/poke.php index 851396e68..f4660e624 100644 --- a/mod/poke.php +++ b/mod/poke.php @@ -107,6 +107,21 @@ function poke_content(&$a) { return; } + $name = ''; + $id = ''; + + if(intval($_GET['c'])) { + $r = q("select id,name from contact where id = %d and uid = %d limit 1", + intval($_GET['c']), + intval(local_user()) + ); + if(count($r)) { + $name = $r[0]['name']; + $id = $r[0]['id']; + } + } + + $base = $a->get_baseurl(); $a->page['htmlhead'] .= ''; @@ -146,7 +161,9 @@ EOT; '$clabel' => t('Recipient'), '$choice' => t('Choose what you wish to do to recipient'), '$verbs' => $shortlist, - '$submit' => t('Submit') + '$submit' => t('Submit'), + '$name' => $name, + '$id' => $id )); return $o; diff --git a/view/poke_content.tpl b/view/poke_content.tpl index 09b3d8db4..f81d04c6c 100644 --- a/view/poke_content.tpl +++ b/view/poke_content.tpl @@ -8,8 +8,8 @@
$clabel

- - + +

From 64bd6345827f80b51af06cd66e0c05afb4a3c4f2 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 19 Jul 2012 21:03:31 -0700 Subject: [PATCH 061/658] add poke to contact photo menu --- include/Contact.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/Contact.php b/include/Contact.php index 14e1a52cd..ecc271a8e 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -192,6 +192,7 @@ function contact_photo_menu($contact) { $status_link=""; $photos_link=""; $posts_link=""; + $poke_link=""; $sparkle = false; if($contact['network'] === NETWORK_DFRN) { @@ -211,10 +212,12 @@ function contact_photo_menu($contact) { $pm_url = $a->get_baseurl() . '/message/new/' . $contact['id']; } + $poke_link = $a->get_baseurl() . '/poke/?f=&c=' . $contact['id']; $contact_url = $a->get_baseurl() . '/contacts/' . $contact['id']; $posts_link = $a->get_baseurl() . '/network/?cid=' . $contact['id']; $menu = Array( + t("Poke") => $poke_link, t("View Status") => $status_link, t("View Profile") => $profile_link, t("View Photos") => $photos_link, From 9c72b45f36dcdf141c0698c2e6219bf914827881 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 19 Jul 2012 21:27:22 -0700 Subject: [PATCH 062/658] and the main photo menu --- include/conversation.php | 5 ++++- mod/poke.php | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 44cd92c39..4a9142bb2 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -910,6 +910,7 @@ function item_photo_menu($item){ if(! count($a->contacts)) load_contact_links(local_user()); } + $poke_link=""; $contact_url=""; $pm_url=""; $status_link=""; @@ -939,6 +940,7 @@ function item_photo_menu($item){ } } if(($cid) && (! $item['self'])) { + $poke_link = $a->get_baseurl($ssl_state) . '/poke/?f=&c=' . $cid; $contact_url = $a->get_baseurl($ssl_state) . '/contacts/' . $cid; $posts_link = $a->get_baseurl($ssl_state) . '/network/?cid=' . $cid; @@ -961,6 +963,7 @@ function item_photo_menu($item){ t("Network Posts") => $posts_link, t("Edit Contact") => $contact_url, t("Send PM") => $pm_url, + t("Poke") => $poke_link ); @@ -972,7 +975,7 @@ function item_photo_menu($item){ $o = ""; foreach($menu as $k=>$v){ - if ($v!="") $o .= "
  • $k
  • \n"; + if ($v!="") $o .= "
  • $k
  • \n"; } return $o; }} diff --git a/mod/poke.php b/mod/poke.php index f4660e624..8fdbaa517 100644 --- a/mod/poke.php +++ b/mod/poke.php @@ -150,7 +150,8 @@ EOT; $shortlist = array(); foreach($verbs as $k => $v) - $shortlist[] = array($k,$v[1]); + if($v[1] !== 'NOTRANSLATION') + $shortlist[] = array($k,$v[1]); $tpl = get_markup_template('poke_content.tpl'); From 700569c7d6431c4df37ce8300627adb228a9774e Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 19 Jul 2012 22:40:45 -0700 Subject: [PATCH 063/658] this is the one I'll probably use the most --- include/text.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/text.php b/include/text.php index a390a2855..86df6ad17 100644 --- a/include/text.php +++ b/include/text.php @@ -713,6 +713,7 @@ function get_poke_verbs() { $arr = array( 'poke' => array( 'poked', t('poke'), t('poked')), + 'ping' => array( 'pinged', t('ping'), t('pinged')), 'prod' => array( 'prodded', t('prod'), t('prodded')), 'slap' => array( 'slapped', t('slap'), t('slapped')), 'finger' => array( 'fingered', t('finger'), t('fingered')) From 43d986cab2dd7543f17ecb4719a13f7310f14e37 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 20 Jul 2012 00:47:30 -0700 Subject: [PATCH 064/658] one for the ladies who get poked by undesirables. --- include/text.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/text.php b/include/text.php index 86df6ad17..bfa832425 100644 --- a/include/text.php +++ b/include/text.php @@ -716,7 +716,8 @@ function get_poke_verbs() { 'ping' => array( 'pinged', t('ping'), t('pinged')), 'prod' => array( 'prodded', t('prod'), t('prodded')), 'slap' => array( 'slapped', t('slap'), t('slapped')), - 'finger' => array( 'fingered', t('finger'), t('fingered')) + 'finger' => array( 'fingered', t('finger'), t('fingered')), + 'rebuff' => array( 'rebuffed', t('rebuff'), t('rebuffed')), ); call_hooks('poke_verbs', $arr); return $arr; From 0ff93edeeef9cdb640395deaf1d1df586a809275 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 20 Jul 2012 04:03:32 -0700 Subject: [PATCH 065/658] poke privacy --- mod/poke.php | 12 ++++++++---- view/poke_content.tpl | 5 ++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/mod/poke.php b/mod/poke.php index 8fdbaa517..085415a76 100644 --- a/mod/poke.php +++ b/mod/poke.php @@ -28,6 +28,8 @@ function poke_init(&$a) { return; + $private = ((x($_GET,'private')) ? intval($_GET['private']) : 0); + logger('poke: verb ' . $verb . ' contact ' . $contact_id, LOGGER_DEBUG); @@ -62,13 +64,14 @@ function poke_init(&$a) { $arr['author-link'] = $poster['url']; $arr['author-avatar'] = $poster['thumb']; $arr['title'] = ''; - $arr['allow_cid'] = $a->user['allow_cid']; - $arr['allow_gid'] = $a->user['allow_gid']; - $arr['deny_cid'] = $a->user['deny_cid']; - $arr['deny_gid'] = $a->user['deny_gid']; + $arr['allow_cid'] = (($private) ? '<' . $target['id']. '>' : $a->user['allow_cid']); + $arr['allow_gid'] = (($private) ? '' : $a->user['allow_gid']); + $arr['deny_cid'] = (($private) ? '' : $a->user['deny_cid']); + $arr['deny_gid'] = (($private) ? '' : $a->user['deny_gid']); $arr['last-child'] = 1; $arr['visible'] = 1; $arr['verb'] = $activity; + $arr['private'] = $private; $arr['object-type'] = ACTIVITY_OBJ_PERSON; $arr['origin'] = 1; @@ -162,6 +165,7 @@ EOT; '$clabel' => t('Recipient'), '$choice' => t('Choose what you wish to do to recipient'), '$verbs' => $shortlist, + '$prv_desc' => t('Make this post private'), '$submit' => t('Submit'), '$name' => $name, '$id' => $id diff --git a/view/poke_content.tpl b/view/poke_content.tpl index f81d04c6c..18438787a 100644 --- a/view/poke_content.tpl +++ b/view/poke_content.tpl @@ -23,7 +23,10 @@

    - +
    $prv_desc
    + +
    +
    From 8c83828f839678b0ad0bb975ba6831e493c13aea Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 20 Jul 2012 15:12:21 -0700 Subject: [PATCH 066/658] rev update --- boot.php | 2 +- util/messages.po | 853 +++++++++++++++++++++++++++-------------------- 2 files changed, 484 insertions(+), 371 deletions(-) diff --git a/boot.php b/boot.php index beaaeb247..cc5bb22fb 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1409' ); +define ( 'FRIENDICA_VERSION', '3.0.1410' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index 915500799..fc19fc7f9 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1409\n" +"Project-Id-Version: 3.0.1410\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-19 10:00-0700\n" +"POT-Creation-Date: 2012-07-20 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -37,10 +37,10 @@ msgstr "" #: ../../mod/crepair.php:115 ../../mod/wall_attach.php:44 #: ../../mod/fsuggest.php:78 ../../mod/events.php:140 ../../mod/api.php:26 #: ../../mod/api.php:31 ../../mod/photos.php:135 ../../mod/photos.php:957 -#: ../../mod/editpost.php:10 ../../mod/install.php:151 +#: ../../mod/editpost.php:10 ../../mod/install.php:151 ../../mod/poke.php:109 #: ../../mod/notifications.php:66 ../../mod/contacts.php:145 -#: ../../mod/settings.php:106 ../../mod/settings.php:537 -#: ../../mod/settings.php:542 ../../mod/manage.php:86 ../../mod/network.php:6 +#: ../../mod/settings.php:106 ../../mod/settings.php:539 +#: ../../mod/settings.php:544 ../../mod/manage.php:86 ../../mod/network.php:6 #: ../../mod/notes.php:20 ../../mod/wallmessage.php:9 #: ../../mod/wallmessage.php:33 ../../mod/wallmessage.php:79 #: ../../mod/wallmessage.php:103 ../../mod/attach.php:33 @@ -56,7 +56,7 @@ msgstr "" #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:510 #: ../../addon/facebook/facebook.php:516 ../../addon/dav/layout.fnk.php:353 -#: ../../include/items.php:3651 ../../index.php:309 +#: ../../include/items.php:3701 ../../index.php:309 msgid "Permission denied." msgstr "" @@ -85,8 +85,8 @@ msgstr "" msgid "Return to contact editor" msgstr "" -#: ../../mod/crepair.php:148 ../../mod/settings.php:557 -#: ../../mod/settings.php:583 ../../mod/admin.php:661 ../../mod/admin.php:670 +#: ../../mod/crepair.php:148 ../../mod/settings.php:559 +#: ../../mod/settings.php:585 ../../mod/admin.php:661 ../../mod/admin.php:670 msgid "Name" msgstr "" @@ -127,10 +127,10 @@ msgstr "" #: ../../mod/photos.php:1309 ../../mod/photos.php:1349 #: ../../mod/photos.php:1389 ../../mod/photos.php:1420 #: ../../mod/install.php:246 ../../mod/install.php:284 -#: ../../mod/localtime.php:45 ../../mod/content.php:691 -#: ../../mod/contacts.php:343 ../../mod/settings.php:555 -#: ../../mod/settings.php:709 ../../mod/settings.php:770 -#: ../../mod/settings.php:971 ../../mod/group.php:85 ../../mod/message.php:294 +#: ../../mod/localtime.php:45 ../../mod/poke.php:169 ../../mod/content.php:691 +#: ../../mod/contacts.php:343 ../../mod/settings.php:557 +#: ../../mod/settings.php:711 ../../mod/settings.php:772 +#: ../../mod/settings.php:973 ../../mod/group.php:85 ../../mod/message.php:294 #: ../../mod/message.php:473 ../../mod/admin.php:422 ../../mod/admin.php:658 #: ../../mod/admin.php:794 ../../mod/admin.php:993 ../../mod/admin.php:1080 #: ../../mod/profiles.php:577 ../../mod/invite.php:119 @@ -159,18 +159,18 @@ msgstr "" #: ../../addon/statusnet/statusnet.php:318 #: ../../addon/statusnet/statusnet.php:325 #: ../../addon/statusnet/statusnet.php:353 -#: ../../addon/statusnet/statusnet.php:567 ../../addon/tumblr/tumblr.php:90 +#: ../../addon/statusnet/statusnet.php:576 ../../addon/tumblr/tumblr.php:90 #: ../../addon/numfriends/numfriends.php:85 ../../addon/gnot/gnot.php:88 #: ../../addon/wppost/wppost.php:110 ../../addon/showmore/showmore.php:48 #: ../../addon/piwik/piwik.php:89 ../../addon/twitter/twitter.php:180 -#: ../../addon/twitter/twitter.php:209 ../../addon/twitter/twitter.php:387 +#: ../../addon/twitter/twitter.php:209 ../../addon/twitter/twitter.php:394 #: ../../addon/irc/irc.php:55 ../../addon/blogger/blogger.php:102 #: ../../addon/posterous/posterous.php:103 #: ../../view/theme/cleanzero/config.php:80 #: ../../view/theme/diabook/theme.php:757 #: ../../view/theme/diabook/config.php:190 #: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70 -#: ../../include/conversation.php:653 +#: ../../include/conversation.php:696 msgid "Submit" msgstr "" @@ -225,12 +225,12 @@ msgstr "" msgid "Edit event" msgstr "" -#: ../../mod/events.php:304 ../../include/text.php:1094 +#: ../../mod/events.php:304 ../../include/text.php:1110 msgid "link to source" msgstr "" #: ../../mod/events.php:328 ../../view/theme/diabook/theme.php:131 -#: ../../include/nav.php:52 ../../boot.php:1596 +#: ../../include/nav.php:52 ../../boot.php:1599 msgid "Events" msgstr "" @@ -286,7 +286,7 @@ msgstr "" #: ../../mod/events.php:429 ../../mod/directory.php:132 #: ../../include/event.php:40 ../../include/bb2diaspora.php:447 -#: ../../boot.php:1173 +#: ../../boot.php:1176 msgid "Location:" msgstr "" @@ -299,8 +299,8 @@ msgid "Share this event" msgstr "" #: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94 -#: ../../mod/dfrn_request.php:845 ../../mod/settings.php:556 -#: ../../mod/settings.php:582 ../../addon/js_upload/js_upload.php:45 +#: ../../mod/dfrn_request.php:845 ../../mod/settings.php:558 +#: ../../mod/settings.php:584 ../../addon/js_upload/js_upload.php:45 msgid "Cancel" msgstr "" @@ -344,30 +344,30 @@ msgid "" msgstr "" #: ../../mod/api.php:105 ../../mod/dfrn_request.php:833 -#: ../../mod/settings.php:887 ../../mod/settings.php:893 -#: ../../mod/settings.php:901 ../../mod/settings.php:905 -#: ../../mod/settings.php:910 ../../mod/settings.php:916 -#: ../../mod/settings.php:922 ../../mod/settings.php:928 -#: ../../mod/settings.php:958 ../../mod/settings.php:959 +#: ../../mod/settings.php:889 ../../mod/settings.php:895 +#: ../../mod/settings.php:903 ../../mod/settings.php:907 +#: ../../mod/settings.php:912 ../../mod/settings.php:918 +#: ../../mod/settings.php:924 ../../mod/settings.php:930 #: ../../mod/settings.php:960 ../../mod/settings.php:961 -#: ../../mod/settings.php:962 ../../mod/register.php:234 +#: ../../mod/settings.php:962 ../../mod/settings.php:963 +#: ../../mod/settings.php:964 ../../mod/register.php:234 #: ../../mod/profiles.php:554 msgid "Yes" msgstr "" #: ../../mod/api.php:106 ../../mod/dfrn_request.php:834 -#: ../../mod/settings.php:887 ../../mod/settings.php:893 -#: ../../mod/settings.php:901 ../../mod/settings.php:905 -#: ../../mod/settings.php:910 ../../mod/settings.php:916 -#: ../../mod/settings.php:922 ../../mod/settings.php:928 -#: ../../mod/settings.php:958 ../../mod/settings.php:959 +#: ../../mod/settings.php:889 ../../mod/settings.php:895 +#: ../../mod/settings.php:903 ../../mod/settings.php:907 +#: ../../mod/settings.php:912 ../../mod/settings.php:918 +#: ../../mod/settings.php:924 ../../mod/settings.php:930 #: ../../mod/settings.php:960 ../../mod/settings.php:961 -#: ../../mod/settings.php:962 ../../mod/register.php:235 +#: ../../mod/settings.php:962 ../../mod/settings.php:963 +#: ../../mod/settings.php:964 ../../mod/register.php:235 #: ../../mod/profiles.php:555 msgid "No" msgstr "" -#: ../../mod/photos.php:46 ../../boot.php:1590 +#: ../../mod/photos.php:46 ../../boot.php:1593 msgid "Photo Albums" msgstr "" @@ -420,9 +420,9 @@ msgstr "" #: ../../mod/photos.php:591 ../../mod/like.php:145 ../../mod/tagger.php:70 #: ../../addon/communityhome/communityhome.php:163 -#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1346 +#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1362 #: ../../include/diaspora.php:1793 ../../include/conversation.php:114 -#: ../../include/conversation.php:187 +#: ../../include/conversation.php:230 msgid "photo" msgstr "" @@ -521,7 +521,7 @@ msgid "Use as profile photo" msgstr "" #: ../../mod/photos.php:1192 ../../mod/content.php:601 -#: ../../include/conversation.php:563 +#: ../../include/conversation.php:606 msgid "Private Message" msgstr "" @@ -562,49 +562,49 @@ msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "" #: ../../mod/photos.php:1327 ../../mod/content.php:665 -#: ../../include/conversation.php:627 +#: ../../include/conversation.php:670 msgid "I like this (toggle)" msgstr "" #: ../../mod/photos.php:1328 ../../mod/content.php:666 -#: ../../include/conversation.php:628 +#: ../../include/conversation.php:671 msgid "I don't like this (toggle)" msgstr "" -#: ../../mod/photos.php:1329 ../../include/conversation.php:1066 +#: ../../mod/photos.php:1329 ../../include/conversation.php:1112 msgid "Share" msgstr "" #: ../../mod/photos.php:1330 ../../mod/editpost.php:104 #: ../../mod/content.php:482 ../../mod/content.php:842 #: ../../mod/wallmessage.php:145 ../../mod/message.php:293 -#: ../../mod/message.php:474 ../../include/conversation.php:444 -#: ../../include/conversation.php:804 ../../include/conversation.php:1085 +#: ../../mod/message.php:474 ../../include/conversation.php:487 +#: ../../include/conversation.php:847 ../../include/conversation.php:1131 msgid "Please wait" msgstr "" #: ../../mod/photos.php:1346 ../../mod/photos.php:1386 #: ../../mod/photos.php:1417 ../../mod/content.php:688 -#: ../../include/conversation.php:650 +#: ../../include/conversation.php:693 msgid "This is you" msgstr "" #: ../../mod/photos.php:1348 ../../mod/photos.php:1388 #: ../../mod/photos.php:1419 ../../mod/content.php:690 -#: ../../include/conversation.php:652 ../../boot.php:565 +#: ../../include/conversation.php:695 ../../boot.php:568 msgid "Comment" msgstr "" #: ../../mod/photos.php:1350 ../../mod/editpost.php:125 -#: ../../mod/content.php:700 ../../include/conversation.php:662 -#: ../../include/conversation.php:1103 +#: ../../mod/content.php:700 ../../include/conversation.php:705 +#: ../../include/conversation.php:1149 msgid "Preview" msgstr "" #: ../../mod/photos.php:1447 ../../mod/content.php:439 -#: ../../mod/content.php:720 ../../mod/settings.php:618 -#: ../../mod/settings.php:707 ../../mod/group.php:168 ../../mod/admin.php:665 -#: ../../include/conversation.php:401 ../../include/conversation.php:682 +#: ../../mod/content.php:720 ../../mod/settings.php:620 +#: ../../mod/settings.php:709 ../../mod/group.php:168 ../../mod/admin.php:665 +#: ../../include/conversation.php:444 ../../include/conversation.php:725 msgid "Delete" msgstr "" @@ -670,28 +670,28 @@ msgstr "" msgid "Edit post" msgstr "" -#: ../../mod/editpost.php:80 ../../include/conversation.php:1052 +#: ../../mod/editpost.php:80 ../../include/conversation.php:1098 msgid "Post to Email" msgstr "" #: ../../mod/editpost.php:95 ../../mod/content.php:707 -#: ../../mod/settings.php:617 ../../include/conversation.php:669 +#: ../../mod/settings.php:619 ../../include/conversation.php:712 msgid "Edit" msgstr "" #: ../../mod/editpost.php:96 ../../mod/wallmessage.php:143 #: ../../mod/message.php:291 ../../mod/message.php:471 -#: ../../include/conversation.php:1067 +#: ../../include/conversation.php:1113 msgid "Upload photo" msgstr "" -#: ../../mod/editpost.php:97 ../../include/conversation.php:1069 +#: ../../mod/editpost.php:97 ../../include/conversation.php:1115 msgid "Attach file" msgstr "" #: ../../mod/editpost.php:98 ../../mod/wallmessage.php:144 #: ../../mod/message.php:292 ../../mod/message.php:472 -#: ../../include/conversation.php:1071 +#: ../../include/conversation.php:1117 msgid "Insert web link" msgstr "" @@ -707,35 +707,35 @@ msgstr "" msgid "Insert Vorbis [.ogg] audio" msgstr "" -#: ../../mod/editpost.php:102 ../../include/conversation.php:1077 +#: ../../mod/editpost.php:102 ../../include/conversation.php:1123 msgid "Set your location" msgstr "" -#: ../../mod/editpost.php:103 ../../include/conversation.php:1079 +#: ../../mod/editpost.php:103 ../../include/conversation.php:1125 msgid "Clear browser location" msgstr "" -#: ../../mod/editpost.php:105 ../../include/conversation.php:1086 +#: ../../mod/editpost.php:105 ../../include/conversation.php:1132 msgid "Permission settings" msgstr "" -#: ../../mod/editpost.php:113 ../../include/conversation.php:1095 +#: ../../mod/editpost.php:113 ../../include/conversation.php:1141 msgid "CC: email addresses" msgstr "" -#: ../../mod/editpost.php:114 ../../include/conversation.php:1096 +#: ../../mod/editpost.php:114 ../../include/conversation.php:1142 msgid "Public post" msgstr "" -#: ../../mod/editpost.php:117 ../../include/conversation.php:1082 +#: ../../mod/editpost.php:117 ../../include/conversation.php:1128 msgid "Set title" msgstr "" -#: ../../mod/editpost.php:119 ../../include/conversation.php:1084 +#: ../../mod/editpost.php:119 ../../include/conversation.php:1130 msgid "Categories (comma-separated list)" msgstr "" -#: ../../mod/editpost.php:120 ../../include/conversation.php:1098 +#: ../../mod/editpost.php:120 ../../include/conversation.php:1144 msgid "Example: bob@example.com, mary@example.com" msgstr "" @@ -856,7 +856,7 @@ msgstr "" msgid "Confirm" msgstr "" -#: ../../mod/dfrn_request.php:715 ../../include/items.php:3042 +#: ../../mod/dfrn_request.php:715 ../../include/items.php:3092 msgid "[Name Withheld]" msgstr "" @@ -908,7 +908,7 @@ msgstr "" msgid "StatusNet/Federated Social Web" msgstr "" -#: ../../mod/dfrn_request.php:839 ../../mod/settings.php:652 +#: ../../mod/dfrn_request.php:839 ../../mod/settings.php:654 #: ../../include/contact_selectors.php:80 msgid "Diaspora" msgstr "" @@ -1215,6 +1215,26 @@ msgstr "" msgid "Please select your timezone:" msgstr "" +#: ../../mod/poke.php:163 +msgid "Poke/Prod" +msgstr "" + +#: ../../mod/poke.php:164 +msgid "poke, prod or do other things to somebody" +msgstr "" + +#: ../../mod/poke.php:165 +msgid "Recipient" +msgstr "" + +#: ../../mod/poke.php:166 +msgid "Choose what you wish to do to recipient" +msgstr "" + +#: ../../mod/poke.php:168 +msgid "Make this post private" +msgstr "" + #: ../../mod/match.php:12 msgid "Profile Match" msgstr "" @@ -1228,7 +1248,7 @@ msgid "is interested in:" msgstr "" #: ../../mod/match.php:58 ../../mod/suggest.php:59 -#: ../../include/contact_widgets.php:9 ../../boot.php:1117 +#: ../../include/contact_widgets.php:9 ../../boot.php:1120 msgid "Connect" msgstr "" @@ -1257,28 +1277,28 @@ msgid "Group: " msgstr "" #: ../../mod/content.php:438 ../../mod/content.php:719 -#: ../../include/conversation.php:400 ../../include/conversation.php:681 +#: ../../include/conversation.php:443 ../../include/conversation.php:724 msgid "Select" msgstr "" #: ../../mod/content.php:455 ../../mod/content.php:812 -#: ../../mod/content.php:813 ../../include/conversation.php:417 -#: ../../include/conversation.php:774 ../../include/conversation.php:775 +#: ../../mod/content.php:813 ../../include/conversation.php:460 +#: ../../include/conversation.php:817 ../../include/conversation.php:818 #, php-format msgid "View %s's profile @ %s" msgstr "" #: ../../mod/content.php:465 ../../mod/content.php:824 -#: ../../include/conversation.php:427 ../../include/conversation.php:786 +#: ../../include/conversation.php:470 ../../include/conversation.php:829 #, php-format msgid "%s from %s" msgstr "" -#: ../../mod/content.php:480 ../../include/conversation.php:442 +#: ../../mod/content.php:480 ../../include/conversation.php:485 msgid "View in context" msgstr "" -#: ../../mod/content.php:586 ../../include/conversation.php:548 +#: ../../mod/content.php:586 ../../include/conversation.php:591 #, php-format msgid "%d comment" msgid_plural "%d comments" @@ -1287,92 +1307,92 @@ msgstr[1] "" #: ../../mod/content.php:587 ../../addon/page/page.php:76 #: ../../addon/page/page.php:110 ../../addon/showmore/showmore.php:87 -#: ../../include/contact_widgets.php:188 ../../include/conversation.php:549 -#: ../../boot.php:566 +#: ../../include/contact_widgets.php:188 ../../include/conversation.php:592 +#: ../../boot.php:569 msgid "show more" msgstr "" -#: ../../mod/content.php:665 ../../include/conversation.php:627 +#: ../../mod/content.php:665 ../../include/conversation.php:670 msgid "like" msgstr "" -#: ../../mod/content.php:666 ../../include/conversation.php:628 +#: ../../mod/content.php:666 ../../include/conversation.php:671 msgid "dislike" msgstr "" -#: ../../mod/content.php:668 ../../include/conversation.php:630 +#: ../../mod/content.php:668 ../../include/conversation.php:673 msgid "Share this" msgstr "" -#: ../../mod/content.php:668 ../../include/conversation.php:630 +#: ../../mod/content.php:668 ../../include/conversation.php:673 msgid "share" msgstr "" -#: ../../mod/content.php:692 ../../include/conversation.php:654 +#: ../../mod/content.php:692 ../../include/conversation.php:697 msgid "Bold" msgstr "" -#: ../../mod/content.php:693 ../../include/conversation.php:655 +#: ../../mod/content.php:693 ../../include/conversation.php:698 msgid "Italic" msgstr "" -#: ../../mod/content.php:694 ../../include/conversation.php:656 +#: ../../mod/content.php:694 ../../include/conversation.php:699 msgid "Underline" msgstr "" -#: ../../mod/content.php:695 ../../include/conversation.php:657 +#: ../../mod/content.php:695 ../../include/conversation.php:700 msgid "Quote" msgstr "" -#: ../../mod/content.php:696 ../../include/conversation.php:658 +#: ../../mod/content.php:696 ../../include/conversation.php:701 msgid "Code" msgstr "" -#: ../../mod/content.php:697 ../../include/conversation.php:659 +#: ../../mod/content.php:697 ../../include/conversation.php:702 msgid "Image" msgstr "" -#: ../../mod/content.php:698 ../../include/conversation.php:660 +#: ../../mod/content.php:698 ../../include/conversation.php:703 msgid "Link" msgstr "" -#: ../../mod/content.php:699 ../../include/conversation.php:661 +#: ../../mod/content.php:699 ../../include/conversation.php:704 msgid "Video" msgstr "" -#: ../../mod/content.php:732 ../../include/conversation.php:694 +#: ../../mod/content.php:732 ../../include/conversation.php:737 msgid "add star" msgstr "" -#: ../../mod/content.php:733 ../../include/conversation.php:695 +#: ../../mod/content.php:733 ../../include/conversation.php:738 msgid "remove star" msgstr "" -#: ../../mod/content.php:734 ../../include/conversation.php:696 +#: ../../mod/content.php:734 ../../include/conversation.php:739 msgid "toggle star status" msgstr "" -#: ../../mod/content.php:737 ../../include/conversation.php:699 +#: ../../mod/content.php:737 ../../include/conversation.php:742 msgid "starred" msgstr "" -#: ../../mod/content.php:738 ../../include/conversation.php:700 +#: ../../mod/content.php:738 ../../include/conversation.php:743 msgid "add tag" msgstr "" -#: ../../mod/content.php:742 ../../include/conversation.php:704 +#: ../../mod/content.php:742 ../../include/conversation.php:747 msgid "save to folder" msgstr "" -#: ../../mod/content.php:814 ../../include/conversation.php:776 +#: ../../mod/content.php:814 ../../include/conversation.php:819 msgid "to" msgstr "" -#: ../../mod/content.php:815 ../../include/conversation.php:777 +#: ../../mod/content.php:815 ../../include/conversation.php:820 msgid "Wall-to-Wall" msgstr "" -#: ../../mod/content.php:816 ../../include/conversation.php:778 +#: ../../mod/content.php:816 ../../include/conversation.php:821 msgid "via Wall-To-Wall:" msgstr "" @@ -1888,10 +1908,10 @@ msgstr "" #: ../../mod/register.php:90 ../../mod/register.php:144 #: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752 #: ../../addon/facebook/facebook.php:702 -#: ../../addon/facebook/facebook.php:1192 +#: ../../addon/facebook/facebook.php:1200 #: ../../addon/public_server/public_server.php:62 -#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:3051 -#: ../../boot.php:767 +#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:3101 +#: ../../boot.php:770 msgid "Administrator" msgstr "" @@ -1901,7 +1921,7 @@ msgid "" "Password reset failed." msgstr "" -#: ../../mod/lostpass.php:83 ../../boot.php:899 +#: ../../mod/lostpass.php:83 ../../boot.php:902 msgid "Password Reset" msgstr "" @@ -1984,7 +2004,7 @@ msgstr "" msgid "Missing some important data!" msgstr "" -#: ../../mod/settings.php:136 ../../mod/settings.php:581 +#: ../../mod/settings.php:136 ../../mod/settings.php:583 msgid "Update" msgstr "" @@ -2012,457 +2032,461 @@ msgstr "" msgid "Password update failed. Please try again." msgstr "" -#: ../../mod/settings.php:386 +#: ../../mod/settings.php:388 msgid " Please use a shorter name." msgstr "" -#: ../../mod/settings.php:388 +#: ../../mod/settings.php:390 msgid " Name too short." msgstr "" -#: ../../mod/settings.php:394 +#: ../../mod/settings.php:396 msgid " Not valid email." msgstr "" -#: ../../mod/settings.php:396 +#: ../../mod/settings.php:398 msgid " Cannot change to that email." msgstr "" -#: ../../mod/settings.php:450 +#: ../../mod/settings.php:452 msgid "Private forum has no privacy permissions. Using default privacy group." msgstr "" -#: ../../mod/settings.php:454 +#: ../../mod/settings.php:456 msgid "Private forum has no privacy permissions and no default privacy group." msgstr "" -#: ../../mod/settings.php:484 ../../addon/facebook/facebook.php:495 +#: ../../mod/settings.php:486 ../../addon/facebook/facebook.php:495 #: ../../addon/impressum/impressum.php:77 #: ../../addon/openstreetmap/openstreetmap.php:80 #: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105 -#: ../../addon/twitter/twitter.php:382 +#: ../../addon/twitter/twitter.php:389 msgid "Settings updated." msgstr "" -#: ../../mod/settings.php:554 ../../mod/settings.php:580 -#: ../../mod/settings.php:616 +#: ../../mod/settings.php:556 ../../mod/settings.php:582 +#: ../../mod/settings.php:618 msgid "Add application" msgstr "" -#: ../../mod/settings.php:558 ../../mod/settings.php:584 -#: ../../addon/statusnet/statusnet.php:561 +#: ../../mod/settings.php:560 ../../mod/settings.php:586 +#: ../../addon/statusnet/statusnet.php:570 msgid "Consumer Key" msgstr "" -#: ../../mod/settings.php:559 ../../mod/settings.php:585 -#: ../../addon/statusnet/statusnet.php:560 +#: ../../mod/settings.php:561 ../../mod/settings.php:587 +#: ../../addon/statusnet/statusnet.php:569 msgid "Consumer Secret" msgstr "" -#: ../../mod/settings.php:560 ../../mod/settings.php:586 +#: ../../mod/settings.php:562 ../../mod/settings.php:588 msgid "Redirect" msgstr "" -#: ../../mod/settings.php:561 ../../mod/settings.php:587 +#: ../../mod/settings.php:563 ../../mod/settings.php:589 msgid "Icon url" msgstr "" -#: ../../mod/settings.php:572 +#: ../../mod/settings.php:574 msgid "You can't edit this application." msgstr "" -#: ../../mod/settings.php:615 +#: ../../mod/settings.php:617 msgid "Connected Apps" msgstr "" -#: ../../mod/settings.php:619 +#: ../../mod/settings.php:621 msgid "Client key starts with" msgstr "" -#: ../../mod/settings.php:620 +#: ../../mod/settings.php:622 msgid "No name" msgstr "" -#: ../../mod/settings.php:621 +#: ../../mod/settings.php:623 msgid "Remove authorization" msgstr "" -#: ../../mod/settings.php:632 +#: ../../mod/settings.php:634 msgid "No Plugin settings configured" msgstr "" -#: ../../mod/settings.php:640 ../../addon/widgets/widgets.php:123 +#: ../../mod/settings.php:642 ../../addon/widgets/widgets.php:123 msgid "Plugin Settings" msgstr "" -#: ../../mod/settings.php:652 ../../mod/settings.php:653 +#: ../../mod/settings.php:654 ../../mod/settings.php:655 #, php-format msgid "Built-in support for %s connectivity is %s" msgstr "" -#: ../../mod/settings.php:652 ../../mod/settings.php:653 +#: ../../mod/settings.php:654 ../../mod/settings.php:655 msgid "enabled" msgstr "" -#: ../../mod/settings.php:652 ../../mod/settings.php:653 +#: ../../mod/settings.php:654 ../../mod/settings.php:655 msgid "disabled" msgstr "" -#: ../../mod/settings.php:653 +#: ../../mod/settings.php:655 msgid "StatusNet" msgstr "" -#: ../../mod/settings.php:685 +#: ../../mod/settings.php:687 msgid "Email access is disabled on this site." msgstr "" -#: ../../mod/settings.php:691 +#: ../../mod/settings.php:693 msgid "Connector Settings" msgstr "" -#: ../../mod/settings.php:696 +#: ../../mod/settings.php:698 msgid "Email/Mailbox Setup" msgstr "" -#: ../../mod/settings.php:697 +#: ../../mod/settings.php:699 msgid "" "If you wish to communicate with email contacts using this service " "(optional), please specify how to connect to your mailbox." msgstr "" -#: ../../mod/settings.php:698 +#: ../../mod/settings.php:700 msgid "Last successful email check:" msgstr "" -#: ../../mod/settings.php:700 +#: ../../mod/settings.php:702 msgid "IMAP server name:" msgstr "" -#: ../../mod/settings.php:701 +#: ../../mod/settings.php:703 msgid "IMAP port:" msgstr "" -#: ../../mod/settings.php:702 +#: ../../mod/settings.php:704 msgid "Security:" msgstr "" -#: ../../mod/settings.php:702 ../../mod/settings.php:707 +#: ../../mod/settings.php:704 ../../mod/settings.php:709 msgid "None" msgstr "" -#: ../../mod/settings.php:703 +#: ../../mod/settings.php:705 msgid "Email login name:" msgstr "" -#: ../../mod/settings.php:704 +#: ../../mod/settings.php:706 msgid "Email password:" msgstr "" -#: ../../mod/settings.php:705 +#: ../../mod/settings.php:707 msgid "Reply-to address:" msgstr "" -#: ../../mod/settings.php:706 +#: ../../mod/settings.php:708 msgid "Send public posts to all email contacts:" msgstr "" -#: ../../mod/settings.php:707 +#: ../../mod/settings.php:709 msgid "Action after import:" msgstr "" -#: ../../mod/settings.php:707 +#: ../../mod/settings.php:709 msgid "Mark as seen" msgstr "" -#: ../../mod/settings.php:707 +#: ../../mod/settings.php:709 msgid "Move to folder" msgstr "" -#: ../../mod/settings.php:708 +#: ../../mod/settings.php:710 msgid "Move to folder:" msgstr "" -#: ../../mod/settings.php:768 +#: ../../mod/settings.php:770 msgid "Display Settings" msgstr "" -#: ../../mod/settings.php:774 +#: ../../mod/settings.php:776 msgid "Display Theme:" msgstr "" -#: ../../mod/settings.php:775 +#: ../../mod/settings.php:777 msgid "Update browser every xx seconds" msgstr "" -#: ../../mod/settings.php:775 +#: ../../mod/settings.php:777 msgid "Minimum of 10 seconds, no maximum" msgstr "" -#: ../../mod/settings.php:776 +#: ../../mod/settings.php:778 msgid "Number of items to display on the network page:" msgstr "" -#: ../../mod/settings.php:776 +#: ../../mod/settings.php:778 msgid "Maximum of 100 items" msgstr "" -#: ../../mod/settings.php:777 +#: ../../mod/settings.php:779 msgid "Don't show emoticons" msgstr "" -#: ../../mod/settings.php:848 +#: ../../mod/settings.php:850 msgid "Normal Account Page" msgstr "" -#: ../../mod/settings.php:849 +#: ../../mod/settings.php:851 msgid "This account is a normal personal profile" msgstr "" -#: ../../mod/settings.php:852 +#: ../../mod/settings.php:854 msgid "Soapbox Page" msgstr "" -#: ../../mod/settings.php:853 +#: ../../mod/settings.php:855 msgid "Automatically approve all connection/friend requests as read-only fans" msgstr "" -#: ../../mod/settings.php:856 +#: ../../mod/settings.php:858 msgid "Community Forum/Celebrity Account" msgstr "" -#: ../../mod/settings.php:857 +#: ../../mod/settings.php:859 msgid "Automatically approve all connection/friend requests as read-write fans" msgstr "" -#: ../../mod/settings.php:860 +#: ../../mod/settings.php:862 msgid "Automatic Friend Page" msgstr "" -#: ../../mod/settings.php:861 +#: ../../mod/settings.php:863 msgid "Automatically approve all connection/friend requests as friends" msgstr "" -#: ../../mod/settings.php:864 +#: ../../mod/settings.php:866 msgid "Private Forum [Experimental]" msgstr "" -#: ../../mod/settings.php:865 +#: ../../mod/settings.php:867 msgid "Private forum - approved members only" msgstr "" -#: ../../mod/settings.php:877 +#: ../../mod/settings.php:879 msgid "OpenID:" msgstr "" -#: ../../mod/settings.php:877 +#: ../../mod/settings.php:879 msgid "(Optional) Allow this OpenID to login to this account." msgstr "" -#: ../../mod/settings.php:887 +#: ../../mod/settings.php:889 msgid "Publish your default profile in your local site directory?" msgstr "" -#: ../../mod/settings.php:893 +#: ../../mod/settings.php:895 msgid "Publish your default profile in the global social directory?" msgstr "" -#: ../../mod/settings.php:901 +#: ../../mod/settings.php:903 msgid "Hide your contact/friend list from viewers of your default profile?" msgstr "" -#: ../../mod/settings.php:905 +#: ../../mod/settings.php:907 msgid "Hide your profile details from unknown viewers?" msgstr "" -#: ../../mod/settings.php:910 +#: ../../mod/settings.php:912 msgid "Allow friends to post to your profile page?" msgstr "" -#: ../../mod/settings.php:916 +#: ../../mod/settings.php:918 msgid "Allow friends to tag your posts?" msgstr "" -#: ../../mod/settings.php:922 +#: ../../mod/settings.php:924 msgid "Allow us to suggest you as a potential friend to new members?" msgstr "" -#: ../../mod/settings.php:928 +#: ../../mod/settings.php:930 msgid "Permit unknown people to send you private mail?" msgstr "" -#: ../../mod/settings.php:936 +#: ../../mod/settings.php:938 msgid "Profile is not published." msgstr "" -#: ../../mod/settings.php:939 ../../mod/profile_photo.php:214 +#: ../../mod/settings.php:941 ../../mod/profile_photo.php:214 msgid "or" msgstr "" -#: ../../mod/settings.php:944 +#: ../../mod/settings.php:946 msgid "Your Identity Address is" msgstr "" -#: ../../mod/settings.php:955 +#: ../../mod/settings.php:957 msgid "Automatically expire posts after this many days:" msgstr "" -#: ../../mod/settings.php:955 +#: ../../mod/settings.php:957 msgid "If empty, posts will not expire. Expired posts will be deleted" msgstr "" -#: ../../mod/settings.php:956 +#: ../../mod/settings.php:958 msgid "Advanced expiration settings" msgstr "" -#: ../../mod/settings.php:957 +#: ../../mod/settings.php:959 msgid "Advanced Expiration" msgstr "" -#: ../../mod/settings.php:958 +#: ../../mod/settings.php:960 msgid "Expire posts:" msgstr "" -#: ../../mod/settings.php:959 +#: ../../mod/settings.php:961 msgid "Expire personal notes:" msgstr "" -#: ../../mod/settings.php:960 +#: ../../mod/settings.php:962 msgid "Expire starred posts:" msgstr "" -#: ../../mod/settings.php:961 +#: ../../mod/settings.php:963 msgid "Expire photos:" msgstr "" -#: ../../mod/settings.php:962 +#: ../../mod/settings.php:964 msgid "Only expire posts by others:" msgstr "" -#: ../../mod/settings.php:969 +#: ../../mod/settings.php:971 msgid "Account Settings" msgstr "" -#: ../../mod/settings.php:977 +#: ../../mod/settings.php:979 msgid "Password Settings" msgstr "" -#: ../../mod/settings.php:978 +#: ../../mod/settings.php:980 msgid "New Password:" msgstr "" -#: ../../mod/settings.php:979 +#: ../../mod/settings.php:981 msgid "Confirm:" msgstr "" -#: ../../mod/settings.php:979 +#: ../../mod/settings.php:981 msgid "Leave password fields blank unless changing" msgstr "" -#: ../../mod/settings.php:983 +#: ../../mod/settings.php:985 msgid "Basic Settings" msgstr "" -#: ../../mod/settings.php:984 ../../include/profile_advanced.php:15 +#: ../../mod/settings.php:986 ../../include/profile_advanced.php:15 msgid "Full Name:" msgstr "" -#: ../../mod/settings.php:985 +#: ../../mod/settings.php:987 msgid "Email Address:" msgstr "" -#: ../../mod/settings.php:986 +#: ../../mod/settings.php:988 msgid "Your Timezone:" msgstr "" -#: ../../mod/settings.php:987 +#: ../../mod/settings.php:989 msgid "Default Post Location:" msgstr "" -#: ../../mod/settings.php:988 +#: ../../mod/settings.php:990 msgid "Use Browser Location:" msgstr "" -#: ../../mod/settings.php:991 +#: ../../mod/settings.php:993 msgid "Security and Privacy Settings" msgstr "" -#: ../../mod/settings.php:993 +#: ../../mod/settings.php:995 msgid "Maximum Friend Requests/Day:" msgstr "" -#: ../../mod/settings.php:993 ../../mod/settings.php:1012 +#: ../../mod/settings.php:995 ../../mod/settings.php:1014 msgid "(to prevent spam abuse)" msgstr "" -#: ../../mod/settings.php:994 +#: ../../mod/settings.php:996 msgid "Default Post Permissions" msgstr "" -#: ../../mod/settings.php:995 +#: ../../mod/settings.php:997 msgid "(click to open/close)" msgstr "" -#: ../../mod/settings.php:1012 +#: ../../mod/settings.php:1014 msgid "Maximum private messages per day from unknown people:" msgstr "" -#: ../../mod/settings.php:1015 +#: ../../mod/settings.php:1017 msgid "Notification Settings" msgstr "" -#: ../../mod/settings.php:1016 +#: ../../mod/settings.php:1018 msgid "By default post a status message when:" msgstr "" -#: ../../mod/settings.php:1017 +#: ../../mod/settings.php:1019 msgid "accepting a friend request" msgstr "" -#: ../../mod/settings.php:1018 +#: ../../mod/settings.php:1020 msgid "joining a forum/community" msgstr "" -#: ../../mod/settings.php:1019 +#: ../../mod/settings.php:1021 msgid "making an interesting profile change" msgstr "" -#: ../../mod/settings.php:1020 +#: ../../mod/settings.php:1022 msgid "Send a notification email when:" msgstr "" -#: ../../mod/settings.php:1021 +#: ../../mod/settings.php:1023 msgid "You receive an introduction" msgstr "" -#: ../../mod/settings.php:1022 +#: ../../mod/settings.php:1024 msgid "Your introductions are confirmed" msgstr "" -#: ../../mod/settings.php:1023 +#: ../../mod/settings.php:1025 msgid "Someone writes on your profile wall" msgstr "" -#: ../../mod/settings.php:1024 +#: ../../mod/settings.php:1026 msgid "Someone writes a followup comment" msgstr "" -#: ../../mod/settings.php:1025 +#: ../../mod/settings.php:1027 msgid "You receive a private message" msgstr "" -#: ../../mod/settings.php:1026 +#: ../../mod/settings.php:1028 msgid "You receive a friend suggestion" msgstr "" -#: ../../mod/settings.php:1027 +#: ../../mod/settings.php:1029 msgid "You are tagged in a post" msgstr "" #: ../../mod/settings.php:1030 +msgid "You are poked/prodded/etc. in a post" +msgstr "" + +#: ../../mod/settings.php:1033 msgid "Advanced Account/Page Type Settings" msgstr "" -#: ../../mod/settings.php:1031 +#: ../../mod/settings.php:1034 msgid "Change the behaviour of this account for special situations" msgstr "" @@ -2564,13 +2588,13 @@ msgstr "" msgid "Invalid contact." msgstr "" -#: ../../mod/notes.php:44 ../../boot.php:1602 +#: ../../mod/notes.php:44 ../../boot.php:1605 msgid "Personal Notes" msgstr "" #: ../../mod/notes.php:63 ../../mod/filer.php:30 #: ../../addon/facebook/facebook.php:770 -#: ../../addon/privacy_image_cache/privacy_image_cache.php:187 +#: ../../addon/privacy_image_cache/privacy_image_cache.php:236 #: ../../addon/dav/layout.fnk.php:384 ../../include/text.php:677 msgid "Save" msgstr "" @@ -2605,7 +2629,7 @@ msgid "No recipient." msgstr "" #: ../../mod/wallmessage.php:124 ../../mod/message.php:250 -#: ../../include/conversation.php:1020 +#: ../../include/conversation.php:1066 msgid "Please enter a link URL:" msgstr "" @@ -2815,7 +2839,7 @@ msgstr "" #: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128 #: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:84 -#: ../../include/nav.php:50 ../../boot.php:1581 +#: ../../include/nav.php:50 ../../boot.php:1584 msgid "Profile" msgstr "" @@ -2919,7 +2943,7 @@ msgstr "" msgid "Choose a nickname: " msgstr "" -#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:865 +#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:868 msgid "Register" msgstr "" @@ -2928,17 +2952,17 @@ msgid "People Search" msgstr "" #: ../../mod/like.php:145 ../../mod/like.php:298 ../../mod/tagger.php:70 -#: ../../addon/facebook/facebook.php:1586 +#: ../../addon/facebook/facebook.php:1594 #: ../../addon/communityhome/communityhome.php:158 #: ../../addon/communityhome/communityhome.php:167 #: ../../view/theme/diabook/theme.php:565 #: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1793 #: ../../include/conversation.php:109 ../../include/conversation.php:118 -#: ../../include/conversation.php:182 ../../include/conversation.php:191 +#: ../../include/conversation.php:225 ../../include/conversation.php:234 msgid "status" msgstr "" -#: ../../mod/like.php:162 ../../addon/facebook/facebook.php:1590 +#: ../../mod/like.php:162 ../../addon/facebook/facebook.php:1598 #: ../../addon/communityhome/communityhome.php:172 #: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1809 #: ../../include/conversation.php:126 @@ -2953,7 +2977,7 @@ msgstr "" #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159 #: ../../mod/admin.php:702 ../../mod/admin.php:901 ../../mod/display.php:37 -#: ../../mod/display.php:142 ../../include/items.php:3530 +#: ../../mod/display.php:142 ../../include/items.php:3580 msgid "Item not found." msgstr "" @@ -2962,7 +2986,7 @@ msgid "Access denied." msgstr "" #: ../../mod/fbrowser.php:25 ../../view/theme/diabook/theme.php:130 -#: ../../include/nav.php:51 ../../boot.php:1587 +#: ../../include/nav.php:51 ../../boot.php:1590 msgid "Photos" msgstr "" @@ -3313,7 +3337,7 @@ msgstr "" msgid "Advanced" msgstr "" -#: ../../mod/admin.php:430 ../../addon/statusnet/statusnet.php:558 +#: ../../mod/admin.php:430 ../../addon/statusnet/statusnet.php:567 msgid "Site name" msgstr "" @@ -3773,7 +3797,7 @@ msgstr "" msgid "FTP Password" msgstr "" -#: ../../mod/profile.php:21 ../../boot.php:1030 +#: ../../mod/profile.php:21 ../../boot.php:1033 msgid "Requested profile is not available." msgstr "" @@ -4168,27 +4192,27 @@ msgstr "" msgid "Edit/Manage Profiles" msgstr "" -#: ../../mod/profiles.php:672 ../../boot.php:1139 +#: ../../mod/profiles.php:672 ../../boot.php:1142 msgid "Change profile photo" msgstr "" -#: ../../mod/profiles.php:673 ../../boot.php:1140 +#: ../../mod/profiles.php:673 ../../boot.php:1143 msgid "Create New Profile" msgstr "" -#: ../../mod/profiles.php:684 ../../boot.php:1150 +#: ../../mod/profiles.php:684 ../../boot.php:1153 msgid "Profile Image" msgstr "" -#: ../../mod/profiles.php:686 ../../boot.php:1153 +#: ../../mod/profiles.php:686 ../../boot.php:1156 msgid "visible to everybody" msgstr "" -#: ../../mod/profiles.php:687 ../../boot.php:1154 +#: ../../mod/profiles.php:687 ../../boot.php:1157 msgid "Edit visibility" msgstr "" -#: ../../mod/filer.php:29 ../../include/conversation.php:1024 +#: ../../mod/filer.php:29 ../../include/conversation.php:1070 msgid "Save to Folder:" msgstr "" @@ -4196,7 +4220,7 @@ msgstr "" msgid "- select -" msgstr "" -#: ../../mod/tagger.php:103 ../../include/conversation.php:199 +#: ../../mod/tagger.php:103 ../../include/conversation.php:242 #, php-format msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "" @@ -4312,17 +4336,17 @@ msgid "Gender: " msgstr "" #: ../../mod/directory.php:134 ../../include/profile_advanced.php:17 -#: ../../boot.php:1175 +#: ../../boot.php:1178 msgid "Gender:" msgstr "" #: ../../mod/directory.php:136 ../../include/profile_advanced.php:37 -#: ../../boot.php:1178 +#: ../../boot.php:1181 msgid "Status:" msgstr "" #: ../../mod/directory.php:138 ../../include/profile_advanced.php:48 -#: ../../boot.php:1180 +#: ../../boot.php:1183 msgid "Homepage:" msgstr "" @@ -4702,23 +4726,23 @@ msgid "" "conflict." msgstr "" -#: ../../addon/facebook/facebook.php:1141 +#: ../../addon/facebook/facebook.php:1149 msgid "View on Friendica" msgstr "" -#: ../../addon/facebook/facebook.php:1174 +#: ../../addon/facebook/facebook.php:1182 msgid "Facebook post failed. Queued for retry." msgstr "" -#: ../../addon/facebook/facebook.php:1214 +#: ../../addon/facebook/facebook.php:1222 msgid "Your Facebook connection became invalid. Please Re-authenticate." msgstr "" -#: ../../addon/facebook/facebook.php:1215 +#: ../../addon/facebook/facebook.php:1223 msgid "Facebook connection became invalid" msgstr "" -#: ../../addon/facebook/facebook.php:1216 +#: ../../addon/facebook/facebook.php:1224 #, php-format msgid "" "Hi %1$s,\n" @@ -4752,23 +4776,23 @@ msgstr "" msgid "How many contacts to display on profile sidebar" msgstr "" -#: ../../addon/privacy_image_cache/privacy_image_cache.php:184 +#: ../../addon/privacy_image_cache/privacy_image_cache.php:233 msgid "Lifetime of the cache (in hours)" msgstr "" -#: ../../addon/privacy_image_cache/privacy_image_cache.php:189 +#: ../../addon/privacy_image_cache/privacy_image_cache.php:238 msgid "Cache Statistics" msgstr "" -#: ../../addon/privacy_image_cache/privacy_image_cache.php:192 +#: ../../addon/privacy_image_cache/privacy_image_cache.php:241 msgid "Number of items" msgstr "" -#: ../../addon/privacy_image_cache/privacy_image_cache.php:194 +#: ../../addon/privacy_image_cache/privacy_image_cache.php:243 msgid "Size of the cache" msgstr "" -#: ../../addon/privacy_image_cache/privacy_image_cache.php:196 +#: ../../addon/privacy_image_cache/privacy_image_cache.php:245 msgid "Delete the whole cache" msgstr "" @@ -4929,7 +4953,7 @@ msgstr "" #: ../../addon/communityhome/communityhome.php:34 #: ../../addon/communityhome/twillingham/communityhome.php:28 #: ../../addon/communityhome/twillingham/communityhome.php:34 -#: ../../include/nav.php:64 ../../boot.php:886 +#: ../../include/nav.php:64 ../../boot.php:889 msgid "Login" msgstr "" @@ -4957,8 +4981,8 @@ msgid "Latest likes" msgstr "" #: ../../addon/communityhome/communityhome.php:155 -#: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1344 -#: ../../include/conversation.php:106 ../../include/conversation.php:179 +#: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1360 +#: ../../include/conversation.php:106 ../../include/conversation.php:222 msgid "event" msgstr "" @@ -5706,6 +5730,22 @@ msgstr "" msgid "Gravatar settings updated." msgstr "" +#: ../../addon/morechoice/morechoice.php:129 +msgid "bitchslap" +msgstr "" + +#: ../../addon/morechoice/morechoice.php:129 +msgid "bitchslapped" +msgstr "" + +#: ../../addon/morechoice/morechoice.php:130 +msgid "shag" +msgstr "" + +#: ../../addon/morechoice/morechoice.php:130 +msgid "shagged" +msgstr "" + #: ../../addon/testdrive/testdrive.php:95 msgid "Your Friendica test account is about to expire." msgstr "" @@ -5880,7 +5920,7 @@ msgstr "" msgid "Clear OAuth configuration" msgstr "" -#: ../../addon/statusnet/statusnet.php:559 +#: ../../addon/statusnet/statusnet.php:568 msgid "API URL" msgstr "" @@ -6093,11 +6133,11 @@ msgstr "" msgid "Send linked #-tags and @-names to Twitter" msgstr "" -#: ../../addon/twitter/twitter.php:389 +#: ../../addon/twitter/twitter.php:396 msgid "Consumer key" msgstr "" -#: ../../addon/twitter/twitter.php:390 +#: ../../addon/twitter/twitter.php:397 msgid "Consumer secret" msgstr "" @@ -6822,127 +6862,175 @@ msgid_plural "%d Contacts" msgstr[0] "" msgstr[1] "" -#: ../../include/text.php:864 +#: ../../include/text.php:715 +msgid "poke" +msgstr "" + +#: ../../include/text.php:715 ../../include/conversation.php:201 +msgid "poked" +msgstr "" + +#: ../../include/text.php:716 +msgid "ping" +msgstr "" + +#: ../../include/text.php:716 +msgid "pinged" +msgstr "" + +#: ../../include/text.php:717 +msgid "prod" +msgstr "" + +#: ../../include/text.php:717 +msgid "prodded" +msgstr "" + +#: ../../include/text.php:718 +msgid "slap" +msgstr "" + +#: ../../include/text.php:718 +msgid "slapped" +msgstr "" + +#: ../../include/text.php:719 +msgid "finger" +msgstr "" + +#: ../../include/text.php:719 +msgid "fingered" +msgstr "" + +#: ../../include/text.php:720 +msgid "rebuff" +msgstr "" + +#: ../../include/text.php:720 +msgid "rebuffed" +msgstr "" + +#: ../../include/text.php:880 msgid "Monday" msgstr "" -#: ../../include/text.php:864 +#: ../../include/text.php:880 msgid "Tuesday" msgstr "" -#: ../../include/text.php:864 +#: ../../include/text.php:880 msgid "Wednesday" msgstr "" -#: ../../include/text.php:864 +#: ../../include/text.php:880 msgid "Thursday" msgstr "" -#: ../../include/text.php:864 +#: ../../include/text.php:880 msgid "Friday" msgstr "" -#: ../../include/text.php:864 +#: ../../include/text.php:880 msgid "Saturday" msgstr "" -#: ../../include/text.php:864 +#: ../../include/text.php:880 msgid "Sunday" msgstr "" -#: ../../include/text.php:868 +#: ../../include/text.php:884 msgid "January" msgstr "" -#: ../../include/text.php:868 +#: ../../include/text.php:884 msgid "February" msgstr "" -#: ../../include/text.php:868 +#: ../../include/text.php:884 msgid "March" msgstr "" -#: ../../include/text.php:868 +#: ../../include/text.php:884 msgid "April" msgstr "" -#: ../../include/text.php:868 +#: ../../include/text.php:884 msgid "May" msgstr "" -#: ../../include/text.php:868 +#: ../../include/text.php:884 msgid "June" msgstr "" -#: ../../include/text.php:868 +#: ../../include/text.php:884 msgid "July" msgstr "" -#: ../../include/text.php:868 +#: ../../include/text.php:884 msgid "August" msgstr "" -#: ../../include/text.php:868 +#: ../../include/text.php:884 msgid "September" msgstr "" -#: ../../include/text.php:868 +#: ../../include/text.php:884 msgid "October" msgstr "" -#: ../../include/text.php:868 +#: ../../include/text.php:884 msgid "November" msgstr "" -#: ../../include/text.php:868 +#: ../../include/text.php:884 msgid "December" msgstr "" -#: ../../include/text.php:954 +#: ../../include/text.php:970 msgid "bytes" msgstr "" -#: ../../include/text.php:974 ../../include/text.php:989 +#: ../../include/text.php:990 ../../include/text.php:1005 msgid "remove" msgstr "" -#: ../../include/text.php:974 ../../include/text.php:989 +#: ../../include/text.php:990 ../../include/text.php:1005 msgid "[remove]" msgstr "" -#: ../../include/text.php:977 +#: ../../include/text.php:993 msgid "Categories:" msgstr "" -#: ../../include/text.php:992 +#: ../../include/text.php:1008 msgid "Filed under:" msgstr "" -#: ../../include/text.php:1008 ../../include/text.php:1020 +#: ../../include/text.php:1024 ../../include/text.php:1036 msgid "Click to open/close" msgstr "" -#: ../../include/text.php:1126 ../../include/user.php:236 +#: ../../include/text.php:1142 ../../include/user.php:236 msgid "default" msgstr "" -#: ../../include/text.php:1138 +#: ../../include/text.php:1154 msgid "Select an alternate language" msgstr "" -#: ../../include/text.php:1348 +#: ../../include/text.php:1364 msgid "activity" msgstr "" -#: ../../include/text.php:1350 +#: ../../include/text.php:1366 msgid "comment" msgstr "" -#: ../../include/text.php:1351 +#: ../../include/text.php:1367 msgid "post" msgstr "" -#: ../../include/text.php:1506 +#: ../../include/text.php:1522 msgid "Item filed" msgstr "" @@ -7001,7 +7089,7 @@ msgstr "" msgid "Contacts not in any group" msgstr "" -#: ../../include/nav.php:46 ../../boot.php:885 +#: ../../include/nav.php:46 ../../boot.php:888 msgid "Logout" msgstr "" @@ -7009,7 +7097,7 @@ msgstr "" msgid "End this session" msgstr "" -#: ../../include/nav.php:49 ../../boot.php:1575 +#: ../../include/nav.php:49 ../../boot.php:1578 msgid "Status" msgstr "" @@ -7089,11 +7177,11 @@ msgstr "" msgid "Manage other pages" msgstr "" -#: ../../include/nav.php:138 ../../boot.php:1133 +#: ../../include/nav.php:138 ../../boot.php:1136 msgid "Profiles" msgstr "" -#: ../../include/nav.php:138 ../../boot.php:1133 +#: ../../include/nav.php:138 ../../boot.php:1136 msgid "Manage/edit profiles" msgstr "" @@ -7358,7 +7446,8 @@ msgid "%s commented on an item/conversation you have been following." msgstr "" #: ../../include/enotify.php:116 ../../include/enotify.php:131 -#: ../../include/enotify.php:144 ../../include/enotify.php:157 +#: ../../include/enotify.php:144 ../../include/enotify.php:162 +#: ../../include/enotify.php:175 #, php-format msgid "Please visit %s to view and/or reply to the conversation." msgstr "" @@ -7393,68 +7482,83 @@ msgstr "" msgid "%1$s [url=%2$s]tagged you[/url]." msgstr "" -#: ../../include/enotify.php:151 -#, php-format -msgid "[Friendica:Notify] %s tagged your post" -msgstr "" - #: ../../include/enotify.php:152 #, php-format -msgid "%1$s tagged your post at %2$s" +msgid "[Friendica:Notify] %1$s poked you" msgstr "" #: ../../include/enotify.php:153 #, php-format -msgid "%1$s tagged [url=%2$s]your post[/url]" +msgid "%1$s poked you at %2$s" msgstr "" -#: ../../include/enotify.php:164 -msgid "[Friendica:Notify] Introduction received" -msgstr "" - -#: ../../include/enotify.php:165 +#: ../../include/enotify.php:154 #, php-format -msgid "You've received an introduction from '%1$s' at %2$s" +msgid "%1$s [url=%2$s]poked you[/url]." msgstr "" -#: ../../include/enotify.php:166 +#: ../../include/enotify.php:169 #, php-format -msgid "You've received [url=%1$s]an introduction[/url] from %2$s." +msgid "[Friendica:Notify] %s tagged your post" msgstr "" -#: ../../include/enotify.php:169 ../../include/enotify.php:187 +#: ../../include/enotify.php:170 #, php-format -msgid "You may visit their profile at %s" +msgid "%1$s tagged your post at %2$s" msgstr "" #: ../../include/enotify.php:171 #, php-format +msgid "%1$s tagged [url=%2$s]your post[/url]" +msgstr "" + +#: ../../include/enotify.php:182 +msgid "[Friendica:Notify] Introduction received" +msgstr "" + +#: ../../include/enotify.php:183 +#, php-format +msgid "You've received an introduction from '%1$s' at %2$s" +msgstr "" + +#: ../../include/enotify.php:184 +#, php-format +msgid "You've received [url=%1$s]an introduction[/url] from %2$s." +msgstr "" + +#: ../../include/enotify.php:187 ../../include/enotify.php:205 +#, php-format +msgid "You may visit their profile at %s" +msgstr "" + +#: ../../include/enotify.php:189 +#, php-format msgid "Please visit %s to approve or reject the introduction." msgstr "" -#: ../../include/enotify.php:178 +#: ../../include/enotify.php:196 msgid "[Friendica:Notify] Friend suggestion received" msgstr "" -#: ../../include/enotify.php:179 +#: ../../include/enotify.php:197 #, php-format msgid "You've received a friend suggestion from '%1$s' at %2$s" msgstr "" -#: ../../include/enotify.php:180 +#: ../../include/enotify.php:198 #, php-format msgid "You've received [url=%1$s]a friend suggestion[/url] for %2$s from %3$s." msgstr "" -#: ../../include/enotify.php:185 +#: ../../include/enotify.php:203 msgid "Name:" msgstr "" -#: ../../include/enotify.php:186 +#: ../../include/enotify.php:204 msgid "Photo:" msgstr "" -#: ../../include/enotify.php:189 +#: ../../include/enotify.php:207 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "" @@ -7514,15 +7618,15 @@ msgstr "" msgid "following" msgstr "" -#: ../../include/items.php:3049 +#: ../../include/items.php:3099 msgid "A new person is sharing with you at " msgstr "" -#: ../../include/items.php:3049 +#: ../../include/items.php:3099 msgid "You have a new follower at " msgstr "" -#: ../../include/items.php:3718 +#: ../../include/items.php:3768 msgid "Archives" msgstr "" @@ -7616,142 +7720,151 @@ msgstr "" msgid "stopped following" msgstr "" -#: ../../include/Contact.php:218 ../../include/conversation.php:915 +#: ../../include/Contact.php:220 ../../include/conversation.php:966 +msgid "Poke" +msgstr "" + +#: ../../include/Contact.php:221 ../../include/conversation.php:960 msgid "View Status" msgstr "" -#: ../../include/Contact.php:219 ../../include/conversation.php:916 +#: ../../include/Contact.php:222 ../../include/conversation.php:961 msgid "View Profile" msgstr "" -#: ../../include/Contact.php:220 ../../include/conversation.php:917 +#: ../../include/Contact.php:223 ../../include/conversation.php:962 msgid "View Photos" msgstr "" -#: ../../include/Contact.php:221 ../../include/Contact.php:234 -#: ../../include/conversation.php:918 +#: ../../include/Contact.php:224 ../../include/Contact.php:237 +#: ../../include/conversation.php:963 msgid "Network Posts" msgstr "" -#: ../../include/Contact.php:222 ../../include/Contact.php:234 -#: ../../include/conversation.php:919 +#: ../../include/Contact.php:225 ../../include/Contact.php:237 +#: ../../include/conversation.php:964 msgid "Edit Contact" msgstr "" -#: ../../include/Contact.php:223 ../../include/Contact.php:234 -#: ../../include/conversation.php:920 +#: ../../include/Contact.php:226 ../../include/Contact.php:237 +#: ../../include/conversation.php:965 msgid "Send PM" msgstr "" -#: ../../include/conversation.php:224 +#: ../../include/conversation.php:197 +#, php-format +msgid "%1$s poked %2$s" +msgstr "" + +#: ../../include/conversation.php:267 msgid "post/item" msgstr "" -#: ../../include/conversation.php:225 +#: ../../include/conversation.php:268 #, php-format msgid "%1$s marked %2$s's %3$s as favorite" msgstr "" -#: ../../include/conversation.php:823 +#: ../../include/conversation.php:866 msgid "Delete Selected Items" msgstr "" -#: ../../include/conversation.php:978 +#: ../../include/conversation.php:1024 #, php-format msgid "%s likes this." msgstr "" -#: ../../include/conversation.php:978 +#: ../../include/conversation.php:1024 #, php-format msgid "%s doesn't like this." msgstr "" -#: ../../include/conversation.php:982 +#: ../../include/conversation.php:1028 #, php-format msgid "%2$d people like this." msgstr "" -#: ../../include/conversation.php:984 +#: ../../include/conversation.php:1030 #, php-format msgid "%2$d people don't like this." msgstr "" -#: ../../include/conversation.php:990 +#: ../../include/conversation.php:1036 msgid "and" msgstr "" -#: ../../include/conversation.php:993 +#: ../../include/conversation.php:1039 #, php-format msgid ", and %d other people" msgstr "" -#: ../../include/conversation.php:994 +#: ../../include/conversation.php:1040 #, php-format msgid "%s like this." msgstr "" -#: ../../include/conversation.php:994 +#: ../../include/conversation.php:1040 #, php-format msgid "%s don't like this." msgstr "" -#: ../../include/conversation.php:1019 +#: ../../include/conversation.php:1065 msgid "Visible to everybody" msgstr "" -#: ../../include/conversation.php:1021 +#: ../../include/conversation.php:1067 msgid "Please enter a video link/URL:" msgstr "" -#: ../../include/conversation.php:1022 +#: ../../include/conversation.php:1068 msgid "Please enter an audio link/URL:" msgstr "" -#: ../../include/conversation.php:1023 +#: ../../include/conversation.php:1069 msgid "Tag term:" msgstr "" -#: ../../include/conversation.php:1025 +#: ../../include/conversation.php:1071 msgid "Where are you right now?" msgstr "" -#: ../../include/conversation.php:1068 +#: ../../include/conversation.php:1114 msgid "upload photo" msgstr "" -#: ../../include/conversation.php:1070 +#: ../../include/conversation.php:1116 msgid "attach file" msgstr "" -#: ../../include/conversation.php:1072 +#: ../../include/conversation.php:1118 msgid "web link" msgstr "" -#: ../../include/conversation.php:1073 +#: ../../include/conversation.php:1119 msgid "Insert video link" msgstr "" -#: ../../include/conversation.php:1074 +#: ../../include/conversation.php:1120 msgid "video link" msgstr "" -#: ../../include/conversation.php:1075 +#: ../../include/conversation.php:1121 msgid "Insert audio link" msgstr "" -#: ../../include/conversation.php:1076 +#: ../../include/conversation.php:1122 msgid "audio link" msgstr "" -#: ../../include/conversation.php:1078 +#: ../../include/conversation.php:1124 msgid "set location" msgstr "" -#: ../../include/conversation.php:1080 +#: ../../include/conversation.php:1126 msgid "clear location" msgstr "" -#: ../../include/conversation.php:1087 +#: ../../include/conversation.php:1133 msgid "permissions" msgstr "" @@ -7767,96 +7880,96 @@ msgstr "" msgid "This action is not available under your subscription plan." msgstr "" -#: ../../boot.php:564 +#: ../../boot.php:567 msgid "Delete this item?" msgstr "" -#: ../../boot.php:567 +#: ../../boot.php:570 msgid "show fewer" msgstr "" -#: ../../boot.php:762 +#: ../../boot.php:765 #, php-format msgid "Update %s failed. See error logs." msgstr "" -#: ../../boot.php:764 +#: ../../boot.php:767 #, php-format msgid "Update Error at %s" msgstr "" -#: ../../boot.php:864 +#: ../../boot.php:867 msgid "Create a New Account" msgstr "" -#: ../../boot.php:888 +#: ../../boot.php:891 msgid "Nickname or Email address: " msgstr "" -#: ../../boot.php:889 +#: ../../boot.php:892 msgid "Password: " msgstr "" -#: ../../boot.php:892 +#: ../../boot.php:895 msgid "Or login using OpenID: " msgstr "" -#: ../../boot.php:898 +#: ../../boot.php:901 msgid "Forgot your password?" msgstr "" -#: ../../boot.php:1065 +#: ../../boot.php:1068 msgid "Edit profile" msgstr "" -#: ../../boot.php:1125 +#: ../../boot.php:1128 msgid "Message" msgstr "" -#: ../../boot.php:1241 ../../boot.php:1320 +#: ../../boot.php:1244 ../../boot.php:1323 msgid "g A l F d" msgstr "" -#: ../../boot.php:1242 ../../boot.php:1321 +#: ../../boot.php:1245 ../../boot.php:1324 msgid "F d" msgstr "" -#: ../../boot.php:1287 ../../boot.php:1361 +#: ../../boot.php:1290 ../../boot.php:1364 msgid "[today]" msgstr "" -#: ../../boot.php:1299 +#: ../../boot.php:1302 msgid "Birthday Reminders" msgstr "" -#: ../../boot.php:1300 +#: ../../boot.php:1303 msgid "Birthdays this week:" msgstr "" -#: ../../boot.php:1354 +#: ../../boot.php:1357 msgid "[No description]" msgstr "" -#: ../../boot.php:1372 +#: ../../boot.php:1375 msgid "Event Reminders" msgstr "" -#: ../../boot.php:1373 +#: ../../boot.php:1376 msgid "Events this week:" msgstr "" -#: ../../boot.php:1578 +#: ../../boot.php:1581 msgid "Status Messages and Posts" msgstr "" -#: ../../boot.php:1584 +#: ../../boot.php:1587 msgid "Profile Details" msgstr "" -#: ../../boot.php:1599 +#: ../../boot.php:1602 msgid "Events and Calendar" msgstr "" -#: ../../boot.php:1605 +#: ../../boot.php:1608 msgid "Only You Can See This" msgstr "" From fb2f4b6b350997cc63cc0fd5e4bb357249ced0d3 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sat, 21 Jul 2012 17:17:19 +0200 Subject: [PATCH 067/658] Photo now uses Imagick instead of gd. --- include/Photo.php | 793 ++++++++++++++++++++++------------------------ 1 file changed, 375 insertions(+), 418 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index ba4241a7b..18e8e6e9a 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -3,495 +3,452 @@ if(! class_exists("Photo")) { class Photo { - private $image; - private $width; - private $height; - private $valid; - private $type; - private $types; + private $image; + private $ext; - /** - * supported mimetypes and corresponding file extensions - */ - static function supportedTypes() { - $t = array(); - $t['image/jpeg'] ='jpg'; - if (imagetypes() & IMG_PNG) $t['image/png'] = 'png'; - return $t; - } + /** + * supported mimetypes and corresponding file extensions + */ + static function supportedTypes() { + /** + * Imagick::queryFormats won't help us a lot there... + * At least, not yet, other parts of friendica uses this array + */ + $t = array( + 'image/jpeg' => 'jpg', + 'image/png' => 'png', + 'image/gif' => 'gif' + ); + return $t; + } - public function __construct($data, $type="image/jpeg") { + public function __construct($data, $type=null) { + $this->image = new Imagick(); + $this->image->readImageBlob($data); - $this->types = $this->supportedTypes(); - if (!array_key_exists($type,$this->types)){ - $type='image/jpeg'; - } - $this->valid = false; - $this->type = $type; - $this->image = @imagecreatefromstring($data); - if($this->image !== FALSE) { - $this->width = imagesx($this->image); - $this->height = imagesy($this->image); - $this->valid = true; - imagealphablending($this->image, false); - imagesavealpha($this->image, true); - } - } + // If it is a gif, it may be animated, get it ready for any future operations + if($this->image->getFormat() !== "GIF") $this->image = $this->image->coalesceImages(); - public function __destruct() { - if($this->image) - imagedestroy($this->image); - } + $this->ext = strtolower($this->image->getImageFormat()); + } - public function is_valid() { - return $this->valid; - } + public function __destruct() { + if($this->image) { + $this->image->clear(); + $this->image->destroy(); + } + } - public function getWidth() { - return $this->width; - } + public function is_valid() { + return ($this->image !== FALSE); + } - public function getHeight() { - return $this->height; - } + public function getWidth() { + if(!$this->is_valid()) + return FALSE; - public function getImage() { - return $this->image; - } - - public function getType() { - return $this->type; - } - public function getExt() { - return $this->types[$this->type]; - } + return $this->image->getImageWidth(); + } - public function scaleImage($max) { + public function getHeight() { + if(!$this->is_valid()) + return FALSE; - $width = $this->width; - $height = $this->height; + return $this->image->getImageHeight(); + } - $dest_width = $dest_height = 0; + public function getImage() { + if(!$this->is_valid()) + return FALSE; - if((! $width)|| (! $height)) - return FALSE; + /* Clean it */ + $this->image = $this->image->deconstructImages(); + return $this->image; + } - if($width > $max && $height > $max) { - if($width > $height) { - $dest_width = $max; - $dest_height = intval(( $height * $max ) / $width); - } - else { - $dest_width = intval(( $width * $max ) / $height); - $dest_height = $max; - } - } - else { - if( $width > $max ) { - $dest_width = $max; - $dest_height = intval(( $height * $max ) / $width); - } - else { - if( $height > $max ) { - $dest_width = intval(( $width * $max ) / $height); - $dest_height = $max; - } - else { - $dest_width = $width; - $dest_height = $height; - } - } - } + public function getType() { + if(!$this->is_valid()) + return FALSE; + // This should do the trick (see supportedTypes above) + return 'image/'. $this->getExt(); + } - $dest = imagecreatetruecolor( $dest_width, $dest_height ); - imagealphablending($dest, false); - imagesavealpha($dest, true); - if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha - imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height); - if($this->image) - imagedestroy($this->image); - $this->image = $dest; - $this->width = imagesx($this->image); - $this->height = imagesy($this->image); + public function getExt() { + if(!$this->is_valid()) + return FALSE; - } + return $this->ext; + } - public function rotate($degrees) { - $this->image = imagerotate($this->image,$degrees,0); - $this->width = imagesx($this->image); - $this->height = imagesy($this->image); - } + public function scaleImage($max) { + if(!$this->is_valid()) + return FALSE; - public function flip($horiz = true, $vert = false) { - $w = imagesx($this->image); - $h = imagesy($this->image); - $flipped = imagecreate($w, $h); - if($horiz) { - for ($x = 0; $x < $w; $x++) { - imagecopy($flipped, $this->image, $x, 0, $w - $x - 1, 0, 1, $h); - } - } - if($vert) { - for ($y = 0; $y < $h; $y++) { - imagecopy($flipped, $this->image, 0, $y, 0, $h - $y - 1, $w, 1); - } - } - $this->image = $flipped; - } + /** + * If it is not animated, there will be only one iteration here, + * so don't bother checking + */ + // Don't forget to go back to the first frame for any further operation + $this->image->setFirstIterator(); + do { + $this->image->resizeImage($max, $max, imagick::FILTER_LANCZOS, 1, true); + } while ($this->image->nextImage()); + } - public function orient($filename) { - // based off comment on http://php.net/manual/en/function.imagerotate.php + public function rotate($degrees) { + if(!$this->is_valid()) + return FALSE; - if( (! function_exists('exif_read_data')) || ($this->getType() !== 'image/jpeg') ) - return; + $this->image->setFirstIterator(); + do { + $this->image->rotateImage(new ImagickPixel(), $degrees); + } while ($this->image->nextImage()); + } - $exif = exif_read_data($filename); - $ort = $exif['Orientation']; + public function flip($horiz = true, $vert = false) { + if(!$this->is_valid()) + return FALSE; - switch($ort) - { - case 1: // nothing - break; + $this->image->setFirstIterator(); + do { + if($horiz) $this->image->flipImage(); + if($vert) $this->image->flopImage(); + } while ($this->image->nextImage()); + } - case 2: // horizontal flip - $this->flip(); - break; - - case 3: // 180 rotate left - $this->rotate(180); - break; - - case 4: // vertical flip - $this->flip(false, true); - break; - - case 5: // vertical flip + 90 rotate right - $this->flip(false, true); + public function orient($filename) { + // based off comment on http://php.net/manual/en/function.imagerotate.php + + if(!$this->is_valid()) + return FALSE; + + if( (! function_exists('exif_read_data')) || ($this->getType() !== 'image/jpeg') ) + return; + + $exif = exif_read_data($filename); + $ort = $exif['Orientation']; + + switch($ort) + { + case 1: // nothing + break; + + case 2: // horizontal flip + $this->flip(); + break; + + case 3: // 180 rotate left + $this->rotate(180); + break; + + case 4: // vertical flip + $this->flip(false, true); + break; + + case 5: // vertical flip + 90 rotate right + $this->flip(false, true); $this->rotate(-90); - break; - - case 6: // 90 rotate right - $this->rotate(-90); - break; - - case 7: // horizontal flip + 90 rotate right - $this->flip(); - $this->rotate(-90); - break; - - case 8: // 90 rotate left - $this->rotate(90); - break; - } - } + break; + + case 6: // 90 rotate right + $this->rotate(-90); + break; + + case 7: // horizontal flip + 90 rotate right + $this->flip(); + $this->rotate(-90); + break; + + case 8: // 90 rotate left + $this->rotate(90); + break; + } + } - public function scaleImageUp($min) { + public function scaleImageUp($min) { + if(!$this->is_valid()) + return FALSE; - $width = $this->width; - $height = $this->height; - - $dest_width = $dest_height = 0; - - if((! $width)|| (! $height)) - return FALSE; - - if($width < $min && $height < $min) { - if($width > $height) { - $dest_width = $min; - $dest_height = intval(( $height * $min ) / $width); - } - else { - $dest_width = intval(( $width * $min ) / $height); - $dest_height = $min; - } - } - else { - if( $width < $min ) { - $dest_width = $min; - $dest_height = intval(( $height * $min ) / $width); - } - else { - if( $height < $min ) { - $dest_width = intval(( $width * $min ) / $height); - $dest_height = $min; - } - else { - $dest_width = $width; - $dest_height = $height; - } - } - } - - - $dest = imagecreatetruecolor( $dest_width, $dest_height ); - imagealphablending($dest, false); - imagesavealpha($dest, true); - if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha - imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height); - if($this->image) - imagedestroy($this->image); - $this->image = $dest; - $this->width = imagesx($this->image); - $this->height = imagesy($this->image); - - } + $this->scaleImage($min); + } - public function scaleImageSquare($dim) { + public function scaleImageSquare($dim) { + if(!$this->is_valid()) + return FALSE; - $dest = imagecreatetruecolor( $dim, $dim ); - imagealphablending($dest, false); - imagesavealpha($dest, true); - if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha - imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dim, $dim, $this->width, $this->height); - if($this->image) - imagedestroy($this->image); - $this->image = $dest; - $this->width = imagesx($this->image); - $this->height = imagesy($this->image); - } + $this->image->setFirstIterator(); + do { + $this->image->resizeImage($max, $max, imagick::FILTER_LANCZOS, 1, false); + } while ($this->image->nextImage()); + } - public function cropImage($max,$x,$y,$w,$h) { - $dest = imagecreatetruecolor( $max, $max ); - imagealphablending($dest, false); - imagesavealpha($dest, true); - if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha - imagecopyresampled($dest, $this->image, 0, 0, $x, $y, $max, $max, $w, $h); - if($this->image) - imagedestroy($this->image); - $this->image = $dest; - $this->width = imagesx($this->image); - $this->height = imagesy($this->image); - } + public function cropImage($max,$x,$y,$w,$h) { + if(!$this->is_valid()) + return FALSE; - public function saveImage($path) { - switch($this->type){ - case "image/png": - $quality = get_config('system','png_quality'); - if((! $quality) || ($quality > 9)) - $quality = PNG_QUALITY; - imagepng($this->image, $path, $quality); - break; - default: - $quality = get_config('system','jpeg_quality'); - if((! $quality) || ($quality > 100)) - $quality = JPEG_QUALITY; - imagejpeg($this->image,$path,$quality); - } - - } + $this->image->setFirstIterator(); + do { + $this->image->cropImage($w, $h, $x, $y); + /** + * We need to remove the canva, + * or the image is not resized to the crop: + * http://php.net/manual/en/imagick.cropimage.php#97232 + */ + $this->image->setImagePage(0, 0, 0, 0); + } while ($this->image->nextImage()); + $this->scaleImage($max); + } - public function imageString() { - ob_start(); - switch($this->type){ - case "image/png": - $quality = get_config('system','png_quality'); - if((! $quality) || ($quality > 9)) - $quality = PNG_QUALITY; - imagepng($this->image,NULL, $quality); - break; - default: - $quality = get_config('system','jpeg_quality'); - if((! $quality) || ($quality > 100)) - $quality = JPEG_QUALITY; + public function saveImage($path) { + if(!$this->is_valid()) + return FALSE; - imagejpeg($this->image,NULL,$quality); - } - $s = ob_get_contents(); - ob_end_clean(); - return $s; - } + $string = $this->imageString(); + file_put_contents($path, $string); + } + + public function imageString() { + if(!$this->is_valid()) + return FALSE; + + $quality = FALSE; + + /** + * Hmmm, + * we should do the conversion/compression at the initialisation i think + * This method may be called several times, + * and there is no need to do that more than once + */ + switch($this->image->getImageFormat()){ + case "PNG": + $quality = get_config('system','png_quality'); + if((! $quality) || ($quality > 9)) + $quality = PNG_QUALITY; + /** + * From http://www.imagemagick.org/script/command-line-options.php#quality: + * + * 'For the MNG and PNG image formats, the quality value sets + * the zlib compression level (quality / 10) and filter-type (quality % 10). + * The default PNG "quality" is 75, which means compression level 7 with adaptive PNG filtering, + * unless the image has a color map, in which case it means compression level 7 with no PNG filtering' + */ + $quality = $quality * 10; + break; + case "GIF": + // We change nothing here, do we? + break; + default: + // Convert to jpeg by default + $quality = get_config('system','jpeg_quality'); + if((! $quality) || ($quality > 100)) + $quality = JPEG_QUALITY; + $this->image->setImageFormat('jpeg'); + } + + if($quality !== FALSE) { + // Do we need to iterate for animations? + $this->image->setImageCompressionQuality($quality); + $this->image->stripImage(); + } + + $string = $this->image->getImagesBlob(); + return $string; + } - public function store($uid, $cid, $rid, $filename, $album, $scale, $profile = 0, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') { + public function store($uid, $cid, $rid, $filename, $album, $scale, $profile = 0, $allow_cid = '', $allow_gid = '', $deny_cid = '', $deny_gid = '') { - $r = q("select `guid` from photo where `resource-id` = '%s' and `guid` != '' limit 1", - dbesc($rid) - ); - if(count($r)) - $guid = $r[0]['guid']; - else - $guid = get_guid(); + $r = q("select `guid` from photo where `resource-id` = '%s' and `guid` != '' limit 1", + dbesc($rid) + ); + if(count($r)) + $guid = $r[0]['guid']; + else + $guid = get_guid(); - $x = q("select id from photo where `resource-id` = '%s' and uid = %d and `contact-id` = %d and `scale` = %d limit 1", - dbesc($rid), - intval($uid), - intval($cid), - intval($scale) - ); - if(count($x)) { - $r = q("UPDATE `photo` - set `uid` = %d, - `contact-id` = %d, - `guid` = '%s', - `resource-id` = '%s', - `created` = '%s', - `edited` = '%s', - `filename` = '%s', - `type` = '%s', - `album` = '%s', - `height` = %d, - `width` = %d, - `data` = '%s', - `scale` = %d, - `profile` = %d, - `allow_cid` = '%s', - `allow_gid` = '%s', - `deny_cid` = '%s', - `deny_gid` = '%s' - where id = %d limit 1", + $x = q("select id from photo where `resource-id` = '%s' and uid = %d and `contact-id` = %d and `scale` = %d limit 1", + dbesc($rid), + intval($uid), + intval($cid), + intval($scale) + ); + if(count($x)) { + $r = q("UPDATE `photo` + set `uid` = %d, + `contact-id` = %d, + `guid` = '%s', + `resource-id` = '%s', + `created` = '%s', + `edited` = '%s', + `filename` = '%s', + `type` = '%s', + `album` = '%s', + `height` = %d, + `width` = %d, + `data` = '%s', + `scale` = %d, + `profile` = %d, + `allow_cid` = '%s', + `allow_gid` = '%s', + `deny_cid` = '%s', + `deny_gid` = '%s' + where id = %d limit 1", - intval($uid), - intval($cid), - dbesc($guid), - dbesc($rid), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - dbesc(basename($filename)), - dbesc($this->type), - dbesc($album), - intval($this->height), - intval($this->width), - dbesc($this->imageString()), - intval($scale), - intval($profile), - dbesc($allow_cid), - dbesc($allow_gid), - dbesc($deny_cid), - dbesc($deny_gid), - intval($x[0]['id']) - ); - } - else { - $r = q("INSERT INTO `photo` - ( `uid`, `contact-id`, `guid`, `resource-id`, `created`, `edited`, `filename`, type, `album`, `height`, `width`, `data`, `scale`, `profile`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid` ) - VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, '%s', '%s', '%s', '%s' )", - intval($uid), - intval($cid), - dbesc($guid), - dbesc($rid), - dbesc(datetime_convert()), - dbesc(datetime_convert()), - dbesc(basename($filename)), - dbesc($this->type), - dbesc($album), - intval($this->height), - intval($this->width), - dbesc($this->imageString()), - intval($scale), - intval($profile), - dbesc($allow_cid), - dbesc($allow_gid), - dbesc($deny_cid), - dbesc($deny_gid) - ); - } - return $r; - } + intval($uid), + intval($cid), + dbesc($guid), + dbesc($rid), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + dbesc(basename($filename)), + dbesc($this->getType()), + dbesc($album), + intval($this->getHeight()), + intval($this->getWidth()), + dbesc($this->imageString()), + intval($scale), + intval($profile), + dbesc($allow_cid), + dbesc($allow_gid), + dbesc($deny_cid), + dbesc($deny_gid), + intval($x[0]['id']) + ); + } + else { + $r = q("INSERT INTO `photo` + ( `uid`, `contact-id`, `guid`, `resource-id`, `created`, `edited`, `filename`, type, `album`, `height`, `width`, `data`, `scale`, `profile`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid` ) + VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, '%s', '%s', '%s', '%s' )", + intval($uid), + intval($cid), + dbesc($guid), + dbesc($rid), + dbesc(datetime_convert()), + dbesc(datetime_convert()), + dbesc(basename($filename)), + dbesc($this->getType()), + dbesc($album), + intval($this->getHeight()), + intval($this->getWidth()), + dbesc($this->imageString()), + intval($scale), + intval($profile), + dbesc($allow_cid), + dbesc($allow_gid), + dbesc($deny_cid), + dbesc($deny_gid) + ); + } + return $r; + } }} /** * Guess image mimetype from filename or from Content-Type header - * + * * @arg $filename string Image filename * @arg $fromcurl boolean Check Content-Type header from curl request */ function guess_image_type($filename, $fromcurl=false) { logger('Photo: guess_image_type: '.$filename . ($fromcurl?' from curl headers':''), LOGGER_DEBUG); - $type = null; - if ($fromcurl) { - $a = get_app(); - $headers=array(); - $h = explode("\n",$a->get_curl_headers()); - foreach ($h as $l) { - list($k,$v) = array_map("trim", explode(":", trim($l), 2)); - $headers[$k] = $v; - } - if (array_key_exists('Content-Type', $headers)) - $type = $headers['Content-Type']; - } - if (is_null($type)){ - $ext = pathinfo($filename, PATHINFO_EXTENSION); - $types = Photo::supportedTypes(); - $type = "image/jpeg"; - foreach ($types as $m=>$e){ - if ($ext==$e) $type = $m; - } - - } + $type = null; + if ($fromcurl) { + $a = get_app(); + $headers=array(); + $h = explode("\n",$a->get_curl_headers()); + foreach ($h as $l) { + list($k,$v) = array_map("trim", explode(":", trim($l), 2)); + $headers[$k] = $v; + } + if (array_key_exists('Content-Type', $headers)) + $type = $headers['Content-Type']; + } + if (is_null($type)){ + // Guessing from extension? Isn't that... dangerous? + /*$ext = pathinfo($filename, PATHINFO_EXTENSION); + $types = Photo::supportedTypes(); + $type = "image/jpeg"; + foreach ($types as $m=>$e){ + if ($ext==$e) $type = $m; + }*/ + /** + * Well, this not much better, + * but at least it comes from the data inside the image, + * we won't be tricked by a manipulated extension + */ + $image = new Imagick($filename); + $type = 'image/'. strtolower($image->getImageFormat()); + } logger('Photo: guess_image_type: type='.$type, LOGGER_DEBUG); - return $type; - + return $type; + } function import_profile_photo($photo,$uid,$cid) { - $a = get_app(); + $a = get_app(); - $r = q("select `resource-id` from photo where `uid` = %d and `contact-id` = %d and `scale` = 4 and `album` = 'Contact Photos' limit 1", - intval($uid), - intval($cid) - ); - if(count($r)) { - $hash = $r[0]['resource-id']; - } - else { - $hash = photo_new_resource(); - } - - $photo_failure = false; + $r = q("select `resource-id` from photo where `uid` = %d and `contact-id` = %d and `scale` = 4 and `album` = 'Contact Photos' limit 1", + intval($uid), + intval($cid) + ); + if(count($r)) { + $hash = $r[0]['resource-id']; + } + else { + $hash = photo_new_resource(); + } - $filename = basename($photo); - $img_str = fetch_url($photo,true); - - // guess mimetype from headers or filename - $type = guess_image_type($photo,true); + $photo_failure = false; - - $img = new Photo($img_str, $type); - if($img->is_valid()) { + $filename = basename($photo); + $img_str = fetch_url($photo,true); - $img->scaleImageSquare(175); - - $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 4 ); + $img = new Photo($img_str); + if($img->is_valid()) { - if($r === false) - $photo_failure = true; + $img->scaleImageSquare(175); - $img->scaleImage(80); + $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 4 ); - $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 5 ); + if($r === false) + $photo_failure = true; - if($r === false) - $photo_failure = true; + $img->scaleImage(80); - $img->scaleImage(48); + $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 5 ); - $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 6 ); + if($r === false) + $photo_failure = true; - if($r === false) - $photo_failure = true; + $img->scaleImage(48); - $photo = $a->get_baseurl() . '/photo/' . $hash . '-4.' . $img->getExt(); - $thumb = $a->get_baseurl() . '/photo/' . $hash . '-5.' . $img->getExt(); - $micro = $a->get_baseurl() . '/photo/' . $hash . '-6.' . $img->getExt(); - } - else - $photo_failure = true; + $r = $img->store($uid, $cid, $hash, $filename, 'Contact Photos', 6 ); - if($photo_failure) { - $photo = $a->get_baseurl() . '/images/person-175.jpg'; - $thumb = $a->get_baseurl() . '/images/person-80.jpg'; - $micro = $a->get_baseurl() . '/images/person-48.jpg'; - } + if($r === false) + $photo_failure = true; - return(array($photo,$thumb,$micro)); + $photo = $a->get_baseurl() . '/photo/' . $hash . '-4.' . $img->getExt(); + $thumb = $a->get_baseurl() . '/photo/' . $hash . '-5.' . $img->getExt(); + $micro = $a->get_baseurl() . '/photo/' . $hash . '-6.' . $img->getExt(); + } + else + $photo_failure = true; + + if($photo_failure) { + $photo = $a->get_baseurl() . '/images/person-175.jpg'; + $thumb = $a->get_baseurl() . '/images/person-80.jpg'; + $micro = $a->get_baseurl() . '/images/person-48.jpg'; + } + + return(array($photo,$thumb,$micro)); } From 5255a5c9a9c3a2a574d42bd06dd3ce8429432a9c Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 21 Jul 2012 16:44:15 -0700 Subject: [PATCH 068/658] rev update --- boot.php | 2 +- mod/register.php | 4 ++-- util/messages.po | 34 ++++++++++++++++++++++++++++++---- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/boot.php b/boot.php index cc5bb22fb..f54d02d95 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1410' ); +define ( 'FRIENDICA_VERSION', '3.0.1411' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/mod/register.php b/mod/register.php index d52b5a6e1..de86808cb 100644 --- a/mod/register.php +++ b/mod/register.php @@ -12,7 +12,7 @@ function register_post(&$a) { call_hooks('register_post', $arr); $max_dailies = intval(get_config('system','max_daily_registrations')); - if($max_dailes) { + if($max_dailies) { $r = q("select count(*) as total from user where register_date > UTC_TIMESTAMP - INTERVAL 1 day"); if($r && $r[0]['total'] >= $max_dailies) { return; @@ -182,7 +182,7 @@ function register_content(&$a) { } $max_dailies = intval(get_config('system','max_daily_registrations')); - if($max_dailes) { + if($max_dailies) { $r = q("select count(*) as total from user where register_date > UTC_TIMESTAMP - INTERVAL 1 day"); if($r && $r[0]['total'] >= $max_dailies) { logger('max daily registrations exceeded.'); diff --git a/util/messages.po b/util/messages.po index fc19fc7f9..8144401b7 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1410\n" +"Project-Id-Version: 3.0.1411\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-20 10:00-0700\n" +"POT-Creation-Date: 2012-07-21 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -144,6 +144,7 @@ msgstr "" #: ../../addon/randplace/randplace.php:177 ../../addon/dwpost/dwpost.php:93 #: ../../addon/drpost/drpost.php:110 ../../addon/startpage/startpage.php:92 #: ../../addon/geonames/geonames.php:187 ../../addon/oembed.old/oembed.php:41 +#: ../../addon/forumlist/forumlist.php:169 #: ../../addon/impressum/impressum.php:82 #: ../../addon/notimeline/notimeline.php:64 ../../addon/blockem/blockem.php:57 #: ../../addon/qcomment/qcomment.php:61 @@ -4914,10 +4915,11 @@ msgid "%s - Click to open/close" msgstr "" #: ../../addon/page/page.php:61 ../../addon/page/page.php:91 +#: ../../addon/forumlist/forumlist.php:54 msgid "Forums" msgstr "" -#: ../../addon/page/page.php:129 +#: ../../addon/page/page.php:129 ../../addon/forumlist/forumlist.php:88 msgid "Forums:" msgstr "" @@ -4929,7 +4931,7 @@ msgstr "" msgid "Page Settings" msgstr "" -#: ../../addon/page/page.php:196 +#: ../../addon/page/page.php:196 ../../addon/forumlist/forumlist.php:155 msgid "How many forums to display on sidebar without paging" msgstr "" @@ -5417,6 +5419,30 @@ msgstr "" msgid "URL to embed:" msgstr "" +#: ../../addon/forumlist/forumlist.php:57 +msgid "show/hide" +msgstr "" + +#: ../../addon/forumlist/forumlist.php:72 +msgid "No forum subscriptions" +msgstr "" + +#: ../../addon/forumlist/forumlist.php:124 +msgid "Forumlist settings updated." +msgstr "" + +#: ../../addon/forumlist/forumlist.php:153 +msgid "Forumlist Settings" +msgstr "" + +#: ../../addon/forumlist/forumlist.php:158 +msgid "Randomise Forumlist/Forum list" +msgstr "" + +#: ../../addon/forumlist/forumlist.php:161 +msgid "Show forumlists/forums on profile forumlist" +msgstr "" + #: ../../addon/impressum/impressum.php:36 msgid "Impressum" msgstr "" From 863617013cb0c06fda7bca601693fce050cf8e6f Mon Sep 17 00:00:00 2001 From: Vasudev Kamath Date: Sun, 22 Jul 2012 12:41:07 +0530 Subject: [PATCH 069/658] Access image part of siteinfo only if $siteinfo["images"] is actually set. The current code didn't check this so I was getting an error Warning: Invalid argument supplied for foreach() in /home/vasudev/Public/friendica/mod/parse_url.php on line 305 Implemented a check before accessing $siteinfo["images"] with this commit and now warning doesn't come when giving URL of a site which doesn't have image from link button of post area --- mod/parse_url.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/mod/parse_url.php b/mod/parse_url.php index 061053196..5dd7de750 100644 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -302,11 +302,16 @@ function parse_url_content(&$a) { $image = ""; - foreach ($siteinfo["images"] as $imagedata) + if($siteinfo["image"] != ""){ + /* + Execute below code only if image is present in siteinfo + */ + foreach ($siteinfo["images"] as $imagedata) if($textmode) - $image .= '[img='.$imagedata["width"].'x'.$imagedata["height"].']'.$imagedata["src"].'[/img]'; + $image .= '[img='.$imagedata["width"].'x'.$imagedata["height"].']'.$imagedata["src"].'[/img]'; else - $image .= 'photo'; + $image .= 'photo'; + } if(strlen($text)) { if($textmode) From 6c2cd91184c0d1ced708802b73d62458dcaca997 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 13:43:46 +0200 Subject: [PATCH 070/658] gd is back in the game as a fallback: not everybody can have Imagick. --- include/Photo.php | 403 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 316 insertions(+), 87 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index 18e8e6e9a..de29dfb67 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -6,55 +6,105 @@ class Photo { private $image; private $ext; + /** + * Put back gd stuff, not everybody have Imagick + */ + private $imagick; + private $width; + private $height; + private $valid; + private $type; + private $types; + /** * supported mimetypes and corresponding file extensions */ static function supportedTypes() { - /** - * Imagick::queryFormats won't help us a lot there... - * At least, not yet, other parts of friendica uses this array - */ - $t = array( - 'image/jpeg' => 'jpg', - 'image/png' => 'png', - 'image/gif' => 'gif' - ); + if(class_exists('Imagick')) { + /** + * Imagick::queryFormats won't help us a lot there... + * At least, not yet, other parts of friendica uses this array + */ + $t = array( + 'image/jpeg' => 'jpg', + 'image/png' => 'png', + 'image/gif' => 'gif' + ); + } else { + $t = array(); + $t['image/jpeg'] ='jpg'; + if (imagetypes() & IMG_PNG) $t['image/png'] = 'png'; + } + return $t; } public function __construct($data, $type=null) { - $this->image = new Imagick(); - $this->image->readImageBlob($data); + $this->imagick = class_exists('Imagick'); - // If it is a gif, it may be animated, get it ready for any future operations - if($this->image->getFormat() !== "GIF") $this->image = $this->image->coalesceImages(); + if($this->is_imagick()) { + $this->image = new Imagick(); + $this->image->readImageBlob($data); - $this->ext = strtolower($this->image->getImageFormat()); + // If it is a gif, it may be animated, get it ready for any future operations + if($this->image->getFormat() !== "GIF") $this->image = $this->image->coalesceImages(); + + $this->ext = strtolower($this->image->getImageFormat()); + } else { + $this->types = $this->supportedTypes(); + if (!array_key_exists($type,$this->types)){ + $type='image/jpeg'; + } + $this->valid = false; + $this->type = $type; + $this->image = @imagecreatefromstring($data); + if($this->image !== FALSE) { + $this->width = imagesx($this->image); + $this->height = imagesy($this->image); + $this->valid = true; + imagealphablending($this->image, false); + imagesavealpha($this->image, true); + } + } } public function __destruct() { if($this->image) { - $this->image->clear(); - $this->image->destroy(); + if($this->is_imagick()) { + $this->image->clear(); + $this->image->destroy(); + return; + } + imagedestroy($this->image); } } + public function is_imagick() { + return $this->imagick; + } + public function is_valid() { - return ($this->image !== FALSE); + if($this->is_imagick()) + return ($this->image !== FALSE); + return $this->valid; } public function getWidth() { if(!$this->is_valid()) return FALSE; - return $this->image->getImageWidth(); + if($this->is_imagick()) + return $this->image->getImageWidth(); + return $this->width; } public function getHeight() { if(!$this->is_valid()) return FALSE; - return $this->image->getImageHeight(); + if($this->is_imagick()) + return $this->image->getImageHeight(); + return $this->height; } public function getImage() { @@ -62,7 +112,10 @@ class Photo { return FALSE; /* Clean it */ - $this->image = $this->image->deconstructImages(); + if($this->is_imagick()) { + $this->image = $this->image->deconstructImages(); + return $this->image; + } return $this->image; } @@ -70,51 +123,131 @@ class Photo { if(!$this->is_valid()) return FALSE; - // This should do the trick (see supportedTypes above) - return 'image/'. $this->getExt(); + if($this->is_imagick()) { + // This should do the trick (see supportedTypes above) + return 'image/'. $this->getExt(); + } + return $this->type; } public function getExt() { if(!$this->is_valid()) return FALSE; - return $this->ext; + if($this->is_imagick()) + return $this->ext; + return $this->types[$this->type]; } public function scaleImage($max) { if(!$this->is_valid()) return FALSE; - /** - * If it is not animated, there will be only one iteration here, - * so don't bother checking - */ - // Don't forget to go back to the first frame for any further operation - $this->image->setFirstIterator(); - do { - $this->image->resizeImage($max, $max, imagick::FILTER_LANCZOS, 1, true); - } while ($this->image->nextImage()); + if($this->is_imagick()) { + /** + * If it is not animated, there will be only one iteration here, + * so don't bother checking + */ + // Don't forget to go back to the first frame for any further operation + $this->image->setFirstIterator(); + do { + $this->image->resizeImage($max, $max, imagick::FILTER_LANCZOS, 1, true); + } while ($this->image->nextImage()); + return; + } + + $width = $this->width; + $height = $this->height; + + $dest_width = $dest_height = 0; + + if((! $width)|| (! $height)) + return FALSE; + + if($width > $max && $height > $max) { + if($width > $height) { + $dest_width = $max; + $dest_height = intval(( $height * $max ) / $width); + } + else { + $dest_width = intval(( $width * $max ) / $height); + $dest_height = $max; + } + } + else { + if( $width > $max ) { + $dest_width = $max; + $dest_height = intval(( $height * $max ) / $width); + } + else { + if( $height > $max ) { + $dest_width = intval(( $width * $max ) / $height); + $dest_height = $max; + } + else { + $dest_width = $width; + $dest_height = $height; + } + } + } + + + $dest = imagecreatetruecolor( $dest_width, $dest_height ); + imagealphablending($dest, false); + imagesavealpha($dest, true); + if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha + imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height); + if($this->image) + imagedestroy($this->image); + $this->image = $dest; + $this->width = imagesx($this->image); + $this->height = imagesy($this->image); } public function rotate($degrees) { if(!$this->is_valid()) return FALSE; - $this->image->setFirstIterator(); - do { - $this->image->rotateImage(new ImagickPixel(), $degrees); - } while ($this->image->nextImage()); + if($this->is_imagick()) { + $this->image->setFirstIterator(); + do { + $this->image->rotateImage(new ImagickPixel(), $degrees); + } while ($this->image->nextImage()); + return; + } + + $this->image = imagerotate($this->image,$degrees,0); + $this->width = imagesx($this->image); + $this->height = imagesy($this->image); } public function flip($horiz = true, $vert = false) { if(!$this->is_valid()) return FALSE; - $this->image->setFirstIterator(); - do { - if($horiz) $this->image->flipImage(); - if($vert) $this->image->flopImage(); - } while ($this->image->nextImage()); + if($this->is_imagick()) { + $this->image->setFirstIterator(); + do { + if($horiz) $this->image->flipImage(); + if($vert) $this->image->flopImage(); + } while ($this->image->nextImage()); + return; + } + + $w = imagesx($this->image); + $h = imagesy($this->image); + $flipped = imagecreate($w, $h); + if($horiz) { + for ($x = 0; $x < $w; $x++) { + imagecopy($flipped, $this->image, $x, 0, $w - $x - 1, 0, 1, $h); + } + } + if($vert) { + for ($y = 0; $y < $h; $y++) { + imagecopy($flipped, $this->image, 0, $y, 0, $h - $y - 1, $w, 1); + } + } + $this->image = $flipped; } public function orient($filename) { @@ -172,7 +305,55 @@ class Photo { if(!$this->is_valid()) return FALSE; - $this->scaleImage($min); + if($this->is_imagick()) + return $this->scaleImage($min); + + $width = $this->width; + $height = $this->height; + + $dest_width = $dest_height = 0; + + if((! $width)|| (! $height)) + return FALSE; + + if($width < $min && $height < $min) { + if($width > $height) { + $dest_width = $min; + $dest_height = intval(( $height * $min ) / $width); + } + else { + $dest_width = intval(( $width * $min ) / $height); + $dest_height = $min; + } + } + else { + if( $width < $min ) { + $dest_width = $min; + $dest_height = intval(( $height * $min ) / $width); + } + else { + if( $height < $min ) { + $dest_width = intval(( $width * $min ) / $height); + $dest_height = $min; + } + else { + $dest_width = $width; + $dest_height = $height; + } + } + } + + + $dest = imagecreatetruecolor( $dest_width, $dest_height ); + imagealphablending($dest, false); + imagesavealpha($dest, true); + if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha + imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height); + if($this->image) + imagedestroy($this->image); + $this->image = $dest; + $this->width = imagesx($this->image); + $this->height = imagesy($this->image); } @@ -181,10 +362,24 @@ class Photo { if(!$this->is_valid()) return FALSE; - $this->image->setFirstIterator(); - do { - $this->image->resizeImage($max, $max, imagick::FILTER_LANCZOS, 1, false); - } while ($this->image->nextImage()); + if($this->is_imagick()) { + $this->image->setFirstIterator(); + do { + $this->image->resizeImage($max, $max, imagick::FILTER_LANCZOS, 1, false); + } while ($this->image->nextImage()); + return; + } + + $dest = imagecreatetruecolor( $dim, $dim ); + imagealphablending($dest, false); + imagesavealpha($dest, true); + if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha + imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dim, $dim, $this->width, $this->height); + if($this->image) + imagedestroy($this->image); + $this->image = $dest; + $this->width = imagesx($this->image); + $this->height = imagesy($this->image); } @@ -192,17 +387,30 @@ class Photo { if(!$this->is_valid()) return FALSE; - $this->image->setFirstIterator(); - do { - $this->image->cropImage($w, $h, $x, $y); - /** - * We need to remove the canva, - * or the image is not resized to the crop: - * http://php.net/manual/en/imagick.cropimage.php#97232 - */ - $this->image->setImagePage(0, 0, 0, 0); - } while ($this->image->nextImage()); - $this->scaleImage($max); + if($this->is_imagick()) { + $this->image->setFirstIterator(); + do { + $this->image->cropImage($w, $h, $x, $y); + /** + * We need to remove the canva, + * or the image is not resized to the crop: + * http://php.net/manual/en/imagick.cropimage.php#97232 + */ + $this->image->setImagePage(0, 0, 0, 0); + } while ($this->image->nextImage()); + return $this->scaleImage($max); + } + + $dest = imagecreatetruecolor( $max, $max ); + imagealphablending($dest, false); + imagesavealpha($dest, true); + if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha + imagecopyresampled($dest, $this->image, 0, 0, $x, $y, $max, $max, $w, $h); + if($this->image) + imagedestroy($this->image); + $this->image = $dest; + $this->width = imagesx($this->image); + $this->height = imagesy($this->image); } public function saveImage($path) { @@ -220,27 +428,32 @@ class Photo { $quality = FALSE; /** - * Hmmm, + * Hmmm, for Imagick * we should do the conversion/compression at the initialisation i think * This method may be called several times, * and there is no need to do that more than once */ - switch($this->image->getImageFormat()){ - case "PNG": + + if(!$this->is_imagick()) ob_start(); + + switch($this->getType()){ + case "image/png": $quality = get_config('system','png_quality'); if((! $quality) || ($quality > 9)) $quality = PNG_QUALITY; - /** - * From http://www.imagemagick.org/script/command-line-options.php#quality: - * - * 'For the MNG and PNG image formats, the quality value sets - * the zlib compression level (quality / 10) and filter-type (quality % 10). - * The default PNG "quality" is 75, which means compression level 7 with adaptive PNG filtering, - * unless the image has a color map, in which case it means compression level 7 with no PNG filtering' - */ - $quality = $quality * 10; + if($this->is_imagick()) { + /** + * From http://www.imagemagick.org/script/command-line-options.php#quality: + * + * 'For the MNG and PNG image formats, the quality value sets + * the zlib compression level (quality / 10) and filter-type (quality % 10). + * The default PNG "quality" is 75, which means compression level 7 with adaptive PNG filtering, + * unless the image has a color map, in which case it means compression level 7 with no PNG filtering' + */ + $quality = $quality * 10; + } else imagepng($this->image,NULL, $quality); break; - case "GIF": + case "image/gif": // We change nothing here, do we? break; default: @@ -248,16 +461,24 @@ class Photo { $quality = get_config('system','jpeg_quality'); if((! $quality) || ($quality > 100)) $quality = JPEG_QUALITY; - $this->image->setImageFormat('jpeg'); + if($this->is_imagick()) + $this->image->setImageFormat('jpeg'); + else imagejpeg($this->image,NULL,$quality); } - if($quality !== FALSE) { + if($this->is_imagick()) { + if($quality !== FALSE) { // Do we need to iterate for animations? $this->image->setImageCompressionQuality($quality); $this->image->stripImage(); + } + + $string = $this->image->getImagesBlob(); + } else { + $string = ob_get_contents(); + ob_end_clean(); } - $string = $this->image->getImagesBlob(); return $string; } @@ -373,19 +594,22 @@ function guess_image_type($filename, $fromcurl=false) { } if (is_null($type)){ // Guessing from extension? Isn't that... dangerous? - /*$ext = pathinfo($filename, PATHINFO_EXTENSION); - $types = Photo::supportedTypes(); - $type = "image/jpeg"; - foreach ($types as $m=>$e){ - if ($ext==$e) $type = $m; - }*/ - /** - * Well, this not much better, - * but at least it comes from the data inside the image, - * we won't be tricked by a manipulated extension - */ - $image = new Imagick($filename); - $type = 'image/'. strtolower($image->getImageFormat()); + if($this->is_imagick()) { + /** + * Well, this not much better, + * but at least it comes from the data inside the image, + * we won't be tricked by a manipulated extension + */ + $image = new Imagick($filename); + $type = 'image/'. strtolower($image->getImageFormat()); + } else { + $ext = pathinfo($filename, PATHINFO_EXTENSION); + $types = Photo::supportedTypes(); + $type = "image/jpeg"; + foreach ($types as $m=>$e){ + if ($ext==$e) $type = $m; + } + } } logger('Photo: guess_image_type: type='.$type, LOGGER_DEBUG); return $type; @@ -412,7 +636,12 @@ function import_profile_photo($photo,$uid,$cid) { $filename = basename($photo); $img_str = fetch_url($photo,true); - $img = new Photo($img_str); + if($this->is_imagick()) $type = null; + else { + // guess mimetype from headers or filename + $type = guess_image_type($photo,true); + } + $img = new Photo($img_str, $type); if($img->is_valid()) { $img->scaleImageSquare(175); From f723f756fd23f6eb2b19353177f36b5d02c7cba3 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 14:22:47 +0200 Subject: [PATCH 071/658] Photo::scaleImageSquare was giving an inexistent variable to scaleImage. --- include/Photo.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Photo.php b/include/Photo.php index de29dfb67..1a6594966 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -365,7 +365,7 @@ class Photo { if($this->is_imagick()) { $this->image->setFirstIterator(); do { - $this->image->resizeImage($max, $max, imagick::FILTER_LANCZOS, 1, false); + $this->image->resizeImage($dim, $dim, imagick::FILTER_LANCZOS, 1, false); } while ($this->image->nextImage()); return; } From 5d0bd98d2a7c3c0aa1198c5f261d85c09685db28 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 14:50:19 +0200 Subject: [PATCH 072/658] Photo::getType() now uses the accurate Imagick::getImageMimeType() --- include/Photo.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index 1a6594966..a9cef6a90 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -124,8 +124,7 @@ class Photo { return FALSE; if($this->is_imagick()) { - // This should do the trick (see supportedTypes above) - return 'image/'. $this->getExt(); + return $this->image->getImageMimeType(); } return $this->type; } From 0acb983be44dc1ca9431d680e6a7595c73eaf132 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 15:17:40 +0200 Subject: [PATCH 073/658] guess_image_type now uses Imagick::getImageMimeType() --- include/Photo.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Photo.php b/include/Photo.php index a9cef6a90..c8a0ac119 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -600,7 +600,7 @@ function guess_image_type($filename, $fromcurl=false) { * we won't be tricked by a manipulated extension */ $image = new Imagick($filename); - $type = 'image/'. strtolower($image->getImageFormat()); + $type = $image->getImageMimeType(); } else { $ext = pathinfo($filename, PATHINFO_EXTENSION); $types = Photo::supportedTypes(); From 689e3028bfc18438ce5681a2b2c92d3f0686b0d9 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 15:24:41 +0200 Subject: [PATCH 074/658] Use getImageFormat to know the image format in the constructor. Since we don't load the image with Imagick constructor, we need to use the [get|set]imageXXX methods. We should be able to handle the image as if it was loaded from Imagick constructor, so that we don't get lost between the image and its frames. Also added a debug log so that we get some info on unhandled mime types. --- include/Photo.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index c8a0ac119..bba460356 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -47,7 +47,7 @@ class Photo { $this->image->readImageBlob($data); // If it is a gif, it may be animated, get it ready for any future operations - if($this->image->getFormat() !== "GIF") $this->image = $this->image->coalesceImages(); + if($this->image->getImageFormat() !== "GIF") $this->image = $this->image->coalesceImages(); $this->ext = strtolower($this->image->getImageFormat()); } else { @@ -460,8 +460,10 @@ class Photo { $quality = get_config('system','jpeg_quality'); if((! $quality) || ($quality > 100)) $quality = JPEG_QUALITY; - if($this->is_imagick()) + if($this->is_imagick()) { $this->image->setImageFormat('jpeg'); + logger('Photo: imageString: Unhandled mime type ('. $this->getType() .'), Imagick format is "'. $this->image->getImageFormat() .'"', LOGGER_DEBUG); + } else imagejpeg($this->image,NULL,$quality); } From 83075c2f27b41fabfc106669d4bac2ad3b24116c Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 16:12:47 +0200 Subject: [PATCH 075/658] Set the Imagick image format in the constructor, so we can uset [get|set](image)XXX methods as intended --- include/Photo.php | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index bba460356..830f5213e 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -46,8 +46,14 @@ class Photo { $this->image = new Imagick(); $this->image->readImageBlob($data); + /** + * Setup the image to the format of the one we just loaded, + * we'll change it to something else if we need to at the time we save it + */ + $this->image->setFormat($this->image->getImageFormat()); + // If it is a gif, it may be animated, get it ready for any future operations - if($this->image->getImageFormat() !== "GIF") $this->image = $this->image->coalesceImages(); + if($this->image->getFormat() !== "GIF") $this->image = $this->image->coalesceImages(); $this->ext = strtolower($this->image->getImageFormat()); } else { @@ -111,8 +117,8 @@ class Photo { if(!$this->is_valid()) return FALSE; - /* Clean it */ if($this->is_imagick()) { + /* Clean it */ $this->image = $this->image->deconstructImages(); return $this->image; } @@ -147,7 +153,7 @@ class Photo { * If it is not animated, there will be only one iteration here, * so don't bother checking */ - // Don't forget to go back to the first frame for any further operation + // Don't forget to go back to the first frame $this->image->setFirstIterator(); do { $this->image->resizeImage($max, $max, imagick::FILTER_LANCZOS, 1, true); @@ -461,17 +467,17 @@ class Photo { if((! $quality) || ($quality > 100)) $quality = JPEG_QUALITY; if($this->is_imagick()) { - $this->image->setImageFormat('jpeg'); - logger('Photo: imageString: Unhandled mime type ('. $this->getType() .'), Imagick format is "'. $this->image->getImageFormat() .'"', LOGGER_DEBUG); + $this->image->setFormat('jpeg'); + logger('Photo: imageString: Unhandled mime type ('. $this->getType() .'), Imagick format is "'. $this->image->getFormat() .'"', LOGGER_DEBUG); } else imagejpeg($this->image,NULL,$quality); } if($this->is_imagick()) { if($quality !== FALSE) { - // Do we need to iterate for animations? - $this->image->setImageCompressionQuality($quality); - $this->image->stripImage(); + // Do we need to iterate for animations? + $this->image->setCompressionQuality($quality); + $this->image->stripImage(); } $string = $this->image->getImagesBlob(); From ab484ebc76722624bb8823e9de459c9ce026465a Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 16:19:35 +0200 Subject: [PATCH 076/658] getExt should not use Imagick format, mapping ext and mime type is more accurate. --- include/Photo.php | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index 830f5213e..4ac84d901 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -4,7 +4,6 @@ if(! class_exists("Photo")) { class Photo { private $image; - private $ext; /** * Put back gd stuff, not everybody have Imagick @@ -41,6 +40,7 @@ class Photo { public function __construct($data, $type=null) { $this->imagick = class_exists('Imagick'); + $this->types = $this->supportedTypes(); if($this->is_imagick()) { $this->image = new Imagick(); @@ -54,10 +54,7 @@ class Photo { // If it is a gif, it may be animated, get it ready for any future operations if($this->image->getFormat() !== "GIF") $this->image = $this->image->coalesceImages(); - - $this->ext = strtolower($this->image->getImageFormat()); } else { - $this->types = $this->supportedTypes(); if (!array_key_exists($type,$this->types)){ $type='image/jpeg'; } @@ -139,9 +136,7 @@ class Photo { if(!$this->is_valid()) return FALSE; - if($this->is_imagick()) - return $this->ext; - return $this->types[$this->type]; + return $this->types[$this->getType()]; } public function scaleImage($max) { From c0d3d50fb58667e03a80a25676092afd3cf630d4 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 16:22:06 +0200 Subject: [PATCH 077/658] Don't forget to clean frames before saving --- include/Photo.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/Photo.php b/include/Photo.php index 4ac84d901..06b90bb88 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -475,6 +475,8 @@ class Photo { $this->image->stripImage(); } + /* Clean it */ + $this->image = $this->image->deconstructImages(); $string = $this->image->getImagesBlob(); } else { $string = ob_get_contents(); From 7a1f15c8dae30a69b7879d0c46eafee788098c5a Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 16:27:22 +0200 Subject: [PATCH 078/658] Always coalesce, if it is not a multi-frame image it won't hurt anyway --- include/Photo.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index 06b90bb88..862547387 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -52,8 +52,8 @@ class Photo { */ $this->image->setFormat($this->image->getImageFormat()); - // If it is a gif, it may be animated, get it ready for any future operations - if($this->image->getFormat() !== "GIF") $this->image = $this->image->coalesceImages(); + // Always coalesce, if it is not a multi-frame image it won't hurt anyway + $this->image = $this->image->coalesceImages(); } else { if (!array_key_exists($type,$this->types)){ $type='image/jpeg'; From 62cd4dcb77ef5b07b7c53c6f2a39849474254c56 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 17:07:13 +0200 Subject: [PATCH 079/658] Set the type to what it will be saved to in the constructor --- include/Photo.php | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index 862547387..982e435f1 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -38,28 +38,41 @@ class Photo { return $t; } + /** + * Maps Mime types to Imagick formats + */ + static function get_FormatsMap() { + $m = array( + 'image/jpeg' => 'JPG', + 'image/png' => 'PNG', + 'image/gif' => 'GIF' + ); + return $m; + } + public function __construct($data, $type=null) { $this->imagick = class_exists('Imagick'); $this->types = $this->supportedTypes(); + if (!array_key_exists($type,$this->types)){ + $type='image/jpeg'; + } + $this->type = $type; if($this->is_imagick()) { $this->image = new Imagick(); $this->image->readImageBlob($data); /** - * Setup the image to the format of the one we just loaded, - * we'll change it to something else if we need to at the time we save it + * Setup the image to the format it will be saved to */ - $this->image->setFormat($this->image->getImageFormat()); + $map = $this->get_FormatsMap(); + $format = $map[$type]; + $this->image->setFormat($format); // Always coalesce, if it is not a multi-frame image it won't hurt anyway $this->image = $this->image->coalesceImages(); } else { - if (!array_key_exists($type,$this->types)){ - $type='image/jpeg'; - } $this->valid = false; - $this->type = $type; $this->image = @imagecreatefromstring($data); if($this->image !== FALSE) { $this->width = imagesx($this->image); @@ -126,9 +139,6 @@ class Photo { if(!$this->is_valid()) return FALSE; - if($this->is_imagick()) { - return $this->image->getImageMimeType(); - } return $this->type; } @@ -457,14 +467,9 @@ class Photo { // We change nothing here, do we? break; default: - // Convert to jpeg by default $quality = get_config('system','jpeg_quality'); if((! $quality) || ($quality > 100)) $quality = JPEG_QUALITY; - if($this->is_imagick()) { - $this->image->setFormat('jpeg'); - logger('Photo: imageString: Unhandled mime type ('. $this->getType() .'), Imagick format is "'. $this->image->getFormat() .'"', LOGGER_DEBUG); - } else imagejpeg($this->image,NULL,$quality); } @@ -640,11 +645,7 @@ function import_profile_photo($photo,$uid,$cid) { $filename = basename($photo); $img_str = fetch_url($photo,true); - if($this->is_imagick()) $type = null; - else { - // guess mimetype from headers or filename - $type = guess_image_type($photo,true); - } + $type = guess_image_type($photo,true); $img = new Photo($img_str, $type); if($img->is_valid()) { From a3df0d9817cd8c3e7f8b011ed68bd9528132d7bc Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 17:09:18 +0200 Subject: [PATCH 080/658] get_FormatsMap doesn't need to be static --- include/Photo.php | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index 982e435f1..0fa020728 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -38,18 +38,6 @@ class Photo { return $t; } - /** - * Maps Mime types to Imagick formats - */ - static function get_FormatsMap() { - $m = array( - 'image/jpeg' => 'JPG', - 'image/png' => 'PNG', - 'image/gif' => 'GIF' - ); - return $m; - } - public function __construct($data, $type=null) { $this->imagick = class_exists('Imagick'); $this->types = $this->supportedTypes(); @@ -99,6 +87,18 @@ class Photo { return $this->imagick; } + /** + * Maps Mime types to Imagick formats + */ + public function get_FormatsMap() { + $m = array( + 'image/jpeg' => 'JPG', + 'image/png' => 'PNG', + 'image/gif' => 'GIF' + ); + return $m; + } + public function is_valid() { if($this->is_imagick()) return ($this->image !== FALSE); From 36f600aaf2a9c5c39a23ded592a09d1b845b058e Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 17:27:09 +0200 Subject: [PATCH 081/658] Moved compression setup in constructor for Imagick --- include/Photo.php | 80 +++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/include/Photo.php b/include/Photo.php index 0fa020728..b72853624 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -59,6 +59,32 @@ class Photo { // Always coalesce, if it is not a multi-frame image it won't hurt anyway $this->image = $this->image->coalesceImages(); + + /** + * setup the compression here, so we'll do it only once + */ + switch($this->getType()){ + case "image/png": + $quality = get_config('system','png_quality'); + if((! $quality) || ($quality > 9)) + $quality = PNG_QUALITY; + /** + * From http://www.imagemagick.org/script/command-line-options.php#quality: + * + * 'For the MNG and PNG image formats, the quality value sets + * the zlib compression level (quality / 10) and filter-type (quality % 10). + * The default PNG "quality" is 75, which means compression level 7 with adaptive PNG filtering, + * unless the image has a color map, in which case it means compression level 7 with no PNG filtering' + */ + $quality = $quality * 10; + $this->image->setCompressionQuality($quality); + break; + case "image/jpeg": + $quality = get_config('system','jpeg_quality'); + if((! $quality) || ($quality > 100)) + $quality = JPEG_QUALITY; + $this->image->setCompressionQuality($quality); + } } else { $this->valid = false; $this->image = @imagecreatefromstring($data); @@ -435,58 +461,32 @@ class Photo { if(!$this->is_valid()) return FALSE; + if($this->is_imagick()) { + /* Clean it */ + $this->image = $this->image->deconstructImages(); + $string = $this->image->getImagesBlob(); + return $string; + } + $quality = FALSE; - /** - * Hmmm, for Imagick - * we should do the conversion/compression at the initialisation i think - * This method may be called several times, - * and there is no need to do that more than once - */ - - if(!$this->is_imagick()) ob_start(); + ob_start() switch($this->getType()){ case "image/png": $quality = get_config('system','png_quality'); if((! $quality) || ($quality > 9)) $quality = PNG_QUALITY; - if($this->is_imagick()) { - /** - * From http://www.imagemagick.org/script/command-line-options.php#quality: - * - * 'For the MNG and PNG image formats, the quality value sets - * the zlib compression level (quality / 10) and filter-type (quality % 10). - * The default PNG "quality" is 75, which means compression level 7 with adaptive PNG filtering, - * unless the image has a color map, in which case it means compression level 7 with no PNG filtering' - */ - $quality = $quality * 10; - } else imagepng($this->image,NULL, $quality); + imagepng($this->image,NULL, $quality); break; - case "image/gif": - // We change nothing here, do we? - break; - default: + case "image/jpeg": $quality = get_config('system','jpeg_quality'); if((! $quality) || ($quality > 100)) $quality = JPEG_QUALITY; - else imagejpeg($this->image,NULL,$quality); - } - - if($this->is_imagick()) { - if($quality !== FALSE) { - // Do we need to iterate for animations? - $this->image->setCompressionQuality($quality); - $this->image->stripImage(); - } - - /* Clean it */ - $this->image = $this->image->deconstructImages(); - $string = $this->image->getImagesBlob(); - } else { - $string = ob_get_contents(); - ob_end_clean(); + imagejpeg($this->image,NULL,$quality); } + $string = ob_get_contents(); + ob_end_clean(); return $string; } @@ -603,7 +603,7 @@ function guess_image_type($filename, $fromcurl=false) { } if (is_null($type)){ // Guessing from extension? Isn't that... dangerous? - if($this->is_imagick()) { + if(class_exists('Imagick')) { /** * Well, this not much better, * but at least it comes from the data inside the image, From ba76af348872d47c3949269eeb4b7a7effcf226e Mon Sep 17 00:00:00 2001 From: Domovoy Date: Sun, 22 Jul 2012 17:50:58 +0200 Subject: [PATCH 082/658] Forgot a ; --- include/Photo.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/Photo.php b/include/Photo.php index b72853624..1f751c77f 100644 --- a/include/Photo.php +++ b/include/Photo.php @@ -470,7 +470,7 @@ class Photo { $quality = FALSE; - ob_start() + ob_start(); switch($this->getType()){ case "image/png": From cdf67ce7251288e93651e36ee1f57f6e6d44428d Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 22 Jul 2012 15:39:25 -0700 Subject: [PATCH 083/658] rev update --- boot.php | 2 +- util/messages.po | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/boot.php b/boot.php index f54d02d95..3a541a272 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1411' ); +define ( 'FRIENDICA_VERSION', '3.0.1412' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index 8144401b7..a365fdf46 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1411\n" +"Project-Id-Version: 3.0.1412\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-21 10:00-0700\n" +"POT-Creation-Date: 2012-07-22 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" From da1b47a029e678aee8b99ee11eec972dfb9a1a2b Mon Sep 17 00:00:00 2001 From: Domovoy Date: Mon, 23 Jul 2012 12:56:47 +0200 Subject: [PATCH 084/658] Progress on #1. Comments are now threaded, at least in the database, for normal view. --- include/conversation.php | 7 +++++-- mod/item.php | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 4a9142bb2..67445c290 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -582,7 +582,9 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { } $override_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false); - $show_comment_box = ((($page_writeable) && ($item_writeable) && ($comments_seen == $comments[$item['parent']])) ? true : false); + // The comment box should now appear under each writable item, not only at the end of the thread, don't bother with $comments_seen + //$show_comment_box = ((($page_writeable) && ($item_writeable) && ($comments_seen == $comments[$item['parent']])) ? true : false); + $show_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false); if(($comments[$item['parent']] > 2) && ($comments_seen <= ($comments[$item['parent']] - 2)) && ($item['gravity'] == 6)) { @@ -681,12 +683,13 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { } if(($show_comment_box) || (($show_comment_box == false) && ($override_comment_box == false) && ($item['last-child']))) { + // The parent is now the item itself, not his parent $comment = replace_macros($cmnt_tpl,array( '$return_path' => '', '$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''), '$type' => (($mode === 'profile') ? 'wall-comment' : 'net-comment'), '$id' => $item['item_id'], - '$parent' => $item['parent'], + '$parent' => $item['item_id'], '$qcomment' => $qcomment, '$profile_uid' => $profile_owner, '$mylink' => $a->contact['url'], diff --git a/mod/item.php b/mod/item.php index fddc3fd12..cc1e628c8 100644 --- a/mod/item.php +++ b/mod/item.php @@ -77,14 +77,15 @@ function item_post(&$a) { ); } // if this isn't the real parent of the conversation, find it - if($r !== false && count($r)) { + // We are now threading the comments, the parent may have a parent + /*if($r !== false && count($r)) { $parid = $r[0]['parent']; if($r[0]['id'] != $r[0]['parent']) { $r = q("SELECT * FROM `item` WHERE `id` = `parent` AND `parent` = %d LIMIT 1", intval($parid) ); } - } + }*/ if(($r === false) || (! count($r))) { notice( t('Unable to locate original post.') . EOL); From 2a1657e3617faff8964e979a7a8482dfc0ec08d9 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Mon, 23 Jul 2012 13:58:47 +0200 Subject: [PATCH 085/658] Revert "Progress on #1. Comments are now threaded, at least in the database, for normal view." This reverts commit da1b47a029e678aee8b99ee11eec972dfb9a1a2b. Useless, comments are already threaded in the database using parent-uri --- include/conversation.php | 7 ++----- mod/item.php | 5 ++--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 67445c290..4a9142bb2 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -582,9 +582,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { } $override_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false); - // The comment box should now appear under each writable item, not only at the end of the thread, don't bother with $comments_seen - //$show_comment_box = ((($page_writeable) && ($item_writeable) && ($comments_seen == $comments[$item['parent']])) ? true : false); - $show_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false); + $show_comment_box = ((($page_writeable) && ($item_writeable) && ($comments_seen == $comments[$item['parent']])) ? true : false); if(($comments[$item['parent']] > 2) && ($comments_seen <= ($comments[$item['parent']] - 2)) && ($item['gravity'] == 6)) { @@ -683,13 +681,12 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { } if(($show_comment_box) || (($show_comment_box == false) && ($override_comment_box == false) && ($item['last-child']))) { - // The parent is now the item itself, not his parent $comment = replace_macros($cmnt_tpl,array( '$return_path' => '', '$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''), '$type' => (($mode === 'profile') ? 'wall-comment' : 'net-comment'), '$id' => $item['item_id'], - '$parent' => $item['item_id'], + '$parent' => $item['parent'], '$qcomment' => $qcomment, '$profile_uid' => $profile_owner, '$mylink' => $a->contact['url'], diff --git a/mod/item.php b/mod/item.php index cc1e628c8..fddc3fd12 100644 --- a/mod/item.php +++ b/mod/item.php @@ -77,15 +77,14 @@ function item_post(&$a) { ); } // if this isn't the real parent of the conversation, find it - // We are now threading the comments, the parent may have a parent - /*if($r !== false && count($r)) { + if($r !== false && count($r)) { $parid = $r[0]['parent']; if($r[0]['id'] != $r[0]['parent']) { $r = q("SELECT * FROM `item` WHERE `id` = `parent` AND `parent` = %d LIMIT 1", intval($parid) ); } - }*/ + } if(($r === false) || (! count($r))) { notice( t('Unable to locate original post.') . EOL); From d6c600ce112d29cc05dc241246c5124c9447f321 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Mon, 23 Jul 2012 15:35:31 +0200 Subject: [PATCH 086/658] Hooks now have a 'priority' value, default to 0. The hooks are retrieved from the database by descending priority. As a result they are run in the same order. --- include/plugin.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/include/plugin.php b/include/plugin.php index ffa562273..d6f81b817 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -111,7 +111,7 @@ function reload_plugins() { if(! function_exists('register_hook')) { -function register_hook($hook,$file,$function) { +function register_hook($hook,$file,$function,$priority=0) { $r = q("SELECT * FROM `hook` WHERE `hook` = '%s' AND `file` = '%s' AND `function` = '%s' LIMIT 1", dbesc($hook), @@ -121,10 +121,11 @@ function register_hook($hook,$file,$function) { if(count($r)) return true; - $r = q("INSERT INTO `hook` (`hook`, `file`, `function`) VALUES ( '%s', '%s', '%s' ) ", + $r = q("INSERT INTO `hook` (`hook`, `file`, `function`, `priority`) VALUES ( '%s', '%s', '%s', '%s' ) ", dbesc($hook), dbesc($file), - dbesc($function) + dbesc($function), + dbesc($priority) ); return $r; }} @@ -145,7 +146,7 @@ if(! function_exists('load_hooks')) { function load_hooks() { $a = get_app(); $a->hooks = array(); - $r = q("SELECT * FROM `hook` WHERE 1"); + $r = q("SELECT * FROM `hook` WHERE 1 ORDER BY `priority` DESC"); if(count($r)) { foreach($r as $rr) { if(! array_key_exists($rr['hook'],$a->hooks)) @@ -161,6 +162,7 @@ function call_hooks($name, &$data = null) { $a = get_app(); if((is_array($a->hooks)) && (array_key_exists($name,$a->hooks))) { + logger('call_hooks ' . print_r($a->hooks[$name],true) , LOGGER_DEBUG); foreach($a->hooks[$name] as $hook) { @include_once($hook[0]); if(function_exists($hook[1])) { From 35f1081bfe834d268744e091c24d730cda2064c4 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Mon, 23 Jul 2012 20:16:06 +0200 Subject: [PATCH 087/658] Removed the debug statement --- include/plugin.php | 1 - 1 file changed, 1 deletion(-) diff --git a/include/plugin.php b/include/plugin.php index d6f81b817..f60a7d296 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -162,7 +162,6 @@ function call_hooks($name, &$data = null) { $a = get_app(); if((is_array($a->hooks)) && (array_key_exists($name,$a->hooks))) { - logger('call_hooks ' . print_r($a->hooks[$name],true) , LOGGER_DEBUG); foreach($a->hooks[$name] as $hook) { @include_once($hook[0]); if(function_exists($hook[1])) { From b20a80bf39e6121ca0e3bbf84496e7dd9bc234f5 Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 23 Jul 2012 15:27:25 -0700 Subject: [PATCH 088/658] rev update --- boot.php | 2 +- util/messages.po | 4 ++-- view/wall_item.tpl | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boot.php b/boot.php index 3a541a272..018b3b9f3 100644 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '3.0.1412' ); +define ( 'FRIENDICA_VERSION', '3.0.1413' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1153 ); diff --git a/util/messages.po b/util/messages.po index a365fdf46..fcbfc33c5 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 3.0.1412\n" +"Project-Id-Version: 3.0.1413\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-07-22 10:00-0700\n" +"POT-Creation-Date: 2012-07-23 10:00-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/view/wall_item.tpl b/view/wall_item.tpl index 60dde7600..496dab4a3 100644 --- a/view/wall_item.tpl +++ b/view/wall_item.tpl @@ -24,7 +24,7 @@
    $item.name -
    $item.ago
    +
    $item.ago
    From 0d631cc08c21997d8e97f84aaaa12d2b2cafeffa Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 23 Jul 2012 15:57:40 -0700 Subject: [PATCH 089/658] hopefully better update handling - never update the current DB version or continue with other updates if there was a failure of any individual update. --- boot.php | 12 +++++++----- mod/admin.php | 3 +++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/boot.php b/boot.php index 018b3b9f3..340ef1399 100644 --- a/boot.php +++ b/boot.php @@ -747,9 +747,10 @@ if(! function_exists('check_config')) { // If the update fails or times-out completely you may need to // delete the config entry to try again. - if(get_config('database','update_' . $x)) + $t = get_config('database','update_' . $x); + if($t !== false) break; - set_config('database','update_' . $x, '1'); + set_config('database','update_' . $x, time()); // call the specific update @@ -772,13 +773,14 @@ if(! function_exists('check_config')) { . 'Content-transfer-encoding: 8bit' ); //try the logger logger('CRITICAL: Update Failed: '. $x); + break; } - else + else { set_config('database','update_' . $x, 'success'); - + set_config('system','build', $x + 1); + } } } - set_config('system','build', DB_UPDATE_VERSION); } } } diff --git a/mod/admin.php b/mod/admin.php index c8ed7a53b..05af01aa4 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -471,6 +471,9 @@ function admin_page_dbsync(&$a) { if($a->argc > 3 && intval($a->argv[3]) && $a->argv[2] === 'mark') { set_config('database', 'update_' . intval($a->argv[3]), 'success'); + $curr = get_config('system','build'); + if(intval($curr) == intval($a->argv[3])) + set_config('system','build',intval($curr) + 1); info( t('Update has been marked successful') . EOL); goaway($a->get_baseurl(true) . '/admin/dbsync'); } From c052c6afca08eff24c0b4b95c7bde1e9ee2c4e31 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Tue, 24 Jul 2012 01:21:02 +0200 Subject: [PATCH 090/658] Database can now be automatically updated --- boot.php | 2 +- database.sql | 1 + update.php | 9 ++++++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/boot.php b/boot.php index 3a541a272..bcff5dddd 100644 --- a/boot.php +++ b/boot.php @@ -12,7 +12,7 @@ require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_VERSION', '3.0.1412' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1153 ); +define ( 'DB_UPDATE_VERSION', 1154 ); define ( 'EOL', "
    \r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index 1d0a32176..80ce05ba0 100644 --- a/database.sql +++ b/database.sql @@ -456,6 +456,7 @@ CREATE TABLE IF NOT EXISTS `hook` ( `hook` char(255) NOT NULL, `file` char(255) NOT NULL, `function` char(255) NOT NULL, + `priority` int(11) UNSIGNED NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/update.php b/update.php index d752eaa6d..9442f825b 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Mon, 23 Jul 2012 20:37:00 -0600 Subject: [PATCH 091/658] changes to support a mobile theme --- boot.php | 21 ++- include/plugin.php | 1 + include/text.php | 2 +- js/main.js | 2 +- library/Mobile_Detect/Mobile_Detect.php | 221 ++++++++++++++++++++++++ mod/photos.php | 2 +- mod/pretheme.php | 12 +- view/common_tabs.tpl | 2 +- view/jot-header.tpl | 6 +- view/photo_edit.tpl | 9 +- view/photos_upload.tpl | 8 +- view/profile_edit.tpl | 14 +- 12 files changed, 260 insertions(+), 40 deletions(-) create mode 100644 library/Mobile_Detect/Mobile_Detect.php diff --git a/boot.php b/boot.php index bcff5dddd..773e2d966 100644 --- a/boot.php +++ b/boot.php @@ -8,6 +8,7 @@ require_once('include/datetime.php'); require_once('include/pgettext.php'); require_once('include/nav.php'); require_once('include/cache.php'); +require_once('library/Mobile_Detect/Mobile_Detect.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_VERSION', '3.0.1412' ); @@ -559,7 +560,7 @@ if(! class_exists('App')) { $interval = 40000; $this->page['title'] = $this->config['sitename']; - $tpl = file_get_contents('view/head.tpl'); + $tpl = get_markup_template('head.tpl'); $this->page['htmlhead'] = replace_macros($tpl,array( '$baseurl' => $this->get_baseurl(), // FIXME for z_path!!!! '$local_user' => local_user(), @@ -1441,8 +1442,17 @@ if(! function_exists('current_theme')) { $a = get_app(); - $system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : ''); - $theme_name = ((isset($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme); + $mobile_detect = new Mobile_Detect(); + $is_mobile = $mobile_detect->isMobile() || $mobile_detect->isTablet(); + + if($is_mobile) { + $system_theme = ((isset($a->config['system']['mobile-theme'])) ? $a->config['system']['mobile-theme'] : ''); + $theme_name = ((isset($_SESSION) && x($_SESSION,'mobile-theme')) ? $_SESSION['mobile-theme'] : $system_theme); + } + else { + $system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : ''); + $theme_name = ((isset($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme); + } if($theme_name && (file_exists('view/theme/' . $theme_name . '/style.css') || @@ -1579,18 +1589,21 @@ if(! function_exists('profile_tabs')){ 'url' => $url, 'sel' => ((!isset($tab)&&$a->argv[0]=='profile')?'active':''), 'title' => t('Status Messages and Posts'), + 'id' => 'status-tab', ), array( 'label' => t('Profile'), 'url' => $url.'/?tab=profile', 'sel' => ((isset($tab) && $tab=='profile')?'active':''), 'title' => t('Profile Details'), + 'id' => 'profile-tab', ), array( 'label' => t('Photos'), 'url' => $a->get_baseurl() . '/photos/' . $nickname, 'sel' => ((!isset($tab)&&$a->argv[0]=='photos')?'active':''), 'title' => t('Photo Albums'), + 'id' => 'photo-tab', ), ); @@ -1600,12 +1613,14 @@ if(! function_exists('profile_tabs')){ 'url' => $a->get_baseurl() . '/events', 'sel' =>((!isset($tab)&&$a->argv[0]=='events')?'active':''), 'title' => t('Events and Calendar'), + 'id' => 'events-tab', ); $tabs[] = array( 'label' => t('Personal Notes'), 'url' => $a->get_baseurl() . '/notes', 'sel' =>((!isset($tab)&&$a->argv[0]=='notes')?'active':''), 'title' => t('Only You Can See This'), + 'id' => 'notes-tab', ); } diff --git a/include/plugin.php b/include/plugin.php index f60a7d296..8f6d6ea98 100644 --- a/include/plugin.php +++ b/include/plugin.php @@ -256,6 +256,7 @@ function get_theme_info($theme){ 'author' => array(), 'maintainer' => array(), 'version' => "", + 'credits' => "", 'experimental' => false, 'unsupported' => false ); diff --git a/include/text.php b/include/text.php index bfa832425..41030e677 100644 --- a/include/text.php +++ b/include/text.php @@ -403,7 +403,7 @@ function load_view_file($s) { return file_get_contents("$d/$lang/$b"); $theme = current_theme(); - + if(file_exists("$d/theme/$theme/$b")) return file_get_contents("$d/theme/$theme/$b"); diff --git a/js/main.js b/js/main.js index a5ce89460..c7db9a069 100644 --- a/js/main.js +++ b/js/main.js @@ -641,7 +641,7 @@ Array.prototype.remove = function(item) { function previewTheme(elm) { theme = $(elm).val(); $.getJSON('pretheme?f=&theme=' + theme,function(data) { - $('#theme-preview').html('
    ' + data.desc + '
    ' + theme + ''); + $('#theme-preview').html('
    ' + data.desc + '
    ' + data.version + '
    ' + data.credits + '
    ' + theme + ''); }); } diff --git a/library/Mobile_Detect/Mobile_Detect.php b/library/Mobile_Detect/Mobile_Detect.php new file mode 100644 index 000000000..4b8c9fecb --- /dev/null +++ b/library/Mobile_Detect/Mobile_Detect.php @@ -0,0 +1,221 @@ +isMobile() or $detect->isTablet() + * + * For more specific usage see the documentation navigate to: + * http://code.google.com/p/php-mobile-detect/wiki/Mobile_Detect + * + * @license http://www.opensource.org/licenses/mit-license.php The MIT License + */ + +class Mobile_Detect { + + protected $detectionRules; + protected $userAgent = null; + protected $accept = null; + // Assume the visitor has a desktop environment. + protected $isMobile = false; + protected $isTablet = false; + protected $phoneDeviceName = null; + protected $tabletDevicename = null; + protected $operatingSystemName = null; + protected $userAgentName = null; + // List of mobile devices (phones) + protected $phoneDevices = array( + 'iPhone' => '(iPhone.*Mobile|iPod|iTunes)', + 'BlackBerry' => 'BlackBerry|rim[0-9]+', + 'HTC' => 'HTC|HTC.*(6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT', + 'Nexus' => 'Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus', + 'Dell' => 'Dell.*Streak|Dell.*Aero|Dell.*Venue|DELL.*Venue Pro|Dell Flash|Dell Smoke|Dell Mini 3iX|XCD28|XCD35', + 'Motorola' => '\bDroid\b.*Build|DROIDX|HRI39|MOT\-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT909|XT910|XT912|XT928', + 'Samsung' => 'Samsung|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9300 |GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-P6810|GT-P7100|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100', + 'Sony' => 'E10i|SonyEricsson|SonyEricssonLT15iv', + 'Asus' => 'Asus.*Galaxy', + 'Palm' => 'PalmSource|Palm', // avantgo|blazer|elaine|hiptop|plucker|xiino ; @todo - complete the regex. + 'Vertu' => 'Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature', // Just for fun ;) + 'GenericPhone' => '(mmp|pocket|psp|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|wap|nokia|Series40|Series60|S60|SonyEricsson|N900|PPC;|MAUI.*WAP.*Browser|LG-P500)' + ); + // List of tablet devices. + protected $tabletDevices = array( + 'BlackBerryTablet' => 'PlayBook|RIM Tablet', + 'iPad' => 'iPad|iPad.*Mobile', // @todo: check for mobile friendly emails topic. + 'Kindle' => 'Kindle|Silk.*Accelerated', + 'SamsungTablet' => 'SAMSUNG.*Tablet|Galaxy.*Tab|GT-P1000|GT-P1010|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P1000|GT-P3100|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7300|GT-P7320|GT-P7500|GT-P7510|GT-P7511', + 'HTCtablet' => 'HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200', + 'MotorolaTablet' => 'xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617', + 'AsusTablet' => 'Transformer|TF101', + 'NookTablet' => 'NookColor|nook browser|BNTV250A|LogicPD Zoom2', + 'AcerTablet' => 'Android.*\b(A100|A101|A200|A500|A501|A510|W500|W500P|W501|W501P)\b', + 'YarvikTablet' => 'Android.*(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468)', + 'GenericTablet' => 'Tablet(?!.*PC)|ViewPad7|LG-V909|MID7015|BNTV250A|LogicPD Zoom2|\bA7EB\b|CatNova8|A1_07|CT704|CT1002|\bM721\b', + ); + // List of mobile Operating Systems. + protected $operatingSystems = array( + 'AndroidOS' => '(android.*mobile|android(?!.*mobile))', + 'BlackBerryOS' => '(blackberry|rim tablet os)', + 'PalmOS' => '(avantgo|blazer|elaine|hiptop|palm|plucker|xiino)', + 'SymbianOS' => 'Symbian|SymbOS|Series60|Series40|\bS60\b', + 'WindowsMobileOS' => 'IEMobile|Windows Phone|Windows CE.*(PPC|Smartphone)|MSIEMobile|Window Mobile|XBLWP7', + 'iOS' => '(iphone|ipod|ipad)', + 'FlashLiteOS' => '', + 'JavaOS' => '', + 'NokiaOS' => '', + 'webOS' => '', + 'badaOS' => '\bBada\b', + 'BREWOS' => '', + ); + // List of mobile User Agents. + protected $userAgents = array( + 'Chrome' => '\bCrMo\b|Chrome\/[.0-9]* Mobile', + 'Dolfin' => '\bDolfin\b', + 'Opera' => 'Opera.*Mini|Opera.*Mobi|Android.*Opera', + 'Skyfire' => 'skyfire', + 'IE' => 'IEMobile|MSIEMobile', + 'Firefox' => 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile', + 'Bolt' => 'bolt', + 'TeaShark' => 'teashark', + 'Blazer' => 'Blazer', + 'Safari' => 'Mobile.*Safari|Safari.*Mobile', + 'Midori' => 'midori', + 'GenericBrowser' => 'NokiaBrowser|OviBrowser|SEMC.*Browser' + ); + + function __construct(){ + + // Merge all rules together. + $this->detectionRules = array_merge( + $this->phoneDevices, + $this->tabletDevices, + $this->operatingSystems, + $this->userAgents + ); + $this->userAgent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null; + $this->accept = isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : null; + + if ( + isset($_SERVER['HTTP_X_WAP_PROFILE']) || + isset($_SERVER['HTTP_X_WAP_CLIENTID']) || + isset($_SERVER['HTTP_WAP_CONNECTION']) || + isset($_SERVER['HTTP_PROFILE']) || + isset($_SERVER['HTTP_X_OPERAMINI_PHONE_UA']) || // Reported by Nokia devices (eg. C3) + isset($_SERVER['HTTP_X_NOKIA_IPADDRESS']) || + isset($_SERVER['HTTP_X_NOKIA_GATEWAY_ID']) || + isset($_SERVER['HTTP_X_ORANGE_ID']) || + isset($_SERVER['HTTP_X_VODAFONE_3GPDPCONTEXT']) || + isset($_SERVER['HTTP_X_HUAWEI_USERID']) || + isset($_SERVER['HTTP_UA_OS']) || // Reported by Windows Smartphones + (isset($_SERVER['HTTP_UA_CPU']) && $_SERVER['HTTP_UA_CPU'] == 'ARM') // Seen this on a HTC + ) { + $this->isMobile = true; + } elseif (!empty($this->accept) && (strpos($this->accept, 'text/vnd.wap.wml') !== false || strpos($this->accept, 'application/vnd.wap.xhtml+xml') !== false)) { + $this->isMobile = true; + } else { + $this->_detect(); + } + + } + + public function getRules() + { + return $this->detectionRules; + } + + /** + * Magic overloading method. + * + * @method boolean is[...]() + * @param string $name + * @param array $arguments + * @return mixed + */ + public function __call($name, $arguments) + { + + $key = substr($name, 2); + return $this->_detect($key); + + } + + /** + * Private method that does the detection of the + * mobile devices. + * + * @param string $key + * @return boolean|null + */ + private function _detect($key='') + { + + if(empty($key)){ + + // Begin general search. + foreach($this->detectionRules as $_regex){ + if(empty($_regex)){ continue; } + if(preg_match('/'.$_regex.'/is', $this->userAgent)){ + $this->isMobile = true; + return true; + } + } + return false; + + } else { + + // Search for a certain key. + // Make the keys lowecase so we can match: isIphone(), isiPhone(), isiphone(), etc. + $key = strtolower($key); + $_rules = array_change_key_case($this->detectionRules); + + if(array_key_exists($key, $_rules)){ + if(empty($_rules[$key])){ return null; } + if(preg_match('/'.$_rules[$key].'/is', $this->userAgent)){ + $this->isMobile = true; + return true; + } else { + return false; + } + } else { + trigger_error("Method $key is not defined", E_USER_WARNING); + } + + return false; + + } + + } + + /** + * Check if the device is mobile. + * Returns true if any type of mobile device detected, including special ones + * @return bool + */ + public function isMobile() + { + return $this->isMobile; + } + + /** + * Check if the device is a tablet. + * Return true if any type of tablet device is detected. + * @return boolean + */ + public function isTablet() + { + + foreach($this->tabletDevices as $_regex){ + if(preg_match('/'.$_regex.'/is', $this->userAgent)){ + $this->isTablet = true; + return true; + } + } + + return false; + + } + + +} \ No newline at end of file diff --git a/mod/photos.php b/mod/photos.php index 624f0bdca..da33126bb 100644 --- a/mod/photos.php +++ b/mod/photos.php @@ -988,7 +988,7 @@ function photos_content(&$a) { call_hooks('photo_upload_form',$ret); - $default_upload = '
    + $default_upload = '
    '; diff --git a/mod/pretheme.php b/mod/pretheme.php index 0efa587d8..4584cb29e 100644 --- a/mod/pretheme.php +++ b/mod/pretheme.php @@ -7,10 +7,16 @@ function pretheme_init(&$a) { $info = get_theme_info($theme); if($info) { // unfortunately there will be no translation for this string - $desc = $info['description'] . ' ' . $info['version']; + $desc = $info['description']; + $version = $info['version']; + $credits = $info['credits']; } - else $desc = ''; - echo json_encode(array('img' => get_theme_screenshot($theme), 'desc' => $desc)); + else { + $desc = ''; + $version = ''; + $credits = ''; + } + echo json_encode(array('img' => get_theme_screenshot($theme), 'desc' => $desc, 'version' => $version, 'credits' => $credits)); } killme(); } diff --git a/view/common_tabs.tpl b/view/common_tabs.tpl index 22c33d6b1..f8ceff46a 100644 --- a/view/common_tabs.tpl +++ b/view/common_tabs.tpl @@ -1,5 +1,5 @@ diff --git a/view/jot-header.tpl b/view/jot-header.tpl index f1c283470..64bcf27ca 100644 --- a/view/jot-header.tpl +++ b/view/jot-header.tpl @@ -283,9 +283,9 @@ function enableOnUser(){ if(reply && reply.length) { commentBusy = true; $('body').css('cursor', 'wait'); - $.get('filer/' + id + '?term=' + reply); - if(timer) clearTimeout(timer); - timer = setTimeout(NavUpdate,3000); + $.get('filer/' + id + '?term=' + reply, NavUpdate); +// if(timer) clearTimeout(timer); +// timer = setTimeout(NavUpdate,3000); liking = 1; $.fancybox.close(); } else { diff --git a/view/photo_edit.tpl b/view/photo_edit.tpl index 85d5fb8e2..53b69caae 100644 --- a/view/photo_edit.tpl +++ b/view/photo_edit.tpl @@ -28,7 +28,7 @@
    - + $permissions
    @@ -47,9 +47,4 @@
    - + diff --git a/view/photos_upload.tpl b/view/photos_upload.tpl index 706b3398d..33c48cbeb 100644 --- a/view/photos_upload.tpl +++ b/view/photos_upload.tpl @@ -23,7 +23,7 @@
    - + $permissions
    @@ -43,9 +43,3 @@
    - diff --git a/view/profile_edit.tpl b/view/profile_edit.tpl index 64cd47324..bc342cc3b 100644 --- a/view/profile_edit.tpl +++ b/view/profile_edit.tpl @@ -172,7 +172,6 @@ $lbl_about
    -
    @@ -184,7 +183,6 @@ $lbl_hobbies
    -
    @@ -196,7 +194,6 @@ $lbl_likes
    -
    @@ -208,7 +205,6 @@ $lbl_dislikes
    -
    @@ -220,7 +216,6 @@ $lbl_social
    -
    @@ -238,7 +233,6 @@ $lbl_music
    -

    @@ -249,7 +243,6 @@ $lbl_book

    - @@ -262,7 +255,6 @@ $lbl_tv
    - @@ -275,7 +267,6 @@ $lbl_film
    -
    @@ -293,7 +284,6 @@ $lbl_love
    - @@ -306,7 +296,6 @@ $lbl_work
    - @@ -319,7 +308,6 @@ $lbl_school
    - @@ -331,4 +319,4 @@ $lbl_school - \ No newline at end of file + From 982625db9cfef2c4e74676b8277b1cf09c5278a3 Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 23 Jul 2012 20:00:00 -0700 Subject: [PATCH 092/658] update contact photos and names in local delivery - not just polled feeds --- include/items.php | 112 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/include/items.php b/include/items.php index fe729000c..701a7ada7 100755 --- a/include/items.php +++ b/include/items.php @@ -2107,6 +2107,118 @@ function local_delivery($importer,$data) { $feed->enable_order_by_date(false); $feed->init(); + + if($feed->error()) + logger('local_delivery: Error parsing XML: ' . $feed->error()); + + + // Check at the feed level for updated contact name and/or photo + + $name_updated = ''; + $new_name = ''; + $photo_timestamp = ''; + $photo_url = ''; + + + $rawtags = $feed->get_feed_tags( NAMESPACE_DFRN, 'owner'); + if(! $rawtags) + $rawtags = $feed->get_feed_tags( SIMPLEPIE_NAMESPACE_ATOM_10, 'author'); + if($rawtags) { + $elems = $rawtags[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]; + if($elems['name'][0]['attribs'][NAMESPACE_DFRN]['updated']) { + $name_updated = $elems['name'][0]['attribs'][NAMESPACE_DFRN]['updated']; + $new_name = $elems['name'][0]['data']; + } + if((x($elems,'link')) && ($elems['link'][0]['attribs']['']['rel'] === 'photo') && ($elems['link'][0]['attribs'][NAMESPACE_DFRN]['updated'])) { + $photo_timestamp = datetime_convert('UTC','UTC',$elems['link'][0]['attribs'][NAMESPACE_DFRN]['updated']); + $photo_url = $elems['link'][0]['attribs']['']['href']; + } + } + + if((is_array($contact)) && ($photo_timestamp) && (strlen($photo_url)) && ($photo_timestamp > $importer['avatar-date'])) { + logger('local_delivery: Updating photo for ' . $importer['name']); + require_once("Photo.php"); + $photo_failure = false; + $have_photo = false; + + $r = q("SELECT `resource-id` FROM `photo` WHERE `contact-id` = %d AND `uid` = %d LIMIT 1", + intval($importer['id']), + intval($importer['importer_uid']) + ); + if(count($r)) { + $resource_id = $r[0]['resource-id']; + $have_photo = true; + } + else { + $resource_id = photo_new_resource(); + } + + $img_str = fetch_url($photo_url,true); + // guess mimetype from headers or filename + $type = guess_image_type($photo_url,true); + + + $img = new Photo($img_str, $type); + if($img->is_valid()) { + if($have_photo) { + q("DELETE FROM `photo` WHERE `resource-id` = '%s' AND `contact-id` = %d AND `uid` = %d", + dbesc($resource_id), + intval($importer['id']), + intval($importer['importer_uid']) + ); + } + + $img->scaleImageSquare(175); + + $hash = $resource_id; + $r = $img->store($importer['importer_uid'], $importer['id'], $hash, basename($photo_url), 'Contact Photos', 4); + + $img->scaleImage(80); + $r = $img->store($importer['importer_uid'], $importer['id'], $hash, basename($photo_url), 'Contact Photos', 5); + + $img->scaleImage(48); + $r = $img->store($importer['importer_uid'], $importer['id'], $hash, basename($photo_url), 'Contact Photos', 6); + + $a = get_app(); + + q("UPDATE `contact` SET `avatar-date` = '%s', `photo` = '%s', `thumb` = '%s', `micro` = '%s' + WHERE `uid` = %d AND `id` = %d LIMIT 1", + dbesc(datetime_convert()), + dbesc($a->get_baseurl() . '/photo/' . $hash . '-4.'.$img->getExt()), + dbesc($a->get_baseurl() . '/photo/' . $hash . '-5.'.$img->getExt()), + dbesc($a->get_baseurl() . '/photo/' . $hash . '-6.'.$img->getExt()), + intval($importer['importer_uid']), + intval($importer['id']) + ); + } + } + + if((is_array($contact)) && ($name_updated) && (strlen($new_name)) && ($name_updated > $contact['name-date'])) { + $r = q("select * from contact where uid = %d and id = %d limit 1", + intval($importer['importer_uid']), + intval($importer['id']) + ); + + $x = q("UPDATE `contact` SET `name` = '%s', `name-date` = '%s' WHERE `uid` = %d AND `id` = %d LIMIT 1", + dbesc(notags(trim($new_name))), + dbesc(datetime_convert()), + intval($importer['importer_uid']), + intval($importer['id']) + ); + + // do our best to update the name on content items + + if(count($r)) { + q("update item set `author-name` = '%s' where `author-name` = '%s' and `author-link` = '%s' and uid = %d", + dbesc(notags(trim($new_name))), + dbesc($r[0]['name']), + dbesc($r[0]['url']), + intval($importer['importer_uid']) + ); + } + } + + /* // Currently unsupported - needs a lot of work $reloc = $feed->get_feed_tags( NAMESPACE_DFRN, 'relocate' ); From 8126e8ea47d069637725d525530af762d4e74c43 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta Date: Tue, 24 Jul 2012 09:15:57 -0600 Subject: [PATCH 093/658] Introducing Frost --- view/theme/frost/TODO | 9 + view/theme/frost/admin_aside.tpl | 42 + view/theme/frost/border.jpg | Bin 0 -> 342 bytes view/theme/frost/comment_item.tpl | 74 + view/theme/frost/contact_template.tpl | 27 + view/theme/frost/contacts-template.tpl | 28 + view/theme/frost/conversation.tpl | 27 + view/theme/frost/default.php | 42 + view/theme/frost/editicons.png | Bin 0 -> 6300 bytes view/theme/frost/experimental | 0 view/theme/frost/field_input.tpl | 6 + view/theme/frost/field_openid.tpl | 6 + view/theme/frost/field_password.tpl | 6 + view/theme/frost/file.gif | Bin 0 -> 615 bytes view/theme/frost/friendika-16.png | Bin 0 -> 699 bytes view/theme/frost/head.jpg | Bin 0 -> 383 bytes view/theme/frost/head.tpl | 105 + view/theme/frost/images/ajax-loader.gif | Bin 0 -> 4176 bytes view/theme/frost/images/approve-16.png | Bin 0 -> 263 bytes view/theme/frost/images/approve.png | Bin 0 -> 475 bytes view/theme/frost/images/boldB-serif-16.png | Bin 0 -> 320 bytes view/theme/frost/images/camera-16.png | Bin 0 -> 274 bytes view/theme/frost/images/camera.png | Bin 0 -> 530 bytes view/theme/frost/images/code-16.png | Bin 0 -> 258 bytes view/theme/frost/images/code.png | Bin 0 -> 376 bytes view/theme/frost/images/contacts.png | Bin 0 -> 813 bytes view/theme/frost/images/disapprove-16.png | Bin 0 -> 276 bytes view/theme/frost/images/disapprove.png | Bin 0 -> 480 bytes view/theme/frost/images/drop-16.png | Bin 0 -> 199 bytes view/theme/frost/images/drop-red.png | Bin 0 -> 321 bytes view/theme/frost/images/drop.png | Bin 0 -> 305 bytes view/theme/frost/images/folder-16.png | Bin 0 -> 139 bytes view/theme/frost/images/folder.png | Bin 0 -> 219 bytes view/theme/frost/images/globe.png | Bin 0 -> 1055 bytes view/theme/frost/images/italicI-serif-16.png | Bin 0 -> 229 bytes view/theme/frost/images/link-16.png | Bin 0 -> 232 bytes view/theme/frost/images/link.png | Bin 0 -> 384 bytes view/theme/frost/images/lock-24.png | Bin 0 -> 301 bytes view/theme/frost/images/lock.png | Bin 0 -> 520 bytes view/theme/frost/images/menu.png | Bin 0 -> 1019 bytes view/theme/frost/images/message.png | Bin 0 -> 708 bytes view/theme/frost/images/network.png | Bin 0 -> 770 bytes view/theme/frost/images/notifications.png | Bin 0 -> 923 bytes view/theme/frost/images/paperclip-24.png | Bin 0 -> 566 bytes view/theme/frost/images/paperclip.png | Bin 0 -> 821 bytes view/theme/frost/images/pencil-16.png | Bin 0 -> 232 bytes view/theme/frost/images/pencil.png | Bin 0 -> 402 bytes view/theme/frost/images/quote-16.png | Bin 0 -> 233 bytes view/theme/frost/images/quote.png | Bin 0 -> 312 bytes view/theme/frost/images/recycle-16.png | Bin 0 -> 364 bytes view/theme/frost/images/recycle.png | Bin 0 -> 795 bytes view/theme/frost/images/remote-link-16.png | Bin 0 -> 304 bytes view/theme/frost/images/remote-link.png | Bin 0 -> 534 bytes view/theme/frost/images/speaker.png | Bin 0 -> 648 bytes view/theme/frost/images/star-16.png | Bin 0 -> 293 bytes view/theme/frost/images/star-yellow-16.png | Bin 0 -> 372 bytes view/theme/frost/images/star-yellow.png | Bin 0 -> 633 bytes view/theme/frost/images/star.png | Bin 0 -> 515 bytes view/theme/frost/images/tag-16.png | Bin 0 -> 210 bytes view/theme/frost/images/tag.png | Bin 0 -> 291 bytes .../frost/images/underlineU-serif-16.png | Bin 0 -> 267 bytes view/theme/frost/images/unlock-24.png | Bin 0 -> 295 bytes view/theme/frost/images/unlock.png | Bin 0 -> 572 bytes view/theme/frost/images/video-16.png | Bin 0 -> 170 bytes view/theme/frost/images/video.png | Bin 0 -> 259 bytes view/theme/frost/jot-header.tpl | 317 ++ view/theme/frost/js/main.js | 656 +++ view/theme/frost/js/theme.js | 184 + view/theme/frost/lang_selector.tpl | 10 + view/theme/frost/lock.cur | Bin 0 -> 4286 bytes view/theme/frost/login-bg.gif | Bin 0 -> 237 bytes view/theme/frost/login-style.css | 108 + view/theme/frost/login.tpl | 42 + view/theme/frost/lostpass.tpl | 21 + view/theme/frost/moderated_comment.tpl | 61 + view/theme/frost/nav.tpl | 131 + view/theme/frost/oembed_video.tpl | 4 + view/theme/frost/photo-menu.jpg | Bin 0 -> 459 bytes view/theme/frost/photo_edit.tpl | 58 + view/theme/frost/photo_view.tpl | 42 + view/theme/frost/photos_upload.tpl | 55 + view/theme/frost/profile_edit.tpl | 322 ++ view/theme/frost/profile_vcard.tpl | 51 + view/theme/frost/prv_message.tpl | 39 + view/theme/frost/register.tpl | 78 + view/theme/frost/screenshot.jpg | Bin 0 -> 146944 bytes view/theme/frost/style.css | 3794 +++++++++++++++++ view/theme/frost/style.css.orig | 3658 ++++++++++++++++ view/theme/frost/theme.php | 23 + view/theme/frost/wall_item.tpl | 79 + 90 files changed, 10105 insertions(+) create mode 100644 view/theme/frost/TODO create mode 100644 view/theme/frost/admin_aside.tpl create mode 100644 view/theme/frost/border.jpg create mode 100755 view/theme/frost/comment_item.tpl create mode 100644 view/theme/frost/contact_template.tpl create mode 100644 view/theme/frost/contacts-template.tpl create mode 100644 view/theme/frost/conversation.tpl create mode 100644 view/theme/frost/default.php create mode 100644 view/theme/frost/editicons.png create mode 100644 view/theme/frost/experimental create mode 100644 view/theme/frost/field_input.tpl create mode 100644 view/theme/frost/field_openid.tpl create mode 100644 view/theme/frost/field_password.tpl create mode 100644 view/theme/frost/file.gif create mode 100644 view/theme/frost/friendika-16.png create mode 100644 view/theme/frost/head.jpg create mode 100644 view/theme/frost/head.tpl create mode 100644 view/theme/frost/images/ajax-loader.gif create mode 100644 view/theme/frost/images/approve-16.png create mode 100644 view/theme/frost/images/approve.png create mode 100644 view/theme/frost/images/boldB-serif-16.png create mode 100644 view/theme/frost/images/camera-16.png create mode 100644 view/theme/frost/images/camera.png create mode 100644 view/theme/frost/images/code-16.png create mode 100644 view/theme/frost/images/code.png create mode 100644 view/theme/frost/images/contacts.png create mode 100644 view/theme/frost/images/disapprove-16.png create mode 100644 view/theme/frost/images/disapprove.png create mode 100644 view/theme/frost/images/drop-16.png create mode 100644 view/theme/frost/images/drop-red.png create mode 100644 view/theme/frost/images/drop.png create mode 100644 view/theme/frost/images/folder-16.png create mode 100644 view/theme/frost/images/folder.png create mode 100644 view/theme/frost/images/globe.png create mode 100644 view/theme/frost/images/italicI-serif-16.png create mode 100644 view/theme/frost/images/link-16.png create mode 100644 view/theme/frost/images/link.png create mode 100644 view/theme/frost/images/lock-24.png create mode 100644 view/theme/frost/images/lock.png create mode 100644 view/theme/frost/images/menu.png create mode 100644 view/theme/frost/images/message.png create mode 100644 view/theme/frost/images/network.png create mode 100644 view/theme/frost/images/notifications.png create mode 100644 view/theme/frost/images/paperclip-24.png create mode 100644 view/theme/frost/images/paperclip.png create mode 100644 view/theme/frost/images/pencil-16.png create mode 100644 view/theme/frost/images/pencil.png create mode 100644 view/theme/frost/images/quote-16.png create mode 100644 view/theme/frost/images/quote.png create mode 100644 view/theme/frost/images/recycle-16.png create mode 100644 view/theme/frost/images/recycle.png create mode 100644 view/theme/frost/images/remote-link-16.png create mode 100644 view/theme/frost/images/remote-link.png create mode 100644 view/theme/frost/images/speaker.png create mode 100644 view/theme/frost/images/star-16.png create mode 100644 view/theme/frost/images/star-yellow-16.png create mode 100644 view/theme/frost/images/star-yellow.png create mode 100644 view/theme/frost/images/star.png create mode 100644 view/theme/frost/images/tag-16.png create mode 100644 view/theme/frost/images/tag.png create mode 100644 view/theme/frost/images/underlineU-serif-16.png create mode 100644 view/theme/frost/images/unlock-24.png create mode 100644 view/theme/frost/images/unlock.png create mode 100644 view/theme/frost/images/video-16.png create mode 100644 view/theme/frost/images/video.png create mode 100644 view/theme/frost/jot-header.tpl create mode 100644 view/theme/frost/js/main.js create mode 100644 view/theme/frost/js/theme.js create mode 100644 view/theme/frost/lang_selector.tpl create mode 100644 view/theme/frost/lock.cur create mode 100644 view/theme/frost/login-bg.gif create mode 100644 view/theme/frost/login-style.css create mode 100644 view/theme/frost/login.tpl create mode 100644 view/theme/frost/lostpass.tpl create mode 100755 view/theme/frost/moderated_comment.tpl create mode 100644 view/theme/frost/nav.tpl create mode 100755 view/theme/frost/oembed_video.tpl create mode 100644 view/theme/frost/photo-menu.jpg create mode 100644 view/theme/frost/photo_edit.tpl create mode 100644 view/theme/frost/photo_view.tpl create mode 100644 view/theme/frost/photos_upload.tpl create mode 100644 view/theme/frost/profile_edit.tpl create mode 100644 view/theme/frost/profile_vcard.tpl create mode 100644 view/theme/frost/prv_message.tpl create mode 100644 view/theme/frost/register.tpl create mode 100644 view/theme/frost/screenshot.jpg create mode 100644 view/theme/frost/style.css create mode 100644 view/theme/frost/style.css.orig create mode 100644 view/theme/frost/theme.php create mode 100644 view/theme/frost/wall_item.tpl diff --git a/view/theme/frost/TODO b/view/theme/frost/TODO new file mode 100644 index 000000000..930de8f6f --- /dev/null +++ b/view/theme/frost/TODO @@ -0,0 +1,9 @@ +Home page edit pencil +Preview spacing +Photo album display + +Check TinyMCE optimization +"Profiles" page is wonky +Settings, admin, photos upload don't look beautiful + + diff --git a/view/theme/frost/admin_aside.tpl b/view/theme/frost/admin_aside.tpl new file mode 100644 index 000000000..b17addda3 --- /dev/null +++ b/view/theme/frost/admin_aside.tpl @@ -0,0 +1,42 @@ + +

    $admtxt

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

    $plugadmtxt

    {{ endif }} + + + +

    $logtxt

    + + diff --git a/view/theme/frost/border.jpg b/view/theme/frost/border.jpg new file mode 100644 index 0000000000000000000000000000000000000000..034a1cb63b65268d78567f19cd2a0416f7b06509 GIT binary patch literal 342 zcmex=LJ%Z3brsR%R9! z7G_o;!OF_Y#?HgR4g~z%+?+gu{6a#4{DOkQVlv{wB2uD)f)a`nQnIr0^76vsN-9cn zDl&5Nav(z(fm+$w*!eg(_~b+cMdU~Z{|_(-axfGyFfubLF)#@-G7B>PKf)jmaz7&j zGGJk52TF(upo=pIC4w}7)T3%(WMT$Nhzg% f9U_4e8jYbYT*|B>4vQSR6atx6%@A>8_ + $(document).ready( function () { + $(document).mouseup(function(e) { + var container = $("#comment-edit-wrapper-$id"); + if( container.has(e.target).length === 0) { + commentClose(document.getElementById('comment-edit-text-$id'),$id); + cmtBbClose($id); + } + }); + }); + + +
    +
    + + + + + + + +
    + $mytitle +
    +
    +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
    + + + {{ if $qcomment }} + + {{ endif }} + +
    + + +
    +
    + +
    diff --git a/view/theme/frost/contact_template.tpl b/view/theme/frost/contact_template.tpl new file mode 100644 index 000000000..4f66684e1 --- /dev/null +++ b/view/theme/frost/contact_template.tpl @@ -0,0 +1,27 @@ + +
    +
    +
    + + $contact.name + + {{ if $contact.photo_menu }} + menu +
    +
      + $contact.photo_menu +
    +
    + {{ endif }} +
    + +
    +
    +
    $contact.name

    +{{ if $contact.alt_text }}
    $contact.alt_text
    {{ endif }} +
    $contact.network
    + +
    +
    diff --git a/view/theme/frost/contacts-template.tpl b/view/theme/frost/contacts-template.tpl new file mode 100644 index 000000000..76254c1ca --- /dev/null +++ b/view/theme/frost/contacts-template.tpl @@ -0,0 +1,28 @@ +

    $header{{ if $total }} ($total){{ endif }}

    + +{{ if $finding }}

    $finding

    {{ endif }} + +
    +
    +$desc + + +
    +
    +
    + +$tabs + + +
    +{{ for $contacts as $contact }} + {{ inc contact_template.tpl }}{{ endinc }} +{{ endfor }} +
    +
    + +$paginate + + + + diff --git a/view/theme/frost/conversation.tpl b/view/theme/frost/conversation.tpl new file mode 100644 index 000000000..90b192469 --- /dev/null +++ b/view/theme/frost/conversation.tpl @@ -0,0 +1,27 @@ +{{ for $threads as $thread }} +
    + {{ for $thread.items as $item }} + {{if $item.comment_firstcollapsed}} +
    + $thread.num_comments $thread.hide_text +
    + {{endif}} + + {{ inc $item.template }}{{ endinc }} + + + {{ endfor }} +
    +{{ endfor }} + +
    + + diff --git a/view/theme/frost/default.php b/view/theme/frost/default.php new file mode 100644 index 000000000..34acb7f6a --- /dev/null +++ b/view/theme/frost/default.php @@ -0,0 +1,42 @@ + + + + <?php if(x($page,'title')) echo $page['title'] ?> + + + + + module === 'home' ) { ?> +
    + +
    + module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) { + ?> + +
    +
    +
    +
    + + +
    + +
    + +
    +
    + +
    +
    + +
    +
    +
    + + + + diff --git a/view/theme/frost/editicons.png b/view/theme/frost/editicons.png new file mode 100644 index 0000000000000000000000000000000000000000..171a4087655a3dd1c2724cce699fb5e228a1206e GIT binary patch literal 6300 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 + + + $field.3 + diff --git a/view/theme/frost/field_openid.tpl b/view/theme/frost/field_openid.tpl new file mode 100644 index 000000000..a9f6cacad --- /dev/null +++ b/view/theme/frost/field_openid.tpl @@ -0,0 +1,6 @@ + +
    + + + $field.3 +
    diff --git a/view/theme/frost/field_password.tpl b/view/theme/frost/field_password.tpl new file mode 100644 index 000000000..a329b1102 --- /dev/null +++ b/view/theme/frost/field_password.tpl @@ -0,0 +1,6 @@ + +
    + + + $field.3 +
    diff --git a/view/theme/frost/file.gif b/view/theme/frost/file.gif new file mode 100644 index 0000000000000000000000000000000000000000..7885b998d578d4523103e1f5dfbcd8133a7f0fe7 GIT binary patch literal 615 zcmZ?wbhEHb6krfwIF`)7#xKb(Aj2uD!Xs-asNo`J94_scC*xeG;M1rUF;y*cx?0ps z_2^mZF>^Fx=V~P{*G^rfleShbd#hf~c7uYwhQ)`B%8nbAoir{#Wm{SZR^k3H=J{9Jm=JO-lh4xYs&@q)(f6(7rfdp`gC0M@46J&eJQBta!B9h@CjEU zCtit~bTwx3)z~T5;-_9qoOUf~`t_6<*HdTSNS}2hbM}p#xi@p?-O8VTt6<^nlEt^n zm)@yZcDHury{0wy+t)wn*zmAxdicePqc2w-f4Szw%e5z8tv~f@)0x*>&c5Dp;q9)AZ+BmMxA*e9{a4-{xcdI^ z^$$mHd^mpV!>KzTPv8A?_TH!S_doro4N&~a!pOx?&!EEq1fV!!U_a7O-_+dF+SU>! zFQMYz-Xh@HBp)OYX*7MhPg@W#w~=pBQbN3eZz~TMmqFs9_?SQ)4OK-ssb;;n#j&A* zd-rW?(vFUgwX!ldG1S#kSCW^J(hQGrGYyNp5g8E{5^SNR78+&d5VFtD$HU2(Cq_BY z%_KY^(BH??#leP8tzN;;s4bxJl1t}A1>2$$i-f1=+Y}7fSVT6ZoamP|_An?=&^XL3 nuk6%xBcZXWg@e6|V^=`pp=K5i9uWlt2ZjcQz9KFz76xkoO@B#U literal 0 HcmV?d00001 diff --git a/view/theme/frost/friendika-16.png b/view/theme/frost/friendika-16.png new file mode 100644 index 0000000000000000000000000000000000000000..1a742ecdc1016e7033e78e37fbecade08fef6d50 GIT binary patch literal 699 zcmV;s0!00ZP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L03itg03ithOzq;@00007bV*G`2ipS$ z1Ro(nX?n5%00KKnL_t(I%Y~9nh>c+s$A9O2-|OCCKFWd^Wr4v0`G~T$Ae$*+uPn_* zN>i3(p=38qlogSkm8^({Bw6{GjAABaW^%t~?!C{)-{PHnXGY=Fd7jgG&iOshbIvh< z7~>{0+YWS*i-5R9!ykJYm^8C*nWTds#wSL8PQKl_s^|#85xggaR>ua%i+2&%+mCmS zR=vWOzU+~t)As4p#L4kD5AGd4P(;qjPDC%)CFD z4PUsl;p&-gsDwOO4#{KD0e%4#7@tT8>#8`{!UYlf2K4mGxgFX4ySG{wPwaz2kD&na ze4BAp>rE7Mz{*nO<9HVusN!9dD50!mGXZ4)uKF43Szf*r&R+h(gVGt)sDbi|_H68< ztJwm9nSlgA1`7@|zyK&Du=d~)Vs(b)qIO6}vPE<8M1r7%NYc(zk^qWkW`6@LNED|A zyE)o_ljs@%l!}QB-B=OXeauk&4*)o{w+9$obaWd-Q{4%BjtfQmCqM#ASpL_vJ)D15 zU@1WPVu>;OaE@oM%AN3H29;my={3v4P=}PYZ*?(;q!>?LmU%w-oKXJRdDiOvo>(u_ z?rTg79YAfmlCrLmNiwqpTEVdCuUNZ{5<;XBk^sq?H2_O`O58bry^1g@b3xTw#0LnC zI=(rNZ`5<0ui@rvxcREQb2j_LJ%Z3brsRu&*& z29a#6tZW>-931TI90J@toV>yUBEmufLP8?qvXUZVGGanPQp!>?a`K9biXxIK>M9Cq zvI>d{AVU~g+1NPPIrup^_!UHjL={K|{|_(-axl~|urf0$F)#@-G7B>PKf)jhc0V%% z5@2RyWaj`%DF^_4#>m9Zh>#OvViaUy6%7muopcGPLIUV_koOUQiIJIs1tcSgF2f)w z%*gcr76T76BhYqcK?ZwT%fkrCN0aq{`U e%N;)te=@#)^7-|oFLP{6q$G}S_`JRT|4jhcT}_Yx literal 0 HcmV?d00001 diff --git a/view/theme/frost/head.tpl b/view/theme/frost/head.tpl new file mode 100644 index 000000000..09e97b2f8 --- /dev/null +++ b/view/theme/frost/head.tpl @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/view/theme/frost/images/ajax-loader.gif b/view/theme/frost/images/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..e15844396f9b8c4d915f5cf595e2a22014a24426 GIT binary patch literal 4176 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 Y#`Dx6nd>%kIx0NRp)dR0fBtX$58}9UkpKVy literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/approve-16.png b/view/theme/frost/images/approve-16.png new file mode 100644 index 0000000000000000000000000000000000000000..170e62c8e476f25d043534eaf93874505f6dbf84 GIT binary patch literal 263 zcmV+i0r>ujP)=K~yM_rO`1?0zni8;18E*X=i0ZVq)SAw6x(GRD^4A1PU#v45fGk z;sw;i1R4vr!~}wsTUe2?nSuZtX5l51$;`a({l&1q?y*2Kp?9m=2zc9kI7z^_alfdV zdW9k;539oO2m|h_;O8|s-qlbmfeqxS$MYPoIKv;7ct}YtTc6Ow3kJBvV*(8LvT@N$ zgaMMH000006VoOIv0RI60 z0RN!9r;`8x0gy>VK~z|U#nwA(6j2z)@!zh*7$cITkYJO-%6P$2&{To_41yLmeh00> z7QtQuegjdou+h#7Xl0d)U=pwpBnlc(k|x)&m|ZeiW@j_z%$^4x=A1K}_dj!P?;)J# z@eNI!3K+Mi29ad^q@VB$9q@fj_Ucp*1fS@r*D%#D`1PE&^ZkN1a@sZn#V*tp>^eN> z38t$CpT@@=@Vbh(+bG`UfD_DA2|kO@UBDX{s}kPq0#5L#O7IYV6~KG$@8jrR0XR`& z$ZI9Rbu1}9I=^GPRUT+Pccj~K4Xc=I#VMsbivRkk{)3BUz$5q>2%g~0QNbthG$6Qb z53r1{8Gn$b$sydtiweN+Nf$@n%ck_)4h?Pla^1m-?9|CF?V)rjR7(9HJ&Xw-jRoJw z?O5;yyp9E*6mi%G(TD}#!eR{g9&X`F4ES@rB;38djDEBWG2oxFl~wr%|6OSgzmI2F zk>ox#-rgAk RiH!gN002ovPDHLkV1f}w+X?^x literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/boldB-serif-16.png b/view/theme/frost/images/boldB-serif-16.png new file mode 100644 index 0000000000000000000000000000000000000000..08d1ee5cbd2a36d9f83d319e17909666887f26d9 GIT binary patch literal 320 zcmV-G0l)r$~>ad%-h$6|0L^Jm3^Z2hMe02X2M^FOKts_~uK@VNvmEPwD&% z8~v(BxZirib}ITWT;4p7CG6lmd1c!}Rd7BkSk5}xs{=Rj6LN0qjH;`6cd6+*@F*rj zd{+lvM# zAsQ2VFWGuI2MVx0ct7h+S}D0@qy)4qO|(AG2L@4PNRsSuHlM z%jdyIql@MR2^Qby{M^a2ys(o$Cy;epMgR8t$2-$<9%&kXF*yE?KUsM9hc8@WJG{8+ zA8UWITPJ+B-&ppThH2u#+mdfN4S6ryhBfYfuq>Br&w^&(-rFqSZ(NC2sSY(PDsFxB zp>pNIKF<%%Ynb^D`rcX-kT}KX!>mm1x{JPQvmY9NV$2gdE0iajxA3i?>_&%r{{Fu? V1t%4DzXN)S!PC{xWt~$(69A<>Zvy}T literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/camera.png b/view/theme/frost/images/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..aa5935b7c03ad578105846438f2915e0164f91ab GIT binary patch literal 530 zcmV+t0`2{YP)X1^@s6zs*Ol00006VoOIv0RI60 z0RN!9r;`8x0mn&1K~zYIz12Ny6j2n$@!y)b@gokI%jqV4;*G@=YO8_%)QG!#A7oq z;1$-f@t0iB-k;C-Mq>nz`!w#CkFcpp6Q^q$$n#W0JnHmBEz7^78-ZHcbyRZQ#iX?S z#n^}O0Ze?u%hGQ>yvIE5WzX7JFxYYrn@`Xl!9|=K;47PmY5Z(q5mPmbpW;4V;3IZm z1}AZ(rq&{9Pom4Wg5wpUbNEn0v!@394xQlFO=WyYyOrHkMGuFi<X;Y^9U8`KX$vjyQp{yjSm7T9A=nrIhPcLtq*s# z#9eOE#8>PpHR$3Yo=X$4JhmsLDcYEc4QXC%6^m^dAJq-Pyhe`07*qoM6N<$g0w65(EtDd literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/code-16.png b/view/theme/frost/images/code-16.png new file mode 100644 index 0000000000000000000000000000000000000000..e5589222e3d289598440dc5c9ce31b660a6889f9 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt`JJzX3_ zEPCHwwC`&S6k+`!FY7eJDaUEO;MSm!T{F+=nTRdez}wq*OeMH>w?wpr;4H_Fd-W^h zHZU#U^?gq9{lA|p9t+O$v^(&jv#ed~*$JV4?DG}R891w&O))qq_dmiViamXc)4n6D z`z1t|>8^`dJiBCm(&Pf$n)X?tlI;p60p4el*9g7q*e`IMyGZ2Nt`@_G%<5YfKXQ#I z){oyUvOi{`{0fUl;$@!Sed=DU64%(5)$vdGZ7+wppMt`4r(3u9fnH$nboFyt=akR{ E0D_BU;{X5v literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/code.png b/view/theme/frost/images/code.png new file mode 100644 index 0000000000000000000000000000000000000000..448e49df0e62f04b294a97fb5c24bdb176422bc2 GIT binary patch literal 376 zcmV-;0f+vHP)HK~zYI?bAIAZ*|9N(2cb17J`m1Kfs9C@&rtmcG z#w8q}mdNd+k7kH#fh~+`zKKpSsVDMRctJ75^}ybv@tbiS?Ev@jf$9*mh)*0xYc+JE zx(h>{mvIW!GMgp_=T0`VkaA)(PHa{~%U% z=x}Z6>HAhgHgfTp7V(Pn1V0$lj%>t7Qo+xU)(j?l33l+&N~4;mRK=S7>6vJvf7BOF WC`%0S^iv`L0000FN5q>Z`A2;2#g^w%NNN4T` zc8otAr<8sz<)m_J6?eQrb@I7sw-c*Q%cn#Nj0q&UiCd|pxUs&N=g}FZ{hHE`BPrI3 z_U%ak$=}D=Zx|^l-TUN!A1roiv5eduMrXHyF-&JrTYm*iML^*2Xwk5zlsxB$--)u8 z&#SWm#0a6R=aNQB=?p6ABmE=*RRtsUBrUz#Qj*ymh=9q9LuZLzGYl7@_X7Yl3PI&B z>dgQERC>f|!QtlxfKX^1u5y_GE>e)@08qwx>U#^=Y?#I=rMELkP&@WR5s0x9WruT8 zN-vu>5!vbokyBu;wza5Lh6qOM+0TVdU^hG6&VY7X5o!5nP8~oMFnNlIXnW>OJa7+q zm9M^Uy@)8*SP?Pc%@79+A)3a$E-})4ukSiV0Pq%YknAu3)!G(=$}C5jfP@1q$+!Uk(GV|frY8dXz!Tsdu+tHl_K2Vka0G9Mq*zgtBM@y5r9J|W^QoJl zc6!!_?8j0V*VdPo6k{8CGCh^xfKR}OiPY8hE(!L8Py?v1GdZA*Jh}!4QVWc`N-N5T za-f3%Y{O=!H@b2Is-JPDpsF098sb0{&}JFRz#H_8Q#XEB!PNVyttrvp4Q$km`r z=tKd<5pgiY0Tn}x+8~x$0sxaW#e%VIX=#^Xlg+lLuCF?(yr+XOAViu>2C+;47yGQB zYU_?WONcH>7&VirxbB-^Zc+x7+eCdtTI*1YyOEUr&) zcORyHwRpUDUGo}&m}KFD`FEZ)?iT#xs?6{4gGKY#@}858dsF8uuiSk|SL_h4{8cfo X_f`kpH9HM~o?`HH^>bP0l+XkKhkR?{ literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/disapprove.png b/view/theme/frost/images/disapprove.png new file mode 100644 index 0000000000000000000000000000000000000000..fa58d020eb2b25f52223d779c63606b483431fb7 GIT binary patch literal 480 zcmV<60U!Q}P)MH000006VoOIv0RI60 z0RN!9r;`8x0hLKaK~z|U#n(Se9B~lF@z2Q-Lk+9~hRK8Ghdz7=HU~ zNwZ$!9VYMy{kXan4Y^8V(_37kc8~ajPgue*UM2L^hXK#S z3GV}Lj48|})w?3_7l{7OT~XLzC&5wpB<72NKg1e(ihz$`pwr+wyn?-=;5BR(1%HO= zqTs6vShhNRzX)(0zEC9mH!gByTqhOE_<#o)1HWP!-vtA%V?0v7!Dl#@?VD^viUt0d zA@~eW+XWNc?SC_ZFQx&P!sn1+>&NjJytyA!d<|{K3x7!Z9ij{_3ZWl_NN|?j8!1MKGap*0{ Wcg7cyjz z29Zf;i*~hFY-SV4zb5SBa!t{|Y26vGptW->4&FOFCUBVc#$5H80 uPmt=8Su>;`%Xd$SP7QuFqwK^P%lyNOI~4*}$Z!DN!QkoY=d#Wzp$P!F&Puuf literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/drop-red.png b/view/theme/frost/images/drop-red.png new file mode 100644 index 0000000000000000000000000000000000000000..91b0260ce1c9f859d04514df1acf718b8a319752 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^iXhCv1|-9u9Lfh$oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#4!fuTw^qcmeJVhq2c9mDArXhK-gqc@NP(yAVSZ;{;_kj(T6}@m6FRTkfAw2E zMI_1b-4DrkJ122_F4gCjn2>isqn*{qgHd7)Bl9I$&Lt7tkqm{F`RAO%7_t<#86rKH z0(d+bE=^!HP-iN0ZYX5_z-h>IMnL(2Y?DY2W8?|H1I6uk?#@(fZQ$^krgF+@72~m- zdsZ(VeN@d>+`-7#bmR5eeudxK>y1^I)Ge?5d(7ZBq3Qtllc<)4%`(!Heyk6_=o>W6 zdDivLXQG>b-oE%pH20o=$;HU8my)-=-?n>(^{$x*cFlC%J@Zub-}w~`vzI@WTenhe Q1<zopr0KA@h>;M1& literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/drop.png b/view/theme/frost/images/drop.png new file mode 100644 index 0000000000000000000000000000000000000000..af38adf5e16e2a88a11bc370a9ca3413a0bd5e0a GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^iXhCv1|-9u9Lfh$Y)RhkE)4%caKYZ?lYt`7JY5_^ zB3jShxX9aVz{7H3x1y0-;@oYkFDbr|ifsDVFvY9!R_DVk&3KKA!3ur60sStYSQBnk zzU!U%ghe4zU1d`KB<_{!C>_uw{bCqKMg1K*+D%xL8naf%DbhfdA z?@V){NsM>)Gzopr01wG| A5C8xG literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/folder-16.png b/view/theme/frost/images/folder-16.png new file mode 100644 index 0000000000000000000000000000000000000000..aab49c8d35003afb4cd824afea543d1fd8f13d30 GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt@*o-U3d z7QM*{5G-pF~#L8RfK{v)ou2SR*{Ufkw9xbh~-}7$A_rijd zo9Uuu5y{sI-}UMCB|A!Ov0Zj7OUFgt;SBHTOC4hAI&CZ=@4NTEZFEjpmB8jLpD+DFN zhc09$-H0-}&_fq`u^^K!rX=0y3T1S$pi(RHVJI@QvQR6#(1?&_HDYwfl6+I#JF*{4Hwbf6#SVkV~J2poz%_zhp<6Rg8$sEtB@Tl8Wnwk4%i$2KfM zPuT(;CH#34WyTaS0jmt(+2?o*-{Usnj%JvO zy+)qQN{p{+z+w0x6W)w7@pD?>)#s|$wq=W*)ivCWG^t-u&z}dnbmt_X*$oR`}x@sF5O5f>38LnYriBJ!INpn|Y z3fAIs{3#-2q3YH4we%g75ick)q8qQ^DNMsLi9Sc=SyV@)~pi$f&&FKH1#G(=- z7A6ICCBJJ_#r$rZmnk0<5%e&w5b2;Bn?&}lVX#YdM2CpuZH7+Vj=Rv6(I*M_tP_>@ zczlV8!r$XW#q7llyqFgKMK30?m^j_&PN6=AFbj8MMU&0V%I2O* zT$XPV;km-(i5k^)EQYMX^CGw8cqYx+k`tFC;sKGCb1cXde>VnW1`7I4#=nVoZO-Ts z^}Qyt-9Z_zLzMcr@wlj(?b^5ExH{7{F6pm{hIvGKzc>?IUSt+9O?eAf!%K!gD;~;t z7qwEpGMm({je|Q%4A>^}M;$k0ycO*fcN^YqKcac1gu}JJBWu&VPCSs&OS^3%%dO9Z zHc4UB1asOLu~WRra<{!JvU4SjH{3P#a68NJn7^il0eeKFoIipdQ{e=fVXj8hN|6ECcOksN6$)GjED8? z{a9O*{N9bnSViAiBq%P7Y?!w3f|tYJ2T$!Un29pS+Bo0QVE1ME;GiyU&QW*7lwI^- z`PrnrOV7kb>bFe}^xs=@wPC*r?*ZPoF)?rMt$shP<8bg=d#Wzp$PzKJ5!qg literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/link-16.png b/view/theme/frost/images/link-16.png new file mode 100644 index 0000000000000000000000000000000000000000..744fd6b3c84688bb9011b0e55ba0d0bcedc44965 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_0JzX3_ zEPCHwaO64|D01|nzof^B9-}EMRk95x&yDC1^xnWC8OeIH*HQfIHQrt$=Et?!kZ7SVd$Rh~WP(CG~gnM!ZF zl3AWC@;mGEN#gi3ubjLi_n)t5Ge2Yyk#pEOaaz)aV)k!ywsqg*Zl1#R!lvNl9mTkN eXa0Zf&dXe+wf$}L-0MJxGI+ZBxvX@+dQ}c*3 zY+?h?za2274@Y<}a1PO%M?B9anz4uZG_K+buXSo$F@Tmd-p2yo@(wYD(LkU^C&q&K z1l!*X(S}7#2Dx)QW$LQ9z;QVJu41b`Lw`niAk7!i*-87GE%;#Vlruw=8`PPBQUh=B zfQify6KTGP&M8VYPjq8heNQx_J%}%{B{64~K`dc7$i4V#%&NpITd3r@9VLkwN7DEj z2fn`@b3XlYAu)U=!L4GezQOcgG!GfVI_`gHevh@ZJ{LuP+aW!Y&y=Nty9PBQ ekw_%+KllKDwU(Fq$8H+{0000U literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/lock-24.png b/view/theme/frost/images/lock-24.png new file mode 100644 index 0000000000000000000000000000000000000000..8d20c12b6d1320f9dae00dd7fd0c59a573584eaa GIT binary patch literal 301 zcmV+|0n+}7P)@4&MdJnyaxUxQoo7%KXF}y_zGQV1X(2%Eoy#Kh`YH7)JI?spUBI zwL!s4XuDjHLYEB+awe4v*2aElz93y(hqm)J@g95&?{`hYw+1(C1!hUJbFak4|6o_J zE7*>Lge%1}mZz_$cwoBdL~g2>#1BmTP3PnXWBxEdY7$nl00000NkvXXu0mjf<@19@ literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/lock.png b/view/theme/frost/images/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..b8b8cd20e0abbfdbfda68fb9a8ca96499a818e1b GIT binary patch literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^ia>10!3HElj1GJOQfx`y?k)`fL2$v|<&zm0825U* zIEF;DzP(|aE#fF~;N$(3F3E}>S5&g5p9&Yq&b<=$N2sYcqU%-!$2GA!0egon!5aic zOj3K?CeIO?9V}d=-tf&mA9v%jhcbE(Mbb9%%YWcI z|AFE2k6Q-c1Jnw5WB;rvEG^vHCC%-=F<^7W9Td@rY_?h9H)RITU;X4sFIxY-a}@gD zqBK!cXr`?5vF{Ho(hPc;uhzQ#y5yIve{G}I-^EcYZ)IPtU3zM>s%*@A?E)rs_nE%V z^Ssx;H(gV?4=|$AZ<9cXDPP yo^5{U@7q0^=iX{&GF39mm><4-;a<s4Q^D?%u9)1dpS_V&7KbLh*2~7Z4u;;1( literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/menu.png b/view/theme/frost/images/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..44d5285fe04ff6807dc6b88521839204fa3e0bdd GIT binary patch literal 1019 zcmVSPD!JvIiw0Dh)O|x1g?Au#D&kp1##pHaD;Pjhyy~jRJl|rO&}&DsU82F-Iv2o z$j0)nov7i$NUv<~&OFaE@4p$t|9!|U=Nszn7&mI7Nep3d{c7S6+asu4aCy=L(sw6d zZ7tyKcmqvhY}BQab~!&E@bszvJLkm-h`$K6?gbB-X0-y;fI zjO7HnXR4aa-Ia)iMvF+>jNO@Yz2hJVZY{tN#XA@`U^qNdRd?(7iUd&IAPQ=Xdk2e# z#gn)8h~qUtRF%6LAjI(+QELw{b3NdkBUoB_pQwJS-9JtWcD6tLOjUoHiF;)XY_W&*qRW*H=^`7Bf9A@~dL4knL785;D z)yaJ{9aWt$(GwVL%@SYG(rmM38q z*qp+OfPgS;A=0^7PA+{-YSukrWy)&6wusagB(DM6e%&;dB{l1~^z~FdPmUpNdzIk~ zxzQoQT{R?a# zlH7XhAZY*(fE6$=A^k3kfBDfE0P)qm$Q$0>SBcg1pT7eiVS*1ybptfcLG>_lMCyJ4 peg?L@%ZFE2o?HleMIQOj$3Nxqi2<0AHlF|h002ovPDHLkV1mF}(5C&u`N(7=|AwagwHM zRS6*wTo4DKfQFFxoA`e@j00RaAcVwV>wYwA+SnZWrgNiqRi(9;)lya0b^Jblzt5io zhxX8$0U$kk3l(6KJxb50uD;F%z3VWoPQ0Jo>_ys`99z5th%{6K-WXHtLA(IGG#daP zdG9Acv`YwMOc#)rj{p>NZ;detPyz#Ei~+{?tX}{*Ffzu(*p9sg@ID1%O}qpKa_24x zzeS=KKnEDLG#dv<)i;0>#3Mmm-G*xG<|W<-{skIdngW>3Yzx2(;<3iAw}1$pInqW> zgY{#emZkvWD5EBkhzk}N0Z)NHTRP!@F7O2SE74fb&p&g`r4U$6a;=?Q0?&b8aw6U! zUIRVgnQV`>Q6B(ImqSq3Rsc2#LDLlV;<;f19-&zor#NQ}iV&y=+0>A(> zX)X#;8UV0Hyj1@NI0jCXn8^0`z`53(spvHQ<;xGI(iA`xr#NR-EJFJ&Fwt(aAj8MN zN8pRbKIp{MK`vGL?kVY53g=u?0B(_lX)q~M)|V@snd)?W((f|~#x3W{0AdpSXQjEw z(54Wjf%r%O`I?Ncf>J$MQzP=Ahz%6JM%S(?#i^2~DLmPRGvDOET?H!ByhN4tI^1mN zfEDF$B~yNnH(@SEBURS(wgXld#;M}j-NEZX5!{CT7J##&x)5!-!x@$0z;#-e`tsHaNB>mHL;s6hcw*)00006X_cm~`}QZnoE? zlmpswuLr>VZ5oZEYhzxcaf*doJpdqP*1j(NW_H%)pAOH4>&w7w8~_p7Oy+E0vn9__ z@1I);R! zYR5PwgI0e@tXCj_E1>!}3sOt2ii9Gvl31@mg>xmo7Xl|DZV39;6;Yua2!TQx0;~Y? z!K@IGa)@g$D^Z6}09aMTem0b`6A$a_>xA_hFR3I8JY5guBM3E0;k5Gu{lYLSz()X% z0?%S{08=O%2VxvBprr&&Lg4)&)vHLWl5a1kmLP(R1I{yLn;)=Q7vXseo+7&5FxxnbphB0 z&O2TR`Gr0TE)Jr43%UYq0VN@1*9Aagfyp4e0oFkugVunh?ln8hzhMfbNXE6~VyZ>f zyU6@nvgaG$+3 Avj6}9 literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/notifications.png b/view/theme/frost/images/notifications.png new file mode 100644 index 0000000000000000000000000000000000000000..27bacc6727d3f7ec1704c957ee4d929c1a946d24 GIT binary patch literal 923 zcmV;M17!S(P)@S%3y%@~Ly~ooFD%5^#1ly!TzD)HL=wXnhgXR+j%2fI$S|hh*8li1?wQ z9Ec~a6Oo*Hi@{x7{{0YI=;C>p`fX46*_`Sk;WlFCD_R@J#diR0mjCBrKN?B{9B|;=h65)d6 z$_01g%2}1lWmgOvDNNz)xI8 zC3fR!spQk~1*>rsFR`d#zl&x}z%PtRB_E3WIEUrnj--$;6Q!AttGFTNpdaJWgKcO*Cn^R?J{m7@2wU(@Mj3@b z*KrLELRGU`fuB7tO3ihgc0+OcPREBUICYAt?cBge3PA zva8DY%EcVCViS5XIfc9*wPHIq=Is0NN=$JtHkU#UH*qOvs}s$v7iDQLm3*;SYLjyI zHk=d<&6h3-r*W!?y$W;1EgDKCC${3&BK8U~Of4y7#pKl^nw&>7Mqpn`fMRG8J!llN ztQ7BVx4#!%$v7Z}txr54of22UKrj+ZL}SbTbM~M34UTeZ#=Ww8s{jB107*qoM6N<$ Ef(7pULI3~& literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/paperclip.png b/view/theme/frost/images/paperclip.png new file mode 100644 index 0000000000000000000000000000000000000000..3a2ee26966d0cf5c03f059f6ac30653ca12bb640 GIT binary patch literal 821 zcmV-51Iqk~P)s9?p@hsLGdEdDNn|DHDg+fLAtlXF`_%l%M$NIN#W}-Vhxg6$zIW3f zF1+u3{`Wcmd!F<4G^rkAFavEkg)i|_1MC#y4!nyi=&SksiH~r1qXo>uuW4`-=3qKH z(S=@|!y}Cn(2leC5fA2fEx56U(}5pS==iDy48vFGNkeVI6BqFpw&DKd&KAeBx@r+? za^r;pL|75{v4itfY9^$2JYZoDAe+L@bfF5$nH>x&I!&MtLk!>hUJ3%Es0N8gLd zX)qoT(Z2&Da7cOP{3oo$JEG`p5yALG0dII3J%`)zW{RIzuYg)So13mLSznv$&*AYD zyR}LIV{saXaZ|ziqXy=OR-6zGs;x>98`H?Fg0;~&hLdS@v+zh~l>%m@fDI+<{ptEN zp2_E~Dh0p?q61DSS>Gv!lv_pdI*OaC6fi;*sV&#wHQ`e+vOQF#0AfP!6V2zJut8eLGt%hNP@WzYc?E5iATzIaCtY|1k30L>w z2;RdNqA~Tj`hL++jKnfAvR@KI?%SfP{=e`y9$d(qQPk`m00000NkvXXu0mjfM*)i* literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/pencil-16.png b/view/theme/frost/images/pencil-16.png new file mode 100644 index 0000000000000000000000000000000000000000..a1010ed1341981f6674ae1a86323d2824eb5ea29 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_0JzX3_ zEP9`wH{?3xAi#P-JuLIcEwg(LvmdasL~~0YWPU0ZbyHJLNkLB0e1kwx)Db0Zj}14r zmOd~){O`DqPl01I*Ulq57w}ppbp&!<_;M=yPT&!y(Di?K9w>{Q+&|@hr`xfIZ@zgi zny6&+PdMeDc2II_G0z3}tenGj{h3;u{@lZpDUcb)KSXq;H_ z6PP&3%7lvv11v5W;-BH#Kq3&D^l<4f>CpDlK6&rG%dtoc_ZVZ2A#QMBM>)d`KP#>Q zDzO1Ae69g};50S>9<~IOQHzBbZwYwBJDM>N^DP1C`zVlM20%2(ZAL&8$f2+dvjCz% zmiK{e0nw%=Ds&oWsCk7&g z3@nu*&mLM8gK5NX=NDwyFb`C&(xf_=Os&+D-va4a<8NT|*z0i?at-31~|S*S!` wsKD|*vaWZcrY=-ql0Ys>o5x2@73Vnl1-3#$$uT=L%>V!Z07*qoM6N<$f>r^f=l}o! literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/quote-16.png b/view/theme/frost/images/quote-16.png new file mode 100644 index 0000000000000000000000000000000000000000..22b431b169fa59b3785a328746913418437043a7 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt`hJY5_^ zEPC%=FywO#6li_e&#_2Rt5ZYctH`2YuZR}k8x2v4Qqdb2x5i~M>NqYIH1WUl;a;}L zAy2i**8k6(Jo)tYDVM!%fjsvYbmj3xxAxoR8JZq3X>5F>{_+2j2Mf9S=E<8la;ttR z=zOMLqV#PUyZ!J&hQ_zDiLZoWam zr|<`xP8L>Opf0eunn8SvSJRK}4o77?F6Rdfu@P{69N;5Y@YL@| zbDZGz6Wn>uoZ{=ajuyUPE5Y_6Zj9|JMK%>j5H7w!BjP%EjJSKOhEVE~2RMmxZ)iuk z5xV${a_d!g0atj(*&mJk=tA++USg%HImHp|RNz|Jo5#4;Khrlq`9g!X#o|i<0000< KMNUMnLSTYB2#5&) literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/recycle-16.png b/view/theme/frost/images/recycle-16.png new file mode 100644 index 0000000000000000000000000000000000000000..909364cb19064eddf8247f49fa905e2289695c54 GIT binary patch literal 364 zcmV-y0h9iTP)5r00006VoOIv0RI60 z0RN!9r;`8x0U=35K~yM_ebT)yL{St4;4c{_qLX+48VQ9$AyY}{6ubZmjfR*)La$Sc zLPMgPMijh(MEq1l6cW`C6%~>(T*W;T*O@bRvYU1GT6^u4Lwn6)6B}qE3th*0V*XE! zq7ev}K`1M96C)_6$R%7vgypcgh}BU|2`nVGjbk;!Z_(Y!!5ZGf;8ws_@D{LdOkoLq zE#e|}L)TEjK6;`By_gFQG90uXhVfOfxRbJniRhFJGjJ4v4GeVp$j+igy-;#m(Zs{ApTGpKIQp=$&kfiG<1zY zd?W<6P3aCx557Zy?>AA|37=1 zE?96`ckSQ){`cN%?R|*1!5D$1xQM zJx#>7VHj>ifE@e303VkKKgB{UiGb+Chc62-7}qLK)gG zGnQ;)akxbE+d^JlDB1fJ5T9ka zZlbqvK0+`|GYS8ON->Q(ht+l2#A{)3Gd-?#DGPK5To%= zgziqN_pRs`@kS!Z>ImH)s_Q%VOG24`nFuie=UZr>gHtV%9t&GG2D1_&2-oP;Sn;sV$$z~Qj-B+MmtV6$!)`1!U~MVFG5FsX4^f#3cD~~f4?vD;){A?i`=3= z!Hh=A;ri?P4n~P9-yEVH_Yxp>H(4pLCQJARA4Q7g5I-gWJXG<@stY|~p0L-k5Yv>G zVKd)WoOD0~M6Yn~_h3R9X%qXyixp93-PjtF*e>n@DsIOok@;&QVG-&*1%hzcs&cRB ze>^?2s_VIiuY?2IxNSvShrhDFM+$vnjPMh&JBvTc;+=)u*J@t~U!8i{y>k0W_?;SM Z{{d$6;Rkf1z7PNa002ovPDHLkV1gt6YO4SM literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/remote-link-16.png b/view/theme/frost/images/remote-link-16.png new file mode 100644 index 0000000000000000000000000000000000000000..29eeeb813f4624fe54ae2dce6772c79633611446 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt^nJzX3_ zEPD4|GW2S86kvV8&np85!*f?`w;A@A z$~>_75FXL!rFcnumcb#`Zw2jJduIE_ES@T}g*ozILeu7=xldWF9vR literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/remote-link.png b/view/theme/frost/images/remote-link.png new file mode 100644 index 0000000000000000000000000000000000000000..1f657411aed18e9bb1c9a49a49703d2945a00d31 GIT binary patch literal 534 zcmV+x0_pvUP)&og&~co?~<~LMPrfvGF@h;C&*0 zFUD~m_pq8J)GEXrZedSmk8YvlV|a*H1$(@d)3B)m9^qiL?j(kV=Bsj$8s=phwlOh{ zh<^kRu-ruQIDU#6wlVl2TcR9X#-}YNkK+$UI};K&a05@#RbfpT{^C1nmFN}9 z_pd5Y!#Bauq=@LyT=NyhN5RMte4-3DaVcl~2d0Eq?lZn(A5P)6@G9qF5_j+`9xSWG zROS>jxU2XpIUv6R2 zP)<&sH>LadN9k|qCuTlO|G zS=d-oHa7kM7E(k>QslA_k!zy{Wkxa+xin*Op40ixG&ARS&irIyp8EBCdVb&U^Lu|U zeZS9-N&8Q&4tw)VI1M{11h{}99Lxh?Chp)=1%1}wcR>8YrilQ|!J|l42?QLDenWVJ zsnr0?$Fn3+Ify!(Mtc%FpY%UjDZmoEO%jxYNcX^9rBTnohluy11!^+@tj29Dt`K}) z_zgH7`m53mG~z&(MC;LK_za9U6LqKw-GuIF`yC4--jL*cQSA6&oTq;bfYBg|OK>8I z?N8dDN#f^{_)6n^q}($S;%vkRu`Xh@G1?*YB(v0+L;cJxkz#uM#Zc|uZ z3g=AGI`V|Lj9a0%D{MTtk+fMA{xd#>UYaKaTnRq~D?)cC@6$8mWBAs*A$k(s8on=y zwIsSfd}H1a=}3D=`EUv}J^Vo45WB+vP&ndYQSv^Wskz~M^Mu%qt)Z`BAoRAR&6DuW zm>v3Mo)A0251}h`E%tlII1zxNHTuW@ i9o1Uye_)gLSL_dSnG^ESNfXeR~-HjC9!&XWmcWX5Z)7 zakTEBe_=qu`U>qG=@H*TZkvcDEqy2dh|hiHR9PDy0sExw`Euqz@;K@ropI9iyKyZ1 z@B`t+vn0-$W&Af0pEA25@Xln75s pM%&j*cOBmGytb#hCSlSEdk>9tpAYZL)&qUX;OXk;vd$@?2>|1ldzb(K literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/star-yellow-16.png b/view/theme/frost/images/star-yellow-16.png new file mode 100644 index 0000000000000000000000000000000000000000..294d04e0601f8549ef259fb2ca334cc12429496f GIT binary patch literal 372 zcmV-)0gL{LP)Vy-Gtt5C!1x2HaA_ zLK_h+tP?bZg@7Uo79uLBy>B7tqln-Oh!&PsHmM}NMIe`he{4>;x>m}C!L0SOc*ZiN?1c{2yzSSr4ThSkBb4wmskkVO$kEuf^8h&qYv>D zN7x9_GbFk3jo<-e1p-f)46*k}evC_f$S{t@em>aBI&t~x~u z8&O1KBL-5~B#0Sp#5c6kAW6g!un{C+Ay!s4=`2iTr-&9R2o{1OzF?8U{Qx#9f`}#o zQ4l53O-yXIkoDf&&2GH+G|SA+&UxniXV0144kay3bm9&U;R!}UG*@P>n(}rI$IyuZ zoGm+16^K*0_DI=@I!a2>jW@aOC2SAT`&LC_sKJ5;TPep-gZ|-`$k9NGN|Ka`#Bh^E z4Yop#!3vPo*ldr-00^>&uE^IVSTrDv6TZk4r(!>eeC;4cLm1uq=}v~k!U8xJT9O+yUv%5YOSOcpKvfl6Cqj((FFEo{VQHn zqqNvVRYKMF4UzkI;wb_>OCMP;cxX!E=KK TP^1hR00000NkvXXu0mjf13D8p literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/star.png b/view/theme/frost/images/star.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a61a497c6f89176297eb1ca40cbd6ffd97d0e3 GIT binary patch literal 515 zcmV+e0{s1nP))jtE8~835cW&iiJ%;3rodVt^`2~4Z*~imttngW}VkNyR!!_%gj7;?*HDi^UM&g zE7-(7Ug2^DuV6jJY1ddD2E@l6i1&2^TqVpKAvA63=@7(I5P)V$j5Q)pp{Wf`7y` z-Kq%C88`A)nx%zc{66~Z=+91k3I&)hIKkI~b=T7-%8Daz3y-iO`r2BFkFzwNb3IWX zq_3*&|L&L9Ww*-$Oo~3clFZ(Ux@nTKy6iC~%0N6$Fgd}hsEcN)71wndUH5oc24bn_ z<{!9I#sG8iece8bWehIi1@^FosgeL4P2mlGV@=8~o&joeg=kVQfqDP{002ovPDHLk FV1lH>=#BsY literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/tag-16.png b/view/theme/frost/images/tag-16.png new file mode 100644 index 0000000000000000000000000000000000000000..cca139cade3921956dd09380982eaa33c90e9181 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt`bo-U3d z7QII=ZscV$6mYp%uB5VH?(0U0tc9#X>*SLzX*Y|+GI|I!965F9hP2_N$zRW0Uvt)- z-R96tgBKx^evVlW^E^!E8$6oT=<@iR?e3IWE|;4ucb~gb(X5v8Lpw!OAw6eL-9mTe zYflYsr~Gt#*Lr8;`m5QFb#2iT))nwh;&MMBX#VEZY4uwhYr+>Ez0eAD5`(9!pUXO@ GgeCw#@>H7u literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/tag.png b/view/theme/frost/images/tag.png new file mode 100644 index 0000000000000000000000000000000000000000..9c644b8232f0ac8d2c3e145d9a42adb33d3699ea GIT binary patch literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^iXhCv1|-9u9Lfh$Y)RhkE)4%caKYZ?lYt^PJY5_^ zB3j>GQRHJX6li@Y?;jx3@YUlSgZe`~8OHrLlh+(BWPHNb>YC``kRY|`t>5jLX|C!k zt80Ir;psWgSiv}dqB%qF^ZB=07+e*E8Z=ed5|}(0S2z_hWK9rwz&EEstRmW}W+{Kd z+b4a(9XcKBH~c-V%i59BvHlI0&YU}b9Ue_Br_LP^yTQDj!^K1;UHgi{VHpMA))0@@ zGa{R2GB26$G^N2tl_T3j-8I5d?|>HDLS9d%45v*DQUan5d@iCBm<$<@IQTFMc?ddi k1c^Lws;XPQV=~jeeVum4rV93M2l|o0)78&qol`;+00CfUU;qFB literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/underlineU-serif-16.png b/view/theme/frost/images/underlineU-serif-16.png new file mode 100644 index 0000000000000000000000000000000000000000..b24729f6cb7844725a4eb4b8f6605faf2d2932f8 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^d_XL~!3HGNrubO_DYhhUcNd2LAh=-f^2tDv1D-C9 zAsQ3kURLyGPLw(R@jRbSv!?d4jeD}h!^Bv2pWJhFZ^zTCjR#fsH9OyEI=HtnaRaB= zVS$?uE;-yeWXoRO{#w&`CpyU)_IcbobULG-YK1lyKJ!q P=obc0S3j3^P6KnwqJJNALjRZ469J1U-Ow z0Yi-qbao9i&`4wrrUqvHX_&-7EGW9)>#BZq_oJCcg?(J%CA>`TM^re$Bzz0o_&Ay` zIEtXgF6P3$3Y_lFw^Vda&ixN)HFez`F*8%o8I`9Tm3iw tL1TpjEMQU7pY6Q;6>5wy*7WTN;}2h2F26R`TNMBR002ovPDHLkV1i&-fd2ph literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/unlock.png b/view/theme/frost/images/unlock.png new file mode 100644 index 0000000000000000000000000000000000000000..81d9740e81ddad0705355bd0bfc5421c4d4d64d0 GIT binary patch literal 572 zcmeAS@N?(olHy`uVBq!ia0vp^ia>16!3HFovXx%~DYhhUcNd2LAh=-f^2rPgj2}H+ z977^n-`+f%B^)Tx{xN=wSBB`tEB$5KO+li9h0CSG*X`jf4cx;J_(AGRkQT?fU8PHR zXnMp(OuRIU-%u;0aACKl`=raBb5xQxTk!K3&$Rsi-Nv~s<=)I$7gs!H%X?@fcF{pP zx}sBb&7H0;unc81R>nR~Zt!{Q6%H!~M)u8>f<{N~q$7|njK zu04l;cKz(Wp|SGgf>j6hJnE@FJil;TR^x%76JM{rd=xSDgY53}58ib!O?)~jYWr%I z`Kk+f&-7>-HuHP#T^`yrf6|4=hOA2dld9g99N71ySk`@V?RvE-9-n&+&O3A-ouo8d z*lWtu-_JZ%pLsFat4-1Pt^9hn`qUf3n_N`9U5@=#m1)iIy1g&1?BDhy*)fu430nL5 zbOdK|bq4C4Ve@Nw8WJJT|Jyo4^Vg)e8}i!zPF2xMR2110V3fw%UYNl0@WgqA>p>+M zXXm}O|DD|>-D{hwwXRb~@TAa0oW$R*Z~4I&&EIL<+WTw6g_e?!a`__u1!3%af39TT zdGA>H!t~!M7Sqg*-0qrQu+j3~rTZG&r`W{&<^8L_jQ!8Gua|(yfx*+&&t;ucLK6Vh C5(kL@ literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/video-16.png b/view/theme/frost/images/video-16.png new file mode 100644 index 0000000000000000000000000000000000000000..7b7e15d8ea3279e9e2993c5d98bc5b03a0dc9c11 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt`fo-U3d z7QJsT?&fT85NLVG|Jz`j;^~hUr_^@1Ml>ZXQLB=1yC?aIf40tbP0l+XkKb09rm literal 0 HcmV?d00001 diff --git a/view/theme/frost/images/video.png b/view/theme/frost/images/video.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb0479126be21010547bb1c2df5fe0345c59e08 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^iXhCv1|-9u9Lfh$Y)RhkE)4%caKYZ?lYt^TJY5_^ zB3j>Gb>wmk6lwo>fAY-Eg^fIK4r=Kf(Ayxi%|SAXOFJNKSsPnd`T^~|d!|3KdsJ8Y z`r6OyKVOxdR}|`WIpulb_=~c7^J1NOoOu)2tg5fbeet=lcdptTCa)zKPg$fQ?p?jk z#J%Lj9nLKqPhIT~_4=|w`$UM6;emxJ!ZArr#gS?!ee6yyejjXEuWb1B$mIV=-~X6p zIWf?}aDP&HO-=VT!y`Ks{%9Fr&zz}#)XZVOhsvkLF%056UF8{EyuSnez~JfX=d#Wz Gp$PyV8*J|Y literal 0 HcmV?d00001 diff --git a/view/theme/frost/jot-header.tpl b/view/theme/frost/jot-header.tpl new file mode 100644 index 000000000..38b0a9208 --- /dev/null +++ b/view/theme/frost/jot-header.tpl @@ -0,0 +1,317 @@ + + + + + diff --git a/view/theme/frost/js/main.js b/view/theme/frost/js/main.js new file mode 100644 index 000000000..71cd8579e --- /dev/null +++ b/view/theme/frost/js/main.js @@ -0,0 +1,656 @@ + + function openClose(theID) { + if(document.getElementById(theID).style.display == "block") { + document.getElementById(theID).style.display = "none" + } + else { + document.getElementById(theID).style.display = "block" + } + } + + function openMenu(theID) { + document.getElementById(theID).style.display = "block" + } + + function closeMenu(theID) { + document.getElementById(theID).style.display = "none" + } + + + + var src = null; + var prev = null; + var livetime = null; + var msie = false; + var stopped = false; + var totStopped = false; + var timer = null; + var pr = 0; + var liking = 0; + var in_progress = false; + var langSelect = false; + var commentBusy = false; + var last_popup_menu = null; + var last_popup_button = null; + + $(function() { + $.ajaxSetup({cache: false}); + + msie = $.browser.msie ; + + /* setup tooltips *//* + $("a,.tt").each(function(){ + var e = $(this); + var pos="bottom"; + if (e.hasClass("tttop")) pos="top"; + if (e.hasClass("ttbottom")) pos="bottom"; + if (e.hasClass("ttleft")) pos="left"; + if (e.hasClass("ttright")) pos="right"; + e.tipTip({defaultPosition: pos, edgeOffset: 8}); + });*/ + + + + /* setup onoff widgets */ + $(".onoff input").each(function(){ + val = $(this).val(); + id = $(this).attr("id"); + $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden"); + + }); + $(".onoff > a").click(function(event){ + event.preventDefault(); + var input = $(this).siblings("input"); + var val = 1-input.val(); + var id = input.attr("id"); + $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden"); + $("#"+id+"_onoff ."+ (val==1?"on":"off")).removeClass("hidden"); + input.val(val); + //console.log(id); + }); + + /* setup field_richtext */ + setupFieldRichtext(); + + /* popup menus */ + function close_last_popup_menu(e) { + + if( last_popup_menu ) { + if( '#' + last_popup_menu.attr('id') !== $(e.target).attr('rel')) { + last_popup_menu.hide(); + last_popup_button.removeClass("selected"); + last_popup_menu = null; + last_popup_button = null; + } + } + } + $('a[rel^=#]').click(function(e){ + + close_last_popup_menu(e); + menu = $( $(this).attr('rel') ); + e.preventDefault(); + e.stopPropagation(); + + if (menu.attr('popup')=="false") return false; + + $(this).parent().toggleClass("selected"); + menu.slideToggle('fast'); + + if (menu.css("display") == "none") { + last_popup_menu = null; + last_popup_button = null; + } else { + last_popup_menu = menu; + last_popup_button = $(this).parent(); + } + return false; + }); + $('html').click(function(e) { + close_last_popup_menu(e); + }); + + // fancyboxes + $("a.popupbox").fancybox({ + 'transitionIn' : 'none', + 'transitionOut' : 'none' + }); + + + /* notifications template */ + var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html()); + var notifications_all = unescape($('
    ').append( $("#nav-notifications-see-all").clone() ).html()); //outerHtml hack + var notifications_mark = unescape($('
    ').append( $("#nav-notifications-mark-all").clone() ).html()); //outerHtml hack + var notifications_empty = unescape($("#nav-notifications-menu").html()); + + /* nav update event */ + $('nav').bind('nav-update', function(e,data){; + var invalid = $(data).find('invalid').text(); + if(invalid == 1) { window.location.href=window.location.href } + + var net = $(data).find('net').text(); + if(net == 0) { net = ''; $('#net-update').removeClass('show') } else { $('#net-update').addClass('show') } + $('#net-update').html(net); + + var home = $(data).find('home').text(); + if(home == 0) { home = ''; $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') } + $('#home-update').html(home); + + var intro = $(data).find('intro').text(); + if(intro == 0) { intro = ''; $('#intro-update').removeClass('show') } else { $('#intro-update').addClass('show') } + $('#intro-update').html(intro); + + var mail = $(data).find('mail').text(); + if(mail == 0) { mail = ''; $('#mail-update').removeClass('show') } else { $('#mail-update').addClass('show') } + $('#mail-update').html(mail); + + var intro = $(data).find('intro').text(); + if(intro == 0) { intro = ''; $('#intro-update-li').removeClass('show') } else { $('#intro-update-li').addClass('show') } + $('#intro-update-li').html(intro); + + var mail = $(data).find('mail').text(); + if(mail == 0) { mail = ''; $('#mail-update-li').removeClass('show') } else { $('#mail-update-li').addClass('show') } + $('#mail-update-li').html(mail); + + var eNotif = $(data).find('notif') + + if (eNotif.children("note").length==0){ + $("#nav-notifications-menu").html(notifications_empty); + } else { + nnm = $("#nav-notifications-menu"); + nnm.html(notifications_all + notifications_mark); + //nnm.attr('popup','true'); + eNotif.children("note").each(function(){ + e = $(this); + text = e.text().format(""+e.attr('name')+""); + html = notifications_tpl.format(e.attr('href'),e.attr('photo'), text, e.attr('date'), e.attr('seen')); + nnm.append(html); + }); + } + notif = eNotif.attr('count'); + if (notif>0){ + $("#nav-notifications-linkmenu").addClass("on"); + } else { + $("#nav-notifications-linkmenu").removeClass("on"); + } + if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') } + $('#notify-update').html(notif); + + var eSysmsg = $(data).find('sysmsgs'); + eSysmsg.children("notice").each(function(){ + text = $(this).text(); + $.jGrowl(text, { sticky: true, theme: 'notice' }); + }); + eSysmsg.children("info").each(function(){ + text = $(this).text(); + $.jGrowl(text, { sticky: false, theme: 'info', life: 1500 }); + }); + + }); + + + NavUpdate(); + // Allow folks to stop the ajax page updates with the pause/break key + $(document).keydown(function(event) { + if(event.keyCode == '8') { + var target = event.target || event.srcElement; + if (!/input|textarea/i.test(target.nodeName)) { + return false; + } + } + if(event.keyCode == '19' || (event.ctrlKey && event.which == '32')) { + event.preventDefault(); + if(stopped == false) { + stopped = true; + if (event.ctrlKey) { + totStopped = true; + } + $('#pause').html('pause'); + } else { + unpause(); + } + } else { + if (!totStopped) { + unpause(); + } + } + }); + + + }); + + function NavUpdate() { + + if(! stopped) { + var pingCmd = 'ping' + ((localUser != 0) ? '?f=&uid=' + localUser : ''); + $.get(pingCmd,function(data) { + $(data).find('result').each(function() { + // send nav-update event + $('nav').trigger('nav-update', this); + + + // start live update + + + + if($('#live-network').length) { src = 'network'; liveUpdate(); } + if($('#live-profile').length) { src = 'profile'; liveUpdate(); } + if($('#live-community').length) { src = 'community'; liveUpdate(); } + if($('#live-notes').length) { src = 'notes'; liveUpdate(); } + if($('#live-display').length) { + if(liking) { + liking = 0; + window.location.href=window.location.href + } + } + if($('#live-photos').length) { + if(liking) { + liking = 0; + window.location.href=window.location.href + } + } + + + + + }); + }) ; + } + timer = setTimeout(NavUpdate,updateInterval); + } + + function liveUpdate() { + if((src == null) || (stopped) || (! profile_uid)) { $('.like-rotator').hide(); return; } + if(($('.comment-edit-text-full').length) || (in_progress)) { + if(livetime) { + clearTimeout(livetime); + } + livetime = setTimeout(liveUpdate, 10000); + return; + } + if(livetime != null) + livetime = null; + + prev = 'live-' + src; + + in_progress = true; + var udargs = ((netargs.length) ? '/' + netargs : ''); + var update_url = 'update_' + src + udargs + '&p=' + profile_uid + '&page=' + profile_page + '&msie=' + ((msie) ? 1 : 0); + + $.get(update_url,function(data) { + in_progress = false; + // $('.collapsed-comments',data).each(function() { + // var ident = $(this).attr('id'); + // var is_hidden = $('#' + ident).is(':hidden'); + // if($('#' + ident).length) { + // $('#' + ident).replaceWith($(this)); + // if(is_hidden) + // $('#' + ident).hide(); + // } + //}); + + // add a new thread + + $('.tread-wrapper',data).each(function() { + var ident = $(this).attr('id'); + + if($('#' + ident).length == 0 && profile_page == 1) { + $('img',this).each(function() { + $(this).attr('src',$(this).attr('dst')); + }); + $('#' + prev).after($(this)); + } + else { + $('img',this).each(function() { + $(this).attr('src',$(this).attr('dst')); + }); + $('#' + ident).replaceWith($(this)); + } + prev = ident; + }); + + // reset vars for inserting individual items + + /*prev = 'live-' + src; + + $('.wall-item-outside-wrapper',data).each(function() { + var ident = $(this).attr('id'); + + if($('#' + ident).length == 0 && prev != 'live-' + src) { + $('img',this).each(function() { + $(this).attr('src',$(this).attr('dst')); + }); + $('#' + prev).after($(this)); + } + else { + $('#' + ident + ' ' + '.wall-item-ago').replaceWith($(this).find('.wall-item-ago')); + if($('#' + ident + ' ' + '.comment-edit-text-empty').length) + $('#' + ident + ' ' + '.wall-item-comment-wrapper').replaceWith($(this).find('.wall-item-comment-wrapper')); + $('#' + ident + ' ' + '.hide-comments-total').replaceWith($(this).find('.hide-comments-total')); + $('#' + ident + ' ' + '.wall-item-like').replaceWith($(this).find('.wall-item-like')); + $('#' + ident + ' ' + '.wall-item-dislike').replaceWith($(this).find('.wall-item-dislike')); + $('#' + ident + ' ' + '.my-comment-photo').each(function() { + $(this).attr('src',$(this).attr('dst')); + }); + } + prev = ident; + });*/ + + $('.like-rotator').hide(); + if(commentBusy) { + commentBusy = false; + $('body').css('cursor', 'auto'); + } + /* autocomplete @nicknames */ + $(".comment-edit-form textarea").contact_autocomplete(baseurl+"/acl"); + }); + } + + function imgbright(node) { + $(node).removeClass("drophide").addClass("drop"); + } + + function imgdull(node) { + $(node).removeClass("drop").addClass("drophide"); + } + + // Since our ajax calls are asynchronous, we will give a few + // seconds for the first ajax call (setting like/dislike), then + // run the updater to pick up any changes and display on the page. + // The updater will turn any rotators off when it's done. + // This function will have returned long before any of these + // events have completed and therefore there won't be any + // visible feedback that anything changed without all this + // trickery. This still could cause confusion if the "like" ajax call + // is delayed and NavUpdate runs before it completes. + + function dolike(ident,verb) { + unpause(); + $('#like-rotator-' + ident.toString()).show(); + $.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate ); +// if(timer) clearTimeout(timer); +// timer = setTimeout(NavUpdate,3000); + liking = 1; + } + + function dostar(ident) { + ident = ident.toString(); +// $('#like-rotator-' + ident).show(); + $.get('starred/' + ident, function(data) { + if(data.match(/1/)) { + $('#starred-' + ident).addClass('starred'); + $('#starred-' + ident).removeClass('unstarred'); + $('#star-' + ident).addClass('hidden'); + $('#unstar-' + ident).removeClass('hidden'); + } + else { + $('#starred-' + ident).addClass('unstarred'); + $('#starred-' + ident).removeClass('starred'); + $('#star-' + ident).removeClass('hidden'); + $('#unstar-' + ident).addClass('hidden'); + } +// $('#like-rotator-' + ident).hide(); + }); + } + + function getPosition(e) { + var cursor = {x:0, y:0}; + if ( e.pageX || e.pageY ) { + cursor.x = e.pageX; + cursor.y = e.pageY; + } + else { + if( e.clientX || e.clientY ) { + cursor.x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft; + cursor.y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop; + } + else { + if( e.x || e.y ) { + cursor.x = e.x; + cursor.y = e.y; + } + } + } + return cursor; + } + + var lockvisible = false; + + function lockview(event,id) { + event = event || window.event; + cursor = getPosition(event); + if(lockvisible) { + lockviewhide(); + } + else { + lockvisible = true; + $.get('lockview/' + id, function(data) { + $('#panel').html(data); + $('#panel').css({ 'left': cursor.x + 5 , 'top': cursor.y + 5}); + $('#panel').show(); + }); + } + } + + function lockviewhide() { + lockvisible = false; + $('#panel').hide(); + } + + function post_comment(id) { + unpause(); + commentBusy = true; + $('body').css('cursor', 'wait'); + $("#comment-preview-inp-" + id).val("0"); + $.post( + "item", + $("#comment-edit-form-" + id).serialize(), + function(data) { + if(data.success) { + $("#comment-edit-wrapper-" + id).hide(); + $("#comment-edit-text-" + id).val(''); + var tarea = document.getElementById("comment-edit-text-" + id); + if(tarea) + commentClose(tarea,id); + if(timer) clearTimeout(timer); + timer = setTimeout(NavUpdate,10); + } + if(data.reload) { + window.location.href=data.reload; + } + }, + "json" + ); + return false; + } + + + function preview_comment(id) { + $("#comment-preview-inp-" + id).val("1"); + $("#comment-edit-preview-" + id).show(); + $.post( + "item", + $("#comment-edit-form-" + id).serialize(), + function(data) { + if(data.preview) { + + $("#comment-edit-preview-" + id).html(data.preview); + $("#comment-edit-preview-" + id + " a").click(function() { return false; }); + } + }, + "json" + ); + return true; + } + + + + function preview_post() { + $("#jot-preview").val("1"); + $("#jot-preview-content").show(); + tinyMCE.triggerSave(); + $.post( + "item", + $("#profile-jot-form").serialize(), + function(data) { + if(data.preview) { + $("#jot-preview-content").html(data.preview); + $("#jot-preview-content" + " a").click(function() { return false; }); + } + }, + "json" + ); + $("#jot-preview").val("0"); + return true; + } + + + function unpause() { + // unpause auto reloads if they are currently stopped + totStopped = false; + stopped = false; + $('#pause').html(''); + } + + + function bin2hex(s){ + // Converts the binary representation of data to hex + // + // version: 812.316 + // discuss at: http://phpjs.org/functions/bin2hex + // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + bugfixed by: Onno Marsman + // + bugfixed by: Linuxworld + // * example 1: bin2hex('Kev'); + // * returns 1: '4b6576' + // * example 2: bin2hex(String.fromCharCode(0x00)); + // * returns 2: '00' + var v,i, f = 0, a = []; + s += ''; + f = s.length; + + for (i = 0; i' + data.desc + '
    ' + data.version + '
    ' + data.credits + '
    ' + theme + ''); + }); + +} diff --git a/view/theme/frost/js/theme.js b/view/theme/frost/js/theme.js new file mode 100644 index 000000000..0d96cfa92 --- /dev/null +++ b/view/theme/frost/js/theme.js @@ -0,0 +1,184 @@ +$(document).ready(function() { + + window.navMenuTimeout = { + '#network-menu-list-timeout': null, + '#contacts-menu-list-timeout': null, + '#system-menu-list-timeout': null, + '#network-menu-list-opening': false, + '#contacts-menu-list-opening': false, + '#system-menu-list-opening': false, + '#network-menu-list-closing': false, + '#contacts-menu-list-closing': false, + '#system-menu-list-closing': false + }; + + $.ajaxSetup({ + cache: false + }); + + + $('.nav-menu-link').hover(function() { + showNavMenu($(this).attr('rel')); + }, function() { + hideNavMenu($(this).attr('rel')); + }); + +/* $('html').click(function() { $("#nav-notifications-menu" ).hide(); });*/ + + $('.group-edit-icon').hover( + function() { + $(this).addClass('icon'); $(this).removeClass('iconspacer');}, + function() { + $(this).removeClass('icon'); $(this).addClass('iconspacer');} + ); + + $('.sidebar-group-element').hover( + function() { + id = $(this).attr('id'); + $('#edit-' + id).addClass('icon'); $('#edit-' + id).removeClass('iconspacer');}, + + function() { + id = $(this).attr('id'); + $('#edit-' + id).removeClass('icon');$('#edit-' + id).addClass('iconspacer');} + ); + + + $('.savedsearchdrop').hover( + function() { + $(this).addClass('drop'); $(this).addClass('icon'); $(this).removeClass('iconspacer');}, + function() { + $(this).removeClass('drop'); $(this).removeClass('icon'); $(this).addClass('iconspacer');} + ); + + $('.savedsearchterm').hover( + function() { + id = $(this).attr('id'); + $('#drop-' + id).addClass('icon'); $('#drop-' + id).addClass('drophide'); $('#drop-' + id).removeClass('iconspacer');}, + + function() { + id = $(this).attr('id'); + $('#drop-' + id).removeClass('icon');$('#drop-' + id).removeClass('drophide'); $('#drop-' + id).addClass('iconspacer');} + ); + +/* $('.nav-load-page-link').click(function() { + getPageContent( $(this).attr('href') ); + hideNavMenu( '#' + $(this).closest('ul').attr('id') ); + return false; + });*/ + +}); + + +function insertFormatting(comment,BBcode,id) { + + var tmpStr = $("#comment-edit-text-" + id).val(); + if(tmpStr == comment) { + tmpStr = ""; + $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); + $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); + openMenu("comment-edit-submit-wrapper-" + id); + $("#comment-edit-text-" + id).val(tmpStr); + } + + textarea = document.getElementById("comment-edit-text-" +id); + if (document.selection) { + textarea.focus(); + selected = document.selection.createRange(); + if (BBcode == "url"){ + selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]"; + } else + selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]"; + } else if (textarea.selectionStart || textarea.selectionStart == "0") { + var start = textarea.selectionStart; + var end = textarea.selectionEnd; + if (BBcode == "url"){ + textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length); + } else + textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length); + } + return true; +} + +function cmtBbOpen(id) { + $(".comment-edit-bb-" + id).show(); +} +function cmtBbClose(id) { + $(".comment-edit-bb-" + id).hide(); +} + +/* +$(document).mouseup(function (clickPos) { + + var sysMenu = $("#system-menu-list"); + var sysMenuLink = $(".system-menu-link"); + var contactsMenu = $("#contacts-menu-list"); + var contactsMenuLink = $(".contacts-menu-link"); + var networkMenu = $("#network-menu-list"); + var networkMenuLink = $(".network-menu-link"); + + if( !sysMenu.is(clickPos.target) && !sysMenuLink.is(clickPos.target) && sysMenu.has(clickPos.target).length === 0) { + hideNavMenu("#system-menu-list"); + } + if( !contactsMenu.is(clickPos.target) && !contactsMenuLink.is(clickPos.target) && contactsMenu.has(clickPos.target).length === 0) { + hideNavMenu("#contacts-menu-list"); + } + if( !networkMenu.is(clickPos.target) && !networkMenuLink.is(clickPos.target) && networkMenu.has(clickPos.target).length === 0) { + hideNavMenu("#network-menu-list"); + } +}); + + +function getPageContent(url) { + + var pos = $('.main-container').position(); + + $('.main-container').css('margin-left', pos.left); + $('.main-content-container').hide(0, function () { + $('.main-content-loading').show(0); + }); + + $.get(url, function(html) { + console.log($('.main-content-container').html()); + $('.main-content-container').html( $('.main-content-container', html).html() ); + console.log($('.main-content-container').html()); + $('.main-content-loading').hide(function() { + $('.main-content-container').fadeIn(800,function() { + $('.main-container').css('margin-left', 'auto'); // This sucks -- if the CSS specification changes, this will be wrong + }); + }); + }); +} +*/ + +function showNavMenu(menuID) { + + if(window.navMenuTimeout[menuID + '-closing']) { + window.navMenuTimeout[menuID + '-closing'] = false; + clearTimeout(window.navMenuTimeout[menuID + '-timeout']); + } + else { + window.navMenuTimeout[menuID + '-opening'] = true; + + window.navMenuTimeout[menuID + '-timeout'] = setTimeout( function () { + $(menuID).slideDown('fast').show(); + window.navMenuTimeout[menuID + '-opening'] = false; + }, 200); + } +} + +function hideNavMenu(menuID) { + + if(window.navMenuTimeout[menuID + '-opening']) { + window.navMenuTimeout[menuID + '-opening'] = false; + clearTimeout(window.navMenuTimeout[menuID + '-timeout']); + } + else { + window.navMenuTimeout[menuID + '-closing'] = true; + + window.navMenuTimeout[menuID + '-timeout'] = setTimeout( function () { + $(menuID).slideUp('fast'); + window.navMenuTimeout[menuID + '-closing'] = false; + }, 500); + } +} + diff --git a/view/theme/frost/lang_selector.tpl b/view/theme/frost/lang_selector.tpl new file mode 100644 index 000000000..e777a0a86 --- /dev/null +++ b/view/theme/frost/lang_selector.tpl @@ -0,0 +1,10 @@ +
    + diff --git a/view/theme/frost/lock.cur b/view/theme/frost/lock.cur new file mode 100644 index 0000000000000000000000000000000000000000..892c5e851eedc16e9844061b199e24194cfbc370 GIT binary patch literal 4286 zcmd^C$KVDWfom`T#)dc~R#4I^Rs~r4O)`b{bmUKcqz}))c5uC(7v?)v4a2P)ZNa- z@$&T2)z|&~{r~^}A^8LV00000EC2ui01yBW000GQ;3tk`X`bk)Wk@<6#nZYULKH{p zEx|?+kif!I0vIL|#ZMubBmjWH2OtmxIFVa~6JQ7!1CK!f5W#StOTv&C3=E8h2vI1s n+#cd5;2fT3B_0kF0v!+!GARoV78n&7dMN`JIW(4+BOw4gP{MS* literal 0 HcmV?d00001 diff --git a/view/theme/frost/login-style.css b/view/theme/frost/login-style.css new file mode 100644 index 000000000..5b82c11d3 --- /dev/null +++ b/view/theme/frost/login-style.css @@ -0,0 +1,108 @@ +body { + font-family: helvetica,arial,freesans,clean,sans-serif; + font-size: 14px; + background-color: #ffffff; + color: #505050;/* ZP Change*/ + margin: 0px; +} + +a, a:visited, a:link { color: #3465a4; text-decoration: none; } +a:hover {text-decoration: underline; } + +img { border :0px; } + +.login-button { + margin-top: 110px; +} + +img.login-button-image { + max-width: 350px; +} + +.section-wrapper { + position: relative; + width: 800px; + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.login-form { + margin-top: 200px; +} + +.register-form { + margin-top: 15px; +} + +.lostpass-form { + margin-top: 170px; +} + +.field label { + position: absolute; + margin-left: 0px; + font-weight: 700; +} + +.field input { +/* margin-left: 225px;*/ + width: 200px; +} + +.openid input { + background: url(login-bg.gif) no-repeat; + background-position: 0 50%; + width: 182px; + padding-left: 18px; +} + +#wrapper_username input, #wrapper_password input, #wrapper_openid_url input { + margin-left: 225px; +} + +#register-openid-wrapper input, #register-name-wrapper input, #register-email-wrapper input, #register-nickname-wrapper input { + margin-left: 275px; +} + +#login-name-wrapper input { + margin-left: 200px; +} + +.login-extra-links, .agreement { + font-size: 12px; +} + +#login-submit-button, #register-submit-button, #lostpass-submit-button { + font-size: 16px; +} + +#register-link { + margin-right: 200px; +} + +.error-message { + width: 475px; + color: #FF0000; + font-size: 1.1em; + text-align: left; + border: 1px solid #FF8888; + background-color: #FFEEEE; + padding: 10px; + margin-left: auto; + margin-right: auto; +} + +.register-explain-wrapper { + width: 400px; + font-size: 12px; + text-align: left; + margin-left: 200px; +} + +#lostpass-desc { + width: 380px; + margin-left: 220px; + text-align: left; + font-size: 12px; +} diff --git a/view/theme/frost/login.tpl b/view/theme/frost/login.tpl new file mode 100644 index 000000000..6f4c97cc5 --- /dev/null +++ b/view/theme/frost/login.tpl @@ -0,0 +1,42 @@ + + + + diff --git a/view/theme/frost/lostpass.tpl b/view/theme/frost/lostpass.tpl new file mode 100644 index 000000000..f2a802494 --- /dev/null +++ b/view/theme/frost/lostpass.tpl @@ -0,0 +1,21 @@ +
    +

    $title

    +


    + +
    +
    + + +
    +
    +

    +$desc +

    +
    + +
    + +
    +
    +
    +
    diff --git a/view/theme/frost/moderated_comment.tpl b/view/theme/frost/moderated_comment.tpl new file mode 100755 index 000000000..b0451c8c6 --- /dev/null +++ b/view/theme/frost/moderated_comment.tpl @@ -0,0 +1,61 @@ +
    +
    + + + + + + + +
    + $mytitle +
    +
    + +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
    + + +
    + + +
    +
    + +
    diff --git a/view/theme/frost/nav.tpl b/view/theme/frost/nav.tpl new file mode 100644 index 000000000..e2ea06b90 --- /dev/null +++ b/view/theme/frost/nav.tpl @@ -0,0 +1,131 @@ + + + diff --git a/view/theme/frost/oembed_video.tpl b/view/theme/frost/oembed_video.tpl new file mode 100755 index 000000000..d3a9a9311 --- /dev/null +++ b/view/theme/frost/oembed_video.tpl @@ -0,0 +1,4 @@ + + +
    +
    diff --git a/view/theme/frost/photo-menu.jpg b/view/theme/frost/photo-menu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fde5eb53524ddb12ec5642f33d0d34e14e256193 GIT binary patch literal 459 zcmex=&g!NbMF!_CFb&C4ewz{@Ad$IUGuCLky*A}T7%!!Ir&CL$pu zA}RthgpnDjhlQ1sm6cP3mz!6FWbpq0gCGZk0D}NCqY?v?AS1IN>UQrQGDKoE6M2QoDc3G+f#K-Lz&!r^Qc^B##H0%WszGMCU1W znAE#pe4KOt&Ml**OEy0VoUS}?d3@zno#;NjlP3257arA~E4nCar)(9G=iXTV|0V#| C@@!oI literal 0 HcmV?d00001 diff --git a/view/theme/frost/photo_edit.tpl b/view/theme/frost/photo_edit.tpl new file mode 100644 index 000000000..e558fdb0e --- /dev/null +++ b/view/theme/frost/photo_edit.tpl @@ -0,0 +1,58 @@ + +
    + + + + + + +
    + + + + +
    + + + + +
    +
    +
    + $rotatecw +
    +
    + +
    + $rotateccw +
    + +
    +
    + +
    + +
    $permissions
    +
    +
    + +
    +
    + $aclselect +
    +
    +
    +
    + + + + +
    +
    + + diff --git a/view/theme/frost/photo_view.tpl b/view/theme/frost/photo_view.tpl new file mode 100644 index 000000000..92e115487 --- /dev/null +++ b/view/theme/frost/photo_view.tpl @@ -0,0 +1,42 @@ +
    +

    $album.1

    + + + +
    + {{ if $prevlink }}{{ endif }} + {{ if $nextlink }}{{ endif }} +
    +
    +
    +
    $desc
    +{{ if $tags }} +
    $tags.0
    +
    $tags.1
    +{{ endif }} +{{ if $tags.2 }}{{ endif }} + +{{ if $edit }} +$edit +{{ else }} + +{{ if $likebuttons }} +
    + $likebuttons + $like + $dislike +
    +{{ endif }} + +$comments + +$paginate +{{ endif }} + diff --git a/view/theme/frost/photos_upload.tpl b/view/theme/frost/photos_upload.tpl new file mode 100644 index 000000000..28a8bb67f --- /dev/null +++ b/view/theme/frost/photos_upload.tpl @@ -0,0 +1,55 @@ +

    $pagename

    + +
    $usage
    + +
    +
    +
    + +
    + +
    +
    +
    +
    $existalbumtext
    + $albumselect +
    +
    + +
    +
    + +
    + +
    +
    + +
    + +
    $permissions
    +
    +
    + +
    +
    + $aclselect +
    +
    + +
    + + $uploader + + $default + +
    +
    + + + diff --git a/view/theme/frost/profile_edit.tpl b/view/theme/frost/profile_edit.tpl new file mode 100644 index 000000000..198dddb3f --- /dev/null +++ b/view/theme/frost/profile_edit.tpl @@ -0,0 +1,322 @@ +$default + +

    $banner

    + + + + + + +
    +
    + + +
    + +
    *
    +
    +
    + +
    + + +
    +
    + +
    + + +
    +
    + + +
    + +$gender +
    +
    + +
    + +
    +$dob $age +
    +
    +
    + +$hide_friends + +
    + +
    +
    + + +
    + + +
    +
    + +
    + + +
    +
    + + +
    + + +
    +
    + +
    + + +
    +
    + +
    + + +
    +
    + +
    + + +
    +
    + +
    + +
    +
    + +
    + +$marital +
    + + + + + +
    + +
    + +$sexual +
    +
    + + + +
    + + +
    +
    + +
    + + +
    +
    + +
    + + +
    +
    + +
    + + +
    $lbl_pubdsc
    +
    + +
    + + +
    $lbl_prvdsc
    +
    + + +
    + +
    +
    + +
    +

    +$lbl_about +

    + + + +
    +
    + + +
    +

    +$lbl_hobbies +

    + + + +
    +
    + + +
    +

    +$lbl_likes +

    + + + +
    +
    + + +
    +

    +$lbl_dislikes +

    + + + +
    +
    + + +
    +

    +$lbl_social +

    + + + +
    +
    + + +
    + +
    +
    + + +
    +

    +$lbl_music +

    + + + +
    +
    + +
    +

    +$lbl_book +

    + + + +
    +
    + + + +
    +

    +$lbl_tv +

    + + + +
    +
    + + + +
    +

    +$lbl_film +

    + + + +
    +
    + + +
    + +
    +
    + + +
    +

    +$lbl_love +

    + + + +
    +
    + + + +
    +

    +$lbl_work +

    + + + +
    +
    + + + +
    +

    +$lbl_school +

    + + + +
    +
    + + + +
    + +
    +
    + + +
    +
    + diff --git a/view/theme/frost/profile_vcard.tpl b/view/theme/frost/profile_vcard.tpl new file mode 100644 index 000000000..bcb5baeeb --- /dev/null +++ b/view/theme/frost/profile_vcard.tpl @@ -0,0 +1,51 @@ +
    + +
    $profile.name
    + + + + {{ if $pdesc }}
    $profile.pdesc
    {{ endif }} +
    $profile.name
    + + + + {{ if $location }} +
    $location
    +
    + {{ if $profile.address }}
    $profile.address
    {{ endif }} + + $profile.locality{{ if $profile.locality }}, {{ endif }} + $profile.region + $profile.postal-code + + {{ if $profile.country-name }}$profile.country-name{{ endif }} +
    +
    + {{ endif }} + + {{ if $gender }}
    $gender
    $profile.gender
    {{ endif }} + + {{ if $profile.pubkey }}{{ endif }} + + {{ if $marital }}
    $marital
    $profile.marital
    {{ endif }} + + {{ if $homepage }}
    $homepage
    $profile.homepage
    {{ endif }} + + {{ inc diaspora_vcard.tpl }}{{ endinc }} + +
    + +
    + +$contact_block + + diff --git a/view/theme/frost/prv_message.tpl b/view/theme/frost/prv_message.tpl new file mode 100644 index 000000000..b5cda9c85 --- /dev/null +++ b/view/theme/frost/prv_message.tpl @@ -0,0 +1,39 @@ + +

    $header

    + +
    +
    + +$parent + +
    $to
    + +{{ if $showinputs }} + + +{{ else }} +$select +{{ endif }} + +
    $subject
    + + +
    $yourmessage
    + + + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    diff --git a/view/theme/frost/register.tpl b/view/theme/frost/register.tpl new file mode 100644 index 000000000..c33fd46fe --- /dev/null +++ b/view/theme/frost/register.tpl @@ -0,0 +1,78 @@ +
    +

    $regtitle

    +

    + +
    + + + + $registertext + +

    $realpeople

    + +
    +
    + $oidhtml +
    +
    + +
    +

    $fillwith $fillext

    +
    + +

    + +{{ if $invitations }} + +

    $invite_desc

    +
    + + +
    +
    + +{{ endif }} + + +
    + + +
    +
    + + +
    + + +
    +
    +

    + +
    + + +
    +
    + +
    +

    $nickdesc

    +
    + + $publish + +
    +

    +
    + By clicking '$regbutt' you are agreeing to the latest $toslink and $privacylink +
    +

    + +
    + +
    +
    +
    + +$license + +
    diff --git a/view/theme/frost/screenshot.jpg b/view/theme/frost/screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..90c5ebb2bb706cfd265554dedd5776a9ab2fff9a GIT binary patch literal 146944 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

    f)|HUG@6q!okhxQ9HV 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

    %7dJ(4fL-us67!%pN`{m$9>?gR zv@ifC<{m(H+36C604!hp`t~i&T;o~#7kd=bviRxCCnvP%u8#;q!Qg3dST=^i@&nEB zXpnY1D5=5tQ2@F)gbAoQsea33l zjvxa}TSYcyeN;UY&I$X7}w=Z|$7!B?1VvdFUy6gtSZ(1+~r!McgXy{tSp|Fk*$BQ@j|6%k$5BVEP__oUR zCc*uDkibo=nx^u!;tu-4b0)bY2nPyoY#yO`fjkQ&G%NkCf;O)1V%R2Z&QXm)7XNJ? z1j738da8qF(-jXM^Im0;K}^IIO!L%S+~g?9pXC-5rjEmu)-l86Bg?R|hd&DAlR_=7 z%1|WT6@?S1fp=xG3k=jX)BN*u@D^LlOgTW?L9o|m?iFAXcffRnx#Fx|q{Y%;#4%uI z$VUPYuE5#sz@^H?lK{YH$ERON4nvzZ zRZF%7V&b_HTvM{xph24hp%XRjtEQ_58%}Zaf*I%078Y9aU@dhkgH`z>E;hVfqxBLt zDvyej9Hw#@pY+<*iqDAGAs7_n<*Hl`fJ!2G%bnzI#mZ!HDOeoep9EJ&mC)#Q$dsZ7 z2cXr)>Q40nS=or{EEKyRorLfr$K_zY)i0tIv>m`3n`#@U$Fu}lwwKK02JG&2!(=m9 z^d4DO$!K9NZ3X0R8!Z%9FL3=QJCb1R#CwGR<(-mfRi^Y?#R%IpnUqrDy40l91V(FnoD4r7WnTVc^6*n?_nJad+wIwka47$Q59;g$ zA$534ns&)>+_O+ftP9k2y|Ml(XS|G74FES|x#WZnR-`ou72wXBoO_0tV@)%UZKEl9 ztXr~L?SIJ;3Y~;3T=6-LfZ&V>RC-)E(Rv*QxL2emOqk^uC|iln~d1E-bQUSME|s5QcgfChuXlp8`n;LQ<+g$x3x8#6Wt4&=L%Rdj8(P*~LdB zZdt?k!dqHZK0t=iw_Qs4h)TeipcCjiny19nyzE2!6v{$L{vJu_kD?OZ;FGcb7KPXx z2PA^jyfK}zfX^R1KGDW6U7qPksziQ^SJY)>9Qm0Yya50B@jEp?At6%}Hq5B1q(y<}B~KCl;!+c*x}6mg zT_It23E8^s@RYxR#IzXpUM-M@W$!M#L&#S4t=gj75^N$33hF;(mwhRjBlf^$I@$K= zjtCDUs`}O+S+q=)%^HTB3Kz5piKUkSZMHJW*2buWUz<{2_ z%t@5XDHfooHcm2*{_p;=IBcWCYiexNLT|C~kAG20?kl1CgQx$QtX?bsW8w7MrkVpG zWytJkl_&!L$~OiQGBKLFjzTtSy;n<@DBDoU90Ejicu%O^pUpld&*+YEQgkY*1=plV zU0|XhucvPE5M3&H<@9aL{Sh}fJy+(=rA=cjciW?92B3QCX#waGr9ag{d?bbYpdGV8 z?4=DXh^k66-t2$l?mfVoTDJb-Bm_vPp?63iROub0gr3lwbTITHy-E@3y#$aBN>vb$ zrYH(Z2?9zNQ4kOikzxTvK?VGxr+7T~p7Y-G|L*&I|L5E6XEU>At>0QRd-i1Z%$nIe z++#%n!@XQX&g^8}zLk!~QnzI&mxMp0_jpwjPtNv-`cIpg(#p5k^e981+;Bjh=O=aJ z#W2$+wgL~Su9gsqH{7$D6KBIYlEKJY=R5}m*$IoN#~k&!WwMCENH`3MwrM39p~N)i z&JYBQTg%fQe^#|GfLOFT%|H57jO7#w3t#^&EDarRZg7f7)Q!S>Wb!fay7#0RgB#c5 ze#yq7fx=t_vzRLbG$CF#7b-RUk=}83>j7u5T%5*( zRTmO9b@Ho|{pZvG3AagxSLSHC(gIBYp7X?-j&hAo6eTC+c{GCstZ5)NkUQ$q)#1tc zFT3myWj6saGVO6;B-^Gu7sw$LJQF(c;FuWXWK0+C%DdLia?Rar5U7ItJ}}m`S-uKg zM+F?i_o?7bA;kGbMwEOaE(|=UUP#V-1ps8dW6zP>gXEfEEkJMM1r4v*-VEk`f3^p4 z_<5mN8Tw&PI*qItRHKb*#U3U@-NEH_ny{$M(asfcZZy%|#!-gmTKo|kc1(C9hO=@K&$e2yD z04b|ml}(w_d|Yc^>NUipGRyZ@gqQt5snZi1J&k7jpkS0JUY`}7KuLw|?FVoWw^sVU zF#QU!kkkxMP%^#{wEoMeto&twvH*ZI);la2j<3n{yo+U1j4|Pd-}D8oIoW+oLIcUQ z(LLSH){PbtX?KVjPyl*Jnj3NNQ=cWs8JhSbPHYY1Fu_kfY6+xiK|wA&<3^MRNR@;n zK_u>bGx{Mf$;*ffLh2BGOc$?_ngL=Zg;+YQ^3%p?wPOH%mE~uD}PJ01U=Qw*X-c%5LU@)aGxy z=;0)GU~1ae`qfN`o`{%^Q@vDH0av|A=!syXoUA4wqf8zyPj2zP+sF4$h=p6zxh~yI z;xm0g6+;+ORg|Ny=m{n@kbzPprtvPh zy1v`&MJJufgx+%h&V?1M{#rZv+!_QH|M#d$^^lYnX ztwhxMGa;Ye0Bo0EbSwqAf~m*?w$yu$dnj~|FW~ylHZ)2exS(M~b_pL~_d#$&wS#Y+ z;%9Es-sFcwvI`{1yr|9kLa-WuA}wJZ>Obn`pn;HgIu#|8go4c}^{Oz65o>!asZ31( zu#!zIqyyJUprTcY-jBV4#V-J2{VvDsFl*qa`{Mvm-A6I~mAFXf7;s)2v~Jy8xX7ii z)i_QaK?KJd^V_L2DpDYECb!j>!Mq#&aj#dzTU5Nn!Sib8OlUX2iu4tD9w2}So&dIr zm)lpYyrRVPaFe)(vO$=v$G8<)E>p2=ZFPbqF{^6rJX@ohiKRt3w~8?^hZ4}L%!|g} zzTRrJ0nQSXOHHCQzD>L4IhylEE&pXEye|NJ2XSiRtZg;b*@;@g&j63bM<^#wD4=LL zLD7yvsa}tyLZwBJNr+n$ehI8GeOBLfwMxWiSU|!AIYUMhj{rT@xQ>nyr*Onj(z4D# zdX&)`cs5S|Ky8v5#YNBRi*SzZ%n4LC&q{Mm6EjekXNnKFRwRk#l!AI5%6ZUnrr4>B zu<98?s;IQx)fM<&?~lb@3&P3f~_%_e5%)x170--9;S5akTgaeS;$(JnGU zK8cTF38qh2qQpQ#vS>2jXHjO@(N{mMVQn)3x}!a`!Ezn|_(6&t>2N+bXhL48f<9i7 zyE4~+qUg7@>~HM|!4E20AVelgP&Vap%IpHc>l;)UVu6LG8U_-T%+sE!G&v9_HO)Su zc0H!=!3U)q>bwIi5lXJdm#e@d5Ha-!Yc3W5>rwTUCQs;>HsTLGSn2Q);mRctk)v6Z zd>+{}Hvs2)5L&`7!r(%y|2tL8&`Ea;V_IsHoz|23yWT?TWYm%gPU24_b~-)r$mA9RUYFjkS6Syf^G@y3q(f50hq);<-v;hxT3gg^X>4m+ z5{TE-M>3!;I6`|vIhS(7zkO1j+KRjdFUw=PNz{T{S5hUs{(SQ!K6v<`%!Cmb8UMkK zeq@g2lX7%=Tyd#}Du45InQ@3WV5gF2kT7O?uHd(^P3OG0)e0r?siT;`+rj8}U11ofj>hO9H8NA%^VxF^(c`RjNpB#~p;g^AizOMdr2L7*%^Y3U7oI+)S zPP`TY2=!YiYm#q3h$)xy?=`YBXB1tISXw6xl#As)a@P!@0bpoa znmb6=L50v!RIbb7>L4N|qV#D+=rqC8mxB{%hHo(uxtRKX!1M6v<+eCbNQTDGiplU2 zm(d8ALWv>MsY@S}v88cUwAU@C2H1O1?6oyo<%5b^7&5H93hsng1b$+>F&7VBPMPh2 zA+oYs9cM7IG7?__O+&`|xquo09*Q{stPp|M$fB6%-6rLmszJ$n3JmMufn4h}f0cw; zPyG?AhtwKGYVXL=kOUug%@diMflg+w&4q`egz@&H`4+g1v<4r(Z{YEyHpsyr7OEF` z#WCHaBMGJ!oCCMjI<*Yad!1giF-loNyIX{^5`nlkl9XsZzT$NOQE?LKDQ@r6yx{-g zD}bG7MpN;Ogjx$1|2AP12`{YxwRK5NBBS@B?x_=?u8VbYyl&~~SpkWL#DT$iYNr<$ zm13mchpcnwa^E9Ede|NvVbSE#4 z6oo^D6dB3ivPRQV!D5vNb%}xn_W8C(BB%^Q+DLDuxIvlVs3pc`Eu&n;BQOM}h7M!u zG-#3#!yB?B5gLxnCVKa042(RNwVLl(6!!!ZwizPyA{S{W!XlUhvTk^JG;*)UbkDM! zf>vS#NB|RdklZ@`Jxa?AC=Dv+R``UF-5uAoQ<=*ow}|NrWXMOT+#cB^#2=qGBDm9x zFAOn2?$=Aes5JVhU*#}pf{5RIxi$K7g{ZEDxUeGOK7hh%T{++uk}D7Xxd`OFP@I-q zBxTFsXzU2+BO;8GNM6=ACAg%R$y(@xNzBZe7aH`J6wed3*s)_t!>@>G|8+#TF32{-XdBIP|nulacfu;LwO z3FXJ!S`@|m1ubVk&C&5#Cj~*N3L$OBL(CPiPVg1qo9k*F>J!9DWiqDXN@x(-R2RdlBC@ip>(o` zr!RB#2-->!XP<#;oU;AWPlkAQoZ{jVp;lTD+cymh1nci98*Ychl3Sn8KKSLSzGQ)9 zMA3q*Px@b283p7p#yEQUS+$)Sp>+&H%x}-!=h{p-+Sk0D!V%&i{_#Y{kY1d771(aY z_8gy3Vxu+!EZE2s6G|1+^OjdW6u__HchiIX^GHb*u1KbGRkgo&Vc&RLA#*};$0vbZ zdlprf+3t`NM*&zi=DsRlrAYjd^XR@mB42ITD3!O)xnzS~ZU#T!Fxvu9 z5}tW3%*^3V-_ZV7K$U=6aRunLykbvc<2^j^6VZ0sy(Plnb+kXF*gv($d&AoGX zSB&%cfVOR|AD)Ex+-|PN1*GhbG=))<9v*l9G9fqbZr^Lto(&1&vCKoe-={Yrv((|g z8Won1oA3#u?(gv)Lfq~6Y15vZZ{V$)t^yy4bu;uTWnwUj@-^a&p$Mpe-~yIWZNeL4 zXg_z}e&zPB^BOaPdXg9k#*{6ZKGA@c&CeU+k5`llJ6d?K#&~yuCC=Azf(mV2ocB|n z2Y^5n2@xcK`g%vH!8co!c&#*V?of(e2HI@~Ea}dz@6Ozg^W{7|Y)A@-1RXnc6!vCD zQSHJmzQ_8Z1(@hCvFLioW?CAajILbhR5#Q=kUIf_6Hg6YvcDXo*JFE?B*R)*7p?}z z8bYg?mKlr$tk$Vt{Ic}ow^^9C6!pM7U?~{(2^y7fSN$|X3|Ba$x5~Rqdm>`GPMP}s zFOxP$V|q0JC#hQs0LrnP<1BQ!2<&o6;7&Lh>k9){2wFtRam6cuUJuJ~J)@pdu1t}} zTx*3?;_?CsojLPxow^82Z95`PS8w~Jjq{Q3n$Zxh{1o-vD6XZ*EwDL$?C$U^Xbhf%hR31!9~a= zPfJ)s(t-2I2Wfg#6Z#{;nVLJ-?@cI3>e?LkOyf1sa z5#8|k{A+8La+9${9GjzrhOQLR;=6UDV#5RosS+}9g7~>6k$RXA`YZ(E+M(D2LrwTD zZ&4_3fj8m$?VmEhSF~jX3ic&Q9$?=b=@H!C*=mWT9WKA-dDZ&<>8ICGA5|i`l(R1m zj$@5wVul?qjrT4bCX-mPX`pPCBjm-sdmtd#9d74O)=v@ftE#IEvb}Nln8gb*<4_!1 zaO9=Ret5eAH@&>KG`w=!v@P4r9e-5tGR@({HdunHseFAHH`~M zvNldh^33Pc8z@%cr`Aj?DP+tVZ1CRCgyob8Y)~SwCPmLmtTW>|FM1jj2kHX}EU5~X zz?rX3LbOcU#laGClRcc5kBi%!73-ODO)^2EPnw?ZQY@i_itY&sIv&+&@B;7L z-YtgQcpUo`(5j`T=QktnCMW>^e1D6Hh&Kgl7bnf?{JDLv!a{IJfHpq)_6v12M<+FM zm4h121RMiA)hHuN+vD1W39))mZ`y+vaOdEkkRM~Olrfklp?X=q zfH9e+FNrS+c))HH7&b*`D;AeHeFd1_IalS)UwJM8kQXav;^qvh{;WTvZa~IlR4Y8K z129sDr@I0fHQR5gYGuQ!ow$}#TI-8jvJcOp)cq0iWI$m4lnngf%$}%LkWSb6J;tFRQH(7h!Cy@Q?8ezG;w+I-)`vW5Tj1sg?Efbu?k} zVg|vG0*%Qp8BC8opMRvEXpz4g14(GW4xoDX%I)=G(#JG*R%_E)nry6Yv?fcR;*GWD zcyZ2v%H~=Qgwl|nxB}1Rcq6pInJ8k@=h}>=Z_r;)62mQ>T7+~eKZJxj6YR8e$IHuM4+ z+=?#tdb??e>m$w>KZ<+skve1xnhPLkyD|+YSD2_0u%MHT7ryrNi3Dj*%m^-rJ}#ny zoyYnBVlk<+9uQQQ^FRS{!t6_msmLTnh5B$yU3e%`uNRjDZXvjcv=4+F(?(iU!RS$K zsZ%8M%C9@?l&1E`wPZ*%5|~nF>?(sZP%KF=yA*(2Y_My)qi-6k%=C5 zmZmyssAjGzp%U%(wS1J1=eoo0&V%p_;qn|B(8hrCI*%_ARL}_Kyzc-UrI4y$$Cq+y z5hE;>N$#sDnQ=H?eWX{WKGxCp@`#TCBqJ?8t)OtrjrqYv84j$D9jm8RYG3MU!o%@x z&DythRlhB_lUV?jqy(hUoshut8;43&Qs~%4a5a%%t)MBJr_GUi!1^m{KI6OIn^?TV-6#4HqjFk|s5q9-SGwr1KR({7a|g~ z68J*auIMak--*t0-~>sg$+qPF<`Cvoz5mr$z(!cxcA~2>a@W?o(vXBW9HA;%RGaVu zUf=*RP02g2(P+bxUTBF&3ivwC#)60od7>CEm^K8q1??7P(t8|lHSKukls7)wJ zZjRYJkhLBTE= zltVR%Hgzw_WtR?)zF6CNfA&*X)S`+X*WVI2s3tO43E!VyicWs@%dqF+-0@{tMRxfL zNS-J)!#Fr30UAQj;z+HY?R{P9-m`25$1$7$JdHA0KLxLdC!&vmlqgFG^{740R}HhW zHmsIL(RV`bBq>}cb{Mo$yB6+P#y6dv0l0#OSy!EmCjE48>2xKbwtZh=EbBMqH8gw; zJgAMLt>CMumFJ>zYkb;11;D@wgIuL=2GiO;KZE;Pj}(Mbhn zuNWkf4->o!7u8BE&AXEmL7*iS?0Ynfe$02VD<^3+0iyHrG3> zvEwhdZE{caDSO!ZbUgdZ^X?a)*P zZzfIsr*{?cqh!^8k`ekT_ETPSe#qGWWc1^o*nV(*gZe`W|Afq!`j_4nJ{Ts_a`TzNM(=o`?eJ($+$^TFgf2yFpKXm3AJ`4PT0RAEV zgZK+G{EtaFf=F!3HMVH0sJSBKLY+$7-xwm`3d9)_+N?SVw_6#eq;N#N#(yD z1WSHn_$>f{0e>Z;iKqqtoJvUg*KFc28EMS=zeoW9{{}M``VHqNK{V1?nBU3 z>>K4*Gk!Dd|1heC%tie>ll~SKTDDxrHUEz^;?Uh<;n0=8h5bi>f5nWO{0d0&aGw1~ zn$QncY4j$OYY3pYe_z^vTjJ=ymidzzCKW!N4O4$2{tr=37@Mtn=eH{Ie{!Njhv!iL ziC~<;h~d<))igf%cF^#uBlLgLsD>nY&Z|=Soh^FidM5Ho82&%eg=6^zS?Sf&E41h` zJKF|DyNAwa=% z2vrOElNN$_&PkV_K+pnN1u>vUPc#%@C~~6+68&A4}H`hhFmdtv0ov+FN6 z;nW&VQ+j`7$Zb3aDDd6=$y&!LJtBI-t^A4jhbW<;|2+x%YgpLzw8q=WAN1cD{!IY< zpRpmo)vo`qPBc^Ug$oDGO^fgnS$p5-_%8y)3^T)jut)3iufM5(u&_q;%8*Ypk#~Td zAHxm1WpQn7x7C_IWPvw9h3yZ~?`S?*ryic6|y2h2b7e@jBo zXN|5Xh8<^d02C1_CNq>*^|loLVB24amk)z;I#zS_eE2ZP%V=aA^iLuc-*mxherQyY zK1}tAT{4~%ePhJIf7_#wLO_xBXYjatm_Up`+t0*YH1bD7@u#G3QU1A9WODJJwEuk+ zA*WQHtD*G6Hgq3e=I=$2xfY}n7{sqF<2SwB;?iV45dMu}1fEP)F&EtU|AhRrtiWuV zDcb!zGMp9z{;B)*8z&C>GbY2%J3*w-@HZk3N)RCk{>*?u<{|z>VJU5J$z`bdrbrD; zi-E)bMI;wh@h9zV-*^C~|H}DS6!f2z{?jNt7kwC~v--`*e{yCnhN=7${(k^&ElWQ9 z&y2~%IGh!B`3EZgUsz7KU;ntFBV9Nx|D%N0@aD1M|D&};0ao*EzuS3gZOv&=@%QLo z1itlPp}!ZM(sVxYqQ>vhe-rrEjAX&i=APsi_zV2+B@8B9^AMkZ*k&}j@^}2-^nPnz z&?t)f-)-P+rmsoUK^E5GJM>(NhJUC3AprP8_!oR1rzx$nVc#jxa0q5~=GrgBf4z#i zRQ;Jq@!j%&0sO%xdNSv4QvbJ-aL|8;jQS%H{3pwCXmAYr&%|7kgg>$U9;N-3M{us% z&o7zZhED2aKDA7Nf4AyC$7eQqF5>oE@0Wo255>PLLeuVIetTJi z{->&679*(|)4t~d{{8wN2x>{^lBSt_FTKAikgs@vC=Cz*1QY&bhQIPUwWG6-C%FvWX_FR^QliK;T&{kINMPF=cw_W^~W?SaY1 z!81+r*VMLK-;NI)bTL{^UfMDZsbD1HL|zhiuDJ&+epKc;fYrv28< z=3pl&R2^B&(=#ulo3s%vpE~`b*RE~%U;<)p?F?8I-C)k7t+>_~lWRWxzj@^I8hk&r zfUfVDoHZhS`0_&MrdlPFNa)l99b&9d&*-9`>z4d_e7aH8asejItdzryFSEpdxsHey zeZ14dd36SRsIzZMZT2Q;rKHWpZ!d0819&=qQl~*6IL5NOC-N<;iswy<@v>yL<&_TH zSuLVfsmF@hxlJs$Nwo_)ZtT}v^!Idksmph{Hq@tMrjRGKJ~wR}U(|$7*jNV$MFY` z9;tckVf*MU)jSY4V~z&Je6$mCwUX9OQxSU8?rr!e34M%_LiAU_v8pU#Kivv5>hqfw z`UcLa6-hh$o;u45+!ovC1j)ExMmr~O94OPfMr1dUwV?@7mmU|aP=)APMspZJ&wX~CvPp7+2rT{}?zT}3Go15v)eFa>!@w;)+ z_=%6Q2wSZxWis@{Tgy(o-LU3xHuejnT-}vnsFK2ar_2A{Bk4O_ZM~Pxw7q}S_1?7hMkkCN&GYtEFD2+>h8G6`kJy<6$x~G z;G2Sz_Z99oYo-ba&1VyC8NuyiG`qxJub75yW#oHXWoUJYj?1egW`X%#_NZ@SW2S+D zLqcZPedde&bZZ&Iew&vsCuEI;dwI}U-wdlPs9YYos6S3KL%7#*Pv58rVA-tqvztIM z6=!$?|9tka|Z4MQTg)M>~Jm51>f4Mmeo)GObW=Dl2dVFK#~G?SFi~Urp>b0 zx~MWL9H60r&6^LJyJpE~qe~W0rdWZ|2PbXwS(r#B$kgmdHQtkUyON8s;~tffNS1q} zmR6yc+Rn&Sxn4gN|(liG0igpZX8<#?}{Lr}mc4+Jc8>FI#H$8IR(-> zHiB$$mR0M+*}&&j8O?~9=Lp}7G81yIr-^gk+!D@p!z~PgkdIL@&(5e9i|+d#Hn}(m zp`D-!yF83>rtH1!NVXMO+ahh?P*iMMpoSoOw!qW(ZDMHw8SE#Ri!>#LSD&Tj>-y>k zIURy|FzH6?E*>p6C2cb^2M2DMq>i9-#lvto9CK~vB&}$VHlCuhLrAs_k!Qgtnk(;* zUNY5Q5(MLfZ=%!t`rCx#dIoZ5zMNqIA}KjAXR`+$+qUhGGew=8UaWL=gouGJaWjQV z(__8)X4F~(oOVM}pC8h3?O6>T5XW;(YTR>=d@Emrk;;~k*gUH18K>vw303T3pGq*? zq9SbjtSCelS5f!hzr-I>48|Z2k91S39-UtNOgdL{ik!GI<0A4sWqnVIx@a@D{Jru? zGl*y&9vSU*ZPaRm%7I&=YpqFgi>5vKSc0(EOcf0gFUX{WFyp@6S&t@Jh?-P>OP;M6cNWx`jDy@YsA-hHePToS|~INE9S(oe%7^>e%s z_29Z#nin*JM_r2b=6XeefVQ&*VeB}=qI!=ozn;$^gqO@nNcBI{z;2oaup34i;PPDj z#>}}tir{d@wQn1$d^_;Ziu1|eLaB`HCLm1Y5WJqR&ohM-b$)1mFMKsZ-yH*sDistS zzU*9iQo?dVf)S}%Jv2g6l{Umaa-Wv2N`ZODxNXR^Em4>Fb(=R2!L5EHs=kMp#5SE& z)MAm*Ddn|bN&!?O(x_;9*aaqw?7SmeY|C3*XZaNX6IqR#etV+cURPngrl!(v`YS+{ zL<*3Vq^w5ewx{@T=%p`AE{GyDwHL+h>fpLt=-F}AQ4IKoM!AotY38=fAM^F<$}xoTgW> zV_e>~V{-M~v=kK=$!Y!PwI9(M@ROK3d{HVhb-N&O3+m(T8Yh)TPKHj`ubUGdc;#Zu z5Tjt``pil$^Z6+#c>UG;7um0z8Q9r@%GJv$n7%y20u&ZZ8zQSyJTiCa{#uoDvi>rk zKMB0hgQ3UV03JKRvVVN5!R7%6Le=xN+F8Oz88m@ty<5UoTPDN9AI!f342!$DUF=$N zrC3A)MerTn8g|K9%~WUoM$Q0Wfcy@C-kh4k2Az>&q9H$Kc+?(4e4|kfI<=$FHC2(w zJ(DDmH>8PVylYM)5Q<(KZaWg?Xy7ev)@uM(6j5>=QqUQv(@Ww{vz3lBAlYcbxmS-i z`vk&dD_oM9#(h2XiZtU(GPTZf@6fIRtlUHq5*8%G@v=$xqwbywg~?_Jt4gp{ZgfHx z_SwxLZx`h@uW&nyzvxDQs{#f!)_gOs zC!yY{seHg2wYTvLe%e8$vh61xLDRPf1gNedVkG5YG}hvGs%S5uM8eUf_P9KABYajr zX%L-++H9B2u)qi7`!AGR8Wzp|N^Y$4sZt^hr_CwdcaK`vUPIr^^JSd+{Y zL!-zuLA^X2U;Hk8_F}9Z&`T?15Ec5?BRDo5ky+12-r>3|rjE?N`+D)l>c=2;DJqfG zVN)aFsbcAhxP>p8pYvu3orsW#uE(1nD0M6A&Fkq@>(b7A$?m2C*&(>1!qbKd-gd?m zAC6^AY(4T#q4C^Y=O4ga(R70|kIl9i%bL7K7QXEY4mb=GN<-P)c-Z%z^0H6#Ohax@ zfyEOG-@@34E#&hcvNjrTMwWywp90PJBnte9+%r-eTZblnd3|I;Wo(E6e(L@xbn59v z#3itzfQgU4ur$qit&t7kk@)suVPy-hHBS-l%m2a5H{Ot5}s^RlQ<-hrNy* z#o~R6xlrni?Ml(eXnm@i)7w&(ppG~Tb6wsPP3ADD!ooGyzE>v`*j*k<@YajyyB1&# zMrvcCu9=eS7Ld>vkr!ytGRgUG1XgvWLi&Vl-&10YH(QFIhHZFhqOlSBXRY45?Jea_ zZ+FunUCQQiVW(ljumbY78Z5aGK3+a-Z{bDOrERj7jr}^Gcj^(75hj#QL8dMhrsf%@ z_7&})#E}I+4oG&TMG$7kxlLQwlRT~1_ochkOg^kd+fFfDQMPu9-RE`b0z9#kl$eZG z9HA+n%UmfBl(inJoqYN#yuQdyMKm<)!qujcyELj>^tBCRW8tZ(eo7CeL~IgBL{n#n z-zKt?9)d>{&uy~C2o)VkhhDWyly-})tk3({<}7)xVcARSp}_9Bi$PO0);%{|N&^QT zu`<-N8;3_v=)QOIIe8+$Ffqwe18G~FQWJ~)3JA)xThF-8LteMTVl_*|REn)d>F2#? z+In|y1Dx49@pfx1r9LF9kbJj_G2NaohJKb9&!F9>U7W79=@^r>1tm6sf1FC)}R%eBDFBUb^v~*Mza#_ni#fG{M|Rx>(uOWpd8 zpY>o$_BqCD^B#2q+9~d~GJ0@CXy-k3vOO9T!bfK41D>)ZQ6?6P)pe7Nr;?(a-@H<$ zcqXpQw(Su5kcO!NDT}=$YkO(Es2C^aa2glb&8n+hZ$~!sHkz|-Yvd~Wb8exXd znnB|a2bO`pxRuEhJ($|NLh4AdR`A(KBZ5zVuk-fN#;_N^{}J(#W?G8A$yBr0(LL{l zVTagV{#ro|*L{=L9>a;=r8qP;v9_n!$UW~>Up|P9f%7YX#t9N{TSZ}XEA`_9JWoef;CeVq8fu&~)*z=0JC0p~& zbW_FyT;K&xp14NMP(GjMXG8=@(GiK+C?|1>e1Ugj{BH~+ixd})S6<2M(Q}j3>!u6O zPvlbzmGUOF`q$7eySGdEUGZ(1TGA7-)sJEtIx$>XfV=rAWfVrLxE%>C*Ei zG}{mM@r(@;Rzy?Jr#J-ybKSDq)RnoDC@;PonMMh#@%ukycO^{6Qu3Z~<`hT)fuC6- z6cVl*+@L36%b}Ta?;4SkLPQ$ZjJ{Q_rlEONcC+5Q?XJb?5@WXN)l2C2CV(Y-bx;%l zk8zuBv%8XG7JkSZZBwWWoL51GF$$yu^>6Vyo2DF!B#6z4=3I}^KMEZc40DJYtWORB zf<=i)pSOw!H)y#GZ7?#fu#3!96bdygxPJ27;VrZ*9DM^`mUH33+k2xtiI7H*i#e%fn$NoHF)SkVPG#eEZqiqXWZ2k`qt7IYnWi{W zZ3;`iGBZZ^VV*u@={Q&r)?H_6r}-cV3%A!FZ}wjqZY2`IN5(#cl9-!xV96*mCDimo$$glQv<=O%k7AN?7Wm zf`Vc}wP$2dA!y0o&}Wn^J~fQJvY#!r640h|V@$7AmDk#Ei-V7ku#t4}712xM!^`c2 z)lXG>9e(M4nG-|av_l2{&v{_lwk9`HMvB+_&TaA*VcQyLdziBFMr-n1aUAZ1mBndo zsS94>RxMf#1eUD-&Ti!2wM^O4WchdkfzJbsb;5kMjFd}sl_I?3TnGDFRvcY@d}c%Kcmo-}3u#bUw@0sS`NxSFhX9^)XKrNE>p%P;A?(EB z?zoT0F9?6u+G2_s}gTSt#;C`F4iZgNtfG ztIqdHN7bfY#jmcViO?e z^@VuTfH;;f2&zV&>M{g0Hm@BLLSq#$LA_Wl-Z7o+mK33mdl+Iju=N z{XharM+;$u`@|*aqDbs<{=$p=6=pGb>n#E0{u?kK+ePoh_PdfI8`4H^YkRm4=dCmQ zgU<+plWeQkgqIDWjq>*{EktAu`=-L$)Vh za4)8C-Yhz$EE_6wUZly9cxAsP9!mCBR8teJaC>0IhK?J;(NfR)l5!0l7jv?;qrYJ$ z_pPshl{tOeSM&=Kgo%mqP4YAt=CiCT{y5^x>!Z=4BR0wL{ZDW8Gi7;G zvjy(C@A=Sm9;AN0v{FhwaAZoWAJ92FpX7HrWkS#PLkUj|r`eZG)fL8-)zyS&*AGfo zoz^r9wnu0xy!Fkmz1=Mq8#$a%ezLA}Cw0MBO?cVlVm9@3#gkA)H`MyZz&2xh^Ev%U zDHYf9bc#kW4aqH2r-de?JY@M;Cz>j!)3{`hcT4!FOGo$IMl!f3s}|=hp`~X1rbz3f zSYS}8xj|u+;c*Z90DOc=p;Wev8_$|Sk2IJKDQ$Dn564!90Z#p?!dfGd?6~MhTgpICq$EDLm4N3hN07k%Q5cc)M8C4?!6Gl zK@Fk9*cAKad1JBQHIa`Q`nE=1kad!PVnyrxbPC>eqSsw^d6H>%qG_e}PWx83o_a797~0NNc^;A)GfYLL^It+;U-XbLb)Asci^pIkXLHkyVU1TiHd4i;$BI)JxZ{O zH;GF~y(8Kls-K#bEAOGp!m#q z0f<%L6Om4+DYUagAGl#$Rx21Ls9q~%_T<+OONT-q-^w6@29@*an)r84QUhQo?HNl1 z*jtN}!bRUgyLVkc8jRDY{U&^9{iG*(&MBnmOv-@8`T25EI{Hz8HjR=P<}QRRDZxpk z_)J}`lT?s*%6;3nY56(NiV{9P2`e$bIDf}_xHULEcQ1~SJ%Z`2q5g>fOvgGUU~fW74eavyDahpd{j;TB{%Z+<~ z)6)9k+`55wAESnjk%C5ni0q`K#8O~&C1u~MzSW`0|G+&sUh;MWn|<7 zdnA|ngUf-!A4sjo8{`^_o)*U2MR4!O?O5o>J)geK#7Wu2?Rx#RZd{~oeyw~KNo5i9 zeMP#Ns)khTYL_7&5mL^8Fv2BTVL{%VaaX7>%$Myv-!<-d;TQJ~%5pUI9o(yD@40=d zn;ETs_n}*E+$f#1Hfv9yz92g2T}X}#ELdJ%;I{trS1L;-cVtb1pH4b52hFs|$Y3N~ zLBu&(7i<{>_zE2M??v97OJ=(yLANNPWL!o0d{d?14N8~d5ms?fcU6a>b3r%g{cQl; z?Kr&Nk+A>gy;F4z;o}Z_%NLw$?X(|9~xL=zs7P)r0`w=vHDBfwG@6-96JsRK2NACv^ zXPn3Qc>L7E27o*i-B?0L?~TudKJ)R;yEN`iBUH!Q!IvqGItMFgzp5=AxmjM(7GJg0 zROQz57jpPgDRp70%OUJzJfoly7biIhaTcFQue~Hj=;2EGN6jtyF*hHUDpL*58U376 z-^b7fo1>j~=H%kOJVAKZ2>KXgb|shnPS>=gckfFiC-WmpxJL28@ceAa;Ea7>W*c62 z(@XR|;M|KNp9(v+l=&SN2Ls=ljpr|f-6(I>!W5#*9v`-5dl5Y-Pv6W1@!OW?R)r2{pGi;(}!EAB!;swmfjRw|_-;6e< z-bf0Z^C_8IG*wKvi(naeIA5;3DR13+mfOU#xv?>jSgVdT40Jz;r4!T?{#EhQ}gkWtvi__iAbjfbni3jA41Cl#~xGJQgg zXgxgKe^H9nxoRS{kAHXYOMq;>s4q858D4YcU|?ONRY8{5Hh|(_^)ih|ln|#mc9cx; zL1J-ELdNj@pnfxLyL}0sgg2^7siw|$SAj1zE_*m&d#$c(t-M*=?+`1wu7Sj#zWSCK z`+&{dgUK-t6*ioj+D+zV4bWO*3h?B0=G){e$`YGXC_NRcsmA=2j|pS^nw!xsl5e4M zYFfQA=?lnuDpx$IE>u!X-Tk`O=Ym?0NFHlZ>N`F@WQi%sc>atMU5{(A0D{ImS)cD* z4ju2Nnv^UAe?_4~a?_85Rr@Po*n&jJf9=7fak1;i5j!Bz!lnBKZt8oD)gPc)9NlVkq{mwu?11 z1?x$=sxo7vUM)5u8C)vqFnOES9OI}wJCu>8k9$VHvRliK2#U?$8_-hV7SEvklH!;h8TI=@Z z*UBj!13l-r5sh{3{5;bRZT`S{_{F@1n(+E4=19xdnI?;3_y>wM*FYD{fb?{g)C1_Q z=!p3{>vOc60Vr4c{wE=(C+pk+TGED=758-0V`)IOA1frs zIA{PPv#Wx8Vg<}j){iwNT}f$9oP3!V+G*N^Hxj_^_I*rGr;TuuZ7cRmy-~nDTlpC7 z_{;w4xCW#&k$5GkEuKA9p zy2Nmx5pTRsPKIEWy4tDI8LK*#lloUlv#x*QoF7qlkM&;@DM{#$JjZqst=(n3_TYle zjz_r~)8nf}*rTG>!b2q@=Q?orIwwzJ9qQymcspq7*kLCvG>fjMEI%f;hu5 zF7ZLXS2y919NE%mp$GNIgz-!A`FMT0)UGPE4_+R3gjkseWMZt z6lB7;x-AtZ6S3AC8gL`7_x?Z3y>(C=(HAZ_xCJMH;BEmXNYKH8yIXMg;0`mmI|SF@ z2@)i@ySv-qPH?xK-;=Gkf9!5;?W?!jGgaL^)pKw6?e25${m%ED1Ak6x@l`Yfp1xm& zjcvKh$Oo^EsQLqmECIu3Y9~I6Vxz8v%!mkmTz6KBV$^F%w83vUBguWsA9EtTO&736 z-T=>JA{MzB?F4zA@F{JVAUMR^x;pG%26nZrL+m}oGCsj}@lMs`BYr_480q%kMeCbT z+h}Rjd;rgJ+O5j8f2f4eu7|cNgXUfFq;9XKvm!k4Ybh9Jyz`sVQQ{%xZgb)-e}rfo zR8=2aHL5tgE%C2Eo7|NIr0Lt1>n7TB?@(Wl&|2_S^KKy>5~36QfDL{H#7ys6wK18%6#H?tC&!2yOH21BmJ{d&itvP{E1ggpLAIHGig zzDM=2Nuj-Z%p66UgY7W`ajLN*_W3FBv+57FKzGxfbIBV`zOjjxwSvTBJbHe@z~0`= zgE+4ECK1B4pw{XFYboGD%tvg1tdn7Xj*rTImC>_Njin z{X~0~c+>&Kmj>zglxWBCXmir7E+q1gZFCS5358K<59%|NHW%9-liJpR?_0ppUQMk; z3hebE3Y#aWS@D?u)Pk zQttogOR`sMCo*-)f&4%VN*mN( zL}AbO1*D9lEsHg%=s9*`$RYlb)?5AwM|vw=%>nM1BG)_gTDn%Ik2cIyUN1`Fg0B~@ zSq6pD^Ame|PA^JGY>oWzaE*e{yP?a~(1$)m8CU=DZK9|_?scXfo`&#&{btI~{?s<= zke}LE=xWs7WSCpe;QOgP9dIiT6=~mJlwaPqtXk=64&LO8C%1_cR3f()rEG+!R zoaBCsXd5N`E?6IwIQhMh)+UIx*X`gsklWi|m64ch*=Y|o zJ~n1Qux%^lfkpXB39#pJp3N0kVG=xzQ`E)KUiXV;A-d{kb1HCU&?II7=S}I&Lxm z-51eeVhi~A%Cg~^B*{AqU1@Z(4k z7_u4YNr<6^M~B|?bI>Eocd~kxKZ@A48HjmnPZv_4Vv>gJJC=A_?Pdg)?kd1uz3U*Om z8GGgQ)s4h8a^o!Bb0QwMo=c;EM)pS>5~cSlv@FMW9|g?DY4Z#Y z*&v(Mxurq}EdUEt~*?0ZYrebf6ZdsF3vo$PYKNY&R+%h<3u^l zu^lb9KsPpNi{1dM%5E|-lSwyGbQb$;ntv&HgXuReU$0D#m5f4epSHx{<3fq>dn8G7 zu~zLt*L=u(fNH)i0OphKt7`lU&{Er~wqZ**f6CSjO)z~37C!pPMgj`{hGlUkCV`k> z(k#sm(q-QY$iWw|N9i8>*U!x6jm@wu>wwrn0BPp-G?xmKaX*mq*;kQ>6?w=U*QF1s z^-eXo2+lkR#KRF}W-{kEJArRq!ytI?Ejp*771&D%{W6CW^OeSPwD^LXh>^65yxRI9 z7gwP@U|Rb1mn{>yD}xF{1bX};ibR0PNhnd6lQ>OHyGZGeL{RWb;ZnBvck5weniatm z{?t`wF*A= z+6|PJA4Kwg-#(7O6YKJnk?cN7zX7WLI(D{;8ebZuNOg66_Kh^}-3&~?jY@UGOoAnM zsGbjwqGYI;5=7Vw!L{J%?QH!(h2b`qAE;jr3cio${mU*z1m=1D%QY@Tb&SgY&7lNG zg%dd2TODrxHy<%0(TOQ}t;U-S9XT@0ypL4dw3vUAv)j@>@BTmdE{6MA;6OSGPOUfQ zVwe}Un9tgj(q`gIX?xx(ZuMg5Qwh~5sa;&ez!=HrcZ#tBIgQqY7F~XrufO0rTgnQb zRUS+F#H3lRBU0A0Ly1Ei{6`nx0Jg6%h7GqI!_gw4oma#oMS+oi^&Z0k_)p4Fjwm?j zE1IyWg|HEuFm++T$y3@R7e?G*K4Na`dn87ga6@<)lBfQju6fjRVm?rt*}_}qXyPoY zp7RKt{D;u#iv7m>^yza6Ma@P{(w6D9og6;74tU}|5BOzCn??KmiM|iga?blD{U86s zH(8a5IZN%;g|X3C(3oaNAwJCA^#mBmyi2e9j=DE~p34fK+)Mmw_B}Oddf?duu>o6_`8mig4o^@t` zcFQRK>#NO2t}xq(6{r0Sf8=c}T|DV7=TYBdM2m8LkZKA`q0e$ zcW6VUu6AFL4{h*q0s(783^g(uO?7|y+#k#J|L(Ns%>H3X`)8)Rf`)Yy8g2cfIZ+Hs zZ5}iCud7xc_x4L<)<5=DWH(2QC|+h-UGcP|(ZjFrVeKn@JX*hw=g!ir-9Ox@`}jdg z+*nt}+JtG9owHjPlb?Yun=WYj`@uI&Ggt8;?MkevwE{$sqBbG*k(S=7 z6fi=sYk9YLc<%`CQ=T3obs%+JX(*70Ptv7Pm$nyK1c8QLdjz#<$6OX;l<@A#HoFN% zz%u?VzKi07otTVZeQtU*1H=~~vt{_b*cS=F_#9hR>8)}G#0)UoBXZA#b6BNp`#N`Q z;&K!nSF>gn;)tq-u6q+W({ey~yIq>W@&<^B7yX?TC&ds6k3sSK!&m=56zATrw}<9& z{@6j!5uw=&qQkP5S_yrk6&m(y5G86y`isJ|E+x%z^L)i_ z>1{DBW)#5?Za_KUd>D8>%e%KcmC-Hq(@?bv+0WNe420_y+bvOeZ*y$8{(6+iv69ZU&!mFpX!);`keLe91POljKVRR*v z^8J1%Gx?@BTza7lEb!n$J%DY3>!A~fiV#lyWJ&jKhws5~3(6J2f}7KP+ljQamw_5~ zyYYey`Olpw^u_ga=J!M6?EdtDDC;A3mSpox=vVd`&i(px0vQ4f<4MYEhVp4d9N!#+ zeAB4@Zy(Ja=YA0FXaajjl__hFWL}R~V#&ig6`YZLV#1I8u}<@$#mY$)-S>@_nmYyd0j_v5PAd-Y1z0Q@7GAaGlws5^6=73j zPr|tazn&?fl7q{&{5dqRa13!8o>z5P)|kAR*_G{vq|@j+BibGcp-d&env4jx7usq_ zyJdz-Wv$zUFMa`G{zc~3Eu?62%|7@5Ci&i<77U-PnzRB%e8LTa+w3(7LO7j2b1%on z_Y!Qoo1ke2rQB^BUJfdJ(%?hqjto+Sl*PWwzfyDY@W?Iq)nxJat`}N!D^)E;6``%3 zt2{%qVh8|zmH$k)D#JOdJeW#TbV8_PKiMPhyrr^5%?}aGGQFGyRMzAtwlTkF?9tSH zjkJ*T(_~aG47dlxw35!Q3G=;Z5_vz1zbNgu1J-gf%>j~1b@c6LfEDJ-!}&oqC{#G%GhCJkcBie+Z_O!`fY zwTrgWqi|Q74nw*qFOjx>D09d^@q6z##X@HqMp)o`c7pCVfMhZ2v8?>;UtdPOHvkPK zZjS^Nej3JIx%)C3(RPDu0~KY|s%(yk-iqKuz7gU$&xCiN#NX{`?}g{?G4_8&+QTxX zKS`8(bF2T<(H~mS%3Ct1T}MpdZxbxB;9hoJJ;A}8JDV^49MDVV3wru3-JwS$DO#mO zS-W}ypA?A5Z)YK=uL0{q9WaKuauQBEB1PGwrORu(|J5ThE&44Qn6d2*klgYG!apVZ z(f#$gFg?v%_1B4x%v zqbPB)L>W74lUXK?#Qv4VhnC)k@|J}OVPszT) zmfG;g|Li6^6%fB+=ckrtLp4I@Ce9JT6EKYy32&7nXYxUl!d`UOUyLR+1FEh$I|;V{0Q-(HQNx4V^AL5A?JIGb--1R^ASz z`}YZGA}R1%Df|iMzO3>)`l;x&>$mkenF6G==OHFn#+)DP`t*YH=>l;$29#MEiqO%z zL>pNQOdMi*VWVvcx(`~3{8G5#tphw`h@To@Rxa56^|Q9Jk}D+{%@L&eePDFy@(Ljy zi4G|N9NtT)!}_(2G!D^P0QVp=wNZM$PNKAQeP3_XM^b{iP8rkSN|yM8zW)D2wsIKy zjJN`{p&JXfs~ee7XQ{>57z2eny4Bq`uuBA`lKChHC5F{0w8n8E7o`ZeS$(Dg3`HHo z22VeV)=Dc_^AEWK?F=`=dd~F57E4Jkt69rT%};QGhiZih)3cl|^p%C~oCkAs9_cx94BLAps2@Af2I9u6De-bS zhJECh76LQfsTFpTR}jEGbMnQ1E)t%OBSo9jJ~T>tTD&$-lZL-fOP0oBwzH@FI68P7 zm#q?PqRGMB-~@5`<-ZT9XzllY1I!5uPwElG_q+kbDZ#T?@w0PkxvPH!wC@f7GQ#hs z2}nMURX{Vs+pHfuMDO_%!`p?Rt`A%H-bq6%-c$99C95wU_;ko@%6higc-@^y?{k27`N!TBkeV^M#ysHA=)(`;OZy*%UJ=s z_67)p{8vpXEa=~V7MLpaKcZAPI9vb~yXb$@q~dg)!!)UzBFYzz|6P*`{~t}Nl@)VHE&#-7XVBjYomIl-ARsR#Hjl_1y zof9G-u^9LI^b#%{cNO?!kmgc&`FtGA?kfv(kne%7;?IE>cSHAgfvLiAHBTqVy2 zw~~9{5v1dc0CE2n@s;3SjSI{$o3v%SO)du&diC9!GkCbWN_~FVN5&bG0p-dWjx?+b z&}{h$`dSU7euCIT*r05eS7)ydR~=a$D>t?0Cl^7e-Y-t~$NhRu&buS2Z2yZ^Nw_;; zm)Ykub}@SSbPltjr2oaMXyoLvy;kf`R}tHnkP*~(@Hu@!L91oy%$NK}k_6ONb@(;X9{6o=~&nC(860#Xjdtm&lNVH40b;pQsLNOdV zn%s&3(|2UfwsB!vo8(tti{!m{pslz;t(*7+?g>+?Jl>l0NYvc z{m(3aN%xL-7`nh6DJY8xmjUA){5>_2_#11d+o>LpiasFtCtd77W)H>EpHIhqCpWw; zSD%k~)OSL(O8HlbcPsFd_p5dYS5|$X4ua#3v6B>Z6u}<5*dGDwUGo`Wd!U$VgE5fi zxc+-m!cND>-u&E~dtP?AJ+g@(*py|p1bgv$j_-x7j?Y?Ulr=UC5bnW@cR~GmmAqA_ zf|AZ#r+r~^O;vkfwJfrOu+Eu{h^=R>S!lq; z9iF4EcXYjac2NX_lOa*JCb2iqSrGn*Mq^iiYxBzOP=A%T;`d4ZUp3o!;z%(xYX($nvM0kH|Y z0E#oNb0}hS8g_fJgm||5n{Ogk%YZ>$FHqtDo90O{+)MSe7x*0NocpKhH1?S^&ROjM z@kU{VHpQ>w;^^9I8z*bCitE{WK<%d^$~P;a4_DU(htmT6GT7OM`Y&BQQeC`2h!9Ai zftxsWvGbYZp&_%-*mz~;$MLep(%N_om5|l5#NGdtr#J0?c;OQUcbv_J!grkcNKyXt z9P|B8so{U9;QxtXQF;Ts3l*b^A2j3m`2WX^|0mb-zt*begb6BoXWj4}xyA1xmxL(q^=?F?a{?GN89sxa#kI#xVRHZQX|wnJWu{6$owe!X#fa zOO5KL7B>0M%aV(vc7pUmFVCX8`0Nr!ASnzxh@KA<$zAy}CD-B;Q96ftE_?@paPm+b zgMlZ)uB%1kA%ylJ?*!IyJ7)JjGwi(q#xeJy2U_<}$3&mP#Q#eP|Kq!?bO?Py-F^g! zBxq9Whk2BxUVgx)(zz;QAcB7+ULeR7E5~b&s%R%4e>N3o4Q=L9l$*%1!pG~uoAyWA zaQEAQL$ybpf#5qmn-|k&5-!XA{fmz^IaCD4#P@jJ+!dZd!2Q$fF6t@KM_T4k(J5vi zpAkMOhfk1yoeM6)IKo;4{+w0l!dv4Fu&>SCEmB5h_w`QDDayPGfi*7B_klPt8pDV&kr4dQLnS7CBt@nYW?0TaN?qg6vb&XdwU58?+m9Jcp!DIX zi%343PL7%z1 zCH!hwfXKH?Tmxq(E0*tYm}@empc(0udsnHP__~p9=Xdpny`grvxLyvPVcfl9jZygl zcEb_dORf&5-kiT{N?e}TX0b@0u4~>iD%5Vv$?am{7>Ud*&$YAn#5sgiujXLI8xe5+A+}xMNgHt5q@U9NE_2Zr@WFd!vUGEV;^fbaPk`$=Bg+^Np z^>M%6@!orfrJvsojB;)pUB9yCnDcT7lekSw1KUx8*+?xqyH6|&ZDl$tYyJ;oJ@)Z8 zz@pR><<%P?FFHgMCH48mT=y%>vEEtK^N#b8?yL@&t=&aVWN+r@r-Q9_jEY@uQkT1a zYyJHj7b*#=%wy%fp7FTE$2s(bh zuN4uNf(trV;$E4{agnnUZFXHcdwv7l%f&KiA6z3GP(8wS^t<8TD-vCA!;_eijZe^5 zGgnzxO%U;y2@3C9?(=pM#KQMHIN7iS84 zi{z?k7iJgRoiZ1F!q$TefM?tr4t{{o$3ag6TKTw}3QoD0%!}z!qFoIlc806hD&42%4kqU}@zUagI zkg>t{y^w79pP>g_7$4vPA=^HDro`STW>F!U%Igc&;@YZ$Vt7!AtJi9k)^A5Kf&(T6 z&8d78T3uMc=AzEb&F3^9xNiVJYyaQ2p6pT8e@nPam1rF?KA9Q@`n}P!S;|C^lF>+Pr)dOh}qrw4$u!$mwp!V z{^8#)=FcHMTM7-WT>ODr!Ss^}uurw()k>5LOf#>{xlEB_Nr_k@cR1yBPr6o6(?F$I z(Wdy<%?j>kU-jX3@Pn*cIg#Q(=gkXnZ%Mz5zKpC;ywG=~c*p6v(njR)kT- zJwlI2e?)r8>@<27n$S}Sx8igE{_)E?RRFfnW(77+4ruJ#Bs}G5OpK!9Z4hYFyV-GE z{lrDZzdb>vz~>8kwo67MoaPu%uGZJKDS@`R6&^)GLrp5iBjv=>VxsB}TA=dG!(DS~ zIhf&_61_vp8Yb|qccsz`yPD!7n_mIv>U)55<#a`krSHRby!Fp@vGE!*o{sZaN(wTUEJg4YT5j zxz}%r-B;zp_&x&s%+AQ!GJRVrvBNiit- z_V{5QnFqgtVUt_ouIb0V$Sw1JXX0q3Ge5TYKkn09*$pM27{>1?`fQikar6K`f3G*d zMYB0ax_rmKJk5^^2*dP@h}PTd`cm4+N`87&dF6( z_9j*G2J(@u=nrf?8&k5L`03O|7N`jba9v zUQ51Lz!!+~mu1r%HYyRFONc|mEFL8G-Wz@7^j+E1S+_zvBYEn1~6!_!~eL(G_^n z(CEQa3rp8!uo1TJ)!2S^;eGipyK?HHP?oV$aP7#$?C!Wb}g} zIKo;e)r6C3_b_NL18($*=aJzy4*2d;=nVkp<+GK9B|440_ez=|zV&j^UJxSvEl@;NeMHQLti5_%#ST8b96o2bwD^;gz07&QCh(q5R(e2)yoRRz~RCgYo~NHMaaNbV#UCFd z4~1DJO`&7Y0QdpF+xLxlYJ5~$fhC2G; zqgHNd9`)8pakfL$eIwVPQ-LU@9pXX&Rs8ocsrk2GO16y6wx`@@Yx;IJ*BgR<&eVwl z(<1z~f@;=Lz;Zn&apa%l$>1INzrEfam#=Qb6$HILJU5xG(OE5(vXlp3eBpGl9S#&c zk-4ZaE&0zQ1EBG*VE<-Z%wTwEwT}>rG}f7hD}1;}2TS4glD5-QvdOTo!r!dNpqh7< z=+Gz5cWAVWf)y7CR`9?0%MB+|O<2E5R=v{OAkZXLOmjUhB-ayFlRkgoP@4U5dV>}O z0YG6ftHo-p*qXptuQTPY&APV|mcd#%uA>|L%2!4}#i&AzW_j)<^;XoN^9h3Wx_960 z;*3ZxH2Aii_Y$lrSP9Pz!hA(+8!(@|l!!fUen*gtY+|~h-$p!Aw_ahINKa$$^kGb6 zo8;mMGr%Q#>D(#^c$->`%ejU7GFCYWOILwjWe(xVMw0ySHgaW#fdi9CpbnS*l58;kf= zUI(Bw34F0N8dj?p8@Cu*ir0dOzUU84!bneEja5!eo0&ox27AI_A@g8gH4`s3H3Zvd z%;)bye9(_IbtDJY11%T1B<|;VG5$Z}{BnSD(UjD$uGXi3^UQe!$PB@enxH5&l!n_` zH$({GN_ZTWB*s_Z%xl-U7;%4$imPl2yUbHC-;$Voq>Ub-5JOis^P*^ncF8H=A1WB( zH@WALVEnHus9)|1O6<9o-Dl$$^6`)E z6Q)AZxgFOrP=rIm!-ZB0*H>m$zqVEC=4CPxmM1OO4@q##@edIt=Yn>#y|~=)Zkz26 zDGM#hVl@TBM;Km8ddZS4%&D@3S~SI#p!m2^D=XSD{A{JQ4nfas{SDHuXnQ(m z4JFlmWD8Py!d6ThwulIS;7)J`da4OU&FkQ*4S(qR@uN~?wviM8b#)%RYHCdQr4E9H z?mD*d1BI~a6(4D)TpR&{8^azoSK+gX@)x17ty%1#F-`PLjYo@)+|i@`hzRWPZlBt7BRE%_ z1<|j5Lig;}H3vuZ&(}8n1l@~LxvlDC$+y4aA_cY`_*D6+r*=QhZqi0oY`w#x_MNX^ zTPKgfna90G>-i~m?ls^S2@!v;nrHaVcs-YElhRi#?kY@iXZd69qJnF>4zMd$d$XkGBttY<(e>}6E;mhn% zgPz&=CRlR%%Fp;ZED&ycdwO?%>6JNEa%EPuvOjl-&is~g16p+)?{?x>OMK#YuFwhk zk_-eKJD`jRYwHLw9ZUPx<#=z7hZWp{g(aKE#tWVZ_!PNqEwe5V4O@ilWhNNt6wS&m zP+mDW-vE__J0BPYp3QhrCrDB}YaO-Xc&XdrUr>R&!hD5%kifWP&;9xDIZzk7D;i7O ziwp*A@@rw}m7;jBoYA9BRX)jPzxCjk(Sls8NBDIU>J0e0gz9<_eaix)k;&y(YunDO zsL7FV)Exuy(CkGi1-BT@@ME{Knk2J^-;u$DZT_D>^tpr9oE$IghR*tJ#}mMzz=!b? zdaiKF!yoA1yrOGSP!yZUvZ6OZ0)2TWmyYa~jQq-Jr+idHMH_Oz|CtojgpRuocqi8@ zKJ{r@8I)h~}Wh<|w+c#p+1p~j9CXN%cyti(DX&3dXONR9-k zbFp;-kqlnOcX=|TH1NY7p1t>dO<1#lnqFBG&PH~)vHb$cWZL67)r=YNN+H_L z@sXwBoSC3!+TAe(3U&QJXJO8Fag5o=Ki4jfv(OxQscD@lfEtB4Bnq+a-R-0{nce_p zA4A0g2F--?+dF>3h!7FJ9JQW*c>8*Q*Co7a^DNG}hpJd_0Lqz%&tjWOC59!2D*|nq zkC2e3-mqI%Q6JnoRp)fE9l9Li5AJF^V*uA@B7XWq!S3ju_2rPH%tqU<7TaI|1EaKArl{kHc~54}OJ|K0#3J~!b$r{vPsykydLIXvhWQp41b z1()QtJsmx$q^@!L(d>Kxs4Hy_rPZFZ7T1N;B7%RDl|kTHu=Uzh)NG$&+;D=g&w2>N zH&^qhHu#fCV^GF`>Zkf+{m)5ZgvQ21*a%`DM@*oSUsJ4ZUD|2Rk^!s9J#+CJgMs)S^&ZyUosd( z%ufb9r&#JRjAm+BT^_J#q&QnLw_@G+5wyN;T(B;__P)w8RUQnC`RD%JFRXU=F!DrdCf zmp4Fx|JFpu4W?-}MY1sPWlNIxJ89n|-z#M557yEh@B&Ka5{bSw;#8G=QR#89Jro<@ zqjth9L{$$nO22X#{!L_lbAMGNe)|3^#AXfHy7JjDF?9-)T)> zFcSuzVH0c$t{up%ovXuP?$FEqYiQ?YM=>Nf2cH{-vg0e^rLeH@zckYw_C{6ZC~4 zz#b}ip4SItTWRK}Usz}e0RG)}>0_SRY^l0h7GK!9(ity1q@htzVwle+ zEY?RTH#bW}_r}}x`oYeEut0_{oP>KFqgqOh+0T}@jOYRtAwb57Ow74e31Q{?Q5b(e zxyZKIlAs<5Df%6y7YL4zP##`)>PRd$sdQ}3!7Zr#fvx8TrLRw)G?wyP7%d+#v?dB1 zR~S&4Xei*DcF>l(rWDEA+(X{!l}U0C*1&(h$-`T~O=y|mPg)$_^xJ=mqGeab%d3-t zQf$QJEUfcvhRQxMYO>rgHGPXykr=5UR?M5Zu{{k?E4i|8xh>%_PAYc-{kENdvj#rpw>)go$;(d@hZ*V@kbY%amZL{{b%A} zw6=bG_Jsze)Pl=gE6;AwWB#P*f()GEP1}NTELc7Bgr^Ib#JtjMh}^XintYjzfE<9Z z+l$Db`djSYGR!-9EnmpS(SQ-5t$>Ys++ioT?G11g6o&c?=Nx?607AILzfxooKweRi z*|4UWlb4>odo-NSdR%8tddd95t9u&&LAbbjO%iwNfC^t-8ECzby5rPUb*$=bxL?qGW9AqmWG%sB^3;Re**@| z-_wo)2k7a8vT#1ez&C)$z9(=086B69fKJ7=BO@j9%U{?8eg$QZfvYYW} zyS`wjvHpcoQEcQ?2G^8GKy4^Pu&5xXuP2lG-OsE_K{fRbNucR$Z-xVuWb-pcXiC_o zt?3Up*<;Fe{0&(~ak%&_vWsyUId+^nRlexx z`&3%hc4E7c-g}mCOXb@o&w~q#4rWJhX_Gw8?RAKN^}k#*IYO=A zxPI!8X~${uH8njDp1gSYuj65*ZA0SDV8L8DwbPZ|b^4$tVLdPv$Oz%jwV>nK~R!JE$R8>V$z`Qd1xaVsE zN6aq!sW+zt_P>PbtFwI&+SU43PsjvspcYp1vq?(j&f~>Jfk8ELtLL%rtMQM8Nf#g3`qpzn}7;iX&Aa(0!4 zA{O`3h~>&KIP;MZau>I=_2)eq)(do>oHKe$9o`|bUUEzb#+klU3}JWxS_Q*))JV+WIX1itz?8Y>mSKPW|!{Odj&3 zd#XK*_Vjj2A5Y?g zThukXgUDekzeix|uiX5O_NpvYa=aJ8XD?4O_TkEFK`mGfQQs8hUoF>XL4`V_P_z_o zaOlVe16yV+I{gW_HKErjj<8FT!DZ z39Y5D8bvWDY zHj5Bum*@lP61J0}y6c}q2dK%uG-T&)bOu|u^QYXS+t1B4CRyUTi%5`|P!;YQ$iAcB zr_X)2c|Gt3kZ7R$bq{BlpK}=*jQMZ28SSIO)o;#00tb0w+g}*F~IUB8VkutdarP^jt!n6f+j)YvUE#of4uOctr_8v>RaHN_Vq`-LO?+3SiVet zZ>Jqs;EExwLr(yJKxFxcfgtEKhbIUXV`mz*`4Uz0hB`lisj~B@AKAp7{4c=;6Q@dU z`>^zK@k*r^=294n7PJjBT)CV3t)k!w|D@Q2yXsJ1oVXRG2~6D~|Ld@a4z6@nzX?te zp&gZlW~}%2XjLS(eUnuU%*h&xZjx&am4X%1me3=$4*K=St3 zg9BSXO}!C&oMDwQ`ja=OFHx$m#XaJZxtjY1nm5ZgX-NqsKTx zxosZX4!*W%Om)c;*%}yi_k_v7wmVa=(6gc<4fhctgnAF3La6 zbW0{yX6{Rl>J;QdlwgO7lJ}gRwhPz#DC6&dg*zPP&$(zY;Qk<2P-cjxoDnFbxP2L3 zsSRFe{qRI{ntPGiCZ|l&_5mj`puS>Wgte-us*@SCRBo4~=+U3U5Y(h^+`Tdoc=b4S z=<_ayGbd;xjB})+)e+Ni{%0wVk8AB+$~Thj?1+o?@nK7J5w*cfH&w11A19rf`~`m} zZXx_n99A19p#w^k)&*)!a^TjnujPv?B_<-UDm zUF5~r$E#4$^5$t+z+qQLZ5viwYj3>!Q7xgOK*sP>Eo4ROBZtNVGlkL)%(EpoDl4<} zJtEJe7T|?1xA|v`3navo8Qe)|mfzH(`}2l9)=LJf80Na z$VfaztV^sSd27=B<3C7#@BwgY{Js3jEu2y}MB%2up(-b?HO!;R{epp~Y@FL&Ibmt2 za(p26^4mCTVTyhU|9-Yh&=hyBS;xfFts;7li|gDK%d0? zwUH2$7_FJ#P3}I~I~wxbOkEvCq$Ghh^uF%)l}086G9Y& zn_?lV+MNdN?&_$eHtRF*C%XQ3`Z5P2IGdRg3AZf~FQVizopxE$h_={4z zGZuvu|BmnVr3;zKOf-I_t4{(s1->GBg^Ca);z?hoVUiT$bWYNi!96A{OtpyYs%77L zJcf;qbXx@G+SOMi_*5h403*K-9S%_a3c4WQo*P4&G;o#3#YuJJDaEY zPzPpNW&cU(wPbcR&(`@Xb&B=`aLsM&#Xg;DMKS2B#1E(odfg*G%% zrE8>{1;pGRoOq(Zp668z1_enilbd_@r*YnLDR_lMpP4N;yYlS2Rfc1HU$dp!pnYa> zbW;LhwL(!rqZWz0b>v3{N;#69+-~0M?1QM#Yg1g)JkueHb&zpnM4o@wE-bLGZYjbT?P zQli^UdCy370{&(+QaPvA@OuNL7aVsL?b6Wx{r?<(bqLSJC1{N0@~mMRxt@^pe9H`y*Xe@*!=mF?vuN z5Bwh48vxbDiG+J>l}Ap);EBxL?Nj}Rw5rsQ$V=}@C=)8}W77WVx4*J zcMOf88O`R*=?x=Z0E`0s-M~ESCCA_zI{v3Gl-!gWZ$yiQHg0%>84wQ-h8elVaU=aUAp3< z{wOO$tM7pLl^;T@l&R!Dn+Rx!JB0^3*MHIQt={bQ4}kV==OI44ckmHyjgOzF!OXi> zei3+GEO6kzb2COO<6S|fVj(> z7TyZp3+vD5LvW3oe0snr9K&fi45sKdoSMNQ0kr#e*tB&#QX;5>^iL6k$0$9}ynP`=6orA6_X1IMww_2XkV7nD#gpNw*Q z=*D09`y1fK5+SYQE5)!0wL4I)dZSGT8V28!_}YZcw7T7T#T#|-9g3WN?lF|i(Dj^C zMYtfiF*CGzNceIOrE;R-o1Q-`RI~}LVn{rYp=_v7ynkv$FNnA_U>Y(7a`NU3Q_wNY z8CKCDDoiPb7>3=n^Te=eDqM2#Y&QBE5KbWyT@~?fo2MfU3T1kNwE9{=Tkl-o-yd8F zq!@oaL>a$d5ICODB9mLrIZ)5B)VtW}6&-)wTiTNxq1k2~OGj=Y+yTDSRf)g5-;2vCqySuwP!QFxeC%8j! zch>+xLIMQI^#9M?JFn)=eec$tsax~vHK$ng?%jtir~54V*0;)fjr2`N9vJ>PLA`Sb zLyO34l|WHje-9VNHQdzq(%kifFRmefRFo6jC_I50&hOq23$R)o8zb;@oPRp@*-x=^)GLP^H%fQmOa7B|r{T=!N1IR}CKydCetXJ80Utftt7{+cZf{lR7EF91miWOK0TEH=nd$4dP zRr0r02?G3>&<@(4wSZgJe zV8q}V6&{37ym1Rauc#&H7=a`(T|r;s(hgz=DSN^&-`s2#9?IB?Rj6FD3F5iXkv97; z1X!PRg$qZXsd2X><2(F{dG-8JK*C*XEkiTi zJJ9>Xjh!o64*DIsgQelZbvYkmkzBNjx2{k!QACXBPGzSOuDY#k#J)<~;2$j04hczr zT(1&8;LDzu*j#mX&SCPAFXAOHokcar{M~*Hb69)x95`dN3w(77w`ZTPckam* zV8Bq}(5`BM!4rKw>qOT_MkR6fUMncS8}**Lz?`wKC8bx7mWQuGS;>ii&=cZcxF1D( zDNbSjSPB-*jo^iyGo;@yw^l9}!i9eSaL}&&>CZ&e?wM(Lh2_6(!?UBQB%%d)_gVBu zmAp2Y-WB-yx$cmioN>$(>>=$W-nn2V1q%HIUd5wCnz`pp89Ork>paN;t#D#YEZ(LS1KJz`?LtMMnUVJV;#@9= zMcFE`(`r6{F0ku4I*>lbX--LZjZ2fuEC(aC;WGjDeHc(+hS-R$>N1=}zuP7J48wP& zhG~o6OHe7+YpMMizt;v9LH2_#Hz@3zUzh$CEdO@JxK$NMbN%CP>LynraboSy+9Q8^ zq~QB`I}twHR^g#O1*?ig&(D=VM{x3`pLTntr%U?|CA~vg4@2}uN36W4epfy6Klt(c zk(mu3SgN!PjC?sRzJ15cs_k5u%Ppy&!a`F=Ft^|!x7S~~rm<>}FAZ?XrrtA63P?wI zfcIJm84C_nd?%=m#di$nMyU=v}MHGig%C3j}}S; zo`nnYIc8#y1Qr=S3MQVuV&KLZ8UTqR#EERyHzFotjbvTvI?CN(T=zT%nO94MOFa*8 zcX@rx9+{H$`#awbZhh^_6&AoosIJ1S9fdUP1W%<4;k@z|6?&N2#kjargsgs8k~vam zlTBe}c6?1{kKs&v_Z+6e%d+k~4#8d*>$cv|in#Bxn|?oZ=GM9Xm8;4FZQ@_O^X-OQ zANY?}Uij}IQFOr+O5dt;?4#0IK}JBsgVe{i0bQW=z_LpR2ZEE~e zf4nE()9xiGbOM0cLU@}y3!|6jTltyyaPe;DmwMlNb=~DaB2!<40{rMPZ3Al)Siv|8!C8Kyc)Hsj1`)=o?Yn2~(W3wX+ zoW0n@ZJb2jLG|Fi4lp>5<>3vVae;X;kXoVZV}aw4hcTsp&_j-K9Jq*Pkq zISd5ke+xS=Z~poZVNpD#>c=VVS4`L^eXu}su~bvShex|M6S@n*OeTw@O+HEW9kWkk zTm8@$#3Q?k=bDU()AU~1w_b>*hKq!>Z475L&_Tkk$YEfr3s@}O_c__H;OzL%Yhc-{ z%+J4oJQM#{zNdq0&lHkZKQR*8 z*4tY?yyiRBpZqa83>1CrgIp+2`}YUjG~9^JbU*KnNq+2MeRV=XXghemiB@suaD9I2 z3;q@uc-*K6&-yEH`iA-rX}93g(1_z=*G~2Y{Wp8v@BRw;_b8Mv==n~#yS47PEUQI6 zTl+#kiph6b?wSt$%)$#9NL&A`W@PutNHCDXJyuUgS#Prt!#~UhvLxUK<+^N~o9fyE z7@hz7z^-~=|KJdljw3w8vurwtzCqH{{iKG#FF0{Qh9CyU8R&^%( zi?fQ&*Hc);(-_}o=xD`ROWTLywwGmm=;}_`UU&; zegB+z@^b&}=q1?f_C#Q!H{>!oPruob$)N z+i&7NuYo&$Jw|JN8y+nCH}JI>x!X;}iSwEgU$$)3qq$Cb9!Qk!`R^0WU=B9RMJ(ct0-Zx^^-+U1!SA>kIr%B(ShdUbG)3N;GTb%vom1|y7iGD zk~2|-Hi)ssP0{zZC-Al4lhb++K=Z}4WR-!IVVJ^o+goDuh2T6lfEOZAhI3NuuzP~O zoiDJr?sdW^-h3L3tM{>>mvBtBRKc}lzsON-I>#lQI|ATy_flFSrP$(%m?Gqu>C%j*10SQ@Phb*v6%5C?_Jl_ z{rk~DDOh1}|Lt+-$;_zf(V|+%`otD~CUSvH zKb9HZR#vXC;nwG{&wIt4FxW4B4=X|30G?$${$6%`I(Q`B!6XfMJaiIZz6eplu&_Vc zO(T7T5i%e9BRpp{U`?+EN+GxB&)kz@4_y%w=W4Eu#!)w%z;bD1G}nn&Ekkb-W4Plx zA8w-4s>p7=9_AkUfG%<$$dwbHrxk>_>aLLfpb}sO7BVAwHI98ubsTtj&C{y(5Bdv0 zj@X+tDk(U50c;|oAO4QKT*iyDq84@?czlh)(R`QoDuaFpC;&4Y1{M$4R4h=eh2Ti` zdIVzrLewWRe0n$d1dHATE_gX9uVbG45{40re5}MwkGy)BXF?;5eEbzApZfeOdaobk zr0rEtahj%5Q;*a(7tP1Q%R&}23^cGlKn`9zgzEIXxdPAlM)^0;w0q!n|= zW=NnuKHbnxNI%qNvBbP`VFj*kDC z?lux?o^_=geKT6M?8{6+W0Wm%$Wge&^l6h$M8!y<0>@Q4VjeVY<38E`hBL>C=kVg% z0uP?D{J@)bb)JKvEw+3jG?y&snS>$8l6Wu>h!qh!-Jg;V;pxCmL89*T2=|1*(vSWE zjFWk^ADn}NnDjw%hVH}eBhzsGgjyT1XJ0W92jPo4_dNR#R~%+Am5<<&XQdq4r1MCQ zP2s4MYTF3rzlxBVd`V4W58qCSX#Qns^rsN=7eGIH=rw9`*15dJ{#B9VWBag*ApdJ% zdVuHa>Jf}mE&An#$E`pkuraLASbEBIp4X6k69eAB|87Os>OK_22((A3c(-O_L`cmD zUaKLavG^K)00>e~^_rb0YhyYNe7O;Q9kqvc7^1WJ+X~2<`M*v2v44~HZX0QM;FM!` zGk-_Q)hy~{Wqf8tk(l8d_=Se&3KtsM^F8Ul`cL0&O!A4rdBwCNX5*IddCfX`j4y`e zv#WbFrr>i~!MjFWAM&E%o8KqMX99N*hDc-#r3+`*U8a=LuPggqC&`MxfH03wJ*~z7?$8(U@L8jl$Q3?V zQAjDwwv|wA|5K+eTSr(@k1J%*<}U#A`uL&kmE_hVfPf9YIdOksX0wkmu$NFnl+bn3 zky2!nlC*b;2D85Ynlp)bL9ha|VAFRB2C5hM3&^Dq4+wp-g#J)`c7_>>M*OFF_1{e^ z4gFx6sO3LM5!kR`#kt{tAOJk_KN%7JuZ6mcZm=jhp(@77{nw37b9+JmtkVsv>n)0f zvf>_gCX4!YAz~j~8mj0qr;5UW;4Tr}f@SdqC)JKACz6%b3`+oUWRFDLbdR+(p`@>k zX9KHmJFcYqx3sl%oK!WjM=CU>3`9?~MG|h>plPq}56@&tZ=Zx7DakEwS}`o$AvPt} zW@&%uCmyXo7`B3T;%$l{+sslWJNlmNu%NBM2V;WPi2FZ_&)~ljCyZq^tF*(3v54>B0nhzpVEO|@l+pmE#SZIC&{&5VDRFjj_P*mhU1jZAMnm%}%;*G_A!i_>V)hEGW zxSj%ORI?kd*$@9VRUSDhV>6@Kb%}BbNNQy|TJsi0w{(qSb08^8=5IymI z{U{Q{3iYL38MX$0*W3yWp3JUWK zH@o~D22N3N%JU#%$K*l&3-EeEa#jd)8U(}a2RG1x>@J4>Tar1)!}2`ehh;MI!J2H5M(8upo0@6w6S`EwwM;mO?Kw%`H(p$<=FI-CzyH+%(5k8{FxOo z@&bk6N=N^u_;dsVZPNf{NB~YMjE+r-hjSdNL(I9si>i+WANe%a%dJPz&rLXc(OWtd zzPB92pP1ArpSUA-p0JYsE&$<}W}BXqDd4sK)RA>eQXFym;%NdInbXLQ=VRVkFqkAI zfP)xheanTpFzwVwzwEjRfcxOljE_|q`h-L>Fnsm4xMNn+ zk8YewO{J;?(U1rgFF6UV4!tLyf87y4IH;|Flzhc=$x`~ICRnVmTSU5R7i~fA;`Md@ zt#NP8>zA0+6^6*)?)Q^D^#i|$r5MV!+hIg9%6>|^NHANrw>jtcpjv{{ER&Ti(2JC^ zPj|%XsfH0%^ziY_h+Ib~F!&SVGrIEv2ePUg#sWA$sa?9tqrxG_Lf(7A#)KJ*pz8_A zYQS5(7qOulgaJ4J!795wC4sXyWv1286Ylyq zCa{Z4G+3&8ZiCiyb{M;g8ISAWnX3ndaAasnaG;|aZ)_MB117&4FEDbT(0$)Q#AL-T zqTH%LA|?Eln<|B+n=#fUY*zBD0K-n5jlEM3pH&d}4u3s>wQr^A5n;H+R|FkZlJ}!0 z1v%n>mUqeZ4uBp;PC87HJExZ4%E^^i)-rL+uC3Yx6Y23nUhtF2t-}+-pL;X4~bb*$7~S4mM(k zB!i!?X?5v^Wa2!q)3c6f%lHK+VlSp7*;SUDC4yipfVTYlh6-gP*~T10ivgG3$GE{4 ztI6P7PR@*iV3Dcp>E_~&I+dYpADVr~FpmVOG2aT+Hx(@<>+ordCI z!v&4+z86aZF2bYn8|pq>$$0{Q&Y=FKpEaIXYP7hau?%jT;-&I{kCU`wNlh|}Sm(LxV<*?adz_oO;>$A!ST=Z-bzU)#6tRBAmoDUqqY7 z8?j>#5fds&Tea~pQNl8W$do-E27)AmOWUD$Avw|w-}Y2rVE0~_zBaJ?uh;s2`vd+T zWM2QzKTn^2Sa#$e`~Lq(`~^h(j|&CB41I_8z`Z;39~Lx!N>oaS_g+%ZSLzMBeSZB1 z#a%(&5Lh@b_oTl7(U0ib^4~9dd{6!ZNAE>-47=sO`;D*h^6AVPRcdAbrU(=LCHh6> ziPlU`W$M-A-|E~GTmYRZw4CKWCAvfVgXjG6^&d|Dw9FA+JD%b7Zko!s z`_FjNVC@72+nM|?Od%i59x(O|*<`!oWVb&Q5si@3`2Q|&O%K6>mj=Gwe3CcLiFy;N zry22ereXI4CyvRD=>v+P69aytL#3K5;<>_;xFD9FKSZjiNgHdN_PZ`zIG&qJpGy<6 zKyVu`(r0OG$}~l~=Oh5oNGx16e0K)X>%T3MFwy_plRxM)`7euue*xS{uSUykH^Epk z8YGA%yVQnbyuop@E^lMh;UpIeAs8{|u2l_o+GmXP$Jmo5dJ>JDc?cl>2y8&YN_7B{ zJga`=Qff1}#(h5g078CEo}ln~GnfFwr{B&5PYXTFVEX|ZCC|E!2A-Z&fs~@vOAwo0@fV3BENmA*1zwu zsj8%?ESOW0M&Rj0prJJovgSX?zr%w(FFreC6Vr$(5tQS>@weHZyAe`0=t-VofN(yT z`h*Ki^1gD_f=+xfZb#9fk}`^_(m=2>yoWj*>pcy>BW*Osg3q>2iKR^y=hS^V@oO%O})^LxdYx; zL8FZXP}n@A3mJ+WI4BMl7ZNf{N|28?3frN``p4KrZ-`F5wOf4Ya-X4RNW~eCJ{-C= z_2v@J%2!bSKcL|)ZyGLg%f{tk)6Yj&DZE0pOi9YlDre`b57;f8dnD2QCDf`(;=`nn zrL5%6oGZW&zx!?JZeo8KXKLYiV%HLU=^9;R#|Q-mf}TrU=#~twdSE7O+6tog6knvT zX6JWbbXZHK#Y0Hf*{at)em&331bjFC3uq4*Ckb47!EsIZ12fkHNQ{tnr*e4h)|x)v z)|W_19?F>QJx9X2Qo(|^0pmiwQ?RZltAha*Lfxby5|LQZZ?TjRgZ0*;ne&_^R~^$P zrb;Y>(u&*{yvWptDkaKjJ*AC9l0PCUM%?ZH%z!*HB9u}Y4n{UkWU2}Bq9k7yus?_X z-06%G-G>dNck2b>dXm+x?&Gk?a(aCND*aOOrb+|cbt4lK^$A`UD!I^~$W00g(UmJZ zCE`=i3gL@&#E3NGnvc`?d5c`jr<9%HX z^N2u!2Q`GK7t^tEb&Ma?i<}7Nk)x>j>T$Wz=CJke7i+jFK~ZG_zfJ=fH(r_k&`rfR zL1TgL-i~dXgq-GhpI#uWc+p>8215~b8K(AZX4@ zLOF3gE;YqaFnICR8M=hT~%G>VhnG%8YZhJVoZhqZjkd#gKyTXbyANwIVm;LQQ( zpFekK)#Fx3+!i+;?;1t+)c$=d5?w4M7G`&Y0@ZRHVQ?*Z={|B~ zT^K7aDy2!A`RwUH+w%8fq@=~wU3i`-S+J{V3o$a%zTf>7O*WZm}Xwq_-<4n65;b5biTMMwU+ffciDNjO)#-@6&j@DP*?veHYO41c|JJWK{O zsF;qx%-P3AH$A@>i~sUiF4y!XWE?>S5Td< zCC8C_$4}=h^$|dwwyEr8A&KS0jKEk(TFC#wIN=im+Um!NoXk5)B2q#z!ib1#YfzJU z?cp49(UG>)w-TD9qXV;4y5yF=tf1V`TAh&Ap(!{%N6-R33DJX!d?N@0HAvkFj_g*R ztv^BVeEzhU(+16nD=fk2J2Qwss;^DQc$cU@WWBnJFw0L3hOqQ9l-G!>stZ=pF(n+p zS$z}$P-86E5fkW{d|P!Y@P+NvM&xo-*&iMky;Ah(R=1Al7G>d(Zx$j4%y(BGI6z`D zx%yeVsRleRMrTcK%|Sn|L6(-@xF&s zXdei`4_|TGMgTs>#RKB^ySEWZM;vc47>N`#IHV1%0mTP3-w?;ZQ#lu=VPy2u4ZP+edY2bF;Ib*A*Q8rzR9n21c8q> z_mfr`1#|gBszKku$X^AR-Lu+{L^9>j2E*Sc8l8~gQQNtSV6qFAg|&{kvUiLC_zE|X zahn~64z2@ypQbtr<5QiBkbJENpVtzWlB>RCFI&yD#^OP%?IjSbbBgXiMpA~)R@?_tC?x)IUOGF_tkfp_j~!E(H|=+UmeGy7<{TJo){v z5}+6->?<*ZLBrX{AK!=r;SGrOsj+$S5=#}6(g}-m^tu;tAP&{+9Vt9=HLFb76)C|G zyK@BGO4QWSND7Yr$E#O-n69)PI72%T@s0Y{|JVLXCVQ)qgWadU09=F5L>6;{PceHU z;7=1-eR_Eb9ULeb;d5kp_j6Cc)hV889)PCvBPfKCNukn+UMZrpJm^T$hi2u%`6sc7 zh84WcE;b5do~y}GIW~Scc7?#mY0N-qB}9TDMz2dk!ZOA~nu4*NS=LbDkNVM4ss0v?NjOJHni{ z=L5^Y6D&CYPW9d*CrL3BkN_s?=2CMti&dXLuGH7KeJFtya?3|&_#rK}w%|Fr5R_xZ zgj(@1+q`{pI_6r(oZ{3T*QbvM*TEX(lEY+PX}iG>fi-PJg3&S;O~&qeXDC^-uT4@n z4M9|>Wz@`FQ!eL0*(&F&wc-~%=pY+nRUQ5qaXHoOkv>KPdQ{0$KFFoRCQCWFS`$QN zzrSDCYGM<6UP}rNP;aJk8X`Eh%qnGVWqi%278Ht@)s41)D61MIN6F9j?Ygp!!`c`{ z?LD-zeazWE0wvUzWB2*~>Wvwpwk%^AqCUiamKt7i3Bs1>7Vm?zniXr?p@_pqu;_(} z8g?}IHkxq^fuq51lciw*=!^Lm@S!|-@9LbF`>aT5T8fVVjN4=}YjvJ}7^6d4w!|#% zyufR&TwQHx<=O52n_UTT992`;R24U81>Lhu{uTta3(H3GiMQzxqF64PC0P#s+&tHC z7GU_8!?vG^n)%7e##yT6n4b7$+(ny1{1BqYi-0TX+*edBAx;SZynW~uc^b>#Yqm|~ z;di>X{1Z||vb00|NjB9BNsXlk|Eh}IKM-0oMAry2MJI2;eP(E8}sCAKSAvukW7GR5M#*_x^)m{Y#DJe%DU$52cNY^p*{Ey zBwsLjrpZK4B{|H=Yoin1BV)UwZ@lkg?lRZM#TLt#ms|tq zr1zcAX6XPc=brJ1igVrQ@svGca_0o1yFh`UFdR?SYsE8*luZOibU~-Xz`&+DP)5A4 zF-nb>powWOvhpNM33$tGWJ71c+O9hkk)1}p-ihQ}XP>ePZ%Y3Q^M|qBs**L3jcz0P z>!75aNdNQUfGoRDp&K(S+)8tXk8()yEsfN+g|DI)Mh#lBC$|F8VZWyuAop-PA)m+2 z6VoujsPFv>rxN5+NY$0A?{fc|J-4)D5GY zCG|es5+K$(msT2&4mds&0$(-0G-^(#)ad5{TV7N-_ej-clrD*@b>4amJ?_>qVt_Gribv1u( zfvRH1Hg?qJX=y2Zec=t5xAqKZ@603lW7&<*}=~7^*aycKs${?M$sK{AG1C-GuY*DS2SH@ zr&$Tn1zpj!Qd`K5z%hc-Yeay8{y|~k=M+j<&%fmx(%j^Y5!;RWRr{x6;K6^7|BXiEW^grVUDtH zs57e2hc$OlBSNfvE@Rw^hWx>4HA5a1Ic$&~SQE3KPREwmx{9k-Bi~yW;v^vgmWcP` zc%pWBhX{c2v4Xd{22c@m zjftP3x(S*j(C=cD9B}%?RG+2Lld#o4=Y2D2q0Ro#;WBKUDi;oH7I$Szm6Ys$rVju7 zb>6I#2>wWgpt4v!*E9S@6!(C5H7Nn(ftz;9n2n5`5Klam%DD1@>x3txskvl9%uV$p zu<(m?5f&VFij;>o^?STR^CE;vlzk2A3Af$kLmrYQ$*3bBrD+V?h2TW;V_9Rp`-T^4 zWV8Q3H-1JW&0Nm2i7^6W2y5JGu09*rFc%g&AHt%{cS+=8@Oy#_#FLqT+d1J~Bi_!N z5t;a!f|#Onic^caNrqZ;KHxf+?n@?0JDEmgAm6PgXIdtkq@=rGoBawuyeyVDV@5}8 zN7*!d?yr&-$N2p`1@v&yiQ~zwjhPcHKLoK_pYzNgclE`RN9f^0R*qyAf!4v7a#U@~ zV(en6Am=It`{f=ge8X?-jdF|a`AJ_Y3DS)lhOk(-T{w%pJyDtDI;}NV^@wpl1uc6N zPJD(t#f=HE;3{8p8^=Y9W{cHtGK*XeVK8atM3VYE^ks-wvq+!hxDDOJruuDz@usCC z89I*zbZi}1zbmN0}ef_cozxaLZI%N>qliWcpXCE6dXd(05hg&LFtGg#jO4U zgqm#ig{dFvD^o$8Oi&V21=1VV_8{y!Rx2tJgz&LaEc=umIm1+fA z)v#i}$F3p~KZuL~WG*FKiYi8tLRn-!4{qNG2Ww=Gv&lLtepk`y7`Kt8(un#1R3iI0 zP9ayria(}L7GhsvgSFTQZ`LbG=0a#L)v6TH2m_SZjJ^K>Y z1#O2Ci%^3>_+tcwTwDSBU=)CX8(M%ty&P2fHW?)er`-_qAKs2>k5Ao*aStZnu<=@p&UID^4Zz`zZyT>KjJ%RbLFJlI!}ByE z)}Z4pA3Z~U0lHCr>h{8KbpGr>)yjkFTz-vxtjw0*MAstPs4g2{5Hj zSzP0I8NRhiQWRQBjPU?N5u+IuR(1ATc&y|*WWcJz{243m_Et%qYUx8>}7jb|JCG;LoTn@j2pe3x!fNt%vb24bwxBo4dg0{0aq6 z>Nh zTPwxuHMC;GqlUQ}IGGS03JoHxV{kLA8-U^pcTUE5g#s?wCq&>EP7TV4!g!v&eA{I} zGF+%4SAqlizAT$6mef%xs*?aByo;@BqnnHOIr@Nwmyt>LCkJKxma%fc`!Ew(0z4u@ z@%}Q@BDh~x2UscC_@+@=wHnQeddx^k52lr<^d$-^h<)xR-k5r>tF@qbo_&J_Ol4Hc zHySAASk|3mU(n*CWCNYm-s(F z*Z7$_N4D8M&wTZ;9l)k)24keP5#Z|Rh|N@5tkoGeW?&TECZv8m<0DUfuh9u@RWpY|RjibD!#{AOYjvZ{A{PpqK69pH%gcfyJ?Nlg6-*;Zp(M~`;@HH` zLsmp2bABy-A0bK!SPmnZc~)OQZ=gWD){_A0k^W-Y`gz5=41R4Jw^5}K9ThtP=iT_= zg2EzPwVSYUiDL7r5_@=+&N4YWd8;y=6RzqkyFY$$@A(njECGmO)cO@agdss_rPb9m z=I?bP>0Z7OR2px}Ol?emaBhrf=P?Nj*|$1UdHn$aFkXe3&sh>N7l&xVp^MoDYgH|y zPUHgUt>kkRd z%_`-EXt7QimWwY<|5~yZj&)a!(HuCwCU%p9bC-7IFs{w2 zc&umj?ZOtT6lo-eRbO44^l$KBUmkoTl^d3ns;Ww-h%7JiOF&H68(O~C^Js^V$q_;>)6RLu5b zGeFyUaXP6Kv(#sQTb_~4D@e7?9KAarOMJ=OL%_DY$WW*jqIkhy-zXO6do<1G;=kHQ zaKwn4j0=?y4!BJG3s_X7N=I;WS8ngZ$3+>LWoAUd?RB?%laPNUOs-dy0HniC(DAa8 zu>w0R6X#ZJs=*Cd8H;x|dJsZ};X2XII}4lX|6Eix=>*VD&LgZ?OIKjv(ROg5L@cEc zTQ^T#15Dk3YC$2Vgsxx*(7iB;Zz7h(tdcL1VF9Z@_R4N8* zY^%2B=dY$47#I?epbe*m`aCtiA5Z8?-ZU%&Su1*b72ayE#?-+}6yb}HtYU)-0a^;C zhQqY7e0gQesM$`Bn0QH0pE^`u)HW4ns(m(g^r7=o zJpZV_v=*IYANSyVC z0-+f80eqOU;1XU-!~#PF0IN8G(g4S|H)CQ&GDiuVe1HjRM#Rb%)!XYc%W0gx38Ew= zUh@U3IiDtl_3E|-Xvg*#fE=7_%xT?|2A7>P5s~yS?6(_XUU0>c-|Q_==$85d$;hppahYk`??A zR&T}})Kd019Qq_xbfdoQX(28oI%n}zF;E=H2OZbFAG;yAbm7i78@$FxjOE#yD>{{R z`GGixsrF+MnpIFGO8Md&epFB5lG(Dfko^hE&$e{z+rtEMHNq_^r}V?MQrU{ezv&kgKpP>hQ3VaKh~aGw z1GAuPaG~lgeG>N1aiT9^(4-QCYaAtM4k8iqT^qSO)>QU{2cfhM8~DIV1(J}&c&x}u zpp`(dg;&h&@JU%9jc;Szp>HfDVcRpt^0Gl9sz>nE)Q#R!bhMzzS2MR_S;clhR@}jm zvi0(3z8<(Bynxa@T0t98?`S?lcPqimid0maiv1_G*E7bGRz1E9k)D7*s*3pgB9{Z07zQXxmaevV2s7HtGIjeg?<7BPi>NBh^ z`Bx9+bffXL5xmTeqfl*lOC&cgsi^t;R7jw-TcSwu;NR#G%j{m{;8Im)hv!(G3R{G6l5^ z_Cu4x2CM5p2uwn)i1F5f2V`sXfIdd#GQ*A|am-JZ8x6zwCkxb3Ve^E!ry5nmv@10y z)t59@IUeZN8}RAVDNtg-B6li(=lM#Di4JXjPdI(niF)F z$x?jPmaMe#6Bx+IK!vf|Pen506QlrIdg0qTbqcy7v*ia=+&EDLoK0f7WAIfztnt72gRwE-Vc^6jq30(zi;ckTY^Fa1%3It0XZcG z=n57f{I83E<}bzT`kZFn{6Y&Ht#P|GDtOEE^Rd+`Hah7ft0DA1#Dv#7DjD&pN6y&v z8tev@*_f$XerMAf|K8whBEQUA7=qNkq0r)=oBr93mnMa;jy=`j{TmDl+7mpEatmHm zFXI>9bVS-q1IHKu@Y9@E3tLi#T5;0Q}IOoKINSdMWnTs8_G<0yd%0@Xp8 zt5io>U}1q`aCb5C>%Mo*7DyEV^J@xo8cRdm7fS-jWsQAH#2tN>~1 zpoTb|Qj0&_Z@;IcqklFvzZ`uIie^A5TvH(xWpw*M=N~NL&B0eK@JVtv%cRStvceg0 z_eboFgHKwD&sO{u$I+eG9hB<_iFy+CCidS9*`5Gw>S0@V8pu@U| z`YA~(WDZ6TS1Q^)ih%I{R9O{=v*rzfV_bi0#wuloPh!g^tP?w7XAZzNv9bS=3}Ade zz``hc3zP_QU?ZdtS0lP?!@!yUWtw#{GQl1djKFKsj@l5(ADI?xc>6G?Dup;jhq^z^ zQaIs3fF23u${RMBkHA_}v9fAcdcy>0V1WKm`L0VH%gmuO`mrOJU|QQdX!tmv4387!UHSb-_D`)M?nj%@knoW^(@(rg8_f8O)7J39fWEpx)W^;EOb3QQmBD8 zK$C;oAb%g}f}x9tDoI9+#cR(O^CNMZAJE`YBt~Z(FdNrNnH{Vb9r2dEebe2I82u^1XE*KkPg&bZP}X%;xo^m1F%vF0WZuI;Ec*`Er1kC3TVy24Hs z*ja=HzU8kN(x3U|5k=9V?oFje1;SrTzr6PB%Hk)ySp(v+%z0MgD0eet5yR|N6)-Ir zDJBnyqxmLG@jHG?VbWN9n-#%=7<@hA@34qnnowkiCMfYN&84CP1W94V^g|k5uY#Cz@{CExkJ@7svfI zyc3`KvTf?)U$ntE9l-HT{4bsK7Rc@m29YySOX4jGInUMTd3V<@ZAc_SLp|{8 zL#QQPr1IX~tvc)zKw4y0|`Zjl)+&_A#I2^xEBiCxW6Kc;zpy-DA~ z)03vciqX?-Z-TobLiSjMH$_}$x9nD(o%0=*H+;HTm}>qPzz@I#rqhjxXlI}8udI0Z z1SrR0F9n@ltkmdKjAeaeG^s2O7El?sqdnBkR)HRbu4+7v87#!WVqOm|ZAeM+M5*&r z)29h-!_-kPPIS_$l$_LLj@6fsVwnTmrTr;P_x89dRt6@FZd7BJ9h$FKC@@pFV`;IE zi?5^Rfwn_Pnd%2>HEPI7aC}2T%fJ{A#sB83BOJs(oGM3Paq0>R#HSEcD6`VVwe`m8 zB(#_fxE-1AUvA}jn9}Oxdol2EGSa$98hB*F8f(QL;^7j;p=~yFz5qQ=MwF|GP`zbr z76X$dw&dqk;;9@ zUd{*mkI4M;e&M`jVr#wZbI!wPrQ}3G>ZjHBNrYwk+BPzCkOX*D;}#_hnw+NVs;NhF z4D>z6G|@K(HJNE=#P1@wtlx`}rrO^m7ocQUqfhV7eTHhd&b)8ZT=AQsAvpoSl0 z@&RIEi~1EXA`H#_K^tKWPZL59M!MmqKXI=Btb_s+zUNxgFWDI`VE|hIIxV!=p_63g z#8O2M>YClD#2RIW_2*ag?{p^!WV2vU2%ISEIRZXh>%Io&Bm6OC_AZ*RvTa`{S1_%+~MM3az&;(sDnE zXg6RQ2io*si(A{G>7|TZYE26R9D*o7s|Jl1m5H0Wa*Byt=_rtvxSozdF#>@5ME1e@ z<|GTjo7TM-;o_iBMuQO}6J`!h&R&OQbQynhHxZrX67F2%A6;Lj<4c!ghO<1fF=_sp zRwxnW{2n9H9RES?ho(W*N#dxn7!R5G2wMcq#XjWgG!Q2>5^T^<11WWP5++uFVsiYU z3BZWMRpKnUFU*riYAL3x0sB?!#SlU4n4Iy}l44)0oF?GKMQqBkd|entY|~$woq~I| ziRIl2=Myn+v%xe?jm1*F)cFn8eY$8#8y7*B1I;~y95GIK0>1AwE7#*>0c> zIZNQKQN6bLbZYKeK(#(!W?Aj&&{ zg?+J|D3wPICo|5Ih@H%IUp;0Z`9+je9A(rS0R~epnbzYvoI(>bWwye@)!ZmYW4%E_ zF#<$jC9$2@8Qb0_6ZiXck%|87vl-06DZMifjPG@5S?o;0MZ`Rt_9^>?{B#3exWL@{ zdfb7z&kEQW3yjXX>)J2e?W#c$qEgtbtE1XP&&*He)GZJMDAo_N)Wp<2A!~gsSLs{r z19sOhezWk`a9c}HNBkpDJ=zVCrt)Iwu?z-P8m#`RW?yRDju1QcZ$P=>)f-V{{52=YeFU1N`MQR3xZ?ghK5qF3rd3dN-S+yoYih&`! zGUpS-g>p)PLS!&6{~A=OXo@I5mxK%Nj?QvI%kp;O6x}-XQhI_{l&`nDW|+p&Pg5$B z2HpZ_#m4&`ZiS<5FF);DR0s3yYhp+Qzu0A06I|K=G#%e*mnO$p!Q?Pt7|jp}6`Eh` zk^f4)Mla#Y4k9XOIphc&ptXua9tA9eJc1MMAPt-GWn~u9%PLuJrLTy(3*9S?9`RvJ(gboPMh#bk z{YA>N;8MffMmkbB;0=H2PMQUD%I2{r`mTt!y1%9etzD`ba^Ob9TBxGU*(@vn_z7Ogk69z3P9}!9!@NCE#rh>M5jRbN_yFE+1hdTb$ zFT&qve7+0t&R}F{h0Q57_yKt%2za1RDfQkk_B!^0>$R@AFa5E9_oP+)V)|f~c{9BR z+oV99lX>2X&Df8|$J)*kU`<+1awBY0q=L%B(BRm9~;HTaFM}9GC_|y$-Dx{*q>=;zD5bFz34eQ@+?@>DN<&nNys#pHh%<;NiIVSWH0 zWX=^6yEfqR?zl;^5w~?|hTc1*V4jTLE@Jg;tOs@<(vwlf8@@J(zQ|eCD5U=5yHICuuH~KM1?$XuJt}eR$C~-9#{{TURn3A zS#A%-O_mFIl-=khu^BiW;z%d*n+$} zb|>h6VsLlf6mi$T@;J~U^8)70E%zuMm7IlBk@7~&`|4dOEleb34fqa&h!EhZXVru+ zxtl!eS!jyO=$%2_2-7_=u_;0P>p9jmN&@|m%f2bKjGhC7!%lYjqx9;^euwnHF{zJ? zv9z?vY1YUIx3uWy?I~Xy#dl#jQL`Sr5+)SF&0$c<*Irhwf6vOkEBTXGG`jcOBswWp z<)%cB{63yx$y%>!Q%m=oGE@+txAEw8H2)ETN${^=!b{iJ?pgUFEQUL*Dt}DseUXvL z={-PcedM9=;H1|_7fx>YJ1rM-A?4ecgc5b%u(pY7D0!F;u^3nq%B3BC{ltHx;c2;2 z*jC2x_eawUiT?u_syU;881C%yiFK;;>H!LAX+2D?hm5dgYk0*99G%nli+O|9Ib>=F zrTga=3!Ne}9fB$HWEU5gby;=0fw_(o*pC>n>`Ij0AZ4cRMp!y-U{sM`2kZ=P+CWeM zPKyzg(U#JbvkWQt_`2mD%a}MU6CyzddDfRjZ7jsB^qQ%=hFQw}o8`lnck*4VeuYSk` zJ2%cuExWnI6#scBC>}!O85nM-2nq}>@=Cr5Ux4sp0G3Ri34!3| zVqLrJ6|9gNJg!pr0q=MpjzhSxZ?|Qn5Y+D?QYM z85B%eYX?(3mcce66BWw6lo-Y1P?hgl74vB~s@nyq1l+_jEq#>y-qP0zL}rcqq-24H!soS5K#pKU-zM2Hskrd;%PNMuZ*7lCh9~_X7 z&%Xq^h|i*EiPH{r&B2v2NBf zC8lBP_bdC23Oz__gsBcu%VWE!+VWfCs|}i)4BvoW?gpY%RrGmZMx}vb#^`?r6ivau zL;2v?&#S}EijHCgX7X0y(aN%nkF>;f4ciuL0*WT>x;JWR>-S;o-ZbrT!O*gJKLdF+ z2~_)|(2r)uGaWP{7$8B5HB|v7~>L$yc7&Rn9a>2=7u0>mo>v89Sx)XkFVZ!$V|@8&3P8Eq#Nd|-*7k! z86P*yA|C%1;8sKq47~sFj6)khT$LbcM!UXr1;RY;M^L{#+W`{hbLyn>vdjt1RIKV{ zh#=gEG~B>|Ux+#saMDDsx;OQpH!*b^MCuvVc4o7CZj_JQ9-@;Yi?tTEmA<3Cw)JFesW{gZneI zn%QW^O0y;FN@?aG%ERkqOgmqB)Bo_b>+{F6xjr$^eDj*_lO^iN6*4GUvcp!VN}^Y`(YOa{*p@qwf_!@Vi>w!1qAPRWcu*4x4{7p} z8ln=6t^6nNVp+IRx@rp) z#fSG+vwk!0H6tJ^*Jh}$j~JSw3{>xsqC?1bk@Ku)KxEvm(vjfIpKCq?p-Se!kA|Dm zR`Hxm0-sj{u2hJ%;yRn-yz2{~d&bOPQ^!u5W5>P3>_;9+Er02Lgyyhi(!RtFQt|j{ zl;{^ly92_N=Ay)M2758T?{EDqC18;f{O{`^=L zdi`K2zKnT;4!yVytf)M8U{#!tj>Xu#daTX2l;scSCQ~>Lx})6{1k?idWavWR7qfpQo2tv4=5T3UP^EX+^tyJcDu&2GPb@U zi_O{M2A15i+p3y^>N0PeJmGV}cjG%Q*u0AJ0c-x`h}%X(Ph3(%7VIOG?ZPH|Hew}H znR%&<7P+wurAkwo^OUR-8x#z6T)BM2EPn-CGLc@xM;S6rNb5V&UsV5c?!7tCzJ@kr zGa8-96w%L@bNZKw1WO0T71EABick~%JHYs~fT6`d_+Ja$!}%b9@i$ZL<<);tYr4GH zAEt{9-p}3~`}A1I^dA8JH{X9*nEH>^s{i98EFV%z@$K?2pXPWJZz12W&_53_(jjIw>F?#U|CT zeZeKKNL{B-G5`)NKg>#SH^ynvr2^>L_1-CMghJY-eEY^z%y>7vPI58K4my`Hl1OuEHsBGv1aY{>Fj5>wg z2_yYzoGtHA?FKY545q_n74P4BghFA1eTt}4AKFur&0D_~eQqbS|Hzf4lKWkHO0E$W zMB+M!9NZ*};(sf1Z}%sPd|)nkZkPmNSupmMzfMDqUD&72=qG2da8&x!F%urxAzoel z%v3-%)FBom+g_U7(tblC)e(1I*lSR;J_lttWT@2x-*qOgP0^`b5k5dztyP5p0| zgWtD)hV-dzrNKOd`gnXq<4;=Q4$Fh5yR_cnWnO_gLE%d4qwe#v(u)w-Nn8;OrnhQB zt~)X`RuT2hc1`kx>cCd(HFRI>c0$3bmO2JhC5&br1{kVVb^hzo2(V=* z0uHCXPBv3APqYA*7peg2Ofj=RtW*PHfI=5EY8yKqWBg__PZ$d~fZfoI&2m;+tq;NR zNLIBArJGjsCS^(frze@E36ukbr5)^#2}hxGI(R)lx@S>D=ud-puQVgJ#4Btuf&bgQgrOWniXJ(hpZf6!Hsy@W(g59lRAb zE3{5$7;519TN!a58LcI}w$1lTl~eUE&B07K!=58!^!t*cF^D|Q5(OId?({v)r(N3AV2H%dT`o{c8#cN;RdsHlqkGiVscBz!zk$yTzF-2D4k(}H0 zNOqU~ppyWVKB}#QP|7eU-hIL^4`I$8R0hKy>c0b^hO%4pTY_c5rWNxa7DfY9Sau`q z^NOoAd*ULVi^U43`fADt_?fV9WtFsCkvvaUwAe*BoZW{pYFK?fAF&Be-Cl=yD?4iX z$1eyzZ(GH~Qsm#gc@Fpk(7anF4jwVxyP0#9RHpt;WbAfg=RF<7h&Fo6Im1DZih!@& zgKHC`qlvyqbDA)XgI951Z*io2#NYFCvc_R8`<}^Y49pEszdXy^)6zILAg+2(+m16F zmqmO!Pkmy!Z;Zb$KK@f_tzAKuX)Ew#`D*#H`p@`PfO5U80*?mH^KNrQaI{(9AJw#& z;aJUh_Q=*M&Pb%Jpv;1e467^GZ1w^(ye4q^H_N-%%Bm?0?X@QRN=E5p-xgUI0Mul< zm75U%0VLAv3!8WN_>&)>nS+zed_~b=>@XQg6Ex*}uT_afYU`|U>QPOHD7zbien)Y# zfJQ(~cj3~q!bc@2VqyfIS2wjCC~XK%eBN0UBT1fTe$MhSC9-1{(sAvn%tp7NPZtxa92`{XFw+)-BAjK?`!CSq=Dx{n#y6 z^0~8#x&*?q+)t-b#x_nbGQ})9n9GU2Aap3Girm2G(qS|6SQ2+i5?S&6y6crm>Q=X z>(W*M_fQRwe()`tqgmQgR8lM7+%P1qqpF@*^aWk>@F=>1y;jGMo>~CJ-P3Txa|eCQ zPm@5+Mw&{$Ye*$ll@mAHB1GH_(!LPb`vu2+T3?PP@(@SRlyjYS6sa&HHca?@#c3R|x-Qj;cKg;H6e9`Sa+I`Q@?jcTuy8 zKmWOjM@oxc$8peqel7Vbb>|fL5UlzBA$@zFtW#W=(^KZE9mE2j$9@h)cyeeRiOfPQ|4?djYP zHOvBlQyhZoZRzk=2Xr-l<+Q%6z{hQoJbU5m7DB@w%lX_^F^QPP7(aBtm?`PLXXk0S z5#rArT!Wvpv*+$r^Zxd`ni>s3EfB*O&0$p#PjG{>SX`e>*u`1Fd`YdghRg zEwFD=!h`E}6>(r8>#qXgv__%)B~IJoGcAQ{C2a!PG*tP@k!loLKOBE?yR;YHtMG97 z73JPK`pWi!CejW6#7Q~;8gRvL9{4sA zw&XO43{x3Nz>FlZSpnkUBgHRyUM08-9QRh3X?`f;@zw+AU>&`t))gsM^w{9s(_`Z| ze1XTWH-&Dn4H*cV3q)(U^AURqoM3wPCS}|Nm+rt}<0P(@FGuUedX6TBdQ~SEK%(~{i6a}`c}$0*_4I)i z$CE7|+6b3K=#3sdkETPrH}Q%N_b#gPVk2s9e}0Q#ypMG`4rlxliqe35au9L31n%q4> + * + * Heavily modified for Frost + * Zach P + */ + + +/* generals */ +body { + font-family: helvetica,arial,freesans,clean,sans-serif; + font-size: 12px; +/* line-height: 24px;*/ + background-color: #ffffff; + background-image: url(head.jpg); + background-repeat: repeat-x; + color: #505050; + margin: 0px; +} + +div.container { + display: block; + width: 785 px; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; +} + +a, a:visited, a:link { color: #3465a4; text-decoration: none; } +a:hover {text-decoration: underline; } + +input { + border: 1px solid #666666; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + padding: 3px; +} + +img { border :0px; } + +#id_openid_url, .openid input { + background: url(login-bg.gif) no-repeat; + background-position: 0 50%; + padding-left: 18px; +} +.openid:hover { + +} + +#id_openid_url { + width: 384px; +} + +code { + font-family: Courier, monospace; + white-space: pre; + display: block; + overflow: auto; + border: 1px solid #444; + background: #EEE; + color: #444; + padding: 10px; + margin-top: 20px; +} + +blockquote { + background-color: #f4f8f9; + border-left: 4px solid #dae4ee; + padding: 0.4em; +} + +.icollapse-wrapper, .ccollapse-wrapper { + border: 1px solid #CCC; + padding: 5px; +} + +.hide-comments-outer { + margin-left: 0px; + font-weight: 700; + opacity: 0.4; +} +.hide-comments-outer:hover { + opacity: 1.0; +} +.hide-comments { + margin-left: 5px; +} + +#panel { + background-color: ivory; + position: absolute; + z-index: 2; + width: 30%; + padding: 25px; + border: 1px solid #444; +} + +.heart { + color: #FF0000; + font-size: 100%; + margin-right: 5px; +} + + + +/* nav */ +nav { + height: 94px; + width: 1100px; + display: block; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; +} +nav #site-location { + color: #888a85; + font-size: 0.8em; + position: absolute; +} + +.error-message { + color: #FF0000; + font-size: 1.1em; + border: 1px solid #FF8888; + background-color: #FFEEEE; + padding: 10px; +} + +.info-message { + color: #204a87; + font-size: 1.1em; + border: 1px solid #3465a4; + background-color: #d7e3f1; + padding: 10px; +} + + +nav #banner { + display: block; + margin-top: 14px; + position: absolute; +} +nav #banner #logo-text a { + font-size: 40px; + font-weight: bold; + margin-left: 3px; + color: #000000; + +} +nav #banner #logo-text a:hover { text-decoration: none; } + + +/* ZP REMOVE? nav-commlink */ +.nav-commlink, .nav-login-link { + display: block; + height: 15px; + margin-top: 67px; + margin-right: 2px; + /*padding: 6px 10px;*/ + padding: 6px 3px; + float: left; + bottom: 140px; + border: 1px solid #babdb6; + border-bottom: 0px; + background-color: #aec0d3; + color: #565854; + -moz-border-radius: 3px 3px 0px 0px; + -webkit-border-radius: 3px 3px 0px 0px; + border-radius: 3px 3px 0px 0px; +} + +.nav-commlink.selected { + background-color: #ffffff; + border-bottom: 1px solid #ffffff; + color: #000000 !important; + margin-top: 64px; + padding-top: 6px; + padding-bottom: 8px; +} + +.nav-ajax-left.show { + position: absolute; + font-size: 0.8em; + top: 25px; + right: 5px; + padding: 1px 2px; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + background-color: gold !important; +} + + + +nav #nav-link-wrapper .nav-link { + /*border-right: 1px solid #babdb6;*/ +} + +nav .nav-link img { + margin-top: 24px; + margin-bottom: 0.2em; + margin-right: 1em; + margin-left: 1em; + background-color: transparent !important; +} + +.nav-button-container { + float: right; + position: relative; +} + +.nav-button-container .nav-ajax-left { +} + +.nav-menu-list { + text-align: center; + line-height: 18px; + + border-left: 1px solid #AAAAAA;/*#444444;*/ + border-right: 1px solid #AAAAAA; + border-top: 1px solid #AAAAAA; + border-bottom: 1px solid #AAAAAA; + + -moz-box-shadow: 3px 3px 5px #555; + -webkit-box-shadow: 3px 3px 5px #555; + box-shadow: 3px 3px 5px #555; + + background: #FFFFFF; + + display: none; + list-style: none; + + width: 10em; + position: absolute; + margin: 0px; + right: -33px; + padding: 1em 0px; + + z-index: 10000; +} + + + +div.main-container { + width: 1180px; + margin: 0px auto; + display: block; + position: relative; +} + +/*div.main-content-loading { + position: absolute; + top: 200px; + left: 50%; + display: none; +}*/ + + +/* aside */ +aside { + display: block; + min-height: 112px; + + width: 250px; + + padding: 1em; + margin: 1em 0px 0px 0px; + + position: absolute; + +/* float:left;*/ +} + +#dfrn-request-link { + display: block; + color: #FFFFFF; + -webkit-border-radius: 5px ; + -moz-border-radius: 5px; + border-radius: 5px; + padding: 5px; + font-weight: bold; + background: #3465a4 url('friendika-16.png') no-repeat 95% center; +} +#wallmessage-link { + display: block; + color: #FFFFFF; + -webkit-border-radius: 5px ; + -moz-border-radius: 5px; + border-radius: 5px; + padding: 5px; + font-weight: bold; + background-color: #3465a4; +} + +/* section */ +div.section-wrapper { + width: 565px; + + margin-left: auto; + margin-right: auto; + + padding-right:2em; + + display: block; + + background-color: #ffffff; + background-image: url(border.jpg); + background-position: top right; + background-repeat: no-repeat; +} + +section { + margin: 0px 0px 0px 0px; + + width: 100%; + + padding-left: 1em; + padding-right: 1em; + padding-top: 1em; + + background-image: url(border.jpg); + background-position: top left; + background-repeat: no-repeat; + + min-height: 112px; + border-top: 1px solid #babdb6; +} + +.tabs { + height: 27px; + background-image: url(head.jpg); + background-repeat: repeat-x; + background-position: 0px -20px; + border-bottom: 1px solid #babdb6; + padding:0px; +} +.tabs li { margin: 0px; list-style: none; } +.tab { + display:block; + float:left; + padding: 0.4em; + /*margin-right: 1em;*/ + margin-right: 3px ; +} +.tab.active { + font-weight: bold; + +} + + +/* footer */ +footer { + display: none; + +} + +.birthday-today, .event-today { + font-weight: bold; +} +/* +div.wall-item-content-wrapper.shiny { + background-image: url('shiny.png'); + background-position: -5px 30px; + background-repeat:no-repeat; +}*/ + +.preview { + background: #FFFFC8; +} + +#theme-preview { + margin: 15px 0 15px 150px; +} + +/* from default */ +#jot-perms-icon, +#profile-location, +#profile-nolocation, +#profile-youtube, +#profile-video, +#profile-audio, +#profile-link, +#profile-title, +#wall-image-upload, +#wall-file-upload, +#profile-upload-wrapper, +#wall-image-upload-div, +#wall-file-upload-div, +.hover, .focus { + cursor: pointer; +} + +#jot-perms-icon { + float: left; +} + +#jot-title, #jot-category { + border: 0px; + margin: 0px; + height: 20px; + width: 530px; + margin-bottom: 5px; + font-weight: bold; + border: 1px solid #ffffff; +} + +#jot-title::-webkit-input-placeholder{font-weight: normal;} +#jot-category::-webkit-input-placeholder{font-weight: normal;} +#jot-title:-moz-placeholder{font-weight: normal;} +#jot-category:-moz-placeholder{font-weight: normal;} + + +#jot-title:hover, +#jot-title:focus, +#jot-category:hover, +#jot-category:focus { + border: 1px solid #cccccc; +} + +.jothidden { display:none; } + + +.fakelink, .fakelink:visited, .fakelink:link { + color: #3465a4; + text-decoration: none; + cursor: pointer; + margin-top: 15px; + margin-bottom: 15px; +} +.lockview { + cursor: pointer; +} + +#group-sidebar { + margin-bottom: 10px; +} + +.group-selected, .nets-selected, .fileas-selected, .categories-selected { + padding: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 1px solid #CCCCCC; + background: #F8F8F8; + font-weight: bold; +} + +.settings-widget .selected { + padding: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 1px solid #CCCCCC; + background: #F8F8F8; + font-weight: bold; +} + +.fakelink:hover { + color: #3465a4; + text-decoration: underline; + cursor: pointer; +} +.smalltext { + font-size: 0.7em; +} +#sysmsg { + /*width: 600px;*/ + margin-bottom: 10px; +} + +#register-fill-ext { + margin-bottom: 25px; +} + +#label-register-name, #label-register-email, #label-register-nickname, #label-register-openid { + float: left; + width: 350px; + margin-top: 10px; +} + +#register-name, #register-email, #register-nickname { + float: left; + margin-top: 10px; + width: 150px; +} + +#register-openid { + float: left; + margin-top: 10px; + width: 130px; +} + +#register-name-end, #register-email-end, #register-nickname-end, #register-submit-end, #register-openid-end { + clear: both; +} + +#register-nickname-desc { + margin-top: 30px; + width: 650px; +} +#register-sitename { + float: left; + margin-top: 10px; +} + +#register-submit-button { + margin-top: 10px; +} + + +#login_standard { + width: 210px; + float: left; +} +#login_openid { + width: 210px; + margin-left: 250px; +} + +#login_standard input, +#login_openid input { + width: 180px; +} + +#login-extra-links { + clear: both; +} + +#register-link, #lost-password-link { + float: left; + font-size: 80%; + margin-right: 15px; +} + +#login-name-end, #login-password-end, #login-extra-end, #login-submit-end { + height: 50px; +} + +#login-submit-button { +/* margin-top: 10px; */ + margin-left: 200px; +} + + +input#dfrn-url { + float: left; + background: url(friendika-16.png) no-repeat; + background-position: 2px center; + font-size: 17px; + padding-left: 21px; + height: 21px; + background-color: #FFFFFF; + color: #000000; + margin-bottom: 20px; +} + +#dfrn-url-label { + float: left; + width: 250px; +} + +#dfrn-request-url-end { + clear: both; +} + +#knowyouyes, #knowyouno { + float: left; +} + +#dfrn-request-knowyou-yes-wrapper, #dfrn-request-knowyou-no-wrapper { + + float: none; +} +#dfrn-request-knowyou-yes-label, #dfrn-request-knowyou-no-label { + float: left; + width: 75px; + margin-left: 50px; + margin-bottom: 7px; +} +#dfrn-request-knowyou-break, #dfrn-request-knowyou-end { + clear: both; + +} + +#dfrn-request-message-wrapper { + margin-bottom: 50px; +} +#dfrn-request-submit-wrapper { + clear: both; + margin-left: 50px; +} + +#dfrn-request-info-wrapper { + margin-left: 50px; +} + + + +#cropimage-wrapper, #cropimage-preview-wrapper { + float: left; + padding: 30px; +} + +#crop-image-form { + margin-top: 30px; + clear: both; +} + +.intro-wrapper { + margin-top: 20px; +} + +.intro-fullname { + font-size: 1.1em; + font-weight: bold; + +} +.intro-desc { + margin-bottom: 20px; + font-weight: bold; +} + +.intro-note { + padding: 10px; +} + +.intro-end { + padding: 30px; +} + +.intro-form { + float: left; +} +.intro-approve-form { + clear: both; +} +.intro-approve-as-friend-end { + clear: both; +} +.intro-submit-approve, .intro-submit-ignore { + margin-right: 20px; +} +.intro-submit-approve { + margin-top: 15px; +} + +.intro-approve-as-friend-label, .intro-approve-as-fan-label { + float: left; + width: 100px; + margin-left: 20px; +} +.intro-approve-as-friend, .intro-approve-as-fan { + float: left; +} +.intro-form-end { + clear: both; +} +.intro-approve-as-friend-desc { + margin-top: 15px; +} +.intro-approve-as-end { + clear: both; + margin-bottom: 10px; +} + +.intro-end { + clear: both; + margin-bottom: 30px; +} +.aprofile dt { + font-weight: bold; +} +#page-profile .title { + font-weight: bold; +} +#profile-vcard-break { + clear: both; +} +#profile-extra-links { + clear: both; + margin-top: 10px; +} + +#profile-extra-links ul { + list-style-type: none; + padding: 0px; +} + + +#profile-extra-links li { + margin-top: 5px; +} + +#profile-edit-links ul { + list-style-type: none; +} + +#profile-edit-links li { + margin-top: 10px; +} +.profile-edit-side-div { + float: right; +} +.profile-edit-side-link { + opacity: 0.3; + filter:alpha(opacity=30); +} +.profile-edit-side-link:hover { + opacity: 1.0; + filter:alpha(opacity=100); +} + +.view-contact-wrapper { + margin-top: 20px; + float: left; + margin-left: 20px; + width: 180px; +} + +.contact-wrapper { + float: left; + width: 150px; + height: 150px; + overflow: auto; +} + +#view-contact-end { + clear: both; +} + + +#viewcontacts { + margin-top: 15px; +} +#profile-edit-default-desc { + color: #FF0000; + border: 1px solid #FF8888; + background-color: #FFEEEE; + padding: 7px; +} + +#profile-edit-clone-link-wrapper { + float: left; + margin-left: 50px; + margin-bottom: 20px; + width: 300px; +} + + +#profile-edit-links-end { + clear: both; + margin-bottom: 15px; +} + +.profile-listing-photo { + border: none; +} + +.profile-edit-submit-wrapper { + margin-top: 20px; + margin-bottom: 20px; +} + +#profile-photo-link-select-wrapper { + margin-top: 2em; +} + +#profile-photo-submit-wrapper { + margin-top: 10px; +} + +#profile-photo-wrapper img { + width:175px; + height:175px; + padding: 12px; +} + +#profile-edit-profile-name-label, +#profile-edit-name-label, +#profile-edit-pdesc-label, +#profile-edit-gender-label, +#profile-edit-dob-label, +#profile-edit-address-label, +#profile-edit-locality-label, +#profile-edit-region-label, +#profile-edit-postal-code-label, +#profile-edit-country-name-label, +#profile-edit-marital-label, +#profile-edit-sexual-label, +#profile-edit-politic-label, +#profile-edit-religion-label, +#profile-edit-pubkeywords-label, +#profile-edit-prvkeywords-label, +#profile-edit-homepage-label, +#profile-edit-hometown-label { + font-weight: 700; + float: left; + width: 175px; +} + +#profile-edit-profile-name, +#profile-edit-name, +#profile-edit-pdesc, +#gender-select, +#profile-edit-dob, +#profile-edit-address, +#profile-edit-locality, +#profile-edit-region, +#profile-edit-postal-code, +#profile-edit-country-name, +#marital-select, +#sexual-select, +#profile-edit-politic, +#profile-edit-religion, +#profile-edit-pubkeywords, +#profile-edit-prvkeywords, +#profile-in-dir-yes, +#profile-in-dir-no, +#profile-in-netdir-yes, +#profile-in-netdir-no, +#hide-wall-yes, +#hide-wall-no, +#hide-friends-yes, +#hide-friends-no { + float: left; + margin-bottom: 20px; +} +#profile-edit-pubkeywords, +#profile-edit-prvkeywords { + margin-bottom: 5px; +} +#settings-normal, +#settings-soapbox, +#settings-freelove, +#settings-community { + float: left; +} +#settings-notifications label { + margin-left: 20px; +} +#settings-notify-desc, #settings-activity-desc { + font-weight: bold; + margin-bottom: 15px; +} +#settings-pagetype-desc { + color: #666666; + margin-bottom: 15px; +} + +#profile-in-dir-yes-label, +#profile-in-dir-no-label, +#profile-in-netdir-yes-label, +#profile-in-netdir-no-label, +#hide-wall-yes-label, +#hide-wall-no-label, +#hide-friends-yes-label, +#hide-friends-no-label { + margin-left: 125px; + float: left; + width: 50px; +} + +#profile-edit-howlong-label, +#profile-edit-with-label { + display: block; + font-style: italic; + width: 175px; + margin-left: 50px; +} +#profile-edit-howlong, +#profile-edit-with { + margin-bottom: 20px; + margin-left: 50px; +} +/*#profile-edit-with-label { + width: 175px; + margin-left: 20px; +}*/ + +#profile-publish-yes-reg, +#profile-publish-no-reg { + float: left; + margin-bottom: 10px; +} + +#profile-publish-yes-label-reg, +#profile-publish-no-label-reg { + margin-left: 350px; + float: left; + width: 50px; +} + +#profile-publish-break-reg, +#profile-publish-end-reg { + clear: both; +} + + +#profile-edit-pdesc-desc, +#profile-edit-pubkeywords-desc, +#profile-edit-prvkeywords-desc { + float: left; + margin-left: 20px; + margin-bottom: 20px; +} +#profile-edit-prvkeywords-desc { + margin-bottom: 0px; +} + + +/*#profile-edit-homepage, #profile-edit-hometown { + float: left; + margin-bottom: 35px; +}*/ +#profile-edit-homepage, #profile-edit-hometown { + float: left; + margin-bottom: 25px; +} +#profile-edit-hometown { + margin-bottom: 5px; +} +#settings-normal-label, +#settings-soapbox-label, +#settings-community-label, +#settings-freelove-label { + float: left; + width: 200px; +} +#settings-normal-desc, +#settings-soapbox-desc, +#settings-community-desc, +#settings-freelove-desc { + /*float: left; + margin-left: 75px;*/ + clear: left; + color: #666666; + display: block; + margin-bottom: 20px +} + +#profile-edit-profile-name-end, +#profile-edit-name-end, +#profile-edit-pdesc-end, +#profile-edit-gender-end, +#profile-edit-dob-end, +#profile-edit-address-end, +#profile-edit-locality-end, +#profile-edit-region-end, +#profile-edit-postal-code-end, +#profile-edit-country-name-end, +#profile-edit-marital-end, +#profile-edit-sexual-end, +#profile-edit-politic-end, +#profile-edit-religion-end, +#profile-edit-pubkeywords-end, +#profile-edit-prvkeywords-end, +#profile-edit-homepage-end, +#profile-edit-hometown-end, +#profile-in-dir-break, +#profile-in-dir-end, +#profile-in-netdir-break, +#profile-in-netdir-end, +#hide-wall-break, +#hide-wall-end, +#hide-friends-break, +#hide-friends-end, +#settings-normal-break, +#settings-soapbox-break, +#settings-community-break, +#settings-freelove-break { + clear: both; +} +#profile-edit-marital-wrapper, #profile-edit-address-wrapper { + margin-top: 50px; +} +#profile-edit-marital-end { + margin-bottom: 20px; +} + +.settings-widget ul { + list-style-type: none; + padding: 0px; +} + +.settings-widget li { + margin-left: 24px; + margin-bottom: 8px; +} + + +#gender-select, #marital-select, #sexual-select { + width: 220px; +} + +#profile-edit-profile-name-wrapper .required { + color: #FF0000; + float: left; +} + +#contacts-display-wrapper { + padding-left: 0px; +} + +#contacts-main { + margin-top: 20px; + margin-bottom: 20px; +} + +.contact-entry-wrapper { + float: left; +/* width: 120px; + height: 120px;*/ + padding-left: 8px; + padding-right: 8px; + width: 95px; + height: 170px; +} +#contacts-search-end { + margin-bottom: 10px; +} + +.contact-entry-direction-icon { + margin-top: 24px; + margin-right: 2px; +} + +.contact-entry-photo img { + border: none; +} +.contact-entry-photo-end { + clear: both; +} +.contact-entry-name { + float: left; + margin-left: 0px; + margin-right: 10px; + padding-bottom: 5px; + width: 120px; + font-weight: 600; + overflow: hidden; +} +.contact-entry-details { + font-style: italic; + font-size: 10px; + font-weight: 500; +} +.contact-entry-network { + font-size: 10px; + font-weight: 500; +} +.contact-entry-edit-links { + margin-top: 6px; + margin-left: 10px; + width: 16px; +} +.contact-entry-nav-wrapper { + float: left; + margin-left: 10px; +} + +.contact-entry-edit-links img { + border: none; + margin-right: 15px; +} +.contact-entry-photo { + float: left; + position: relative; +} +.contact-entry-end { + clear: both; +} + +#fsuggest-desc, #fsuggest-submit-wrapper { + margin-top: 15px; + margin-bottom: 15px; +} + +#network-star-link{ + margin-top: 10px; +} +.network-star { + float: left; + margin-right: 5px; +} +#network-bmark-link { + margin-top: 10px; +} + +.wall-item-content-wrapper { + margin-top: 60px; + padding-top: 30px; + border-top: 2px solid #AAA; + position: relative; + +} + +.wall-item-content-wrapper.comment { + margin-top: 10px; + padding-top: none; + margin-left: 50px; + border: none; +} + +.wall-item-like, .wall-item-dislike { + font-style: italic; + margin-left: 0px; + opacity: 0.4; +} +.wall-item-like:hover, .wall-item-dislike:hover { + opacity: 1.0; +} + +.wall-item-like.comment, .wall-item-dislike.comment { + margin-left: 50px; +} + +.wall-item-info { + display: block; + float: left; + width:110px; + margin-right:10px; +} +.comment .wall-item-info { + width: 70px; +} + +.wall-item-photo-wrapper { + margin-bottom: 10px; + width: 100px; +} +.wall-item-photo-menu-button { + display: block; + position: absolute; + background-image: url("photo-menu.jpg"); + background-position: top left; + background-repeat: no-repeat; + margin: 0px; padding: 0px; + width: 16px; + height: 16px; + top: 94px; left:0px; + overflow: hidden; + text-indent: 40px; + display: none; + +} +.wall-item-photo-menu { + width: auto; + border: 2px solid #444444; + background: #FFFFFF; + position: absolute; +/* left: 10px; top: 90px;*/ + left: 0px; top:110px; + display: none; + z-index: 10000; +} +.wall-item-photo-menu ul { margin:0px; padding: 0px; list-style: none } +.wall-item-photo-menu li a { display: block; padding: 2px; } +.wall-item-photo-menu li a:hover { color: #FFFFFF; background: #3465A4; text-decoration: none; } + + +.comment .wall-item-photo-menu-button { /*top: 44px;*/ top: 64px;} +.comment .wall-item-photo-menu { /*top: 60px;*/ top: 80px; } + +.wallwall .wwto { + left: 50px; + margin: 0; + position: absolute; + top: 70px; + width: 30px +} +.wallwall .wwto img { + width: 30px !important; + height: 30px !important; +} + +.wallwall .wall-item-photo-end { + clear: both; +} + +.wall-item-arrowphoto-wrapper { + position: absolute; + left: 75px; + top: 70px; + z-index: 100; +} +.wall-item-wrapper { + margin-left:10px; +} +.wall-item-lock { + margin-top: 30px; + left: 105px; + position: absolute; + top: 1px; +} +.comment .wall-item-lock { + left: 65px; +} + +.wall-item-ago { + color: #888888; + font-size: 0.8em; +} + +.wall-item-location { + overflow: hidden; + /* add ellipsis on text overflow */ + /* this work on safari, opera, ie, chrome. */ + /* firefox users have to wait support or we */ + /* can use a jquery plugin http://bit.ly/zJskg */ + text-overflow: ellipsis; + -o-text-overflow: ellipsis; + width: 100%; +} + +.wall-item-like-buttons { + float: left; + margin-right: 10px; +/* padding-right: 10px; */ +/* border-right: 2px solid #fff; */ +} + +.like-rotator { + margin-left: 5px; +} + +.wall-item-like-buttons > a, +.wall-item-like-buttons > img { + float: left; +} + +.wall-item-like-buttons img { + cursor: pointer; +} + +.wall-item-share-buttons { + margin-left: 10px; + margin-right: 10px; +} + +.editpost { + margin-left: 10px; + float: left; +} +.star-item { + margin-left: 10px; + float: left; +} +.tag-item { + margin-left: 10px; + float: left; +} + +.filer-item { + margin-left: 10px; + float: left; +} + +.wall-item-links-wrapper { + float: left; +} + +.wall-item-delete-wrapper { + float: right; +} + +.wall-item-delete-end { + clear: both; +} + +.wall-item-delete-icon { + border: none; +} + + +.wall-item-wrapper-end { + clear: both; +} +.wall-item-name-link { + font-weight: bold; + text-decoration: none; + color: #3172BD; +} +.wall-item-photo { + border: none; +} +.comment .wall-item-photo { + width: 50px !important; + height: 50px !important; +} +.wall-item-content { + margin-left: 10px; + padding-right: 1em; + max-height: 500px; + overflow: auto; +} + +.wall-item-content img { + max-width: 100%; +} + + + +.wall-item-title { + float: left; + font-weight: bold; + font-size: 1.6em; + /*width: 450px;*/ +} + +.wall-item-title-end { + clear: both; +} + +.wall-item-body { + text-align: justify; + float: left; + /*width: 450px;*/ + width: 100%; + margin-top: 10px; + line-height: 18px; +} + +.wall-item-tools { + clear: both; +/* background-image: url("head.jpg"); + background-position: 0 -20px; + background-repeat: repeat-x;*/ + margin-top: 10px; + margin-left: 0px; + margin-bottom: 7px; +/* padding: 5px 10px 0px;*/ + padding: 5px 10px 0px 2px; + height: 28px; + border-bottom: 1px solid #ddd; +} +.wall-item-author { +/* margin-top: 10px;*/ + margin-top: 0px; +} + +.comment .wall-item-tools { +/* background:none;*/ +/* background-image: url("head.jpg"); + background-position: 0 -20px; + background-repeat: repeat-x;*/ + margin-left: 0px; +} + +.comment-edit-wrapper { + margin-top: 15px; + background: #f3f3f3; + margin-left: 50px; +} + +.comment-wwedit-wrapper { + margin-top: 15px; + background: #f3f3f3; + margin-left: 50px; +} + +.comment-edit-photo { + margin-top: 10px; + margin-left: 10px; + margin-bottom: 10px; + width: 70px; + float: left; +} +.comment-edit-photo img { + width: 25px; +} +.comment-edit-text-empty, .comment-edit-text-full { + float: left; + margin-top: 10px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 1px solid #cccccc; + padding: 3px 1px 1px 3px; +} + +.comment-edit-text-empty { + color: gray; + height: 30px; + width: 175px; + overflow: auto; + margin-bottom: 10px; +} + +.comment-edit-text-full { + color: black; + height: 150px; + width: 350px; + overflow: auto; +} + +.comment-edit-text-end { + clear: both; +} + +.comment-edit-submit { + margin: 10px 0px 10px 110px; +} + +#profile-jot-plugin-wrapper, +#profile-jot-submit-wrapper { + margin-top: 15px; +} + +#profile-jot-submit { + float: left; +} +#profile-upload-wrapper { + float: left; + margin-left: 30px; +} +#profile-attach-wrapper { + float: left; + margin-left: 15px; +} +#profile-rotator { + float: left; + margin-left: 30px; +} +#profile-link-wrapper { + float: left; + margin-left: 30px; +} +#profile-youtube-wrapper { + float: left; + margin-left: 15px; +} +#profile-video-wrapper { + float: left; + margin-left: 15px; +} +#profile-audio-wrapper { + float: left; + margin-left: 15px; +} +#profile-location-wrapper { + float: left; + margin-left: 15px; +} +#jot-preview-link { + float: left; + margin-left: 45px; + margin-top: 0px !important; +} + + +#profile-nolocation-wrapper { + float: left; + margin-left: 15px; +} +#profile-title-wrapper { + float: left; + margin-left: 15px; +} + +#profile-jot-perms { + float: left; + margin-left: 100px; + font-weight: bold; + font-size: 1.2em; +} + + +#profile-jot-perms-end { + /*clear: left;*/ + height: 30px; +} + +#profile-jot-plugin-end{ + clear: both; +} +.profile-jot-net { + float: left; + margin-right: 10px; + margin-top: 5px; + margin-bottom: 5px; +} + +#profile-jot-networks-end { + clear: both; +} + +.profile-jot-box { + margin-top: 50px; +} + +#profile-jot-end { + /*clear: both;*/ + margin-bottom: 30px; +} +#about-jot-submit-wrapper { + margin-top: 15px; +} +#about-jot-end { + margin-bottom: 30px; +} +#contacts-main { + margin-bottom: 30px; +} + +#profile-listing-desc { + margin-left: 30px; +} + +#profile-listing-new-link-wrapper { + margin-left: 30px; + margin-bottom: 30px; +} +.profile-listing-photo-wrapper { + float: left; +} + +.profile-listing-edit-buttons-wrapper { + clear: both; +} +.profile-listing-photo-edit-link { + float: left; + width: 125px; +} +.profile-listing-end { + clear: both; +} +.profile-listing-edit-buttons-wrapper img{ + border: none; + margin-right: 20px; +} +.profile-listing { + margin-top: 25px; +} +.profile-listing-name { + float: left; + margin-left: 32px; + margin-top: 10px; + color: #3172BD; + font-weight: bold; + width: 200px; + +} +.fortune { + margin-top: 50px; + color: #4444FF; + font-weight: bold; + margin-bottom: 20px; +} + + +.directory-end { + clear: both; +} +.directory-name { + text-align: center; +} +.directory-photo { + margin-left: 25px; +} +.directory-details { + font-size: 0.7em; + text-align: center; + margin-left: 5px; + margin-right: 5px; +} +.directory-item { + float: left; +/* width: 225px; + height: 260px;*/ + padding-left: 25px; + width: 150px; + height: 225px; + overflow: auto; +} + +#directory-search-wrapper { + margin-top: 20px; + margin-right: 20px; + margin-bottom: 50px; +} + +#directory-search-end { +} + +.directory-photo-img { + width: 125px; + border: none; +} + +/* NOTE: The order of the "pager" items here is very important! + * The concern is maintaining a decent-looking pager for people who still use + * the numbers, while also having a nice-looking pager for people who use the + * "older/newer" alternate. The numbers pager uses the _first, _last, etc. classes + * while the newer pager just has bare tags inside the div.pager. So the + * following CSS sets everything up for the newer pager, then overrides those + * settings for the specific classes used by the older pager. + */ +.pager { + margin-top: 35px; + margin-bottom: 20px; + padding: 10px 0px; + text-align: center; +} + +.pager a { + font-size: 1.5em; + padding: 0.2em 1em; + border: 1px solid #aaa; + border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; +} + + +.pager_first, +.pager_last, +.pager_prev, +.pager_next, +.pager_n { +/* background: #EEE;*/ +} + +.pager_first a, +.pager_last a, +.pager_prev a, +.pager_next a, +.pager_n a { + font-size: 0.97em; + border: 1px solid black; + border-radius: 7px; + -moz-border-radius: 7px; + -webkit-border-radius: 7px; + text-decoration: none; + padding: 4px 6px 4px 3px; + opacity: 0.5; +} +.pager_first a:hover, +.pager_last a:hover, +.pager_prev a:hover, +.pager_next a:hover, +.pager_n a:hover { + opacity: 1.0; +} + +.pager_current { + font-size: 0.97em; + border: 1px solid black; + border-radius: 7px; + background: #FFCCCC; + padding: 4px 6px 4px 3px; +} + + +#advanced-profile-name-wrapper, +#advanced-profile-gender-wrapper, +#advanced-profile-dob-wrapper, +#advanced-profile-age-wrapper, +#advanced-profile-marital-wrapper, +#advanced-profile-sexual-wrapper, +#advanced-profile-homepage-wrapper, +#advanced-profile-politic-wrapper, +#advanced-profile-religion-wrapper, +#advanced-profile-about-wrapper, +#advanced-profile-interest-wrapper, +#advanced-profile-contact-wrapper, +#advanced-profile-music-wrapper, +#advanced-profile-book-wrapper, +#advanced-profile-tv-wrapper, +#advanced-profile-film-wrapper, +#advanced-profile-romance-wrapper, +#advanced-profile-work-wrapper, +#advanced-profile-education-wrapper { + margin-top: 20px; +} + +#advanced-profile-name-text, +#advanced-profile-gender-text, +#advanced-profile-dob-text, +#advanced-profile-age-text, +#advanced-profile-marital-text, +#advanced-profile-sexual-text, +#advanced-profile-homepage-text, +#advanced-profile-politic-text, +#advanced-profile-religion-text, +#advanced-profile-about-text, +#advanced-profile-interest-text, +#advanced-profile-contact-text, +#advanced-profile-music-text, +#advanced-profile-book-text, +#advanced-profile-tv-text, +#advanced-profile-film-text, +#advanced-profile-romance-text, +#advanced-profile-work-text, +#advanced-profile-education-text { + width: 300px; + float: left; +} + +#advanced-profile-name-end, +#advanced-profile-gender-end, +#advanced-profile-dob-end, +#advanced-profile-age-end, +#advanced-profile-marital-end, +#advanced-profile-sexual-end, +#advanced-profile-homepage-end, +#advanced-profile-politic-end, +#advanced-profile-religion-end { + height: 10px; +} + +#advanced-profile-about-end, +#advanced-profile-interest-end, +#advanced-profile-contact-end, +#advanced-profile-music-end, +#advanced-profile-book-end, +#advanced-profile-tv-end, +#advanced-profile-film-end, +#advanced-profile-romance-end, +#advanced-profile-work-end, +#advanced-profile-education-end { + + +} + +#advanced-profile-name, +#advanced-profile-gender, +#advanced-profile-dob, +#advanced-profile-age, +#advanced-profile-marital, +#advanced-profile-sexual, +#advanced-profile-homepage, +#advanced-profile-politic, +#advanced-profile-religion { + float: left; + +} + + +#advanced-profile-about, +#advanced-profile-interest, +#advanced-profile-contact, +#advanced-profile-music, +#advanced-profile-book, +#advanced-profile-tv, +#advanced-profile-film, +#advanced-profile-romance, +#advanced-profile-work, +#advanced-profile-education { + margin-top: 10px; + margin-left: 50px; + margin-right: 20px; + padding: 10px; + border: 1px solid #CCCCCC; +} + +#advanced-profile-with { + float: left; + margin-left: 15px; +} + +#contact-edit-wrapper { + margin-top: 10px; +} + +#contact-edit-banner-name { + font-size: 1.4em; + font-weight: bold; +} + +#contact-edit-poll-wrapper { + margin-top: 15px; +} + +#contact-edit-poll-text { + margin-top: 15px; + margin-bottom: 5px; +} + +#contact-edit-update-now { + margin-top: 15px; +} + +#contact-edit-links{ + clear: both; +} + +#contact-edit-links ul { + list-style: none; + list-style-type: none; + margin-left: 0px; + padding-left: 0px; +} + +#contact-edit-links li { + margin-top: 5px; +} + +#contact-edit-drop-link { + float: right; + margin-right: 20px; +} + +#contact-edit-nav-end { + clear: both; +} + +#contact-edit-wrapper { + width: 100%; +} + +#contact-edit-end { + clear: both; + margin-top: 15px; +} + +#contact-profile-selector { + width: 175px; + margin-left: 175px; +} + +.contact-edit-submit { + margin-top: 20px; +} + + +.contact-photo-menu-button { + position: absolute; + background-image: url("photo-menu.jpg"); + background-position: top left; + background-repeat: no-repeat; + margin: 0px; padding: 0px; + width: 16px; + height: 16px; + top: 64px; left:0px; + overflow: hidden; + text-indent: 40px; + display: none; + +} +.contact-photo-menu { + width: auto; + border: 2px solid #444444; + background: #FFFFFF; + position: absolute; + left: 0px; top: 90px; + display: none; + z-index: 10000; +} +.contact-photo-menu ul { margin:0px; padding: 0px; list-style: none } +.contact-photo-menu li a { display: block; padding: 2px; } +.contact-photo-menu li a:hover { color: #FFFFFF; background: #3465A4; text-decoration: none; } + + +#block-message, #ignore-message, #archive-message, #lost-contact-message { + color: #FF0000; +} + +#profile-edit-insecure { + margin-top: 20px; + color: #FF0000; + font-size: 1.1em; + border: 1px solid #FF8888; + background-color: #FFEEEE; + padding-left: 5px; + /*: 3px 3px 3px 5px; */ + width: 587px; +} + +#profile-jot-text { + height: 20px; + color:#cccccc; + border: 1px solid #cccccc; + padding: 3px 0px 0px 5px; + -moz-border-radius: 3px; + border-radius: 3px; +} + + +/** acl **/ +#photo-edit-perms-select, +#photos-upload-permissions-wrapper, +#profile-jot-acl-wrapper{ + display:block!important; +} + +#photos-usage-message { + margin-bottom: 15px; +} + + +#acl-wrapper { + width: 690px; + float:left; +} +#acl-search { + float:right; + background: #ffffff url("../../../images/search_18.png") no-repeat right center; + padding-right:20px; +} +#acl-showall { + float: left; + display: block; + width: auto; + height: 18px; + background-color: #cccccc; + background-image: url("../../../images/show_all_off.png"); + background-position: 7px 7px; + background-repeat: no-repeat; + padding: 7px 5px 0px 30px; + -webkit-border-radius: 5px ; + -moz-border-radius: 5px; + border-radius: 5px; + color: #999999; +} +#acl-showall.selected { + color: #000000; + background-color: #ff9900; + background-image: url("../../../images/show_all_on.png"); +} + +#acl-list { + height: 210px; + border: 1px solid #cccccc; + clear: both; + margin-top: 30px; + overflow: auto; +} +#acl-list-content { + +} +.acl-list-item { + display: block; + width: 150px; + height: 30px; + border: 1px solid #cccccc; + margin: 5px; + float: left; +} +.acl-list-item img{ + width:22px; + height: 22px; + float: left; + margin: 4px; +} +.acl-list-item p { height: 12px; font-size: 10px; margin: 0px; padding: 2px 0px 1px; overflow: hidden;} +.acl-list-item a { + font-size: 8px; + display: block; + width: 40px; + height: 10px; + float: left; + color: #999999; + background-color: #cccccc; + background-position: 3px 3px; + background-repeat: no-repeat; + margin-right: 5px; + -webkit-border-radius: 2px ; + -moz-border-radius: 2px; + border-radius: 2px; + padding-left: 15px; +} +#acl-wrapper a:hover { + text-decoration: none; + color:#000000; +} +.acl-button-show { background-image: url("../../../images/show_off.png"); } +.acl-button-hide { background-image: url("../../../images/hide_off.png"); } + +.acl-button-show.selected { + color: #000000; + background-color: #9ade00; + background-image: url("../../../images/show_on.png"); +} +.acl-button-hide.selected { + color: #000000; + background-color: #ff4141; + background-image: url("../../../images/hide_on.png"); +} +.acl-list-item.groupshow { border-color: #9ade00; } +.acl-list-item.grouphide { border-color: #ff4141; } +/** /acl **/ + + +#group-new-submit-wrapper { + margin-top: 30px; +} + +#group-edit-name-label { + float: left; + width: 175px; + margin-top: 20px; + margin-bottom: 20px; +} + +#group-edit-name { + float: left; + width: 225px; + margin-top: 20px; + margin-bottom: 20px; +} + +#group-edit-name-wrapper { + + +} + + +#group_members_select_label { + display: block; + float: left; + width: 175px; +} + +.group_members_select { + float: left; + width: 230px; + overflow: auto; +} + +#group_members_select_end { + clear: both; +} +#group-edit-name-end { + clear: both; +} + +#prvmail-to-label, #prvmail-subject-label, #prvmail-message-label { + margin-bottom: 10px; + margin-top: 20px; +} + +#prvmail-submit { + float: left; + margin-top: 10px; + margin-right: 30px; +} +#prvmail-upload-wrapper, +#prvmail-link-wrapper, +#prvmail-rotator-wrapper { + float: left; + margin-top: 10px; + margin-right: 10px; + width: 24px; +} + +#prvmail-end { + clear: both; +} + +.mail-list-sender, +.mail-list-detail { + float: left; +} +.mail-list-detail { + margin-left: 20px; +} + +.mail-list-subject { + font-size: 1.1em; + margin-top: 10px; +} +a.mail-list-link { + display: block; + font-size: 1.3em; + padding: 4px 0; +} + +/* +*a.mail-list-link:hover { +* background-color: #15607B; +* color: #F5F6FB; +*} +*/ + +.mail-list-outside-wrapper-end { + clear: both; +} + +.mail-list-outside-wrapper { + margin-top: 30px; +} + +.mail-list-delete-wrapper { + float: right; + margin-right: 30px; + margin-top: 15px; +} + +.mail-list-delete-icon { + border: none; +} + +.mail-conv-sender, +.mail-conv-detail { + float: left; +} +.mail-conv-detail { + margin-left: 20px; + margin-bottom: 10px; + width: 500px; +} + +.mail-conv-subject { + font-size: 1.4em; + margin: 10px 0; +} + +.mail-conv-outside-wrapper-end { + clear: both; +} + +.mail-conv-outside-wrapper { + margin-top: 30px; +} + +.mail-conv-delete-wrapper { + float: right; + margin-right: 5px; + margin-top: 15px; +} +.mail-conv-break { + clear: both; +} + +.mail-conv-delete-icon { + border: none; +} + +.message-links ul { + list-style-type: none; + padding: 0px; +} + +.message-links li { + margin-top: 10px; + float: left; +} +.message-links a { + padding: 3px 5px; +} + +.message-links-end { + clear: both; +} + +#sidebar-group-list ul { + list-style-type: none; +} + +#sidebar-group-list .icon, #sidebar-group-list .iconspacer { + display: inline-block; + height: 12px; + width: 12px; +} + +#sidebar-group-list li { + margin-top: 10px; +} + +.nets-ul, .fileas-ul, .categories-ul { + list-style-type: none; +} + +.nets-ul li, .fileas-ul li, .categories-ul li { + margin-top: 10px; +} + +.nets-link { + margin-left: 24px; +} +.nets-all { + margin-left: 42px; +} + +.fileas-link, .categories-link { + margin-left: 24px; +} + +.fileas-all, .categories-all { + margin-left: 0px; +} + +#search-save { + margin-left: 5px; +} +.groupsideedit { + margin-right: 10px; +} +#saved-search-ul { + list-style-type: none; +} +.savedsearchdrop, .savedsearchterm { + float: left; + margin-top: 10px; +} +.savedsearchterm { + margin-left: 10px; +} + + +#side-follow-wrapper { + margin-top: 20px; +} +#side-follow-url, #side-peoplefind-url { + margin-top: 5px; +} +#side-follow-submit, #side-peoplefind-submit { + margin-top: 15px; +} + +#side-match-link { + margin-top: 10px; +} + +aside input[type='text'] { + width: 174px; +} + +.widget { + border: 1px solid #DDDDDD; + padding: 8px; + margin-top: 5px; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; + +} + + +/*.photos { + height: auto; + overflow: auto; +}*/ + +.photos-end { + clear: both; + margin-bottom: 25px; +} + +.photo-album-image-wrapper { + float: left; + margin-top: 15px; + margin-right: 15px; + margin-left: 15px; +/* width: 200px; height: 200px; + overflow: hidden; + position: relative; */ +} +.photo-album-image-wrapper .caption { + display: none; + width: 100%; +/* position: absolute; */ + bottom: 0px; + padding: 0.5em 0.5em 0px 0.5em; + background-color: rgba(245, 245, 255, 0.8); + border-bottom: 2px solid #CCC; + margin: 0px; +} +.photo-album-image-wrapper a:hover .caption { + display:block; +} + +#photo-album-end { + clear: both; + margin-bottom: 25px; +} + +.photo-top-image-wrapper { +/* position: relative; */ + float: left; + margin-top: 15px; + margin-right: 15px; + margin-left: 15px; + margin-bottom: 15px; +/* width: 200px; height: 200px; + overflow: hidden; */ +} +.photo-top-image-wrapper img { + max-width: 550px; +} +.photo-top-album-name { + width: 100%; + min-height: 2em; +/* position: absolute; */ + bottom: 0px; + padding: 0px 3px; + padding-top: 0.5em; + background-color: rgb(255, 255, 255); +} +#photo-top-end { + clear: both; +} + +#photo-top-links { + margin-bottom: 30px; + margin-left: 30px; +} + +#photos-upload-form { + padding-left: 90px; +} + +#photos-upload-newalbum-div { + float: left; + width: 175px; + margin-top: 30px; +} + +#photos-upload-noshare { + margin-bottom: 10px; +} +#photos-upload-existing-album-text { + float: left; + width: 175px; +} +#photos-upload-newalbum { + margin-top: 30px; + float: left; +} +#photos-upload-album-select { + float: left; +} + +#photos-upload-spacer { + margin-top: 25px; +} +#photos-upload-new-end, #photos-upload-exist-end { + clear: both; +} +#photos-upload-exist-end { + margin-bottom: 15px; +} +#photos-upload-submit { + margin-top: 15px; + margin-left: 90px; +} + +#photos_upload_applet_wrapper { + margin-bottom: 15px; +} + +#photos-upload-no-java-message { + margin-bottom: 15px; +} + +#profile-jot-desc { + /*float: left;*/ + /*width: 480px;*/ + width: 100%; + color: #FF0000; + margin-top: 10px; + margin-bottom: 10px; +} + +#character-counter { + float: right; + font-size: 120%; +} + +#character-counter.grey { + color: #888888; +} + +#character-counter.orange { + color: orange; +} +#character-counter.red { + color: red; +} + +#profile-jot-banner-end { + /* clear: both; */ +} + +#photos-upload-select-files-text { + margin-top: 15px; + margin-bottom: 15px; +} + +#photos-upload-perms-menu, #photos-upload-perms-menu:visited, #photos-upload-perms-menu:link { + color: #8888FF; + text-decoration: none; + cursor: pointer; +} + +#photos-upload-perms-menu:hover { + color: #0000FF; + text-decoration: underline; + cursor: pointer; +} +#settings-default-perms-menu { + margin-top: 15px; + margin-bottom: 15px; +} + +#photo-edit-caption-label, #photo-edit-tags-label, #photo-edit-albumname-label, .photo-edit-rotate-label { + float: left; + width: 150px; +} + +#photo-edit-caption-label, #photo-edit-tags-label, #photo-edit-albumname-label { + font-weight: 700; +} + +#photos-upload-choosefile-outer-wrapper { + margin-top: 35px; + padding-top: 50px; + padding-left: 50px; + position: relative; +} +#photos-upload-noshare-div { + margin-top: 0px; + margin-bottom: 15px; +} + +#photos-upload-noshare-label { + margin-left: 30px; +} + +#photos-upload-noshare { + float: left; + margin-left: 5px; +} + +.photo-perms-icon { + float: left; +} + +#photo-edit-perms-menu, #photos-upload-perms-menu, #settings-default-perms-menu { + text-decoration: none; +} + +.photo-jot-perms-text { + padding-top: 5px; + padding-left: 25px; +} + +#photo-edit-perms, #photos-upload-perms, #settings-default-perms { + margin-top: 30px; +} +#photos-upload-perms { + margin-top: 15px; + margin-left: 5px; +} + +#photo-edit-perms-end { + margin-bottom: 15px; +} + +#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname { + float: left; + margin-bottom: 25px; +} +.photo-edit-rotate { + margin-left: 20px; +} + +#photo-edit-link-wrap { + margin-bottom: 15px; +} +#photo-like-div { + margin-left: 15px; + margin-bottom: 45px; +} + +#photo-edit-caption-end, #photo-edit-tags-end, #photo-edit-albumname-end, #photo-edit-rotate-end { + clear: both; +} + +#photo-edit-rotate-end { + margin-bottom: 15px; +} + +#photo-edit-delete-button { + margin-left: 270px; +} +#photos-upload-choose { + position: absolute; + top: 0px; + left: 55px; +} +.settings-submit, .profile-edit-submit-button { + margin-bottom: 10px; +} + +#photo-edit-end { + margin-bottom: 35px; +} +#photo-caption { + font-size: 110%; + font-weight: bold; + margin-top: 15px; + margin-bottom: 15px; +} + +#in-this-photo-text { + color: #0000FF; + margin-left: 30px; +} + +#in-this-photo { + margin-left: 60px; + margin-top: 10px; + margin-bottom: 20px; +} + +#photo-album-edit-submit, #photo-album-edit-drop { + margin-top: 15px; + margin-bottom: 15px; +} + +#photo-album-edit-drop { + margin-left: 200px; +} + +.group-delete-wrapper { + float: right; + margin-right: 50px; +} + +#install-dbhost-label, +#install-dbuser-label, +#install-dbpass-label, +#install-dbdata-label, +#install-tz-desc { + float: left; + width: 250px; + margin-top: 10px; + margin-bottom: 10px; + +} + +#install-dbhost, +#install-dbuser, +#install-dbpass, +#install-dbdata { + float: left; + width: 200px; + margin-left: 20px; +} + +#install-dbhost-end, +#install-dbuser-end, +#install-dbpass-end, +#install-dbdata-end, +#install-tz-end { + clear: both; +} + +#install-form select#timezone_select { + float: left; + margin-top: 18px; + margin-left: 20px; +} + +#dfrn-request-networks { + margin-bottom: 30px; +} + +#pause { + position: fixed; + bottom: 5px; + right: 5px; +} + +.sparkle { + cursor: url('lock.cur'), pointer; +/* cursor: pointer !important; */ +} + +.contact-block-div { + float: left; + width: 52px; + height: 52px; +} +.contact-block-textdiv { + float: left; + width: 150px; + height: 34px; +} + +#contact-block-end { + clear: both; +} +.contact-block-link { + float: left; +} +.contact-block-img { + width:48px; + height:48px; +} + +#tag-remove { + margin-bottom: 15px; +} + +#tagrm li { + margin-bottom: 10px; +} + +#tagrm-submit, #tagrm-cancel { + margin-top: 25px; +} + +#tagrm-cancel { + margin-left: 15px; +} + +.wall-item-conv { + margin-top: 5px; + margin-bottom: 25px; +} + +#search-submit { + margin-left: 15px; +} + +#search-box { + margin-bottom: 25px; +} + +.location-label, .gender-label, .marital-label, .homepage-label { + float: left; + text-align: right; + display: block; + width: 65px; +} + +.adr, .x-gender, .marital-text, .homepage-url { + float: left; + display: block; + margin-left: 8px; +} + +.profile-clear { + clear: both; +} + + +.clear { + clear: both; +} + +.cc-license { + margin-top: 50px; + font-size: 70%; +} + + +#plugin-settings-link, #account-settings-link { + margin-bottom: 10px; +} + +#uexport-link { + margin-bottom: 20px; +} + +/* end from default */ + + +.fn { + padding: 0px 0px 5px 12px; + font-size: 120%; + font-weight: bold; +} + +.vcard .title { + margin-bottom: 5px; + margin-left: 12px; +} + +.vcard dl { + clear: both; +} + +#birthday-title { + float: left; + font-weight: bold; +} + +#birthday-adjust { + float: left; + font-size: 75%; + margin-left: 10px; +} + +#birthday-title-end { + clear: both; +} + +.birthday-list { + margin-left: 15px; +} + +#birthday-wrapper { + margin-bottom: 20px; +} + +#network-new-link { + margin-top: 15px; + margin-bottom: 15px; +} + + +.tool-wrapper { + float: left; + margin-left: 15px; +} + +.tool-link { + cursor: pointer; +} + +.eventcal { + float: left; + font-size: 20px; +} + +#event-summary-text { + margin-top: 15px; +} + +#event-share-checkbox { + float: left; + margin-top: 10px; +} + +#event-share-text { + float: left; + margin-top: 10px; + margin-left: 5px; +} + +#event-share-break { + clear: both; + margin-bottom: 10px; +} + +#event-summary { + width: 400px; +} + +.vevent { + border: 1px solid #CCCCCC; +} + +.vevent .event-summary { + margin-left: 10px; + margin-right: 10px; + font-weight: bold; +} + +.vevent .event-description, .vevent .event-location { + margin-left: 10px; + margin-right: 10px; +} +.vevent .event-start { + margin-left: 10px; + margin-right: 10px; +} + +#new-event-link { + margin-bottom: 10px; +} + +.edit-event-link, .plink-event-link { + float: left; + margin-top: 4px; + margin-right: 4px; + margin-bottom: 15px; +} + +.event-description:before { + content: url('../../../images/calendar.png'); + margin-right: 15px; +} + +.event-start, .event-end { + margin-left: 10px; + width: 330px; + clear: both; +} + +.event-start .dtstart, .event-end .dtend { + float: right; +} + +.event-list-date { + margin-bottom: 10px; +} + +.prevcal, .nextcal { + float: left; + margin-left: 32px; + margin-right: 32px; + margin-top: 64px; +} +.event-calendar-end { + clear: both; +} + + +.calendar { + font-family: Courier, monospace; +} +.today { + font-weight: bold; + color: #FF0000; +} + +.settings-block { + border: 1px solid #AAA; + margin: 10px; + padding: 10px; +} + +.app-title { + margin: 10px; +} + +#identity-manage-desc { + margin-top:15px; + margin-bottom: 15px; +} + +#identity-manage-choose { + margin-bottom: 15px; +} + +#identity-submit { + margin-top: 20px; +} + +#photo-prev-link, #photo-next-link { + padding: 10px; +} +#photo-nav { + position: relative; + height: 55px; +} + +#photo-prev-link { + position: absolute; + left: 5px; +} +#photo-next-link { + position: absolute; + right: 5px; +} + +/*#photo-photo { + float: left; +}*/ +#photo-photo img { + max-width: 555px; + margin-left: 5px; +} +#photo-photo-end { + clear: both; +} + +.profile-match-photo { + float: left; + text-align: center; + width: 120px; +} + +.profile-match-name { + float: left; + text-align: center; + width: 120px; + overflow: hidden; +} + +.profile-match-break, +.profile-match-end { + clear: both; +} + +.profile-match-connect { + text-align: center; + font-weight: bold; +} + +.profile-match-wrapper { + float: left; + padding: 10px; + width: 120px; + height: 120px; + scroll: auto; +} +#profile-match-wrapper-end { + clear: both; +} +.side-link { + margin-bottom: 15px; +} + +#language-selector { + position: absolute; + top: 0px; + left: 16px; +} + +#group-members { + margin-top: 20px; + padding: 10px; + height: 250px; + overflow: auto; + border: 1px solid #ddd; +} + +#group-members-end { + clear: both; +} + +#group-separator { + margin-top: 10px; + margin-bottom: 10px; +} + +#group-all-contacts { + padding: 10px; + height: 450px; + overflow: auto; + border: 1px solid #ddd; +} + +#group-all-contacts-end { + clear: both; + margin-bottom: 10px; +} + +#group-edit-desc { + margin-top: 15px; +} + + +#prof-members { + margin-top: 20px; + padding: 10px; + height: 250px; + overflow: auto; + border: 1px solid #ddd; +} + +#prof-members-end { + clear: both; +} + +#prof-separator { + margin-top: 10px; + margin-bottom: 10px; +} + +#prof-all-contacts { + padding: 10px; + height: 450px; + overflow: auto; + border: 1px solid #ddd; +} + +#prof-all-contacts-end { + clear: both; + margin-bottom: 10px; +} + +#prof-edit-desc { + margin-top: 15px; +} + +#crepair-name-label, +#crepair-nick-label, +#crepair-attag-label, +#crepair-url-label, +#crepair-request-label, +#crepair-confirm-label, +#crepair-notify-label, +#crepair-photo-label, +#crepair-poll-label { + float: left; + width: 200px; + margin-bottom: 15px; +} + +#crepair-name, +#crepair-nick, +#crepair-attag, +#crepair-url, +#crepair-request, +#crepair-confirm, +#crepair-notify, +#crepair-photo, +#crepair-poll { + float: left; + width: 300px; +} + + +#netsearch-box { + margin-top: 20px; +} + +#netsearch-box #search-submit { + margin: 5px 0px 0px 0px; +} + +.required { + color: #FF0000; +} + +#event-start-text, #event-finish-text { + margin-top: 10px; + margin-bottom: 5px; +} + +#event-nofinish-checkbox, #event-nofinish-text, #event-adjust-checkbox, #event-adjust-text { + float: left; +} +#event-datetime-break { + margin-bottom: 10px; +} + +#event-nofinish-break, #event-adjust-break { + clear: both; +} + +#event-desc-text, #event-location-text { + margin-top: 10px; + margin-bottom: 5px; +} +#event-submit { + margin-top: 10px; +} + +.body-tag, .filesavetags, .categorytags { + opacity: 0.5; + filter:alpha(opacity=50); +} + +.body-tag:hover, .filesavetags:hover, .categorytags:hover { + opacity: 1.0 !important; + filter:alpha(opacity=100) !important; +} + +.item-select { + opacity: 0.1; + filter:alpha(opacity=10); + float: right; + margin-right: 10px; + +} +.item-select:hover, .checkeditem { + opacity: 1; + filter:alpha(opacity=100); +} + + +#item-delete-selected { + margin-top: 30px; +} + +#item-delete-selected-end { + clear: both; +} +#item-delete-selected-icon, #item-delete-selected-desc { + float: left; + margin-right: 5px; +} +#item-delete-selected-desc:hover { + text-decoration: underline; +} + +#lang-select-icon { + cursor: pointer; + position: absolute; + left: 0px; + top: 0px; + opacity: 0.2; + filter:alpha(opacity=20); +} + +#lang-select-icon:hover { + opacity: 1; + filter:alpha(opacity=100); +} + +.notif-image { + height: 80px; + width: 80px; + margin-right: 15px; +} +.notification-listing-end { + clear: both; + margin-bottom: 15px; +} + + + +/** + * Plugins settings + */ + +.settings-block > h3, +.settings-heading { + border-bottom: 1px solid #babdb6; +} + + +/** + * Form fields + */ +.field { + margin-bottom: 10px; + padding-bottom: 10px; + overflow: auto; + width: 100% +} +#wrapper_expire.field { + margin-bottom: 3px; + padding-bottom: 3px; +} + +.field label { + float: left; + width: 200px; +} + +.field input, +.field textarea { + width: 400px; +} +.field textarea { height: 100px; } +.field_help { + display: block; + margin-left: 50px; + color: #666666; + +} + +.field .onoff { + float: left; + width: 80px; +} +.field .onoff a { + display: block; + border:1px solid #666666; + background-image:url("../../../images/onoff.jpg"); + background-repeat: no-repeat; + padding: 4px 2px 2px 2px; + height: 16px; + text-decoration: none; +} +.field .onoff .off { + border-color:#666666; + padding-left: 40px; + background-position: left center; + background-color: #cccccc; + color: #666666; + text-align: right; +} +.field .onoff .on { + border-color:#204A87; + padding-right: 40px; + background-position: right center; + background-color: #D7E3F1; + color: #204A87; + text-align: left; +} +.hidden { display: none!important; } + +/*.field.radio .field_help { clear: left; margin-left: 20px; }*/ +.field.radio .field_help { margin-left: 0px; } + +/** + * ADMIN + */ +#pending-update { + float:right; + color: #ffffff; + font-weight: bold; + background-color: #FF0000; + padding: 0em 0.3em; + +} +#adminpage dl { + clear: left; + margin-bottom: 2px; + padding-bottom: 2px; + border-bottom: 1px solid black; +} +#adminpage dt { + width: 200px; + float: left; + font-weight: bold; +} +#adminpage dd { + margin-left: 200px; +} + +#adminpage h3 { + border-bottom: 1px solid #cccccc; +} +#adminpage .field label { + font-weight: bold; +} +#adminpage .submit { + clear:left; + text-align: right; +} + +#adminpage #pluginslist { + margin: 0px; padding: 0px; +} +#adminpage .plugin { + list-style: none; + display: block; + border: 1px solid #888888; + padding: 1em; + margin-bottom: 5px; + clear: left; +} +#adminpage .plugin .desc { margin-left: 2.5em;} +#adminpage .toggleplugin { + float:left; + margin-right: 1em; +} + +#adminpage table {width:100%; border-bottom: 1px solid #000000; margin: 5px 0px;} +#adminpage table th { text-align: left;} +#adminpage td .icon { float: left;} +#adminpage table#users img { width: 16px; height: 16px; } +#adminpage table tr:hover { background-color: #bbc7d7; } +#adminpage .selectall { text-align: right; } + +/* + * UPDATE + */ +.popup { + width: 100%; height: 100%; + top:0px; left:0px; + position: absolute; + display: none; +} + +.popup .background { + background-color: rgba(0,0,0,128); + opacity: 0.5; + width: 100%; height: 100%; + position: absolute; + top:0px; left:0px; +} +.popup .panel { + top:25%;left:25%;width:50%;height:50%; + padding: 1em; + position: absolute; + border: 4px solid #000000; + background-color: #FFFFFF; +} +.popup .panel .panel_text { display: block; overflow: auto; height: 80%; } +.popup .panel .panel_in { width: 100%; height: 100%; position: relative; } +.popup .panel .panel_actions { width: 100%; bottom: 4px; left: 0px; position: absolute; } +.panel_text .progress { width: 50%; overflow: hidden; height: auto; border: 1px solid #cccccc; margin-bottom: 5px} +.panel_text .progress span {float: right; display: block; width: 25%; background-color: #eeeeee; text-align: right;} + +/** + * OAuth + */ +.oauthapp { + height: auto; overflow: auto; + border-bottom: 2px solid #cccccc; + padding-bottom: 1em; + margin-bottom: 1em; +} +.oauthapp img { + float: left; + width: 48px; height: 48px; + margin: 10px; +} +.oauthapp img.noicon { + background-image: url("../../../images/icons/48/plugin.png"); + background-position: center center; + background-repeat: no-repeat; +} +.oauthapp a { + float: left; +} + +/** + * ICONS + */ +.iconspacer { + display: block; width: 16px; height: 16px; +} + +.icon { + display: block; width: 16px; height: 16px; + background-image: url('../../../images/icons.png'); +} +.article { background-position: 0px 0px;} +/*.audio { background-position: -16px 0px;}*/ +.icon.audio { + display: block; width: 24px; height: 24px; + background-size: 100% 100%; + background-image: url('images/speaker.png'); + background-repeat: no-repeat; +} +.block { background-position: -32px 0px;} +/*.drop { background-position: -48px 0px;}*/ +.icon.drop { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/drop-16.png'); + background-repeat: no-repeat; + opacity: 1.0; +} +/*.drophide { background-position: -64px 0px;}*/ +.icon.drophide { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/drop-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.edit { background-position: -80px 0px;} +/*.camera { background-position: -96px 0px;}*/ +.icon.camera{ + display: block; width: 24px; height: 18px; + margin-top: 4px; + background-size: 100% 100%; + background-image: url('images/camera.png'); + background-repeat: no-repeat; +} +/*.dislike { background-position: -112px 0px;}*/ +.icon.dislike { + display: block; width: 15px; height: 16px;/* 23 24*/ + background-size: 100% 100%; + background-image: url('images/disapprove-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.icon.dislike:hover { + opacity: 1.0; +} +/*.like { background-position: -128px 0px;}*/ +.icon.like { + display: block; width: 15px; height: 16px;/* 23 24*/ + margin-right: 6px; + background-size: 100% 100%; + background-image: url('images/approve-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.icon.like:hover { + opacity: 1.0; +} +/*.link { background-position: -144px 0px;}*/ +.icon.link { + display: block; width: 24px; height: 24px; + background-size: 100% 100%; + background-image: url('images/link.png'); + background-repeat: no-repeat; +} + +/*.globe { background-position: 0px -16px;}*/ +.icon.globe { + display: block; width: 24px; height: 24px; + background-size: 100% 100%; + background-image: url('images/globe.png'); + background-repeat: no-repeat; +} +.noglobe { background-position: -16px -16px;} +.no { background-position: -32px -16px;} +.pause { background-position: -48px -16px;} +.play { background-position: -64px -16px;} +/*.pencil { background-position: -80px -16px;}*/ +.icon.pencil { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/pencil-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.icon.pencil:hover { + opacity: 1.0; +} +/*.small-pencil { background-position: -96px -16px;}*/ +.icon.small-pencil { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/pencil-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.icon.small-pencil:hover { + opacity: 1.0; +} +/*.recycle { background-position: -112px -16px;}*/ +.icon.recycle { + display: block; width: 16px; height: 16px;/*24 23*/ + background-size: 100% 100%; + background-image: url('images/recycle-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.icon.recycle:hover { + opacity: 1.0; +} +/*.remote-link { background-position: -128px -16px;}*/ +.icon.remote-link { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/remote-link-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.icon.remote-link:hover { + opacity: 1.0; +} +.share { background-position: -144px -16px;} + +.tools { background-position: 0px -32px;} +/*.lock { background-position: -16px -32px;}*/ +.icon.lock { + display: block; width: 14px; height: 21px; + margin-top: 1px; + background-size: 100% 100%; + background-image: url('images/lock-24.png'); + background-repeat: no-repeat; +} +/*.unlock { background-position: -32px -32px;}*/ +.icon.unlock { + display: block; width: 14px; height: 24px; + margin-top: -2px; + background-size: 100% 100%; + background-image: url('images/unlock-24.png'); + background-repeat: no-repeat; +} +/*.video { background-position: -48px -32px;}*/ +.icon.video { + display: block; width: 24px; height: 24px; + background-size: 100% 100%; + background-image: url('images/video.png'); + background-repeat: no-repeat; +} +/*.oembed.video { + display: inline; width: auto; height: auto; + background-image: none; +}*/ + +.youtube { background-position: -64px -32px;} +/*.attach { background-position: -80px -32px; }*/ +.icon.attach { + display: block; width: 24px; height: 24px; + background-size: 100% 100%; + background-image: url('images/paperclip-24.png'); + background-repeat: no-repeat; +} + +.language { background-position: -96px -32px; } +.prev { background-position: -112px -32px; } +.next { background-position: -128px -32px; } +.on { background-position: -144px -32px; } + +.off { background-position: 0px -48px; } +/*.starred { background-position: -16px -48px; }*/ +.icon.starred { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/star-yellow-16.png'); + background-repeat: no-repeat; +} +/*.unstarred { background-position: -32px -48px; }*/ +.icon.unstarred { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/star-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.icon.unstarred:hover { + opacity: 1.0; +} +/*.tagged { background-position: -48px -48px; }*/ +.icon.tagged { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/tag-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.icon.tagged:hover { + opacity: 1.0; +} +.yellow { background-position: -64px -48px; } + + +.filer-icon { +/* display: block; width: 16px; height: 16px; + background-image: url('file.gif');*/ + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/folder-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.filer-icon:hover { + opacity: 1.0; +} + +.icon.dim { opacity: 0.3;filter:alpha(opacity=30); } +[class^="comment-edit-bb"] { + list-style: none; + display: none; + margin: 0px 0 -5px 60px; + width: 75%; +} +[class^="comment-edit-bb"] > li { + display: inline-block; + margin: 10px 10px 0 0; + visibility: none; +} +[class^="comment-edit-bb-end"] { + clear: both; +} +.editicon { + display: inline-block; +/* background-image: url(bbedit.png); + background-color: #fff;*/ + background-size: 100% 100%; + background-repeat: no-repeat; + background-color: #f3f3f3; + text-decoration: none; + opacity: 0.4; +} +.editicon:hover { +/* background-color: #ccc;*/ + opacity: 1.0; +} +.boldbb { +/* background-position: 0px 0px;*/ + width: 15px; + height: 16px; + background-image: url('images/boldB-serif-16.png'); +} +/*.boldbb:hover { + background-position: 0px -16px; +}*/ +.italicbb { +/* background-position: -16px 0px;*/ + width: 9px; + height: 16px; + background-image: url('images/italicI-serif-16.png'); +} +/*.italicbb:hover { + background-position: -16px -16px; +}*/ +.underlinebb { +/* background-position: -32px 0px;*/ + width: 14px; + height: 16px; + background-image: url('images/underlineU-serif-16.png'); +} +/*.underlinebb:hover { + background-position: -32px -16px; +}*/ +.quotebb { +/* background-position: -48px 0px;*/ + width: 20px; + height: 20px; + background-image: url('images/quote.png'); +} +/*.quotebb:hover { + background-position: -48px -16px; +}*/ +.codebb { +/* background-position: -64px 0px;*/ + width: 20px; + height: 20px; + background-image: url('images/code.png'); +} +/*.codebb:hover { + background-position: -64px -16px; +}*/ +.imagebb { +/* background-position: -80px 0px;*/ + width: 20px;/*16*/ + height: 15px;/*12*/ + margin-bottom: 2px; + background-image: url('images/camera.png'); +} +/*.imagebb:hover { + background-position: -80px -16px; +}*/ +.urlbb { +/* background-position: -96px 0px;*/ + width: 20px; + height: 20px; + background-image: url('images/link.png'); +} +/*.urlbb:hover { + background-position: -96px -16px; +}*/ +.videobb { +/* background-position: -112px 0px;*/ + width: 20px; + height: 20px; + background-image: url('images/video.png'); +} +/*.videobb:hover { + background-position: -112px -16px; +}*/ + +.attachtype { + display: block; width: 20px; height: 23px; + float: left; + background-image: url('../../../images/content-types.png'); +} + +.body-attach { + margin-top: 10px; +} + +.type-video { background-position: 0px 0px; } +.type-image { background-position: -20px 0px; } +.type-audio { background-position: -40px 0px; } +.type-text { background-position: -60px 0px; } +.type-unkn { background-position: -80px 0px; } + + +/* autocomplete popup */ +.acpopup { + max-height:150px; + background-color:#ffffff; + overflow:auto; + z-index:100000; + border:1px solid #cccccc; +} +.acpopupitem { + background-color:#ffffff; padding: 4px; + clear:left; +} +.acpopupitem img { + float: left; + margin-right: 4px; +} + +.acpopupitem.selected { + color: #FFFFFF; background: #3465A4; +} + +/* popup notifications */ +div.jGrowl div.notice { + background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center; + color: #ffffff; + padding-left: 58px; +} +div.jGrowl div.info { + background: #364e59 url("../../../images/icons/48/info.png") no-repeat 5px center; + color: #ffffff; + padding-left: 58px; +} +#jGrowl.top-right { + top: 15px; + right: 15px; +} +.qcomment { + border: 1px solid #EEE; + padding: 3px; + margin-top: 15px; + margin-left: 25px; + width: 125px; + overflow-y: auto; +} + + +.qcomment option { + width: 125px; + overflow-x: hidden; +} + +.qcomment { + opacity: 0.3; + filter:alpha(opacity=30); +} +.qcomment:hover { + opacity: 1.0; + filter:alpha(opacity=100); +} + +/* notifications popup menu */ +.nav-notify { + display: none; + position: absolute; + font-size: 10px; + padding: 1px 3px; + top: 0px; + right: -10px; + min-width: 15px; + text-align: right; +} +.nav-notify.show { + display: block; +} +ul.notifications-menu-popup { + position: absolute; + display: none; + width: 10em; + margin: 0px; + padding: 0px; + list-style: none; + z-index: 100000; + right: 0px; +} +#nav-notifications-menu { + width: 320px; + max-height: 400px; + overflow-y: scroll;overflow-style:scrollbar; + background-color:#FFFFFF; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius:5px; + border: 1px solid #AAA; + -moz-box-shadow: 3px 3px 5px #555; + -webkit-box-shadow: 3px 3px 5px #555; + box-shadow: 3px 3px 5px #555; +} +#nav-notifications-menu .contactname { font-weight: bold; font-size: 0.9em; } +#nav-notifications-menu img { float: left; margin-right: 5px; } +#nav-notifications-menu .notif-when { font-size: 0.8em; display: block; } +#nav-notifications-menu li { + padding: 7px 0px 7px 10px; + word-wrap:normal; + border-bottom: 1px solid #000; +} + +#nav-notifications-menu li:hover { + +} + +#nav-notifications-menu a:hover { + text-decoration: underline; +} + +.notif-item a { + color: #000000; +} + +.notif-item a:hover { + text-decoration: underline; +} + +.notif-image { + width: 32px; + height: 32px; + padding: 7px 7px 0px 0px; +} + +.notify-seen { + background: #DDDDDD; +} + +#id_term_label { + width:75px; +} +#id_term { + width:100px; +} + +#recip { + +} +.autocomplete-w1 { background: #ffffff; no-repeat bottom right; position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; } +.autocomplete { color:#000; border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; } +.autocomplete .selected { background:#F0F0F0; } +.autocomplete div { padding:2px 5px; white-space:nowrap; overflow:hidden; } + +#datebrowse-sidebar select { + margin-left: 40px; + width: 130px; +} + +#theme-version { + display: block; + font-weight: bold; +} +#theme-credits { + margin-top: 15px; + margin-bottom: 15px; +} diff --git a/view/theme/frost/style.css.orig b/view/theme/frost/style.css.orig new file mode 100644 index 000000000..f8483c004 --- /dev/null +++ b/view/theme/frost/style.css.orig @@ -0,0 +1,3658 @@ +/** + * duepuntozero Frindika style + * Fabio Comuni + * + * Heavily modified for Frost + * Zach P + */ + + +/* generals */ +body { + font-family: helvetica,arial,freesans,clean,sans-serif; + font-size: 12px; +/* line-height: 24px;*/ + background-color: #ffffff; + background-image: url(head.jpg); + background-repeat: repeat-x; + color: #505050; + margin: 0px; +} + +div.container { + display: block; + width: 785 px; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; +} + +a, a:visited, a:link { color: #3465a4; text-decoration: none; } +a:hover {text-decoration: underline; } + +input { + border: 1px solid #666666; + -moz-border-radius: 3px; + border-radius: 3px; + padding: 3px; +} + +img { border :0px; } + +#id_openid_url, .openid input { + background: url(login-bg.gif) no-repeat; + background-position: 0 50%; + padding-left: 18px; +} +.openid:hover { + +} + +#id_openid_url { + width: 384px; +} + +code { + font-family: Courier, monospace; + white-space: pre; + display: block; + overflow: auto; + border: 1px solid #444; + background: #EEE; + color: #444; + padding: 10px; + margin-top: 20px; +} + +blockquote { + background-color: #f4f8f9; + border-left: 4px solid #dae4ee; + padding: 0.4em; +} + +.icollapse-wrapper, .ccollapse-wrapper { + border: 1px solid #CCC; + padding: 5px; +} + +.hide-comments-outer { + margin-left: 0px; + font-weight: 700; + opacity: 0.4; +} +.hide-comments-outer:hover { + opacity: 1.0; +} +.hide-comments { + margin-left: 5px; +} + +#panel { + background-color: ivory; + position: absolute; + z-index: 2; + width: 30%; + padding: 25px; + border: 1px solid #444; +} + +.heart { + color: #FF0000; + font-size: 100%; + margin-right: 5px; +} + + + +/* nav */ +nav { + height: 94px; + width: 1100px; + display: block; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; +} +nav #site-location { + color: #888a85; + font-size: 0.8em; + position: absolute; +} + +.error-message { + color: #FF0000; + font-size: 1.1em; + border: 1px solid #FF8888; + background-color: #FFEEEE; + padding: 10px; +} + +.info-message { + color: #204a87; + font-size: 1.1em; + border: 1px solid #3465a4; + background-color: #d7e3f1; + padding: 10px; +} + + +nav #banner { + display: block; + margin-top: 14px; + position: absolute; +} +nav #banner #logo-text a { + font-size: 40px; + font-weight: bold; + margin-left: 3px; + color: #000000; + +} +nav #banner #logo-text a:hover { text-decoration: none; } + + +/* ZP REMOVE? nav-commlink */ +.nav-commlink, .nav-login-link { + display: block; + height: 15px; + margin-top: 67px; + margin-right: 2px; + /*padding: 6px 10px;*/ + padding: 6px 3px; + float: left; + bottom: 140px; + border: 1px solid #babdb6; + border-bottom: 0px; + background-color: #aec0d3; + color: #565854; + -moz-border-radius: 3px 3px 0px 0px; + border-radius: 3px 3px 0px 0px; +} + +.nav-commlink.selected { + background-color: #ffffff; + border-bottom: 1px solid #ffffff; + color: #000000 !important; + margin-top: 64px; + padding-top: 6px; + padding-bottom: 8px; +} + +.nav-ajax-left.show { + position: absolute; + font-size: 0.8em; + top: 25px; + right: 5px; + padding: 1px 2px; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + background-color: gold !important; +} + + + +nav #nav-link-wrapper .nav-link { + /*border-right: 1px solid #babdb6;*/ +} + +nav .nav-link img { + margin-top: 24px; + margin-bottom: 0.2em; + margin-right: 1em; + margin-left: 1em; + background-color: transparent !important; +} + +.nav-button-container { + float: right; + position: relative; +} + +.nav-button-container .nav-ajax-left { +} +/* +#system-menu-list { + line-height: 18px; + position: absolute; + right: -33px; + width: 10em; + padding: 1em 0px; +} + +#contacts-menu-list { + line-height: 18px; + position: absolute; + right: -33px; + width: 10em; + padding: 1em 0px; +} + +#network-menu-list { + line-height: 18px; + position: absolute; + right: -33px; + width: 10em; + padding: 1em 0px; +} +*/ +.nav-menu-list { + text-align: center; + line-height: 18px; + + border-left: 1px solid #AAAAAA;/*#444444;*/ + border-right: 1px solid #AAAAAA; + border-top: 1px solid #AAAAAA; + border-bottom: 1px solid #AAAAAA; + + -moz-box-shadow: 3px 3px 5px #555; + -webkit-box-shadow: 3px 3px 5px #555; + box-shadow: 3px 3px 5px #555; + + background: #FFFFFF; + + display: none; + list-style: none; + + width: 10em; + position: absolute; + margin: 0px; + right: -33px; + padding: 1em 0px; + + z-index: 10000; +} + + + +div.main-container { + width: 1180px; + margin: 0px auto; + display: block; + position: relative; +} + +div.main-content-loading { + position: absolute; + top: 200px; + left: 50%; + display: none; +} + + +/* aside */ +aside { + display: block; + min-height: 112px; + + width: 250px; + + padding: 1em; + margin: 1em 0px 0px 0px; + + position: absolute; + +/* float:left;*/ +} + +#dfrn-request-link { + display: block; + color: #FFFFFF; + -webkit-border-radius: 5px ; + -moz-border-radius: 5px; + border-radius: 5px; + padding: 5px; + font-weight: bold; + background: #3465a4 url('friendika-16.png') no-repeat 95% center; +} +#wallmessage-link { + display: block; + color: #FFFFFF; + -webkit-border-radius: 5px ; + -moz-border-radius: 5px; + border-radius: 5px; + padding: 5px; + font-weight: bold; + background-color: #3465a4; +} + +/* section */ +div.section-wrapper { + width: 565px; + + margin-left: auto; + margin-right: auto; + + padding-right:2em; + + display: block; + + background-color: #ffffff; + background-image: url(border.jpg); + background-position: top right; + background-repeat: no-repeat; +} + +section { + margin: 0px 0px 0px 0px; + + width: 100%; + + padding-left: 1em; + padding-right: 1em; + padding-top: 1em; + + background-image: url(border.jpg); + background-position: top left; + background-repeat: no-repeat; + + min-height: 112px; + border-top: 1px solid #babdb6; +} + +.tabs { + height: 27px; + background-image: url(head.jpg); + background-repeat: repeat-x; + background-position: 0px -20px; + border-bottom: 1px solid #babdb6; + padding:0px; +} +.tabs li { margin: 0px; list-style: none; } +.tab { + display:block; + float:left; + padding: 0.4em; + /*margin-right: 1em;*/ + margin-right: 3px ; +} +.tab.active { + font-weight: bold; + +} + + +/* footer */ +footer { + display: none; + +} + +.birthday-today, .event-today { + font-weight: bold; +} +/* +div.wall-item-content-wrapper.shiny { + background-image: url('shiny.png'); + background-position: -5px 30px; + background-repeat:no-repeat; +}*/ + +.preview { + background: #FFFFC8; +} + +#theme-preview { + margin: 15px 0 15px 150px; +} + +/* from default */ +#jot-perms-icon, +#profile-location, +#profile-nolocation, +#profile-youtube, +#profile-video, +#profile-audio, +#profile-link, +#profile-title, +#wall-image-upload, +#wall-file-upload, +#profile-upload-wrapper, +#wall-image-upload-div, +#wall-file-upload-div, +.hover, .focus { + cursor: pointer; +} + +#jot-perms-icon { + float: left; +} + +#jot-title, #jot-category { + border: 0px; + margin: 0px; + height: 20px; + width: 530px; + margin-bottom: 5px; + font-weight: bold; + border: 1px solid #ffffff; +} + +#jot-title::-webkit-input-placeholder{font-weight: normal;} +#jot-category::-webkit-input-placeholder{font-weight: normal;} +#jot-title:-moz-placeholder{font-weight: normal;} +#jot-category:-moz-placeholder{font-weight: normal;} + + +#jot-title:hover, +#jot-title:focus, +#jot-category:hover, +#jot-category:focus { + border: 1px solid #cccccc; +} + +.jothidden { display:none; } + + +.fakelink, .fakelink:visited, .fakelink:link { + color: #3465a4; + text-decoration: none; + cursor: pointer; + margin-top: 15px; + margin-bottom: 15px; +} +.lockview { + cursor: pointer; +} + +#group-sidebar { + margin-bottom: 10px; +} + +.group-selected, .nets-selected, .fileas-selected, .categories-selected { + padding: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + border: 1px solid #CCCCCC; + background: #F8F8F8; + font-weight: bold; +} + +.settings-widget .selected { + padding: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + border: 1px solid #CCCCCC; + background: #F8F8F8; + font-weight: bold; +} + +.fakelink:hover { + color: #3465a4; + text-decoration: underline; + cursor: pointer; +} +.smalltext { + font-size: 0.7em; +} +#sysmsg { + /*width: 600px;*/ + margin-bottom: 10px; +} + +#register-fill-ext { + margin-bottom: 25px; +} + +#label-register-name, #label-register-email, #label-register-nickname, #label-register-openid { + float: left; + width: 350px; + margin-top: 10px; +} + +#register-name, #register-email, #register-nickname { + float: left; + margin-top: 10px; + width: 150px; +} + +#register-openid { + float: left; + margin-top: 10px; + width: 130px; +} + +#register-name-end, #register-email-end, #register-nickname-end, #register-submit-end, #register-openid-end { + clear: both; +} + +#register-nickname-desc { + margin-top: 30px; + width: 650px; +} +#register-sitename { + float: left; + margin-top: 10px; +} + +#register-submit-button { + margin-top: 10px; +} + + +#login_standard { + width: 210px; + float: left; +} +#login_openid { + width: 210px; + margin-left: 250px; +} + +#login_standard input, +#login_openid input { + width: 180px; +} + +#login-extra-links { + clear: both; +} + +#register-link, #lost-password-link { + float: left; + font-size: 80%; + margin-right: 15px; +} + +#login-name-end, #login-password-end, #login-extra-end, #login-submit-end { + height: 50px; +} + +#login-submit-button { +/* margin-top: 10px; */ + margin-left: 200px; +} + + +input#dfrn-url { + float: left; + background: url(friendika-16.png) no-repeat; + background-position: 2px center; + font-size: 17px; + padding-left: 21px; + height: 21px; + background-color: #FFFFFF; + color: #000000; + margin-bottom: 20px; +} + +#dfrn-url-label { + float: left; + width: 250px; +} + +#dfrn-request-url-end { + clear: both; +} + +#knowyouyes, #knowyouno { + float: left; +} + +#dfrn-request-knowyou-yes-wrapper, #dfrn-request-knowyou-no-wrapper { + + float: none; +} +#dfrn-request-knowyou-yes-label, #dfrn-request-knowyou-no-label { + float: left; + width: 75px; + margin-left: 50px; + margin-bottom: 7px; +} +#dfrn-request-knowyou-break, #dfrn-request-knowyou-end { + clear: both; + +} + +#dfrn-request-message-wrapper { + margin-bottom: 50px; +} +#dfrn-request-submit-wrapper { + clear: both; + margin-left: 50px; +} + +#dfrn-request-info-wrapper { + margin-left: 50px; +} + + + +#cropimage-wrapper, #cropimage-preview-wrapper { + float: left; + padding: 30px; +} + +#crop-image-form { + margin-top: 30px; + clear: both; +} + +.intro-wrapper { + margin-top: 20px; +} + +.intro-fullname { + font-size: 1.1em; + font-weight: bold; + +} +.intro-desc { + margin-bottom: 20px; + font-weight: bold; +} + +.intro-note { + padding: 10px; +} + +.intro-end { + padding: 30px; +} + +.intro-form { + float: left; +} +.intro-approve-form { + clear: both; +} +.intro-approve-as-friend-end { + clear: both; +} +.intro-submit-approve, .intro-submit-ignore { + margin-right: 20px; +} +.intro-submit-approve { + margin-top: 15px; +} + +.intro-approve-as-friend-label, .intro-approve-as-fan-label { + float: left; + width: 100px; + margin-left: 20px; +} +.intro-approve-as-friend, .intro-approve-as-fan { + float: left; +} +.intro-form-end { + clear: both; +} +.intro-approve-as-friend-desc { + margin-top: 15px; +} +.intro-approve-as-end { + clear: both; + margin-bottom: 10px; +} + +.intro-end { + clear: both; + margin-bottom: 30px; +} +.aprofile dt { + font-weight: bold; +} +#page-profile .title { + font-weight: bold; +} +#profile-vcard-break { + clear: both; +} +#profile-extra-links { + clear: both; + margin-top: 10px; +} + +#profile-extra-links ul { + list-style-type: none; + padding: 0px; +} + + +#profile-extra-links li { + margin-top: 5px; +} + +#profile-edit-links ul { + list-style-type: none; +} + +#profile-edit-links li { + margin-top: 10px; +} +.profile-edit-side-div { + float: right; +} +.profile-edit-side-link { + opacity: 0.3; + filter:alpha(opacity=30); +} +.profile-edit-side-link:hover { + opacity: 1.0; + filter:alpha(opacity=100); +} + +.view-contact-wrapper { + margin-top: 20px; + float: left; + margin-left: 20px; + width: 180px; +} + +.contact-wrapper { + float: left; + width: 150px; + height: 150px; + overflow: auto; +} + +#view-contact-end { + clear: both; +} + + +#viewcontacts { + margin-top: 15px; +} +#profile-edit-default-desc { + color: #FF0000; + border: 1px solid #FF8888; + background-color: #FFEEEE; + padding: 7px; +} + +#profile-edit-clone-link-wrapper { + float: left; + margin-left: 50px; + margin-bottom: 20px; + width: 300px; +} + + +#profile-edit-links-end { + clear: both; + margin-bottom: 15px; +} + +.profile-listing-photo { + border: none; +} + +.profile-edit-submit-wrapper { + margin-top: 20px; + margin-bottom: 20px; +} + +#profile-photo-link-select-wrapper { + margin-top: 2em; +} + +#profile-photo-submit-wrapper { + margin-top: 10px; +} + +#profile-photo-wrapper img { + width:175px; + height:175px; + padding: 12px; +} + +#profile-edit-profile-name-label, +#profile-edit-name-label, +#profile-edit-pdesc-label, +#profile-edit-gender-label, +#profile-edit-dob-label, +#profile-edit-address-label, +#profile-edit-locality-label, +#profile-edit-region-label, +#profile-edit-postal-code-label, +#profile-edit-country-name-label, +#profile-edit-marital-label, +#profile-edit-sexual-label, +#profile-edit-politic-label, +#profile-edit-religion-label, +#profile-edit-pubkeywords-label, +#profile-edit-prvkeywords-label, +#profile-edit-homepage-label, +#profile-edit-hometown-label { + float: left; + width: 175px; +} + +#profile-edit-profile-name, +#profile-edit-name, +#profile-edit-pdesc, +#gender-select, +#profile-edit-dob, +#profile-edit-address, +#profile-edit-locality, +#profile-edit-region, +#profile-edit-postal-code, +#profile-edit-country-name, +#marital-select, +#sexual-select, +#profile-edit-politic, +#profile-edit-religion, +#profile-edit-pubkeywords, +#profile-edit-prvkeywords, +#profile-in-dir-yes, +#profile-in-dir-no, +#profile-in-netdir-yes, +#profile-in-netdir-no, +#hide-wall-yes, +#hide-wall-no, +#hide-friends-yes, +#hide-friends-no { + float: left; + margin-bottom: 20px; +} +#settings-normal, +#settings-soapbox, +#settings-freelove, +#settings-community { + float: left; +} +#settings-notifications label { + margin-left: 20px; +} +#settings-notify-desc, #settings-activity-desc { + font-weight: bold; + margin-bottom: 15px; +} +#settings-pagetype-desc { + color: #666666; + margin-bottom: 15px; +} + +#profile-in-dir-yes-label, +#profile-in-dir-no-label, +#profile-in-netdir-yes-label, +#profile-in-netdir-no-label, +#hide-wall-yes-label, +#hide-wall-no-label, +#hide-friends-yes-label, +#hide-friends-no-label { + margin-left: 125px; + float: left; + width: 50px; +} + +#profile-edit-with-label { + width: 175px; + margin-left: 20px; +} + +#profile-publish-yes-reg, +#profile-publish-no-reg { + float: left; + margin-bottom: 10px; +} + +#profile-publish-yes-label-reg, +#profile-publish-no-label-reg { + margin-left: 350px; + float: left; + width: 50px; +} + +#profile-publish-break-reg, +#profile-publish-end-reg { + clear: both; +} + + +#profile-edit-pdesc-desc, +#profile-edit-pubkeywords-desc, +#profile-edit-prvkeywords-desc { + float: left; + margin-left: 20px; +} + + +#profile-edit-homepage, #profile-edit-hometown { + float: left; + margin-bottom: 35px; +} +#settings-normal-label, +#settings-soapbox-label, +#settings-community-label, +#settings-freelove-label { + float: left; + width: 200px; +} +#settings-normal-desc, +#settings-soapbox-desc, +#settings-community-desc, +#settings-freelove-desc { + /*float: left; + margin-left: 75px;*/ + clear: left; + color: #666666; + display: block; + margin-bottom: 20px +} + +#profile-edit-profile-name-end, +#profile-edit-name-end, +#profile-edit-pdesc-end, +#profile-edit-gender-end, +#profile-edit-dob-end, +#profile-edit-address-end, +#profile-edit-locality-end, +#profile-edit-region-end, +#profile-edit-postal-code-end, +#profile-edit-country-name-end, +#profile-edit-marital-end, +#profile-edit-sexual-end, +#profile-edit-politic-end, +#profile-edit-religion-end, +#profile-edit-pubkeywords-end, +#profile-edit-prvkeywords-end, +#profile-edit-homepage-end, +#profile-edit-hometown-end, +#profile-in-dir-break, +#profile-in-dir-end, +#profile-in-netdir-break, +#profile-in-netdir-end, +#hide-wall-break, +#hide-wall-end, +#hide-friends-break, +#hide-friends-end, +#settings-normal-break, +#settings-soapbox-break, +#settings-community-break, +#settings-freelove-break { + clear: both; +} + +.settings-widget ul { + list-style-type: none; + padding: 0px; +} + +.settings-widget li { + margin-left: 24px; + margin-bottom: 8px; +} + + +#gender-select, #marital-select, #sexual-select { + width: 220px; +} + +#profile-edit-profile-name-wrapper .required { + color: #FF0000; + float: left; +} + +#contacts-display-wrapper { + padding-left: 0px; +} + +#contacts-main { + margin-top: 20px; + margin-bottom: 20px; +} + +.contact-entry-wrapper { + float: left; +/* width: 120px; + height: 120px;*/ + padding-right: 17px; + width: 95px; + height: 170px; +} +#contacts-search-end { + margin-bottom: 10px; +} + +.contact-entry-direction-icon { + margin-top: 24px; + margin-right: 2px; +} + +.contact-entry-photo img { + border: none; +} +.contact-entry-photo-end { + clear: both; +} +.contact-entry-name { + float: left; + margin-left: 0px; + margin-right: 10px; + padding-bottom: 5px; + width: 120px; + font-weight: 600; + overflow: hidden; +} +.contact-entry-details { + font-style: italic; + font-size: 10px; + font-weight: 500; +} +.contact-entry-network { + font-size: 10px; + font-weight: 500; +} +.contact-entry-edit-links { + margin-top: 6px; + margin-left: 10px; + width: 16px; +} +.contact-entry-nav-wrapper { + float: left; + margin-left: 10px; +} + +.contact-entry-edit-links img { + border: none; + margin-right: 15px; +} +.contact-entry-photo { + float: left; + position: relative; +} +.contact-entry-end { + clear: both; +} + +#fsuggest-desc, #fsuggest-submit-wrapper { + margin-top: 15px; + margin-bottom: 15px; +} + +#network-star-link{ + margin-top: 10px; +} +.network-star { + float: left; + margin-right: 5px; +} +#network-bmark-link { + margin-top: 10px; +} + +.wall-item-content-wrapper { + margin-top: 60px; + padding-top: 30px; + border-top: 2px solid #AAA; + position: relative; + +} + +.wall-item-content-wrapper.comment { + margin-top: 10px; + padding-top: none; + margin-left: 50px; + border: none; +} + +.wall-item-like, .wall-item-dislike { + font-style: italic; + margin-left: 0px; + opacity: 0.4; +} +.wall-item-like:hover, .wall-item-dislike:hover { + opacity: 1.0; +} + +.wall-item-like.comment, .wall-item-dislike.comment { + margin-left: 50px; +} + +.wall-item-info { + display: block; + float: left; + width:110px; + margin-right:10px; +} +.comment .wall-item-info { + width: 70px; +} + +.wall-item-photo-wrapper { + margin-bottom: 10px; + width: 100px; +} +.wall-item-photo-menu-button { + display: block; + position: absolute; + background-image: url("photo-menu.jpg"); + background-position: top left; + background-repeat: no-repeat; + margin: 0px; padding: 0px; + width: 16px; + height: 16px; + top: 94px; left:0px; + overflow: hidden; + text-indent: 40px; + display: none; + +} +.wall-item-photo-menu { + width: auto; + border: 2px solid #444444; + background: #FFFFFF; + position: absolute; +/* left: 10px; top: 90px;*/ + left: 0px; top:110px; + display: none; + z-index: 10000; +} +.wall-item-photo-menu ul { margin:0px; padding: 0px; list-style: none } +.wall-item-photo-menu li a { display: block; padding: 2px; } +.wall-item-photo-menu li a:hover { color: #FFFFFF; background: #3465A4; text-decoration: none; } + + +.comment .wall-item-photo-menu-button { /*top: 44px;*/ top: 64px;} +.comment .wall-item-photo-menu { /*top: 60px;*/ top: 80px; } + +.wallwall .wwto { + left: 50px; + margin: 0; + position: absolute; + top: 70px; + width: 30px +} +.wallwall .wwto img { + width: 30px !important; + height: 30px !important; +} + +.wallwall .wall-item-photo-end { + clear: both; +} + +.wall-item-arrowphoto-wrapper { + position: absolute; + left: 75px; + top: 70px; + z-index: 100; +} +.wall-item-wrapper { + margin-left:10px; +} +.wall-item-lock { + margin-top: 30px; + left: 105px; + position: absolute; + top: 1px; +} +.comment .wall-item-lock { + left: 65px; +} + +.wall-item-ago { + color: #888888; + font-size: 0.8em; +} + +.wall-item-location { + overflow: hidden; + /* add ellipsis on text overflow */ + /* this work on safari, opera, ie, chrome. */ + /* firefox users have to wait support or we */ + /* can use a jquery plugin http://bit.ly/zJskg */ + text-overflow: ellipsis; + -o-text-overflow: ellipsis; + width: 100%; +} + +.wall-item-like-buttons { + float: left; + margin-right: 10px; +/* padding-right: 10px; */ +/* border-right: 2px solid #fff; */ +} + +.like-rotator { + margin-left: 5px; +} + +.wall-item-like-buttons > a, +.wall-item-like-buttons > img { + float: left; +} + +.wall-item-like-buttons img { + cursor: pointer; +} + +.wall-item-share-buttons { + margin-left: 10px; + margin-right: 10px; +} + +.editpost { + margin-left: 10px; + float: left; +} +.star-item { + margin-left: 10px; + float: left; +} +.tag-item { + margin-left: 10px; + float: left; +} + +.filer-item { + margin-left: 10px; + float: left; +} + +.wall-item-links-wrapper { + float: left; +} + +.wall-item-delete-wrapper { + float: right; +} + +.wall-item-delete-end { + clear: both; +} + +.wall-item-delete-icon { + border: none; +} + + +.wall-item-wrapper-end { + clear: both; +} +.wall-item-name-link { + font-weight: bold; + text-decoration: none; + color: #3172BD; +} +.wall-item-photo { + border: none; +} +.comment .wall-item-photo { + width: 50px !important; + height: 50px !important; +} +.wall-item-content { + margin-left: 10px; + padding-right: 1em; + max-height: 500px; + overflow: auto; +} + +.wall-item-content img { + max-width: 100%; +} + + + +.wall-item-title { + float: left; + font-weight: bold; + font-size: 1.6em; + /*width: 450px;*/ +} + +.wall-item-title-end { + clear: both; +} + +.wall-item-body { + text-align: justify; + float: left; + /*width: 450px;*/ + width: 100%; + margin-top: 10px; + line-height: 18px; +} + +.wall-item-tools { + clear: both; +/* background-image: url("head.jpg"); + background-position: 0 -20px; + background-repeat: repeat-x;*/ + margin-top: 10px; + margin-left: 0px; + margin-bottom: 7px; +/* padding: 5px 10px 0px;*/ + padding: 5px 10px 0px 2px; + height: 28px; + border-bottom: 1px solid #ddd; +} +.wall-item-author { +/* margin-top: 10px;*/ + margin-top: 0px; +} + +.comment .wall-item-tools { +/* background:none;*/ +/* background-image: url("head.jpg"); + background-position: 0 -20px; + background-repeat: repeat-x;*/ + margin-left: 0px; +} + +.comment-edit-wrapper { + margin-top: 15px; + background: #f3f3f3; + margin-left: 50px; +} + +.comment-wwedit-wrapper { + margin-top: 15px; + background: #f3f3f3; + margin-left: 50px; +} + +.comment-edit-photo { + margin-top: 10px; + margin-left: 10px; + margin-bottom: 10px; + width: 70px; + float: left; +} +.comment-edit-photo img { + width: 25px; +} +.comment-edit-text-empty, .comment-edit-text-full { + float: left; + margin-top: 10px; + -moz-border-radius: 3px; + border-radius: 3px; + border: 1px solid #cccccc; + padding: 3px 1px 1px 3px; +} + +.comment-edit-text-empty { + color: gray; + height: 30px; + width: 175px; + overflow: auto; + margin-bottom: 10px; +} + +.comment-edit-text-full { + color: black; + height: 150px; + width: 350px; + overflow: auto; +} + +.comment-edit-text-end { + clear: both; +} + +.comment-edit-submit { + margin: 10px 0px 10px 110px; +} + +#profile-jot-plugin-wrapper, +#profile-jot-submit-wrapper { + margin-top: 15px; +} + +#profile-jot-submit { + float: left; +} +#profile-upload-wrapper { + float: left; + margin-left: 30px; +} +#profile-attach-wrapper { + float: left; + margin-left: 15px; +} +#profile-rotator { + float: left; + margin-left: 30px; +} +#profile-link-wrapper { + float: left; + margin-left: 30px; +} +#profile-youtube-wrapper { + float: left; + margin-left: 15px; +} +#profile-video-wrapper { + float: left; + margin-left: 15px; +} +#profile-audio-wrapper { + float: left; + margin-left: 15px; +} +#profile-location-wrapper { + float: left; + margin-left: 15px; +} +#jot-preview-link { + float: left; + margin-left: 45px; + margin-top: 0px !important; +} + + +#profile-nolocation-wrapper { + float: left; + margin-left: 15px; +} +#profile-title-wrapper { + float: left; + margin-left: 15px; +} + +#profile-jot-perms { + float: left; + margin-left: 100px; + font-weight: bold; + font-size: 1.2em; +} + + +#profile-jot-perms-end { + /*clear: left;*/ + height: 30px; +} + +#profile-jot-plugin-end{ + clear: both; +} +.profile-jot-net { + float: left; + margin-right: 10px; + margin-top: 5px; + margin-bottom: 5px; +} + +#profile-jot-networks-end { + clear: both; +} + +#profile-jot-end { + /*clear: both;*/ + margin-bottom: 30px; +} +#about-jot-submit-wrapper { + margin-top: 15px; +} +#about-jot-end { + margin-bottom: 30px; +} +#contacts-main { + margin-bottom: 30px; +} + +#profile-listing-desc { + margin-left: 30px; +} + +#profile-listing-new-link-wrapper { + margin-left: 30px; + margin-bottom: 30px; +} +.profile-listing-photo-wrapper { + float: left; +} + +.profile-listing-edit-buttons-wrapper { + clear: both; +} +.profile-listing-photo-edit-link { + float: left; + width: 125px; +} +.profile-listing-end { + clear: both; +} +.profile-listing-edit-buttons-wrapper img{ + border: none; + margin-right: 20px; +} +.profile-listing { + margin-top: 25px; +} +.profile-listing-name { + float: left; + margin-left: 32px; + margin-top: 10px; + color: #3172BD; + font-weight: bold; + width: 200px; + +} +.fortune { + margin-top: 50px; + color: #4444FF; + font-weight: bold; + margin-bottom: 20px; +} + + +.directory-end { + clear: both; +} +.directory-name { + text-align: center; +} +.directory-photo { + margin-left: 25px; +} +.directory-details { + font-size: 0.7em; + text-align: center; + margin-left: 5px; + margin-right: 5px; +} +.directory-item { + float: left; +/* width: 225px; + height: 260px;*/ + padding-left: 25px; + width: 150px; + height: 225px; + overflow: auto; +} + +#directory-search-wrapper { + margin-top: 20px; + margin-right: 20px; + margin-bottom: 50px; +} + +#directory-search-end { +} + +.directory-photo-img { + width: 125px; + border: none; +} + + +.pager { + margin-top: 35px; + margin-bottom: 20px; + padding: 10px; + text-align: center; + font-size: 1.0em; +} + + +.pager_first, +.pager_last, +.pager_prev, +.pager_next, +.pager_n { +/* background: #EEE;*/ +} + +.pager_first a, +.pager_last a, +.pager_prev a, +.pager_next a, +.pager_n a { + border: 1px solid black; + border-radius: 7px; + text-decoration: none; + padding: 4px 6px 4px 3px; + opacity: 0.5; +} +.pager_first a:hover, +.pager_last a:hover, +.pager_prev a:hover, +.pager_next a:hover, +.pager_n a:hover { + opacity: 1.0; +} + +.pager_current { + border: 1px solid black; + border-radius: 7px; + background: #FFCCCC; + padding: 4px 6px 4px 3px; +} + + +#advanced-profile-name-wrapper, +#advanced-profile-gender-wrapper, +#advanced-profile-dob-wrapper, +#advanced-profile-age-wrapper, +#advanced-profile-marital-wrapper, +#advanced-profile-sexual-wrapper, +#advanced-profile-homepage-wrapper, +#advanced-profile-politic-wrapper, +#advanced-profile-religion-wrapper, +#advanced-profile-about-wrapper, +#advanced-profile-interest-wrapper, +#advanced-profile-contact-wrapper, +#advanced-profile-music-wrapper, +#advanced-profile-book-wrapper, +#advanced-profile-tv-wrapper, +#advanced-profile-film-wrapper, +#advanced-profile-romance-wrapper, +#advanced-profile-work-wrapper, +#advanced-profile-education-wrapper { + margin-top: 20px; +} + +#advanced-profile-name-text, +#advanced-profile-gender-text, +#advanced-profile-dob-text, +#advanced-profile-age-text, +#advanced-profile-marital-text, +#advanced-profile-sexual-text, +#advanced-profile-homepage-text, +#advanced-profile-politic-text, +#advanced-profile-religion-text, +#advanced-profile-about-text, +#advanced-profile-interest-text, +#advanced-profile-contact-text, +#advanced-profile-music-text, +#advanced-profile-book-text, +#advanced-profile-tv-text, +#advanced-profile-film-text, +#advanced-profile-romance-text, +#advanced-profile-work-text, +#advanced-profile-education-text { + width: 300px; + float: left; +} + +#advanced-profile-name-end, +#advanced-profile-gender-end, +#advanced-profile-dob-end, +#advanced-profile-age-end, +#advanced-profile-marital-end, +#advanced-profile-sexual-end, +#advanced-profile-homepage-end, +#advanced-profile-politic-end, +#advanced-profile-religion-end { + height: 10px; +} + +#advanced-profile-about-end, +#advanced-profile-interest-end, +#advanced-profile-contact-end, +#advanced-profile-music-end, +#advanced-profile-book-end, +#advanced-profile-tv-end, +#advanced-profile-film-end, +#advanced-profile-romance-end, +#advanced-profile-work-end, +#advanced-profile-education-end { + + +} + +#advanced-profile-name, +#advanced-profile-gender, +#advanced-profile-dob, +#advanced-profile-age, +#advanced-profile-marital, +#advanced-profile-sexual, +#advanced-profile-homepage, +#advanced-profile-politic, +#advanced-profile-religion { + float: left; + +} + + +#advanced-profile-about, +#advanced-profile-interest, +#advanced-profile-contact, +#advanced-profile-music, +#advanced-profile-book, +#advanced-profile-tv, +#advanced-profile-film, +#advanced-profile-romance, +#advanced-profile-work, +#advanced-profile-education { + margin-top: 10px; + margin-left: 50px; + margin-right: 20px; + padding: 10px; + border: 1px solid #CCCCCC; +} + +#advanced-profile-with { + float: left; + margin-left: 15px; +} + +#contact-edit-wrapper { + margin-top: 10px; +} + +#contact-edit-banner-name { + font-size: 1.4em; + font-weight: bold; +} + +#contact-edit-poll-wrapper { + margin-top: 15px; +} + +#contact-edit-poll-text { + margin-top: 15px; + margin-bottom: 5px; +} + +#contact-edit-update-now { + margin-top: 15px; +} + +#contact-edit-links{ + clear: both; +} + +#contact-edit-links ul { + list-style: none; + list-style-type: none; + margin-left: 0px; + padding-left: 0px; +} + +#contact-edit-links li { + margin-top: 5px; +} + +#contact-edit-drop-link { + float: right; + margin-right: 20px; +} + +#contact-edit-nav-end { + clear: both; +} + +#contact-edit-wrapper { + width: 100%; +} + +#contact-edit-end { + clear: both; + margin-top: 15px; +} + +#contact-profile-selector { + width: 175px; + margin-left: 175px; +} + +.contact-edit-submit { + margin-top: 20px; +} + + +.contact-photo-menu-button { + position: absolute; + background-image: url("photo-menu.jpg"); + background-position: top left; + background-repeat: no-repeat; + margin: 0px; padding: 0px; + width: 16px; + height: 16px; + top: 64px; left:0px; + overflow: hidden; + text-indent: 40px; + display: none; + +} +.contact-photo-menu { + width: auto; + border: 2px solid #444444; + background: #FFFFFF; + position: absolute; + left: 0px; top: 90px; + display: none; + z-index: 10000; +} +.contact-photo-menu ul { margin:0px; padding: 0px; list-style: none } +.contact-photo-menu li a { display: block; padding: 2px; } +.contact-photo-menu li a:hover { color: #FFFFFF; background: #3465A4; text-decoration: none; } + + +#block-message, #ignore-message, #archive-message, #lost-contact-message { + color: #FF0000; +} + +#profile-edit-insecure { + margin-top: 20px; + color: #FF0000; + font-size: 1.1em; + border: 1px solid #FF8888; + background-color: #FFEEEE; + padding-left: 5px; + /*: 3px 3px 3px 5px; */ + width: 587px; +} + +#profile-jot-text { + height: 20px; + color:#cccccc; + border: 1px solid #cccccc; + padding: 3px 0px 0px 5px; + -moz-border-radius: 3px; + border-radius: 3px; +} + + +/** acl **/ +#photo-edit-perms-select, +#photos-upload-permissions-wrapper, +#profile-jot-acl-wrapper{ + display:block!important; +} + +#photos-usage-message { + margin-bottom: 15px; +} + + +#acl-wrapper { + width: 690px; + float:left; +} +#acl-search { + float:right; + background: #ffffff url("../../../images/search_18.png") no-repeat right center; + padding-right:20px; +} +#acl-showall { + float: left; + display: block; + width: auto; + height: 18px; + background-color: #cccccc; + background-image: url("../../../images/show_all_off.png"); + background-position: 7px 7px; + background-repeat: no-repeat; + padding: 7px 5px 0px 30px; + -webkit-border-radius: 5px ; + -moz-border-radius: 5px; + border-radius: 5px; + color: #999999; +} +#acl-showall.selected { + color: #000000; + background-color: #ff9900; + background-image: url("../../../images/show_all_on.png"); +} + +#acl-list { + height: 210px; + border: 1px solid #cccccc; + clear: both; + margin-top: 30px; + overflow: auto; +} +#acl-list-content { + +} +.acl-list-item { + display: block; + width: 150px; + height: 30px; + border: 1px solid #cccccc; + margin: 5px; + float: left; +} +.acl-list-item img{ + width:22px; + height: 22px; + float: left; + margin: 4px; +} +.acl-list-item p { height: 12px; font-size: 10px; margin: 0px; padding: 2px 0px 1px; overflow: hidden;} +.acl-list-item a { + font-size: 8px; + display: block; + width: 40px; + height: 10px; + float: left; + color: #999999; + background-color: #cccccc; + background-position: 3px 3px; + background-repeat: no-repeat; + margin-right: 5px; + -webkit-border-radius: 2px ; + -moz-border-radius: 2px; + border-radius: 2px; + padding-left: 15px; +} +#acl-wrapper a:hover { + text-decoration: none; + color:#000000; +} +.acl-button-show { background-image: url("../../../images/show_off.png"); } +.acl-button-hide { background-image: url("../../../images/hide_off.png"); } + +.acl-button-show.selected { + color: #000000; + background-color: #9ade00; + background-image: url("../../../images/show_on.png"); +} +.acl-button-hide.selected { + color: #000000; + background-color: #ff4141; + background-image: url("../../../images/hide_on.png"); +} +.acl-list-item.groupshow { border-color: #9ade00; } +.acl-list-item.grouphide { border-color: #ff4141; } +/** /acl **/ + + +#group-new-submit-wrapper { + margin-top: 30px; +} + +#group-edit-name-label { + float: left; + width: 175px; + margin-top: 20px; + margin-bottom: 20px; +} + +#group-edit-name { + float: left; + width: 225px; + margin-top: 20px; + margin-bottom: 20px; +} + +#group-edit-name-wrapper { + + +} + + +#group_members_select_label { + display: block; + float: left; + width: 175px; +} + +.group_members_select { + float: left; + width: 230px; + overflow: auto; +} + +#group_members_select_end { + clear: both; +} +#group-edit-name-end { + clear: both; +} + +#prvmail-to-label, #prvmail-subject-label, #prvmail-message-label { + margin-bottom: 10px; + margin-top: 20px; +} + +#prvmail-submit { + float: left; + margin-top: 10px; + margin-right: 30px; +} +#prvmail-upload-wrapper, +#prvmail-link-wrapper, +#prvmail-rotator-wrapper { + float: left; + margin-top: 10px; + margin-right: 10px; + width: 24px; +} + +#prvmail-end { + clear: both; +} + +.mail-list-sender, +.mail-list-detail { + float: left; +} +.mail-list-detail { + margin-left: 20px; +} + +.mail-list-subject { + font-size: 1.1em; + margin-top: 10px; +} +a.mail-list-link { + display: block; + font-size: 1.3em; + padding: 4px 0; +} + +/* +*a.mail-list-link:hover { +* background-color: #15607B; +* color: #F5F6FB; +*} +*/ + +.mail-list-outside-wrapper-end { + clear: both; +} + +.mail-list-outside-wrapper { + margin-top: 30px; +} + +.mail-list-delete-wrapper { + float: right; + margin-right: 30px; + margin-top: 15px; +} + +.mail-list-delete-icon { + border: none; +} + +.mail-conv-sender, +.mail-conv-detail { + float: left; +} +.mail-conv-detail { + margin-left: 20px; + width: 500px; +} + +.mail-conv-subject { + font-size: 1.4em; + margin: 10px 0; +} + +.mail-conv-outside-wrapper-end { + clear: both; +} + +.mail-conv-outside-wrapper { + margin-top: 30px; +} + +.mail-conv-delete-wrapper { + float: right; + margin-right: 30px; + margin-top: 15px; +} +.mail-conv-break { + clear: both; +} + +.mail-conv-delete-icon { + border: none; +} + +.message-links ul { + list-style-type: none; + padding: 0px; +} + +.message-links li { + margin-top: 10px; + float: left; +} +.message-links a { + padding: 3px 5px; +} + +.message-links-end { + clear: both; +} + +#sidebar-group-list ul { + list-style-type: none; +} + +#sidebar-group-list .icon, #sidebar-group-list .iconspacer { + display: inline-block; + height: 12px; + width: 12px; +} + +#sidebar-group-list li { + margin-top: 10px; +} + +.nets-ul, .fileas-ul, .categories-ul { + list-style-type: none; +} + +.nets-ul li, .fileas-ul li, .categories-ul li { + margin-top: 10px; +} + +.nets-link { + margin-left: 24px; +} +.nets-all { + margin-left: 42px; +} + +.fileas-link, .categories-link { + margin-left: 24px; +} + +.fileas-all, .categories-all { + margin-left: 0px; +} + +#search-save { + margin-left: 5px; +} +.groupsideedit { + margin-right: 10px; +} +#saved-search-ul { + list-style-type: none; +} +.savedsearchdrop, .savedsearchterm { + float: left; + margin-top: 10px; +} +.savedsearchterm { + margin-left: 10px; +} + + +#side-follow-wrapper { + margin-top: 20px; +} +#side-follow-url, #side-peoplefind-url { + margin-top: 5px; +} +#side-follow-submit, #side-peoplefind-submit { + margin-top: 15px; +} + +#side-match-link { + margin-top: 10px; +} + +aside input[type='text'] { + width: 174px; +} + +.widget { + border: 1px solid #DDDDDD; + padding: 8px; + margin-top: 5px; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; + +} + + +/*.photos { + height: auto; + overflow: auto; +}*/ + +.photos-end { + clear: both; + margin-bottom: 25px; +} + +.photo-album-image-wrapper { + float: left; + margin-top: 15px; + margin-right: 15px; + margin-left: 15px; +/* width: 200px; height: 200px; + overflow: hidden; + position: relative; */ +} +.photo-album-image-wrapper .caption { + display: none; + width: 100%; +/* position: absolute; */ + bottom: 0px; + padding: 0.5em 0.5em 0px 0.5em; + background-color: rgba(245, 245, 255, 0.8); + border-bottom: 2px solid #CCC; + margin: 0px; +} +.photo-album-image-wrapper a:hover .caption { + display:block; +} + +#photo-album-end { + clear: both; + margin-bottom: 25px; +} + +.photo-top-image-wrapper { +/* position: relative; */ + float: left; + margin-top: 15px; + margin-right: 15px; + margin-left: 15px; + margin-bottom: 15px; +/* width: 200px; height: 200px; + overflow: hidden; */ +} +.photo-top-album-name { + width: 100%; + min-height: 2em; +/* position: absolute; */ + bottom: 0px; + padding: 0px 3px; + padding-top: 0.5em; + background-color: rgb(255, 255, 255); +} +#photo-top-end { + clear: both; +} + +#photo-top-links { + margin-bottom: 30px; + margin-left: 30px; +} + +#photos-upload-newalbum-div { + float: left; + width: 175px; +} + +#photos-upload-noshare { + margin-bottom: 10px; +} +#photos-upload-existing-album-text { + float: left; + width: 175px; +} +#photos-upload-newalbum { + float: left; +} +#photos-upload-album-select { + float: left; +} + +#photos-upload-spacer { + margin-top: 25px; +} +#photos-upload-new-end, #photos-upload-exist-end { + clear: both; +} +#photos-upload-exist-end { + margin-bottom: 15px; +} +#photos-upload-submit { + margin-top: 15px; +} + +#photos_upload_applet_wrapper { + margin-bottom: 15px; +} + +#photos-upload-no-java-message { + margin-bottom: 15px; +} + +#profile-jot-desc { + /*float: left;*/ + /*width: 480px;*/ + width: 100%; + color: #FF0000; + margin-top: 10px; + margin-bottom: 10px; +} + +#character-counter { + float: right; + font-size: 120%; +} + +#character-counter.grey { + color: #888888; +} + +#character-counter.orange { + color: orange; +} +#character-counter.red { + color: red; +} + +#profile-jot-banner-end { + /* clear: both; */ +} + +#photos-upload-select-files-text { + margin-top: 15px; + margin-bottom: 15px; +} + +#photos-upload-perms-menu, #photos-upload-perms-menu:visited, #photos-upload-perms-menu:link { + color: #8888FF; + text-decoration: none; + cursor: pointer; +} + +#photos-upload-perms-menu:hover { + color: #0000FF; + text-decoration: underline; + cursor: pointer; +} +#settings-default-perms-menu { + margin-top: 15px; + margin-bottom: 15px; +} + +#photo-edit-caption-label, #photo-edit-tags-label, #photo-edit-albumname-label, #photo-edit-rotate-label { + float: left; + width: 150px; +} + +#photo-edit-perms-end { + margin-bottom: 15px; +} + +#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname, #photo-edit-rotate { + float: left; + margin-bottom: 25px; +} +#photo-edit-link-wrap { + margin-bottom: 15px; +} +#photo-like-div { + margin-bottom: 25px; +} + +#photo-edit-caption-end, #photo-edit-tags-end, #photo-edit-albumname-end, #photo-edit-rotate-end { + clear: both; +} + +#photo-edit-rotate-end { + margin-bottom: 15px; +} + +#photo-edit-delete-button { + margin-left: 200px; +} +#photo-edit-end { + margin-bottom: 35px; +} +#photo-caption { + font-size: 110%; + font-weight: bold; + margin-top: 15px; + margin-bottom: 15px; +} + +#in-this-photo-text { + color: #0000FF; + margin-left: 30px; +} + +#in-this-photo { + margin-left: 60px; + margin-top: 10px; + margin-bottom: 20px; +} + +#photo-album-edit-submit, #photo-album-edit-drop { + margin-top: 15px; + margin-bottom: 15px; +} + +#photo-album-edit-drop { + margin-left: 200px; +} + +.group-delete-wrapper { + float: right; + margin-right: 50px; +} + +#install-dbhost-label, +#install-dbuser-label, +#install-dbpass-label, +#install-dbdata-label, +#install-tz-desc { + float: left; + width: 250px; + margin-top: 10px; + margin-bottom: 10px; + +} + +#install-dbhost, +#install-dbuser, +#install-dbpass, +#install-dbdata { + float: left; + width: 200px; + margin-left: 20px; +} + +#install-dbhost-end, +#install-dbuser-end, +#install-dbpass-end, +#install-dbdata-end, +#install-tz-end { + clear: both; +} + +#install-form select#timezone_select { + float: left; + margin-top: 18px; + margin-left: 20px; +} + +#dfrn-request-networks { + margin-bottom: 30px; +} + +#pause { + position: fixed; + bottom: 5px; + right: 5px; +} + +.sparkle { + cursor: url('lock.cur'), pointer; +/* cursor: pointer !important; */ +} + +.contact-block-div { + float: left; + width: 52px; + height: 52px; +} +.contact-block-textdiv { + float: left; + width: 150px; + height: 34px; +} + +#contact-block-end { + clear: both; +} +.contact-block-link { + float: left; +} +.contact-block-img { + width:48px; + height:48px; +} + +#tag-remove { + margin-bottom: 15px; +} + +#tagrm li { + margin-bottom: 10px; +} + +#tagrm-submit, #tagrm-cancel { + margin-top: 25px; +} + +#tagrm-cancel { + margin-left: 15px; +} + +.wall-item-conv { + margin-top: 5px; + margin-bottom: 25px; +} + +#search-submit { + margin-left: 15px; +} + +#search-box { + margin-bottom: 25px; +} + +.location-label, .gender-label, .marital-label, .homepage-label { + float: left; + text-align: right; + display: block; + width: 65px; +} + +.adr, .x-gender, .marital-text, .homepage-url { + float: left; + display: block; + margin-left: 8px; +} + +.profile-clear { + clear: both; +} + + +.clear { + clear: both; +} + +.cc-license { + margin-top: 50px; + font-size: 70%; +} + + +#plugin-settings-link, #account-settings-link { + margin-bottom: 10px; +} + +#uexport-link { + margin-bottom: 20px; +} + +/* end from default */ + + +.fn { + padding: 0px 0px 5px 12px; + font-size: 120%; + font-weight: bold; +} + +.vcard .title { + margin-bottom: 5px; + margin-left: 12px; +} + +.vcard dl { + clear: both; +} + +#birthday-title { + float: left; + font-weight: bold; +} + +#birthday-adjust { + float: left; + font-size: 75%; + margin-left: 10px; +} + +#birthday-title-end { + clear: both; +} + +.birthday-list { + margin-left: 15px; +} + +#birthday-wrapper { + margin-bottom: 20px; +} + +#network-new-link { + margin-top: 15px; + margin-bottom: 15px; +} + + +.tool-wrapper { + float: left; + margin-left: 15px; +} + +.tool-link { + cursor: pointer; +} + +.eventcal { + float: left; + font-size: 20px; +} + +#event-summary-text { + margin-top: 15px; +} + +#event-share-checkbox { + float: left; + margin-top: 10px; +} + +#event-share-text { + float: left; + margin-top: 10px; + margin-left: 5px; +} + +#event-share-break { + clear: both; + margin-bottom: 10px; +} + +#event-summary { + width: 400px; +} + +.vevent { + border: 1px solid #CCCCCC; +} + +.vevent .event-summary { + margin-left: 10px; + margin-right: 10px; + font-weight: bold; +} + +.vevent .event-description, .vevent .event-location { + margin-left: 10px; + margin-right: 10px; +} +.vevent .event-start { + margin-left: 10px; + margin-right: 10px; +} + +#new-event-link { + margin-bottom: 10px; +} + +.edit-event-link, .plink-event-link { + float: left; + margin-top: 4px; + margin-right: 4px; + margin-bottom: 15px; +} + +.event-description:before { + content: url('../../../images/calendar.png'); + margin-right: 15px; +} + +.event-start, .event-end { + margin-left: 10px; + width: 330px; + clear: both; +} + +.event-start .dtstart, .event-end .dtend { + float: right; +} + +.event-list-date { + margin-bottom: 10px; +} + +.prevcal, .nextcal { + float: left; + margin-left: 32px; + margin-right: 32px; + margin-top: 64px; +} +.event-calendar-end { + clear: both; +} + + +.calendar { + font-family: Courier, monospace; +} +.today { + font-weight: bold; + color: #FF0000; +} + +.settings-block { + border: 1px solid #AAA; + margin: 10px; + padding: 10px; +} + +.app-title { + margin: 10px; +} + +#identity-manage-desc { + margin-top:15px; + margin-bottom: 15px; +} + +#identity-manage-choose { + margin-bottom: 15px; +} + +#identity-submit { + margin-top: 20px; +} + +#photo-prev-link, #photo-next-link { + padding: 10px; + float: left; +} + +#photo-photo { + float: left; +} + +#photo-photo-end { + clear: both; +} + +.profile-match-photo { + float: left; + text-align: center; + width: 120px; +} + +.profile-match-name { + float: left; + text-align: center; + width: 120px; + overflow: hidden; +} + +.profile-match-break, +.profile-match-end { + clear: both; +} + +.profile-match-connect { + text-align: center; + font-weight: bold; +} + +.profile-match-wrapper { + float: left; + padding: 10px; + width: 120px; + height: 120px; + scroll: auto; +} +#profile-match-wrapper-end { + clear: both; +} +.side-link { + margin-bottom: 15px; +} + +#language-selector { + position: absolute; + top: 0px; + left: 16px; +} + +#group-members { + margin-top: 20px; + padding: 10px; + height: 250px; + overflow: auto; + border: 1px solid #ddd; +} + +#group-members-end { + clear: both; +} + +#group-separator { + margin-top: 10px; + margin-bottom: 10px; +} + +#group-all-contacts { + padding: 10px; + height: 450px; + overflow: auto; + border: 1px solid #ddd; +} + +#group-all-contacts-end { + clear: both; + margin-bottom: 10px; +} + +#group-edit-desc { + margin-top: 15px; +} + + +#prof-members { + margin-top: 20px; + padding: 10px; + height: 250px; + overflow: auto; + border: 1px solid #ddd; +} + +#prof-members-end { + clear: both; +} + +#prof-separator { + margin-top: 10px; + margin-bottom: 10px; +} + +#prof-all-contacts { + padding: 10px; + height: 450px; + overflow: auto; + border: 1px solid #ddd; +} + +#prof-all-contacts-end { + clear: both; + margin-bottom: 10px; +} + +#prof-edit-desc { + margin-top: 15px; +} + +#crepair-name-label, +#crepair-nick-label, +#crepair-attag-label, +#crepair-url-label, +#crepair-request-label, +#crepair-confirm-label, +#crepair-notify-label, +#crepair-photo-label, +#crepair-poll-label { + float: left; + width: 200px; + margin-bottom: 15px; +} + +#crepair-name, +#crepair-nick, +#crepair-attag, +#crepair-url, +#crepair-request, +#crepair-confirm, +#crepair-notify, +#crepair-photo, +#crepair-poll { + float: left; + width: 300px; +} + + +#netsearch-box { + margin-top: 20px; +} + +#netsearch-box #search-submit { + margin: 5px 0px 0px 0px; +} + +.required { + color: #FF0000; +} + +#event-start-text, #event-finish-text { + margin-top: 10px; + margin-bottom: 5px; +} + +#event-nofinish-checkbox, #event-nofinish-text, #event-adjust-checkbox, #event-adjust-text { + float: left; +} +#event-datetime-break { + margin-bottom: 10px; +} + +#event-nofinish-break, #event-adjust-break { + clear: both; +} + +#event-desc-text, #event-location-text { + margin-top: 10px; + margin-bottom: 5px; +} +#event-submit { + margin-top: 10px; +} + +.body-tag, .filesavetags, .categorytags { + opacity: 0.5; + filter:alpha(opacity=50); +} + +.body-tag:hover, .filesavetags:hover, .categorytags:hover { + opacity: 1.0 !important; + filter:alpha(opacity=100) !important; +} + +.item-select { + opacity: 0.1; + filter:alpha(opacity=10); + float: right; + margin-right: 10px; + +} +.item-select:hover, .checkeditem { + opacity: 1; + filter:alpha(opacity=100); +} + + +#item-delete-selected { + margin-top: 30px; +} + +#item-delete-selected-end { + clear: both; +} +#item-delete-selected-icon, #item-delete-selected-desc { + float: left; + margin-right: 5px; +} +#item-delete-selected-desc:hover { + text-decoration: underline; +} + +#lang-select-icon { + cursor: pointer; + position: absolute; + left: 0px; + top: 0px; + opacity: 0.2; + filter:alpha(opacity=20); +} + +#lang-select-icon:hover { + opacity: 1; + filter:alpha(opacity=100); +} + +.notif-image { + height: 80px; + width: 80px; + margin-right: 15px; +} +.notification-listing-end { + clear: both; + margin-bottom: 15px; +} + + + +/** + * Plugins settings + */ + +.settings-block > h3, +.settings-heading { + border-bottom: 1px solid #babdb6; +} + + +/** + * Form fields + */ +.field { + margin-bottom: 10px; + padding-bottom: 10px; + overflow: auto; + width: 100% +} + +.field label { + float: left; + width: 200px; +} + +.field input, +.field textarea { + width: 400px; +} +.field textarea { height: 100px; } +.field_help { + display: block; + margin-left: 200px; + color: #666666; + +} + + +.field .onoff { + float: left; + width: 80px; +} +.field .onoff a { + display: block; + border:1px solid #666666; + background-image:url("../../../images/onoff.jpg"); + background-repeat: no-repeat; + padding: 4px 2px 2px 2px; + height: 16px; + text-decoration: none; +} +.field .onoff .off { + border-color:#666666; + padding-left: 40px; + background-position: left center; + background-color: #cccccc; + color: #666666; + text-align: right; +} +.field .onoff .on { + border-color:#204A87; + padding-right: 40px; + background-position: right center; + background-color: #D7E3F1; + color: #204A87; + text-align: left; +} +.hidden { display: none!important; } + +.field.radio .field_help { margin-left: 0px; } + +/** + * ADMIN + */ +#pending-update { + float:right; + color: #ffffff; + font-weight: bold; + background-color: #FF0000; + padding: 0em 0.3em; + +} +#adminpage dl { + clear: left; + margin-bottom: 2px; + padding-bottom: 2px; + border-bottom: 1px solid black; +} +#adminpage dt { + width: 200px; + float: left; + font-weight: bold; +} +#adminpage dd { + margin-left: 200px; +} + +#adminpage h3 { + border-bottom: 1px solid #cccccc; +} +#adminpage .field label { + font-weight: bold; +} +#adminpage .submit { + clear:left; + text-align: right; +} + +#adminpage #pluginslist { + margin: 0px; padding: 0px; +} +#adminpage .plugin { + list-style: none; + display: block; + border: 1px solid #888888; + padding: 1em; + margin-bottom: 5px; + clear: left; +} +#adminpage .plugin .desc { margin-left: 2.5em;} +#adminpage .toggleplugin { + float:left; + margin-right: 1em; +} + +#adminpage table {width:100%; border-bottom: 1px solid #000000; margin: 5px 0px;} +#adminpage table th { text-align: left;} +#adminpage td .icon { float: left;} +#adminpage table#users img { width: 16px; height: 16px; } +#adminpage table tr:hover { background-color: #bbc7d7; } +#adminpage .selectall { text-align: right; } + +/* + * UPDATE + */ +.popup { + width: 100%; height: 100%; + top:0px; left:0px; + position: absolute; + display: none; +} + +.popup .background { + background-color: rgba(0,0,0,128); + opacity: 0.5; + width: 100%; height: 100%; + position: absolute; + top:0px; left:0px; +} +.popup .panel { + top:25%;left:25%;width:50%;height:50%; + padding: 1em; + position: absolute; + border: 4px solid #000000; + background-color: #FFFFFF; +} +.popup .panel .panel_text { display: block; overflow: auto; height: 80%; } +.popup .panel .panel_in { width: 100%; height: 100%; position: relative; } +.popup .panel .panel_actions { width: 100%; bottom: 4px; left: 0px; position: absolute; } +.panel_text .progress { width: 50%; overflow: hidden; height: auto; border: 1px solid #cccccc; margin-bottom: 5px} +.panel_text .progress span {float: right; display: block; width: 25%; background-color: #eeeeee; text-align: right;} + +/** + * OAuth + */ +.oauthapp { + height: auto; overflow: auto; + border-bottom: 2px solid #cccccc; + padding-bottom: 1em; + margin-bottom: 1em; +} +.oauthapp img { + float: left; + width: 48px; height: 48px; + margin: 10px; +} +.oauthapp img.noicon { + background-image: url("../../../images/icons/48/plugin.png"); + background-position: center center; + background-repeat: no-repeat; +} +.oauthapp a { + float: left; +} + +/** + * ICONS + */ +.iconspacer { + display: block; width: 16px; height: 16px; +} + +.icon { + display: block; width: 16px; height: 16px; + background-image: url('../../../images/icons.png'); +} +.article { background-position: 0px 0px;} +/*.audio { background-position: -16px 0px;}*/ +.audio { + display: block; width: 24px; height: 24px; + background-size: 100% 100%; + background-image: url('images/speaker.png'); + background-repeat: no-repeat; +} +.block { background-position: -32px 0px;} +/*.drop { background-position: -48px 0px;}*/ +.drop { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/drop-16.png'); + background-repeat: no-repeat; + opacity: 1.0; +} +/*.drophide { background-position: -64px 0px;}*/ +.drophide { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/drop-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.edit { background-position: -80px 0px;} +/*.camera { background-position: -96px 0px;}*/ +.camera{ + display: block; width: 24px; height: 18px; + margin-top: 4px; + background-size: 100% 100%; + background-image: url('images/camera.png'); + background-repeat: no-repeat; +} +/*.dislike { background-position: -112px 0px;}*/ +.dislike { + display: block; width: 15px; height: 16px;/* 23 24*/ + background-size: 100% 100%; + background-image: url('images/disapprove-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.dislike:hover { + opacity: 1.0; +} +/*.like { background-position: -128px 0px;}*/ +.like { + display: block; width: 15px; height: 16px;/* 23 24*/ + margin-right: 6px; + background-size: 100% 100%; + background-image: url('images/approve-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.like:hover { + opacity: 1.0; +} +/*.link { background-position: -144px 0px;}*/ +.link { + display: block; width: 24px; height: 24px; + background-size: 100% 100%; + background-image: url('images/link.png'); + background-repeat: no-repeat; +} + +/*.globe { background-position: 0px -16px;}*/ +.globe { + display: block; width: 24px; height: 24px; + background-size: 100% 100%; + background-image: url('images/globe.png'); + background-repeat: no-repeat; +} +.noglobe { background-position: -16px -16px;} +.no { background-position: -32px -16px;} +.pause { background-position: -48px -16px;} +.play { background-position: -64px -16px;} +/*.pencil { background-position: -80px -16px;}*/ +.pencil { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/pencil-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.pencil:hover { + opacity: 1.0; +} +/*.small-pencil { background-position: -96px -16px;}*/ +.small-pencil { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/pencil-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.small-pencil:hover { + opacity: 1.0; +} +/*.recycle { background-position: -112px -16px;}*/ +.recycle { + display: block; width: 16px; height: 16px;/*24 23*/ + background-size: 100% 100%; + background-image: url('images/recycle-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.recycle:hover { + opacity: 1.0; +} +/*.remote-link { background-position: -128px -16px;}*/ +.remote-link { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/remote-link-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.remote-link:hover { + opacity: 1.0; +} +.share { background-position: -144px -16px;} + +.tools { background-position: 0px -32px;} +/*.lock { background-position: -16px -32px;}*/ +.lock { + display: block; width: 14px; height: 21px; + margin-top: 1px; + background-size: 100% 100%; + background-image: url('images/lock-24.png'); + background-repeat: no-repeat; +} +/*.unlock { background-position: -32px -32px;}*/ +.unlock { + display: block; width: 14px; height: 24px; + margin-top: -2px; + background-size: 100% 100%; + background-image: url('images/unlock-24.png'); + background-repeat: no-repeat; +} +/*.video { background-position: -48px -32px;}*/ +.video { + display: block; width: 24px; height: 24px; + background-size: 100% 100%; + background-image: url('images/video.png'); + background-repeat: no-repeat; +} + +.youtube { background-position: -64px -32px;} +/*.attach { background-position: -80px -32px; }*/ +.attach { + display: block; width: 24px; height: 24px; + background-size: 100% 100%; + background-image: url('images/paperclip-24.png'); + background-repeat: no-repeat; +} + +.language { background-position: -96px -32px; } +.prev { background-position: -112px -32px; } +.next { background-position: -128px -32px; } +.on { background-position: -144px -32px; } + +.off { background-position: 0px -48px; } +/*.starred { background-position: -16px -48px; }*/ +.starred { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/star-yellow-16.png'); + background-repeat: no-repeat; +} +/*.unstarred { background-position: -32px -48px; }*/ +.unstarred { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/star-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.unstarred:hover { + opacity: 1.0; +} +/*.tagged { background-position: -48px -48px; }*/ +.tagged { + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/tag-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.tagged:hover { + opacity: 1.0; +} +.yellow { background-position: -64px -48px; } + + +.filer-icon { +/* display: block; width: 16px; height: 16px; + background-image: url('file.gif');*/ + display: block; width: 16px; height: 16px; + background-size: 100% 100%; + background-image: url('images/folder-16.png'); + background-repeat: no-repeat; + opacity: 0.4; +} +.filer-icon:hover { + opacity: 1.0; +} + +.icon.dim { opacity: 0.3;filter:alpha(opacity=30); } +[class^="comment-edit-bb"] { + list-style: none; + display: none; + margin: 0px 0 -5px 60px; + width: 75%; +} +[class^="comment-edit-bb"] > li { + display: inline-block; + margin: 10px 10px 0 0; + visibility: none; +} +[class^="comment-edit-bb-end"] { + clear: both; +} +.editicon { + display: inline-block; +/* background-image: url(bbedit.png); + background-color: #fff;*/ + background-size: 100% 100%; + background-repeat: no-repeat; + background-color: #f3f3f3; + text-decoration: none; + opacity: 0.4; +} +.editicon:hover { +/* background-color: #ccc;*/ + opacity: 1.0; +} +.boldbb { +/* background-position: 0px 0px;*/ + width: 15px; + height: 16px; + background-image: url('images/boldB-serif-16.png'); +} +/*.boldbb:hover { + background-position: 0px -16px; +}*/ +.italicbb { +/* background-position: -16px 0px;*/ + width: 9px; + height: 16px; + background-image: url('images/italicI-serif-16.png'); +} +/*.italicbb:hover { + background-position: -16px -16px; +}*/ +.underlinebb { +/* background-position: -32px 0px;*/ + width: 14px; + height: 16px; + background-image: url('images/underlineU-serif-16.png'); +} +/*.underlinebb:hover { + background-position: -32px -16px; +}*/ +.quotebb { +/* background-position: -48px 0px;*/ + width: 20px; + height: 20px; + background-image: url('images/quote.png'); +} +/*.quotebb:hover { + background-position: -48px -16px; +}*/ +.codebb { +/* background-position: -64px 0px;*/ + width: 20px; + height: 20px; + background-image: url('images/code.png'); +} +/*.codebb:hover { + background-position: -64px -16px; +}*/ +.imagebb { +/* background-position: -80px 0px;*/ + width: 20px;/*16*/ + height: 15px;/*12*/ + margin-bottom: 2px; + background-image: url('images/camera.png'); +} +/*.imagebb:hover { + background-position: -80px -16px; +}*/ +.urlbb { +/* background-position: -96px 0px;*/ + width: 20px; + height: 20px; + background-image: url('images/link.png'); +} +/*.urlbb:hover { + background-position: -96px -16px; +}*/ +.videobb { +/* background-position: -112px 0px;*/ + width: 20px; + height: 20px; + background-image: url('images/video.png'); +} +/*.videobb:hover { + background-position: -112px -16px; +}*/ + +.attachtype { + display: block; width: 20px; height: 23px; + float: left; + background-image: url('../../../images/content-types.png'); +} + +.body-attach { + margin-top: 10px; +} + +.type-video { background-position: 0px 0px; } +.type-image { background-position: -20px 0px; } +.type-audio { background-position: -40px 0px; } +.type-text { background-position: -60px 0px; } +.type-unkn { background-position: -80px 0px; } + + +/* autocomplete popup */ +.acpopup { + max-height:150px; + background-color:#ffffff; + overflow:auto; + z-index:100000; + border:1px solid #cccccc; +} +.acpopupitem { + background-color:#ffffff; padding: 4px; + clear:left; +} +.acpopupitem img { + float: left; + margin-right: 4px; +} + +.acpopupitem.selected { + color: #FFFFFF; background: #3465A4; +} + +/* popup notifications */ +div.jGrowl div.notice { + background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center; + color: #ffffff; + padding-left: 58px; +} +div.jGrowl div.info { + background: #364e59 url("../../../images/icons/48/info.png") no-repeat 5px center; + color: #ffffff; + padding-left: 58px; +} +#jGrowl.top-right { + top: 15px; + right: 15px; +} +.qcomment { + border: 1px solid #EEE; + padding: 3px; + margin-top: 15px; + margin-left: 25px; + width: 125px; + overflow-y: auto; +} + + +.qcomment option { + width: 125px; + overflow-x: hidden; +} + +.qcomment { + opacity: 0.3; + filter:alpha(opacity=30); +} +.qcomment:hover { + opacity: 1.0; + filter:alpha(opacity=100); +} + +/* notifications popup menu */ +.nav-notify { + display: none; + position: absolute; + font-size: 10px; + padding: 1px 3px; + top: 0px; + right: -10px; + min-width: 15px; + text-align: right; +} +.nav-notify.show { + display: block; +} +ul.notifications-menu-popup { + position: absolute; + display: none; + width: 10em; + margin: 0px; + padding: 0px; + list-style: none; + z-index: 100000; + right: 0px; +} +#nav-notifications-menu { + width: 320px; + max-height: 400px; + overflow-y: scroll;overflow-style:scrollbar; + background-color:#FFFFFF; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius:5px; + border: 1px solid #AAA; + -moz-box-shadow: 3px 3px 5px #555; + -webkit-box-shadow: 3px 3px 5px #555; + box-shadow: 3px 3px 5px #555; +} +#nav-notifications-menu .contactname { font-weight: bold; font-size: 0.9em; } +#nav-notifications-menu img { float: left; margin-right: 5px; } +#nav-notifications-menu .notif-when { font-size: 0.8em; display: block; } +#nav-notifications-menu li { + padding: 7px 0px 7px 10px; + word-wrap:normal; + border-bottom: 1px solid #000; +} + +#nav-notifications-menu li:hover { + +} + +#nav-notifications-menu a:hover { + text-decoration: underline; +} + +.notif-item a { + color: #000000; +} + +.notif-item a:hover { + text-decoration: underline; +} + +.notif-image { + width: 32px; + height: 32px; + padding: 7px 7px 0px 0px; +} + +.notify-seen { + background: #DDDDDD; +} + +#id_term_label { + width:75px; +} +#id_term { + width:100px; +} + +#recip { + +} +.autocomplete-w1 { background: #ffffff; no-repeat bottom right; position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; } +.autocomplete { color:#000; border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; } +.autocomplete .selected { background:#F0F0F0; } +.autocomplete div { padding:2px 5px; white-space:nowrap; overflow:hidden; } + +#datebrowse-sidebar select { + margin-left: 40px; + width: 130px; +} + +#theme-version { + display: block; + font-weight: bold; +} diff --git a/view/theme/frost/theme.php b/view/theme/frost/theme.php new file mode 100644 index 000000000..f2f7644dd --- /dev/null +++ b/view/theme/frost/theme.php @@ -0,0 +1,23 @@ + + * Maintainer: Zach P + */ + +$a->theme_info = array(); + +function frost_init(&$a) { + + // I could do this in style.php, but by having the CSS in a file the browser will cache it, + // making pages load faster + if( $a->module === 'home' || $a->module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) { + $a->page['htmlhead'] = str_replace('$stylesheet', $a->get_baseurl() . '/view/theme/frost/login-style.css', $a->page['htmlhead']); + + } + +} diff --git a/view/theme/frost/wall_item.tpl b/view/theme/frost/wall_item.tpl new file mode 100644 index 000000000..60dde7600 --- /dev/null +++ b/view/theme/frost/wall_item.tpl @@ -0,0 +1,79 @@ + +

    +
    +
    +
    + + $item.name + + menu +
    +
      + $item.item_photo_menu +
    +
    +
    +
    +
    + {{ if $item.lock }}
    $item.lock
    + {{ else }}
    {{ endif }} +
    $item.location
    +
    +
    +
    + $item.name +
    $item.ago
    + +
    +
    +
    $item.title
    +
    +
    $item.body +
    + {{ for $item.tags as $tag }} + $tag + {{ endfor }} +
    +
    +
    +
    + {{ if $item.vote }} + + {{ endif }} + {{ if $item.plink }} + + {{ endif }} + {{ if $item.edpost }} + + {{ endif }} + + {{ if $item.star }} + + + {{ endif }} + {{ if $item.filer }} + + {{ endif }} +
    + {{ if $item.drop.dropping }}{{ endif }} +
    + {{ if $item.drop.dropping }}{{ endif }} +
    +
    +
    +
    + +
    $item.dislike
    +
    + $item.comment +
    + +
    +
    From f9809102a22222423a1e4ba2ca164bb77c277731 Mon Sep 17 00:00:00 2001 From: Zach Prezkuta Date: Tue, 24 Jul 2012 09:16:51 -0600 Subject: [PATCH 094/658] Introducing Frost Mobile --- view/theme/frost-mobile/TODO | 16 + view/theme/frost-mobile/admin_aside.tpl | 42 + view/theme/frost-mobile/admin_site.tpl | 91 + view/theme/frost-mobile/border.jpg | Bin 0 -> 342 bytes view/theme/frost-mobile/comment_item.tpl | 74 + view/theme/frost-mobile/contact_head.tpl | 30 + view/theme/frost-mobile/contact_template.tpl | 30 + view/theme/frost-mobile/contacts-template.tpl | 28 + view/theme/frost-mobile/conversation.tpl | 27 + view/theme/frost-mobile/default.php | 41 + view/theme/frost-mobile/editicons.png | Bin 0 -> 6300 bytes view/theme/frost-mobile/event_head.tpl | 139 + view/theme/frost-mobile/experimental | 0 view/theme/frost-mobile/field_input.tpl | 6 + view/theme/frost-mobile/field_openid.tpl | 6 + view/theme/frost-mobile/field_password.tpl | 6 + view/theme/frost-mobile/file.gif | Bin 0 -> 615 bytes view/theme/frost-mobile/friendika-16.png | Bin 0 -> 699 bytes view/theme/frost-mobile/head.jpg | Bin 0 -> 383 bytes view/theme/frost-mobile/head.tpl | 105 + .../frost-mobile/images/approve-blue.png | Bin 0 -> 562 bytes view/theme/frost-mobile/images/approve.png | Bin 0 -> 475 bytes view/theme/frost-mobile/images/arrow-left.png | Bin 0 -> 282 bytes .../theme/frost-mobile/images/arrow-right.png | Bin 0 -> 306 bytes .../theme/frost-mobile/images/boldB-serif.png | Bin 0 -> 574 bytes view/theme/frost-mobile/images/camera.png | Bin 0 -> 530 bytes view/theme/frost-mobile/images/code.png | Bin 0 -> 488 bytes view/theme/frost-mobile/images/contacts.png | Bin 0 -> 813 bytes .../frost-mobile/images/disapprove-blue.png | Bin 0 -> 568 bytes view/theme/frost-mobile/images/disapprove.png | Bin 0 -> 480 bytes view/theme/frost-mobile/images/drop-blue.png | Bin 0 -> 425 bytes .../frost-mobile/images/drop-darkred.png | Bin 0 -> 416 bytes view/theme/frost-mobile/images/drop-red.png | Bin 0 -> 321 bytes view/theme/frost-mobile/images/drop.png | Bin 0 -> 305 bytes .../theme/frost-mobile/images/folder-blue.png | Bin 0 -> 266 bytes view/theme/frost-mobile/images/folder.png | Bin 0 -> 219 bytes view/theme/frost-mobile/images/globe.png | Bin 0 -> 1055 bytes .../frost-mobile/images/italicI-serif.png | Bin 0 -> 398 bytes view/theme/frost-mobile/images/lock.png | Bin 0 -> 520 bytes view/theme/frost-mobile/images/menu.png | Bin 0 -> 1019 bytes view/theme/frost-mobile/images/message.png | Bin 0 -> 708 bytes view/theme/frost-mobile/images/network.png | Bin 0 -> 770 bytes .../frost-mobile/images/notifications.png | Bin 0 -> 923 bytes view/theme/frost-mobile/images/paperclip.png | Bin 0 -> 821 bytes .../theme/frost-mobile/images/pencil-blue.png | Bin 0 -> 594 bytes view/theme/frost-mobile/images/pencil.png | Bin 0 -> 402 bytes view/theme/frost-mobile/images/quote.png | Bin 0 -> 366 bytes .../frost-mobile/images/recycle-blue.png | Bin 0 -> 1014 bytes view/theme/frost-mobile/images/recycle.png | Bin 0 -> 795 bytes .../frost-mobile/images/remote-link-blue.png | Bin 0 -> 613 bytes .../theme/frost-mobile/images/remote-link.png | Bin 0 -> 534 bytes view/theme/frost-mobile/images/star-blue.png | Bin 0 -> 649 bytes .../theme/frost-mobile/images/star-yellow.png | Bin 0 -> 633 bytes view/theme/frost-mobile/images/star.png | Bin 0 -> 515 bytes view/theme/frost-mobile/images/tag-blue.png | Bin 0 -> 432 bytes view/theme/frost-mobile/images/tag.png | Bin 0 -> 291 bytes .../frost-mobile/images/underlineU-serif.png | Bin 0 -> 454 bytes view/theme/frost-mobile/images/unlock.png | Bin 0 -> 572 bytes view/theme/frost-mobile/jot-header.tpl | 212 + view/theme/frost-mobile/jot.tpl | 85 + view/theme/frost-mobile/js/acl.js | 258 ++ view/theme/frost-mobile/js/main.js | 663 +++ view/theme/frost-mobile/js/theme.js | 224 + view/theme/frost-mobile/js/theme.js.old | 121 + view/theme/frost-mobile/lang_selector.tpl | 10 + view/theme/frost-mobile/lock.cur | Bin 0 -> 4286 bytes view/theme/frost-mobile/login-bg.gif | Bin 0 -> 237 bytes view/theme/frost-mobile/login-style.css | 131 + view/theme/frost-mobile/login.tpl | 43 + view/theme/frost-mobile/lostpass.tpl | 21 + view/theme/frost-mobile/moderated_comment.tpl | 61 + view/theme/frost-mobile/msg-header.tpl | 97 + view/theme/frost-mobile/nav.tpl | 131 + view/theme/frost-mobile/photo_edit.tpl | 53 + view/theme/frost-mobile/photo_view.tpl | 42 + view/theme/frost-mobile/photos_upload.tpl | 50 + view/theme/frost-mobile/profed_head.tpl | 36 + view/theme/frost-mobile/profile_edit.tpl | 322 ++ view/theme/frost-mobile/profile_vcard.tpl | 51 + view/theme/frost-mobile/prv_message.tpl | 39 + view/theme/frost-mobile/register.tpl | 78 + view/theme/frost-mobile/screenshot.jpg | Bin 0 -> 89002 bytes view/theme/frost-mobile/settings.tpl | 144 + view/theme/frost-mobile/style.css | 3847 +++++++++++++++++ view/theme/frost-mobile/theme.php | 23 + view/theme/frost-mobile/wall_item.tpl | 82 + view/theme/frost-mobile/wallmsg-header.tpl | 82 + 87 files changed, 7547 insertions(+) create mode 100644 view/theme/frost-mobile/TODO create mode 100644 view/theme/frost-mobile/admin_aside.tpl create mode 100644 view/theme/frost-mobile/admin_site.tpl create mode 100644 view/theme/frost-mobile/border.jpg create mode 100755 view/theme/frost-mobile/comment_item.tpl create mode 100644 view/theme/frost-mobile/contact_head.tpl create mode 100644 view/theme/frost-mobile/contact_template.tpl create mode 100644 view/theme/frost-mobile/contacts-template.tpl create mode 100644 view/theme/frost-mobile/conversation.tpl create mode 100644 view/theme/frost-mobile/default.php create mode 100644 view/theme/frost-mobile/editicons.png create mode 100644 view/theme/frost-mobile/event_head.tpl create mode 100644 view/theme/frost-mobile/experimental create mode 100644 view/theme/frost-mobile/field_input.tpl create mode 100644 view/theme/frost-mobile/field_openid.tpl create mode 100644 view/theme/frost-mobile/field_password.tpl create mode 100644 view/theme/frost-mobile/file.gif create mode 100644 view/theme/frost-mobile/friendika-16.png create mode 100644 view/theme/frost-mobile/head.jpg create mode 100644 view/theme/frost-mobile/head.tpl create mode 100644 view/theme/frost-mobile/images/approve-blue.png create mode 100644 view/theme/frost-mobile/images/approve.png create mode 100644 view/theme/frost-mobile/images/arrow-left.png create mode 100644 view/theme/frost-mobile/images/arrow-right.png create mode 100644 view/theme/frost-mobile/images/boldB-serif.png create mode 100644 view/theme/frost-mobile/images/camera.png create mode 100644 view/theme/frost-mobile/images/code.png create mode 100644 view/theme/frost-mobile/images/contacts.png create mode 100644 view/theme/frost-mobile/images/disapprove-blue.png create mode 100644 view/theme/frost-mobile/images/disapprove.png create mode 100644 view/theme/frost-mobile/images/drop-blue.png create mode 100644 view/theme/frost-mobile/images/drop-darkred.png create mode 100644 view/theme/frost-mobile/images/drop-red.png create mode 100644 view/theme/frost-mobile/images/drop.png create mode 100644 view/theme/frost-mobile/images/folder-blue.png create mode 100644 view/theme/frost-mobile/images/folder.png create mode 100644 view/theme/frost-mobile/images/globe.png create mode 100644 view/theme/frost-mobile/images/italicI-serif.png create mode 100644 view/theme/frost-mobile/images/lock.png create mode 100644 view/theme/frost-mobile/images/menu.png create mode 100644 view/theme/frost-mobile/images/message.png create mode 100644 view/theme/frost-mobile/images/network.png create mode 100644 view/theme/frost-mobile/images/notifications.png create mode 100644 view/theme/frost-mobile/images/paperclip.png create mode 100644 view/theme/frost-mobile/images/pencil-blue.png create mode 100644 view/theme/frost-mobile/images/pencil.png create mode 100644 view/theme/frost-mobile/images/quote.png create mode 100644 view/theme/frost-mobile/images/recycle-blue.png create mode 100644 view/theme/frost-mobile/images/recycle.png create mode 100644 view/theme/frost-mobile/images/remote-link-blue.png create mode 100644 view/theme/frost-mobile/images/remote-link.png create mode 100644 view/theme/frost-mobile/images/star-blue.png create mode 100644 view/theme/frost-mobile/images/star-yellow.png create mode 100644 view/theme/frost-mobile/images/star.png create mode 100644 view/theme/frost-mobile/images/tag-blue.png create mode 100644 view/theme/frost-mobile/images/tag.png create mode 100644 view/theme/frost-mobile/images/underlineU-serif.png create mode 100644 view/theme/frost-mobile/images/unlock.png create mode 100644 view/theme/frost-mobile/jot-header.tpl create mode 100644 view/theme/frost-mobile/jot.tpl create mode 100644 view/theme/frost-mobile/js/acl.js create mode 100644 view/theme/frost-mobile/js/main.js create mode 100644 view/theme/frost-mobile/js/theme.js create mode 100644 view/theme/frost-mobile/js/theme.js.old create mode 100644 view/theme/frost-mobile/lang_selector.tpl create mode 100644 view/theme/frost-mobile/lock.cur create mode 100644 view/theme/frost-mobile/login-bg.gif create mode 100644 view/theme/frost-mobile/login-style.css create mode 100644 view/theme/frost-mobile/login.tpl create mode 100644 view/theme/frost-mobile/lostpass.tpl create mode 100755 view/theme/frost-mobile/moderated_comment.tpl create mode 100644 view/theme/frost-mobile/msg-header.tpl create mode 100644 view/theme/frost-mobile/nav.tpl create mode 100644 view/theme/frost-mobile/photo_edit.tpl create mode 100644 view/theme/frost-mobile/photo_view.tpl create mode 100644 view/theme/frost-mobile/photos_upload.tpl create mode 100644 view/theme/frost-mobile/profed_head.tpl create mode 100644 view/theme/frost-mobile/profile_edit.tpl create mode 100644 view/theme/frost-mobile/profile_vcard.tpl create mode 100644 view/theme/frost-mobile/prv_message.tpl create mode 100644 view/theme/frost-mobile/register.tpl create mode 100644 view/theme/frost-mobile/screenshot.jpg create mode 100644 view/theme/frost-mobile/settings.tpl create mode 100644 view/theme/frost-mobile/style.css create mode 100644 view/theme/frost-mobile/theme.php create mode 100644 view/theme/frost-mobile/wall_item.tpl create mode 100644 view/theme/frost-mobile/wallmsg-header.tpl diff --git a/view/theme/frost-mobile/TODO b/view/theme/frost-mobile/TODO new file mode 100644 index 000000000..296370d18 --- /dev/null +++ b/view/theme/frost-mobile/TODO @@ -0,0 +1,16 @@ +Photo album display? + +- The "lock" icon for private items + - change it to black? + - when clicked, the popup window displays poorly + +- Edit photo page: bottom buttons are off-center in Dolphin Mini + +- Pager: looks weird when only "prev" is there + +- BB code buttons for status updates + +- Get "add contact" back on contacts page + +- Admin: access to more pages than summary? + diff --git a/view/theme/frost-mobile/admin_aside.tpl b/view/theme/frost-mobile/admin_aside.tpl new file mode 100644 index 000000000..b17addda3 --- /dev/null +++ b/view/theme/frost-mobile/admin_aside.tpl @@ -0,0 +1,42 @@ + +

    $admtxt

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

    $plugadmtxt

    {{ endif }} + + + +

    $logtxt

    + + diff --git a/view/theme/frost-mobile/admin_site.tpl b/view/theme/frost-mobile/admin_site.tpl new file mode 100644 index 000000000..ff7c9bdb1 --- /dev/null +++ b/view/theme/frost-mobile/admin_site.tpl @@ -0,0 +1,91 @@ + +
    +

    $title - $page

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

    $registration

    + {{ inc field_input.tpl with $field=$register_text }}{{ endinc }} + {{ inc field_select.tpl with $field=$register_policy }}{{ endinc }} + + {{ inc field_checkbox.tpl with $field=$no_multi_reg }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$no_openid }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$no_regfullname }}{{ endinc }} + +
    + +

    $upload

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

    $corporate

    + {{ inc field_input.tpl with $field=$allowed_sites }}{{ endinc }} + {{ inc field_input.tpl with $field=$allowed_email }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$block_public }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$force_publish }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$no_community_page }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$ostatus_disabled }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$diaspora_enabled }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$dfrn_only }}{{ endinc }} + {{ inc field_input.tpl with $field=$global_directory }}{{ endinc }} + +
    + +

    $advanced

    + {{ inc field_checkbox.tpl with $field=$no_utf }}{{ endinc }} + {{ inc field_checkbox.tpl with $field=$verifyssl }}{{ endinc }} + {{ inc field_input.tpl with $field=$proxy }}{{ endinc }} + {{ inc field_input.tpl with $field=$proxyuser }}{{ endinc }} + {{ inc field_input.tpl with $field=$timeout }}{{ endinc }} + {{ inc field_input.tpl with $field=$delivery_interval }}{{ endinc }} + {{ inc field_input.tpl with $field=$poll_interval }}{{ endinc }} + {{ inc field_input.tpl with $field=$maxloadavg }}{{ endinc }} + {{ inc field_input.tpl with $field=$abandon_days }}{{ endinc }} + +
    + +
    +
    diff --git a/view/theme/frost-mobile/border.jpg b/view/theme/frost-mobile/border.jpg new file mode 100644 index 0000000000000000000000000000000000000000..034a1cb63b65268d78567f19cd2a0416f7b06509 GIT binary patch literal 342 zcmex=LJ%Z3brsR%R9! z7G_o;!OF_Y#?HgR4g~z%+?+gu{6a#4{DOkQVlv{wB2uD)f)a`nQnIr0^76vsN-9cn zDl&5Nav(z(fm+$w*!eg(_~b+cMdU~Z{|_(-axfGyFfubLF)#@-G7B>PKf)jmaz7&j zGGJk52TF(upo=pIC4w}7)T3%(WMT$Nhzg% f9U_4e8jYbYT*|B>4vQSR6atx6%@A>8_ + $(document).ready( function () { + $(document).mouseup(function(e) { + var container = $("#comment-edit-wrapper-$id"); + if( container.has(e.target).length === 0) { + commentClose(document.getElementById('comment-edit-text-$id'),$id); + cmtBbClose($id); + } + }); + }); + + +
    +
    + + + + + + + +
    + $mytitle +
    +
    +
      +
    • +
    • +
    • +
    • +
    • + +
    +
    + + + {{ if $qcomment }} + + {{ endif }} + +
    + + +
    +
    + +
    diff --git a/view/theme/frost-mobile/contact_head.tpl b/view/theme/frost-mobile/contact_head.tpl new file mode 100644 index 000000000..427f54158 --- /dev/null +++ b/view/theme/frost-mobile/contact_head.tpl @@ -0,0 +1,30 @@ + diff --git a/view/theme/frost-mobile/contact_template.tpl b/view/theme/frost-mobile/contact_template.tpl new file mode 100644 index 000000000..c27060bb3 --- /dev/null +++ b/view/theme/frost-mobile/contact_template.tpl @@ -0,0 +1,30 @@ + +
    +
    +
    + + + + $contact.name + + + {{ if $contact.photo_menu }} + +
    +
      + $contact.photo_menu +
    +
    + {{ endif }} +
    + +
    +
    +
    $contact.name

    +{{ if $contact.alt_text }}
    $contact.alt_text
    {{ endif }} +
    $contact.network
    + +
    +
    diff --git a/view/theme/frost-mobile/contacts-template.tpl b/view/theme/frost-mobile/contacts-template.tpl new file mode 100644 index 000000000..76254c1ca --- /dev/null +++ b/view/theme/frost-mobile/contacts-template.tpl @@ -0,0 +1,28 @@ +

    $header{{ if $total }} ($total){{ endif }}

    + +{{ if $finding }}

    $finding

    {{ endif }} + +
    +
    +$desc + + +
    +
    +
    + +$tabs + + +
    +{{ for $contacts as $contact }} + {{ inc contact_template.tpl }}{{ endinc }} +{{ endfor }} +
    +
    + +$paginate + + + + diff --git a/view/theme/frost-mobile/conversation.tpl b/view/theme/frost-mobile/conversation.tpl new file mode 100644 index 000000000..43b4d63ff --- /dev/null +++ b/view/theme/frost-mobile/conversation.tpl @@ -0,0 +1,27 @@ +{{ for $threads as $thread }} +
    + {{ for $thread.items as $item }} + {{if $item.comment_firstcollapsed}} +
    + $thread.num_comments $thread.hide_text +
    + {{endif}} + + {{ inc $item.template }}{{ endinc }} + + + {{ endfor }} +
    +{{ endfor }} + +
    + + +{{ endif }} diff --git a/view/theme/frost-mobile/default.php b/view/theme/frost-mobile/default.php new file mode 100644 index 000000000..c0f5de516 --- /dev/null +++ b/view/theme/frost-mobile/default.php @@ -0,0 +1,41 @@ + + + + <?php if(x($page,'title')) echo $page['title'] ?> + + + + + module === 'home' ) { ?> +
    + +
    + module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) { + ?> + +
    +
    +
    +
    + + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + + + + diff --git a/view/theme/frost-mobile/editicons.png b/view/theme/frost-mobile/editicons.png new file mode 100644 index 0000000000000000000000000000000000000000..171a4087655a3dd1c2724cce699fb5e228a1206e GIT binary patch literal 6300 zcmYLu1ymI8_xF;bgn*QYgd!ph(%mT{As}6nONY{u(x8C2Al(v6hcrli1!p9-+@3Nq-v^)I$&!6zRpC1U_JQ^Qw%mZ zo;oV>kjmc-NbrNuN<&2va((m3X)8_!M{c{RzVQT?BW}Jp^6VM!!NFTzYMM&77Vzn4 zL}``Q)P6u9bPQ^Wa(eIQ_A-6-bnPztJJ6eKAsP6%I0Q;Ga@t(odYz=)`UREFraLpF64)7mGViF`~w;rt*ENJ;i@d&WZ6%xYzA#ROh|6cUR(IXC6o>za0)0>5$=T zRNEgO&dXfx8oV-ipDY;^c+etwaO|5cf)AOTnu>RFaG1?|#h&*p=5yz;l_348WBrer z<>l)=m&G5MRg;LDQ(Rn@*0#2`su!oHr>zQg2CL_(Pbll_>vH_NbG2VYA-tEi6 z5iL&lD5LQ)SEv2yLQaBrBCLE=RR=!J&CR7{q^Gz0ZDqdub8&Goiu7`sPgO6BN=)qE z9L^BJVzK3mm3e7R!PnTfDJOlEHWmB?ABvZv?s^o$HkLHdXE&i3{n z^vg&gko2O*7xc{H;&Xj2*4B^dA3Pw~n?@k!XEr8KYVJz#r@eV;xUyegu>HQJUttn) zcHS1z% zNVgPp<@_Q;IQ}?m&?a=7_LB>e8XDd|%BjcY_bh*GfE=Gi)QjeyC60Z1-%3iCVUrsR z#NuZZ#rfHGV?$ZtAkp7X^2vj&><#Vhj1$FLA5C~v9345n@S2lBRJFAFyTWem8CXUs zKKeW6q|dAN`KyoTZoKNk|~c`uiR!f?VUlL>Xl8&Mt|!X;ovS}FacTkMWpC9b0;A6maec(cM-K97SAky2Pta#? zE+RA(m!0Ykm+22GAt9mdrM8xwrKl*Pg_d_C&Mj?zr!`|5uorB~isCN#sp=8I5C5eN zlS}!Zah);Ej7UhTf(akAq1gpQ!@4uRA|C4R)f9p)wE1tid_oT-;i+xDfX6 zscLE}>FVCQa$8$pKkB75?_7IRGUW(eXrh3@V55%pp?*&&qg8yk^GEX1Z0I6cRJ%6@ z)AQIB6_uG;S$`tyR(|7xA?M}ikJZ{~b!9nKAl6>jH8iY&B-jlmgZ#r_+)>lqzZD#z zP<$orP(SWt)cVZZEt6bjdwcuNI)ft1eJ9Uq_X*{?#>V{M4y<9bRbhUX#*dmy02S-W z678>imbm)mh9M0N!aw`_t=IeFTYW0FOkz#_(}sW0kr4Xasa?)|)4r8pX0SVldU8LK z|BaD}y<8a_-XB3so0Ob^2Z@S{3(xLOgl`!|!gO04>*)cPh@gpr~4#dVe|ELhp)(0ed_bxnamy-9df-9vASdMsa za?jBIva*0ZGJ&~(gjW6h$N5iRpYni>0CcJK{>H|}Ze9T9(wp_^Q{tUKy@Q6upFb5J zw53E-oT+Shh%Nb{xXJNDwzut1_9kc{Zr9jAK_MYAhIY1Owb5XGb}GYWk0(T-vQQ}3 z+S(cfg5F9ki>>VW?ZTnBLz8tBD)wl-Z+;S_*lIpElbF$a z#WO6sd9DM!ZqbX?p@V}qbXE?nRYhZKD+5#TUw-9+1li@8-ydBB(sTBFiUv+A7>pWyD-mxzuZ&U&nr zAJwh( zoW*k`2o&j;z{WBAN#jknu&$iOCSJcbGZpgiSp=f-O`%SOeyLt@`N9|X;o)K94G&*) z&a{4eJ~|Sb?5Vj*EJdv)UE~|psIsYv?uNn=gT=f#i4 zt|FXe989rAU((V%8=C3k3GXsWk{6Vk#$!LrpNKqtdh5CEZ&{#m^NV&v-*8lpKbM_| zNJu=mfB*jb^FtO$PD29?*gs$W$iz_5-Fkv{kCmvK(}Z^kUCvKW_f>uq&rFy|j##Ud z_YtBe6&DwWKpsAP*oyO@y)*uK+di4O*7^t!fy*~-BduO(hnBOGv?7NWnF964lDI=4 z1lyxNA1HP09ij5m7hJ6;YZ^&|Hq5HHwtYj=vgt+cD=Ro=ZGd`@H;1j&!n!PgI7g_m z$~!xACp?shG%ydORxhM{^eO6z5Dl#>KuhI>`MWK810=kqXDAEH#>TpKf}Bv*(CEou zd`5MLAVvL2w_jwgKYAa4?eO?mK}m@Kyt1q|RX{+X+rJt2pECCn|NE|p=VTA_^+1a3J#Gk&%x;&VUzs`}Xaw>X$(q(ZEZ=pyQ0?oYvOX=UFHojJMra zsZz1HMC`aAX|qW}`SF{QvNAkK9FquRcF^Us`56c^O)S6DG#7)6`?vUTf?K!3_@B4> z0agKuJ(jPcZE8vi`6?YK-hRGDoUk~U{B*rD1P{u}B`Qki*M?2Yx+*YGd*|@I%x4b? zH-oFZefz{L;7AFu>9&_R;4d!YhPXm}%II*ZO~Igr_dX@GR8+DR`o}v{NUs}J{uzBQ z7lF#1Kr*NOI{Gbf@WGN!&%mH|VaQ(4YI6w2tVW41w*u4_;J`f->o@9Yn%9xlB>ZK7 zN=duvJ@OITi?5wzrT|1?T^}MN2~ApjNUx<&Tqh?dfxh1?9I2ss>_9Y65>bgYH3DXB z#ah{YU-_+b5GXlv`~sb4B!qa5j*dy0nen_G|0th4c>*34qMRR+n0WW66+c+=^73Ap znCyySyz955kyD7EbNYDYfa3#K{Em0nt78|G5Pf`WaZvfM=zC91#x=zAI~IR*>Lnu$xNr4IcJOMJ1k*kySnPRX?JbeTl9TflJ0|X*#VZn^O zIF&hC@Ep0#E%_38FjH;q{_ot~&`tBzD{??r(frnZqNnoT#vJd`sHfT2KQ&8M005+{ z4mXXih&AN$v8Q^u4SyR{URt_JIx9A>NQ68spfDLj9kJo!3Z70Pbw$1Byp2{lG^ITL z5CM0%R%6PGiAclFp-#umc`;z+TFv?YLGI&MS{#jyMBh=l{OVQgj-$ao_PR}5Tl=f1 zdtT0>!bh^)yu5B@US3QlNRTY1Q%Q)$@SKovOI=(X$qU$muf6YlgEKo9N8K!pXl&B= zc++yB$sO|HiN=?i-ElU}^zhkQJ3Poz@O9uqd*J+ZCGp9-&JQ?AQBSs~%4qf5T4E}S z9q1(*4mz7Xx5#N|`h+V18SwK{0IUA#(Csx_FQopice1iTdJ-XOdM^RPdncv+|Gs{sq3yMi)MTblVNw)r|qZ< zo{l+v^ed!%R%gV`P9dT^3Z$v|g$tg%=@e(Gbj`1O{-gGSuh^-8S!8IlF~}?ZooAp^ zN~Q3TL}@2VFT*cFJ_I>Y{J2h~#CgP98xC?#Ie{Vi#B2UyVR@Me-hmbG?(T;Axug|$ zB&cgTlUACwIO=Wzsg0ebl}ifOyz8mr`ua7shldAr2LKkt6D0LkuD8Rblc}G|sj`j^ zUU|&UPSo4m z3mva-TjJ3Op5`dwp`E{YJ4h<@ zV>2b*&Ak@}S)rt;h!5BeV9W0D#0C;xsHmcn|D%XrT3Q;!LHKECKw#k5=nN!(kf>1S z_E%HHg9i^{V`A={UtZ?b*H5tt#T7Y72Aq?#CEpGS2_ZZEJ8s@LG}FW)>=LbKbr3v< z#{YPNxI7M6l~D0{xPis(1dNnB<+xgWSUcEC6|ESByoWcJru^p3eLW6p`V4y0=___N z;^5%mNd%(ylu9WVlxu+3*?D-B-Q4*6H;2u52SoxZ4BDgI<}ZF;y0)L_V zE}ANoKSP$v_ZaXbKYk(>k^iK@mCMT7nk7$>ots<9#)kC{F|p}%*(-LwfOEHmFHKFN zBy@ZbDy7w>Hvg#T=<3-+L)1oLhp)^=HGDbXSd*3Hg{-VBL_k0wDSZyPdBb)RlTu;{Rh() zA35rh?&JI{6_=MhcAl#*4zi^D-GD#O_yM>MI$J{^CnrZI;lssa);ch2LbQpcp`l*e zZLU>i%1i*KS^<0tA7l*M2As{>wHoN%9-9Orz7BZj#w&OC^i=z!T@n@(r7xqb4Wh7= z_#w@nn`@J$x=l%eAr-;kB7U|&l9-s7D%Wf2+=$NxymI7*RTem8Oww_{1Js;`-MZTc zC|>*3s}CL5n1fKWd&sCFTU*;TFlD>^S{kM0&FOwLu4I<)Ca-G%H@l(X&zd?7 zDS!WZa2eGREeE1ASJ=AEK>1fvS*dK=#$C9-y)EnO+dN^M%7A>LMwyzL%Aj5`<*03B z#9@zkh5>v$b9%w^&l$Z;&d5jxiX!3ob={51ao}vDxQ!bu`V$^*FSdv%KBAa(tnbm? zm=>I}>Nav6$&%7GF!*?Gw>BoRljdt&s@Dw_J~pFWk68j@J2^eQHfxvt*7_NQoSYm| zJ3HiW8rNpFL!lX8lby)bYr&V()HI`;PVbH0H~r|dM@wfXNNs`SEqjM*s37;a2(RR) z8gFq~6i?jqL&DRrVAc5kW(RvPx}1~4O!7dOq^;Xe4itpB)i@v!N#<4TAX&J% zNde&{sTY>O;VLg*l2w|voOQ?rKkbmbPfWwLQeFce@qZ{LCT7@SDYZq(Vqm{h{-*YD zOXeC@`yciwF<8;ZM;H{Q0nvnqEjI?w+-FY2wjX?w9vuyl; zLcq7qLw?)u{25HHw(7m3TByTE687yI!#6R{NYWp1bo{syKD#T8^8}v3VkZV%G}hRI zt=a@^&BiYa-#h^r2~*G^3#c=a`1o*oBFSoJ35mz_stw}+>sR^Eav63OHUGEau{&2! zjCYGn5fIe)_&Btot8(1D@j;i;B}(ldOau*B{!^RA(RiUo6(a{I&(9qX40e}C3Z=FL zFq&#=mWkKF=*4%!7d`axk!_k}+ma7fZ)3duy{}!juzf#&R>3`khc*KEd3h5Tse2Xs zn_dK8ouc~N+r5yK{relg(q>Jyq0n*_U>~a|lZ&Pbq)t!J$M5Ls8YHPT_)JUne!K{- zka2oA+t}a)^WPhbmN-F7^kIbTg&eeWD<~54Ev-r$v$MnPzn?N7D^2ZA(EPAvxN@18 zh>Y=L#$OB$rtC4H+2&hq&17GxcoV7@W+9LOF;Xg}>b8u#$D(;1S{_F4$LrEPk88c7 z+y+)yzVWg>eOfD3e)ux?m*6R=uWZc|>G(sf-<=<>mYZH_#*kwIai!1(`BMy+{>Ph| z4O=%&0D!IrSYq&1pX+Q#N5^3sxO8W#Y}Z7>agsfQP@f~!ux>l8#S3&6dQfwQk919+ z7{HRRoCIKpNV{yS)0Q$8%IGRf3?UUYwOrX$o>sQ>t`?ceqab~?@3F0o ztu1g+y9>?t2nYx=-{qhW?ncPtKtL;C&7}XY6X~+KgaHh_xm8}y1)2;)*O-7&LFaX4 zoK8^uRwKhS$v%d?4XHw_Xk|&>mXVRU=|X@c8Ie4W8@}55o!RsKbr}OUxhW4Cu{u1W zlEBafDop-I-uQkeyCEe5>?HTc#cnk=HhOjzPAT$y)$m{G#Q7%feFup|-naxSD=R*a zKdRG}QcZQ{Q`zYY%hS{P3=%?78+X&V8{-Wcj#oaFn@ZCBz&mR62~TTJ%hx|dGN$%ytwnrDO0-V3J4P6+y+4?ny) zn8x*{J8P3aV;G1IR8=<$EB*3F4_>?W|4ON)wVeO)fS+e@TXTnxU*;xOhbkfnb17G- zBUhoHpO+Vk)?v{o8GW6uu1y7+D>v>Rj4~xP^~j9F=60pbYY~}b*632*;8*B=^5*B#=Tx^Rri~jOzo2k2{Y)Q$;h~5}6 zHiiSp;4|x3qn2GeZGXwVbairk>3@d`t%u#j&`eP1fKHa$=cw4&bynAzj|^iG+q|y( zu6)nI8qQu8F2Ms-Q8bH0es^G%)FAJM#ha^J@LpF^%U4>7^H9scceVW4r7#2QV_sc$hb z%EI1c3Mti#85mF{VU(nsuzRt!V7?Mpv_DrLE2URs*+Uq|AVzsJ9^eZ>q9>)N$DEva zB`g-lV3%5b?=c1chA1f08ID_4V~VUkSTg1)UXmMHO+h-f#Wy z{K%zZM~eW18Cktv*{Lu4D(DWTiIO>aFbC+SzJ8<=qVfpK*vu*D4LYd + + + + + + + + diff --git a/view/theme/frost-mobile/experimental b/view/theme/frost-mobile/experimental new file mode 100644 index 000000000..e69de29bb diff --git a/view/theme/frost-mobile/field_input.tpl b/view/theme/frost-mobile/field_input.tpl new file mode 100644 index 000000000..58e17406c --- /dev/null +++ b/view/theme/frost-mobile/field_input.tpl @@ -0,0 +1,6 @@ + +
    +
    + + $field.3 +
    diff --git a/view/theme/frost-mobile/field_openid.tpl b/view/theme/frost-mobile/field_openid.tpl new file mode 100644 index 000000000..8d330a30a --- /dev/null +++ b/view/theme/frost-mobile/field_openid.tpl @@ -0,0 +1,6 @@ + +
    +
    + + $field.3 +
    diff --git a/view/theme/frost-mobile/field_password.tpl b/view/theme/frost-mobile/field_password.tpl new file mode 100644 index 000000000..7a0d3fe9f --- /dev/null +++ b/view/theme/frost-mobile/field_password.tpl @@ -0,0 +1,6 @@ + +
    +
    + + $field.3 +
    diff --git a/view/theme/frost-mobile/file.gif b/view/theme/frost-mobile/file.gif new file mode 100644 index 0000000000000000000000000000000000000000..7885b998d578d4523103e1f5dfbcd8133a7f0fe7 GIT binary patch literal 615 zcmZ?wbhEHb6krfwIF`)7#xKb(Aj2uD!Xs-asNo`J94_scC*xeG;M1rUF;y*cx?0ps z_2^mZF>^Fx=V~P{*G^rfleShbd#hf~c7uYwhQ)`B%8nbAoir{#Wm{SZR^k3H=J{9Jm=JO-lh4xYs&@q)(f6(7rfdp`gC0M@46J&eJQBta!B9h@CjEU zCtit~bTwx3)z~T5;-_9qoOUf~`t_6<*HdTSNS}2hbM}p#xi@p?-O8VTt6<^nlEt^n zm)@yZcDHury{0wy+t)wn*zmAxdicePqc2w-f4Szw%e5z8tv~f@)0x*>&c5Dp;q9)AZ+BmMxA*e9{a4-{xcdI^ z^$$mHd^mpV!>KzTPv8A?_TH!S_doro4N&~a!pOx?&!EEq1fV!!U_a7O-_+dF+SU>! zFQMYz-Xh@HBp)OYX*7MhPg@W#w~=pBQbN3eZz~TMmqFs9_?SQ)4OK-ssb;;n#j&A* zd-rW?(vFUgwX!ldG1S#kSCW^J(hQGrGYyNp5g8E{5^SNR78+&d5VFtD$HU2(Cq_BY z%_KY^(BH??#leP8tzN;;s4bxJl1t}A1>2$$i-f1=+Y}7fSVT6ZoamP|_An?=&^XL3 nuk6%xBcZXWg@e6|V^=`pp=K5i9uWlt2ZjcQz9KFz76xkoO@B#U literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/friendika-16.png b/view/theme/frost-mobile/friendika-16.png new file mode 100644 index 0000000000000000000000000000000000000000..1a742ecdc1016e7033e78e37fbecade08fef6d50 GIT binary patch literal 699 zcmV;s0!00ZP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L03itg03ithOzq;@00007bV*G`2ipS$ z1Ro(nX?n5%00KKnL_t(I%Y~9nh>c+s$A9O2-|OCCKFWd^Wr4v0`G~T$Ae$*+uPn_* zN>i3(p=38qlogSkm8^({Bw6{GjAABaW^%t~?!C{)-{PHnXGY=Fd7jgG&iOshbIvh< z7~>{0+YWS*i-5R9!ykJYm^8C*nWTds#wSL8PQKl_s^|#85xggaR>ua%i+2&%+mCmS zR=vWOzU+~t)As4p#L4kD5AGd4P(;qjPDC%)CFD z4PUsl;p&-gsDwOO4#{KD0e%4#7@tT8>#8`{!UYlf2K4mGxgFX4ySG{wPwaz2kD&na ze4BAp>rE7Mz{*nO<9HVusN!9dD50!mGXZ4)uKF43Szf*r&R+h(gVGt)sDbi|_H68< ztJwm9nSlgA1`7@|zyK&Du=d~)Vs(b)qIO6}vPE<8M1r7%NYc(zk^qWkW`6@LNED|A zyE)o_ljs@%l!}QB-B=OXeauk&4*)o{w+9$obaWd-Q{4%BjtfQmCqM#ASpL_vJ)D15 zU@1WPVu>;OaE@oM%AN3H29;my={3v4P=}PYZ*?(;q!>?LmU%w-oKXJRdDiOvo>(u_ z?rTg79YAfmlCrLmNiwqpTEVdCuUNZ{5<;XBk^sq?H2_O`O58bry^1g@b3xTw#0LnC zI=(rNZ`5<0ui@rvxcREQb2j_LJ%Z3brsRu&*& z29a#6tZW>-931TI90J@toV>yUBEmufLP8?qvXUZVGGanPQp!>?a`K9biXxIK>M9Cq zvI>d{AVU~g+1NPPIrup^_!UHjL={K|{|_(-axl~|urf0$F)#@-G7B>PKf)jhc0V%% z5@2RyWaj`%DF^_4#>m9Zh>#OvViaUy6%7muopcGPLIUV_koOUQiIJIs1tcSgF2f)w z%*gcr76T76BhYqcK?ZwT%fkrCN0aq{`U e%N;)te=@#)^7-|oFLP{6q$G}S_`JRT|4jhcT}_Yx literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/head.tpl b/view/theme/frost-mobile/head.tpl new file mode 100644 index 000000000..a5bf0ac8b --- /dev/null +++ b/view/theme/frost-mobile/head.tpl @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/view/theme/frost-mobile/images/approve-blue.png b/view/theme/frost-mobile/images/approve-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..a13668a503af5cbb52ed3e70f80f69c673b522a1 GIT binary patch literal 562 zcmV-20?qx2P)MH000009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-pm6$CUe<~3%{0005eNkliPsM3IJ}CH}mVN`r2L(UeW^C7>;FE2}zE=*9(>%hlHl}Bl!s9gGj5!Ro zn3nORGI*TkV_3w|HsufdmMekBX}$^PyG&W= zb+7e!K8@{N?5}#=sL`j_P2}hnIzQr9Xm1GhZ~Vb0yu-~biSmBo)3{wiQ2K@=jXuDm zc!QlKMa88?kKiHP!6_xG5vTbK;==g|XLByphj0-mm8(a?xY7cKy*P{eA(&L53(Yp* zRc%zQCYtKgY@P72y5K7~Qy2V2mP8Nhf{({(UfXLQ!DLMH000006VoOIv0RI60 z0RN!9r;`8x0gy>VK~z|U#nwA(6j2z)@!zh*7$cITkYJO-%6P$2&{To_41yLmeh00> z7QtQuegjdou+h#7Xl0d)U=pwpBnlc(k|x)&m|ZeiW@j_z%$^4x=A1K}_dj!P?;)J# z@eNI!3K+Mi29ad^q@VB$9q@fj_Ucp*1fS@r*D%#D`1PE&^ZkN1a@sZn#V*tp>^eN> z38t$CpT@@=@Vbh(+bG`UfD_DA2|kO@UBDX{s}kPq0#5L#O7IYV6~KG$@8jrR0XR`& z$ZI9Rbu1}9I=^GPRUT+Pccj~K4Xc=I#VMsbivRkk{)3BUz$5q>2%g~0QNbthG$6Qb z53r1{8Gn$b$sydtiweN+Nf$@n%ck_)4h?Pla^1m-?9|CF?V)rjR7(9HJ&Xw-jRoJw z?O5;yyp9E*6mi%G(TD}#!eR{g9&X`F4ES@rB;38djDEBWG2oxFl~wr%|6OSgzmI2F zk>ox#-rgAk RiH!gN002ovPDHLkV1f}w+X?^x literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/arrow-left.png b/view/theme/frost-mobile/images/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..a312cfa71eeca15d76bc2f14fdf1b6ed752b2d04 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^iXhCv1|-9u9Lfh$Y)RhkE)4%caKYZ?lYt`VJzX3_ zB3kd>*vos!K%nj6cjFDrqAY5Oky0-r6m*(gu03#HrZ6$a<-|chy^~+J$^ZO*Zh}~~ zr|JgJH|m@Lo}VV=iA{)Q_#igH?7)Hv@ePg&h7AIn-Z2;Svs664!x<65JS~mE^Z8B2 zE={H|P3Bds1+3d9zLlTUcfeSDk+wp#35PL5!)nH*q6`kE4-!}#-WQn|2Sz9zsPON3 zRq}_sl3Cny{TeN+doybH%v#($M;=*Cy}Z&2}lt z^%GCRbPGSB2TnmM(%c^M3*=H}b8nDgNNL@}l+vi9#4y>J>-il+A;n3FULIfD|8S)k zM|YH;3)STEWNpxHP+IhRR*G&Wzd}i`%1V(V?H9i&o?~FxV%$`gxh8Ek)@d)0&=beIamUiPn4PN&nUJYz A5dZ)H literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/boldB-serif.png b/view/theme/frost-mobile/images/boldB-serif.png new file mode 100644 index 0000000000000000000000000000000000000000..78ce59a5473d8e6a9ff5dfd97867cb0ebd07e6dd GIT binary patch literal 574 zcmV-E0>S->P)MH000006VoOIv0RI60 z0RN!9r;`8x0rN>jK~z|U#n(@WjZqlK@z0&EA?6w*MY0gWu#goCOIb--SXi*NQdZbV zX_i)s1(}_l@@K1rq?95`G-jbFnbFLo2;;pL@40o|dG9&q&YV2;bniL8^E}_@bi3y~ zr-sMap?7Oy8ow}!cfp^8+&^Q%_d|jlK8?%RPzA1q&jD-=ej2;G6grCsZQ~^v!f^QB z&A#I}ZbsIC8;PA%*$SKrkZ!RB_UC}N>}VvmiPt&dHH;++*wtFxm#So**2JU4nw`1e z@FAhE$_Z~K^r@Wi^$Gp?|AN25n_Tc^*cZ{yw+|K@eh!0Ow5zz4O3=&yd>Er$VhUVT zvC(>}k`8NNykl++R#vPna1SHO+ii}`7v6_W|FEvWodBH;am7O6zwx4DuA$udx{e|b z2ZsseZ+;1%V}M@I_8}a>(@6Xz4(5Qjtd8rE9J4r-3l9Bw8_DwpgE>w(%D(MNL|=^) zx!~|Hp&!Tz|CrD>=7dLEW(?$nFHh*7a>6$!^zoeVJqi78E_e;cBKibw=YpTq)*@Hf zSaxS(u0{<6CA{ggTo`jwBt&e%rVcm`jCk16l{XUcc_oJIov0Bd;hsNYzPPXGV_ M07*qoM6N<$f-a35@c;k- literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/camera.png b/view/theme/frost-mobile/images/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..aa5935b7c03ad578105846438f2915e0164f91ab GIT binary patch literal 530 zcmV+t0`2{YP)X1^@s6zs*Ol00006VoOIv0RI60 z0RN!9r;`8x0mn&1K~zYIz12Ny6j2n$@!y)b@gokI%jqV4;*G@=YO8_%)QG!#A7oq z;1$-f@t0iB-k;C-Mq>nz`!w#CkFcpp6Q^q$$n#W0JnHmBEz7^78-ZHcbyRZQ#iX?S z#n^}O0Ze?u%hGQ>yvIE5WzX7JFxYYrn@`Xl!9|=K;47PmY5Z(q5mPmbpW;4V;3IZm z1}AZ(rq&{9Pom4Wg5wpUbNEn0v!@394xQlFO=WyYyOrHkMGuFi<X;Y^9U8`KX$vjyQp{yjSm7T9A=nrIhPcLtq*s# z#9eOE#8>PpHR$3Yo=X$4JhmsLDcYEc4QXC%6^m^dAJq-Pyhe`07*qoM6N<$g0w65(EtDd literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/code.png b/view/theme/frost-mobile/images/code.png new file mode 100644 index 0000000000000000000000000000000000000000..d490cea9da2f8ea85eed828490fa85102dfc1d58 GIT binary patch literal 488 zcmVP)FXxQD|i-Yf8C@h5o8S*#cP->@`}_&oL_ zdALd@o&@IvQjwuhu)oGfY>B6L_4t9^f3i zxKl828)w14e+lOD)+uWAAq6ywd z&bx;ENxaPTj)arCqgq#Pt(*82{D%z;EJ`PwYwZjP%j%D+E8S@wR)f>Wt%CT1^tR5k z+CAwlPE^U$(yKkq$QRNT<=Bn*hk}7Esk^H6`cfCp6!OeT{akIWd`?`$kBDs)YULfb zFU_IGSdu1Por#s$Ka<*Yl!-%W0$&LoY4+!T$4(SK7?IzV{+_1YRz&_A?n%GqgE8}3 ev}n=d-^E{8+LUv1SXk)*0000FN5q>Z`A2;2#g^w%NNN4T` zc8otAr<8sz<)m_J6?eQrb@I7sw-c*Q%cn#Nj0q&UiCd|pxUs&N=g}FZ{hHE`BPrI3 z_U%ak$=}D=Zx|^l-TUN!A1roiv5eduMrXHyF-&JrTYm*iML^*2Xwk5zlsxB$--)u8 z&#SWm#0a6R=aNQB=?p6ABmE=*RRtsUBrUz#Qj*ymh=9q9LuZLzGYl7@_X7Yl3PI&B z>dgQERC>f|!QtlxfKX^1u5y_GE>e)@08qwx>U#^=Y?#I=rMELkP&@WR5s0x9WruT8 zN-vu>5!vbokyBu;wza5Lh6qOM+0TVdU^hG6&VY7X5o!5nP8~oMFnNlIXnW>OJa7+q zm9M^Uy@)8*SP?Pc%@79+A)3a$E-})4ukSiV0Pq%YknAu3)!G(=$}C5jfP@1q$+!Uk(GV|frY8dXz!Tsdu+tHl_K2Vka0G9Mq*zgtBM@y5r9J|W^QoJl zc6!!_?8j0V*VdPo6k{8CGCh^xfKR}OiPY8hE(!L8Py?v1GdZA*Jh}!4QVWc`N-N5T za-f3%Y{O=!H@b2Is-JPDpsF098sb0{&}JFRz#H_8Q#XEB!PNVyttrvp4Q$km`r z=tKd<5pgiY0Tn}x+8~x$0sxaW#e%VIX=#^Xlg+lLuCF?(yr+XOAViu>2C+;47yGQB zYU_?WONcH>7&VirxbB-^Zc+x7+eCdt}M{P)MH000009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-pm6$Cju#7V&m0005kNkl z;{yqjsLcq&GPBtvlbsKyIp5*_=bkxt=1fhWTJ7XCuH!fkU=LRDJxy6gFLQmxYs_Ol z4$)H1nx}B2FWjm1C0)h?G;Cb&kfb;B5KYYG7{vSMP;C#v8IZVbO`jv@I7M1;RiQr{i z>H`ma=C|;nB>3$(L~n;puBBhKLuuEK;~;isdSWG$dvw5BOE?^d=;ylN!>ZLzde~cF z-;F~Q)_c^31&?8OfxUwJo0(+R(uD!}({YFvw*=m5CkMH000006VoOIv0RI60 z0RN!9r;`8x0hLKaK~z|U#n(Se9B~lF@z2Q-Lk+9~hRK8Ghdz7=HU~ zNwZ$!9VYMy{kXan4Y^8V(_37kc8~ajPgue*UM2L^hXK#S z3GV}Lj48|})w?3_7l{7OT~XLzC&5wpB<72NKg1e(ihz$`pwr+wyn?-=;5BR(1%HO= zqTs6vShhNRzX)(0zEC9mH!gByTqhOE_<#o)1HWP!-vtA%V?0v7!Dl#@?VD^viUt0d zA@~eW+XWNc?SC_ZFQx&P!sn1+>&NjJytyA!d<|{K3x7!Z9ij{_3ZWl_NN|?j8!1MKGap*0{ Wcg7c)xe}D$SX=Pkzh=^prAC#`V_6MOOz!~BQxP}x}-vG!rq~2SOHi6+KTpAHWOA-su8+ z0Av+lMFfCY0RWKLMj_c5tv-CFz-aYm14J_uaj%JI?vCV1=R{i8!}n6n8sCX|)ZLK; zxJ6$9j2lyP)lMV<>WMF-RqhEn0YDs;RV+2;@zr(|eMdAMSTw!pkzF}r_&;$0Hs-_O Tnrpiq00000NkvXXu0mjfsVbpR literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/drop-darkred.png b/view/theme/frost-mobile/images/drop-darkred.png new file mode 100644 index 0000000000000000000000000000000000000000..9657d11387ec42093f3e902207a1808ee77175e4 GIT binary patch literal 416 zcmV;R0bl-!P)rsR-6b0aO=z%tt zB4nGehK$;Z6MC=+um{mDmLiUS&|zId9>gX2%aDBJ=5a5;N|RJuV32e|h9;@8Krg8d zeWA9%XaQN^vKKM~E^~h$YY_egbmRbFIq+npmgHv&pd)(#%YjEDok>nN2nQe;;sC5d zxB&D3nvH&gA(Bq>2W_o^UkC#M!H__}HN*lvfHor3PDmu+rw#PPE*O#sn2dC0z#{TO zb^*wdfvb6|qvwu%-7}Mn*jBmPO(+?;zq12Y5&sBr?kXmpcqxDfl3!~Nx#Q@~0`MX- zK)e6|sC>PU9F6pnG6hC@@&SsOiL%$kJ$FZSr*oq2$ahz&Sl)?w)ZI~KxJ4fUOp&3v zDkrK8`NW%%+C)eL0A*xWrR12$XWK>89mP~&N7tf7ROKk)|HL<(;lg>mY^NRo0000< KMNUMnLSTZ_jHjpo literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/drop-red.png b/view/theme/frost-mobile/images/drop-red.png new file mode 100644 index 0000000000000000000000000000000000000000..91b0260ce1c9f859d04514df1acf718b8a319752 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^iXhCv1|-9u9Lfh$oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#4!fuTw^qcmeJVhq2c9mDArXhK-gqc@NP(yAVSZ;{;_kj(T6}@m6FRTkfAw2E zMI_1b-4DrkJ122_F4gCjn2>isqn*{qgHd7)Bl9I$&Lt7tkqm{F`RAO%7_t<#86rKH z0(d+bE=^!HP-iN0ZYX5_z-h>IMnL(2Y?DY2W8?|H1I6uk?#@(fZQ$^krgF+@72~m- zdsZ(VeN@d>+`-7#bmR5eeudxK>y1^I)Ge?5d(7ZBq3Qtllc<)4%`(!Heyk6_=o>W6 zdDivLXQG>b-oE%pH20o=$;HU8my)-=-?n>(^{$x*cFlC%J@Zub-}w~`vzI@WTenhe Q1<zopr0KA@h>;M1& literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/drop.png b/view/theme/frost-mobile/images/drop.png new file mode 100644 index 0000000000000000000000000000000000000000..af38adf5e16e2a88a11bc370a9ca3413a0bd5e0a GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^iXhCv1|-9u9Lfh$Y)RhkE)4%caKYZ?lYt`7JY5_^ zB3jShxX9aVz{7H3x1y0-;@oYkFDbr|ifsDVFvY9!R_DVk&3KKA!3ur60sStYSQBnk zzU!U%ghe4zU1d`KB<_{!C>_uw{bCqKMg1K*+D%xL8naf%DbhfdA z?@V){NsM>)Gzopr01wG| A5C8xG literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/folder-blue.png b/view/theme/frost-mobile/images/folder-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..6af9bbec0d4fec502bb2af4c00627662f412a5ab GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^iXhCv1|-9u9Lfh$oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#4!bD7x=`Hv&PbrpN>3NZkch)?uiJ7RGGJ(Xcs=3^i)~|UHS0&AUC%`3-eozd zX=R~hQOUwTA=0Kz;csE#MaNr{E^*!GzA5x+!UV+ySJH)F|KW>Zes+8h`-ZcdzuXXC z#ITI_nO$S(yrtJKa9kE(Fkn7+?dKAHm)S`VlIHe1$GhK6yvw_T{l1yT5Z> zywvlc_1y6W2M)y+0Vg2wquRxC!@`aR+YOR0LbM(%ct8KwJJ#xlGPBO9Jq-Xln!(f6 K&t;ucLK6T=uV%;q literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/folder.png b/view/theme/frost-mobile/images/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..86dd21029a453274a905099534bd0b89909f8b60 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^iXhCv1|-9u9Lfh$Y)RhkE)4%caKYZ?lYt@=JY5_^ zB3j>G-pF~#L8RfK{v)ou2SR*{Ufkw9xbh~-}7$A_rijd zo9Uuu5y{sI-}UMCB|A!Ov0Zj7OUFgt;SBHTOC4hAI&CZ=@4NTEZFEjpmB8jLpD+DFN zhc09$-H0-}&_fq`u^^K!rX=0y3T1S$pi(RHVJI@QvQR6#(1?&_HDYwfl6+I#JF*{4Hwbf6#SVkV~J2poz%_zhp<6Rg8$sEtB@Tl8Wnwk4%i$2KfM zPuT(;CH#34WyTaS0jmt(+2?o*-{Usnj%JvO zy+)qQN{p{+z+w0x6W)w7@pD?>)#s|$wq=W*)ivCWG^t-u&z}dnbmt_X*$oR`}x@sF5O5f>38LnYriBJ!INpn|Y z3fAIs{3#-2q3YH4we%g75ick)q8qQ^DNMsLi9Sc=SyV@)~pi$f&&FKH1#G(=- z7A6ICCBJJ_#r$rZmnk0<5%e&w5b2;Bn?&}lVX#YdM2CpuZH7+Vj=Rv6(I*M_tP_>@ zczlV8!r$XW#q7llyqFgKMK30?m^j_&PN6=AFbj8MMU&0V%I2O* zT$XPV;km-(i5k^)EQYMX^CGw8cqYx+k`tFC;sKGCb1cXde>VnW1`7I4#=nVoZO-Ts z^}Qyt-9Z_zLzMcr@wlj(?b^5ExH{7{F6pm{hIvGKzc>?IUSt+9O?eAf!%K!gD;~;t z7qwEpGMm({je|Q%4A>^}M;$k0ycO*fcN^YqKcac1gu}JJBWu&VPCSs&OS^3%%dO9Z zHc4UB1asOLu~WRra<{!JvU4SjH{3P#a68NJn7^il0eeKFoIipdQ{e=fVXj8hN|6ECcOk#P32xuoXnGu#i}sMQ)hcom(XXTiop2Z~r?p%x36z1`Lfo%Zi4vu?l)vFfdQI-R{9#tM#8(0^Y3h{P$E4z?*7&fG3>X2&o|6}>2V6<#4+CXK>0G^AjsO4v07*qoM6N<$f(TirTmS$7 literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/lock.png b/view/theme/frost-mobile/images/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..b8b8cd20e0abbfdbfda68fb9a8ca96499a818e1b GIT binary patch literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^ia>10!3HElj1GJOQfx`y?k)`fL2$v|<&zm0825U* zIEF;DzP(|aE#fF~;N$(3F3E}>S5&g5p9&Yq&b<=$N2sYcqU%-!$2GA!0egon!5aic zOj3K?CeIO?9V}d=-tf&mA9v%jhcbE(Mbb9%%YWcI z|AFE2k6Q-c1Jnw5WB;rvEG^vHCC%-=F<^7W9Td@rY_?h9H)RITU;X4sFIxY-a}@gD zqBK!cXr`?5vF{Ho(hPc;uhzQ#y5yIve{G}I-^EcYZ)IPtU3zM>s%*@A?E)rs_nE%V z^Ssx;H(gV?4=|$AZ<9cXDPP yo^5{U@7q0^=iX{&GF39mm><4-;a<s4Q^D?%u9)1dpS_V&7KbLh*2~7Z4u;;1( literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/menu.png b/view/theme/frost-mobile/images/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..44d5285fe04ff6807dc6b88521839204fa3e0bdd GIT binary patch literal 1019 zcmVSPD!JvIiw0Dh)O|x1g?Au#D&kp1##pHaD;Pjhyy~jRJl|rO&}&DsU82F-Iv2o z$j0)nov7i$NUv<~&OFaE@4p$t|9!|U=Nszn7&mI7Nep3d{c7S6+asu4aCy=L(sw6d zZ7tyKcmqvhY}BQab~!&E@bszvJLkm-h`$K6?gbB-X0-y;fI zjO7HnXR4aa-Ia)iMvF+>jNO@Yz2hJVZY{tN#XA@`U^qNdRd?(7iUd&IAPQ=Xdk2e# z#gn)8h~qUtRF%6LAjI(+QELw{b3NdkBUoB_pQwJS-9JtWcD6tLOjUoHiF;)XY_W&*qRW*H=^`7Bf9A@~dL4knL785;D z)yaJ{9aWt$(GwVL%@SYG(rmM38q z*qp+OfPgS;A=0^7PA+{-YSukrWy)&6wusagB(DM6e%&;dB{l1~^z~FdPmUpNdzIk~ zxzQoQT{R?a# zlH7XhAZY*(fE6$=A^k3kfBDfE0P)qm$Q$0>SBcg1pT7eiVS*1ybptfcLG>_lMCyJ4 peg?L@%ZFE2o?HleMIQOj$3Nxqi2<0AHlF|h002ovPDHLkV1mF}(5C&u`N(7=|AwagwHM zRS6*wTo4DKfQFFxoA`e@j00RaAcVwV>wYwA+SnZWrgNiqRi(9;)lya0b^Jblzt5io zhxX8$0U$kk3l(6KJxb50uD;F%z3VWoPQ0Jo>_ys`99z5th%{6K-WXHtLA(IGG#daP zdG9Acv`YwMOc#)rj{p>NZ;detPyz#Ei~+{?tX}{*Ffzu(*p9sg@ID1%O}qpKa_24x zzeS=KKnEDLG#dv<)i;0>#3Mmm-G*xG<|W<-{skIdngW>3Yzx2(;<3iAw}1$pInqW> zgY{#emZkvWD5EBkhzk}N0Z)NHTRP!@F7O2SE74fb&p&g`r4U$6a;=?Q0?&b8aw6U! zUIRVgnQV`>Q6B(ImqSq3Rsc2#LDLlV;<;f19-&zor#NQ}iV&y=+0>A(> zX)X#;8UV0Hyj1@NI0jCXn8^0`z`53(spvHQ<;xGI(iA`xr#NR-EJFJ&Fwt(aAj8MN zN8pRbKIp{MK`vGL?kVY53g=u?0B(_lX)q~M)|V@snd)?W((f|~#x3W{0AdpSXQjEw z(54Wjf%r%O`I?Ncf>J$MQzP=Ahz%6JM%S(?#i^2~DLmPRGvDOET?H!ByhN4tI^1mN zfEDF$B~yNnH(@SEBURS(wgXld#;M}j-NEZX5!{CT7J##&x)5!-!x@$0z;#-e`tsHaNB>mHL;s6hcw*)00006X_cm~`}QZnoE? zlmpswuLr>VZ5oZEYhzxcaf*doJpdqP*1j(NW_H%)pAOH4>&w7w8~_p7Oy+E0vn9__ z@1I);R! zYR5PwgI0e@tXCj_E1>!}3sOt2ii9Gvl31@mg>xmo7Xl|DZV39;6;Yua2!TQx0;~Y? z!K@IGa)@g$D^Z6}09aMTem0b`6A$a_>xA_hFR3I8JY5guBM3E0;k5Gu{lYLSz()X% z0?%S{08=O%2VxvBprr&&Lg4)&)vHLWl5a1kmLP(R1I{yLn;)=Q7vXseo+7&5FxxnbphB0 z&O2TR`Gr0TE)Jr43%UYq0VN@1*9Aagfyp4e0oFkugVunh?ln8hzhMfbNXE6~VyZ>f zyU6@nvgaG$+3 Avj6}9 literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/notifications.png b/view/theme/frost-mobile/images/notifications.png new file mode 100644 index 0000000000000000000000000000000000000000..27bacc6727d3f7ec1704c957ee4d929c1a946d24 GIT binary patch literal 923 zcmV;M17!S(P)@S%3y%@~Ly~ooFD%5^#1ly!TzD)HL=wXnhgXR+j%2fI$S|hh*8li1?wQ z9Ec~a6Oo*Hi@{x7{{0YI=;C>p`fX46*_`Sk;WlFCD_R@J#diR0mjCBs9?p@hsLGdEdDNn|DHDg+fLAtlXF`_%l%M$NIN#W}-Vhxg6$zIW3f zF1+u3{`Wcmd!F<4G^rkAFavEkg)i|_1MC#y4!nyi=&SksiH~r1qXo>uuW4`-=3qKH z(S=@|!y}Cn(2leC5fA2fEx56U(}5pS==iDy48vFGNkeVI6BqFpw&DKd&KAeBx@r+? za^r;pL|75{v4itfY9^$2JYZoDAe+L@bfF5$nH>x&I!&MtLk!>hUJ3%Es0N8gLd zX)qoT(Z2&Da7cOP{3oo$JEG`p5yALG0dII3J%`)zW{RIzuYg)So13mLSznv$&*AYD zyR}LIV{saXaZ|ziqXy=OR-6zGs;x>98`H?Fg0;~&hLdS@v+zh~l>%m@fDI+<{ptEN zp2_E~Dh0p?q61DSS>Gv!lv_pdI*OaC6fi;*sV&#wHQ`e+vOQF#0AfP!6V2zJut8eLGt%hNP@WzYc?E5iATzIaCtY|1k30L>w z2;RdNqA~Tj`hL++jKnfAvR@KI?%SfP{=e`y9$d(qQPk`m00000NkvXXu0mjfM*)i* literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/pencil-blue.png b/view/theme/frost-mobile/images/pencil-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..f51ddd4fe2f981e81ab71d168f5c368cb590b381 GIT binary patch literal 594 zcmV-Y0dEMbz2_{To(WtwgpFAr>jL5FrQ_7Itpq7f3`1SR@vL zC<-<&a2|JNFSqYrxBG_S$IQ-fmk1{-s$;l`(`e%pmQj>>`c1@>1i(d<*w-WG4Q9$b z{T&SvD)1V6d)$A=*)mUG#;imOx9R}0qS}=e)nqKhd>sHD;#F2u(=ib3nt%%!$7<7% zR+xf1fUVOwq=m-=0HQ!zD8d-l1vC!X+7r9C_CQTQ=UK;mnWt}uLUe4+K>>|GT3yc* znA<^~p<43~qRi8^us7C62}ydr42f1lVzFD3^t%`(B>CUvs36I90i%E5Zs}uHUW;p#^6;K7$QRj0DjII*hAW3afl+ gZpDUcb)KSXq;H_ z6PP&3%7lvv11v5W;-BH#Kq3&D^l<4f>CpDlK6&rG%dtoc_ZVZ2A#QMBM>)d`KP#>Q zDzO1Ae69g};50S>9<~IOQHzBbZwYwBJDM>N^DP1C`zVlM20%2(ZAL&8$f2+dvjCz% zmiK{e0nw%=Ds&oWsCk7&g z3@nu*&mLM8gK5NX=NDwyFb`C&(xf_=Os&+D-va4a<8NT|*z0i?at-31~|S*S!` wsKD|*vaWZcrY=-ql0Ys>o5x2@73Vnl1-3#$$uT=L%>V!Z07*qoM6N<$f>r^f=l}o! literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/quote.png b/view/theme/frost-mobile/images/quote.png new file mode 100644 index 0000000000000000000000000000000000000000..93127c5e7176758a7cbcb86426c3cfcd18efc0ec GIT binary patch literal 366 zcmV-!0g?WRP)|<5y&9|IYgkp&~7EhHgO&4OL=G7S9RdF zmry6VU$>_^LkEU&5%CVbnzS2Jc#IU>Nq7r*iFm73g483$o-vp3b|c;cCd-DX;V@FL ziJ^!$fJVeSR^cFw;Vx2eFX2t&DdKH*6H>`;upa4~(D@(=G{qk+lZp9~?E6?r3mb_5 zff|l{-V@7J1HcF_aW1_ni;QdE4-M@T_ibh{TEUye;73c4VVf%1GWMCfZu^HQkM4sQ=Cy(lAQ7ZMc4<-00sdc z0gb>`UkjOTVD;Fj4An-z;NKVfQ`&>MxD=`gkazzFd@d}8c+$G1E!}W zaYEX+R@&1O+K#$}1OPshmed7Qq6TOMd~pJ?NoeaQ0viK@mph}*0DlMg_5d4#fT^v| z0sDauQiA>)0o~4kBz8HY?gk~{jCu{U01p!az5>2>M!l5ZZNTLO|672~L{Vqd5dmFW z%(^CL)CH+riO}|wge2BEqk6UV725iZQtf^#iCg82x(|G%tzQl_0V5;3+ETQUo4{^h zv|Qzp`+tDr+WPgtCZJ5J{Bu7=we^)ibp!(=gt{d%2U>vtfS-U`pvD>1o?+bA0(*c- zk;jjLN@vu)LM2LpRYguw8}E#&($>!fW(ylaUOrxMFmHgrM*_{j{QhC3tsgEUcvMWx zDreN`47)D}ZU7&qxGr=?9W4NJLqY-oJBq=SWP+z(16-T6^`r9I`pLkzDbCYk%9>=~ z0sp5BJD@QSGysDGf^OH=56V!Dhr)(5TbdVUq*(`00W8i~jaJ}7iqECIoRmrS0$2ci z9-tqJtI-F11N6nXJOGyFwDogwo~IN^+{Es@?`*VZ?S^676Wa8*vnvVrKiB^K=&QasK+7lt`lg_I33%C zQAu`HbOb^24mc_!cV^1>$&;v-l<(6qA_E^qfYP3aCx557Zy?>AA|37=1 zE?96`ckSQ){`cN%?R|*1!5D$1xQM zJx#>7VHj>ifE@e303VkKKgB{UiGb+Chc62-7}qLK)gG zGnQ;)akxbE+d^JlDB1fJ5T9ka zZlbqvK0+`|GYS8ON->Q(ht+l2#A{)3Gd-?#DGPK5To%= zgziqN_pRs`@kS!Z>ImH)s_Q%VOG24`nFuie=UZr>gHtV%9t&GG2D1_&2-oP;Sn;sV$$z~Qj-B+MmtV6$!)`1!U~MVFG5FsX4^f#3cD~~f4?vD;){A?i`=3= z!Hh=A;ri?P4n~P9-yEVH_Yxp>H(4pLCQJARA4Q7g5I-gWJXG<@stY|~p0L-k5Yv>G zVKd)WoOD0~M6Yn~_h3R9X%qXyixp93-PjtF*e>n@DsIOok@;&QVG-&*1%hzcs&cRB ze>^?2s_VIiuY?2IxNSvShrhDFM+$vnjPMh&JBvTc;+=)u*J@t~U!8i{y>k0W_?;SM Z{{d$6;Rkf1z7PNa002ovPDHLkV1gt6YO4SM literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/remote-link-blue.png b/view/theme/frost-mobile/images/remote-link-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..de8d21db64d55c6f86c48ceed5fb584d1b9fa02e GIT binary patch literal 613 zcmV-r0-F7aP)1aCX&BG9|lqkQ+3m@2HUX}>#z;G8=NtO?i9oORv>QSe2QVbOuQDya0)w`tmGID zrx-?NLX7@`ek#TAu}r=amvI`)=Af0&IG$p7P!Cb07`D!0LOaoq4f7=0N%Yp5aKVGP zi>328Ig|KUs|e7A+w%l<``6|M0W%Af5JmN#v8oDl5#|Q zaJ0dB_i-Y{@Oj#-DnOi`v3`Lo=$~mib=9jifVhU<6vN~XjyX#!mSS(Y9LFVGPceLL zviuV`lVZ5}Q`?^9;ce)|OB_itjLt=X<%@OHyKNPS_2qYBUy9*Fivm29Vt8EwWcY%C zW*|Obe~SRq0xT!&3NGSgQ|(AG47NCek4oWw7vQ-PKr5PPDN+n?XIxs|?w^{r{$o~- z`gW|!@}lQA&og&~co?~<~LMPrfvGF@h;C&*0 zFUD~m_pq8J)GEXrZedSmk8YvlV|a*H1$(@d)3B)m9^qiL?j(kV=Bsj$8s=phwlOh{ zh<^kRu-ruQIDU#6wlVl2TcR9X#-}YNkK+$UI};K&a05@#RbfpT{^C1nmFN}9 z_pd5Y!#Bauq=@LyT=NyhN5RMte4-3DaVcl~2d0Eq?lZn(A5P)6@G9qF5_j+`9xSWG zROS>jxU2XpIUv6R2 z9>ow{^z zP;~ImA{IKBp+zjZDT+>7q^-0|7C{OQMF_aqrIQ8}1UE(Epn~8aDB>R+I_Mr36+r}R zK@>!3)z;R*3?*KBX>wlQs0#D0e(ucA;8HDLU~wcX|Okk|=oBu1*XraY6mFapLL92dX)gCF;Y*W;30bPs?7jz(3?cT<2oc!@Dh7)r%eENu{*2# zuTO+=I*JQe_aBPS;VdpDQLwPAS%q=BH|xsQ76MFRFo}YRLbjbm!Ei^_4h0l)&r zai|eM&Sl55qWN0;S0cx+-0^3GNfg{~>d}8)b}WI&t~x~u z8&O1KBL-5~B#0Sp#5c6kAW6g!un{C+Ay!s4=`2iTr-&9R2o{1OzF?8U{Qx#9f`}#o zQ4l53O-yXIkoDf&&2GH+G|SA+&UxniXV0144kay3bm9&U;R!}UG*@P>n(}rI$IyuZ zoGm+16^K*0_DI=@I!a2>jW@aOC2SAT`&LC_sKJ5;TPep-gZ|-`$k9NGN|Ka`#Bh^E z4Yop#!3vPo*ldr-00^>&uE^IVSTrDv6TZk4r(!>eeC;4cLm1uq=}v~k!U8xJT9O+yUv%5YOSOcpKvfl6Cqj((FFEo{VQHn zqqNvVRYKMF4UzkI;wb_>OCMP;cxX!E=KK TP^1hR00000NkvXXu0mjf13D8p literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/star.png b/view/theme/frost-mobile/images/star.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a61a497c6f89176297eb1ca40cbd6ffd97d0e3 GIT binary patch literal 515 zcmV+e0{s1nP))jtE8~835cW&iiJ%;3rodVt^`2~4Z*~imttngW}VkNyR!!_%gj7;?*HDi^UM&g zE7-(7Ug2^DuV6jJY1ddD2E@l6i1&2^TqVpKAvA63=@7(I5P)V$j5Q)pp{Wf`7y` z-Kq%C88`A)nx%zc{66~Z=+91k3I&)hIKkI~b=T7-%8Daz3y-iO`r2BFkFzwNb3IWX zq_3*&|L&L9Ww*-$Oo~3clFZ(Ux@nTKy6iC~%0N6$Fgd}hsEcN)71wndUH5oc24bn_ z<{!9I#sG8iece8bWehIi1@^FosgeL4P2mlGV@=8~o&joeg=kVQfqDP{002ovPDHLk FV1lH>=#BsY literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/tag-blue.png b/view/theme/frost-mobile/images/tag-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..6e5cec80ed701751dea46f703872ae4b08805b15 GIT binary patch literal 432 zcmV;h0Z;ykP)>%zQw{Fs@% z8DS)@|j2>j({W(@c=}Jh$kQ_L;?WOAQA|O0x1lDSKtb`13ol$ zj(}ZNw+mmy6yOawX;gXHsPY`RFx2vf6q>P3qssTe_k%?}FNhAYtm=073ok8eIzyzY z+fU8-EpP)I0@uKCioLPhy*yXhrtGT3lvChU|fLqsmTP zXGVhj04DoHV#qImHzEM?4-ka#fQ$ly5e|?^Koo=pL<@+9&_Ij;)05vR2Ay>abiln0 a0N@Mc%evrA+|Wz_0000GQRHJX6li@Y?;jx3@YUlSgZe`~8OHrLlh+(BWPHNb>YC``kRY|`t>5jLX|C!k zt80Ir;psWgSiv}dqB%qF^ZB=07+e*E8Z=ed5|}(0S2z_hWK9rwz&EEstRmW}W+{Kd z+b4a(9XcKBH~c-V%i59BvHlI0&YU}b9Ue_Br_LP^yTQDj!^K1;UHgi{VHpMA))0@@ zGa{R2GB26$G^N2tl_T3j-8I5d?|>HDLS9d%45v*DQUan5d@iCBm<$<@IQTFMc?ddi k1c^Lws;XPQV=~jeeVum4rV93M2l|o0)78&qol`;+00CfUU;qFB literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/underlineU-serif.png b/view/theme/frost-mobile/images/underlineU-serif.png new file mode 100644 index 0000000000000000000000000000000000000000..745ca2cd6bf236ce16d3c503ebb57df66844d922 GIT binary patch literal 454 zcmV;%0XhDOP)Za{Fgs_?|IF+ToULFL zgYxMm)>Gy`;A2*j3WhO+0gPiJHh+i(Y-2MN_$MV_4@S`+Yzp1@f@N%lTy=Vd^O!AW zRh^;5kY^_Tu%*eQ4XK2d&=OigOK1tbztFbe|D{1s661$WLc4-LPJ{kTjC-1d_6Gku zE$9*cx@=ee<8gz)zF3~#_(XE2r|P@CR=jQy`ZoAIRI`Go)i-CmitqNBsB1jOT%HB3 zqLwiZUP4Ds;0V5lbyYmcTWKGDCBQp)b3>8`c!5ti3-PCz%nPh(5E}__?c>_P8b0Hz z%cHE>0mg~~Yih^48{pSj6|*wFfl7e_p5nRa_oGvE%qKV!-S1U=E0FJQb=^+ii;n6x wwTYFqfFJU`zalmt2ei4WebGI;O&!Gt7aWFk@aB}tegFUf07*qoM6N<$f}RG=8~^|S literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/images/unlock.png b/view/theme/frost-mobile/images/unlock.png new file mode 100644 index 0000000000000000000000000000000000000000..81d9740e81ddad0705355bd0bfc5421c4d4d64d0 GIT binary patch literal 572 zcmeAS@N?(olHy`uVBq!ia0vp^ia>16!3HFovXx%~DYhhUcNd2LAh=-f^2rPgj2}H+ z977^n-`+f%B^)Tx{xN=wSBB`tEB$5KO+li9h0CSG*X`jf4cx;J_(AGRkQT?fU8PHR zXnMp(OuRIU-%u;0aACKl`=raBb5xQxTk!K3&$Rsi-Nv~s<=)I$7gs!H%X?@fcF{pP zx}sBb&7H0;unc81R>nR~Zt!{Q6%H!~M)u8>f<{N~q$7|njK zu04l;cKz(Wp|SGgf>j6hJnE@FJil;TR^x%76JM{rd=xSDgY53}58ib!O?)~jYWr%I z`Kk+f&-7>-HuHP#T^`yrf6|4=hOA2dld9g99N71ySk`@V?RvE-9-n&+&O3A-ouo8d z*lWtu-_JZ%pLsFat4-1Pt^9hn`qUf3n_N`9U5@=#m1)iIy1g&1?BDhy*)fu430nL5 zbOdK|bq4C4Ve@Nw8WJJT|Jyo4^Vg)e8}i!zPF2xMR2110V3fw%UYNl0@WgqA>p>+M zXXm}O|DD|>-D{hwwXRb~@TAa0oW$R*Z~4I&&EIL<+WTw6g_e?!a`__u1!3%af39TT zdGA>H!t~!M7Sqg*-0qrQu+j3~rTZG&r`W{&<^8L_jQ!8Gua|(yfx*+&&t;ucLK6Vh C5(kL@ literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/jot-header.tpl b/view/theme/frost-mobile/jot-header.tpl new file mode 100644 index 000000000..b1762f169 --- /dev/null +++ b/view/theme/frost-mobile/jot-header.tpl @@ -0,0 +1,212 @@ + + + + + diff --git a/view/theme/frost-mobile/jot.tpl b/view/theme/frost-mobile/jot.tpl new file mode 100644 index 000000000..e39453ea0 --- /dev/null +++ b/view/theme/frost-mobile/jot.tpl @@ -0,0 +1,85 @@ + +
    +
    +
     
    +
    +
    +
    + +
    + + + + + + + +
    +
    +
    + + +
    + +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    + +
    + + +
    + $bang +
    + + $preview + +
    + + +
    + $jotplugins +
    + +
    + +
    + + + +
    +
    + $acl +
    +
    $emailcc
    +
    + $jotnets +
    +
    + + +
    + +
    +
    +
    + {{ if $content }}{{ endif }} diff --git a/view/theme/frost-mobile/js/acl.js b/view/theme/frost-mobile/js/acl.js new file mode 100644 index 000000000..a2fb06262 --- /dev/null +++ b/view/theme/frost-mobile/js/acl.js @@ -0,0 +1,258 @@ +function ACL(backend_url, preset){ + that = this; + + that.url = backend_url; + + that.kp_timer = null; + + if (preset==undefined) preset = []; + that.allow_cid = (preset[0] || []); + that.allow_gid = (preset[1] || []); + that.deny_cid = (preset[2] || []); + that.deny_gid = (preset[3] || []); + that.group_uids = []; + that.nw = 2; //items per row. should be calulated from #acl-list.width + + that.list_content = $("#acl-list-content"); + that.item_tpl = unescape($(".acl-list-item[rel=acl-template]").html()); + that.showall = $("#acl-showall"); + + if (preset.length==0) that.showall.addClass("selected"); + + /*events*/ + that.showall.click(that.on_showall); + $(".acl-button-show").live('click', that.on_button_show); + $(".acl-button-hide").live('click', that.on_button_hide); + $("#acl-search").keypress(that.on_search); + $("#acl-wrapper").parents("form").submit(that.on_submit); + + /* startup! */ + that.get(0,100); +} + +ACL.prototype.on_submit = function(){ + aclfileds = $("#acl-fields").html(""); + $(that.allow_gid).each(function(i,v){ + aclfileds.append(""); + }); + $(that.allow_cid).each(function(i,v){ + aclfileds.append(""); + }); + $(that.deny_gid).each(function(i,v){ + aclfileds.append(""); + }); + $(that.deny_cid).each(function(i,v){ + aclfileds.append(""); + }); +} + +ACL.prototype.search = function(){ + var srcstr = $("#acl-search").val(); + that.list_content.html(""); + that.get(0,100, srcstr); +} + +ACL.prototype.on_search = function(event){ + if (that.kp_timer) clearTimeout(that.kp_timer); + that.kp_timer = setTimeout( that.search, 1000); +} + +ACL.prototype.on_showall = function(event){ + event.preventDefault() + event.stopPropagation(); + + if (that.showall.hasClass("selected")){ + return false; + } + that.showall.addClass("selected"); + + that.allow_cid = []; + that.allow_gid = []; + that.deny_cid = []; + that.deny_gid = []; + + that.update_view(); + + return false; +} + +ACL.prototype.on_button_show = function(event){ + event.preventDefault() + event.stopImmediatePropagation() + event.stopPropagation(); + + /*that.showall.removeClass("selected"); + $(this).siblings(".acl-button-hide").removeClass("selected"); + $(this).toggleClass("selected");*/ + + that.set_allow($(this).parent().attr('id')); + + return false; +} +ACL.prototype.on_button_hide = function(event){ + event.preventDefault() + event.stopImmediatePropagation() + event.stopPropagation(); + + /*that.showall.removeClass("selected"); + $(this).siblings(".acl-button-show").removeClass("selected"); + $(this).toggleClass("selected");*/ + + that.set_deny($(this).parent().attr('id')); + + return false; +} + +ACL.prototype.set_allow = function(itemid){ + type = itemid[0]; + id = parseInt(itemid.substr(1)); + switch(type){ + case "g": + if (that.allow_gid.indexOf(id)<0){ + that.allow_gid.push(id) + }else { + that.allow_gid.remove(id); + } + if (that.deny_gid.indexOf(id)>=0) that.deny_gid.remove(id); + break; + case "c": + if (that.allow_cid.indexOf(id)<0){ + that.allow_cid.push(id) + } else { + that.allow_cid.remove(id); + } + if (that.deny_cid.indexOf(id)>=0) that.deny_cid.remove(id); + break; + } + that.update_view(); +} + +ACL.prototype.set_deny = function(itemid){ + type = itemid[0]; + id = parseInt(itemid.substr(1)); + switch(type){ + case "g": + if (that.deny_gid.indexOf(id)<0){ + that.deny_gid.push(id) + } else { + that.deny_gid.remove(id); + } + if (that.allow_gid.indexOf(id)>=0) that.allow_gid.remove(id); + break; + case "c": + if (that.deny_cid.indexOf(id)<0){ + that.deny_cid.push(id) + } else { + that.deny_cid.remove(id); + } + if (that.allow_cid.indexOf(id)>=0) that.allow_cid.remove(id); + break; + } + that.update_view(); +} + +ACL.prototype.update_view = function(){ + if (that.allow_gid.length==0 && that.allow_cid.length==0 && + that.deny_gid.length==0 && that.deny_cid.length==0){ + that.showall.addClass("selected"); + /* jot acl */ + $('#jot-perms-icon').removeClass('lock').addClass('unlock'); + $('#jot-public').show(); + $('.profile-jot-net input').attr('disabled', false); + if(typeof editor != 'undefined' && editor != false) { + $('#profile-jot-desc').html(ispublic); + } + + } else { + that.showall.removeClass("selected"); + /* jot acl */ + $('#jot-perms-icon').removeClass('unlock').addClass('lock'); + $('#jot-public').hide(); + $('.profile-jot-net input').attr('disabled', 'disabled'); + $('#profile-jot-desc').html(' '); + } + $("#acl-list-content .acl-list-item").each(function(){ + $(this).removeClass("groupshow grouphide"); + }); + + $("#acl-list-content .acl-list-item").each(function(){ + itemid = $(this).attr('id'); + type = itemid[0]; + id = parseInt(itemid.substr(1)); + + btshow = $(this).children(".acl-button-show").removeClass("selected"); + bthide = $(this).children(".acl-button-hide").removeClass("selected"); + + switch(type){ + case "g": + var uclass = ""; + if (that.allow_gid.indexOf(id)>=0){ + btshow.addClass("selected"); + bthide.removeClass("selected"); + uclass="groupshow"; + } + if (that.deny_gid.indexOf(id)>=0){ + btshow.removeClass("selected"); + bthide.addClass("selected"); + uclass="grouphide"; + } + + $(that.group_uids[id]).each(function(i,v) { + if(uclass == "grouphide") + $("#c"+v).removeClass("groupshow"); + if(uclass != "") { + var cls = $("#c"+v).attr('class'); + if( cls == undefined) + return true; + var hiding = cls.indexOf('grouphide'); + if(hiding == -1) + $("#c"+v).addClass(uclass); + } + }); + + break; + case "c": + if (that.allow_cid.indexOf(id)>=0){ + btshow.addClass("selected"); + bthide.removeClass("selected"); + } + if (that.deny_cid.indexOf(id)>=0){ + btshow.removeClass("selected"); + bthide.addClass("selected"); + } + } + + }); + +} + + +ACL.prototype.get = function(start,count, search){ + var postdata = { + start:start, + count:count, + search:search, + } + + $.ajax({ + type:'POST', + url: that.url, + data: postdata, + dataType: 'json', + success:that.populate + }); +} + +ACL.prototype.populate = function(data){ +/* var height = Math.ceil(data.tot / that.nw) * 42; + that.list_content.height(height);*/ + $(data.items).each(function(){ + html = "
    "+that.item_tpl+"
    "; + html = html.format( this.photo, this.name, this.type, this.id, '', this.network, this.link ); + if (this.uids!=undefined) that.group_uids[this.id] = this.uids; + //console.log(html); + that.list_content.append(html); + }); + that.update_view(); +} + diff --git a/view/theme/frost-mobile/js/main.js b/view/theme/frost-mobile/js/main.js new file mode 100644 index 000000000..a32d38ede --- /dev/null +++ b/view/theme/frost-mobile/js/main.js @@ -0,0 +1,663 @@ + + function openClose(theID) { + if(document.getElementById(theID).style.display == "block") { + document.getElementById(theID).style.display = "none" + } + else { + document.getElementById(theID).style.display = "block" + } + } + + function openMenu(theID) { + document.getElementById(theID).style.display = "block" + } + + function closeMenu(theID) { + document.getElementById(theID).style.display = "none" + } + + + + var src = null; + var prev = null; + var livetime = null; + var msie = false; + var stopped = false; + var totStopped = false; + var timer = null; + var pr = 0; + var liking = 0; + var in_progress = false; + var langSelect = false; + var commentBusy = false; + var last_popup_menu = null; + var last_popup_button = null; + + $(function() { + $.ajaxSetup({cache: false}); + + msie = $.browser.msie ; + + /* setup tooltips *//* + $("a,.tt").each(function(){ + var e = $(this); + var pos="bottom"; + if (e.hasClass("tttop")) pos="top"; + if (e.hasClass("ttbottom")) pos="bottom"; + if (e.hasClass("ttleft")) pos="left"; + if (e.hasClass("ttright")) pos="right"; + e.tipTip({defaultPosition: pos, edgeOffset: 8}); + });*/ + + + + /* setup onoff widgets */ + $(".onoff input").each(function(){ + val = $(this).val(); + id = $(this).attr("id"); + $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden"); + + }); + $(".onoff > a").click(function(event){ + event.preventDefault(); + var input = $(this).siblings("input"); + var val = 1-input.val(); + var id = input.attr("id"); + $("#"+id+"_onoff ."+ (val==0?"on":"off")).addClass("hidden"); + $("#"+id+"_onoff ."+ (val==1?"on":"off")).removeClass("hidden"); + input.val(val); + //console.log(id); + }); + + /* setup field_richtext */ + /*setupFieldRichtext();*/ + + /* popup menus */ + function close_last_popup_menu(e) { + + if( last_popup_menu ) { + if( '#' + last_popup_menu.attr('id') !== $(e.target).attr('rel')) { + last_popup_menu.hide(); + if (last_popup_menu.attr('id') == "nav-notifications-menu" ) $('section').show(); + last_popup_button.removeClass("selected"); + last_popup_menu = null; + last_popup_button = null; + } + } + } + $('img[rel^=#]').click(function(e){ + + close_last_popup_menu(e); + menu = $( $(this).attr('rel') ); + e.preventDefault(); + e.stopPropagation(); + + if (menu.attr('popup')=="false") return false; + +// $(this).parent().toggleClass("selected"); +// menu.toggle(); + + if (menu.css("display") == "none") { + $(this).parent().addClass("selected"); + menu.show(); + if (menu.attr('id') == "nav-notifications-menu" ) $('section').hide(); + last_popup_menu = menu; + last_popup_button = $(this).parent(); + } else { + $(this).parent().removeClass("selected"); + menu.hide(); + if (menu.attr('id') == "nav-notifications-menu" ) $('section').show(); + last_popup_menu = null; + last_popup_button = null; + } + return false; + }); + $('html').click(function(e) { + close_last_popup_menu(e); + }); + + // fancyboxes + /*$("a.popupbox").fancybox({ + 'transitionIn' : 'elastic', + 'transitionOut' : 'elastic' + });*/ + + + /* notifications template */ + var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html()); + var notifications_all = unescape($('
    ').append( $("#nav-notifications-see-all").clone() ).html()); //outerHtml hack + var notifications_mark = unescape($('
    ').append( $("#nav-notifications-mark-all").clone() ).html()); //outerHtml hack + var notifications_empty = unescape($("#nav-notifications-menu").html()); + + /* nav update event */ + $('nav').bind('nav-update', function(e,data){; + var invalid = $(data).find('invalid').text(); + if(invalid == 1) { window.location.href=window.location.href } + + var net = $(data).find('net').text(); + if(net == 0) { net = ''; $('#net-update').removeClass('show') } else { $('#net-update').addClass('show') } + $('#net-update').html(net); + + var home = $(data).find('home').text(); + if(home == 0) { home = ''; $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') } + $('#home-update').html(home); + + var intro = $(data).find('intro').text(); + if(intro == 0) { intro = ''; $('#intro-update').removeClass('show') } else { $('#intro-update').addClass('show') } + $('#intro-update').html(intro); + + var mail = $(data).find('mail').text(); + if(mail == 0) { mail = ''; $('#mail-update').removeClass('show') } else { $('#mail-update').addClass('show') } + $('#mail-update').html(mail); + + var intro = $(data).find('intro').text(); + if(intro == 0) { intro = ''; $('#intro-update-li').removeClass('show') } else { $('#intro-update-li').addClass('show') } + $('#intro-update-li').html(intro); + + var mail = $(data).find('mail').text(); + if(mail == 0) { mail = ''; $('#mail-update-li').removeClass('show') } else { $('#mail-update-li').addClass('show') } + $('#mail-update-li').html(mail); + + var eNotif = $(data).find('notif') + + if (eNotif.children("note").length==0){ + $("#nav-notifications-menu").html(notifications_empty); + } else { + nnm = $("#nav-notifications-menu"); + nnm.html(notifications_all + notifications_mark); + //nnm.attr('popup','true'); + eNotif.children("note").each(function(){ + e = $(this); + text = e.text().format(""+e.attr('name')+""); + html = notifications_tpl.format(e.attr('href'),e.attr('photo'), text, e.attr('date'), e.attr('seen')); + nnm.append(html); + }); + } + notif = eNotif.attr('count'); + if (notif>0){ + $("#nav-notifications-linkmenu").addClass("on"); + } else { + $("#nav-notifications-linkmenu").removeClass("on"); + } + if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') } + $('#notify-update').html(notif); + + var eSysmsg = $(data).find('sysmsgs'); + eSysmsg.children("notice").each(function(){ + text = $(this).text(); + $.jGrowl(text, { sticky: true, theme: 'notice', life: 1000 }); + }); + eSysmsg.children("info").each(function(){ + text = $(this).text(); + $.jGrowl(text, { sticky: false, theme: 'info', life: 1000 }); + }); + + }); + + + NavUpdate(); + // Allow folks to stop the ajax page updates with the pause/break key +/* $(document).keydown(function(event) { + if(event.keyCode == '8') { + var target = event.target || event.srcElement; + if (!/input|textarea/i.test(target.nodeName)) { + return false; + } + } + if(event.keyCode == '19' || (event.ctrlKey && event.which == '32')) { + event.preventDefault(); + if(stopped == false) { + stopped = true; + if (event.ctrlKey) { + totStopped = true; + } + $('#pause').html('pause'); + } else { + unpause(); + } + } else { + if (!totStopped) { + unpause(); + } + } + });*/ + + + }); + + function NavUpdate() { + + if(! stopped) { + var pingCmd = 'ping' + ((localUser != 0) ? '?f=&uid=' + localUser : ''); + $.get(pingCmd,function(data) { + $(data).find('result').each(function() { + // send nav-update event + $('nav').trigger('nav-update', this); + + + // start live update + + + + if($('#live-network').length) { src = 'network'; liveUpdate(); } + if($('#live-profile').length) { src = 'profile'; liveUpdate(); } + if($('#live-community').length) { src = 'community'; liveUpdate(); } + if($('#live-notes').length) { src = 'notes'; liveUpdate(); } + if($('#live-display').length) { + if(liking) { + liking = 0; + window.location.href=window.location.href + } + } + if($('#live-photos').length) { + if(liking) { + liking = 0; + window.location.href=window.location.href + } + } + + + + + }); + }) ; + } + timer = setTimeout(NavUpdate,updateInterval); + } + + function liveUpdate() { + if((src == null) || (stopped) || (! profile_uid)) { $('.like-rotator').hide(); return; } + if(($('.comment-edit-text-full').length) || (in_progress)) { + if(livetime) { + clearTimeout(livetime); + } + livetime = setTimeout(liveUpdate, 10000); + return; + } + if(livetime != null) + livetime = null; + + prev = 'live-' + src; + + in_progress = true; + var udargs = ((netargs.length) ? '/' + netargs : ''); + var update_url = 'update_' + src + udargs + '&p=' + profile_uid + '&page=' + profile_page + '&msie=' + ((msie) ? 1 : 0); + + $.get(update_url,function(data) { + in_progress = false; + // $('.collapsed-comments',data).each(function() { + // var ident = $(this).attr('id'); + // var is_hidden = $('#' + ident).is(':hidden'); + // if($('#' + ident).length) { + // $('#' + ident).replaceWith($(this)); + // if(is_hidden) + // $('#' + ident).hide(); + // } + //}); + + // add a new thread + + $('.tread-wrapper',data).each(function() { + var ident = $(this).attr('id'); + + if($('#' + ident).length == 0 && profile_page == 1) { + $('img',this).each(function() { + $(this).attr('src',$(this).attr('dst')); + }); + $('#' + prev).after($(this)); + } + else { + $('img',this).each(function() { + $(this).attr('src',$(this).attr('dst')); + }); + $('#' + ident).replaceWith($(this)); + } + prev = ident; + }); + + // reset vars for inserting individual items + + /*prev = 'live-' + src; + + $('.wall-item-outside-wrapper',data).each(function() { + var ident = $(this).attr('id'); + + if($('#' + ident).length == 0 && prev != 'live-' + src) { + $('img',this).each(function() { + $(this).attr('src',$(this).attr('dst')); + }); + $('#' + prev).after($(this)); + } + else { + $('#' + ident + ' ' + '.wall-item-ago').replaceWith($(this).find('.wall-item-ago')); + if($('#' + ident + ' ' + '.comment-edit-text-empty').length) + $('#' + ident + ' ' + '.wall-item-comment-wrapper').replaceWith($(this).find('.wall-item-comment-wrapper')); + $('#' + ident + ' ' + '.hide-comments-total').replaceWith($(this).find('.hide-comments-total')); + $('#' + ident + ' ' + '.wall-item-like').replaceWith($(this).find('.wall-item-like')); + $('#' + ident + ' ' + '.wall-item-dislike').replaceWith($(this).find('.wall-item-dislike')); + $('#' + ident + ' ' + '.my-comment-photo').each(function() { + $(this).attr('src',$(this).attr('dst')); + }); + } + prev = ident; + });*/ + + $('.like-rotator').hide(); + if(commentBusy) { + commentBusy = false; + $('body').css('cursor', 'auto'); + } + /* autocomplete @nicknames */ + $(".comment-edit-form textarea").contact_autocomplete(baseurl+"/acl"); + }); + } + + function imgbright(node) { + $(node).removeClass("drophide").addClass("drop"); + } + + function imgdull(node) { + $(node).removeClass("drop").addClass("drophide"); + } + + // Since our ajax calls are asynchronous, we will give a few + // seconds for the first ajax call (setting like/dislike), then + // run the updater to pick up any changes and display on the page. + // The updater will turn any rotators off when it's done. + // This function will have returned long before any of these + // events have completed and therefore there won't be any + // visible feedback that anything changed without all this + // trickery. This still could cause confusion if the "like" ajax call + // is delayed and NavUpdate runs before it completes. + + function dolike(ident,verb) { + unpause(); + $('#like-rotator-' + ident.toString()).show(); + $.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate ); +// if(timer) clearTimeout(timer); +// timer = setTimeout(NavUpdate,3000); + liking = 1; + } + + function dostar(ident) { + ident = ident.toString(); + //$('#like-rotator-' + ident).show(); + $.get('starred/' + ident, function(data) { + if(data.match(/1/)) { + $('#starred-' + ident).addClass('starred'); + $('#starred-' + ident).removeClass('unstarred'); + $('#star-' + ident).addClass('hidden'); + $('#unstar-' + ident).removeClass('hidden'); + } + else { + $('#starred-' + ident).addClass('unstarred'); + $('#starred-' + ident).removeClass('starred'); + $('#star-' + ident).removeClass('hidden'); + $('#unstar-' + ident).addClass('hidden'); + } + //$('#like-rotator-' + ident).hide(); + }); + } + + function getPosition(e) { + var cursor = {x:0, y:0}; + if ( e.pageX || e.pageY ) { + cursor.x = e.pageX; + cursor.y = e.pageY; + } + else { + if( e.clientX || e.clientY ) { + cursor.x = e.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft; + cursor.y = e.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop; + } + else { + if( e.x || e.y ) { + cursor.x = e.x; + cursor.y = e.y; + } + } + } + return cursor; + } + + var lockvisible = false; + + function lockview(event,id) { + event = event || window.event; + cursor = getPosition(event); + if(lockvisible) { + lockviewhide(); + } + else { + lockvisible = true; + $.get('lockview/' + id, function(data) { + $('#panel').html(data); + $('#panel').css({ 'left': cursor.x + 5 , 'top': cursor.y + 5}); + $('#panel').show(); + }); + } + } + + function lockviewhide() { + lockvisible = false; + $('#panel').hide(); + } + + function post_comment(id) { + unpause(); + commentBusy = true; + $('body').css('cursor', 'wait'); + $("#comment-preview-inp-" + id).val("0"); + $.post( + "item", + $("#comment-edit-form-" + id).serialize(), + function(data) { + if(data.success) { + $("#comment-edit-wrapper-" + id).hide(); + $("#comment-edit-text-" + id).val(''); + var tarea = document.getElementById("comment-edit-text-" + id); + if(tarea) + commentClose(tarea,id); + if(timer) clearTimeout(timer); + timer = setTimeout(NavUpdate,10); + } + if(data.reload) { + window.location.href=data.reload; + } + }, + "json" + ); + return false; + } + + + function preview_comment(id) { + $("#comment-preview-inp-" + id).val("1"); + $("#comment-edit-preview-" + id).show(); + $.post( + "item", + $("#comment-edit-form-" + id).serialize(), + function(data) { + if(data.preview) { + + $("#comment-edit-preview-" + id).html(data.preview); + $("#comment-edit-preview-" + id + " a").click(function() { return false; }); + } + }, + "json" + ); + return true; + } + + + + function preview_post() { + $("#jot-preview").val("1"); + $("#jot-preview-content").show(); + tinyMCE.triggerSave(); + $.post( + "item", + $("#profile-jot-form").serialize(), + function(data) { + if(data.preview) { + $("#jot-preview-content").html(data.preview); + $("#jot-preview-content" + " a").click(function() { return false; }); + } + }, + "json" + ); + $("#jot-preview").val("0"); + return true; + } + + + function unpause() { + // unpause auto reloads if they are currently stopped + totStopped = false; + stopped = false; + $('#pause').html(''); + } + + + function bin2hex(s){ + // Converts the binary representation of data to hex + // + // version: 812.316 + // discuss at: http://phpjs.org/functions/bin2hex + // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + bugfixed by: Onno Marsman + // + bugfixed by: Linuxworld + // * example 1: bin2hex('Kev'); + // * returns 1: '4b6576' + // * example 2: bin2hex(String.fromCharCode(0x00)); + // * returns 2: '00' + var v,i, f = 0, a = []; + s += ''; + f = s.length; + + for (i = 0; i' + data.desc + '
    ' + data.version + '
    ' + data.credits + '
    ' + theme + ''); + }); + +} diff --git a/view/theme/frost-mobile/js/theme.js b/view/theme/frost-mobile/js/theme.js new file mode 100644 index 000000000..d3298d345 --- /dev/null +++ b/view/theme/frost-mobile/js/theme.js @@ -0,0 +1,224 @@ +$(document).ready(function() { + +/*$('html').click(function() { $("#nav-notifications-menu" ).hide(); });*/ + + $('.group-edit-icon').hover( + function() { + $(this).addClass('icon'); $(this).removeClass('iconspacer');}, + function() { + $(this).removeClass('icon'); $(this).addClass('iconspacer');} + ); + + $('.sidebar-group-element').hover( + function() { + id = $(this).attr('id'); + $('#edit-' + id).addClass('icon'); $('#edit-' + id).removeClass('iconspacer');}, + + function() { + id = $(this).attr('id'); + $('#edit-' + id).removeClass('icon');$('#edit-' + id).addClass('iconspacer');} + ); + + + $('.savedsearchdrop').hover( + function() { + $(this).addClass('drop'); $(this).addClass('icon'); $(this).removeClass('iconspacer');}, + function() { + $(this).removeClass('drop'); $(this).removeClass('icon'); $(this).addClass('iconspacer');} + ); + + $('.savedsearchterm').hover( + function() { + id = $(this).attr('id'); + $('#drop-' + id).addClass('icon'); $('#drop-' + id).addClass('drophide'); $('#drop-' + id).removeClass('iconspacer');}, + + function() { + id = $(this).attr('id'); + $('#drop-' + id).removeClass('icon');$('#drop-' + id).removeClass('drophide'); $('#drop-' + id).addClass('iconspacer');} + ); + + $(".popupbox").click(function () { + var parent = $( $(this).attr('href') ).parent(); + if (parent.css('display') == 'none') { + parent.show(); + } else { + parent.hide(); + } + return false; + }); + +}); + + +function insertFormatting(comment,BBcode,id) { + + var tmpStr = $("#comment-edit-text-" + id).val(); + if(tmpStr == comment) { + tmpStr = ""; + $("#comment-edit-text-" + id).addClass("comment-edit-text-full"); + $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty"); + openMenu("comment-edit-submit-wrapper-" + id); + $("#comment-edit-text-" + id).val(tmpStr); + } + + textarea = document.getElementById("comment-edit-text-" +id); + if (document.selection) { + textarea.focus(); + selected = document.selection.createRange(); + if (BBcode == "url"){ + selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]"; + } else + selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]"; + } else if (textarea.selectionStart || textarea.selectionStart == "0") { + var start = textarea.selectionStart; + var end = textarea.selectionEnd; + if (BBcode == "url"){ + textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length); + } else + textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length); + } + return true; +} + +function cmtBbOpen(id) { + $(".comment-edit-bb-" + id).show(); +} +function cmtBbClose(id) { + $(".comment-edit-bb-" + id).hide(); +} + + + + +// TinyMCE stuff +// Needs to be in "jot-header.tpl" if the "$editselect" variable is used + +var editor=false; +var textlen = 0; +var plaintext = 'none';//'$editselect'; + +function initEditor(cb){ + if (editor==false){ +// $("#profile-jot-text-loading").show(); + if(plaintext == 'none') { +// $("#profile-jot-text-loading").hide(); + $("#profile-jot-text").css({ 'height': 200, 'color': '#000' }); + $("#profile-jot-text").contact_autocomplete(baseurl+"/acl"); + editor = true; +/* $("a#jot-perms-icon").fancybox({ + 'transitionIn' : 'none', + 'transitionOut' : 'none' + });*/ + $("a#jot-perms-icon, a#settings-default-perms-menu").click(function () { + var parent = $("#profile-jot-acl-wrapper").parent(); + if (parent.css('display') == 'none') { + parent.show(); + } else { + parent.hide(); + } +// $("#profile-jot-acl-wrapper").parent().toggle(); + return false; + }); + $(".jothidden").show(); + if (typeof cb!="undefined") cb(); + return; + } +/* tinyMCE.init({ + theme : "advanced", + mode : "specific_textareas", + editor_selector: $editselect, + auto_focus: "profile-jot-text", + plugins : "bbcode,paste,autoresize, inlinepopups", + theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code", + theme_advanced_buttons2 : "", + theme_advanced_buttons3 : "", + theme_advanced_toolbar_location : "top", + theme_advanced_toolbar_align : "center", + theme_advanced_blockformats : "blockquote,code", + gecko_spellcheck : true, + paste_text_sticky : true, + entity_encoding : "raw", + add_unload_trigger : false, + remove_linebreaks : false, + force_p_newlines : false, + force_br_newlines : true, + forced_root_block : '', + convert_urls: false, + content_css: "$baseurl/view/custom_tinymce.css", + theme_advanced_path : false, + file_browser_callback : "fcFileBrowser", + setup : function(ed) { + cPopup = null; + ed.onKeyDown.add(function(ed,e) { + if(cPopup !== null) + cPopup.onkey(e); + }); + + ed.onKeyUp.add(function(ed, e) { + var txt = tinyMCE.activeEditor.getContent(); + match = txt.match(/@([^ \n]+)$/); + if(match!==null) { + if(cPopup === null) { + cPopup = new ACPopup(this,baseurl+"/acl"); + } + if(cPopup.ready && match[1]!==cPopup.searchText) cPopup.search(match[1]); + if(! cPopup.ready) cPopup = null; + } + else { + if(cPopup !== null) { cPopup.close(); cPopup = null; } + } + + textlen = txt.length; + if(textlen != 0 && $('#jot-perms-icon').is('.unlock')) { + $('#profile-jot-desc').html(ispublic); + } + else { + $('#profile-jot-desc').html(' '); + } + + //Character count + + if(textlen <= 140) { + $('#character-counter').removeClass('red'); + $('#character-counter').removeClass('orange'); + $('#character-counter').addClass('grey'); + } + if((textlen > 140) && (textlen <= 420)) { + $('#character-counter').removeClass('grey'); + $('#character-counter').removeClass('red'); + $('#character-counter').addClass('orange'); + } + if(textlen > 420) { + $('#character-counter').removeClass('grey'); + $('#character-counter').removeClass('orange'); + $('#character-counter').addClass('red'); + } + $('#character-counter').text(textlen); + }); + + ed.onInit.add(function(ed) { + ed.pasteAsPlainText = true; + $("#profile-jot-text-loading").hide(); + $(".jothidden").show(); + if (typeof cb!="undefined") cb(); + }); + + } + }); + editor = true; + // setup acl popup + $("a#jot-perms-icon").fancybox({ + 'transitionIn' : 'elastic', + 'transitionOut' : 'elastic' + }); */ + } else { + if (typeof cb!="undefined") cb(); + } +} + +function enableOnUser(){ + if (editor) return; + $(this).val(""); + initEditor(); +} + diff --git a/view/theme/frost-mobile/js/theme.js.old b/view/theme/frost-mobile/js/theme.js.old new file mode 100644 index 000000000..03ee67622 --- /dev/null +++ b/view/theme/frost-mobile/js/theme.js.old @@ -0,0 +1,121 @@ +$(document).ready(function() { + + $.ajaxSetup({ + cache: false + }); + + + $('.system-menu-link').click(function() { + handleNavMenu('#system-menu-list'); + return false; + }); + + $('.contacts-menu-link').click(function() { + handleNavMenu('#contacts-menu-list'); + return false; + }); + + $('.network-menu-link').click(function() { + handleNavMenu('#network-menu-list'); + return false; + }); + +/* $('.nav-load-page-link').click(function() { + getPageContent( $(this).attr('href') ); + hideNavMenu( '#' + $(this).closest('ul').attr('id') ); + return false; + });*/ + +/* $('#nav-network-link').click(function() { + getPageContent('/network', '#network-menu-list'); + return false; + }); + + $('#nav-home-link').click(function() { + + var username = $('#site-location').text(); + username = username.substring(0, username.indexOf('@')); + + getPageContent('/profile/' + username, '#network-menu-list'); + + return false; + }); + + $('#nav-community-link').click(function() { + getPageContent('/community', '#network-menu-list'); + return false; + }); + + $('#nav-messages-link').click(function() { + getPageContent('/message'); + return false; + }); + + $('#nav-contacts-link').click(function() { + getPageContent('/contacts', '#contacts-menu-list'); + return false; + });*/ + +}); + +$(document).mouseup(function (clickPos) { + + var sysMenu = $("#system-menu-list"); + var sysMenuLink = $(".system-menu-link"); + var contactsMenu = $("#contacts-menu-list"); + var contactsMenuLink = $(".contacts-menu-link"); + var networkMenu = $("#network-menu-list"); + var networkMenuLink = $(".network-menu-link"); + + if( !sysMenu.is(clickPos.target) && !sysMenuLink.is(clickPos.target) && sysMenu.has(clickPos.target).length === 0) { + hideNavMenu("#system-menu-list"); + } + if( !contactsMenu.is(clickPos.target) && !contactsMenuLink.is(clickPos.target) && contactsMenu.has(clickPos.target).length === 0) { + hideNavMenu("#contacts-menu-list"); + } + if( !networkMenu.is(clickPos.target) && !networkMenuLink.is(clickPos.target) && networkMenu.has(clickPos.target).length === 0) { + hideNavMenu("#network-menu-list"); + } +}); + + +function getPageContent(url) { + + var pos = $('.main-container').position(); + + $('.main-container').css('margin-left', pos.left); + $('.main-content-container').hide(0, function () { + $('.main-content-loading').show(0); + }); + + $.get(url, function(html) { + console.log($('.main-content-container').html()); + $('.main-content-container').html( $('.main-content-container', html).html() ); + console.log($('.main-content-container').html()); + $('.main-content-loading').hide(function() { + $('.main-content-container').fadeIn(800,function() { + $('.main-container').css('margin-left', 'auto'); // This sucks -- if the CSS specification changes, this will be wrong + }); + }); + }); +} + +function handleNavMenu(menuID) { + if( $(menuID).hasClass('menu-visible') ) { + hideNavMenu(menuID); + } + else { + showNavMenu(menuID); + } +} + +function showNavMenu(menuID) { + $(menuID).show(); + $(menuID).addClass('menu-visible'); +} + +function hideNavMenu(menuID) { + $(menuID).hide(); + $(menuID).removeClass('menu-visible'); +} + diff --git a/view/theme/frost-mobile/lang_selector.tpl b/view/theme/frost-mobile/lang_selector.tpl new file mode 100644 index 000000000..e777a0a86 --- /dev/null +++ b/view/theme/frost-mobile/lang_selector.tpl @@ -0,0 +1,10 @@ +
    + diff --git a/view/theme/frost-mobile/lock.cur b/view/theme/frost-mobile/lock.cur new file mode 100644 index 0000000000000000000000000000000000000000..892c5e851eedc16e9844061b199e24194cfbc370 GIT binary patch literal 4286 zcmd^C$KVDWfom`T#)dc~R#4I^Rs~r4O)`b{bmUKcqz}))c5uC(7v?)v4a2P)ZNa- z@$&T2)z|&~{r~^}A^8LV00000EC2ui01yBW000GQ;3tk`X`bk)Wk@<6#nZYULKH{p zEx|?+kif!I0vIL|#ZMubBmjWH2OtmxIFVa~6JQ7!1CK!f5W#StOTv&C3=E8h2vI1s n+#cd5;2fT3B_0kF0v!+!GARoV78n&7dMN`JIW(4+BOw4gP{MS* literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/login-style.css b/view/theme/frost-mobile/login-style.css new file mode 100644 index 000000000..5283c584b --- /dev/null +++ b/view/theme/frost-mobile/login-style.css @@ -0,0 +1,131 @@ +html { + width: 100%; +} + +body { + font-family: helvetica,arial,freesans,clean,sans-serif; + font-size: 16px; + background-color: #ffffff; + color: #505050;/* ZP Change*/ + margin: 0px; +} + +a, a:visited, a:link { color: #3465a4; text-decoration: none; } +a:hover {text-decoration: underline; } + +img { border :0px; } + +.login-button { + margin-top: 90px; + margin-left: auto; + margin-right: auto; + +} + +img.login-button-image { + max-width: 300px; +} + +.section-wrapper { + position: relative; + width: 300px; + margin-left: auto; + margin-right: auto; +} + +.login-form { + margin-top: 40px; +} + +.field { + position: relative; + margin-bottom: 15px; +} + +.field label { + margin-left: 25px; + font-weight: 700; +} + +.field input { + font-size: 18px; + width: 200px; + margin-left: 50px; +} + +#login_openid { + margin-top: 50px; +} + +#login_openid input { + background: url(login-bg.gif) no-repeat; + background-position: 0 50%; + width: 182px; + padding-left: 18px; +} + +#login-footer { + margin-top: 10px; + text-align: center; +} + +.login-extra-links, .agreement { + font-size: 14px; +} + +#login-submit-button, #register-submit-button, #lostpass-submit-button { + font-size: 20px; + padding: 0.5em 1em; +} + +#register-link { + margin-right: 100px; +} + +.register-form { + margin-top: 15px; +} + +.register-form h2, .lostpass-form h2 { + text-align: center; +} + +.error-message { + width: 270px; + color: #FF0000; + font-size: 1.1em; + text-align: justify; + border: 1px solid #FF8888; + background-color: #FFEEEE; + padding: 10px; + margin-left: auto; + margin-right: auto; +} + +.register-explain-wrapper { + width: 290px; + text-align: justify; + font-size: 14px; + margin-left: 5px; +} + +#register-footer { + margin-top: 60px; + text-align: center; +} + +.lostpass-form { + margin-top: 100px; +} + +#lostpass-desc { + width: 290px; + margin-left: 5px; + margin-bottom: 30px; + text-align: justify; + font-size: 14px; +} + +#login-submit-wrapper { + text-align: center; +} diff --git a/view/theme/frost-mobile/login.tpl b/view/theme/frost-mobile/login.tpl new file mode 100644 index 000000000..39bb57836 --- /dev/null +++ b/view/theme/frost-mobile/login.tpl @@ -0,0 +1,43 @@ + + + + diff --git a/view/theme/frost-mobile/lostpass.tpl b/view/theme/frost-mobile/lostpass.tpl new file mode 100644 index 000000000..583e3dbaf --- /dev/null +++ b/view/theme/frost-mobile/lostpass.tpl @@ -0,0 +1,21 @@ +
    +

    $title

    +


    + +
    +
    +
    + +
    +
    +

    +$desc +

    +
    + +
    + +
    +
    +
    +
    diff --git a/view/theme/frost-mobile/moderated_comment.tpl b/view/theme/frost-mobile/moderated_comment.tpl new file mode 100755 index 000000000..b0451c8c6 --- /dev/null +++ b/view/theme/frost-mobile/moderated_comment.tpl @@ -0,0 +1,61 @@ +
    +
    + + + + + + + +
    + $mytitle +
    +
    + +
      +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    • +
    +
    + + +
    + + +
    +
    + +
    diff --git a/view/theme/frost-mobile/msg-header.tpl b/view/theme/frost-mobile/msg-header.tpl new file mode 100644 index 000000000..003c86922 --- /dev/null +++ b/view/theme/frost-mobile/msg-header.tpl @@ -0,0 +1,97 @@ + + + + + + diff --git a/view/theme/frost-mobile/nav.tpl b/view/theme/frost-mobile/nav.tpl new file mode 100644 index 000000000..8b5fd8911 --- /dev/null +++ b/view/theme/frost-mobile/nav.tpl @@ -0,0 +1,131 @@ + + + diff --git a/view/theme/frost-mobile/photo_edit.tpl b/view/theme/frost-mobile/photo_edit.tpl new file mode 100644 index 000000000..5631b2eba --- /dev/null +++ b/view/theme/frost-mobile/photo_edit.tpl @@ -0,0 +1,53 @@ + +
    + + + + + + +
    + + + + +
    + + + + +
    +
    +
    + $rotatecw +
    +
    + +
    + $rotateccw +
    + +
    +
    + +
    + +
    $permissions
    +
    +
    + +
    +
    + $aclselect +
    +
    +
    +
    + + + + +
    +
    + + diff --git a/view/theme/frost-mobile/photo_view.tpl b/view/theme/frost-mobile/photo_view.tpl new file mode 100644 index 000000000..92e115487 --- /dev/null +++ b/view/theme/frost-mobile/photo_view.tpl @@ -0,0 +1,42 @@ +
    +

    $album.1

    + + + +
    + {{ if $prevlink }}{{ endif }} + {{ if $nextlink }}{{ endif }} +
    +
    +
    +
    $desc
    +{{ if $tags }} +
    $tags.0
    +
    $tags.1
    +{{ endif }} +{{ if $tags.2 }}{{ endif }} + +{{ if $edit }} +$edit +{{ else }} + +{{ if $likebuttons }} +
    + $likebuttons + $like + $dislike +
    +{{ endif }} + +$comments + +$paginate +{{ endif }} + diff --git a/view/theme/frost-mobile/photos_upload.tpl b/view/theme/frost-mobile/photos_upload.tpl new file mode 100644 index 000000000..4b8bd90d2 --- /dev/null +++ b/view/theme/frost-mobile/photos_upload.tpl @@ -0,0 +1,50 @@ +

    $pagename

    + +
    $usage
    + +
    +
    +
    + +
    + +
    +
    +
    +
    $existalbumtext
    + $albumselect +
    +
    + + +
    + +
    + +
    +
    + +
    + +
    $permissions
    +
    +
    + +
    +
    + $aclselect +
    +
    + +
    + + $uploader + + $default + +
    + + + diff --git a/view/theme/frost-mobile/profed_head.tpl b/view/theme/frost-mobile/profed_head.tpl new file mode 100644 index 000000000..6ae85852a --- /dev/null +++ b/view/theme/frost-mobile/profed_head.tpl @@ -0,0 +1,36 @@ + diff --git a/view/theme/frost-mobile/profile_edit.tpl b/view/theme/frost-mobile/profile_edit.tpl new file mode 100644 index 000000000..198dddb3f --- /dev/null +++ b/view/theme/frost-mobile/profile_edit.tpl @@ -0,0 +1,322 @@ +$default + +

    $banner

    + + + + + + +
    +
    + + +
    + +
    *
    +
    +
    + +
    + + +
    +
    + +
    + + +
    +
    + + +
    + +$gender +
    +
    + +
    + +
    +$dob $age +
    +
    +
    + +$hide_friends + +
    + +
    +
    + + +
    + + +
    +
    + +
    + + +
    +
    + + +
    + + +
    +
    + +
    + + +
    +
    + +
    + + +
    +
    + +
    + + +
    +
    + +
    + +
    +
    + +
    + +$marital +
    + + + + + +
    + +
    + +$sexual +
    +
    + + + +
    + + +
    +
    + +
    + + +
    +
    + +
    + + +
    +
    + +
    + + +
    $lbl_pubdsc
    +
    + +
    + + +
    $lbl_prvdsc
    +
    + + +
    + +
    +
    + +
    +

    +$lbl_about +

    + + + +
    +
    + + +
    +

    +$lbl_hobbies +

    + + + +
    +
    + + +
    +

    +$lbl_likes +

    + + + +
    +
    + + +
    +

    +$lbl_dislikes +

    + + + +
    +
    + + +
    +

    +$lbl_social +

    + + + +
    +
    + + +
    + +
    +
    + + +
    +

    +$lbl_music +

    + + + +
    +
    + +
    +

    +$lbl_book +

    + + + +
    +
    + + + +
    +

    +$lbl_tv +

    + + + +
    +
    + + + +
    +

    +$lbl_film +

    + + + +
    +
    + + +
    + +
    +
    + + +
    +

    +$lbl_love +

    + + + +
    +
    + + + +
    +

    +$lbl_work +

    + + + +
    +
    + + + +
    +

    +$lbl_school +

    + + + +
    +
    + + + +
    + +
    +
    + + +
    +
    + diff --git a/view/theme/frost-mobile/profile_vcard.tpl b/view/theme/frost-mobile/profile_vcard.tpl new file mode 100644 index 000000000..bcb5baeeb --- /dev/null +++ b/view/theme/frost-mobile/profile_vcard.tpl @@ -0,0 +1,51 @@ +
    + +
    $profile.name
    + + + + {{ if $pdesc }}
    $profile.pdesc
    {{ endif }} +
    $profile.name
    + + + + {{ if $location }} +
    $location
    +
    + {{ if $profile.address }}
    $profile.address
    {{ endif }} + + $profile.locality{{ if $profile.locality }}, {{ endif }} + $profile.region + $profile.postal-code + + {{ if $profile.country-name }}$profile.country-name{{ endif }} +
    +
    + {{ endif }} + + {{ if $gender }}
    $gender
    $profile.gender
    {{ endif }} + + {{ if $profile.pubkey }}{{ endif }} + + {{ if $marital }}
    $marital
    $profile.marital
    {{ endif }} + + {{ if $homepage }}
    $homepage
    $profile.homepage
    {{ endif }} + + {{ inc diaspora_vcard.tpl }}{{ endinc }} + +
    + +
    + +$contact_block + + diff --git a/view/theme/frost-mobile/prv_message.tpl b/view/theme/frost-mobile/prv_message.tpl new file mode 100644 index 000000000..9a20c6c69 --- /dev/null +++ b/view/theme/frost-mobile/prv_message.tpl @@ -0,0 +1,39 @@ + +

    $header

    + +
    +
    + +$parent + +
    $to
    + +{{ if $showinputs }} + + +{{ else }} +$select +{{ endif }} + +
    $subject
    + + +
    $yourmessage
    + + + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    diff --git a/view/theme/frost-mobile/register.tpl b/view/theme/frost-mobile/register.tpl new file mode 100644 index 000000000..506e3b118 --- /dev/null +++ b/view/theme/frost-mobile/register.tpl @@ -0,0 +1,78 @@ +
    +

    $regtitle

    +
    + +
    + + + + $registertext + +

    $realpeople

    + +
    +
    + $oidhtml +
    +
    + +
    +

    $fillwith $fillext

    +
    + +

    + +{{ if $invitations }} + +

    $invite_desc

    +
    + + +
    +
    + +{{ endif }} + + +
    +
    + +
    +
    + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +

    $nickdesc

    +
    + + $publish + + +
    +


    + +$license + +
    diff --git a/view/theme/frost-mobile/screenshot.jpg b/view/theme/frost-mobile/screenshot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1b18c3a4107b2259cd9ba7f0dc5c0fafa0fde364 GIT binary patch literal 89002 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�#~>th{13t{Os#<>+la? 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 literal 0 HcmV?d00001 diff --git a/view/theme/frost-mobile/settings.tpl b/view/theme/frost-mobile/settings.tpl new file mode 100644 index 000000000..5a40b96bc --- /dev/null +++ b/view/theme/frost-mobile/settings.tpl @@ -0,0 +1,144 @@ +

    $ptitle

    + +$nickname_block + +
    + + +

    $h_pass

    + +{{inc field_password.tpl with $field=$password1 }}{{endinc}} +{{inc field_password.tpl with $field=$password2 }}{{endinc}} + +{{ if $oid_enable }} +{{inc field_input.tpl with $field=$openid }}{{endinc}} +{{ endif }} + +
    + +
    + + +

    $h_basic

    + +{{inc field_input.tpl with $field=$username }}{{endinc}} +{{inc field_input.tpl with $field=$email }}{{endinc}} +{{inc field_custom.tpl with $field=$timezone }}{{endinc}} +{{inc field_input.tpl with $field=$defloc }}{{endinc}} +{{inc field_checkbox.tpl with $field=$allowloc }}{{endinc}} + + +
    + +
    + + +

    $h_prv

    + + + + +{{inc field_input.tpl with $field=$maxreq }}{{endinc}} + +$profile_in_dir + +$profile_in_net_dir + +$hide_friends + +$hide_wall + +$blockwall + +$blocktags + +$suggestme + +$unkmail + + +{{inc field_input.tpl with $field=$cntunkmail }}{{endinc}} + +{{inc field_input.tpl with $field=$expire.days }}{{endinc}} + + +
    + $expire.label +
    +
    +

    $expire.advanced

    + {{ inc field_yesno.tpl with $field=$expire.items }}{{endinc}} + {{ inc field_yesno.tpl with $field=$expire.notes }}{{endinc}} + {{ inc field_yesno.tpl with $field=$expire.starred }}{{endinc}} + {{ inc field_yesno.tpl with $field=$expire.network_only }}{{endinc}} +
    +
    + +
    + + +
    + $permissions $permdesc +
    + + + +
    +
    + $aclselect +
    +
    + + +
    +
    +
    + +$group_select + + +
    + +
    + + + +

    $h_not

    +
    + +
    $activity_options
    + +{{inc field_checkbox.tpl with $field=$post_newfriend }}{{endinc}} +{{inc field_checkbox.tpl with $field=$post_joingroup }}{{endinc}} +{{inc field_checkbox.tpl with $field=$post_profilechange }}{{endinc}} + + +
    $lbl_not
    + +
    +{{inc field_intcheckbox.tpl with $field=$notify1 }}{{endinc}} +{{inc field_intcheckbox.tpl with $field=$notify2 }}{{endinc}} +{{inc field_intcheckbox.tpl with $field=$notify3 }}{{endinc}} +{{inc field_intcheckbox.tpl with $field=$notify4 }}{{endinc}} +{{inc field_intcheckbox.tpl with $field=$notify5 }}{{endinc}} +{{inc field_intcheckbox.tpl with $field=$notify6 }}{{endinc}} +{{inc field_intcheckbox.tpl with $field=$notify7 }}{{endinc}} +
    + +
    + +
    + +
    + + +

    $h_advn

    +
    $h_descadvn
    + +$pagetype + +
    + +
    + + diff --git a/view/theme/frost-mobile/style.css b/view/theme/frost-mobile/style.css new file mode 100644 index 000000000..13bc6c3d4 --- /dev/null +++ b/view/theme/frost-mobile/style.css @@ -0,0 +1,3847 @@ +/** + * duepuntozero Frindika style + * Fabio Comuni + * + * Heavily modified for Frost Mobile + * Zach P + */ + + +/* generals */ +html { + width: 320px; + margin-left: auto; + margin-right: auto; +} + +body { + font-family: helvetica,arial,freesans,clean,sans-serif; + font-size: 16px; +/* line-height: 24px;*/ + background-color: #ffffff; + background-image: url(head.jpg); + background-repeat: repeat-x; + color: #505050; + margin: 0px; +} + +div.container { + display: block; +/* width: 100%;*/ + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; +} + +a, a:visited, a:link { color: #3465a4; text-decoration: none; } +a:hover {text-decoration: underline; } + +input { + border: 1px solid #666666; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + padding: 3px; +} + +img { border :0px; } + +#id_openid_url, .openid input { + background: url(login-bg.gif) no-repeat; + background-position: 0 50%; + padding-left: 18px; + width: 252px; + margin-left: 20px; +} +.openid:hover { + +} + +/*#id_openid_url { + width: 384px; +}*/ + +code { + font-family: Courier, monospace; + white-space: pre; + display: block; + overflow: auto; + border: 1px solid #444; + background: #EEE; + color: #444; + padding: 10px; + margin-top: 20px; +} + +blockquote { + background-color: #f4f8f9; + border-left: 4px solid #dae4ee; + padding: 0.4em; +} + +.icollapse-wrapper, .ccollapse-wrapper { + border: 1px solid #CCC; + padding: 5px; +} + +.hide-comments-outer { + margin-left: 0px; + font-weight: 700; + opacity: 0.6; +} +.hide-comments { + margin-left: 5px; +} + +#panel { + background-color: ivory; + position: absolute; + z-index: 2; + width: 30%; + padding: 25px; + border: 1px solid #444; +} + +.heart { + color: #FF0000; + font-size: 100%; + margin-right: 5px; +} + + + +/* nav */ +nav { + height: 94px; +/* width: 100%;*/ + width: 320px; + display: block; + margin-top: 0px; + margin-bottom: 0px; + margin-left: auto; + margin-right: auto; +} +nav #site-location { + color: #888a85; + font-size: 0.8em; + position: absolute; +} + +.error-message { + color: #FF0000; + font-size: 1.1em; + border: 1px solid #FF8888; + background-color: #FFEEEE; + padding: 10px; +} + +.info-message { + color: #204a87; + font-size: 1.1em; + border: 1px solid #3465a4; + background-color: #d7e3f1; + padding: 10px; +} + + +nav #banner { +/* display: block;*/ + display: none; + margin-top: 14px; + position: absolute; +} +nav #banner #logo-text a { + display: none; + font-size: 40px; + font-weight: bold; + margin-left: 3px; + color: #000000; + +} +nav #banner #logo-text a:hover { text-decoration: none; } + + +/* ZP REMOVE? nav-commlink */ +.nav-commlink, .nav-login-link { + display: block; + height: 15px; + margin-top: 67px; + margin-right: 2px; + /*padding: 6px 10px;*/ + padding: 6px 3px; + float: left; + bottom: 140px; + border: 1px solid #babdb6; + border-bottom: 0px; + background-color: #aec0d3; + color: #565854; + -moz-border-radius: 3px 3px 0px 0px; + -webkit-border-radius: 3px 3px 0px 0px; + border-radius: 3px 3px 0px 0px; +} + +.nav-commlink.selected { + background-color: #ffffff; + border-bottom: 1px solid #ffffff; + color: #000000 !important; + margin-top: 64px; + padding-top: 6px; + padding-bottom: 8px; +} + +.nav-ajax-left.show { + position: absolute; + font-size: 0.8em; + top: 22px; + right: 2px; + padding: 1px 2px; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + background-color: gold !important; +} + + + +nav #nav-link-wrapper .nav-link { + /*border-right: 1px solid #babdb6;*/ +} + +nav .nav-link { + margin-top: 24px; + margin-bottom: 0.2em; + margin-right: 1em; + margin-left: 1em; + background-color: transparent !important; +} + +.nav-button-container { + float: right; + position: relative; +} + +.nav-button-container .nav-ajax-left { +} + +.nav-menu-list { + text-align: center; + text-size: 18px; + line-height: 24px; + + border-left: 1px solid #aaa;/*#444444;*/ + border-right: 1px solid #aaa; + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + + background: #FFFFFF; + + display: none; + list-style: none; + + width: 8em; + position: absolute; + margin: 0px; +/* right: -33px;*/ + padding: 1em 0px; + + -moz-box-shadow: 3px 3px 5px #555; + -webkit-box-shadow: 3px 3px 5px #555; + box-shadow: 3px 3px 5px #555; + + z-index: 10000; +} + +#network-menu-list { + left: 3px; +} + +#contacts-menu-list { + right: -30px; +} + +#system-menu-list { + right: 3px; +} + + +div.main-container { +/* width: 100%;*/ + margin: 0px auto; + display: block; + position: relative; +} + +/*div.main-content-loading { + position: absolute; + top: 200px; + left: 50%; + display: none; +}*/ + + +/* aside */ +aside { +/* display: block;*/ + display: none; + min-height: 112px; + + width: 250px; + + padding: 1em; + margin: 1em 0px 0px 0px; + + position: absolute; + +/* float:left;*/ +} + +#dfrn-request-link { + display: block; + color: #FFFFFF; + -webkit-border-radius: 5px ; + -moz-border-radius: 5px; + border-radius: 5px; + padding: 5px; + font-weight: bold; + background: #3465a4 url('friendika-16.png') no-repeat 95% center; +} +#wallmessage-link { + display: block; + color: #FFFFFF; + -webkit-border-radius: 5px ; + -moz-border-radius: 5px; + border-radius: 5px; + padding: 5px; + font-weight: bold; + background-color: #3465a4; +} + +/* section */ +div.section-wrapper { +/* width: 100%;*/ + width: 320px; + + margin-left: auto; + margin-right: auto; + + /*padding-right:2em;*/ + + display: block; + + background-color: #ffffff; + background-image: url(border.jpg); + background-position: top right; + background-repeat: no-repeat; +} + +section { + margin: 0px 0px 0px 0px; + + padding-left: 5px; + padding-right: 5px; + padding-top: 1em; + padding-bottom: 3em; + + background-image: url(border.jpg); + background-position: top left; + background-repeat: no-repeat; + + min-height: 112px; + border-top: 1px solid #babdb6; +} + +.tabs { + /*background-image: url(head.jpg); + background-repeat: repeat-x; + background-position: 0px -20px;*/ + border-bottom: 1px solid #babdb6; + padding:0px; +} +.tabs li { margin: 0px 0px 20px 0px; padding-left: 1em; list-style: none; } +.tabs a { + padding: 0.2em 2em; + border: 1px solid #aaa; + border-radius: 8px; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; +} +.tab { + /*display:block;*/ + /*float:left;*/ + padding-left: 1em; + padding-right: 0.4em; + padding-top: 0.4em; + padding-bottom: 0.4em; + /*margin-right: 1em;*/ + margin-right: 3px ; +} +.tab.active { + font-weight: bold; + +} +#events-tab { + display: none; +} + + +/* footer */ +footer { + display: none; + +} + +.birthday-today, .event-today { + font-weight: bold; +} + +.preview { + background: #FFFFC8; +} + +#theme-preview { + margin: 15px 0 15px 150px; +} + +/* from default */ +#jot-perms-icon, +#profile-location, +#profile-nolocation, +#profile-youtube, +#profile-video, +#profile-audio, +#profile-link, +#profile-title, +#wall-image-upload, +#wall-file-upload, +#profile-upload-wrapper, +#wall-image-upload-div, +#wall-file-upload-div, +.hover, .focus { + cursor: pointer; +} + +#jot-perms-icon { + float: left; +} + +#jot-title, #jot-category { + border: 0px; + margin: 0px; + height: 20px; + width: 270px; + margin-bottom: 5px; + font-weight: bold; + border: 1px solid #ffffff; +} + +#jot-title::-webkit-input-placeholder{font-weight: normal;} +#jot-category::-webkit-input-placeholder{font-weight: normal;} +#jot-title:-moz-placeholder{font-weight: normal;} +#jot-category:-moz-placeholder{font-weight: normal;} + + +#jot-title:hover, +#jot-title:focus, +#jot-category:hover, +#jot-category:focus { + border: 1px solid #cccccc; +} + +.jothidden { display:none; } + + +.fakelink, .fakelink:visited, .fakelink:link { + color: #3465a4; + text-decoration: none; + cursor: pointer; + margin-top: 15px; + margin-bottom: 15px; +} +.lockview { + cursor: pointer; +} + +#group-sidebar { + margin-bottom: 10px; +} + +.group-selected, .nets-selected, .fileas-selected, .categories-selected { + padding: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 1px solid #CCCCCC; + background: #F8F8F8; + font-weight: bold; +} + +.settings-widget .selected { + padding: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 1px solid #CCCCCC; + background: #F8F8F8; + font-weight: bold; +} + +.fakelink:hover { + color: #3465a4; + text-decoration: underline; + cursor: pointer; +} +.smalltext { + font-size: 0.7em; +} +#sysmsg { + /*width: 600px;*/ + margin-bottom: 10px; +} + +#register-fill-ext { + margin-bottom: 25px; +} + +#label-register-name, #label-register-email, #label-register-nickname, #label-register-openid { + float: left; + width: 350px; + margin-top: 10px; +} + +#register-name, #register-email, #register-nickname { + float: left; + margin-top: 10px; + width: 150px; +} + +#register-openid { + float: left; + margin-top: 10px; + width: 130px; +} + +#register-name-end, #register-email-end, #register-nickname-end, #register-submit-end, #register-openid-end { + clear: both; +} + +#register-nickname-desc { + margin-top: 30px; + width: 650px; +} +#register-sitename { + float: left; + margin-top: 10px; +} + +#register-submit-button { + margin-top: 10px; +} + + +#login_standard { + width: 210px; + float: left; +} +#login_openid { + width: 210px; + margin-left: 250px; +} + +#login_standard input, +#login_openid input { + width: 180px; +} + +#login-extra-links { + clear: both; +} + +#register-link, #lost-password-link { + float: left; + font-size: 80%; + margin-right: 15px; +} + +#login-name-end, #login-password-end, #login-extra-end, #login-submit-end { + height: 50px; +} + +#login-submit-button { +/* margin-top: 10px; */ + margin-left: 200px; +} + + +input#dfrn-url { + float: left; + background: url(friendika-16.png) no-repeat; + background-position: 2px center; + font-size: 17px; + padding-left: 21px; + height: 21px; + background-color: #FFFFFF; + color: #000000; + margin-bottom: 20px; +} + +#dfrn-url-label { + float: left; + width: 250px; +} + +#dfrn-request-url-end { + clear: both; +} + +#knowyouyes, #knowyouno { + float: left; +} + +#dfrn-request-knowyou-yes-wrapper, #dfrn-request-knowyou-no-wrapper { + + float: none; +} +#dfrn-request-knowyou-yes-label, #dfrn-request-knowyou-no-label { + float: left; + width: 75px; + margin-left: 50px; + margin-bottom: 7px; +} +#dfrn-request-knowyou-break, #dfrn-request-knowyou-end { + clear: both; + +} + +#dfrn-request-message-wrapper { + margin-bottom: 50px; +} +#dfrn-request-submit-wrapper { + clear: both; + margin-left: 50px; +} + +#dfrn-request-info-wrapper { + margin-left: 50px; +} + + + +#cropimage-wrapper, #cropimage-preview-wrapper { + float: left; + padding: 30px; +} + +#crop-image-form { + margin-top: 30px; + clear: both; +} + +.intro-wrapper { + margin-top: 20px; +} + +.intro-fullname { + font-size: 1.1em; + font-weight: bold; + +} +.intro-desc { + margin-bottom: 20px; + font-weight: bold; +} + +.intro-note { + padding: 10px; +} + +.intro-end { + padding: 30px; +} + +.intro-form { + float: left; +} +.intro-approve-form { + clear: both; +} +.intro-approve-as-friend-end { + clear: both; +} +.intro-submit-approve, .intro-submit-ignore { + margin-right: 20px; +} +.intro-submit-approve { + margin-top: 15px; +} + +.intro-approve-as-friend-label, .intro-approve-as-fan-label { + float: left; + width: 100px; + margin-left: 20px; +} +.intro-approve-as-friend, .intro-approve-as-fan { + float: left; +} +.intro-form-end { + clear: both; +} +.intro-approve-as-friend-desc { + margin-top: 15px; +} +.intro-approve-as-end { + clear: both; + margin-bottom: 10px; +} + +.intro-end { + clear: both; + margin-bottom: 30px; +} +.aprofile dt { + font-weight: bold; +} +#page-profile .title { + font-weight: bold; +} +#profile-vcard-break { + clear: both; +} +#profile-extra-links { + clear: both; + margin-top: 10px; +} + +#profile-extra-links ul { + list-style-type: none; + padding: 0px; +} + + +#profile-extra-links li { + margin-top: 5px; +} + +#profile-edit-links ul { + list-style-type: none; +} + +#profile-edit-links li { + margin-top: 10px; +} +.profile-edit-side-div { + float: right; +} +.profile-edit-side-link { + opacity: 0.3; + filter:alpha(opacity=30); +} +.profile-edit-side-link:hover { + opacity: 1.0; + filter:alpha(opacity=100); +} + +.view-contact-wrapper { + margin-top: 20px; + float: left; + margin-left: 20px; + width: 180px; +} + +.contact-wrapper { + float: left; + width: 150px; + height: 150px; + overflow: auto; +} + +#view-contact-end { + clear: both; +} + + +#viewcontacts { + margin-top: 15px; +} +#profile-edit-default-desc { + color: #FF0000; + border: 1px solid #FF8888; + background-color: #FFEEEE; + padding: 7px; +} + +#profile-edit-clone-link-wrapper { + float: left; + margin-left: 50px; + margin-bottom: 20px; + width: 300px; +} + + +#profile-edit-links-end { + clear: both; + margin-bottom: 15px; +} + +.profile-listing-photo { + border: none; +} + +.profile-edit-submit-wrapper { + margin-top: 20px; + margin-bottom: 20px; +} + +#profile-photo-link-select-wrapper { + margin-top: 2em; +} + +#profile-photo-submit-wrapper { + margin-top: 10px; +} + +#profile-photo-wrapper img { + width:175px; + height:175px; + padding: 12px; +} + +#profile-edit-profile-name-label, +#profile-edit-name-label, +#profile-edit-pdesc-label, +#profile-edit-gender-label, +#profile-edit-dob-label, +#profile-edit-address-label, +#profile-edit-locality-label, +#profile-edit-region-label, +#profile-edit-postal-code-label, +#profile-edit-country-name-label, +#profile-edit-marital-label, +#profile-edit-sexual-label, +#profile-edit-politic-label, +#profile-edit-religion-label, +#profile-edit-pubkeywords-label, +#profile-edit-prvkeywords-label, +#profile-edit-homepage-label, +#profile-edit-hometown-label { + font-weight: 700; + float: left; + width: 175px; +} + +#profile-edit-profile-name, +#profile-edit-name, +#profile-edit-pdesc, +#gender-select, +#profile-edit-dob, +#profile-edit-address, +#profile-edit-locality, +#profile-edit-region, +#profile-edit-postal-code, +#profile-edit-country-name, +#marital-select, +#sexual-select, +#profile-edit-politic, +#profile-edit-religion, +#profile-edit-pubkeywords, +#profile-edit-prvkeywords, +#profile-in-dir-yes, +#profile-in-dir-no, +#profile-in-netdir-yes, +#profile-in-netdir-no, +#hide-wall-yes, +#hide-wall-no, +#hide-friends-yes, +#hide-friends-no { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} +#profile-edit-country-name { + max-width: 260px; +} +#profile-edit-pubkeywords, +#profile-edit-prvkeywords { + margin-bottom: 5px; +} +#settings-normal, +#settings-soapbox, +#settings-freelove, +#settings-community { + float: left; +} +#settings-notifications label { + margin-left: 20px; +} +#settings-notify-desc, #settings-activity-desc { + font-weight: bold; + margin-bottom: 15px; +} +#settings-pagetype-desc { + color: #666666; + margin-bottom: 15px; +} + +#profile-in-dir-yes-label, +#profile-in-dir-no-label, +#profile-in-netdir-yes-label, +#profile-in-netdir-no-label, +#hide-wall-yes-label, +#hide-wall-no-label, +#hide-friends-yes-label, +#hide-friends-no-label { + margin-left: 125px; + float: left; + width: 50px; +} + + +#profile-edit-howlong-label, +#profile-edit-with-label { + display: block; + font-style: italic; + width: 175px; + margin-left: 0px; +} +#profile-edit-howlong, +#profile-edit-with { + margin-left: 20px; + margin-bottom: 20px; +} + +#profile-publish-yes-reg, +#profile-publish-no-reg { + float: left; + margin-bottom: 10px; +} + +#profile-publish-yes-label-reg, +#profile-publish-no-label-reg { + margin-left: 350px; + float: left; + width: 50px; +} + +#profile-publish-break-reg, +#profile-publish-end-reg { + clear: both; +} + + +#profile-edit-pdesc-desc, +#profile-edit-pubkeywords-desc, +#profile-edit-prvkeywords-desc { + float: left; + color: #777; + margin-left: 20px; + margin-bottom: 20px; +} +#profile-edit-prvkeywords-desc { + margin-bottom: 0px; +} + +#profile-edit-homepage, #profile-edit-hometown { + float: left; + margin-bottom: 25px; + margin-left: 20px; +} +#profile-edit-hometown { + margin-bottom: 5px; +} +#settings-normal-label, +#settings-soapbox-label, +#settings-community-label, +#settings-freelove-label { + float: left; + width: 200px; +} +#settings-normal-desc, +#settings-soapbox-desc, +#settings-community-desc, +#settings-freelove-desc { + /*float: left; + margin-left: 75px;*/ + clear: left; + color: #666666; + display: block; + margin-bottom: 20px +} + +#profile-edit-profile-name-end, +#profile-edit-name-end, +#profile-edit-pdesc-end, +#profile-edit-gender-end, +#profile-edit-dob-end, +#profile-edit-address-end, +#profile-edit-locality-end, +#profile-edit-region-end, +#profile-edit-postal-code-end, +#profile-edit-country-name-end, +#profile-edit-marital-end, +#profile-edit-sexual-end, +#profile-edit-politic-end, +#profile-edit-religion-end, +#profile-edit-pubkeywords-end, +#profile-edit-prvkeywords-end, +#profile-edit-homepage-end, +#profile-edit-hometown-end, +#profile-in-dir-break, +#profile-in-dir-end, +#profile-in-netdir-break, +#profile-in-netdir-end, +#hide-wall-break, +#hide-wall-end, +#hide-friends-break, +#hide-friends-end, +#settings-normal-break, +#settings-soapbox-break, +#settings-community-break, +#settings-freelove-break { + clear: both; +} +#profile-edit-marital-wrapper, #profile-edit-address-wrapper { + margin-top: 50px; +} +#profile-edit-marital-end { + margin-bottom: 20px; +} + +.settings-widget ul { + list-style-type: none; + padding: 0px; +} + +.settings-widget li { + margin-left: 24px; + margin-bottom: 8px; +} + + +#gender-select, #marital-select, #sexual-select { + width: 220px; +} + +#profile-edit-profile-name-wrapper .required { + color: #FF0000; + float: left; +} + +#contacts-display-wrapper { + padding-left: 35px; +} + +#contacts-main { + margin-top: 20px; + margin-bottom: 20px; +} + +.contact-entry-wrapper { + float: left; +/* width: 120px; + height: 120px;*/ + padding-left: 15px; + padding-right: 15px; + width: 95px; + height: 170px; +} +#contacts-search-end { + margin-bottom: 10px; +} + +.contact-entry-direction-icon { + margin-top: 24px; + margin-right: 2px; +} + +.contact-entry-photo img { + border: none; +} +.contact-entry-photo-end { + clear: both; +} +.contact-entry-name { + float: left; + margin-left: 0px; + margin-right: 10px; + padding-bottom: 5px; + width: 120px; + font-weight: 600; + overflow: hidden; +} +.contact-entry-details { + font-style: italic; + font-size: 10px; + font-weight: 500; +} +.contact-entry-network { + font-size: 10px; + font-weight: 500; +} +.contact-entry-edit-links { + margin-top: 6px; + margin-left: 10px; + width: 16px; +} +.contact-entry-nav-wrapper { + float: left; + margin-left: 10px; +} + +.contact-entry-edit-links img { + border: none; + margin-right: 15px; +} +.contact-entry-photo { + float: left; + position: relative; +} +.contact-entry-end { + clear: both; +} + +#fsuggest-desc, #fsuggest-submit-wrapper { + margin-top: 15px; + margin-bottom: 15px; +} + +#network-star-link{ + margin-top: 10px; +} +.network-star { + float: left; + margin-right: 5px; +} +#network-bmark-link { + margin-top: 10px; +} + +.wall-item-content-wrapper { + margin-top: 60px; + padding-top: 30px; + border-top: 2px solid #AAAAAA; + position: relative; + +} + +.wall-item-content-wrapper.comment { + margin-top: 30px; + padding-top: 0px; + margin-left: 5px; + margin-right: 5px; + border: 2px solid #AAAAAA; + border-radius: 10px; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; +/* background: #EEEEEE;*/ +} + +.wall-item-like, .wall-item-dislike { + font-style: italic; + margin-left: 0px; + opacity: 0.6; +} + +.wall-item-like.comment, .wall-item-dislike.comment { + margin-left: 5px; +} + +.wall-item-info { + display: block; + float: left; + width:110px; + margin-right:10px; +} +.comment .wall-item-info { + width: 70px; +} + +.wall-item-photo-wrapper { + margin-bottom: 10px; + width: 100px; +} +.wall-item-photo-menu-button { + display: block; + position: absolute; + background-image: url("photo-menu.jpg"); + background-position: top left; + background-repeat: no-repeat; + margin: 0px; padding: 0px; + width: 16px; + height: 16px; + top: 94px; left:0px; + overflow: hidden; + text-indent: 40px; + display: none; + +} +.wall-item-photo-menu { + width: auto; + border: 2px solid #444444; + background: #FFFFFF; + position: absolute; + left: 0px; top:110px; + display: none; + z-index: 10000; +} +.wall-item-photo-menu ul { margin:0px; padding: 0px; list-style: none } +.wall-item-photo-menu li a { display: block; padding: 2px; } +.wall-item-photo-menu li a:hover { color: #FFFFFF; background: #3465A4; text-decoration: none; } + + +.comment .wall-item-photo-menu-button { top: 64px;} +.comment .wall-item-photo-menu { top: 80px; } + +.wallwall .wwto { + left: 50px; + margin: 0; + position: absolute; + top: 80px; + width: 30px +} +.wallwall .wwto img { + width: 30px !important; + height: 30px !important; +} + +.wallwall .wall-item-photo-end { + clear: both; +} + +.wall-item-arrowphoto-wrapper { + position: absolute; + left: 75px; + top: 80px; + z-index: 100; +} +.wall-item-wrapper { + margin-left:10px; +} +.wall-item-lock { + margin-top: 30px; + left: 105px; + position: absolute; + top: 1px; +} +.comment .wall-item-lock { + margin-top: 0px; + left: 65px; +} + +.wall-item-ago { + color: #888888; + font-size: 0.8em; +} + +.wall-item-location { + overflow: hidden; + /* add ellipsis on text overflow */ + /* this work on safari, opera, ie, chrome. */ + /* firefox users have to wait support or we */ + /* can use a jquery plugin http://bit.ly/zJskg */ + text-overflow: ellipsis; + -o-text-overflow: ellipsis; + width: 100%; +} + +.wall-item-like-buttons { + float: left; + margin-right: 10px; +} + +.like-rotator { + margin-left: 5px; +} + +.wall-item-like-buttons > a, +.wall-item-like-buttons > img { + float: left; +} + +.wall-item-like-buttons img { + cursor: pointer; +} + +.wall-item-share-buttons { + margin-left: 10px; + margin-right: 10px; +} + +.editpost { + margin-left: 10px; + float: left; +} +.star-item { + margin-left: 10px; + float: left; +} +.tag-item { + margin-left: 10px; + float: left; +} + +.filer-item { + margin-left: 10px; + float: left; +} + +.wall-item-links-wrapper { + float: left; +} + +.wall-item-delete-wrapper { + float: right; +} + +.wall-item-delete-end { + clear: both; +} + +.wall-item-delete-icon { + border: none; +} + + +.wall-item-wrapper-end { + clear: both; +} +.wall-item-name-link { + font-weight: bold; + text-decoration: none; + color: #3172BD; +} +.wall-item-photo { + border: none; +} +.comment .wall-item-photo { + width: 50px !important; + height: 50px !important; + border-top-left-radius: 10px; +} +.wall-item-content { + float: left; + margin-left: 3px; +/* padding-right: 1em; + max-height: 500px; + overflow: auto;*/ +} + +.wall-item-content img { + max-width: 300px; + border-radius: 7px; + -moz-border-radius: 7px; + -webkit-border-radius: 7px; +} + + + +.wall-item-title { + float: left; + font-weight: bold; + font-size: 1.6em; + /*width: 450px;*/ +} + +.wall-item-title-end { + clear: both; +} + +.wall-item-body { + text-align: justify; + float: left; + width: 300px; + overflow: hidden; + margin-top: 10px; + line-height: 23px; +} + +.wall-item-body code { + overflow: hidden; +} + +.comment .wall-item-body { + margin-left: 5px; + width: 280px; +} + +.wall-item-tools { + clear: both; +/* background-image: url("head.jpg"); + background-position: 0 -20px; + background-repeat: repeat-x;*/ + padding: 5px 10px 0px; + height: 32px; +} +.wall-item-author { +/* margin-top: 10px;*/ + margin-top: 0px; +} + +.comment .wall-item-tools { +/* background:none;*/ +/* background-image: url("head.jpg"); + background-position: 0 -20px; + background-repeat: repeat-x;*/ + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; +} + +.comment-edit-wrapper { + margin-top: 15px; + background: #f3f3f3; + margin-left: 50px; +} + +.comment-wwedit-wrapper { + margin-top: 15px; + background: #f3f3f3; + margin-left: 10px; + margin-right: 10px; +} + +.comment-edit-photo { + margin-top: 15px; + margin-left: 10px; + margin-bottom: 10px; + width: 25px; + float: left; +} +.comment-edit-photo img { + width: 25px; +} +.comment-edit-text-empty, .comment-edit-text-full { +/* float: left;*/ + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 1px solid #cccccc; + padding: 3px 1px 1px 3px; +} + +.comment-edit-text-empty { + color: gray; + height: 30px; + width: 175px; +/* overflow: auto;*/ + margin-top: 40px; + margin-bottom: 10px; + margin-left: 20px; +} + +.comment-edit-text-full { + color: black; + height: 150px; +/* width: 350px; + overflow: auto;*/ + width: 190px; + margin-top: 15px; + margin-left: 20px; +} + +.comment-edit-text-end { + clear: both; +} + +.comment-edit-submit { + font-size: 18px; + padding: 5px 10px; + margin: 10px 0px 10px 110px; +} + +#profile-jot-wrapper { + padding-left: 10px; +} + +#profile-jot-plugin-wrapper, +#profile-jot-submit-wrapper { + margin-top: 15px; +} + +#profile-jot-submit { + float: left; + font-size: 18px; + padding: 5px 8px; +} +#profile-upload-wrapper { + float: left; + margin-left: 30px; +} +#profile-attach-wrapper { + float: left; + margin-left: 15px; +} +#profile-rotator { + float: left; + margin-left: 30px; +} +#profile-link-wrapper { + float: left; + margin-left: 15px; +} +#profile-youtube-wrapper { + float: left; + margin-left: 15px; +} +#profile-video-wrapper { + float: left; + margin-left: 15px; +} +#profile-audio-wrapper { + float: left; + margin-left: 15px; +} +#profile-location-wrapper { + float: left; + margin-left: 15px; +} +#jot-preview-link { + display: none; + float: left; + margin-left: 45px; + margin-top: 0px !important; +} + + +#profile-nolocation-wrapper { + float: left; + margin-left: 15px; +} +#profile-title-wrapper { + float: left; + margin-left: 15px; +} + +#profile-jot-perms { + float: left; + margin-left: 40px; + font-weight: bold; + font-size: 1.2em; +} + + +#profile-jot-perms-end { + /*clear: left;*/ + height: 30px; +} + +#profile-jot-plugin-end{ + clear: both; +} +.profile-jot-net { + float: left; + margin-right: 10px; + margin-top: 5px; + margin-bottom: 5px; +} + +#profile-jot-networks-end { + clear: both; +} + +.profile-jot-box { + margin-top: 50px; +} +.profile-edit-textarea { + margin-left: 20px; +} + +#profile-jot-end { + /*clear: both;*/ + margin-bottom: 30px; +} +#about-jot-submit-wrapper { + margin-top: 15px; +} +#about-jot-end { + margin-bottom: 30px; +} +#contacts-main { + margin-bottom: 30px; +} + +#profile-listing-desc { + margin-left: 30px; +} + +#profile-listing-new-link-wrapper { + margin-left: 30px; + margin-bottom: 30px; +} +.profile-listing-photo-wrapper { + float: left; +} + +.profile-listing-edit-buttons-wrapper { + clear: both; +} +.profile-listing-photo-edit-link { + float: left; + width: 125px; +} +.profile-listing-end { + clear: both; +} +.profile-listing-edit-buttons-wrapper img{ + border: none; + margin-right: 20px; +} +.profile-listing { + float: left; + margin-left: 30px; + margin-top: 25px; +} +.profile-listing-visible { + margin-left: 100px; +} +.profile-listing-name { + float: left; + margin-left: 12px; + margin-top: 10px; + color: #3172BD; + font-weight: bold; + width: 200px; + +} +.fortune { + margin-top: 50px; + color: #4444FF; + font-weight: bold; + margin-bottom: 20px; +} + + +.directory-end { + clear: both; +} +.directory-name { + text-align: center; +} +.directory-photo { + margin-left: 15px; +} +.directory-details { + font-size: 0.7em; + text-align: center; + margin-left: 5px; + margin-right: 5px; +} +.directory-item { + float: left; +/* width: 225px; + height: 260px;*/ + padding-left: 15px; + width: 130px; + height: 235px; + overflow: auto; +} + +#directory-search-wrapper { + margin-top: 20px; + margin-right: 20px; + margin-bottom: 50px; +} + +#directory-search-end { +} + +.directory-photo-img { + width: 125px; + border: none; +} + + +.pager { + margin-top: 30px; + margin-right: auto; + margin-left: auto; + + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + text-align: center; +/* line-height: 2.75em;*/ +} + +.pager a { + font-size: 1.5em; + padding: 0.2em 1em; + border: 1px solid #aaa; + border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; +} + + +.pager_first, +.pager_last, +.pager_prev, +.pager_next, +.pager_n { +/* float: left; + border: 1px solid black; + border-radius: 7px; + background: #EEE; + text-align: center; + width: 50px; + margin-right: 5px; + margin-bottom: 10px;*/ +/* float: left;*/ + margin-right: 15px; + margin-left: 15px; +} + +.pager_first, +.pager_last, +.pager_n { + display: none; +} + +.pager_first a, +.pager_last a, +.pager_prev a, +.pager_next a { +/* padding-top: 2px; + padding-bottom: 2px; + padding-left: 4px; + padding-right: 8px;*/ + padding-top: 5px; + padding-bottom: 5px; + padding-left: 25px; + padding-right: 30px; + + border: 2px solid #AAAAAA; + border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + font-size: 1.25em; + text-align: center; + text-decoration: none; +} +.pager_n a { + padding-top: 2px; + padding-bottom: 2px; + padding-left: 9px; + padding-right: 18px; + text-decoration: none; +} + +.pager_current { + display: none; + float: left; + border: 1px solid black; + border-radius: 7px; + -moz-border-radius: 7px; + -webkit-border-radius: 7px; + background: #FFCCCC; + font-size: 1.25em; + text-align: center; + width: 50px; + margin-right: 5px; + margin-bottom: 10px; +} + + +#advanced-profile-name-wrapper, +#advanced-profile-gender-wrapper, +#advanced-profile-dob-wrapper, +#advanced-profile-age-wrapper, +#advanced-profile-marital-wrapper, +#advanced-profile-sexual-wrapper, +#advanced-profile-homepage-wrapper, +#advanced-profile-politic-wrapper, +#advanced-profile-religion-wrapper, +#advanced-profile-about-wrapper, +#advanced-profile-interest-wrapper, +#advanced-profile-contact-wrapper, +#advanced-profile-music-wrapper, +#advanced-profile-book-wrapper, +#advanced-profile-tv-wrapper, +#advanced-profile-film-wrapper, +#advanced-profile-romance-wrapper, +#advanced-profile-work-wrapper, +#advanced-profile-education-wrapper { + margin-top: 20px; +} + +#advanced-profile-name-text, +#advanced-profile-gender-text, +#advanced-profile-dob-text, +#advanced-profile-age-text, +#advanced-profile-marital-text, +#advanced-profile-sexual-text, +#advanced-profile-homepage-text, +#advanced-profile-politic-text, +#advanced-profile-religion-text, +#advanced-profile-about-text, +#advanced-profile-interest-text, +#advanced-profile-contact-text, +#advanced-profile-music-text, +#advanced-profile-book-text, +#advanced-profile-tv-text, +#advanced-profile-film-text, +#advanced-profile-romance-text, +#advanced-profile-work-text, +#advanced-profile-education-text { + width: 300px; + float: left; +} + +#advanced-profile-name-end, +#advanced-profile-gender-end, +#advanced-profile-dob-end, +#advanced-profile-age-end, +#advanced-profile-marital-end, +#advanced-profile-sexual-end, +#advanced-profile-homepage-end, +#advanced-profile-politic-end, +#advanced-profile-religion-end { + height: 10px; +} + +#advanced-profile-about-end, +#advanced-profile-interest-end, +#advanced-profile-contact-end, +#advanced-profile-music-end, +#advanced-profile-book-end, +#advanced-profile-tv-end, +#advanced-profile-film-end, +#advanced-profile-romance-end, +#advanced-profile-work-end, +#advanced-profile-education-end { + + +} + +#advanced-profile-name, +#advanced-profile-gender, +#advanced-profile-dob, +#advanced-profile-age, +#advanced-profile-marital, +#advanced-profile-sexual, +#advanced-profile-homepage, +#advanced-profile-politic, +#advanced-profile-religion { + float: left; + +} + + +#advanced-profile-about, +#advanced-profile-interest, +#advanced-profile-contact, +#advanced-profile-music, +#advanced-profile-book, +#advanced-profile-tv, +#advanced-profile-film, +#advanced-profile-romance, +#advanced-profile-work, +#advanced-profile-education { + margin-top: 10px; + margin-left: 50px; + margin-right: 20px; + padding: 10px; + border: 1px solid #CCCCCC; +} + +#advanced-profile-with { + float: left; + margin-left: 15px; +} + +#contact-edit-wrapper { + margin-top: 10px; +} + +#contact-edit-banner-name { + font-size: 1.4em; + font-weight: bold; +} + +#contact-edit-poll-wrapper { + margin-top: 15px; +} + +#contact-edit-poll-text { + margin-top: 15px; + margin-bottom: 5px; +} + +#contact-edit-update-now { + margin-top: 15px; +} + +#contact-edit-links{ + clear: both; +} + +#contact-edit-links ul { + list-style: none; + list-style-type: none; + margin-left: 0px; + padding-left: 0px; +} + +#contact-edit-links li { + margin-top: 5px; +} + +#contact-edit-drop-link { + float: right; + margin-right: 20px; +} + +#contact-edit-nav-end { + clear: both; +} + +#contact-edit-wrapper { + width: 100%; +} + +#contact-edit-end { + clear: both; + margin-top: 15px; +} + +#contact-profile-selector { + width: 175px; + margin-left: 175px; +} + +.contact-edit-submit { + margin-top: 20px; +} + + +.contact-photo-menu-button { +/* position: absolute; + background-image: url("photo-menu.jpg"); + background-position: top left; + background-repeat: no-repeat; + margin: 0px; padding: 0px; + width: 16px; + height: 16px; + top: 64px; left:0px; + overflow: hidden; + text-indent: 40px; + display: none;*/ + +} +.contact-photo-menu { + width: 130px; + border: 1px solid #AAA; + background: #FFFFFF; + position: absolute; + left: -30px; top: 80px; + display: none; + z-index: 10000; + -moz-box-shadow: 3px 3px 5px #555; + -webkit-box-shadow: 3px 3px 5px #555; + box-shadow: 3px 3px 5px #555; +} +.contact-photo-menu ul { margin:0px; padding: 0px; list-style: none } +.contact-photo-menu li a { display: block; padding: 2px; } +.contact-photo-menu li a:hover { color: #FFFFFF; background: #3465A4; text-decoration: none; } + + +#block-message, #ignore-message, #archive-message, #lost-contact-message { + color: #FF0000; +} + +#profile-edit-insecure { + margin-top: 20px; + color: #FF0000; + font-size: 1.1em; + border: 1px solid #FF8888; + background-color: #FFEEEE; + padding-left: 5px; + /*: 3px 3px 3px 5px; */ + width: 587px; +} + +#profile-jot-desc { + /*float: left;*/ + width: 100%; + color: #FF0000; + margin-top: 10px; + margin-bottom: 10px; +} + +#profile-jot-text { + width: 90%; + height: 20px; + color:#cccccc; + border: 1px solid #cccccc; + padding: 3px 0px 0px 5px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + + +/** acl **/ +#photo-edit-perms-select, +#photos-upload-permissions-wrapper, +#profile-jot-acl-wrapper{ + display:block!important; +} + +#photos-usage-message { + margin-bottom: 15px; +} + +#profile-jot-acl-wrapper{ + width:270px; + padding-left:10px; + height:auto; + overflow:visible; +} + +#acl-wrapper { + width: 270px; + float:left; +} +#acl-search { + display: none; + float:right; + background: #ffffff url("../../../images/search_18.png") no-repeat right center; + padding-right:20px; +} +#acl-showall { + float: left; + display: block; + width: auto; + height: 18px; + background-color: #cccccc; + background-image: url("../../../images/show_all_off.png"); + background-position: 7px 7px; + background-repeat: no-repeat; + padding: 7px 5px 0px 30px; + -webkit-border-radius: 5px ; + -moz-border-radius: 5px; + border-radius: 5px; + color: #999999; +} +#acl-showall.selected { + color: #000000; + background-color: #ff9900; + background-image: url("../../../images/show_all_on.png"); +} + +#acl-list { +/* height: 210px;*/ + border: 1px solid #cccccc; + clear: both; + margin-top: 30px; + overflow: visible; +} +#acl-list-content { + +} +.acl-list-item { + display: block; + width: 120px; + height: 30px; + border: 1px solid #cccccc; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin-top: 5px; + margin-bottom: 5px; + margin-right: 2px; + margin-left: 2px; + padding-left: 5px; + float: left; +} +.acl-list-item img{ + display: none; + width:22px; + height: 22px; + float: left; + margin: 4px; +} +.acl-list-item p { height: 12px; font-size: 10px; margin: 0px; padding: 2px 0px 1px; overflow: hidden;} +.acl-list-item a { + font-size: 8px; + display: block; + width: 40px; + height: 10px; + float: left; + color: #999999; + background-color: #cccccc; + background-position: 3px 3px; + background-repeat: no-repeat; + margin-right: 5px; + -webkit-border-radius: 2px ; + -moz-border-radius: 2px; + border-radius: 2px; + padding-left: 15px; +} +#acl-wrapper a:hover { + text-decoration: none; + color:#000000; +} +.acl-button-show { background-image: url("../../../images/show_off.png"); } +.acl-button-hide { background-image: url("../../../images/hide_off.png"); } + +.acl-button-show.selected { + color: #000000; + background-color: #9ade00; + background-image: url("../../../images/show_on.png"); +} +.acl-button-hide.selected { + color: #000000; + background-color: #ff4141; + background-image: url("../../../images/hide_on.png"); +} +.acl-list-item.groupshow { border-color: #9ade00; } +.acl-list-item.grouphide { border-color: #ff4141; } +/** /acl **/ + + +#group-new-submit-wrapper { + margin-top: 30px; +} + +#group-edit-name-label { + float: left; + width: 175px; + margin-top: 20px; + margin-bottom: 20px; +} + +#group-edit-name { + float: left; + width: 225px; + margin-top: 20px; + margin-bottom: 20px; +} + +#group-edit-name-wrapper { + + +} + + +#group_members_select_label { + display: block; + float: left; + width: 175px; +} + +.group_members_select { + float: left; + width: 230px; + overflow: auto; +} + +#group_members_select_end { + clear: both; +} +#group-edit-name-end { + clear: both; +} + +#prvmail-to-label, #prvmail-subject-label, #prvmail-message-label { + margin-bottom: 10px; + margin-top: 20px; +} + +#prvmail-submit { + float: left; + font-size: 18px; + padding: 0.25em 0.5em; + margin-top: 10px; + margin-right: 30px; +} +#prvmail-upload-wrapper, +#prvmail-link-wrapper, +#prvmail-rotator-wrapper { + float: left; + margin-top: 10px; + margin-right: 10px; + width: 24px; +} + +#prvmail-end { + clear: both; +} + +.mail-list-sender, +.mail-list-detail { + float: left; +} +.mail-list-detail { + margin-left: 20px; +} + +.mail-list-subject { + font-size: 1.1em; + margin-top: 10px; +} +a.mail-list-link { + display: block; + font-size: 1.3em; + padding: 4px 0; +} + +/* +*a.mail-list-link:hover { +* background-color: #15607B; +* color: #F5F6FB; +*} +*/ + +.mail-list-outside-wrapper-end { + clear: both; +} + +.mail-list-outside-wrapper { + margin-top: 30px; +} + +.mail-list-delete-wrapper { + float: right; + margin-right: 30px; + margin-top: 15px; +} + +.mail-list-delete-icon { + border: none; +} + +.mail-conv-sender, +.mail-conv-detail { + float: left; +} +.mail-conv-detail { + margin-left: 20px; + margin-bottom: 10px; + width: 270px; +} + +.mail-conv-subject { + font-size: 1.4em; + margin: 10px 0; +} + +.mail-conv-outside-wrapper-end { + clear: both; +} + +.mail-conv-outside-wrapper { + margin-top: 30px; +} + +.mail-conv-delete-wrapper { + float: right; + margin-right: 5px; + margin-top: 15px; +} +.mail-conv-break { + clear: both; +} + +.mail-conv-delete-icon { + border: none; +} + +.message-links ul { + list-style-type: none; + padding: 0px; +} + +.message-links li { + margin-top: 10px; + float: left; +} +.message-links a { + padding: 3px 5px; +} + +.message-links-end { + clear: both; +} + +#sidebar-group-list ul { + list-style-type: none; +} + +#sidebar-group-list .icon, #sidebar-group-list .iconspacer { + display: inline-block; + height: 12px; + width: 12px; +} + +#sidebar-group-list li { + margin-top: 10px; +} + +.nets-ul, .fileas-ul, .categories-ul { + list-style-type: none; +} + +.nets-ul li, .fileas-ul li, .categories-ul li { + margin-top: 10px; +} + +.nets-link { + margin-left: 24px; +} +.nets-all { + margin-left: 42px; +} + +.fileas-link, .categories-link { + margin-left: 24px; +} + +.fileas-all, .categories-all { + margin-left: 0px; +} + +#search-save { + margin-left: 5px; +} +.groupsideedit { + margin-right: 10px; +} +#saved-search-ul { + list-style-type: none; +} +.savedsearchdrop, .savedsearchterm { + float: left; + margin-top: 10px; +} +.savedsearchterm { + margin-left: 10px; +} + + +#side-follow-wrapper { + margin-top: 20px; +} +#side-follow-url, #side-peoplefind-url { + margin-top: 5px; +} +#side-follow-submit, #side-peoplefind-submit { + margin-top: 15px; +} + +#side-match-link { + margin-top: 10px; +} + +aside input[type='text'] { + width: 174px; +} + +.widget { + border: 1px solid #DDDDDD; + padding: 8px; + margin-top: 5px; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; + +} + + +/*.photos { + height: auto; + overflow: auto; +}*/ + +.photos-end { + clear: both; + margin-bottom: 25px; +} + +.photo-album-image-wrapper { + float: left; + margin-top: 15px; + margin-right: 15px; + margin-left: 15px; +/* width: 200px; height: 200px; + overflow: hidden; + position: relative; */ +} +.photo-album-image-wrapper .caption { + display: none; + width: 100%; +/* position: absolute; */ + bottom: 0px; + padding: 0.5em 0.5em 0px 0.5em; + background-color: rgba(245, 245, 255, 0.8); + border-bottom: 2px solid #CCC; + margin: 0px; +} +.photo-album-image-wrapper a:hover .caption { + display:block; +} + +#photo-album-end { + clear: both; + margin-bottom: 25px; +} + +.photo-top-image-wrapper { +/* position: relative; */ + float: left; + margin-top: 15px; + margin-right: 15px; + margin-left: 15px; + margin-bottom: 15px; +/* width: 200px; height: 200px; + overflow: hidden; */ +} +.photo-top-image-wrapper img { + max-width: 290px; + border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; +} +.photo-top-album-name { + width: 100%; + min-height: 2em; +/* position: absolute; */ + bottom: 0px; + padding: 0px 3px; + padding-top: 0.5em; + background-color: rgb(255, 255, 255); +} +#photo-top-end { + clear: both; +} + +#photo-top-links { + margin-bottom: 30px; + margin-left: 30px; +} + +#photos-upload-newalbum-div { + float: left; + width: 175px; +} + +#photos-upload-noshare { + margin-bottom: 10px; +} +#photos-upload-existing-album-text { + float: left; + width: 175px; +} +#photos-upload-newalbum { + float: left; +} +#photos-upload-album-select { + float: left; +} + +#photos-upload-spacer { + margin-top: 25px; +} +#photos-upload-new-end, #photos-upload-exist-end { + clear: both; +} +#photos-upload-exist-end { + margin-bottom: 15px; +} +#photos-upload-submit { + margin-top: 15px; +} + +#photos_upload_applet_wrapper { + margin-bottom: 15px; +} + +#photos-upload-no-java-message { + margin-bottom: 15px; +} + +#character-counter { + float: right; + font-size: 120%; +} + +#character-counter.grey { + color: #888888; +} + +#character-counter.orange { + color: orange; +} +#character-counter.red { + color: red; +} + +#profile-jot-banner-end { + /* clear: both; */ +} + +#photos-upload-select-files-text { + margin-top: 15px; + margin-bottom: 15px; +} + +#photos-upload-perms-menu, #photos-upload-perms-menu:visited, #photos-upload-perms-menu:link { + color: #8888FF; + text-decoration: none; + cursor: pointer; +} + +#photos-upload-perms-menu:hover { + color: #0000FF; + text-decoration: underline; + cursor: pointer; +} +#settings-default-perms-menu { + margin-top: 15px; + margin-bottom: 15px; +} + +#photo-edit-caption-label, #photo-edit-tags-label, #photo-edit-albumname-label, .photo-edit-rotate-label { + float: left; + width: 150px; +} + +#photo-edit-caption-label, #photo-edit-tags-label, #photo-edit-albumname-label { + font-weight: 700; +} + +#photos-upload-noshare-div { + margin-top: 140px; + margin-bottom: 15px; +} + +#photos-upload-noshare-label { + margin-left: 25px; +} + +#photos-upload-noshare { + float: left; +} + +.photo-perms-icon { + float: left; +} + +#photo-edit-perms-menu, #photos-upload-perms-menu, #settings-default-perms-menu { + text-decoration: none; +} + +.photo-jot-perms-text { + padding-top: 5px; + padding-left: 40px; +} + +#photo-edit-perms, #photos-upload-perms, #settings-default-perms { + margin-top: 30px; +} +#photos-upload-perms { + margin-top: 15px; + margin-left: 5px; +} + +#photo-edit-perms-select, #photos-upload-permissions-wrapper, #settings-jot-acl-wrapper { + margin-top: 30px; + margin-left: 20px; +} + +#advanced-expire-popup { + padding-left: 1em; + margin-top: 15px; + border: 1px solid #aaa; + border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; +} + +#photo-edit-perms-end { + margin-bottom: 15px; +} + +#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname { + float: left; + margin-bottom: 25px; +} + +.photo-edit-rotate { + float: left; + margin-left: 20px; +} +#photo-edit-link-wrap { + margin-bottom: 15px; +} +#photo-like-div { + margin-left: 15px; + margin-bottom: 65px; +} + +#photo-edit-caption-end, #photo-edit-tags-end, #photo-edit-albumname-end, #photo-edit-rotate-end { + clear: both; +} + +#photo-edit-rotate-end { + margin-bottom: 15px; +} + +#photo-edit-submit-button, #photo-edit-delete-button, #photos-upload-submit { + margin-top: 30px; + padding: 0.25em 0.5em; + font-size: 18px; +} +#photo-edit-submit-button { + margin-left: 10px; +} +#photo-edit-delete-button { + margin-left: 45px; +} +#photos-upload-choose { + position: absolute; + top: 460px; + left: 5px; +} +#photos-upload-submit { + margin-top: 30px; + margin-left: 100px; + margin-bottom: 20px; +} +.settings-submit, .profile-edit-submit-button { + padding: 0.25em 0.5em; + margin-bottom: 10px; + font-size: 18px; +} +#photo-edit-end { + margin-bottom: 35px; +} +#photo-caption { + font-size: 110%; + font-weight: bold; + margin-top: 15px; + margin-bottom: 15px; +} + +#in-this-photo-text { + color: #0000FF; + margin-left: 30px; +} + +#in-this-photo { + margin-left: 60px; + margin-top: 10px; + margin-bottom: 20px; +} + +#photo-album-edit-submit, #photo-album-edit-drop { + margin-top: 15px; + margin-bottom: 15px; +} + +#photo-album-edit-drop { + margin-left: 200px; +} + +.group-delete-wrapper { + float: right; + margin-right: 50px; +} + +#install-dbhost-label, +#install-dbuser-label, +#install-dbpass-label, +#install-dbdata-label, +#install-tz-desc { + float: left; + width: 250px; + margin-top: 10px; + margin-bottom: 10px; + +} + +#install-dbhost, +#install-dbuser, +#install-dbpass, +#install-dbdata { + float: left; + width: 200px; + margin-left: 20px; +} + +#install-dbhost-end, +#install-dbuser-end, +#install-dbpass-end, +#install-dbdata-end, +#install-tz-end { + clear: both; +} + +#install-form select#timezone_select { + float: left; + margin-top: 18px; + margin-left: 20px; +} + +#dfrn-request-networks { + margin-bottom: 30px; +} + +#pause { + position: fixed; + bottom: 5px; + right: 5px; +} + +.sparkle { + cursor: url('lock.cur'), pointer; +/* cursor: pointer !important; */ +} + +.contact-block-div { + float: left; + width: 52px; + height: 52px; +} +.contact-block-textdiv { + float: left; + width: 150px; + height: 34px; +} + +#contact-block-end { + clear: both; +} +.contact-block-link { + float: left; +} +.contact-block-img { + width:48px; + height:48px; +} + +#tag-remove { + margin-bottom: 15px; +} + +#tagrm li { + margin-bottom: 10px; +} + +#tagrm-submit, #tagrm-cancel { + margin-top: 25px; +} + +#tagrm-cancel { + margin-left: 15px; +} + +.wall-item-conv { + margin-top: 5px; + margin-bottom: 25px; +} + +#search-submit { + margin-left: 15px; +} + +#search-box { + margin-bottom: 25px; +} + +.location-label, .gender-label, .marital-label, .homepage-label { + float: left; + text-align: right; + display: block; + width: 65px; +} + +.adr, .x-gender, .marital-text, .homepage-url { + float: left; + display: block; + margin-left: 8px; +} + +.profile-clear { + clear: both; +} + + +.clear { + clear: both; +} + +.cc-license { + margin-top: 50px; + font-size: 70%; +} + + +#plugin-settings-link, #account-settings-link { + margin-bottom: 10px; +} + +#uexport-link { + margin-bottom: 20px; +} + +/* end from default */ + + +.fn { + padding: 0px 0px 5px 12px; + font-size: 120%; + font-weight: bold; +} + +.vcard .title { + margin-bottom: 5px; + margin-left: 12px; +} + +.vcard dl { + clear: both; +} + +#birthday-title { + float: left; + font-weight: bold; +} + +#birthday-adjust { + float: left; + font-size: 75%; + margin-left: 10px; +} + +#birthday-title-end { + clear: both; +} + +.birthday-list { + margin-left: 15px; +} + +#birthday-wrapper { + margin-bottom: 20px; +} + +#network-new-link { + margin-top: 15px; + margin-bottom: 15px; +} + + +.tool-wrapper { + float: left; + margin-left: 15px; +} + +.tool-link { + cursor: pointer; +} + +.eventcal { + float: left; + font-size: 20px; +} + +#event-summary-text { + margin-top: 15px; +} + +#event-share-checkbox { + float: left; + margin-top: 10px; +} + +#event-share-text { + float: left; + margin-top: 10px; + margin-left: 5px; +} + +#event-share-break { + clear: both; + margin-bottom: 10px; +} + +#event-summary { + width: 400px; +} + +.vevent { + border: 1px solid #CCCCCC; +} + +.vevent .event-summary { + margin-left: 10px; + margin-right: 10px; + font-weight: bold; +} + +.vevent .event-description, .vevent .event-location { + margin-left: 10px; + margin-right: 10px; +} +.vevent .event-start { + margin-left: 10px; + margin-right: 10px; +} + +#new-event-link { + margin-bottom: 10px; +} + +.edit-event-link, .plink-event-link { + float: left; + margin-top: 4px; + margin-right: 4px; + margin-bottom: 15px; +} + +.event-description:before { + content: url('../../../images/calendar.png'); + margin-right: 15px; +} + +.event-start, .event-end { + margin-left: 10px; + width: 330px; + clear: both; +} + +.event-start .dtstart, .event-end .dtend { + float: right; +} + +.event-list-date { + margin-bottom: 10px; +} + +.prevcal, .nextcal { + float: left; + margin-left: 32px; + margin-right: 32px; + margin-top: 64px; +} +.event-calendar-end { + clear: both; +} + + +.calendar { + font-family: Courier, monospace; +} +.today { + font-weight: bold; + color: #FF0000; +} + +.settings-block { + border: 1px solid #AAA; + margin: 10px; + padding: 10px; +} + +.app-title { + margin: 10px; +} + +#identity-manage-desc { + margin-top:15px; + margin-bottom: 15px; +} + +#identity-manage-choose { + margin-bottom: 15px; +} + +#identity-submit { + margin-top: 20px; +} + +#photo-nav { + position: relative; + height: 55px; +} + +#photo-prev-link { + position: absolute; + left: 5px; +} +#photo-next-link { + position: absolute; + right: 5px; +} +#photo-prev-link, #photo-next-link { + padding: 10px; +/* float: left;*/ +} + +/*#photo-photo { + float: left; +}*/ + +#photo-photo img { + max-width: 310px; +} + +#photo-photo-end { + clear: both; +} + +.profile-match-photo { + float: left; + text-align: center; + width: 120px; +} + +.profile-match-name { + float: left; + text-align: center; + width: 120px; + overflow: hidden; +} + +.profile-match-break, +.profile-match-end { + clear: both; +} + +.profile-match-connect { + text-align: center; + font-weight: bold; +} + +.profile-match-wrapper { + float: left; + padding: 10px; + width: 120px; + height: 120px; + scroll: auto; +} +#profile-match-wrapper-end { + clear: both; +} +.side-link { + margin-bottom: 15px; +} + +#language-selector { + position: absolute; + top: 0px; + left: 16px; +} + +#group-members { + margin-top: 20px; + padding: 10px; + height: 250px; + overflow: auto; + border: 1px solid #ddd; +} + +#group-members-end { + clear: both; +} + +#group-separator { + margin-top: 10px; + margin-bottom: 10px; +} + +#group-all-contacts { + padding: 10px; + height: 450px; + overflow: auto; + border: 1px solid #ddd; +} + +#group-all-contacts-end { + clear: both; + margin-bottom: 10px; +} + +#group-edit-desc { + margin-top: 15px; +} + + +#prof-members { + margin-top: 20px; + padding: 10px; + height: 250px; + overflow: auto; + border: 1px solid #ddd; +} + +#prof-members-end { + clear: both; +} + +#prof-separator { + margin-top: 10px; + margin-bottom: 10px; +} + +#prof-all-contacts { + padding: 10px; + height: 450px; + overflow: auto; + border: 1px solid #ddd; +} + +#prof-all-contacts-end { + clear: both; + margin-bottom: 10px; +} + +#prof-edit-desc { + margin-top: 15px; +} + +#crepair-name-label, +#crepair-nick-label, +#crepair-attag-label, +#crepair-url-label, +#crepair-request-label, +#crepair-confirm-label, +#crepair-notify-label, +#crepair-photo-label, +#crepair-poll-label { + float: left; + width: 200px; + margin-bottom: 15px; +} + +#crepair-name, +#crepair-nick, +#crepair-attag, +#crepair-url, +#crepair-request, +#crepair-confirm, +#crepair-notify, +#crepair-photo, +#crepair-poll { + float: left; + width: 300px; +} + + +#netsearch-box { + margin-top: 20px; +} + +#netsearch-box #search-submit { + margin: 5px 0px 0px 0px; +} + +.required { + color: #FF0000; +} + +#event-start-text, #event-finish-text { + margin-top: 10px; + margin-bottom: 5px; +} + +#event-nofinish-checkbox, #event-nofinish-text, #event-adjust-checkbox, #event-adjust-text { + float: left; +} +#event-datetime-break { + margin-bottom: 10px; +} + +#event-nofinish-break, #event-adjust-break { + clear: both; +} + +#event-desc-text, #event-location-text { + margin-top: 10px; + margin-bottom: 5px; +} +#event-submit { + margin-top: 10px; +} + +.body-tag, .filesavetags, .categorytags { + opacity: 0.5; + filter:alpha(opacity=50); +} + +.body-tag:hover, .filesavetags:hover, .categorytags:hover { + opacity: 1.0 !important; + filter:alpha(opacity=100) !important; +} + +.item-select { + display: none; + opacity: 0.1; + filter:alpha(opacity=10); + float: right; + margin-right: 10px; + +} +.item-select:hover, .checkeditem { + opacity: 1; + filter:alpha(opacity=100); +} + + +#item-delete-selected { + margin-top: 30px; +} + +#item-delete-selected-end { + clear: both; +} +#item-delete-selected-icon, #item-delete-selected-desc { + float: left; + margin-right: 5px; +} +#item-delete-selected-desc:hover { + text-decoration: underline; +} + +#lang-select-icon { + cursor: pointer; + position: fixed; + left: 0px; + top: 0px; + opacity: 0.2; + filter:alpha(opacity=20); +} + +#lang-select-icon:hover { + opacity: 1; + filter:alpha(opacity=100); +} + +.notif-image { + height: 80px; + width: 80px; + margin-right: 15px; +} +.notification-listing-end { + clear: both; + margin-bottom: 15px; +} + + + +/** + * Plugins settings + */ + +.settings-block > h3, +.settings-heading { + border-bottom: 1px solid #babdb6; +} + + +/** + * Form fields + */ +.field { + margin-bottom: 10px; + padding-bottom: 10px; + overflow: auto; + width: 100% +} + +.field label { + font-weight: 700; + float: left; + width: 200px; +} + +.field input, +.field textarea { + width: 270px; + margin-left: 20px; +} +.field textarea { height: 100px; } +.field_help { + display: block; + margin-left: 20px; + color: #666666; + +} + + +.field .onoff { + float: left; + width: 80px; +} +.field .onoff a { + display: block; + border:1px solid #666666; + background-image:url("../../../images/onoff.jpg"); + background-repeat: no-repeat; + padding: 4px 2px 2px 2px; + height: 16px; + text-decoration: none; +} +.field .onoff .off { + border-color:#666666; + padding-left: 40px; + background-position: left center; + background-color: #cccccc; + color: #666666; + text-align: right; +} +.field .onoff .on { + border-color:#204A87; + padding-right: 40px; + background-position: right center; + background-color: #D7E3F1; + color: #204A87; + text-align: left; +} +.hidden { display: none!important; } + +.field.radio .field_help { clear: left; margin-left: 20px; } + +/** + * ADMIN + */ +#pending-update { + float:right; + color: #ffffff; + font-weight: bold; + background-color: #FF0000; + padding: 0em 0.3em; + +} +#adminpage dl { + clear: left; + min-height: 40px; + margin-bottom: 2px; + padding-bottom: 2px; + border-bottom: 1px solid black; +} +#adminpage dt { + width: 180px; + float: left; + font-weight: bold; +} +#adminpage dd { + margin-left: 180px; +} + +#adminpage h3 { + border-bottom: 1px solid #cccccc; +} +#adminpage .field label { + font-weight: bold; +} +#adminpage .submit { + clear:left; + text-align: right; +} + +#adminpage #pluginslist { + margin: 0px; padding: 0px; +} +#adminpage .plugin { + list-style: none; + display: block; + border: 1px solid #888888; + padding: 1em; + margin-bottom: 5px; + clear: left; +} +#adminpage .plugin .desc { margin-left: 2.5em;} +#adminpage .toggleplugin { + float:left; + margin-right: 1em; +} + +#adminpage table {width:100%; border-bottom: 1px solid #000000; margin: 5px 0px;} +#adminpage table th { text-align: left;} +#adminpage td .icon { float: left;} +#adminpage table#users img { width: 16px; height: 16px; } +#adminpage table tr:hover { background-color: #bbc7d7; } +#adminpage .selectall { text-align: right; } + +#cnftheme { + display: none; +} + +/* + * UPDATE + */ +.popup { + width: 100%; height: 100%; + top:0px; left:0px; + position: absolute; + display: none; +} + +.popup .background { + background-color: rgba(0,0,0,128); + opacity: 0.5; + width: 100%; height: 100%; + position: absolute; + top:0px; left:0px; +} +.popup .panel { + top:25%;left:25%;width:50%;height:50%; + padding: 1em; + position: absolute; + border: 4px solid #000000; + background-color: #FFFFFF; +} +.popup .panel .panel_text { display: block; overflow: auto; height: 80%; } +.popup .panel .panel_in { width: 100%; height: 100%; position: relative; } +.popup .panel .panel_actions { width: 100%; bottom: 4px; left: 0px; position: absolute; } +.panel_text .progress { width: 50%; overflow: hidden; height: auto; border: 1px solid #cccccc; margin-bottom: 5px} +.panel_text .progress span {float: right; display: block; width: 25%; background-color: #eeeeee; text-align: right;} + +/** + * OAuth + */ +.oauthapp { + height: auto; overflow: auto; + border-bottom: 2px solid #cccccc; + padding-bottom: 1em; + margin-bottom: 1em; +} +.oauthapp img { + float: left; + width: 48px; height: 48px; + margin: 10px; +} +.oauthapp img.noicon { + background-image: url("../../../images/icons/48/plugin.png"); + background-position: center center; + background-repeat: no-repeat; +} +.oauthapp a { + float: left; +} + +/** + * ICONS + */ +.iconspacer { + display: block; width: 16px; height: 16px; +} + +.icon { + display: block; width: 16px; height: 16px; + background-image: url('../../../images/icons.png'); +} +.article { background-position: 0px 0px;} +.audio { display: none; background-position: -16px 0px;} +.block { background-position: -32px 0px;} +/*.drop { background-position: -48px 0px;} +.drophide { background-position: -64px 0px;}*/ +.icon.drop { + display: block; width: 28px; height: 28px; + background-size: 100% 100%; + background-image: url('images/drop-darkred.png'); + background-repeat: no-repeat; +} +.icon.drophide { + display: block; width: 28px; height: 28px; + background-size: 100% 100%; + background-image: url('images/drop-darkred.png'); + background-repeat: no-repeat; +} +.edit { background-position: -80px 0px;} +/*.camera { background-position: -96px 0px;}*/ +.icon.camera { + display: block; width: 28px; height: 21px; + margin-top: 4px; + background-size: 100% 100%; + background-image: url('images/camera.png'); + background-repeat: no-repeat; +} +/*.dislike { background-position: -112px 0px;}*/ +.icon.dislike { + display: block; + width: 26px; height: 28px;/*31 33*/ + background-size: 100% 100%; + background-image: url('images/disapprove.png'); + background-repeat: no-repeat; + opacity: 0.5; +} +/*.like { background-position: -128px 0px;}*/ +.icon.like { + display: block; width: 26px; height: 28px;/*31 33*/ + margin-right: 7px; + background-size: 100% 100%; + background-image: url('images/approve.png'); + background-repeat: no-repeat; + opacity: 0.5; +} +.link { display: none; background-position: -144px 0px;} + +/*.globe { background-position: 0px -16px;}*/ +.icon.globe { + display: block; width: 28px; height: 28px; + background-size: 100% 100%; + background-image: url('images/globe.png'); + background-repeat: no-repeat; +} +.noglobe { background-position: -16px -16px;} +.no { background-position: -32px -16px;} +.pause { background-position: -48px -16px;} +.play { background-position: -64px -16px;} +/*.pencil { background-position: -80px -16px;} +.small-pencil { background-position: -96px -16px;}*/ +.icon.pencil { + display: block; width: 28px; height: 28px; + background-size: 100% 100%; + background-image: url('images/pencil.png'); + background-repeat: no-repeat; + opacity: 0.5; +} +.icon.small-pencil { + display: block; width: 28px; height: 28px; + background-size: 100% 100%; + background-image: url('images/pencil.png'); + background-repeat: no-repeat; + opacity: 0.5; +} +/*.recycle { background-position: -112px -16px;}*/ +.icon.recycle { + display: block; + width: 28px; height: 27px;/*33 32*/ + background-size: 100% 100%; + background-image: url('images/recycle.png'); + background-repeat: no-repeat; + opacity: 0.5; +} +/*.remote-link { background-position: -128px -16px;}*/ +.icon.remote-link { +/* display: block;*/ + display: none; + width: 28px; height: 28px; + background-size: 100% 100%; + background-image: url('images/remote-link.png'); + background-repeat: no-repeat; + opacity: 0.5; +} +.share { background-position: -144px -16px;} + +.tools { background-position: 0px -32px;} +/*.lock { background-position: -16px -32px;}*/ +.icon.lock { + display: block; width: 17px; height: 25px; + margin-top: 1px; + background-size: 100% 100%; + background-image: url('images/lock.png'); + background-repeat: no-repeat; +} +/*.unlock { background-position: -32px -32px;}*/ +.icon.unlock { + display: block; width: 17px; height: 28px; + margin-top: -2px; + background-size: 100% 100%; + background-image: url('images/unlock.png'); + background-repeat: no-repeat; +} +.video { display: none; background-position: -48px -32px;} +.youtube { background-position: -64px -32px;} +/*.attach { background-position: -80px -32px; }*/ +.icon.attach { + display: block; width: 28px; height: 28px; + background-size: 100% 100%; + background-image: url('images/paperclip.png'); + background-repeat: no-repeat; +} +.language { background-position: -96px -32px; } +.prev { background-position: -112px -32px; } +.next { background-position: -128px -32px; } +.on { background-position: -144px -32px; } + +.off { background-position: 0px -48px; } +/*.starred { background-position: -16px -48px; }*/ +.icon.starred { + display: block; width: 28px; height: 28px; + background-size: 100% 100%; + background-image: url('images/star-yellow.png'); + background-repeat: no-repeat; +} +/*.unstarred { background-position: -32px -48px; }*/ +.icon.unstarred { + display: block; width: 28px; height: 28px; + background-size: 100% 100%; + background-image: url('images/star.png'); + background-repeat: no-repeat; + opacity: 0.5; +} +/*.tagged { background-position: -48px -48px; }*/ +.icon.tagged { + display: block; width: 28px; height: 28px; + background-size: 100% 100%; + background-image: url('images/tag.png'); + background-repeat: no-repeat; + opacity: 0.5; +} +.yellow { background-position: -64px -48px; } + + +.filer-icon { + display: block; width: 24px; height: 24px; + background-size: 100% 100%; + background-image: url('images/folder.png'); + background-repeat: no-repeat; + opacity: 0.5; +} + +.icon.dim { opacity: 0.3;filter:alpha(opacity=30); } + +[class^="comment-edit-bb"] { + list-style: none; + display: none; + margin: 0px 0 -5px 20px; + width: 75%; +} +[class^="comment-edit-bb"] > li { + display: inline-block; + margin: 20px 10px 0 0; + visibility: none; +} +[class^="comment-edit-bb-end"] { + clear: both; +} +.editicon { + display: inline-block; + background-size: 100% 100%; + background-repeat: no-repeat; + background-color: #f3f3f3; + text-decoration: none; +} +/*.editicon:hover { + background-color: #ccc; +}*/ +.boldbb { +/* background-position: 0px 0px;*/ + width: 26px; height: 28px; + background-image: url('images/boldB-serif.png'); +} +/*.boldbb:hover { + background-position: 0px -16px; +}*/ +.italicbb { +/* background-position: -16px 0px;*/ + width: 16px; height: 28px; + background-image: url('images/italicI-serif.png'); +} +/*.italicbb:hover { + background-position: -16px -16px; +}*/ +.underlinebb { +/* background-position: -32px 0px;*/ + width: 25px; height: 28px; + background-image: url('images/underlineU-serif.png'); +} +/*.underlinebb:hover { + background-position: -32px -16px; +}*/ +.quotebb { +/* background-position: -48px 0px;*/ + width: 28px; height: 28px; + background-image: url('images/quote.png'); +} +/*.quotebb:hover { + background-position: -48px -16px; +}*/ +.codebb { +/* background-position: -64px 0px;*/ + width: 28px; height: 28px; + background-image: url('images/code.png'); +} +/*.codebb:hover { + background-position: -64px -16px; +}*/ +.imagebb { + background-position: -80px 0px; +} +.imagebb:hover { + background-position: -80px -16px; +} +.urlbb { + background-position: -96px 0px; +} +.urlbb:hover { + background-position: -96px -16px; +} +.videobb { + background-position: -112px 0px; +} +.videobb:hover { + background-position: -112px -16px; +} + +.attachtype { + display: block; width: 20px; height: 23px; + float: left; + background-image: url('../../../images/content-types.png'); +} + +.body-attach { + margin-top: 10px; +} + +.type-video { background-position: 0px 0px; } +.type-image { background-position: -20px 0px; } +.type-audio { background-position: -40px 0px; } +.type-text { background-position: -60px 0px; } +.type-unkn { background-position: -80px 0px; } + + +/* autocomplete popup */ +.acpopup { + max-height:150px; + background-color:#ffffff; + overflow:auto; + z-index:100000; + border:1px solid #cccccc; +} +.acpopupitem { + background-color:#ffffff; padding: 4px; + clear:left; +} +.acpopupitem img { + float: left; + margin-right: 4px; +} + +.acpopupitem.selected { + color: #FFFFFF; background: #3465A4; +} + +/* popup notifications */ +div.jGrowl div.notice { + background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center; + color: #ffffff; + padding-left: 58px; +} +div.jGrowl div.info { + background: #364e59 url("../../../images/icons/48/info.png") no-repeat 5px center; + color: #ffffff; + padding-left: 58px; +} +#jGrowl.top-right { + top: 15px; + right: 15px; +} +.qcomment { + border: 1px solid #EEE; + padding: 3px; + margin-top: 15px; + margin-left: 25px; + width: 125px; + overflow-y: auto; +} + + +.qcomment option { + width: 125px; + overflow-x: hidden; +} + +.qcomment { + opacity: 0.3; + filter:alpha(opacity=30); +} +.qcomment:hover { + opacity: 1.0; + filter:alpha(opacity=100); +} + +/* notifications popup menu */ +.nav-notify { + display: none; + position: absolute; + font-size: 10px; + padding: 1px 3px; + top: 0px; + right: -10px; + min-width: 15px; + text-align: right; +} +.nav-notify.show { + display: block; +} +ul.notifications-menu-popup { + position: absolute; + display: none; + width: 10em; + margin: 0px; + padding: 0px; + list-style: none; + z-index: 100000; + right: -55px; +} +#nav-notifications-menu { + width: 300px; +/* max-height: 400px;*/ + height: auto; + overflow-y: scroll;overflow-style:scrollbar; + background-color:#FFFFFF; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius:5px; + border: 1px solid #AAA; + -moz-box-shadow: 3px 3px 5px #555; + -webkit-box-shadow: 3px 3px 5px #555; + box-shadow: 3px 3px 5px #555; +} +#nav-notifications-menu .contactname { font-weight: bold; font-size: 0.9em; } +#nav-notifications-menu img { float: left; margin-right: 5px; } +#nav-notifications-menu .notif-when { font-size: 0.8em; display: block; } +#nav-notifications-menu li { + padding: 7px 0px 7px 10px; + word-wrap:normal; + border-bottom: 1px solid #000; +} + +#nav-notifications-menu li:hover { + +} + +#nav-notifications-menu a:hover { + text-decoration: underline; +} + +.notif-item a { + color: #000000; +} + +.notif-item a:hover { + text-decoration: underline; +} + +.notif-image { + width: 32px; + height: 32px; + padding: 7px 7px 0px 0px; +} + +.notify-seen { + background: #DDDDDD; +} + +#id_term_label { + width:75px; +} +#id_term { + width:100px; +} + +#recip { + +} +.autocomplete-w1 { background: #ffffff; no-repeat bottom right; position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; } +.autocomplete { color:#000; border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; } +.autocomplete .selected { background:#F0F0F0; } +.autocomplete div { padding:2px 5px; white-space:nowrap; overflow:hidden; } + +#datebrowse-sidebar select { + margin-left: 40px; + width: 130px; +} diff --git a/view/theme/frost-mobile/theme.php b/view/theme/frost-mobile/theme.php new file mode 100644 index 000000000..581c3513a --- /dev/null +++ b/view/theme/frost-mobile/theme.php @@ -0,0 +1,23 @@ + + * Maintainer: Zach P + */ + +$a->theme_info = array(); + +function frost_mobile_init(&$a) { + + // I could do this in style.php, but by having the CSS in a file the browser will cache it, + // making pages load faster + if( $a->module === 'home' || $a->module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) { + $a->page['htmlhead'] = str_replace('$stylesheet', $a->get_baseurl() . '/view/theme/frost-mobile/login-style.css', $a->page['htmlhead']); + + } + +} diff --git a/view/theme/frost-mobile/wall_item.tpl b/view/theme/frost-mobile/wall_item.tpl new file mode 100644 index 000000000..65e2812f9 --- /dev/null +++ b/view/theme/frost-mobile/wall_item.tpl @@ -0,0 +1,82 @@ + +
    +
    +
    + +
    + + $item.name + + +
    +
    +
    + {{ if $item.lock }}
    $item.lock
    + {{ else }}
    {{ endif }} +
    $item.location
    +
    +
    +
    + $item.name +
    $item.ago
    + +
    +
    + +
    +
    $item.title
    +
    +
    $item.body +
    + {{ for $item.tags as $tag }} + $tag + {{ endfor }} +
    +
    +
    +
    + {{ if $item.vote }} + + {{ endif }} + {{ if $item.plink }} + + {{ endif }} + {{ if $item.edpost }} + + {{ endif }} + + {{ if $item.star }} + + + {{ endif }} + {{ if $item.filer }} + + {{ endif }} +
    + {{ if $item.drop.dropping }}{{ endif }} +
    + {{ if $item.drop.dropping }}{{ endif }} +
    +
    +
    +
    + +
    $item.dislike
    +
    + $item.comment +
    + +
    +
    diff --git a/view/theme/frost-mobile/wallmsg-header.tpl b/view/theme/frost-mobile/wallmsg-header.tpl new file mode 100644 index 000000000..4f184d3be --- /dev/null +++ b/view/theme/frost-mobile/wallmsg-header.tpl @@ -0,0 +1,82 @@ + From c8f484e4a51c99818fceb49f22e793b37a846826 Mon Sep 17 00:00:00 2001 From: Domovoy Date: Tue, 24 Jul 2012 17:22:56 +0200 Subject: [PATCH 095/658] Rplace spaces with undercores in tags --- include/diaspora.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index af9a91f02..a3473a8b7 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -2120,6 +2120,11 @@ function diaspora_unshare($me,$contact) { } +function diaspora_replace_tags_callback($matches) { + $result = '#'. str_replace(' ', '_', $matches[2]); + return $result; +} + function diaspora_send_status($item,$owner,$contact,$public_batch = false) { @@ -2154,8 +2159,12 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) { } } */ - // Removal of tags - $body = preg_replace('/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', '#$2', $body); + /** + * Transform #tags, strip off the [url] and replace spaces with underscore + */ + $body = preg_replace_callback('/#\[url\=(\w+.*?)\](\w+.*?)\[\/url\]/i', function($match) { + return '#'. str_replace(' ', '_', $match[2]); + }, $body); //if(strlen($title)) // $body = "[b]".html_entity_decode($title)."[/b]\n\n".$body; From 178329b6dcabe9a28ce89e3d175b5691f7ac2fff Mon Sep 17 00:00:00 2001 From: Zach Prezkuta Date: Tue, 24 Jul 2012 09:26:12 -0600 Subject: [PATCH 096/658] disable tos and privacy links --- view/theme/frost-mobile/login.tpl | 4 ++-- view/theme/frost-mobile/register.tpl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/view/theme/frost-mobile/login.tpl b/view/theme/frost-mobile/login.tpl index 39bb57836..c611989df 100644 --- a/view/theme/frost-mobile/login.tpl +++ b/view/theme/frost-mobile/login.tpl @@ -16,9 +16,9 @@
    diff --git a/view/theme/quattro/dark/style.css b/view/theme/quattro/dark/style.css index 5ff059160..17e51cf17 100644 --- a/view/theme/quattro/dark/style.css +++ b/view/theme/quattro/dark/style.css @@ -2009,25 +2009,23 @@ footer { opacity: 0.3; filter: alpha(opacity=30); } -[class^="comment-edit-bb"] { +.comment-edit-bb { list-style: none; display: none; - margin: 0px 0 0px 60px; + margin: 0px; + padding: 0px; width: 75%; } -[class^="comment-edit-bb"] > li { +.comment-edit-bb > li { display: inline-block; margin: 10px 10px 0 0; visibility: none; } -[class^="comment-edit-bb-end"] { - clear: both; -} .editicon { display: inline-block; width: 16px; height: 16px; - background-image: url(bbedit.png); + background-image: url(icons/bbedit.png); text-decoration: none; } .editicon :hover { diff --git a/view/theme/quattro/green/style.css b/view/theme/quattro/green/style.css index 3cc4e8cf6..da9cdd794 100644 --- a/view/theme/quattro/green/style.css +++ b/view/theme/quattro/green/style.css @@ -2009,25 +2009,23 @@ footer { opacity: 0.3; filter: alpha(opacity=30); } -[class^="comment-edit-bb"] { +.comment-edit-bb { list-style: none; display: none; - margin: 0px 0 0px 60px; + margin: 0px; + padding: 0px; width: 75%; } -[class^="comment-edit-bb"] > li { +.comment-edit-bb > li { display: inline-block; margin: 10px 10px 0 0; visibility: none; } -[class^="comment-edit-bb-end"] { - clear: both; -} .editicon { display: inline-block; width: 16px; height: 16px; - background-image: url(bbedit.png); + background-image: url(icons/bbedit.png); text-decoration: none; } .editicon :hover { diff --git a/view/theme/quattro/icons/bbedit.png b/view/theme/quattro/icons/bbedit.png new file mode 100644 index 0000000000000000000000000000000000000000..b89f2f7a830b573d37ea591e715d5e9507574642 GIT binary patch literal 2145 zcmV-n2%h(eP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2iyc3 z0t*R39JQ+e00-eoL_t(|+U=TqP*m3)$3HjhF6#pBf;@t(B1tOXiyC!?WLkAPW8!O~ zX{V!Rn09TZm_7&tlP2wCrrO%aXd)JvNx-q=^ksZ>s!p0ntVw)}MywDV6f6t4LfBPy zSpgSz_4bdwyIIHryOB7!Ip2TIIrpCPyZ4^^J-_oi=X@mu#vI2^oRDL6IH68}*UdTf!OpD&;J^fIw=dH`bd1`GxR)=n#$Xbk`ko0ZP?HkL15 z%#Iy9#-#5hNs?t*7XL8_q2&?k*@2IMSAdolK`v7pe2XNS|^f>MG_T0uWDTxBp57@9_ z!+jHR`LoOA!$%HdGMTt|;UZ7Ye{$Hmxw(s2xO5fS>G9InfzSZ)KvzKC2_yn0U<*(W z%ntJzzXbjWlmjn^P(KFfQSw@#U&((PI057W=SG`}m9{QmLXdJe*a@5j{xVXi(eUs0 zY0*RxrBabP*~p~SG{1Lt*sOGS*>HP2s8uS`GiL(u^Sm`YziQQekxP;!dD%0|c(3X` zYHJ(F$;lqJZf$J?rKNB1)7Q4JAS+plMDMN&;)#85D5(`FQwTlf%Qz7wJrrX7-hh06 zK>n1Ho)5u>9Y_V*hbad`Jg^&B1RMv}DSfaQ*sRn^16~Jy66g$KlO9E$JqN9&mD}A8 ztTro2aWO>Qb93!-19v@cwAu-1wOXR0q8R8Oz;5ec_ny4~?A^OJ=2Z*6%ENs{D9^w6phJa~#SP4@%EVcJgso>n~l ziTiw4IfT&2hcm$UfYZa2gW>nUQeZ8x2ly@U2Ji^bs?@QJ^iWrC4>55Q$(}P8dK|b0 z+{DC9WZ+I8n&@aAQK@-)_Dt$pEVz1m_}}&Gl$Djqot>Q&6ch}yRbF0BSy`D3Fw*_P z!a^!4b}?gG0w$A*AHDcP09LHayl|1a`nszXq@;x6Vy~~r$jBfiC54of zl);OUef#L_?8Iy~1NhstS#EN*;VKmsyQr={?yrBv5k+%z^B@}*cLx9`PyIJy7lo=( zytAZ)87079m1%ox81`2x>AMg3yN)X9@nOor;A7D3fbwGC z_NFViUEal@R-TFOO=c|vhVqG3-lhY#7LrWug=D>SNN-S*+ z`0=3(78@`TNCs|&@m?+<8ZZFe%C%JBnzCpN1t)-oBb0}tU3rFHdFBmZK#8fZ57$4H zm6h`5ZQF>6jq@_z<3XR0gj%EVlN!L%)`HvPA=Q|UTC1a@rHRBx)3{}BqOq}&>C>lw z?ny1dBO9a9=+FDwG&ME(|I_;Q>*bP?QhNHllc8~P0+#kJjFS_*1FyH91#xo*|Lh1~ z6b^?0-})yE+uu?Mc{)ro`#kA0N?iLZKnJ`D90PSTJ9YxFr|K+gmpU}>v{VrCl%kwV`^=cO@f3ajx9kn5eDd`y;IeVEUxicb`&_j0*oId9O zG%B95Bm|opW$Vpndn53j5IkfcZUHYn;J)Zqb~(Zd(Nc}+0Q>`(k~EK+#els7XLG&( z5XE=YU0GQvce`BZS1cKNs3L{?++fJfUBpyl;)r!jCX;u;YDi>3R&vB0u#DFak{_0L zuB@z-x9mPh{0o~|y>uSeZE*5;CO$j!K99}Fq2}1p2ll=Vt#?78jIw>B# z@d-g_f#BF$S}N~7@Gka@1;o0X+-tc+_Ox{Nzq9*+_isb1UGBLv`VMI%l35UX3~}Jl zA^D?|-gBE--*|jXbQ%JJ(BlF^4=o5C5fFN4LFkBq&_j li { +.comment-edit-bb > li { display: inline-block; margin: 10px 10px 0 0; visibility: none; } -[class^="comment-edit-bb-end"] { - clear: both; -} + .editicon { display: inline-block; width: 16px; height: 16px; - background-image: url(bbedit.png); + background-image: url(icons/bbedit.png); text-decoration: none; :hover {background-color: #ccc;} } diff --git a/view/theme/quattro/wall_thread.tpl b/view/theme/quattro/wall_thread.tpl index 4d454f00d..fe136b2b2 100644 --- a/view/theme/quattro/wall_thread.tpl +++ b/view/theme/quattro/wall_thread.tpl @@ -2,7 +2,11 @@ {{ else }} {{if $item.comment_firstcollapsed}}
    - $item.num_comments $item.hide_text + $item.num_comments + $item.hide_text
    - {{ if $item.threaded }}{{ if $item.comment }} + {{ if $item.threaded }}{{ if $item.comment }}{{ if $item.indent==comment }}
    - $item.comment + $item.comment
    - {{ endif }}{{ endif }} + {{ endif }}{{ endif }}{{ endif }}
    @@ -124,8 +124,10 @@ {{if $item.comment_lastcollapsed}}
    {{endif}} {{ endif }} -{{ if $item.flatten }} -
    - $item.comment -
    +{{ if $item.indent!=comment}} +
    $item.comment
    +{{ endif }} + +{{ if $item.flatten }} +
    $item.comment
    {{ endif }} diff --git a/view/theme/quattro/wallwall_thread.tpl b/view/theme/quattro/wallwall_thread.tpl index cc2f8e362..ceb74517e 100644 --- a/view/theme/quattro/wallwall_thread.tpl +++ b/view/theme/quattro/wallwall_thread.tpl @@ -101,14 +101,14 @@
    $item.dislike
    - {{ if $item.threaded }}{{ if $item.comment }} + {{ if $item.threaded }}{{ if $item.comment }}{{ if $item.indent==comment }}
    $item.comment
    - {{ endif }}{{ endif }} + {{ endif }}{{ endif }}{{ endif }}
    @@ -127,8 +127,10 @@ {{if $item.comment_lastcollapsed}}{{endif}} {{ endif }} -{{ if $item.flatten }} -
    - $item.comment -
    +{{ if $item.indent!=comment}} +
    $item.comment
    +{{ endif }} + +{{ if $item.flatten }} +
    $item.comment
    {{ endif }} From dbbf5b86a2ebfe862d4d833be41997d8b596f260 Mon Sep 17 00:00:00 2001 From: Fabrixxm Date: Fri, 10 Aug 2012 04:55:51 -0400 Subject: [PATCH 191/658] template processor: trim strings in {{ if str!=str }}, add 'debug' tag: {{ debug $var [$var1 [$var2 [...]]] }}{{ enddebug }} is replaced by
    var_export($var1)\nvar_export($var2)\n....
    --- include/template_processor.php | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/include/template_processor.php b/include/template_processor.php index 46252c355..4088ddab6 100644 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -63,7 +63,7 @@ if ($b[0]=="$") $b = $this->_get_var($b); $val = ($a == $b); } else if (strpos($args[2],"!=")>0){ - list($a,$b) = explode("!=",$args[2]); + list($a,$b) = array_map("trim", explode("!=",$args[2])); $a = $this->_get_var($a); if ($b[0]=="$") $b = $this->_get_var($b); $val = ($a != $b); @@ -133,6 +133,26 @@ return $ret; } + + /** + * DEBUG node + * + * {{ debug $var [$var [$var [...]]] }}{{ enddebug }} + * + * replace node with
    var_dump($var, $var, ...);
    + */ + private function _replcb_debug($args){ + $vars = array_map('trim', explode(" ",$args[2])); + $vars[] = $args[1]; + + $ret = "
    ";
    +			foreach ($vars as $var){
    +				$ret .= htmlspecialchars(var_export( $this->_get_var($var), true ));
    +				$ret .= "\n";
    +			}
    +			$ret .= "
    "; + return $ret; + } private function _replcb_node($m) { $node = $this->nodes[$m[1]]; From fc07f50fd8d2972009bebb3c974cbcbee321c642 Mon Sep 17 00:00:00 2001 From: Fabrixxm Date: Fri, 10 Aug 2012 05:42:36 -0400 Subject: [PATCH 192/658] conversation: add 'thread_level' to $item array --- include/conversation.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/conversation.php b/include/conversation.php index 3c4ff2908..68aa1fa33 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -588,6 +588,7 @@ function prepare_threads_body($a, $items, $cmnt_tpl, $page_writeable, $mode, $pr 'comment' => $comment, 'previewing' => $previewing, 'wait' => t('Please wait'), + 'thread_level' => $thread_level, ); $arr = array('item' => $item, 'output' => $tmp_item); @@ -818,6 +819,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl($ssl_state) . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))), 'previewing' => $previewing, 'wait' => t('Please wait'), + 'thread_level' => 1, ); $arr = array('item' => $item, 'output' => $tmp_item); From ec3d8a80cda6124bd8c68e6721f3fb5d280d4e0c Mon Sep 17 00:00:00 2001 From: Fabrixxm Date: Fri, 10 Aug 2012 06:27:01 -0400 Subject: [PATCH 193/658] quattro: fix collapsed thread, fix comment box, style previev comment, add 'expand / collapse" thread --- view/theme/quattro/dark/style.css | 54 +++++++++++++++++++++----- view/theme/quattro/green/style.css | 54 +++++++++++++++++++++----- view/theme/quattro/quattro.less | 39 +++++++++++++++---- view/theme/quattro/theme.php | 10 +++++ view/theme/quattro/wall_item_tag.tpl | 4 ++ view/theme/quattro/wall_thread.tpl | 33 ++++++++++------ view/theme/quattro/wallwall_thread.tpl | 37 ++++++++++++------ 7 files changed, 181 insertions(+), 50 deletions(-) diff --git a/view/theme/quattro/dark/style.css b/view/theme/quattro/dark/style.css index 17e51cf17..9561fe728 100644 --- a/view/theme/quattro/dark/style.css +++ b/view/theme/quattro/dark/style.css @@ -1075,6 +1075,7 @@ section { width: 710px; border: 1px solid #2d2d2d; margin-top: 10px; + background-color: #fce94f; } .comment-edit-preview .contact-photo { width: 32px; @@ -1091,12 +1092,17 @@ section { padding-left: 12px; } .comment-edit-preview .wall-item-container { - width: 700px; + width: 90%; } .comment-edit-preview .tread-wrapper { - width: 700px; + width: 90%; padding: 0; margin: 10px 0; + background-color: #fce94f; + border-bottom: 0px; +} +.comment-edit-preview .wall-item-conv { + display: none; } .shiny { border-right: 10px solid #fce94f; @@ -1143,36 +1149,64 @@ section { height: 25px; } /* threaded comments */ +.children { + margin-top: 1em; +} +.children .hide-comments-outer { + margin-left: 60px; +} +.children .comment-edit-preview { + width: 660px; +} +.children .comment-edit-preview .wall-item-container { + width: 610px; +} .children .children { margin-left: 40px; } .children .children .wall-item-container { width: 710px; } -.children .children .children { - margin-left: 40px; +.children .children .comment-edit-preview { + width: 620px; +} +.children .children .comment-edit-preview .wall-item-container { + width: 620px; } .children .children .children .wall-item-container { width: 670px; } -.children .children .children .children { - margin-left: 40px; +.children .children .children .comment-edit-preview { + width: 580px; +} +.children .children .children .comment-edit-preview .wall-item-container { + width: 580px; } .children .children .children .children .wall-item-container { width: 630px; } -.children .children .children .children .children { - margin-left: 40px; +.children .children .children .children .comment-edit-preview { + width: 540px; +} +.children .children .children .children .comment-edit-preview .wall-item-container { + width: 540px; } .children .children .children .children .children .wall-item-container { width: 590px; } +.children .children .children .children .children .comment-edit-preview { + width: 500px; +} +.children .children .children .children .children .comment-edit-preview .wall-item-container { + width: 500px; +} .children .children .children .children .children .children { margin-left: 0px; } -.threaded .hide-comments-outer { - margin-left: 20px; +.children .children .children .children .children .children .hide-comments-outer { + margin-left: 0px; } +/*.threaded .hide-comments-outer { margin-left: 20px; }*/ span[id^="showmore-teaser"] { background: url("showmore-bg.jpg") no-repeat center bottom; } diff --git a/view/theme/quattro/green/style.css b/view/theme/quattro/green/style.css index da9cdd794..29d551271 100644 --- a/view/theme/quattro/green/style.css +++ b/view/theme/quattro/green/style.css @@ -1075,6 +1075,7 @@ section { width: 710px; border: 1px solid #2d2d2d; margin-top: 10px; + background-color: #ddffdd; } .comment-edit-preview .contact-photo { width: 32px; @@ -1091,12 +1092,17 @@ section { padding-left: 12px; } .comment-edit-preview .wall-item-container { - width: 700px; + width: 90%; } .comment-edit-preview .tread-wrapper { - width: 700px; + width: 90%; padding: 0; margin: 10px 0; + background-color: #ddffdd; + border-bottom: 0px; +} +.comment-edit-preview .wall-item-conv { + display: none; } .shiny { border-right: 10px solid #ddffdd; @@ -1143,36 +1149,64 @@ section { height: 25px; } /* threaded comments */ +.children { + margin-top: 1em; +} +.children .hide-comments-outer { + margin-left: 60px; +} +.children .comment-edit-preview { + width: 660px; +} +.children .comment-edit-preview .wall-item-container { + width: 610px; +} .children .children { margin-left: 40px; } .children .children .wall-item-container { width: 710px; } -.children .children .children { - margin-left: 40px; +.children .children .comment-edit-preview { + width: 620px; +} +.children .children .comment-edit-preview .wall-item-container { + width: 620px; } .children .children .children .wall-item-container { width: 670px; } -.children .children .children .children { - margin-left: 40px; +.children .children .children .comment-edit-preview { + width: 580px; +} +.children .children .children .comment-edit-preview .wall-item-container { + width: 580px; } .children .children .children .children .wall-item-container { width: 630px; } -.children .children .children .children .children { - margin-left: 40px; +.children .children .children .children .comment-edit-preview { + width: 540px; +} +.children .children .children .children .comment-edit-preview .wall-item-container { + width: 540px; } .children .children .children .children .children .wall-item-container { width: 590px; } +.children .children .children .children .children .comment-edit-preview { + width: 500px; +} +.children .children .children .children .children .comment-edit-preview .wall-item-container { + width: 500px; +} .children .children .children .children .children .children { margin-left: 0px; } -.threaded .hide-comments-outer { - margin-left: 20px; +.children .children .children .children .children .children .hide-comments-outer { + margin-left: 0px; } +/*.threaded .hide-comments-outer { margin-left: 20px; }*/ span[id^="showmore-teaser"] { background: url("showmore-bg.jpg") no-repeat center bottom; } diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less index 2a4b1b0d0..d7b82c8bc 100644 --- a/view/theme/quattro/quattro.less +++ b/view/theme/quattro/quattro.less @@ -545,6 +545,7 @@ section { width: 710px; border: 1px solid @Grey5; margin-top: 10px; + background-color: @JotPreviewBackgroundColor; .contact-photo { width: 32px; height: 32px; margin-left: 16px; /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/ @@ -555,8 +556,13 @@ section { } .wall-item-links { padding-left: 12px; } - .wall-item-container { width: 700px; } - .tread-wrapper { width: 700px; padding: 0; margin: 10px 0;} + .wall-item-container { width: 90%; } + .tread-wrapper { + width: 90%; padding: 0; margin: 10px 0; + background-color: @JotPreviewBackgroundColor; + border-bottom: 0px; + } + .wall-item-conv { display: none; } } .shiny { border-right:10px solid @ShinyBorderColor; } @@ -599,32 +605,49 @@ section { /* threaded comments */ .children { - + margin-top: 1em; + .hide-comments-outer { margin-left:60px; } + + .comment-edit-preview { width: 660px; + .wall-item-container { width: 610px; } + } + & .children { + margin-left: 40px; .wall-item-container { width: 710px; } + .comment-edit-preview { width: 620px; + .wall-item-container { width: 620px; } + } & .children { - margin-left: 40px; .wall-item-container { width: 670px; } + .comment-edit-preview { width: 580px; + .wall-item-container { width: 580px; } + } & .children { - margin-left: 40px; .wall-item-container { width: 630px; } + .comment-edit-preview { width: 540px; + .wall-item-container { width: 540px; } + } & .children { - margin-left: 40px; .wall-item-container { width: 590px; } + .comment-edit-preview { width: 500px; + .wall-item-container { width: 500px; } + } .children { margin-left: 0px; - } + .hide-comments-outer { margin-left: 0px; } + } } } } } } -.threaded .hide-comments-outer { margin-left: 20px; } +/*.threaded .hide-comments-outer { margin-left: 20px; }*/ span[id^="showmore-teaser"]{ background: url("showmore-bg.jpg") no-repeat center bottom; diff --git a/view/theme/quattro/theme.php b/view/theme/quattro/theme.php index 51d9d05d5..1c986e4c8 100644 --- a/view/theme/quattro/theme.php +++ b/view/theme/quattro/theme.php @@ -42,6 +42,16 @@ function insertFormatting(comment,BBcode,id) { return true; } +function showThread(id) { + $("#collapsed-comments-" + id).show() + $("#collapsed-comments-" + id + " .collapsed-comments").show() +} +function hideThread(id) { + $("#collapsed-comments-" + id).hide() + $("#collapsed-comments-" + id + " .collapsed-comments").hide() +} + + function cmtBbOpen(id) { $("#comment-edit-bb-" + id).show(); } diff --git a/view/theme/quattro/wall_item_tag.tpl b/view/theme/quattro/wall_item_tag.tpl index d655306e5..e1ef93213 100644 --- a/view/theme/quattro/wall_item_tag.tpl +++ b/view/theme/quattro/wall_item_tag.tpl @@ -1,3 +1,5 @@ +{{ if $item.thread_level!=1 }}
    {{ endif }} +
    @@ -18,6 +20,8 @@
    +{{ if $item.thread_level!=1 }}
    {{ endif }} + {{ if $item.flatten }}
    $item.comment
    {{ endif }} diff --git a/view/theme/quattro/wall_thread.tpl b/view/theme/quattro/wall_thread.tpl index bd165eed7..01738b666 100644 --- a/view/theme/quattro/wall_thread.tpl +++ b/view/theme/quattro/wall_thread.tpl @@ -7,11 +7,19 @@ $item.hide_text + {{ if $item.thread_level==3 }} - + expand / + collapse thread{{ endif }}