From 35128ef2c95d8f76afd3edea594623cc265da673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Mon, 27 Feb 2012 22:01:17 +0000 Subject: Avoid a Notice --- include/event.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/event.php b/include/event.php index 4a9a9a004..29202badd 100755 --- a/include/event.php +++ b/include/event.php @@ -163,7 +163,7 @@ function bbtoevent($s) { if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match)) $ev['adjust'] = $match[1]; $match = ''; - $ev['nofinish'] = (($ev['start'] && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0); + $ev['nofinish'] = (((x($ev, 'start') && $ev['start']) && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0); return $ev; } -- cgit v1.2.3 From e33c2b8f89d0174b6b2bcbd31d8d89c2ee664340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Mon, 27 Feb 2012 22:08:00 +0000 Subject: Avoid a Notice --- include/items.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/items.php b/include/items.php index 7d52571c2..5452dfbda 100755 --- a/include/items.php +++ b/include/items.php @@ -682,7 +682,7 @@ function item_store($arr,$force_parent = false) { unset($arr['dsprsig']); } - if($arr['gravity']) + if(x($arr, 'gravity')) $arr['gravity'] = intval($arr['gravity']); elseif($arr['parent-uri'] === $arr['uri']) $arr['gravity'] = 0; @@ -800,6 +800,8 @@ function item_store($arr,$force_parent = false) { logger('item_store: item parent was not found - ignoring item'); return 0; } + + $parent_deleted = 0; } } -- cgit v1.2.3 From 7c30fca98186538eff731519bdd0c76527237192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Mon, 27 Feb 2012 22:17:57 +0000 Subject: Avoid a Notice --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 54f318e5e..c89dae27c 100755 --- a/boot.php +++ b/boot.php @@ -1335,7 +1335,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){ array( 'label' => t('Profile'), 'url' => $url.'/?tab=profile', - 'sel' => (($tab=='profile')?'active':''), + 'sel' => ((isset($tab) && $tab=='profile')?'active':''), ), array( 'label' => t('Photos'), -- cgit v1.2.3 From e55d13c2b4425183dde64da8ca27c794f4c04900 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Tue, 28 Feb 2012 12:56:16 +0000 Subject: Avoid a notice --- include/items.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/items.php b/include/items.php index 5452dfbda..5268dfc1d 100755 --- a/include/items.php +++ b/include/items.php @@ -742,6 +742,7 @@ function item_store($arr,$force_parent = false) { if($arr['parent-uri'] === $arr['uri']) { $parent_id = 0; + $parent_deleted = 0; $allow_cid = $arr['allow_cid']; $allow_gid = $arr['allow_gid']; $deny_cid = $arr['deny_cid']; -- cgit v1.2.3 From 1204210c69eade767bb19af5a5a18cee4a9db215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Tue, 28 Feb 2012 13:01:58 +0000 Subject: wasn't actually changed before --- include/conversation.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 53369cf20..6f0dc3687 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -976,8 +976,8 @@ function conv_sort($arr,$order) { usort($parents,'sort_thr_commented'); if(count($parents)) - foreach($parents as $x) - $x['children'] = array(); + foreach($parents as $i=>$_x) + $parents[$i]['children'] = array(); foreach($arr as $x) { if($x['id'] != $x['parent']) { -- cgit v1.2.3 From f48556cbc08c0600e256f5964a553c666ee66372 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Tue, 28 Feb 2012 13:40:41 +0000 Subject: contact.network is used later to check if a direct link or a redirect by /redir/contactid should be used --- mod/message.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/message.php b/mod/message.php index 4b494e906..e293d62d9 100755 --- a/mod/message.php +++ b/mod/message.php @@ -176,7 +176,7 @@ function message_content(&$a) { $a->set_pager_total($r[0]['total']); $r = q("SELECT max(`mail`.`created`) AS `mailcreated`, min(`mail`.`seen`) AS `mailseen`, - `mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` + `mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` , `contact`.`network` FROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` WHERE `mail`.`uid` = %d AND `from-url` $eq '%s' GROUP BY `parent-uri` ORDER BY `created` DESC LIMIT %d , %d ", intval(local_user()), -- cgit v1.2.3 From 36a1a43f06dc2a0d55463c83154cce55fa3948ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Tue, 28 Feb 2012 13:42:12 +0000 Subject: Avoid notices --- boot.php | 2 +- mod/dfrn_request.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/boot.php b/boot.php index c89dae27c..e39504e11 100755 --- a/boot.php +++ b/boot.php @@ -1209,7 +1209,7 @@ function current_theme(){ $a = get_app(); $system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : ''); - $theme_name = ((is_array($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme); + $theme_name = ((isset($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme); if($theme_name && file_exists('view/theme/' . $theme_name . '/style.css')) return($theme_name); diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index bc159137d..452fec166 100755 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -43,7 +43,7 @@ function dfrn_request_post(&$a) { return; - if($_POST['cancel']) { + if(x($_POST, 'cancel')) { goaway(z_root()); } -- cgit v1.2.3 From 5bb8ed4b8b5310acc8556ef2fba7b3958284b2a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Tue, 28 Feb 2012 21:56:42 +0000 Subject: Mostly some checks in order to avoid Notices; 1 real bugfix in /mod/network.php --- include/conversation.php | 5 +++-- include/oembed.php | 2 +- include/template_processor.php | 9 +++++++-- mod/network.php | 14 ++++++++------ 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 9f564843e..bd9b11bee 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -373,7 +373,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $comments[$item['parent']] = 1; else $comments[$item['parent']] += 1; - } + } elseif(! x($comments,$item['parent'])) + $comments[$item['parent']] = 0; // avoid notices later on } // map all the like/dislike activities for each parent item @@ -921,7 +922,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { $o .= replace_macros($tpl,array( '$return_path' => $a->cmd, '$action' => $a->get_baseurl().'/item', - '$share' => (($x['button']) ? $x['button'] : t('Share')), + '$share' => (x($x,'button') ? $x['button'] : t('Share')), '$upload' => t('Upload photo'), '$shortupload' => t('upload photo'), '$attach' => t('Attach file'), diff --git a/include/oembed.php b/include/oembed.php index 5c3c595f5..52068efc7 100755 --- a/include/oembed.php +++ b/include/oembed.php @@ -62,7 +62,7 @@ function oembed_fetch_url($embedurl){ function oembed_format_object($j){ $embedurl = $j->embedurl; - $jhtml = oembed_iframe($j->embedurl,$j->width,$j->height ); + $jhtml = oembed_iframe($j->embedurl,(isset($j->width) ? $j->width : null), (isset($j->height) ? $j->height : null) ); $ret=""; switch ($j->type) { case "video": { diff --git a/include/template_processor.php b/include/template_processor.php index 28c3f07dd..7a4cba64e 100755 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -92,8 +92,13 @@ */ private function _replcb_for($args){ $m = array_map('trim', explode(" as ", $args[2])); - list($keyname, $varname) = explode("=>",$m[1]); - if (is_null($varname)) { $varname=$keyname; $keyname=""; } + $x = explode("=>",$m[1]); + if (count($x) == 1) { + $varname = $x[0]; + $keyname = ""; + } else { + list($keyname, $varname) = $x; + } if ($m[0]=="" || $varname=="" || is_null($varname)) die("template error: 'for ".$m[0]." as ".$varname."'") ; //$vals = $this->r[$m[0]]; $vals = $this->_get_var($m[0]); diff --git a/mod/network.php b/mod/network.php index 03a671b61..26265f5a0 100755 --- a/mod/network.php +++ b/mod/network.php @@ -44,7 +44,7 @@ function network_init(&$a) { } $a->page['aside'] .= group_side('network','network',true,$group_id); - $a->page['aside'] .= networks_widget($a->get_baseurl() . '/network',(($_GET['nets']) ? $_GET['nets'] : '')); + $a->page['aside'] .= networks_widget($a->get_baseurl() . '/network',(x($_GET, 'nets') ? $_GET['nets'] : '')); $a->page['aside'] .= saved_searches($search); } @@ -130,15 +130,15 @@ function network_content(&$a, $update = 0) { $starred_active = 'active'; } - if($_GET['bmark']) { + if(x($_GET,'bmark')) { $bookmarked_active = 'active'; } - if($_GET['conv']) { + if(x($_GET,'conv')) { $conv_active = 'active'; } - if($_GET['spam']) { + if(x($_GET,'spam')) { $spam_active = 'active'; } @@ -245,7 +245,7 @@ function network_content(&$a, $update = 0) { $def_acl = array('allow_cid' => '<' . intval($cid) . '>'); if(! $update) { - if(group) { + if($group) { if(($t = group_public_members($group)) && (! get_pconfig(local_user(),'system','nowarn_insecure'))) { notice( sprintf( tt('Warning: This group contains %s member from an insecure network.', 'Warning: This group contains %s members from an insecure network.', @@ -492,7 +492,9 @@ function network_content(&$a, $update = 0) { $items = conv_sort($items,$ordering); - } + } else { + $items = array(); + } } -- cgit v1.2.3 From 8a51e29824fc2569ac1d0def3070bee7c0552231 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Fri, 2 Mar 2012 17:22:16 +0100 Subject: template proc: add variable filters --- include/template_processor.php | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/include/template_processor.php b/include/template_processor.php index 111fc5849..90c6b2e65 100755 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -160,15 +160,25 @@ private function var_replace($s){ $m = array(); - if (preg_match_all('/\$\[{0,1}([a-zA-Z0-9-_]+\.*)+\]{0,1}/', $s,$m)){ - foreach($m[0] as $var){ - $varn = str_replace(array("[","]"), array("",""), $var); - $val = $this->_get_var($varn, true); + if (preg_match_all('/(\$\[{0,1}([a-zA-Z0-9-_]+\.*)+)(\|[a-zA-Z0-9-_]+)*\]{0,1}/', $s,$m)){ + foreach($m[1] as $id=>$var){ + $var = str_replace("[", "", $var); + $val = $this->_get_var($var, true); + + // apply filters + if ($m[3][$id]!=""){ + $filters = explode("|",trim($m[3][$id],"|")); + foreach($filters as $filter) + if (function_exists($filter)) + $val=$filter($val); + } if ($val!=KEY_NOT_EXISTS) - $s = str_replace($var, $val, $s); + $s = str_replace($m[0][$id], $val, $s); } } + + return $s; } -- cgit v1.2.3 -- cgit v1.2.3 From 7ef861907e32cd3d01877c0fdf8e2544f4f659b1 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 2 Mar 2012 19:09:17 -0500 Subject: minor formatting issues Signed-off-by: Simon L'nu --- view/jot.tpl | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/view/jot.tpl b/view/jot.tpl index 2c1ce5ae1..2f89d4372 100755 --- a/view/jot.tpl +++ b/view/jot.tpl @@ -1,9 +1,9 @@
-
 
- +
 
+
- + @@ -11,9 +11,9 @@ - - - + + +
- + -
{{ if $content }}{{ endif }} - - - - -- cgit v1.2.3 From 02a9fd5dc1d1d9e848e2f406f2e13c4cf0ce228b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Sat, 3 Mar 2012 10:44:34 +0000 Subject: A 'PHP Fatal error: Call to a member function getElementsByTagName() on a non-object in mod/parse_url.php on line 191' occurred when the linked HTML-File doesn't have a HEAD. The HTML-file couln't be link to in the editor therefore. --- mod/parse_url.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/parse_url.php b/mod/parse_url.php index e0b378f68..27dac4d5d 100755 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -188,7 +188,7 @@ function parse_url_content(&$a) { if(! $text) { logger('parsing meta'); - $items = $domhead->getElementsByTagName('meta'); + $items = (isset($domhead) && is_object($domhead) ? $domhead->getElementsByTagName('meta') : null); if($items) { foreach($items as $item) { $property = $item->getAttribute('property'); -- cgit v1.2.3 From 60adef24634f3df6c9f0161128e10cb778e5316e Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 3 Mar 2012 13:27:39 +0100 Subject: fix text-editor in theme --- view/theme/diabook/icons/attach.png | Bin 0 -> 862 bytes view/theme/diabook/icons/audio.png | Bin 0 -> 655 bytes view/theme/diabook/icons/camera.png | Bin 0 -> 568 bytes view/theme/diabook/icons/globe.png | Bin 0 -> 680 bytes view/theme/diabook/icons/unglobe.png | Bin 0 -> 659 bytes view/theme/diabook/icons/unlock.png | Bin 0 -> 314 bytes view/theme/diabook/icons/video.png | Bin 0 -> 373 bytes view/theme/diabook/icons/weblink.png | Bin 0 -> 305 bytes view/theme/diabook/jot.tpl | 83 +++++++++++++++++++++++ view/theme/diabook/style.css | 128 +++++++++++++++++++++++++++++++++-- 10 files changed, 204 insertions(+), 7 deletions(-) create mode 100755 view/theme/diabook/icons/attach.png create mode 100755 view/theme/diabook/icons/audio.png create mode 100755 view/theme/diabook/icons/camera.png create mode 100755 view/theme/diabook/icons/globe.png create mode 100755 view/theme/diabook/icons/unglobe.png create mode 100755 view/theme/diabook/icons/unlock.png create mode 100755 view/theme/diabook/icons/video.png create mode 100755 view/theme/diabook/icons/weblink.png create mode 100755 view/theme/diabook/jot.tpl diff --git a/view/theme/diabook/icons/attach.png b/view/theme/diabook/icons/attach.png new file mode 100755 index 000000000..4412d94a5 Binary files /dev/null and b/view/theme/diabook/icons/attach.png differ diff --git a/view/theme/diabook/icons/audio.png b/view/theme/diabook/icons/audio.png new file mode 100755 index 000000000..075e04734 Binary files /dev/null and b/view/theme/diabook/icons/audio.png differ diff --git a/view/theme/diabook/icons/camera.png b/view/theme/diabook/icons/camera.png new file mode 100755 index 000000000..8769cc82f Binary files /dev/null and b/view/theme/diabook/icons/camera.png differ diff --git a/view/theme/diabook/icons/globe.png b/view/theme/diabook/icons/globe.png new file mode 100755 index 000000000..daec0c256 Binary files /dev/null and b/view/theme/diabook/icons/globe.png differ diff --git a/view/theme/diabook/icons/unglobe.png b/view/theme/diabook/icons/unglobe.png new file mode 100755 index 000000000..ddcdfa23c Binary files /dev/null and b/view/theme/diabook/icons/unglobe.png differ diff --git a/view/theme/diabook/icons/unlock.png b/view/theme/diabook/icons/unlock.png new file mode 100755 index 000000000..3d6543087 Binary files /dev/null and b/view/theme/diabook/icons/unlock.png differ diff --git a/view/theme/diabook/icons/video.png b/view/theme/diabook/icons/video.png new file mode 100755 index 000000000..c9a905e32 Binary files /dev/null and b/view/theme/diabook/icons/video.png differ diff --git a/view/theme/diabook/icons/weblink.png b/view/theme/diabook/icons/weblink.png new file mode 100755 index 000000000..45c471e6c Binary files /dev/null and b/view/theme/diabook/icons/weblink.png differ diff --git a/view/theme/diabook/jot.tpl b/view/theme/diabook/jot.tpl new file mode 100755 index 000000000..bb0f4b6d0 --- /dev/null +++ b/view/theme/diabook/jot.tpl @@ -0,0 +1,83 @@ + +
+
+
 
+
+
+
+ +
+ + + + + + + + + + + + +
+ +
+
+
+
+
+
+ + +
+ +
+
+ +
+
+ +
+ + +
+ $bang +
+ + + + +
+ + +
+ $jotplugins +
+ +
+ +
+ + + +
+
+ $acl +
+
$emailcc
+
+ $jotnets +
+
+ + +
+ +
+
+
+ {{ if $content }}{{ endif }} diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index c1eb3be5a..c497beffd 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -104,20 +104,46 @@ .icon.star { background-image: url("../../../view/theme/diabook/icons/star.png");} .icon.link { background-image: url("../../../view/theme/diabook/icons/link.png");} .icon.lock { background-image: url("../../../view/theme/diabook/icons/lock.png");} +.icon.unlock { background-image: url("../../../view/theme/diabook/icons/unlock.png");} + +.camera { background-image: url("../../../view/theme/diabook/icons/camera.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.attach { background-image: url("../../../view/theme/diabook/icons/attach.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.video { background-image: url("../../../view/theme/diabook/icons/video.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.audio { background-image: url("../../../view/theme/diabook/icons/audio.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.weblink { background-image: url("../../../view/theme/diabook/icons/weblink.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.globe { background-image: url("../../../view/theme/diabook/icons/globe.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.unglobe { background-image: url("../../../view/theme/diabook/icons/unglobe.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } + + + .article { background-position: -50px 0px;} -.audio { background-position: -70px 0px;} +/*.audio { background-position: -70px 0px;}*/ .block { background-position: -90px 0px;} /*.drop { background-position: -110px 0px;}*/ /*.drophide { background-position: -130px 0px;}*/ .edit { background-position: -150px 0px;} -.camera { background-position: -170px 0px;} +/*.camera { background-position: -170px 0px;}*/ /*.dislike { background-position: -190px 0px;}*/ /*.like { background-position: -210px 0px;}*/ /*.link { background-position: -230px 0px;}*/ -.globe { background-position: -50px -20px;} -.noglobe { background-position: -70px -20px;} +/*.globe { background-position: -50px -20px;}*/ +/*.noglobe { background-position: -70px -20px;}*/ .no { background-position: -90px -20px;} .pause { background-position: -110px -20px;} .play { background-position: -130px -20px;} @@ -130,10 +156,10 @@ .tools { background-position: -50px -40px;} /*.lock { background-position: -70px -40px;}*/ -.video { background-position: -110px -40px;} +/*.video { background-position: -110px -40px;}*/ .youtube { background-position: -130px -40px;} -.attach { background-position: -190px -40px;} +/*.attach { background-position: -190px -40px;}*/ .language { background-position: -210px -40px;} @@ -1280,9 +1306,10 @@ section { height: 40px; overflow: none; width: 783px; - background-color: #0e232e; + background-color: #fff; border-bottom: 2px solid #9eabb0; } + #jot #jot-tools li { list-style: none; float: left; @@ -1379,7 +1406,94 @@ section { line-height: 20px; padding-right: 20px; } +#jot-perms-icon, +#profile-location, +#profile-nolocation, +#profile-youtube, +#profile-video, +#profile-audio, +#profile-link, +#profile-title, +#wall-image-upload, +#wall-file-upload, +#wall-image-upload-div, +#wall-file-upload-div, +.hover, .focus { + cursor: pointer; + margin-top: 2px; +} +#profile-jot-wrapper{ + margin: 0 2em 20px 0; + width: 685px; + } + +#profile-jot-submit-wrapper { + margin-bottom: 50px; + width: 675px; +} + +#profile-jot-submit { + float: left; +} +#profile-upload-wrapper { + float: left; + +} +#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; +} +#profile-jot-perms { + float: left; + margin-left: 45px; +} +#jot-preview-link { + float: left; + margin-left: 10px; + margin-top: 0px !important; +} + /** buttons **/ +.button.creation1 { + background-color: #fff; + border: 1px solid #777777; + background-image: -moz-linear-gradient(center top , white 0%, #DDDDDD 100%); + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; +} +.button.creation2 { + background-color: #33ACFF; + background-image: -moz-linear-gradient(center top , #66C1FF 0%, #0097FF 100%); + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; +} /*input[type="submit"] { border: 0px; background-color: @ButtonBackgroundColor; -- cgit v1.2.3 From b3ba2eb4d08102adfa7f69115d298e6b2e3e0563 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 3 Mar 2012 15:01:25 +0100 Subject: fix editor --- view/theme/diabook/jot.tpl | 8 ++++---- view/theme/diabook/style.css | 40 ++++++++++++++++++++++++++++++---------- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/view/theme/diabook/jot.tpl b/view/theme/diabook/jot.tpl index bb0f4b6d0..e83d0f86c 100755 --- a/view/theme/diabook/jot.tpl +++ b/view/theme/diabook/jot.tpl @@ -44,13 +44,13 @@ -
- $bang -
+ - +
+ $bang +
diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index c497beffd..df586c770 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -1290,7 +1290,7 @@ section { width: 785px; margin: 0px 2em 20px 0px; } -#jot .profile-jot-text { +#profile-jot-form #profile-jot-text { height: 1.2em; width: 99%; font-size: 10px; @@ -1378,7 +1378,7 @@ section { #jot #jot-tools li.loading img { margin-top: 10px; } -#jot #jot-title { +#profile-jot-form #jot-title { border: 0px; margin: 0px; height: 20px; @@ -1386,12 +1386,16 @@ section { font-weight: bold; border: 1px solid #ffffff; } -#jot #jot-title:-webkit-input-placeholder { +#profile-jot-form #jot-title:-webkit-input-placeholder { font-weight: normal; } -#jot #jot-title:-moz-placeholder { +#profile-jot-form #jot-title:-moz-placeholder { font-weight: normal; } +#profile-jot-form #profile-jot-text_parent #profile-jot-text_tbl{ + width: 785px; + height: 100px; + } #jot #jot-title:hover { border: 1px solid #999999; } @@ -1424,59 +1428,75 @@ section { } #profile-jot-wrapper{ margin: 0 2em 20px 0; - width: 685px; + width: 785px; } #profile-jot-submit-wrapper { margin-bottom: 50px; - width: 675px; + width: 785px; } #profile-jot-submit { - float: left; + float: right; + margin-top: 2px; + } #profile-upload-wrapper { float: left; + margin-top: 2px; + margin-left: 10px; } #profile-attach-wrapper { float: left; margin-left: 15px; + margin-top: 2px; } #profile-rotator { float: left; margin-left: 30px; + margin-top: 2px; } #profile-link-wrapper { float: left; margin-left: 15px; + margin-top: 2px; } #profile-youtube-wrapper { float: left; margin-left: 15px; + margin-top: 2px; } #profile-video-wrapper { float: left; margin-left: 15px; + margin-top: 2px; } #profile-audio-wrapper { float: left; margin-left: 15px; + margin-top: 2px; } #profile-location-wrapper { float: left; margin-left: 15px; + margin-top: 2px; } #profile-jot-perms { float: left; margin-left: 45px; + margin-top: 2px; } #jot-preview-link { - float: left; + float: right; margin-left: 10px; - margin-top: 0px !important; + margin-top: 2px; } - +#profile-jot-perms{ + float: right; + margin-left: 10px; + margin-top: 2px; + } /** buttons **/ .button.creation1 { background-color: #fff; -- cgit v1.2.3 From 83e9f57459ddc0f7602f3c72d937d7a48e76b6b5 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 3 Mar 2012 16:49:48 +0100 Subject: fixed admin fixed editor --- view/theme/diabook/icons/attach.png | Bin 862 -> 1069 bytes view/theme/diabook/icons/audio.png | Bin 655 -> 762 bytes view/theme/diabook/icons/camera.png | Bin 568 -> 685 bytes view/theme/diabook/icons/globe.png | Bin 680 -> 875 bytes view/theme/diabook/icons/toogle_off.png | Bin 0 -> 391 bytes view/theme/diabook/icons/toogle_on.png | Bin 0 -> 429 bytes view/theme/diabook/icons/unglobe.png | Bin 659 -> 798 bytes view/theme/diabook/icons/unlock.png | Bin 314 -> 362 bytes view/theme/diabook/icons/video.png | Bin 373 -> 472 bytes view/theme/diabook/icons/weblink.png | Bin 305 -> 505 bytes view/theme/diabook/style.css | 4 ++-- 11 files changed, 2 insertions(+), 2 deletions(-) create mode 100755 view/theme/diabook/icons/toogle_off.png create mode 100755 view/theme/diabook/icons/toogle_on.png diff --git a/view/theme/diabook/icons/attach.png b/view/theme/diabook/icons/attach.png index 4412d94a5..1958041cf 100755 Binary files a/view/theme/diabook/icons/attach.png and b/view/theme/diabook/icons/attach.png differ diff --git a/view/theme/diabook/icons/audio.png b/view/theme/diabook/icons/audio.png index 075e04734..8d779a409 100755 Binary files a/view/theme/diabook/icons/audio.png and b/view/theme/diabook/icons/audio.png differ diff --git a/view/theme/diabook/icons/camera.png b/view/theme/diabook/icons/camera.png index 8769cc82f..a5c7f1236 100755 Binary files a/view/theme/diabook/icons/camera.png and b/view/theme/diabook/icons/camera.png differ diff --git a/view/theme/diabook/icons/globe.png b/view/theme/diabook/icons/globe.png index daec0c256..bf27a8f3f 100755 Binary files a/view/theme/diabook/icons/globe.png and b/view/theme/diabook/icons/globe.png differ diff --git a/view/theme/diabook/icons/toogle_off.png b/view/theme/diabook/icons/toogle_off.png new file mode 100755 index 000000000..99490bcd9 Binary files /dev/null and b/view/theme/diabook/icons/toogle_off.png differ diff --git a/view/theme/diabook/icons/toogle_on.png b/view/theme/diabook/icons/toogle_on.png new file mode 100755 index 000000000..81e8f9120 Binary files /dev/null and b/view/theme/diabook/icons/toogle_on.png differ diff --git a/view/theme/diabook/icons/unglobe.png b/view/theme/diabook/icons/unglobe.png index ddcdfa23c..aa9b0e189 100755 Binary files a/view/theme/diabook/icons/unglobe.png and b/view/theme/diabook/icons/unglobe.png differ diff --git a/view/theme/diabook/icons/unlock.png b/view/theme/diabook/icons/unlock.png index 3d6543087..a0cda0ae5 100755 Binary files a/view/theme/diabook/icons/unlock.png and b/view/theme/diabook/icons/unlock.png differ diff --git a/view/theme/diabook/icons/video.png b/view/theme/diabook/icons/video.png index c9a905e32..a03d1d818 100755 Binary files a/view/theme/diabook/icons/video.png and b/view/theme/diabook/icons/video.png differ diff --git a/view/theme/diabook/icons/weblink.png b/view/theme/diabook/icons/weblink.png index 45c471e6c..216e78344 100755 Binary files a/view/theme/diabook/icons/weblink.png and b/view/theme/diabook/icons/weblink.png differ diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index df586c770..d9d88690f 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -163,8 +163,8 @@ .language { background-position: -210px -40px;} -.on { background-position: -50px -60px;} -.off { background-position: -70px -60px;} +.icon.on { background-image: url("../../../view/theme/diabook/icons/toogle_on.png"); background-repeat: no-repeat;} +.icon.off { background-image: url("../../../view/theme/diabook/icons/toogle_off.png"); background-repeat: no-repeat;} .prev { background-position: -90px -60px;} .next { background-position: -110px -60px;} /*.tagged { background-position: -130px -60px;}*/ -- cgit v1.2.3 From d4ac1f2a9cc8d744c6e47eb358ac1f1cfa4ce458 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 3 Mar 2012 19:07:55 +0100 Subject: fixed star/unstar --- images/star.png | Bin 0 -> 388 bytes images/star_dummy.png | Bin 0 -> 183 bytes view/theme/diabook/icons/isstar.png | Bin 0 -> 1277 bytes view/theme/diabook/icons/star.png | Bin 339 -> 388 bytes view/theme/diabook/icons/star_dummy.png | Bin 0 -> 183 bytes view/theme/diabook/style.css | 4 +++- view/theme/diabook/wall_item.tpl | 23 ++++++++++++++--------- 7 files changed, 17 insertions(+), 10 deletions(-) create mode 100755 images/star.png create mode 100644 images/star_dummy.png create mode 100644 view/theme/diabook/icons/isstar.png create mode 100644 view/theme/diabook/icons/star_dummy.png diff --git a/images/star.png b/images/star.png new file mode 100755 index 000000000..0b00cb189 Binary files /dev/null and b/images/star.png differ diff --git a/images/star_dummy.png b/images/star_dummy.png new file mode 100644 index 000000000..ce11f30d4 Binary files /dev/null and b/images/star_dummy.png differ diff --git a/view/theme/diabook/icons/isstar.png b/view/theme/diabook/icons/isstar.png new file mode 100644 index 000000000..c955b25b5 Binary files /dev/null and b/view/theme/diabook/icons/isstar.png differ diff --git a/view/theme/diabook/icons/star.png b/view/theme/diabook/icons/star.png index 32eff5a50..0b00cb189 100755 Binary files a/view/theme/diabook/icons/star.png and b/view/theme/diabook/icons/star.png differ diff --git a/view/theme/diabook/icons/star_dummy.png b/view/theme/diabook/icons/star_dummy.png new file mode 100644 index 000000000..ce11f30d4 Binary files /dev/null and b/view/theme/diabook/icons/star_dummy.png differ diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index d9d88690f..ecd995d5f 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -100,11 +100,13 @@ .icon.recycle { background-image: url("../../../view/theme/diabook/icons/recycle.png");} .icon.remote-link { background-image: url("../../../view/theme/diabook/icons/remote.png");} .icon.tagged { background-image: url("../../../view/theme/diabook/icons/tagged.png");} -.icon.unstarred { background-image: url("../../../view/theme/diabook/icons/unstarred.png");} +.icon.unstarred { background-image: url("../../../view/theme/diabook/icons/star.png");} .icon.star { background-image: url("../../../view/theme/diabook/icons/star.png");} .icon.link { background-image: url("../../../view/theme/diabook/icons/link.png");} .icon.lock { background-image: url("../../../view/theme/diabook/icons/lock.png");} .icon.unlock { background-image: url("../../../view/theme/diabook/icons/unlock.png");} +.icon.isstar { background-image: url("../../../view/theme/diabook/icons/isstar.png");} + .camera { background-image: url("../../../view/theme/diabook/icons/camera.png"); display: block; width: 28px; height: 28px; background-repeat: no-repeat; diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index 10d395316..c836d4fbb 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -1,6 +1,6 @@ {{ if $item.indent }}{{ else }}
- $item.star.starred + $item.star.starred {{ if $item.lock }}$item.lock{{ endif }}
@@ -38,9 +38,7 @@
- +
{{ for $item.tags as $tag }} $tag @@ -54,7 +52,8 @@
$item.location 
- + + {{ if $item.vote }} @@ -62,13 +61,19 @@ {{ if $item.vote.share }} - {{ endif }} + {{ endif }} {{ if $item.star }} - $item.star.do - $item.star.undo + + $item.star.do + + $item.star.undo $item.star.tagger - {{ endif }} + {{ endif }} + + {{ if $item.plink }}$item.plink.title{{ endif }} + +
-- cgit v1.2.3 From 42b9887693afd65b7dbbb88bb331eb316ede89ef Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 3 Mar 2012 21:45:59 +0100 Subject: fixed apps css --- view/theme/diabook/nav.tpl | 2 +- view/theme/diabook/style.css | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/view/theme/diabook/nav.tpl b/view/theme/diabook/nav.tpl index 17df8e652..34a37ad2e 100644 --- a/view/theme/diabook/nav.tpl +++ b/view/theme/diabook/nav.tpl @@ -87,7 +87,7 @@
  • $ap
  • {{ endfor }} - + {{ endif }} {{ if $nav.home }} diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index ecd995d5f..d175a74b3 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -675,6 +675,13 @@ nav #nav-directory-link{ margin-left: 0px; margin-right: 0px; font-weight: bold; + margin: 3px 15px; + } +nav #nav-apps-link{ + margin-left: 0px; + margin-right: 0px; + font-weight: bold; + margin: 3px 15px; } nav #nav-help-link .menu-popup, nav #nav-search-link .menu-popup, -- cgit v1.2.3 From a19d8d9e9f2e4a033c3db458bcbf5bd810992913 Mon Sep 17 00:00:00 2001 From: "Abinoam P. Marques Jr" Date: Sat, 3 Mar 2012 16:52:33 -0400 Subject: Added docblox default configuration file. Now docblox can be run without arguments on friendica root dir. The documentation will be generated on ./data/output --- docblox.dist.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 docblox.dist.xml diff --git a/docblox.dist.xml b/docblox.dist.xml new file mode 100644 index 000000000..a2ea8e2cb --- /dev/null +++ b/docblox.dist.xml @@ -0,0 +1,13 @@ + + + + data/output + + + data/output + + + . + + + -- cgit v1.2.3 From 173fb983c5fa2514c3cdc15ac56a030c49f81ca7 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 3 Mar 2012 23:12:03 +0100 Subject: navbar fix --- view/theme/diabook/icons/contacts2.png | Bin 545 -> 549 bytes view/theme/diabook/icons/lock.png | Bin 313 -> 366 bytes view/theme/diabook/icons/messages2.png | Bin 0 -> 488 bytes view/theme/diabook/icons/notify2.png | Bin 0 -> 596 bytes view/theme/diabook/style.css | 24 ++++++++++++++++++------ 5 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 view/theme/diabook/icons/messages2.png create mode 100644 view/theme/diabook/icons/notify2.png diff --git a/view/theme/diabook/icons/contacts2.png b/view/theme/diabook/icons/contacts2.png index f90b10f92..7817279f4 100755 Binary files a/view/theme/diabook/icons/contacts2.png and b/view/theme/diabook/icons/contacts2.png differ diff --git a/view/theme/diabook/icons/lock.png b/view/theme/diabook/icons/lock.png index e00c5b2a2..7e34bf279 100755 Binary files a/view/theme/diabook/icons/lock.png and b/view/theme/diabook/icons/lock.png differ diff --git a/view/theme/diabook/icons/messages2.png b/view/theme/diabook/icons/messages2.png new file mode 100644 index 000000000..54b68e7f7 Binary files /dev/null and b/view/theme/diabook/icons/messages2.png differ diff --git a/view/theme/diabook/icons/notify2.png b/view/theme/diabook/icons/notify2.png new file mode 100644 index 000000000..407e2dbb4 Binary files /dev/null and b/view/theme/diabook/icons/notify2.png differ diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index d175a74b3..0f60ee531 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -615,7 +615,7 @@ nav .nav-menu-icon { border-radius: 5px 5px 0 0; } nav .nav-menu-icon.selected { - background-color: #364e59; + background-color: #fff; } nav .nav-menu-icon img { width: 22px; @@ -691,9 +691,19 @@ nav #nav-site-linkmenu .menu-popup { right: 0px; left: auto; } -nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-linkmenu.selected .icon.s22.notify { - background-image: url("../../../images/icons/22/notify_on.png"); -} + +nav #nav-messages-linkmenu.on .icon.messages, nav #nav-messages-linkmenu.selected .icon.messages{ + background-image: url("../../../view/theme/diabook/icons/messages2.png"); + } + +/*nav #nav-notifications-linkmenu.on .icon.notify,*/ nav #nav-notifications-linkmenu.selected .icon.notify{ + background-image: url("../../../view/theme/diabook/icons/notify2.png"); + } + +nav #nav-contacts-linkmenu.on .icon.contacts, nav #nav-contacts-linkmenu.selected .icon.contacts{ + background-image: url("../../../view/theme/diabook/icons/contacts2.png"); + } + nav #nav-apps-link.selected { background-color: #364e59; } @@ -725,7 +735,8 @@ ul.menu-popup { margin: 0px; padding: 0px; list-style: none; - border: 3px solid #364e59; + border: 1px solid #364e59; + border-top-color: transparent; z-index: 100000; -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); @@ -738,7 +749,8 @@ ul.menu-popup a { text-decoration: none; } ul.menu-popup a:hover { - background-color: #bdcdd4; + background-color: #3465A4; /*bdcdd4;*/ + color: #fff; } ul.menu-popup .menu-sep { border-top: 1px solid #9eabb0; -- cgit v1.2.3 From b3eeb2240170b4f21f5162eb649fa7191264aeb5 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 3 Mar 2012 23:43:15 +0100 Subject: fix --- view/theme/diabook/style.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 0f60ee531..5e471f621 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -749,8 +749,8 @@ ul.menu-popup a { text-decoration: none; } ul.menu-popup a:hover { - background-color: #3465A4; /*bdcdd4;*/ - color: #fff; + background-color: #fff797; /*bdcdd4;*/ + color: #000; } ul.menu-popup .menu-sep { border-top: 1px solid #9eabb0; -- cgit v1.2.3 From 25d6ca3b7335c018bfd16c4dd29b177d9df62692 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sun, 4 Mar 2012 00:10:03 +0100 Subject: tag fix --- view/theme/diabook/wall_item.tpl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index c836d4fbb..20131c7d1 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -38,7 +38,8 @@
    -
    +
    {{ for $item.tags as $tag }} $tag -- cgit v1.2.3 From 64400e8d59cab64cfa57b969df88a4cafe76f168 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sat, 3 Mar 2012 19:19:35 -0500 Subject: first commit for dispy New Edition Signed-off-by: Simon L'nu --- view/theme/dispy/comment_item.tpl | 35 + view/theme/dispy/contact_template.tpl | 6 +- view/theme/dispy/conversation.tpl | 21 + view/theme/dispy/group_side.tpl | 12 +- view/theme/dispy/head.tpl | 99 ++ view/theme/dispy/icons.png | Bin 20057 -> 28076 bytes view/theme/dispy/icons.svg | 1940 ++++++++++++++-------- view/theme/dispy/jot-header.tpl | 346 ++-- view/theme/dispy/jot.tpl | 106 +- view/theme/dispy/mail_head.tpl | 8 +- view/theme/dispy/nav.tpl | 165 +- view/theme/dispy/profile_vcard.tpl | 59 +- view/theme/dispy/style.css | 2855 +++++++++++++++++++++++---------- view/theme/dispy/theme.php | 74 + view/theme/dispy/wall_item.tpl | 6 +- view/theme/dispy/wallwall_item.tpl | 6 +- 16 files changed, 3955 insertions(+), 1783 deletions(-) create mode 100644 view/theme/dispy/comment_item.tpl mode change 100755 => 100644 view/theme/dispy/contact_template.tpl create mode 100644 view/theme/dispy/conversation.tpl mode change 100755 => 100644 view/theme/dispy/group_side.tpl create mode 100644 view/theme/dispy/head.tpl mode change 100755 => 100644 view/theme/dispy/icons.png mode change 100755 => 100644 view/theme/dispy/icons.svg mode change 100755 => 100644 view/theme/dispy/jot-header.tpl mode change 100755 => 100644 view/theme/dispy/jot.tpl mode change 100755 => 100644 view/theme/dispy/mail_head.tpl mode change 100755 => 100644 view/theme/dispy/nav.tpl mode change 100755 => 100644 view/theme/dispy/profile_vcard.tpl mode change 100755 => 100644 view/theme/dispy/style.css create mode 100644 view/theme/dispy/theme.php mode change 100755 => 100644 view/theme/dispy/wall_item.tpl mode change 100755 => 100644 view/theme/dispy/wallwall_item.tpl diff --git a/view/theme/dispy/comment_item.tpl b/view/theme/dispy/comment_item.tpl new file mode 100644 index 000000000..85176732b --- /dev/null +++ b/view/theme/dispy/comment_item.tpl @@ -0,0 +1,35 @@ +
    +
    + + + + + + + +
    + $mytitle +
    +
    + + + {{ if $qcomment }} +
      + {{ for $qcomment as $qc }} + + {{ endfor }} +
    + {{ endif }} + +
    + + +
    +
    + +
    diff --git a/view/theme/dispy/contact_template.tpl b/view/theme/dispy/contact_template.tpl old mode 100755 new mode 100644 index 48930b48a..2aa9b88fe --- a/view/theme/dispy/contact_template.tpl +++ b/view/theme/dispy/contact_template.tpl @@ -1,9 +1,9 @@
    -
    +
    + onmouseout="t$contact.id=setTimeout('closeMenu(\'contact-photo-menu-button-$contact.id\'); closeMenu(\'contact-photo-menu-$contact.id\');',200)"> $contact.name @@ -20,6 +20,8 @@
    $contact.name
    +
    $contact.itemurl
    +
    $contact.network
    diff --git a/view/theme/dispy/conversation.tpl b/view/theme/dispy/conversation.tpl new file mode 100644 index 000000000..0b14f1c80 --- /dev/null +++ b/view/theme/dispy/conversation.tpl @@ -0,0 +1,21 @@ +{{ 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 }} + +{{ if $dropping }} +$dropping +{{ endif }} diff --git a/view/theme/dispy/group_side.tpl b/view/theme/dispy/group_side.tpl old mode 100755 new mode 100644 index a1fc70a22..516d70d5b --- a/view/theme/dispy/group_side.tpl +++ b/view/theme/dispy/group_side.tpl @@ -5,23 +5,25 @@
    diff --git a/view/theme/dispy/head.tpl b/view/theme/dispy/head.tpl new file mode 100644 index 000000000..793af6fd2 --- /dev/null +++ b/view/theme/dispy/head.tpl @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/view/theme/dispy/icons.png b/view/theme/dispy/icons.png old mode 100755 new mode 100644 index bd52b62c8..d9d58aa47 Binary files a/view/theme/dispy/icons.png and b/view/theme/dispy/icons.png differ diff --git a/view/theme/dispy/icons.svg b/view/theme/dispy/icons.svg old mode 100755 new mode 100644 index b435ba665..40899c0a5 --- a/view/theme/dispy/icons.svg +++ b/view/theme/dispy/icons.svg @@ -7,15 +7,16 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="250" height="200" id="svg3403" version="1.1" - inkscape:version="0.48.1 r9760" + inkscape:version="0.48+devel r" sodipodi:docname="icons.svg" - inkscape:export-filename="/home/fabio/public_html/friendika/view/theme/dispy/icons.png" + inkscape:export-filename="/var/www3/kisikew.org/portal/pub/fd/view/theme/dispy/icons.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90"> image/svg+xml - + @@ -118,11 +119,12 @@ y="852.36218" inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons.png" inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /> + inkscape:export-ydpi="90" + transform="matrix(1,0,0,1.5151515,0,-439.09566)" /> + style="fill:#333333;stroke:#e6e6e6;stroke-width:2.0535686;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:#333333;stroke:#e6e6e6;stroke-width:2.0535686;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:none;fill-opacity:1;stroke:#e6e6e6;stroke-width:2.0535686;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:#333333;stroke:#e6e6e6;stroke-width:2.0535686;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> @@ -202,15 +204,15 @@ inkscape:connector-curvature="0" id="path4005" d="M 504.69787,53.131473 480.30214,28.735746" - style="fill:#555753;fill-opacity:1;stroke:#888a85;stroke-width:2.31938004" /> + style="fill:#333333;fill-opacity:1;stroke:#e6e6e6;stroke-width:2.31938004" /> + style="fill:#1a1a1a;stroke:#d3d7cf;stroke-width:2.0535686;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:#1a1a1a;fill-opacity:1;stroke:#d3d7cf;stroke-width:2.31938004" /> + style="fill:#333333;stroke:#e6e6e6;stroke-width:2.0535686;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:#1a1a1a;fill-opacity:1;stroke:#d3d7cf;stroke-width:1.66475451;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - - - - + + @@ -425,16 +422,16 @@ sodipodi:cy="21.754047" sodipodi:cx="559.67499" id="path4008-8" - style="fill:#555753;fill-opacity:1;stroke:none" + style="fill:#1a1a1a;fill-opacity:1;stroke:none" sodipodi:type="arc" /> - - YouTube - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + style="fill:none;stroke:#1a1a1a;stroke-width:0.35579938;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:none;stroke:#1a1a1a;stroke-width:0.62789989;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:none;stroke:#1a1a1a;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + + + + + - - - Lorem Ip + style="font-weight:bold;fill:#1a1a1a;-inkscape-font-specification:Liberation Sans Bold">Lorem Ip + id="g4173"> + transform="matrix(0.92307692,0.3846154,-0.3846154,0.92307692,5.144234,833.96249)" /> - - + + @@ -930,12 +902,12 @@ inkscape:connector-curvature="0" d="m 132.109,867.43017 c 0.0548,-0.091 0.10266,-0.1866 0.16432,-0.2731 0.23235,-0.3261 0.52565,-0.6137 0.79275,-0.9102 0.42229,-0.4689 0.38553,-0.4337 0.82852,-0.9537 1.44214,-1.6363 3.06836,-3.0981 4.69856,-4.5425 1.63203,-1.40992 3.17698,-2.91672 4.78859,-4.34862 0.46305,-0.4369 0.97793,-0.8014 1.52221,-1.1266 0.15824,-0.2112 3.14491,2.0267 2.98666,2.2379 l 0,0 c -0.2952,0.5224 -0.62275,1.0204 -1.01852,1.4748 -0.88192,1.11922 -1.78212,2.22372 -2.79371,3.23052 -0.29346,0.2921 -0.60222,0.5684 -0.90606,0.8497 -0.31321,0.2899 -0.63003,0.5759 -0.94504,0.8639 -1.67153,1.4209 -3.37366,2.8163 -5.22715,3.9963 -0.49876,0.3405 -0.57121,0.3777 -1.0203,0.7266 -0.39341,0.3057 -0.75974,0.6889 -1.26518,0.7962 -0.14292,0.1842 -2.74857,-1.8369 -2.60565,-2.0212 z" id="path4265" - style="fill:#d3d7cf;fill-opacity:1;stroke:none;display:inline" + style="fill:#666666;fill-opacity:1;stroke:none;display:inline" inkscape:export-filename="/home/fabio/public_html/f9k-tre/icons2.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" /> + style="fill:none;stroke:#1a1a1a;stroke-width:0.66930836;stroke-miterlimit:4;stroke-dasharray:none" /> + style="fill:none;stroke:#1a1a1a;stroke-width:0.66930836;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> @@ -962,7 +934,7 @@ inkscape:connector-curvature="0" id="path4279" d="m -43.348187,1128.4959 c 1.108441,-0.8952 1.929509,-0.3581 2.381097,0.045 -0.328428,1.1191 -1.190549,3.9391 -1.190549,3.9391 z" - style="fill:#555753;stroke:#555753;stroke-width:0.66930836;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" /> + style="fill:#1a1a1a;stroke:#1a1a1a;stroke-width:0.66930836;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" /> + style="fill:#1a1a1a;fill-opacity:1;stroke:#1a1a1a" /> - - - - - - - + + + + + + + + + + + + + @@ -1104,15 +1085,15 @@ inkscape:connector-curvature="0" id="path4323" d="m -42.239747,1107.2336 0,17.6813" - style="fill:none;stroke:#555753;stroke-width:0.66930836;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> + style="fill:none;stroke:#1a1a1a;stroke-width:0.66930836;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> @@ -1133,14 +1114,14 @@ inkscape:connector-curvature="0" id="path4331" d="m -44.467884,1107.2152 0,17.7252 1.161165,3.7983 c 1.200046,4.2782 1.065706,4.1105 2.322331,0 l 1.161165,-3.7983 0,-17.7252 z" - style="fill:none;stroke:#555753;stroke-width:0.66930836;stroke-miterlimit:4;stroke-dasharray:none" /> + style="fill:none;stroke:#1a1a1a;stroke-width:0.66930836;stroke-miterlimit:4;stroke-dasharray:none" /> + style="fill:none;stroke:#1a1a1a;stroke-width:0.66930836;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> @@ -1149,7 +1130,7 @@ inkscape:connector-curvature="0" id="path4337" d="m -43.348187,1128.4959 c 1.108441,-0.8952 1.929509,-0.3581 2.381097,0.045 -0.328428,1.1191 -1.190549,3.9391 -1.190549,3.9391 z" - style="fill:#555753;stroke:#555753;stroke-width:0.66930836;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" /> + style="fill:#1a1a1a;stroke:#1a1a1a;stroke-width:0.66930836;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" /> + style="fill:#1a1a1a;fill-opacity:1;stroke:#1a1a1a" /> - - - - - - - - - - + + + + + + + + + + + + + + + + + + + id="g226"> + style="fill:#333333;stroke:#e6e6e6;stroke-width:2.0535686;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter4064)" /> + ? + id="g204"> - - ? - ? + y="979.64215" + id="text3155" + sodipodi:linespacing="100%">? + + + + + + + + + + + + + + + + + + alternate housing ;) + wikuom/wigwam + + + + + + alternate housing ;) + wikuom/wigwam + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ! + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/view/theme/dispy/jot-header.tpl b/view/theme/dispy/jot-header.tpl old mode 100755 new mode 100644 index 8dccf71ed..0a559aae7 --- a/view/theme/dispy/jot-header.tpl +++ b/view/theme/dispy/jot-header.tpl @@ -1,157 +1,137 @@ - - - + +{{ endif }} + +{{ if $content }}{{ endif }} diff --git a/view/theme/dispy/mail_head.tpl b/view/theme/dispy/mail_head.tpl old mode 100755 new mode 100644 index 89615cbd0..d49d7c1af --- a/view/theme/dispy/mail_head.tpl +++ b/view/theme/dispy/mail_head.tpl @@ -1,7 +1,5 @@

    $messages

    - +
    +$tab_content +
    diff --git a/view/theme/dispy/nav.tpl b/view/theme/dispy/nav.tpl old mode 100755 new mode 100644 index 79852217f..67a263519 --- a/view/theme/dispy/nav.tpl +++ b/view/theme/dispy/nav.tpl @@ -1,57 +1,116 @@ + diff --git a/view/theme/dispy/profile_vcard.tpl b/view/theme/dispy/profile_vcard.tpl old mode 100755 new mode 100644 index b3f5cc50d..0c289d982 --- a/view/theme/dispy/profile_vcard.tpl +++ b/view/theme/dispy/profile_vcard.tpl @@ -2,34 +2,53 @@
    $profile.name
    - - - {{ if $pdesc }}
    $profile.pdesc
    {{ endif }} -
    $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 - +
    + $location +
    + {{ if $profile.address }} +
    $profile.address
    {{ endif }} + $profile.zip + $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 $gender }} +
    + $gender + $profile.gender +
    + {{ endif }} - {{ if $profile.pubkey }}{{ endif }} + {{ if $profile.pubkey }} + + {{ endif }} - {{ if $marital }}
    $marital
    $profile.marital
    {{ endif }} + {{ if $marital }} +
    + + $marital + $profile.marital +
    + {{ endif }} - {{ if $homepage }}
    $homepage
    $profile.homepage
    {{ endif }} + {{ if $homepage }} +
    + $homepage + $profile.homepage +
    {{ endif }} {{ inc diaspora_vcard.tpl }}{{ endinc }} diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css old mode 100755 new mode 100644 index 7f563293a..f0929094c --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -1,74 +1,233 @@ -body { - margin: 0px; - padding: 0px; - font-family: freesans,helvetica,arial,clean,sans-serif; - font-size: 16px; -} -img { border: 0 none; } +/* + * dispy + * + * modernised, sort of, by simon + * + */ -a { color: #3465a4; text-decoration: none; margin-bottom:1px;} -a:hover { color: #729fcf; padding-bottom: 0px; border-bottom: 1px dotted #729fcf;} +/* from html5boilerplate */ +/* these are to tell browsers they should be displayed a certain way */ +article, aside, details, figcaption, figure, footer, +header, hgroup, nav, section { + display: block; +} +audio, canvas, video, time { + display: inline-block; + *display: inline; + *zoom: 1; +} +audio:not([controls]) { + display: none; +} +[hidden] { + display: none; +} -.required { display: inline; color: #ff0000;} -.fakelink { color: #3465a4; cursor: pointer; } -.fakelink :hover{ color: #729fcf; } +/* ============================================================================= + Base + ========================================================================== */ +/* + * 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units + * 2. Force vertical scrollbar in non-IE + * 3. Prevent iOS text size adjust on device orientation change, without disabling user zoom: h5bp.com/g + */ + +html { + font-size: 100%; + overflow-y: scroll; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; + font-size: 16px; + line-height: 1.1em; +} + +body, button, input, select, textarea { + font-family: sans-serif; + color: #222; + background-color: rgb(254,254,254); + background-color: rgba(254,254,254,255); +} +/* remember to define focus styles! */ +:focus { + outline: 0; +} + +/* remember to highlight inserts somehow! */ +ins { + background-color: #ff9; + color: #000; + text-decoration: none; +} +mark { + background-color: #ff9; + color: #000; + font-style: italic; + font-weight: bold; +} +ins { + background: #ff9; + color: #000; + text-decoration: none; +} +mark { + background: #ff0; + color: #000; + font-style: italic; + font-weight: bold; +} +/* Redeclare monospace font family: h5bp.com/j */ +pre, code, kbd, samp { + font-family: monospace, monospace; + _font-family: 'courier new', monospace; + font-size: 1em; } + +/* Improve readability of pre-formatted text in all browsers */ +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} +q { + quotes: none; +} +q:before, q:after { + content: ""; + content: none; +} +small { + font-size: 85%; +} + +/* Position subscript and superscript content without affecting line-height: h5bp.com/k */ +sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0 none; + /*vertical-align: middle;*/ +} +a { + color: #3465a4; + text-decoration: none; + margin-bottom: 1px; +} +a:hover img { + text-decoration: none; +} +blockquote { + background: #eee; + text-indent: 5px; + padding: 5px; + border: 1px #aaa solid; + border-radius: 5px; +} +a:hover { + color: #729fcf; + padding-bottom: 0; + border-bottom: 1px dotted #729fcf; +} +.required { + display: inline; + color: #ff0000; +} +.fakelink, .lockview { + color: #3465a4; + cursor: pointer; +} +.fakelink:hover { + color: #729fcf; +} input[type=submit] { - margin-top: 20px; - height: 22px; - background-color: #555753; - color: #eeeeec; - -webkit-border-radius: 5px ; - -moz-border-radius: 5px; - border-radius: 5px; - border: 0px; + margin-top: 20px; + height: 22px; + background-color: #555753; + color: #eeeeec; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + border: 0; +} +.smalltext { + font-size: 0.7em; } - -.smalltext { font-size: 0.7em } - #panel { position: absolute; - font-size:0.8em; - -webkit-border-radius: 5px ; + font-size: 0.8em; + -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; - border: 1px solid #ffffff; + border: 1px solid #fff; background-color: #2e3436; color: #eeeeec; - padding:1em; + padding: 1em; } - .pager { padding-top: 30px; - display:block; + display: block; clear: both; text-align: center; } +.pager span { + padding: 4px; + margin:4px; +} +.pager_current { + background-color: #729fcf; + color: #fff; +} -.pager span { padding: 4px; margin:4px; } -.pager_current { background-color: #729fcf; color: #ffffff; } +/** + * global + */ +/* .tool .action */ +.action { + float: right; +} /** * login */ -#login-extra-links a { margin-right: 20px; } +#login-extra-links a { + margin-right: 20px; +} /********* * nav *********/ - nav { - height: 50px; + height: 60px; display: block; background-color: #2e3436; color: #eeeeec; position: relative; - padding: 0px 10%; + padding: 20px 20px 10px 95px; + margin-left: auto; + margin-right: auto; +} +nav a { + text-decoration: none; + color: #eeeeec; + border: 0px; +} +nav a:hover { + text-decoration: none; + color: #eeeeec; + border: 0px; } -nav a { text-decoration: none; color: #eeeeec; border:0px;} -nav a:hover { text-decoration: none; color: #eeeeec; border:0px;} - nav #banner { display: block; position: absolute; @@ -79,23 +238,18 @@ nav #banner #logo-text a { font-weight: bold; margin-left: 3px; } - nav #user-menu { display: block; - width: auto; + width: auto; float: right; - margin-top: 22px; - margin-right: 10px; + margin: 3px 68px 0 0; position: relative; - vertical-align: middle; - background-color: #555753; - -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; - background: #555753 url("menu-user-pin.jpg") 98% center no-repeat; + clear: both; } nav #user-menu-label { float: left; @@ -103,63 +257,219 @@ nav #user-menu-label { padding: 3px 20px 9px 5px; height: 10px; } - ul#user-menu-popup { - display: none; - position: absolute; - background-color: #555753; - width: 100%; + display: none; + position: absolute; + background-color: #555753; + width: 100%; padding: 10px 0px; margin: 0px; - top: 20px; - left: 0px; - - -webkit-border-radius: 0px 0px 5px 5px; - -moz-border-radius: 0px 0px 5px 5px; - border-radius: 0px 0px 5px 5px; - - z-index: 10000; + top: 20px; + left: 0; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + z-index: 10000; +} +ul#user-menu-popup li { + display: block; +} +ul#user-menu-popup li a { + display: block; + padding: 5px; +} +ul#user-menu-popup li a:hover { + color: #2e3436; + background-color: #eeeeec; +} +ul#user-menu-popup li a.nav-sep { + border-top: 1px solid #eeeeec; +} +#nav-buttons { + clear: both; } - -ul#user-menu-popup li { display: block; } -ul#user-menu-popup li a { display: block; padding: 5px; } -ul#user-menu-popup li a:hover { color: #2e3436; background-color: #eeeeec; } -ul#user-menu-popup li a.nav-sep { border-top: 1px solid #eeeeec; } nav .nav-link { - float: right; - display: block; - width: 22px; - height: 22px; - /*border: 1px solid #eeeeec;*/ - overflow: hidden; - margin-top: 22px; - margin-right: 10px; - text-indent: 50px; - background: transparent url('icons.png') 0px 0px no-repeat; + float: right; + display: block; + width: 22px; + height: 22px; + overflow: hidden; + margin: 0px 5px 5px; + text-indent: 50px; + background: transparent url(icons.png) 0 0 no-repeat; +} +#nav-apps-link { + background-position: 0 -66px; +} +#nav-apps-link:hover { + background-position: -22px -66px; +} +#nav-community-link { + background-position: 0 -22px; +} +#nav-community-link:hover { + background-position: -22px -22px; +} +#nav-contacts-link { + background-position: 0 -22px; +} +#nav-contacts-link:hover { + background-position: -22px -22px; +} +#nav-directory-link { + background-position: -44px -154px; +} +#nav-directory-link:hover { + background-position: -66px -154px; +} +#nav-help-link { + background-position: 0 -110px; +} +#nav-help-link:hover { + background-position: -22px -110px; +} +#nav-home-link { + background-position: -44px -132px; +} +#nav-home-link:hover { + background-position: -66px -132px; +} +#nav-login-link { + background-position: 0 -88px; +} +#nav-login-link:hover { + background-position: -22px -88px; +} +#nav-logout-link { + background-position: 0 -88px; +} +#nav-logout-link:hover { + background-position: -22px -88px; +} +#nav-messages-link { + background-position: -44px -88px; +} +#nav-messages-link:hover { + background-position: -66px -88px; +} +#nav-notify-link, #nav-notifications-linkmenu { + background-position: -44px -110px; +} +#nav-notify-link:hover { + background-position: -66px -110px; +} +#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; +} +#profile-link, +#profile-title, +#wall-image-upload, +#wall-file-upload, +#profile-attach-wrapper, +#profile-audio, +#profile-link, +#profile-location, +#profile-nolocation, +#profile-title, +#jot-title, +#profile-upload-wrapper, +#profile-video, +#profile-jot-submit, +#wall-image-upload-div, +#wall-file-upload-div, +.icon, .hover, .focus, .pointer { + cursor: pointer; } - -#nav-directory-link { background-position: 0px -22px } -#nav-directory-link:hover { background-position: -22px -22px;} -#nav-search-link { background-position: 0px -44px } -#nav-search-link:hover { background-position: -22px -44px;} -#nav-apps-link { background-position: 0px -66px } -#nav-apps-link:hover { background-position: -22px -66px;} -#nav-login-link { background-position: 0px -88px } -#nav-login-link:hover { background-position: -22px -88px;} -#nav-help-link { background-position: 0px -110px } -#nav-help-link:hover { background-position: -22px -110px;} - - #notifications { - height: 20px; width: 100%; + height: 20px; + width: 100%; position: absolute; - top:-19px; left: 0px; + top: -19px; + left: 0; +} +/* 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; +} +#nav-notifications-menu { + margin-top: 30px; + width: 255px; + max-height: 400px; + overflow: auto; + font-size: 9pt; +} +#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 { + color: black; } -.nav-ajax-update { +#nav-notifications-menu a:hover { + color: black; + text-decoration: underline; +} +nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-linkmenu.selected .icon.s22.notify { + background-image: url("../../../images/icons/22/notify_on.png"); +} +.show { + display: block; +} +#nav-floater { + position: fixed; + top: 20px; + right: 1%; + padding: 5px; + background: #2e3436; + border-radius: 5px; + z-index: 100; +} +.floaterflip { + display: block; + position: fixed; + z-index: 110; + top: 53px; + right: 19px; + width: 22px; + height: 22px; + overflow: hidden; + margin: 0px; + background: transparent url(icons.png) -190px -60px no-repeat; +} +.nav-ajax-update, .nav-ajax-left { width: 30px; height: 19px; - background: transparent url('notifications.png') 0px 0px no-repeat; - color: #ffffff; + background: transparent url(notifications.png) 0 0 no-repeat; + color: #fff; font-weight: bold; font-size: 0.8em; padding-top: 0.2em; @@ -168,312 +478,666 @@ nav .nav-link { margin-right: -4px; display: none; } -#net-update { background-position: 0px 0px; } -#mail-update { background-position: -30px 0px; } -#notify-update { background-position: -60px 0px; } -#home-update { background-position: -90px 0px; } - +.nav-ajax-update.show, .nav-ajax-left.show { + display: block; +} +#net-update { + background-position: 0px 0px; +} +#mail-update { + background-position: -30px 0; +} +#notify-update { + background-position: -60px 0px; +} +#home-update { + background-position: -90px 0px; +} #lang-select-icon { cursor: pointer; position: absolute; - left: 0px; - top: 0px; + left: 0; + top: 0; } - #language-selector { - position: absolute; - top: 0; - left: 16px; + position: absolute; + top: 0; + left: 16px; + padding-right: 50px; +} +.menu-popup { + position: absolute; + display: none; + width: 11em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 0px; + list-style: none; + border: 3px solid #364e59; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +.menu-popup a { + display: block; + color: #2d2d2d; + padding: 5px 10px; + text-decoration: none; +} +.menu-popup a:hover { + background-color: #bdcdd4; +} +.menu-popup .menu-sep { + border-top: 1px solid #9eabb0; +} +.menu-popup li { + float: none; + overflow: auto; + height: auto; + display: block; +} +.menu-popup li img { + float: left; + width: 16px; + height: 16px; + padding-right: 5px; +} +.menu-popup .empty { + padding: 5px; + text-align: center; + color: #9eabb0; +} +.notif-item { + font-size: small; +} +.notif-item a { + vertical-align: middle; +} +.notif-image { + width: 32px; + height: 32px; + padding: 7px 7px 0px 0px; +} +.notify-seen { + background: #ddd; } - /** sysmsg **/ -#sysmsg_info{ - position:fixed; - bottom: 0px; right:20%; - -moz-box-shadow: 0px 0px 5px #888; - -webkit-box-shadow: 0px 0px 5px #888; - box-shadow: 0px 0px 5px #888; - padding: 10px; - background-color: #fcaf3e; border:2px solid #f8911b; - border-bottom:0px; - padding-bottom: 50px; - z-index: 1000; -} -#sysmsg { - position:fixed; - bottom: 0px; right:10%; - -moz-box-shadow: 0px 0px 5px #888; - -webkit-box-shadow: 0px 0px 5px #888; - box-shadow: 0px 0px 5px #888; - padding: 10px; - background-color: #fcaf3e; border:2px solid #f8911b; - border-bottom:0px; - padding-bottom: 50px; - z-index: 1000; +#sysmsg_info { + position:fixed; + bottom:0; + -moz-box-shadow:0 0 5px #888; + -webkit-box-shadow:0 0 5px #888; + box-shadow:0 0 5px #888; + padding: 10px; + background-color:#fcaf3e; + border:2px solid #f8911b; + border-bottom:0; + padding-bottom: 50px; + z-index:1000; +} +#sysmsg { + position:fixed; + bottom:0; + -moz-box-shadow:0 0 5px #888; + -webkit-box-shadow:0 0 5px #888; + box-shadow:0 0 5px #888; + padding: 10px; + background-color:#fcaf3e; + border:2px solid #f8911b; + border-bottom:0; + padding-bottom: 50px; + z-index:1000; } #sysmsg_info br, #sysmsg br { display:block; margin:2px 0px; - border-top: 1px solid #ccccce; + border-top:1px solid #ccccce; } - /** * aside **/ - aside { position: absolute; - right: 11%; - width: 200px; - font-size: 0.7em; - + right: 8%; + width: 20.5%; + font-size: smaller; +} +.vcard .fn { + font-size: 1.7em; + font-weight: 700; + border-bottom: 1px solid #729fcf; + padding-top: 1px; +} +.vcard #profile-photo-wrapper { + margin: 10px 0px; +} +aside h4 { + font-size: 1.2em; } -.vcard .fn { font-size: 1.7em; font-weight: bold; border-bottom: 1px solid #729fcf; padding-top: 1px;} - -.vcard #profile-photo-wrapper { margin: 10px 0px } - -aside h4 { font-size: 1.2em; } - -aside #viewcontacts { text-align: right;} - -#profile-extra-links ul { margin-left: 0px; padding-left: 0px; list-style: none; } +aside #viewcontacts { + text-align: right; +} +#profile-extra-links ul { + margin-left: 0px; + padding-left: 0px; + list-style: none; +} #dfrn-request-link { - background: #3465A4 url('connect.png') no-repeat 95% center; - border-radius: 5px 5px 5px 5px; - color: #FFFFFF; - display: block; - font-size: 1.2em; - padding: 0.2em 0.5em; + background:#3465A4 url(connect.png) no-repeat 95% center; + border-radius:5px 5px 5px 5px; + color:#fff; + display:block; + font-size:1.2em; + padding:.2em .5em; } - - #netsearch-box { margin: 30px 0px; } + /** * contacts block */ -.contact-block-div { width: 50px; height: 50px; float: left; } -.contact-block-textdiv { width: 150px; height: 34px; float: left; } -#contact-block-end { clear: both; } +.contact-block-div { + width: 50px; + height: 50px; + float: left; +} +.contact-block-textdiv { + width: 150px; + height: 34px; + float: left; +} +#contact-block-end { + clear: both; +} + /** * jot - **/ -#profile-jot-text_tbl { margin-bottom: 10px; } -#profile-jot-text_ifr { width: 99.9%!important } -#profile-jot-submit-wrapper { float: right;} -#profile-jot-perms { - float: right; - background-color: #555753; - height: 22px; width: 20px; - -webkit-border-radius: 0px 5px 5px 0px; - -moz-border-radius: 0px 5px 5px 0px; - border-radius: 0px 5px 5px 0px; - overflow: hidden; - border: 0px; - margin-left:2px; -} -#profile-jot-submit { - float: right; - height: 22px; - background-color: #555753; - color: #eeeeec; - -webkit-border-radius: 5px 0px 0px 5px; - -moz-border-radius: 5px 0px 0px 5px; - border-radius: 5px 0px 0px 5px; - border: 0px; - margin-top: 0px; + **/ +#jot { + /*width: 785px;*/ + margin: 0px 0 20px 0px; + width: 100%; +} +#jot #jot-tools { + margin: 0px; + padding: 0px; + height: 40px; + overflow: none; + width: 100%; + /*background-color: #0e232e;*/ + /*border-bottom: 2px solid #9eabb0;*/ +} +#jot #jot-tools span { + float: left; + margin: 10px 20px 2px 0px; +} +#jot #jot-tools span a { + display: block; + /*color: #cccccc; */ + /*width: 100%; */ + /*height: 40px; */ + /*text-align: center;*/ + /*line-height: 40px; */ + /*overflow: hidden;*/ +} +/*#jot #jot-tools li:hover {*/ + /*background-color: #364e59;*/ +/*}*/ +#jot #jot-tools .perms { + float: right; + width: 40px; +} +/*#jot #jot-tools .perms a.unlock {*/ +/* width: 30px; */ +/* border-left: 10px solid #cccccc;*/ +/* background-color: #cccccc; */ +/*}*/ +/*#jot #jot-tools .perms a.lock {*/ +/* width: 30px; */ +/* border-left: 10px solid #666666;*/ +/* background-color: #666666; */ +/*}*/ +/*#jot #jot-tools li.submit { */ +/* float: right; */ +/* background-color: #cccccc; */ +/* border-bottom: 2px solid #cccccc; */ +/* border-right: 1px solid #666666; */ +/* border-left: 1px solid #666666; */ +/*} */ +/*#jot #jot-tools li.submit input { */ +/* border: 0px; */ +/* margin: 0px; */ +/* padding: 0px; */ +/* background-color: #cccccc; */ +/* color: #666666; */ +/* width: 80px; */ +/* height: 40px; */ +/* line-height: 40px; */ +/*} */ +/*#jot #jot-tools li.submit input:hover {*/ +/* background-color: #bdcdd4; */ +/* color: #666666; */ +/*} */ +#jot #jot-tools li.loading { + float: right; + background-color: #ffffff; + width: 20px; + vertical-align: center; + text-align: center; + border-top: 2px solid #9eabb0; + height: 38px; +} +#jot #jot-tools li.loading img { + margin-top: 10px; +} +#jot #jot-title { + border: 0px; + margin: 0px; + height: 20px; + width: 100%; + font-weight: bold; + border: 1px solid #ffffff; + border-radius: 5px; +} +#jot #jot-title:-webkit-input-placeholder { + font-weight: normal; +} +#jot #jot-title:-moz-placeholder { + font-weight: normal; +} +#jot #jot-title:placeholder { + font-weight: normal; +} +#jot #jot-title:hover, +#jot #jot-title:focus { + border: 1px solid #999999; + border-radius: 5px; +} +#jot #character-counter { + width: 80px; + float: right; + text-align: right; + height: 20px; + line-height: 20px; + padding-right: 20px; +} +#profile-jot-text_tbl { + margin-bottom: 10px; +} +#profile-jot-text_ifr { + width:99.900002% !important; +} +#profile-attach-wrapper, +#profile-audio, +#profile-link-wrapper, +#profile-location, +#profile-nolocation, +#profile-title-wrapper, +#profile-upload-wrapper, +#profile-video { + float: left; + margin-left: 10px; } #character-counter { - float: right; padding: 8px 10px; + float:right; + padding:8px 10px; } #profile-rotator-wrapper { - float: right; -} - -.jot-tool { - float: left; - margin-right: 5px; + float: right; } #profile-jot-tools-end, -#profile-jot-banner-end { clear: both; } - +#profile-jot-banner-end { + clear: both; +} #profile-jot-email-wrapper { - margin: 10px 10% 0px 10%; - border: 1px solid #555753; - border-bottom: 0px; + margin:10px 10% 0; + border:1px solid #555753; + border-bottom:0; +} +#profile-jot-email-label { + background-color:#555753; + color:#ccccce; + padding:5px; +} +#profile-jot-email { + width:90%; + margin:5px; } -#profile-jot-email-label { background-color: #555753; color: #ccccce; padding: 5px;} -#profile-jot-email { margin: 5px; width: 90%; } - #profile-jot-networks { - margin: 0px 10%; + margin: 0 10%; border: 1px solid #555753; - border-top: 0px; - border-bottom: 0px; + border-top: 0; + border-bottom: 0; padding: 5px; } +#jot-preview-link { + margin: 0 0 0 25px; + border: 0; + text-decoration: none; +} +.icon-text-preview { + margin: 0 0 -18px 0; + display: block; + width: 20px; + height: 20px; + background: url(icons.png) no-repeat -128px -40px; + border: 0; + text-decoration: none; +} +#profile-jot-perms { + /*float: right;*/ + background-color: #555753; + height: 22px; + width: 20px; + -webkit-border-radius: 5px 0px 0px 5px; + -moz-border-radius: 5px 0px 0px 5px; + border-radius: 5px 0px 0px 5px; + overflow: hidden; + border: 0px; + margin: 0 -4px 0 10px; +} +#profile-jot-submit-wrapper { + float: right; + width: 30%; + list-style: none; + margin: 10px 0 0 0; + padding: 0; +} +#profile-jot-submit-wrapper li { + display: inline-block; + vertical-align: middle; +} +#profile-jot-submit { + height: 22px; + background-color: #555753; + color: #eeeeec; + -webkit-border-radius: 0 5px 5px 0; + -moz-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; + border: 0; + margin: 0; +} +#jot-perms-icons { + background-color: #555753; + height: 22px; + width: 20px; + -webkit-border-radius: 0 5px 5px 0; + -moz-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; + overflow: hidden; + border: 0; + margin: 0 0 0 94.4%; +} #profile-jot-acl-wrapper { - margin: 0px 10px; + margin: 0 10px; border: 1px solid #555753; - border-top: 0px; - display:block!important; + border-top: 0; + display: block !important; } #group_allow_wrapper, #group_deny_wrapper, -#acl-permit-outer-wrapper { width: 47%; float: left; } - +#acl-permit-outer-wrapper { + width:47%; + float:left; +} #contact_allow_wrapper, #contact_deny_wrapper, -#acl-deny-outer-wrapper { width: 47%; float: right; } - -#acl-permit-text {background-color: #555753; color: #ccccce; padding: 5px; float: left;} -#jot-public {background-color: #555753; color: #ff0000; padding: 5px; float: left;} -#acl-deny-text {background-color: #555753; color: #ccccce; padding: 5px; float: left;} - +#acl-deny-outer-wrapper { + width:47%; + float:right; +} +#acl-permit-text { + background-color: #555753; + color: #ccccce; + padding: 5px; + float: left; +} +#jot-public { + background-color: #555753; + color: #ff0000; + padding: 5px; + float: left; +} +#acl-deny-text { + background-color: #555753; + color: #ccccce; + padding: 5px; + float: left; +} #acl-permit-text-end, -#acl-deny-text-end { clear: both; } - - -#jot-title-desc { +#acl-deny-text-end { + clear: both; +} +#jot-title-desc, #profile-jot-desc { color: #cccccc; } - #jot-title-wrapper { margin-bottom: 5px; } - #jot-title { border: 1px solid #cccccc; - width: 530px; + width: 90%; } #jot-title-display { font-weight: bold; } +.jothidden { + display: none; +} +#jot-preview-content { + background-color: #ffffe0; + border: 1px #aaaa00 solid; + border-radius: 3px; + padding: 3px 3px 6px 10px; +} /** * section */ -section { margin: 10px 11% 0px 11%; font-size: 0.8em; padding-right: 230px;} +section { + margin: 20px 9% 0 9%; + font-size: 0.8em; + padding-right: 250px; +} /** tabs **/ -.tabs {list-style: none; padding: 0px; margin: 0px; border-bottom: 1px solid #729fcf; } -.tabs li { display: inline;} -.tab { padding: 0px 5px; margin-right: 10px; } -.tab:hover { background-color: #729fcf; color: #eeeeec; border: 0px; } -.tab.active { background-color: #729fcf; color: #eeeeec; border: 0px; } +.tabs { + list-style: none; + margin: 0; + padding: 0; + border-bottom: 1px solid #729fcf; + font-size: 14px; +} +.tabs li { + display: inline; +} +.tab { + padding: 0 5px; +} +.tab:hover { + background-color: #729fcf; + color: #eeeeec; + border: 0px; +} +.tab:active { + background-color: #729fcf; + color: #eeeeec; + border: 0px; +} /** * items */ .wall-item-outside-wrapper { - margin-top: 50px; + margin-top: 15px; +} +.wall-item-outside-wrapper-end { + clear: both; +} +.wall-item-content-wrapper { + position: relative; + border-top: 1px #aaa solid; + padding: 10px; +} +.wall-item-outside-wrapper .wall-item-comment-wrapper { + /*margin-left: 90px;*/ +} +.wall-item-content-wrapper.shiny { + background: #efefcf; + border-right: 3px solid #ffd398; +} +.wall-item-content { + overflow-x: auto; +} +[id^="tread-wrapper"], [class^="tread-wrapper"] { + margin: 5px 0; + border: 1px #aaa solid; + border-radius: 5px; + padding: 10px; +} +.wall-item-photo-menu { + display: none; } -.wall-item-outside-wrapper-end { clear: both;} -.wall-item-content-wrapper { position: relative; } -.wall-item-photo-menu { display: none;} .wall-item-photo-menu-button { - display:none; - text-indent: -99999px; - background: #555753 url("menu-user-pin.jpg") no-repeat 75px center; - position: absolute; - overflow: hidden; - height: 20px; width: 90px; - top: 85px; left: 0px; - -webkit-border-radius: 0px 0px 5px 5px; - -moz-border-radius: 0px 0px 5px 5px; - border-radius: 0px 0px 5px 5px; - - -} - -.wall-item-info { float: left; width: 140px; } -.wall-item-photo-wrapper { - width: 80px; height: 80px; - position: relative; - padding: 5px; - background-color: #555753; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; + display:none; + text-indent:-99999px; + background:#555753 url(menu-user-pin.jpg) no-repeat 75px center; + position:absolute; + overflow:hidden; + height:20px; + width:90px; + top:85px; + left:0; + -webkit-border-radius:0 0 5px 5px; + -moz-border-radius:0 0 5px 5px; + border-radius:0 0 5px 5px; +} +.wall-item-info { + float: left; + width: 110px; +} +.wall-item-photo-wrapper { + width: 80px; + height: 80px; + position: relative; + padding: 5px; + background-color: #555753; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; } - - -.wall-item-tools { - float: right; - /*height: 0px; - padding-top: 20px; - overflow:hidden; - background: #ffffff url("icons.png") no-repeat -50px -40px;*/ - filter: alpha(opacity=20); - opacity: 0.2; - -webkit-transition: all 1s ease-in-out; - -moz-transition: all 1s ease-in-out; - -o-transition: all 1s ease-in-out; - -ms-transition: all 1s ease-in-out; - transition: all 1s ease-in-out; +[class^="wall-item-tools"] > *, [class^="wall-item-tools"] > * > * { + margin: 0 0 10px 0; +} +.wall-item-tools { + float: right; + filter: alpha(opacity=35); + opacity: 0.4; + -webkit-transition: all 1s ease-in-out; + -moz-transition: all 1s ease-in-out; + -o-transition: all 1s ease-in-out; + -ms-transition: all 1s ease-in-out; + transition: all 1s ease-in-out; } .wall-item-tools:hover { - /*height:auto;*/ - filter: alpha(opacity=100); - opacity: 1; - -webkit-transition: all 1s ease-in-out; - -moz-transition: all 1s ease-in-out; - -o-transition: all 1s ease-in-out; - -ms-transition: all 1s ease-in-out; - transition: all 1s ease-in-out; - + filter: alpha(opacity=100); + opacity: 1; + -webkit-transition: all 1s ease-in-out; + -moz-transition: all 1s ease-in-out; + -o-transition: all 1s ease-in-out; + -ms-transition: all 1s ease-in-out; + transition: all 1s ease-in-out; +} +.wall-item-title { + font-size: 1.2em; + font-weight: bold; + margin-bottom: 1em; +} +.wall-item-body { + margin: 10px 10px 10px 0px; + text-align: left; +} +.wall-item-lock-wrapper { + float: right; } - -.wall-item-title { font-size: 1.2em; font-weight: bold;} -.wall-item-body { margin-left: 140px;} -.wall-item-lock-wrapper { float: right; } .wall-item-dislike, -.wall-item-like, -.wall-item-author { clear: left; font-size: 0.8em; margin: 10px 0px 0px 140px; color: #babdb6;} -.wall-item-ago { display: inline; padding-left: 10px;} -.wall-item-wrapper-end { clear:both; } +.wall-item-like { + clear: left; + font-size: 0.8em; + color: #878883; + margin: 20px 0 0 140px; +} +.wall-item-author, .wall-item-actions-author { + clear: left; + font-size: 0.8em; + color: #878883; + margin: 20px 0 0 140px; +} +.wall-item-ago { + display: inline; + padding-left: 10px; +} +.wall-item-wrapper-end { + clear:both; +} .wall-item-location { - margin-top:5px; - width: 100px; - overflow: hidden; - text-overflow: ellipsis; - -o-text-overflow: ellipsis; + margin-top: 5px; + width: 100px; + overflow:hidden; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; +} +.wall-item-location .icon { + float: left; +} +.wall-item-location > a { + margin-left: 25px; + font-size: 0.7em; + display: block; +} +.wall-item-location .smalltext { + margin-left: 25px; + font-size: 0.7em; + display: block; +} +.wall-item-location > br { + display: none; } -.wall-item-location .icon { float: left; } -.wall-item-location > a { margin-left: 25px; font-size: 0.7em; display: block;} -.wall-item-location .smalltext { margin-left: 25px; font-size: 0.7em; display: block;} -.wall-item-location > br { display: none; } - .wallwall .wwto { - left: -10px; + left:-10px; margin: 0; - position: absolute; - top: 65px; + position:absolute; + top:65px; width: 30px; - z-index: 10001; - width: 30px; - height: 30px; - + z-index:10001; + width:30px; + height:30px; +} +.wallwall .wwto img { + width: 30px !important; + height: 30px !important; +} +.wallwall .wall-item-photo-end { + clear: both; } -.wallwall .wwto img { width: 30px!important; height: 30px!important;} -.wallwall .wall-item-photo-end { clear: both; } .wall-item-arrowphoto-wrapper { position: absolute; left: 20px; top: 70px; z-index: 10002; } - .wall-item-photo-menu { min-width: 92px; border: 2px solid #FFFFFF; @@ -487,85 +1151,158 @@ section { margin: 10px 11% 0px 11%; font-size: 0.8em; padding-right: 230px;} -moz-border-radius: 0px 5px 5px 5px; border-radius: 0px 5px 5px 5px; } -.wall-item-photo-menu ul { margin:0px; padding: 0px; list-style: none } -.wall-item-photo-menu li a { white-space: nowrap; display: block; padding: 5px 2px; color: #eeeeec; } -.wall-item-photo-menu li a:hover { color: #555753; background: #eeeeec; } +.wall-item-photo-menu ul { + margin:0px; + padding: 0px; + list-style: none; +} +.wall-item-photo-menu li a { + white-space: nowrap; + display: block; + padding: 5px 2px; + color: #eeeeec; +} +.wall-item-photo-menu li a:hover { + color: #555753; + background: #eeeeec; +} +#item-delete-selected { + overflow: auto; + width: 100%; +} + -.icon.drop, -.icon.drophide { float: left; } -#item-delete-selected { overflow: auto; width: 100%} /** * comment */ - - .ccollapse-wrapper { font-size: 0.9em; margin-left: 80px; } - -.wall-item-outside-wrapper.comment { margin-left: 80px; } -.wall-item-outside-wrapper.comment .wall-item-photo { width: 40px!important; height: 40px!important;} -.wall-item-outside-wrapper.comment .wall-item-photo-wrapper {width: 40px; height: 40px; } +.ccollapse-wrapper { + font-size: 0.9em; + margin-left: 80px; +} + +.wall-item-outside-wrapper.comment { + margin-left: 80px; +} +.wall-item-outside-wrapper.comment .wall-item-photo { + width: 40px!important; + height: 40px!important; +} +.wall-item-outside-wrapper.comment .wall-item-photo-wrapper { + width: 40px; + height: 40px; +} .wall-item-outside-wrapper.comment .wall-item-photo-menu-button { - width: 50px; top: 45px; background-position: 35px center; + width: 50px; + top: 45px; + background-position: 35px center; +} +.wall-item-outside-wrapper.comment .wall-item-info { + width: 60px; +} +.wall-item-outside-wrapper.comment .wall-item-body { + margin-left: 10px; +} +.wall-item-outside-wrapper.comment .wall-item-actions-author { + margin-left: 60px; } -.wall-item-outside-wrapper.comment .wall-item-info { width: 60px; } -.wall-item-outside-wrapper.comment .wall-item-body { margin-left: 60px;} -.wall-item-outside-wrapper.comment .wall-item-author { margin-left: 60px;} .wall-item-outside-wrapper.comment .wall-item-photo-menu { - min-width: 50px; - top: 60px; + min-width: 50px; + top: 60px; +} +.comment-wwedit-wrapper { + /*margin: 30px 0px 0px 80px;*/ +} +.comment-edit-wrapper { + border-top: 1px #aaa solid; } - - -.comment-wwedit-wrapper, -.comment-edit-wrapper { margin: 30px 0px 0px 80px;} .comment-wwedit-wrapper img, -.comment-edit-wrapper img { width: 20px; height: 20px; } -.comment-edit-photo-link { float: left; width: 40px;} -.comment-edit-text-empty { width: 80%; height: 20px; border: 0px; color: #babdb6; +.comment-edit-wrapper img { + width: 20px; + height: 20px; +} +.comment-edit-photo-link { + float: left; + width: 40px; +} +.my-comment-photo { + width: 40px; + height: 40px; + padding: 5px; +} +[class^="comment-edit-text"] { + margin: 5px 0 10px 20px; + width: 86.5%; +} +.comment-edit-text-empty { + height: 20px; + border: 2px #babdd6 solid; + border-radius: 5px; + color: #babdb6; -webkit-transition: all 0.5s ease-in-out; -moz-transition: all 0.5s ease-in-out; -o-transition: all 0.5s ease-in-out; -ms-transition: all 0.5s ease-in-out; transition: all 0.5s ease-in-out; } -.comment-edit-text-empty:hover { color: #999999;} -.comment-edit-text-full { width: 80%; height: 6em; +.comment-edit-text-empty:hover { + color: #999999; +} +.comment-edit-text-full { + height: 10em; + border-radius: 5px; -webkit-transition: all 0.5s ease-in-out; -moz-transition: all 0.5s ease-in-out; -o-transition: all 0.5s ease-in-out; -ms-transition: all 0.5s ease-in-out; transition: all 0.5s ease-in-out; } -.comment-edit-submit-wrapper { width: 80%; margin-left: 40px; text-align: right; } +.comment-edit-submit-wrapper { + width: 90%; + margin-left: 0px; + text-align: right; +} .comment-edit-submit { - height: 22px; - background-color: #555753; - color: #eeeeec; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - border: 0px; + height: 22px; + background-color: #555753; + color: #eeeeec; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + border: 0; } + /** * item text style **/ .wall-item-body code { - border-color: #CCCCCC; - border-style: solid; - border-width: 1px 1px 1px 10px; - display: block; - padding-left: 10px; + display:block; + padding-left:10px; + border-color:#ccc; + border-style:solid; + border-width:1px 1px 1px 10px; } + /** * profile **/ - -div[id$="text"] { font-weight: bold; border-bottom: 1px solid #cccccc; } -div[id$="wrapper"] { height: 100%; margin-bottom: 1em; } -div[id$="wrapper"] br { clear: left; } -#advanced-profile-with { margin-left: 200px; } +div[id$="text"] { + font-weight: bold; + border-bottom: 1px solid #ccc; +} +div[id$="wrapper"] { + height: 100%; + margin-bottom: 1em; +} +div[id$="wrapper"] br { + clear: left; +} +#advanced-profile-with { + margin-left: 200px; +} + /** * photos @@ -575,202 +1312,333 @@ div[id$="wrapper"] br { clear: left; } overflow: auto; } #photo-top-links { - margin-bottom:30px; + margin-bottom: 30px; } .photo-album-image-wrapper, -.photo-top-image-wrapper { - float: left; - margin: 0px 10px 10px 0px; - -moz-box-shadow: 0px 0px 5px #888; - -webkit-box-shadow: 0px 0px 5px #888; - box-shadow: 0px 0px 5px #888; - background-color: #eeeeee; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - - padding-bottom: 30px; - position:relative; - +.photo-top-image-wrapper { + float: left; + -moz-box-shadow: 0 0 5px #888; + -webkit-box-shadow: 0 0 5px #888; + box-shadow: 0 0 5px #888; + background-color: #eee; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding-bottom: 30px; + position: relative; + margin: 0 10px 10px 0; } -#photo-photo { max-width: 100% } -#photo-photo img { max-width: 100% } - +#photo-photo { + max-width: 100%; +} +#photo-photo img { + max-width: 100%; +} .photo-top-image-wrapper a:hover, #photo-photo a:hover, -.photo-album-image-wrapper a:hover { - border-bottom: 0px; +.photo-album-image-wrapper a:hover { + border-bottom: 0; } - -.photo-top-photo, -.photo-album-photo { - -webkit-border-radius: 5px 5px 0px 0px; - -moz-border-radius: 5px 5px 0px 0px; - border-radius: 5px 5px 0px 0px; - } - -.photo-top-album-name { position: absolute; bottom: 0px; padding: 0px 5px;} -.caption { position: absolute; bottom: 0px; margin: 0px 5px} - - -#photo-photo{ +.photo-top-photo,.photo-album-photo { + -webkit-border-radius:5px 5px 0 0; + -moz-border-radius:5px 5px 0 0; + border-radius:5px 5px 0 0; +} +.photo-top-album-name { + position: absolute; + bottom: 0; + padding: 0 5px; +} +.caption { + position: absolute; + bottom: 0; + margin: 0 5px; +} +#photo-photo { position: relative; float:left; } -#photo-photo-end { clear: both; } -#photo-prev-link, -#photo-next-link{ - position: absolute; - width:30%; - height: 100%; - background-color: rgba(255,255,255,0.5); - opacity: 0; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - -ms-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; - background-position: center center; - background-repeat: no-repeat; - +#photo-photo-end { + clear: both; } -#photo-prev-link { left:0px; top:0px; background-image: url('prev.png'); } -#photo-next-link { right:0px; top:0px; background-image: url('next.png');} - -#photo-prev-link a, -#photo-next-link a{ - display: block; width: 100%; height: 100%; - overflow: hidden; - text-indent: -900000px; +#photo-prev-link, +#photo-next-link { + position:absolute; + width:30%; + height:100%; + background-color:rgba(255,255,255,0.5); + opacity:0; + -webkit-transition:all .2s ease-in-out; + -moz-transition:all .2s ease-in-out; + -o-transition:all .2s ease-in-out; + -ms-transition:all .2s ease-in-out; + transition:all .2s ease-in-out; + background-position:center center; + background-repeat:no-repeat; +} +#photo-prev-link { + left:0; + top:0; + background-image:url(prev.png); +} +#photo-next-link { + right:0; + top:0; + background-image:url(next.png); +} + +#photo-prev-link a,#photo-next-link a { + display:block; + width:100%; + height:100%; + overflow:hidden; + text-indent:-900000px; } - #photo-prev-link:hover, -#photo-next-link:hover{ - opacity: 1; - -webkit-transition: all 0.2s ease-in-out; - -moz-transition: all 0.2s ease-in-out; - -o-transition: all 0.2s ease-in-out; - -ms-transition: all 0.2s ease-in-out; - transition: all 0.2s ease-in-out; +#photo-next-link:hover { + opacity:1; + -webkit-transition:all .2s ease-in-out; + -moz-transition:all .2s ease-in-out; + -o-transition:all .2s ease-in-out; + -ms-transition:all .2s ease-in-out; + transition:all .2s ease-in-out; } - #photo-next-link .icon, -#photo-prev-link .icon { display: none } - +#photo-prev-link .icon { + display: none; +} #photos-upload-spacer, #photos-upload-new-wrapper, -#photos-upload-exist-wrapper { margin-bottom: 1em; } +#photos-upload-exist-wrapper { + margin-bottom: 1em; +} #photos-upload-existing-album-text, -#photos-upload-newalbum-div { - background-color: #555753; - color: #eeeeec; - padding: 1px; +#photos-upload-newalbum-div { + background-color:#555753; + color:#eeeeec; + padding:1px; } #photos-upload-album-select, -#photos-upload-newalbum { width: 99% } -#photos-upload-perms-menu { text-align: right; } +#photos-upload-newalbum { + width: 99%; +} +#photos-upload-perms-menu { + text-align: right; +} /** * message */ -.prvmail-text { width: 100%;} -#prvmail-subject { width: 100%;} -#prvmail-submit-wrapper { margin-top: 10px; } +.prvmail-text { + width: 100%; +} +#prvmail-subject { + width: 100%; +} +#prvmail-submit-wrapper { + margin-top: 10px; +} #prvmail-submit { - float: right; - margin-top: 0px; + float:right; + margin-top: 0; } #prvmail-submit-wrapper > div { - margin-right: 5px; - float: left; + margin-right:5px; + float:left; +} +.mail-list-outside-wrapper { + margin-top: 20px; +} +.mail-list-sender { + float: left; +} +.mail-list-detail { + margin-left: 90px; +} +.mail-list-sender-name { + display: inline; +} +.mail-list-date { + display: inline; + font-size: 0.8em; + padding-left: 10px; +} +.mail-list-subject { + font-size: 1.5em; +} +.mail-list-delete-wrapper { + float: right; +} +.mail-list-outside-wrapper-end { + clear: both; +} +.mail-conv-sender { + float: left; + margin: 0px 5px 5px 0px; +} +.mail-conv-sender-photo { + width: 32px; + height: 32px; +} +.mail-conv-sender-name { + float: left; +} +.mail-conv-date { + float: right; +} +.mail-conv-subject { + clear: right; + font-weight: bold; + font-size: 1.2em; +} +.mail-conv-body { + clear: both; +} +.mail-conv-delete-wrapper { + margin-top: 5px; } -.mail-list-outside-wrapper { margin-top: 20px;} -.mail-list-sender { float: left; } -.mail-list-detail { margin-left: 90px; } -.mail-list-sender-name { display: inline; } -.mail-list-date { display: inline; font-size: 0.8em; padding-left: 10px;} -.mail-list-subject { font-size: 1.5em;} -.mail-list-delete-wrapper { float: right; } -.mail-list-outside-wrapper-end { clear: both;} - -.mail-conv-sender {float: left; margin: 0px 5px 5px 0px } -.mail-conv-sender-photo { width: 32px; height: 32px } -.mail-conv-sender-name { float: left } -.mail-conv-date { float: right } -.mail-conv-subject { clear: right; font-weight: bold; font-size: 1.2em } -.mail-conv-body { clear: both; } -.mail-conv-delete-wrapper { margin-top: 5px; } /** * contacts */ - .view-contact-wrapper, -.contact-entry-wrapper { float: left; margin-right: 20px; margin-bottom: 20px; width: 120px; height: 120px; position: relative;} -.contact-entry-direction-wrapper {position: absolute; top: 20px;} -.contact-entry-edit-links { position: absolute; top: 60px; } +.contact-entry-wrapper { + float: left; + margin-right: 20px; + margin-bottom: 20px; + width: 120px; + /*height: 120px;*/ + position: relative; +} +.contact-direction-wrapper { + position: absolute; + top: 20px; +} +.contact-edit-links { + position: absolute; + top: 60px; +} +.contact-entry-photo-wrapper { + +} .contact-entry-photo { - margin-left:20px; + margin-left: 20px; +} +.contact-entry-name { + width: 120px; + font-weight: bold; + /*overflow: hidden;*/ } -.contact-entry-name { width: 120px; overflow: hidden; } .contact-entry-photo { position: relative; } - -.contact-entry-edit-links .icon { - border: 1px solid #babdb6; +.contact-entry-edit-links .icon { + border: 1px solid #babdb6; -webkit-border-radius: 3px; -moz-border-radius: 3px; - border-radius: 3px; - background-color: #ffffff; + border-radius: 3px; + background-color: #fff; +} +#contact-entry-url, [id^="contact-entry-url"] { + font-size: smaller; + /*overflow: scroll;*/ +} +#contact-entry-network, [id^="contact-entry-network"] { + font-size: smaller; + font-style: italic; +} +#contact-edit-banner-name { + font-size: 1.5em; +} +#contact-edit-photo-wrapper { + position: relative; + float: left; + padding: 20px; +} +#contact-edit-direction-icon { + position:absolute; + top:60px; + left:0; +} +#contact-edit-nav-wrapper { + margin-left: 0px; +} +#contact-edit-links { + margin-top: 23px; +} +#contact-edit-links ul { + list-style-type: none; +} +#contact-drop-links { + margin-left:5px; } - -#contact-edit-banner-name { font-size: 1.5em; } -#contact-edit-photo-wrapper {position: relative; float: left; padding: 20px;} -#contact-edit-direction-icon { position: absolute; top: 60px; left:0px;} -#contact-edit-nav-wrapper { margin-left: 210px; } -#contact-edit-links { float: left; margin-top: 23px; } -#contact-drop-links { margin-left: 5px; } #contact-edit-nav-wrapper .icon { border: 1px solid #babdb6; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } -#contact-edit-poll-wrapper { margin-left: 50px; } -#contact-edit-last-update-text { margin-bottom: 15px; } -#contact-edit-last-updated { font-weight: bold; } -#contact-edit-poll-text { display: inline; } -#contact-edit-end { clear: both; margin-bottom: 65px;} +#contact-edit-poll-wrapper { + margin-left: 0px; +} +#contact-edit-last-update-text { + margin-bottom: 15px; +} +#contact-edit-last-updated { + font-weight: bold; +} +#contact-edit-poll-text { + display: inline; +} +#contact-edit-info_tbl, #contact-edit-info_parent { + width: 100%; +} +.mceLayout { + width: 100%; +} +#contact-edit-end { + clear: both; + margin-bottom: 65px; +} .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; - + 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; + 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: #fff; + background: #3465A4; + text-decoration: none; } -.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; } @@ -779,96 +1647,121 @@ div[id$="wrapper"] br { clear: left; } */ #id_openid_url, .openid { - background: url(login-bg.gif) no-repeat; - background-position: 0 50%; - padding-left: 18px; + background:url(login-bg.gif) no-repeat; + background-position:0 50%; + padding-left:18px; } - + #settings-nickname-desc { - background-color: #DDEFFF; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - padding: 5px; + background-color:#DDEFFF; + -webkit-border-radius:5px; + -moz-border-radius:5px; + border-radius:5px; + padding:5px; } #register-form div, -#profile-edit-form div { - clear: both; +#profile-edit-form div { + clear: both; } #register-form label, #profile-edit-form label { - width: 300px; float: left; + width: 300px; + float: left; } #register-form span, -#profile-edit-form span { - color: #555753; - display:block; - margin-bottom: 20px; +#profile-edit-form span { + color:#555753; + display:block; + margin-bottom:20px; } .settings-submit-wrapper, -.profile-edit-submit-wrapper { margin: 30px 0px;} -.profile-listing { float: left; margin: 20px 20px 0px 0px} - -#profile-edit-links ul { margin: 20px 0px; padding: 0px; list-style: none; } +.profile-edit-submit-wrapper { + margin: 30px 0px; +} +.profile-edit-side-div { + margin-top: 10px; +} +.profile-edit-side-link { + float: right; + margin: 10px 20px -16px 0; +} +.profile-listing { + float: left; + margin: 20px 20px 0px 0px; +} +#profile-edit-links ul { + margin: 20px 0; + padding: 0; + list-style: none; +} -#register-sitename { display: inline; font-weight: bold;} +#register-sitename { + display: inline; + font-weight: bold; +} /** * contacts selector */ -#group-edit-desc { margin: 10px 0xp; } +#group-edit-desc { + margin: 10px 0px; +} #group-members, #prof-members { - height: 200px; - overflow: auto; - border: 1px solid #555753; - -webkit-border-radius: 5px 5px 0px 0px; - -moz-border-radius: 5px 5px 0px 0px; - border-radius: 5px 5px 0px 0px; + height:200px; + overflow:auto; + border:1px solid #555753; + -webkit-border-radius:5px 5px 0 0; + -moz-border-radius:5px 5px 0 0; + border-radius:5px 5px 0 0; } #group-all-contacts, -#prof-all-contacts { - height: 200px; - overflow: auto; - border: 1px solid #555753; - -webkit-border-radius: 0px 0px 5px 5px; - -moz-border-radius: 0px 0px 5px 5px; - border-radius: 0px 0px 5px 5px; +#prof-all-contacts { + height:200px; + overflow:auto; + border:1px solid #555753; + -webkit-border-radius:0 0 5px 5px; + -moz-border-radius:0 0 5px 5px; + border-radius:0 0 5px 5px; } #group-members h3, #group-all-contacts h3, #prof-members h3, -#prof-all-contacts h3{ - color: #eeeeec; - background-color: #555753; - margin: 0px; - padding: 5px; +#prof-all-contacts h3 { + color:#eeeeec; + background-color:#555753; + margin:0; + padding:5px; } #group-separator, -#prof-separator { display: none;} +#prof-separator { + display: none; +} /** * profile */ -#cropimage-wrapper { float:left; } -#crop-image-form { clear:both; } +#cropimage-wrapper { + float:left; +} +#crop-image-form { + clear:both; +} /** * events **/ - .clear { clear: both; } .eventcal { - float: left; - font-size: 20px; + float:left; + font-size:20px; } - .vevent { - border: 1px solid #CCCCCC; + border:1px solid #ccc; } .vevent .event-description, .vevent .event-location { margin-left: 10px; @@ -882,122 +1775,220 @@ div[id$="wrapper"] br { clear: left; } #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; } - .event-start .dtstart, .event-end .dtend { float: right; } - -.event-list-date { - margin-bottom: 10px; +.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: monospace; +} +.today { + font-weight: bold; + 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, +#event-share-checkbox { + float:left; +} +#event-datetime-break { + margin-bottom: 10px; +} +#event-nofinish-break, +#event-adjust-break, +#event-share-break { + clear: both; +} +#event-desc-text, +#event-location-text { + margin-top: 10px; + margin-bottom: 5px; +} +#event-submit { + margin-top: 10px; +} +.body-tag { + margin: 10px 0; + opacity: 0.5; + filter:alpha(opacity=50); +} +.body-tag: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; +} + + +/** + * directory + */ +.directory-item { + float: left; + margin: 50px 50px 0px 0px; +} + + +/** + * sidebar + */ +#group-sidebar { + margin-bottom: 10px; +} +.group-selected, .nets-selected { + padding: 3px; + border: 1px solid #CCCCCC; + background: #F8F8F8; + font-weight: bold; +} +.groupsideedit { + margin-right: 10px; } - -.prevcal, .nextcal { - float: left; - margin-left: 32px; - margin-right: 32px; - margin-top: 64px; +#sidebar-group-ul { + padding-left: 0; } -.event-calendar-end { - clear: both; +#sidebar-group-list { + margin: 0 0 5px 0; } - - -.calendar { - font-family: Courier, monospace; +#sidebar-group-list ul { + list-style-type: none; + list-style-position: inside; } -.today { - font-weight: bold; - color: #FF0000; -} - -#event-start-text, -#event-finish-text { - margin-top: 10px; - margin-bottom: 5px; +#sidebar-group-list li { + margin-top: 10px; } - -#event-nofinish-checkbox, -#event-nofinish-text, -#event-adjust-checkbox, -#event-adjust-text, -#event-share-checkbox -{ - float: left; +#sidebar-group-list .icon { + display: inline-block; + height: 12px; + width: 12px; } -#event-datetime-break { - margin-bottom: 10px; +#sidebar-new-group { + margin: auto; + display: inline-block; + color: #efefef; + text-decoration: none; + text-align: center; } -#event-nofinish-break, -#event-adjust-break, -#event-share-break { - clear: both; +#sidebar-new-group:hover { + /*background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b20202), color-stop(1, #d60808) );*/ + /*background: -moz-linear-gradient( center top, #b20202 5%, #d60808 100% );*/ + /*background-color: #b20202;*/ } -#event-desc-text, -#event-location-text { - margin-top: 10px; - margin-bottom: 5px; +#sidebar-new-group:active { + position: relative; + top: 1px; } -#event-submit { - margin-top: 10px; +.nets-ul { + list-style-type: none; + padding-left: 0px; +} +.nets-ul li { + margin: 10px 0 0; } -/** - * directory - */ -.directory-item {float: left; margin: 50px 50px 0px 0px;} +.nets-link { + margin-left: 0px; +} +.nets-all { + margin-left: 0px; +} +#netsearch-box { + margin-top: 20px; + width: 150px; +} +#netsearch-box #search-submit { + margin: 5px 0px 0px 0px; +} /** * ADMIN */ #pending-update { - float:right; - color: #ffffff; - font-weight: bold; - background-color: #FF0000; - padding: 0em 0.3em; + float:right; + color: #fff; + font-weight: bold; + background-color: #ff0000; + padding: 0 .3em; } .admin.linklist { - border: 0px; padding: 0px; + border: 0; padding: 0; } .admin.link { - list-style-position: inside; + list-style-position: inside; } - #adminpage dl { - clear: left; - margin-bottom: 2px; - padding-bottom: 2px; - border-bottom: 1px solid black; + clear:left; + margin-bottom: 2px; + padding-bottom: 2px; + border-bottom: 1px solid #000; } #adminpage dt { - width: 200px; - float: left; - font-weight: bold; + width: 200px; + float: left; + font-weight: bold; } #adminpage dd { margin-left: 200px; } #adminpage h3 { - border-bottom: 1px solid #cccccc; + border-bottom:1px solid #ccc; } #adminpage .submit { @@ -1005,283 +1996,513 @@ div[id$="wrapper"] br { clear: left; } } #adminpage #pluginslist { - margin: 0px; padding: 0px; + margin: 0; + padding: 0; } #adminpage .plugin { - list-style: none; - display: block; - border: 1px solid #888888; - padding: 1em; - margin-bottom: 5px; - clear: left; + list-style: none; + display: block; + border: 1px solid #888; + padding: 1em; + margin-bottom: 5px; + clear: left; } #adminpage .toggleplugin { float:left; margin-right: 1em; } -#adminpage table {width:100%; border-bottom: 1p 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; } +#adminpage table { + width: 100%; + border-bottom: 1px solid #000; + margin: 5px 0; +} +#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; +} /** * Form fields */ .field { - margin-bottom: 10px; - padding-bottom: 10px; - overflow: auto; - width: 100% + margin-bottom: 10px; + padding-bottom: 10px; + overflow: auto; + width: 100%; } - .field label { - float: left; - width: 200px; + float: left; + width: 200px; } .field input, .field textarea { - width: 400px; + width: 400px; +} +.field textarea { + height: 100px; } -.field textarea { height: 100px; } .field_help { - display: block; - margin-left: 200px; - color: #666666; - + display: block; + margin-left: 0px; + color: #666; } - - .field .onoff { - float: left; - width: 80px; + 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; + display: block; + border: 1px solid #666; + background: url("../../../images/onoff.jpg") no-repeat; + padding: 4px 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; + border-color: #666; + padding-left: 40px; + background: #ccc left center; + color: #666; + text-align:right; } .field .onoff .on { - border-color:#204A87; - padding-right: 40px; - background-position: right center; - background-color: #3465A4; - color: #FFFFFF; - text-align: left; + border-color:#204a87; + padding-right:40px; + background-position:right center; + background-color:#3465A4; + color:#fff; + text-align:left; +} +.hidden { + display:none !important; +} + +.field.radio .field_help { + margin-left:0; +} + + +/* + * 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; +} +#panel { + z-index: 100; +} +.grey { + color: grey; +} +.orange { + color: orange; +} +.red { + color: red; +} +.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; } -.hidden { display: none!important; } -.field.radio .field_help { margin-left: 0px; } /** * ICONS */ +.iconspacer { + display: block; + width: 16px; + height: 16px; +} .icon { - display: block; width: 20px; height: 20px; - background-image: url('icons.png'); + display: block; + width: 20px; + height: 20px; + background: url(icons.png) no-repeat; + border: 0; + text-decoration: none; } -/*.icon:hover { - border-bottom: 0px; -}*/ - -.starred { - background-image: url("star.png"); - repeat: no-repeat; +.icon:hover { + border: 0; + text-decoration: none; } -.unstarred { - background-image: url("premium.png"); - repeat: no-repeat; +.icon.drop, +.icon.drophide, .icon.delete { + float: left; +} +.icon.s22 { + display: block; + background: url(icons.png) no-repeat; + width: 22px; + height: 22px; +} +.icon.s22.delete { + display: block; + background-position: -110px 0; +} +.icon.s22.text { + padding: 10px 0px 0px 25px; + width: 200px; +} +.icon.text { + text-indent: 0px; +} +.icon.s16 { + min-width: 16px; + height: 16px; +} +.s16 .add { + background: url("../../../images/icons/16/add.png") no-repeat; +} +.add { + margin: 0px 5px; +} +.article { + background-position: -50px 0; +} +.audio { + background-position: -70px 0; +} +.block { + background-position: -90px 0px; +} +.drop, .delete { + background-position: -110px 0; +} +.drophide { + background-position: -130px 0; +} +.edit { + background-position: -150px 0; +} +.camera { + background-position: -170px 0; +} +.dislike { + background-position: -190px 0; +} +.like { + background-position: -211px 0; +} +.link { + background-position: -230px 0; +} +.globe, .location { + background-position: -50px -20px; +} +.noglobe, .nolocation { + background-position: -70px -20px; +} +.no { + background-position: -90px -20px; +} +.pause { + background-position: -110px -20px; +} +.play { + background-position: -130px -20px; +} +.pencil { + background-position: -151px -18px; +} +.small-pencil { + background-position: -170px -20px; +} +.recycle { + background-position: -190px -20px; +} +.remote-link { + background-position: -210px -20px; +} +.share { + background-position: -230px -20px; +} +.tools { + background-position: -50px -40px; +} +.lock { + background-position: -70px -40px; +} +.unlock { + background-position: -90px -40px; +} +.video { + background-position: -110px -40px; +} +.attach { + background-position: -190px -40px; +} +.language { + background-position: -210px -40px; +} +.starred { + background-position: -130px -60px; +} +.unstarred { + background-position: -150px -60px; } - .tagged { - background-image: url("tag.png"); - repeat: no-repeat; + background-position: -170px -60px; } - - - -.border { +.on { + background-position: -50px -60px; +} +.off { + background-position: -70px -60px; +} +.prev { + background-position: -90px -60px; +} +.next { + background-position: -110px -60px; +} +.icon.dim { + opacity: 0.3; + filter: alpha(opacity=30); +} +.border, .border:hover { border: 1px solid #babdb6; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } - -.article { background-position: -50px 0px;} -.audio { background-position: -70px 0px;} -.block { background-position: -90px 0px;} -.drop { background-position: -110px 0px;} -.drophide { background-position: -130px 0px;} -.edit { background-position: -150px 0px;} -.camera { background-position: -170px 0px;} -.dislike { background-position: -190px 0px;} -.like { background-position: -210px 0px;} -.link { background-position: -230px 0px;} - -.globe { background-position: -50px -20px;} -.noglobe { background-position: -70px -20px;} -.no { background-position: -90px -20px;} -.pause { background-position: -110px -20px;} -.play { background-position: -130px -20px;} -.pencil { background-position: -150px -20px;} -.small-pencil { background-position: -170px -20px;} -.recycle { background-position: -190px -20px;} -.remote-link { background-position: -210px -20px;} -.share { background-position: -230px -20px;} - -.tools { background-position: -50px -40px;} -.lock { background-position: -70px -40px;} -.unlock { background-position: -90px -40px;} -.video { background-position: -110px -40px;} -.youtube { background-position: -130px -40px;} - -.attach { background-position: -190px -40px;} -.language { background-position: -210px -40px;} - - -.on { background-position: -50px -60px;} -.off { background-position: -70px -60px;} -.prev { background-position: -90px -60px;} -.next { background-position: -110px -60px;} - - -.icon.dim { opacity: 0.3;filter:alpha(opacity=30); } - .attachtype { - display: block; width: 20px; height: 23px; - background-image: url('../../../images/content-types.png'); + display: block; + width: 20px; + height: 23px; + background-image: url(../../../images/content-types.png); +} +.type-video { + background-position: 0px 0px; +} +.type-image { + background-position: -20px 0; +} +.type-audio { + background-position: -40px 0; +} +.type-text { + background-position: -60px 0px; +} +.type-unkn { + background-position: -80px 0; } - -.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; } - /** * footer - */ - .cc-license { margin-top: 100px; font-size: 0.7em; } -footer { display: block; margin: 50px 20%; clear: both; } - + */ +.cc-license { + margin-top: 100px; + font-size: 0.7em; +} +footer { + display: block; + margin: 50px 20%; + clear: both; +} #profile-jot-text { height: 20px; - color:#cccccc; - border: 1px solid #cccccc; + color: #666; + border: 1px solid #ccc; + border-radius: 5px; + width: 99.5%; } + + /** acl **/ #photo-edit-perms-select, #photos-upload-permissions-wrapper, -#profile-jot-acl-wrapper{ - display:block!important; +#profile-jot-acl-wrapper { + display: block !important; } - #acl-wrapper { - width: 690px; - float:left; + width: 690px; + float: left; } #acl-search { - float:right; - background: #ffffff url("../../../images/search_18.png") no-repeat right center; - padding-right:20px; + float: right; + background: #fff 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 10px 7px 30px; - -webkit-border-radius: 5px ; - -moz-border-radius: 5px; - border-radius: 5px; - color: #999999; + float:left; + display:block; + width:auto; + height:18px; + background-color:#CCC; + background-image:url("../../../images/show_all_off.png"); + background-position:7px 7px; + background-repeat:no-repeat; + padding:7px 10px 7px 30px; + -webkit-border-radius:5px; + -moz-border-radius:5px; + border-radius:5px; + color:#999; } #acl-showall.selected { - color: #000000; - background-color: #ff9900; - background-image: url("../../../images/show_all_on.png"); + color:#000; + background-color:#F90; + background-image:url(../../../images/show_all_on.png); } - #acl-list { - height: 210px; - border: 1px solid #cccccc; - clear: both; - margin-top: 30px; - overflow: auto; + height:210px; + border:1px solid #ccc; + 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; + display:block; + width:150px; + height:30px; + border:1px solid #ccc; + 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: 0; + padding: 2px 0 1px; +} +.acl-list-item a { + font-size:8px; + display:block; + width:40px; + height:10px; + float:left; + color:#999; + background-color:#CCC; + 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-list-item img{ - width:22px; - height: 22px; - float: left; - margin: 4px; +#acl-wrapper a:hover { + text-decoration:none; + color:#000; } -.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-button-show { + background-image:url('../../../images/show_off.png'); } -#acl-wrapper a:hover { - text-decoration: none; - color:#000000; +.acl-button-hide { + background-image:url('../../../images/hide_off.png'); } -.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"); + color:#000; + 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"); + color:#000; + 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-list-item.groupshow { border-color: #9ade00; } -.acl-list-item.grouphide { border-color: #ff4141; } /** /acl **/ @@ -1295,22 +2516,44 @@ footer { display: block; margin: 50px 20%; clear: both; } border:1px solid #cccccc; } .acpopupitem { - background-color:#555753; padding: 4px; + background-color:#555753; + padding: 4px; clear:left; } .acpopupitem img { float: left; margin-right: 4px; } - .acpopupitem.selected { - color: #2e3436; background-color: #eeeeec; + color: #2e3436; + background-color: #eeeeec; +} +.qcomment-wrapper { + padding: 0px; + margin: 2px; + list-style-type: none; +} +.qcomment, .qcomment:hover { + display: inline; + padding: 5px; + margin: 5px; } .qcomment { - opacity: 0; - filter:alpha(opacity=0); + opacity: 0.5; + filter:alpha(opacity=50); } .qcomment:hover { opacity: 1.0; filter:alpha(opacity=100); } +#network-star-link { + margin-top: 10px; +} +.network-star { + float: left; + margin-right: 5px; +} +.network-star.icon.starred { + display: inline-block; +} + diff --git a/view/theme/dispy/theme.php b/view/theme/dispy/theme.php new file mode 100644 index 000000000..c72884f1a --- /dev/null +++ b/view/theme/dispy/theme.php @@ -0,0 +1,74 @@ +theme_info = array(); + +$a->page['htmlhead'] .= <<< EOT + +EOT; diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl old mode 100755 new mode 100644 index 09cf64397..b013cfeef --- a/view/theme/dispy/wall_item.tpl +++ b/view/theme/dispy/wall_item.tpl @@ -38,7 +38,7 @@ {{ endif }} {{ if $item.edpost }} - ' + {{ endif }}
    @@ -68,10 +68,10 @@
    $item.dislike
    -
    +
    $item.comment
    -
    +
    diff --git a/view/theme/dispy/wallwall_item.tpl b/view/theme/dispy/wallwall_item.tpl old mode 100755 new mode 100644 index c3638094c..86453fad2 --- a/view/theme/dispy/wallwall_item.tpl +++ b/view/theme/dispy/wallwall_item.tpl @@ -43,7 +43,7 @@ {{ endif }} {{ if $item.edpost }} - ' + {{ endif }}
    @@ -59,7 +59,7 @@
    $item.body
    {{ for $item.tags as $tag }} - $tag + $tag {{ endfor }}
    @@ -72,7 +72,7 @@
    $item.dislike
    -
    +
    $item.comment
    -- cgit v1.2.3 From 09c2f81cb30a74652b81ab48ffb44cfdad097cb6 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sat, 3 Mar 2012 19:20:23 -0500 Subject: these are more finessing on formatting again Signed-off-by: Simon L'nu --- view/acl_selector.tpl | 2 +- view/theme/duepuntozero/wallwall_item.tpl | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) mode change 100755 => 100644 view/acl_selector.tpl diff --git a/view/acl_selector.tpl b/view/acl_selector.tpl old mode 100755 new mode 100644 index 3f8a9e7d2..655ea8980 --- a/view/acl_selector.tpl +++ b/view/acl_selector.tpl @@ -19,7 +19,7 @@ $(document).ready(function() { if(typeof acl=="undefined"){ acl = new ACL( baseurl+"/acl", - [$allowcid,$allowgid,$denycid,$denygid] + [ $allowcid,$allowgid,$denycid,$denygid ] ); } }); diff --git a/view/theme/duepuntozero/wallwall_item.tpl b/view/theme/duepuntozero/wallwall_item.tpl index 5cb2dbc3b..211906c93 100755 --- a/view/theme/duepuntozero/wallwall_item.tpl +++ b/view/theme/duepuntozero/wallwall_item.tpl @@ -28,8 +28,8 @@
    $item.name $item.to $item.owner_name $item.vwall
    -
    $item.ago
    -
    +
    $item.ago
    +
    $item.title
    -- cgit v1.2.3 -- cgit v1.2.3 From e0e0224fa6e3a32a1e6fe22728bc35f581ba89b5 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sun, 4 Mar 2012 05:48:06 +0100 Subject: some fixes in diabook --- view/theme/diabook/icons/pencil2.png | Bin 0 -> 384 bytes view/theme/diabook/jot.tpl | 4 +- view/theme/diabook/style.css | 34 ++++++++--- view/theme/diabook/wall_item.tpl | 7 +-- view/theme/diabook/wallwall_item.tpl | 107 +++++++++++++++++++++++++++++++++++ 5 files changed, 137 insertions(+), 15 deletions(-) create mode 100644 view/theme/diabook/icons/pencil2.png create mode 100644 view/theme/diabook/wallwall_item.tpl diff --git a/view/theme/diabook/icons/pencil2.png b/view/theme/diabook/icons/pencil2.png new file mode 100644 index 000000000..3b47d1864 Binary files /dev/null and b/view/theme/diabook/icons/pencil2.png differ diff --git a/view/theme/diabook/jot.tpl b/view/theme/diabook/jot.tpl index e83d0f86c..4f784c3f8 100755 --- a/view/theme/diabook/jot.tpl +++ b/view/theme/diabook/jot.tpl @@ -32,10 +32,10 @@
    - +
    - +
    diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 5e471f621..f005ff4bd 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -114,9 +114,15 @@ .attach { background-image: url("../../../view/theme/diabook/icons/attach.png"); display: block; width: 28px; height: 28px; background-repeat: no-repeat; } -.video { background-image: url("../../../view/theme/diabook/icons/video.png"); +.video2 { background-image: url("../../../view/theme/diabook/icons/video.png"); display: block; width: 28px; height: 28px; background-repeat: no-repeat; } +.video { background-image: url("../../../view/theme/diabook/icons/video.png"); + display: block; width: 100%; height: 28px; background-repeat: no-repeat; + } +.audio2 { background-image: url("../../../view/theme/diabook/icons/audio.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } .audio { background-image: url("../../../view/theme/diabook/icons/audio.png"); display: block; width: 28px; height: 28px; background-repeat: no-repeat; } @@ -129,6 +135,8 @@ .unglobe { background-image: url("../../../view/theme/diabook/icons/unglobe.png"); display: block; width: 28px; height: 28px; background-repeat: no-repeat; } +.edit {background-image: url("../../../view/theme/diabook/icons/pencil2.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat;} @@ -138,7 +146,7 @@ .block { background-position: -90px 0px;} /*.drop { background-position: -110px 0px;}*/ /*.drophide { background-position: -130px 0px;}*/ -.edit { background-position: -150px 0px;} +/*.edit { background-position: -150px 0px;}*/ /*.camera { background-position: -170px 0px;}*/ /*.dislike { background-position: -190px 0px;}*/ /*.like { background-position: -210px 0px;}*/ @@ -1000,16 +1008,21 @@ section { padding: 0px 0px 0px 10px; } .tabs { - background-image: url("../../../view/theme/diabook/icons/head.jpg"); + background-position: 0 -20px; background-repeat: repeat-x; - border-bottom: 1px solid #BABDB6; + height: 27px; padding: 0; } .tab.button { margin-right: 15px; margin-left: 15px; + background: none repeat scroll 0 0 #F8F8F8; + border: 1px solid #CCCCCC; + border-radius: 3px 3px 3px 3px; + font-weight: bold; + padding: 3px; } /* wall item */ .tread-wrapper { @@ -1162,7 +1175,7 @@ section { display: none; } .wall-item-comment-wrapper textarea { - height: 1.2em; + height: 2.0em; width: 100%; font-size: 10px; color: #999999; @@ -1312,13 +1325,12 @@ section { margin: 0px 2em 20px 0px; } #profile-jot-form #profile-jot-text { - height: 1.2em; + height: 3.0em; width: 99%; font-size: 10px; color: #999999; border: 1px solid #DDD; padding: 0.3em; - margin-top: 30px; margin-bottom: 10px; } #jot #jot-tools { @@ -1658,7 +1670,13 @@ ul.tabs li { margin-left: 7px; } ul.tabs li .active { - border-bottom: 1px solid #3465A4; + background-color: #33ACFF; + background-image: -moz-linear-gradient(center top , #66C1FF 0%, #0097FF 100%); + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; } /** * Form fields diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index 20131c7d1..0a02ba812 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -5,9 +5,6 @@
    {{ endif }} - - -
    @@ -32,7 +29,6 @@
    - {{ if $item.title }}

    $item.title

    {{ endif }} $item.body
    @@ -63,7 +59,8 @@ {{ if $item.vote.share }} {{ endif }} - + + {{ if $item.star }} $item.star.do diff --git a/view/theme/diabook/wallwall_item.tpl b/view/theme/diabook/wallwall_item.tpl new file mode 100644 index 000000000..08ea36781 --- /dev/null +++ b/view/theme/diabook/wallwall_item.tpl @@ -0,0 +1,107 @@ +{{ if $item.indent }}{{ else }} +
    + $item.star.starred + {{ if $item.lock }}$item.lock{{ endif }} + +
    +{{ endif }} +
    +
    +
    +
    + + $item.owner_name + +
    +
    + + $item.name + + menu + + +
    +
    +
    + $item.name + $item.to $item.owner_name + $item.vwall -   + {{ if $item.plink }}$item.ago{{ else }} $item.ago {{ endif }} + {{ if $item.lock }} - $item.lock {{ endif }} + +
    +
    + {{ if $item.title }}

    $item.title

    {{ endif }} + $item.body +
    +
    +
    + +
    + {{ for $item.tags as $tag }} + $tag + {{ endfor }} +
    +
    +
    +
    + +
    +
    +
    $item.location 
    +
    + + + {{ if $item.vote }} + + + {{ endif }} + + {{ if $item.vote.share }} + + {{ endif }} + + + {{ if $item.star }} + + $item.star.do + + $item.star.undo + $item.star.tagger + {{ endif }} + + {{ if $item.plink }}$item.plink.title{{ endif }} + + + +
    + +
    + + {{ if $item.drop.dropping }} + + $item.drop.delete + {{ endif }} + {{ if $item.edpost }} + + {{ endif }} +
    + +
    +
    +
    + + +
    $item.dislike
    +
    +
    + +
    + $item.comment +
    +tb \ No newline at end of file -- cgit v1.2.3 From c28ce8a79cae9721bc5291f7ef7d17674d29ebf3 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 4 Mar 2012 05:00:35 -0500 Subject: tweak wall items a bit (nasty-looking wall items...). jot-header tries to count chars and fails :P Signed-off-by: Simon L'nu --- view/theme/dispy/jot-header.tpl | 39 +++++++++++++++++++++++++++++++++++---- view/theme/dispy/style.css | 5 ++--- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/view/theme/dispy/jot-header.tpl b/view/theme/dispy/jot-header.tpl index 0a559aae7..23883036b 100644 --- a/view/theme/dispy/jot-header.tpl +++ b/view/theme/dispy/jot-header.tpl @@ -4,10 +4,11 @@ var editor=false; var textlen = 0; var plaintext = '$editselect'; +// this is here because of the silly tinymce error. didn't help. var skin = 'default'; -function initEditor(cb){ - if (editor==false){ +function initEditor(cb) { + if (editor==false) { $("#profile-jot-text-loading").show(); if(plaintext == 'none') { $("#profile-jot-text-loading").hide(); @@ -22,7 +23,8 @@ function initEditor(cb){ cb(); } return; - } + } + tinyMCE.init({ theme : "advanced", skin : "default", @@ -100,7 +102,36 @@ function initEditor(cb){ ed.pasteAsPlainText = true; $("#profile-jot-text-loading").hide(); $(".jothidden").show(); - if (typeof cb!="undefined") cb(); + + if (typeof cb!="undefined") { cb(); } + + // character count part deux + // + // get # of chars + var textlen = $('#profile-jot-text').val().length(); + $('#character-counter').html(textlen); + + $('#profile-jot-text').keyup(function() { + $('#character-counter').removeClass('jothidden'); + 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'); + } + // get new len + $('#character-counter').html($(this).val().length); + }); + }); } }); diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index f0929094c..8d7bbc630 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -988,7 +988,7 @@ section { } .wall-item-content-wrapper { position: relative; - border-top: 1px #aaa solid; + border-left: 1px #aaa solid; padding: 10px; } .wall-item-outside-wrapper .wall-item-comment-wrapper { @@ -996,7 +996,6 @@ section { } .wall-item-content-wrapper.shiny { background: #efefcf; - border-right: 3px solid #ffd398; } .wall-item-content { overflow-x: auto; @@ -1039,7 +1038,7 @@ section { border-radius: 5px; } [class^="wall-item-tools"] > *, [class^="wall-item-tools"] > * > * { - margin: 0 0 10px 0; + margin: 0 0 5px 0; } .wall-item-tools { float: right; -- cgit v1.2.3 -- cgit v1.2.3 From cb57a0ebfd805559df8df2ac7d478dffb740fdde Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 4 Mar 2012 05:19:49 -0500 Subject: soften '.shiny' a bit to fit in with colour scheme. tweak wall boxes Signed-off-by: Simon L'nu --- view/theme/dispy/style.css | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 8d7bbc630..4d5f51eb2 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -980,22 +980,25 @@ section { /** * items */ -.wall-item-outside-wrapper { - margin-top: 15px; +.wall-item-outside-wrapper { + border: 1px solid #aaa; + border-radius: 5px; +} +.wall-item-outside-wrapper.comment { + margin-top: 5px; } .wall-item-outside-wrapper-end { clear: both; } .wall-item-content-wrapper { position: relative; - border-left: 1px #aaa solid; - padding: 10px; + padding: 10px; } .wall-item-outside-wrapper .wall-item-comment-wrapper { /*margin-left: 90px;*/ } .wall-item-content-wrapper.shiny { - background: #efefcf; + background: #efefdf; } .wall-item-content { overflow-x: auto; -- cgit v1.2.3 From 20d37f2e3ec7736ebf04e4c637398eee0aea78a5 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 4 Mar 2012 02:25:32 -0800 Subject: revup --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index b464d2525..81e84d372 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1269' ); +define ( 'FRIENDICA_VERSION', '2.3.1270' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DB_UPDATE_VERSION', 1131 ); -- cgit v1.2.3 From 8e49b4332cf697a1525ca14d598e6fc5cd505cdf Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sun, 4 Mar 2012 14:19:53 +0100 Subject: style.css fix --- view/theme/diabook/style.css | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index f005ff4bd..309e7b842 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -1005,24 +1005,24 @@ section { display: table-cell; vertical-align: top; width: 800px; - padding: 0px 0px 0px 10px; + padding: 0px 0px 0px 12px; } .tabs { background-position: 0 -20px; background-repeat: repeat-x; - height: 27px; padding: 0; } .tab.button { - margin-right: 15px; - margin-left: 15px; - background: none repeat scroll 0 0 #F8F8F8; + margin-right: 5px; + margin-left: 5px; + /*background: none repeat scroll 0 0 #F8F8F8;*/ border: 1px solid #CCCCCC; border-radius: 3px 3px 3px 3px; - font-weight: bold; + font-weight: normal; padding: 3px; + color: #333333; } /* wall item */ .tread-wrapper { @@ -1663,15 +1663,14 @@ section { ul.tabs { list-style-type: none; padding-bottom: 10px; - font-size: 13px; + font-size: 12px; } ul.tabs li { float: left; - margin-left: 7px; + margin-left: 5px; } ul.tabs li .active { - background-color: #33ACFF; - background-image: -moz-linear-gradient(center top , #66C1FF 0%, #0097FF 100%); + background-color: #333333; border: 1px solid #777777; color: white; border-radius: 3px 3px 3px 3px; -- cgit v1.2.3 -- cgit v1.2.3 From 5f77aff48692d7fbf286b5a1b5476c652a1b608f Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 4 Mar 2012 12:21:08 -0500 Subject: more tweakage. stylesheet and jot-header Signed-off-by: Simon L'nu --- view/theme/dispy/jot-header.tpl | 56 ++++++++++++++++++++--------------------- view/theme/dispy/style.css | 5 +++- 2 files changed, 32 insertions(+), 29 deletions(-) diff --git a/view/theme/dispy/jot-header.tpl b/view/theme/dispy/jot-header.tpl index 23883036b..93df84aae 100644 --- a/view/theme/dispy/jot-header.tpl +++ b/view/theme/dispy/jot-header.tpl @@ -104,34 +104,6 @@ function initEditor(cb) { $(".jothidden").show(); if (typeof cb!="undefined") { cb(); } - - // character count part deux - // - // get # of chars - var textlen = $('#profile-jot-text').val().length(); - $('#character-counter').html(textlen); - - $('#profile-jot-text').keyup(function() { - $('#character-counter').removeClass('jothidden'); - 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'); - } - // get new len - $('#character-counter').html($(this).val().length); - }); - }); } }); @@ -146,10 +118,38 @@ function initEditor(cb) { } } +function charCounter() { + // character count part deux + $('#profile-jot-text').keyup(function(event) { + var textlen = $(this).val().length(); + var maxLen1 = 140; + var maxLen2 = 420; + + $('#character-counter').removeClass('jothidden'); + if(textlen <= maxLen1) { + $('#character-counter').removeClass('red'); + $('#character-counter').removeClass('orange'); + $('#character-counter').addClass('grey'); + } + if((textlen > maxLen1) && (textlen <= maxLen2)) { + $('#character-counter').removeClass('grey'); + $('#character-counter').removeClass('red'); + $('#character-counter').addClass('orange'); + } + if(textlen > maxLen2) { + $('#character-counter').removeClass('grey'); + $('#character-counter').removeClass('orange'); + $('#character-counter').addClass('red'); + } + $('#character-counter').html($(this).val().length); + }); +} + function enableOnUser(){ if (editor) return; $(this).val(""); initEditor(); + charCounter(); } diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 4d5f51eb2..95bc1c6f7 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -918,9 +918,12 @@ aside #viewcontacts { #acl-deny-text-end { clear: both; } -#jot-title-desc, #profile-jot-desc { +#jot-title-desc { color: #cccccc; } +#profile-jot-desc { + color: #a00; +} #jot-title-wrapper { margin-bottom: 5px; } -- cgit v1.2.3 -- cgit v1.2.3 From 25510453bfb00b56ba8f4dd7f78c9a04542fafee Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 4 Mar 2012 14:55:09 -0500 Subject: fix up toolbar so the notifications line up better together Signed-off-by: Simon L'nu --- view/theme/dispy/nav.tpl | 9 +++++---- view/theme/dispy/style.css | 50 ++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 49 insertions(+), 10 deletions(-) diff --git a/view/theme/dispy/nav.tpl b/view/theme/dispy/nav.tpl index 67a263519..867751310 100644 --- a/view/theme/dispy/nav.tpl +++ b/view/theme/dispy/nav.tpl @@ -11,6 +11,10 @@ works --> {{ if $nav.help }} $nav.help.1 {{ endif }} + {{ if $nav.community }} + $nav.community.1 + {{ endif }} {{ if $nav.apps }} $nav.apps.1 {{ endif }} @@ -28,10 +32,6 @@ works -->
  • $emptynotifications
  • {{ endif }} - {{ if $nav.community }} - $nav.community.1 - {{ endif }} {{ if $nav.network }} $nav.network.1 @@ -106,6 +106,7 @@ works --> {{ endif }}
    +
    diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 95bc1c6f7..08db11033 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -81,17 +81,18 @@ mark { font-weight: bold; } /* Redeclare monospace font family: h5bp.com/j */ -pre, code, kbd, samp { +pre, code, kbd, samp, .wall-item-body code { font-family: monospace, monospace; _font-family: 'courier new', monospace; font-size: 1em; } /* Improve readability of pre-formatted text in all browsers */ -pre { +pre, .wall-item-body code { white-space: pre; white-space: pre-wrap; word-wrap: break-word; } + q { quotes: none; } @@ -287,6 +288,11 @@ ul#user-menu-popup li a.nav-sep { } #nav-buttons { clear: both; + list-style: none; + padding: 0px; +} +#nav-buttons li { + padding: 0; } nav .nav-link { float: right; @@ -469,17 +475,18 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link width: 30px; height: 19px; background: transparent url(notifications.png) 0 0 no-repeat; - color: #fff; + color: #222; font-weight: bold; font-size: 0.8em; padding-top: 0.2em; text-align: center; float: left; - margin-right: -4px; - display: none; + margin: 0 -1px 0 3px; + display: block; + visibility: hidden; } .nav-ajax-update.show, .nav-ajax-left.show { - display: block; + visibility: visible; } #net-update { background-position: 0px 0px; @@ -1431,6 +1438,37 @@ div[id$="wrapper"] br { #photos-upload-perms-menu { text-align: right; } +#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname { + float: left; + margin-bottom: 25px; +} +#photo-edit-link-wrap { + margin-bottom: 15px; +} +#photo-edit-caption { + width: 100%; +} +#photo-edit-newtag { + width: 100%; +} +#photo-like-div { + margin-bottom: 25px; +} +#photo-edit-caption-end, #photo-edit-tags-end, #photo-edit-albumname-end { + clear: both; +} +#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; +} /** * message -- cgit v1.2.3 -- cgit v1.2.3 From 2441babbe92a804d9d1803a0c7c224cd0a4722da Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 4 Mar 2012 15:52:50 -0500 Subject: removed extra padding/border on tread-wrapper (heh, tea read :P) Signed-off-by: Simon L'nu --- view/theme/dispy/style.css | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 08db11033..23f0539d0 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -956,9 +956,10 @@ aside #viewcontacts { * section */ section { - margin: 20px 9% 0 9%; + margin: 20px 8% 0 6%; font-size: 0.8em; padding-right: 250px; + min-width: 475px; } /** tabs **/ @@ -1014,10 +1015,10 @@ section { overflow-x: auto; } [id^="tread-wrapper"], [class^="tread-wrapper"] { - margin: 5px 0; - border: 1px #aaa solid; - border-radius: 5px; - padding: 10px; + margin: 15px 0 0 0; + /*border: 1px #aaa solid;*/ + /*border-radius: 5px;*/ + padding: 0px; } .wall-item-photo-menu { display: none; -- cgit v1.2.3 From cd5a11bb0f29d94d3503a74cbf974c4eaf0633fe Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 4 Mar 2012 13:39:17 -0800 Subject: revup --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 81e84d372..362b49e9f 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1270' ); +define ( 'FRIENDICA_VERSION', '2.3.1271' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DB_UPDATE_VERSION', 1131 ); -- cgit v1.2.3 From b2035ae0c610ac75aee3138c6eb904460f9016cf Mon Sep 17 00:00:00 2001 From: Michael Johnston Date: Sun, 4 Mar 2012 17:29:00 -0500 Subject: improved contrast in acl selector, and preview (darkzero) --- view/theme/darkzero/style.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/view/theme/darkzero/style.css b/view/theme/darkzero/style.css index fdaf26f19..fa0e254c7 100755 --- a/view/theme/darkzero/style.css +++ b/view/theme/darkzero/style.css @@ -92,3 +92,11 @@ blockquote { background: #ddd; color: #000; } + +.acl-list-item p, #profile-jot-email-label, div#jot-preview-content, div.profile-jot-net { + color: #000000; +} + +input#acl-search { + background-color: #aaa; +} -- cgit v1.2.3 -- cgit v1.2.3 From 4134fd3dcee1b26b888c89c47f798fd3fd058064 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 4 Mar 2012 16:26:16 -0800 Subject: unused replacement variable displays %1 in all html2bbcode 'code' blocks --- include/html2bbcode.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/html2bbcode.php b/include/html2bbcode.php index 51d629940..32a90d7d6 100755 --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -212,7 +212,7 @@ function html2bbcode($message) node2bbcode($doc, 'audio', array('src'=>'/(.+)/'), '[audio]$1', '[/audio]'); node2bbcode($doc, 'iframe', array('src'=>'/(.+)/'), '[iframe]$1', '[/iframe]'); - node2bbcode($doc, 'code', array(), '[code]$1', '[/code]'); + node2bbcode($doc, 'code', array(), '[code]', '[/code]'); $message = $doc->saveHTML(); -- cgit v1.2.3 From 1653e5a615a7165852f1b7cb5e699bd40ab35268 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Mon, 5 Mar 2012 02:45:24 +0100 Subject: fixes in diabook --- view/theme/diabook/jot.tpl | 15 ++++++++------- view/theme/diabook/style.css | 14 +++++++++----- view/theme/diabook/wallwall_item.tpl | 3 +-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/view/theme/diabook/jot.tpl b/view/theme/diabook/jot.tpl index 4f784c3f8..59066a19c 100755 --- a/view/theme/diabook/jot.tpl +++ b/view/theme/diabook/jot.tpl @@ -45,23 +45,25 @@
    - - - + + $preview +
    $bang
    -
    $jotplugins
    - +
    + +
    +
    @@ -75,9 +77,8 @@
    - -
    + {{ if $content }}{{ endif }} diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 309e7b842..06ddf6de1 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -384,9 +384,7 @@ body { font-size: 13px; background-color: #ffffff; color: #2d2d2d; - margin-left: : auto; - margin-right: auto; - margin-top: 50px; + margin: 50px auto auto; display: table; } h4 { @@ -1045,6 +1043,8 @@ section { display: table; width: 780px; } + + .wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom { display: table-row; } @@ -1221,8 +1221,12 @@ section { border-right: 1px solid #A7C7F7; padding-right: 12px; } + +#jot-preview-content{ + margin-top: 30px;} + #jot-preview-content .tread-wrapper { - background-color: #fce94f; + background-color: #fff797; } .wall-item-tags { @@ -1663,7 +1667,7 @@ section { ul.tabs { list-style-type: none; padding-bottom: 10px; - font-size: 12px; + font-size: 13px; } ul.tabs li { float: left; diff --git a/view/theme/diabook/wallwall_item.tpl b/view/theme/diabook/wallwall_item.tpl index 08ea36781..effb7273f 100644 --- a/view/theme/diabook/wallwall_item.tpl +++ b/view/theme/diabook/wallwall_item.tpl @@ -103,5 +103,4 @@
    $item.comment -
    -tb \ No newline at end of file + \ No newline at end of file -- cgit v1.2.3 From e52891d8abc02635b8d4294b7b9dbb17230ed16a Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Mon, 5 Mar 2012 03:08:58 +0100 Subject: fixes in diabook --- view/theme/diabook/jot.tpl | 29 +++++++++++++++-------------- view/theme/diabook/style.css | 14 +++++++++----- view/theme/diabook/wallwall_item.tpl | 3 +-- 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/view/theme/diabook/jot.tpl b/view/theme/diabook/jot.tpl index 4f784c3f8..387eb1f91 100755 --- a/view/theme/diabook/jot.tpl +++ b/view/theme/diabook/jot.tpl @@ -21,47 +21,49 @@
    -
    +
    -
    +
    - diff --git a/view/theme/dispy/notifications.png b/view/theme/dispy/notifications.png old mode 100755 new mode 100644 index f0f6a90e8..37ebdf1e3 Binary files a/view/theme/dispy/notifications.png and b/view/theme/dispy/notifications.png differ diff --git a/view/theme/dispy/notifications.svg b/view/theme/dispy/notifications.svg new file mode 100644 index 000000000..eccc54457 --- /dev/null +++ b/view/theme/dispy/notifications.svg @@ -0,0 +1,273 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 472fd875c..f7a1b295c 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -344,6 +344,12 @@ nav .nav-link { #nav-home-link:hover { background-position: -66px -132px; } +#nav-intro-link { + background-position: 0px -190px; +} +#nav-intro-link:hover { + background-position: -44px -190px; +} #nav-login-link { background-position: 0 -88px; } @@ -504,6 +510,9 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link #home-update { background-position: -90px 0px; } +#intro-update { + background-position: -120px 0px; +} #lang-select-icon { cursor: pointer; position: absolute; @@ -514,7 +523,6 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link position: absolute; top: 0; left: 16px; - padding-right: 50px; } .menu-popup { position: absolute; @@ -933,10 +941,6 @@ aside #viewcontacts { #jot-title-wrapper { margin-bottom: 5px; } -#jot-title { - border: 1px solid #cccccc; - width: 90%; -} #jot-title-display { font-weight: bold; } @@ -1107,7 +1111,7 @@ section { clear:both; } .wall-item-location { - margin-top: 10px; + margin-top: 15px; width: 100px; overflow: hidden; text-overflow: ellipsis; @@ -1735,6 +1739,7 @@ div[id$="wrapper"] br { margin: 5px 2px 0 0; } .profile-edit-side-link { + margin: 0 20px -18px 0; float: right; } .profile-listing { -- cgit v1.2.3 -- cgit v1.2.3 From b9dda93f0c704cd80e0fbfeb5ff5da26b9aae7f4 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Thu, 8 Mar 2012 23:22:26 +0100 Subject: add theme diabook-blue, fix css --- view/theme/diabook-blue/comment_item.tpl | 35 + view/theme/diabook-blue/contact_template.tpl | 25 + view/theme/diabook-blue/experimental | 0 view/theme/diabook-blue/icons/attach.png | Bin 0 -> 1069 bytes view/theme/diabook-blue/icons/audio.png | Bin 0 -> 762 bytes view/theme/diabook-blue/icons/bluebug.png | Bin 0 -> 1032 bytes view/theme/diabook-blue/icons/camera.png | Bin 0 -> 685 bytes view/theme/diabook-blue/icons/community.png | Bin 0 -> 475 bytes view/theme/diabook-blue/icons/contacts.png | Bin 0 -> 562 bytes view/theme/diabook-blue/icons/contacts2.png | Bin 0 -> 549 bytes view/theme/diabook-blue/icons/dislike.png | Bin 0 -> 386 bytes view/theme/diabook-blue/icons/drop.png | Bin 0 -> 292 bytes view/theme/diabook-blue/icons/ftdevs.gif | Bin 0 -> 1188 bytes view/theme/diabook-blue/icons/globe.png | Bin 0 -> 1361 bytes view/theme/diabook-blue/icons/head.jpg | Bin 0 -> 383 bytes view/theme/diabook-blue/icons/isstar.png | Bin 0 -> 1277 bytes view/theme/diabook-blue/icons/language.png | Bin 0 -> 849 bytes view/theme/diabook-blue/icons/like.png | Bin 0 -> 388 bytes view/theme/diabook-blue/icons/link.png | Bin 0 -> 365 bytes view/theme/diabook-blue/icons/lock.png | Bin 0 -> 366 bytes view/theme/diabook-blue/icons/lupe.png | Bin 0 -> 697 bytes view/theme/diabook-blue/icons/messages.png | Bin 0 -> 490 bytes view/theme/diabook-blue/icons/messages2.png | Bin 0 -> 488 bytes view/theme/diabook-blue/icons/notifications.png | Bin 0 -> 795 bytes view/theme/diabook-blue/icons/notify.png | Bin 0 -> 608 bytes view/theme/diabook-blue/icons/notify2.png | Bin 0 -> 596 bytes view/theme/diabook-blue/icons/pencil.png | Bin 0 -> 286 bytes view/theme/diabook-blue/icons/pencil2.png | Bin 0 -> 384 bytes view/theme/diabook-blue/icons/recycle.png | Bin 0 -> 296 bytes view/theme/diabook-blue/icons/remote.png | Bin 0 -> 427 bytes view/theme/diabook-blue/icons/scroll_top.png | Bin 0 -> 296 bytes view/theme/diabook-blue/icons/selected.png | Bin 0 -> 211 bytes view/theme/diabook-blue/icons/star.png | Bin 0 -> 388 bytes view/theme/diabook-blue/icons/star_dummy.png | Bin 0 -> 183 bytes view/theme/diabook-blue/icons/tagged.png | Bin 0 -> 353 bytes view/theme/diabook-blue/icons/toogle_off.png | Bin 0 -> 391 bytes view/theme/diabook-blue/icons/toogle_on.png | Bin 0 -> 429 bytes view/theme/diabook-blue/icons/unglobe.png | Bin 0 -> 798 bytes view/theme/diabook-blue/icons/unlock.png | Bin 0 -> 362 bytes view/theme/diabook-blue/icons/unstarred.png | Bin 0 -> 358 bytes view/theme/diabook-blue/icons/video.png | Bin 0 -> 472 bytes view/theme/diabook-blue/icons/weblink.png | Bin 0 -> 505 bytes view/theme/diabook-blue/jot.tpl | 84 + view/theme/diabook-blue/nav.tpl | 190 ++ view/theme/diabook-blue/profile_vcard.tpl | 64 + view/theme/diabook-blue/style.css | 2304 +++++++++++++++++++++++ view/theme/diabook-blue/wall_item.tpl | 100 + view/theme/diabook-blue/wallwall_item.tpl | 106 ++ view/theme/diabook/comment_item.tpl | 35 + view/theme/diabook/nav.tpl | 7 +- view/theme/diabook/style.css | 23 +- 51 files changed, 2967 insertions(+), 6 deletions(-) create mode 100644 view/theme/diabook-blue/comment_item.tpl create mode 100755 view/theme/diabook-blue/contact_template.tpl create mode 100755 view/theme/diabook-blue/experimental create mode 100755 view/theme/diabook-blue/icons/attach.png create mode 100755 view/theme/diabook-blue/icons/audio.png create mode 100644 view/theme/diabook-blue/icons/bluebug.png create mode 100755 view/theme/diabook-blue/icons/camera.png create mode 100644 view/theme/diabook-blue/icons/community.png create mode 100644 view/theme/diabook-blue/icons/contacts.png create mode 100755 view/theme/diabook-blue/icons/contacts2.png create mode 100644 view/theme/diabook-blue/icons/dislike.png create mode 100755 view/theme/diabook-blue/icons/drop.png create mode 100644 view/theme/diabook-blue/icons/ftdevs.gif create mode 100644 view/theme/diabook-blue/icons/globe.png create mode 100644 view/theme/diabook-blue/icons/head.jpg create mode 100644 view/theme/diabook-blue/icons/isstar.png create mode 100644 view/theme/diabook-blue/icons/language.png create mode 100644 view/theme/diabook-blue/icons/like.png create mode 100755 view/theme/diabook-blue/icons/link.png create mode 100755 view/theme/diabook-blue/icons/lock.png create mode 100755 view/theme/diabook-blue/icons/lupe.png create mode 100755 view/theme/diabook-blue/icons/messages.png create mode 100644 view/theme/diabook-blue/icons/messages2.png create mode 100755 view/theme/diabook-blue/icons/notifications.png create mode 100755 view/theme/diabook-blue/icons/notify.png create mode 100644 view/theme/diabook-blue/icons/notify2.png create mode 100755 view/theme/diabook-blue/icons/pencil.png create mode 100644 view/theme/diabook-blue/icons/pencil2.png create mode 100755 view/theme/diabook-blue/icons/recycle.png create mode 100755 view/theme/diabook-blue/icons/remote.png create mode 100755 view/theme/diabook-blue/icons/scroll_top.png create mode 100755 view/theme/diabook-blue/icons/selected.png create mode 100755 view/theme/diabook-blue/icons/star.png create mode 100644 view/theme/diabook-blue/icons/star_dummy.png create mode 100755 view/theme/diabook-blue/icons/tagged.png create mode 100755 view/theme/diabook-blue/icons/toogle_off.png create mode 100755 view/theme/diabook-blue/icons/toogle_on.png create mode 100755 view/theme/diabook-blue/icons/unglobe.png create mode 100755 view/theme/diabook-blue/icons/unlock.png create mode 100755 view/theme/diabook-blue/icons/unstarred.png create mode 100755 view/theme/diabook-blue/icons/video.png create mode 100755 view/theme/diabook-blue/icons/weblink.png create mode 100755 view/theme/diabook-blue/jot.tpl create mode 100644 view/theme/diabook-blue/nav.tpl create mode 100644 view/theme/diabook-blue/profile_vcard.tpl create mode 100644 view/theme/diabook-blue/style.css create mode 100644 view/theme/diabook-blue/wall_item.tpl create mode 100644 view/theme/diabook-blue/wallwall_item.tpl create mode 100644 view/theme/diabook/comment_item.tpl diff --git a/view/theme/diabook-blue/comment_item.tpl b/view/theme/diabook-blue/comment_item.tpl new file mode 100644 index 000000000..85176732b --- /dev/null +++ b/view/theme/diabook-blue/comment_item.tpl @@ -0,0 +1,35 @@ +
    + + + + + + + + +
    + $mytitle +
    +
    + + + {{ if $qcomment }} +
      + {{ for $qcomment as $qc }} + + {{ endfor }} +
    + {{ endif }} + +
    + + +
    + + +
    diff --git a/view/theme/diabook-blue/contact_template.tpl b/view/theme/diabook-blue/contact_template.tpl new file mode 100755 index 000000000..48930b48a --- /dev/null +++ b/view/theme/diabook-blue/contact_template.tpl @@ -0,0 +1,25 @@ + +
    +
    +
    + + $contact.name + + {{ if $contact.photo_menu }} + menu +
    +
      + $contact.photo_menu +
    +
    + {{ endif }} +
    + +
    +
    +
    $contact.name
    + +
    +
    diff --git a/view/theme/diabook-blue/experimental b/view/theme/diabook-blue/experimental new file mode 100755 index 000000000..e69de29bb diff --git a/view/theme/diabook-blue/icons/attach.png b/view/theme/diabook-blue/icons/attach.png new file mode 100755 index 000000000..1958041cf Binary files /dev/null and b/view/theme/diabook-blue/icons/attach.png differ diff --git a/view/theme/diabook-blue/icons/audio.png b/view/theme/diabook-blue/icons/audio.png new file mode 100755 index 000000000..8d779a409 Binary files /dev/null and b/view/theme/diabook-blue/icons/audio.png differ diff --git a/view/theme/diabook-blue/icons/bluebug.png b/view/theme/diabook-blue/icons/bluebug.png new file mode 100644 index 000000000..3979e7d8e Binary files /dev/null and b/view/theme/diabook-blue/icons/bluebug.png differ diff --git a/view/theme/diabook-blue/icons/camera.png b/view/theme/diabook-blue/icons/camera.png new file mode 100755 index 000000000..a5c7f1236 Binary files /dev/null and b/view/theme/diabook-blue/icons/camera.png differ diff --git a/view/theme/diabook-blue/icons/community.png b/view/theme/diabook-blue/icons/community.png new file mode 100644 index 000000000..7c91e8b75 Binary files /dev/null and b/view/theme/diabook-blue/icons/community.png differ diff --git a/view/theme/diabook-blue/icons/contacts.png b/view/theme/diabook-blue/icons/contacts.png new file mode 100644 index 000000000..ca714acaf Binary files /dev/null and b/view/theme/diabook-blue/icons/contacts.png differ diff --git a/view/theme/diabook-blue/icons/contacts2.png b/view/theme/diabook-blue/icons/contacts2.png new file mode 100755 index 000000000..7817279f4 Binary files /dev/null and b/view/theme/diabook-blue/icons/contacts2.png differ diff --git a/view/theme/diabook-blue/icons/dislike.png b/view/theme/diabook-blue/icons/dislike.png new file mode 100644 index 000000000..23de426c5 Binary files /dev/null and b/view/theme/diabook-blue/icons/dislike.png differ diff --git a/view/theme/diabook-blue/icons/drop.png b/view/theme/diabook-blue/icons/drop.png new file mode 100755 index 000000000..2abb82ef2 Binary files /dev/null and b/view/theme/diabook-blue/icons/drop.png differ diff --git a/view/theme/diabook-blue/icons/ftdevs.gif b/view/theme/diabook-blue/icons/ftdevs.gif new file mode 100644 index 000000000..e0fc25743 Binary files /dev/null and b/view/theme/diabook-blue/icons/ftdevs.gif differ diff --git a/view/theme/diabook-blue/icons/globe.png b/view/theme/diabook-blue/icons/globe.png new file mode 100644 index 000000000..6bb9bc09d Binary files /dev/null and b/view/theme/diabook-blue/icons/globe.png differ diff --git a/view/theme/diabook-blue/icons/head.jpg b/view/theme/diabook-blue/icons/head.jpg new file mode 100644 index 000000000..6210b76be Binary files /dev/null and b/view/theme/diabook-blue/icons/head.jpg differ diff --git a/view/theme/diabook-blue/icons/isstar.png b/view/theme/diabook-blue/icons/isstar.png new file mode 100644 index 000000000..c955b25b5 Binary files /dev/null and b/view/theme/diabook-blue/icons/isstar.png differ diff --git a/view/theme/diabook-blue/icons/language.png b/view/theme/diabook-blue/icons/language.png new file mode 100644 index 000000000..8029c0155 Binary files /dev/null and b/view/theme/diabook-blue/icons/language.png differ diff --git a/view/theme/diabook-blue/icons/like.png b/view/theme/diabook-blue/icons/like.png new file mode 100644 index 000000000..b65edccc0 Binary files /dev/null and b/view/theme/diabook-blue/icons/like.png differ diff --git a/view/theme/diabook-blue/icons/link.png b/view/theme/diabook-blue/icons/link.png new file mode 100755 index 000000000..0ef666a67 Binary files /dev/null and b/view/theme/diabook-blue/icons/link.png differ diff --git a/view/theme/diabook-blue/icons/lock.png b/view/theme/diabook-blue/icons/lock.png new file mode 100755 index 000000000..7e34bf279 Binary files /dev/null and b/view/theme/diabook-blue/icons/lock.png differ diff --git a/view/theme/diabook-blue/icons/lupe.png b/view/theme/diabook-blue/icons/lupe.png new file mode 100755 index 000000000..f8b228347 Binary files /dev/null and b/view/theme/diabook-blue/icons/lupe.png differ diff --git a/view/theme/diabook-blue/icons/messages.png b/view/theme/diabook-blue/icons/messages.png new file mode 100755 index 000000000..f7010c98c Binary files /dev/null and b/view/theme/diabook-blue/icons/messages.png differ diff --git a/view/theme/diabook-blue/icons/messages2.png b/view/theme/diabook-blue/icons/messages2.png new file mode 100644 index 000000000..54b68e7f7 Binary files /dev/null and b/view/theme/diabook-blue/icons/messages2.png differ diff --git a/view/theme/diabook-blue/icons/notifications.png b/view/theme/diabook-blue/icons/notifications.png new file mode 100755 index 000000000..33ae95c6a Binary files /dev/null and b/view/theme/diabook-blue/icons/notifications.png differ diff --git a/view/theme/diabook-blue/icons/notify.png b/view/theme/diabook-blue/icons/notify.png new file mode 100755 index 000000000..8a7bdc38f Binary files /dev/null and b/view/theme/diabook-blue/icons/notify.png differ diff --git a/view/theme/diabook-blue/icons/notify2.png b/view/theme/diabook-blue/icons/notify2.png new file mode 100644 index 000000000..407e2dbb4 Binary files /dev/null and b/view/theme/diabook-blue/icons/notify2.png differ diff --git a/view/theme/diabook-blue/icons/pencil.png b/view/theme/diabook-blue/icons/pencil.png new file mode 100755 index 000000000..772e49b17 Binary files /dev/null and b/view/theme/diabook-blue/icons/pencil.png differ diff --git a/view/theme/diabook-blue/icons/pencil2.png b/view/theme/diabook-blue/icons/pencil2.png new file mode 100644 index 000000000..3b47d1864 Binary files /dev/null and b/view/theme/diabook-blue/icons/pencil2.png differ diff --git a/view/theme/diabook-blue/icons/recycle.png b/view/theme/diabook-blue/icons/recycle.png new file mode 100755 index 000000000..c3b8d2bf4 Binary files /dev/null and b/view/theme/diabook-blue/icons/recycle.png differ diff --git a/view/theme/diabook-blue/icons/remote.png b/view/theme/diabook-blue/icons/remote.png new file mode 100755 index 000000000..a560cc55e Binary files /dev/null and b/view/theme/diabook-blue/icons/remote.png differ diff --git a/view/theme/diabook-blue/icons/scroll_top.png b/view/theme/diabook-blue/icons/scroll_top.png new file mode 100755 index 000000000..0e7f7ae6a Binary files /dev/null and b/view/theme/diabook-blue/icons/scroll_top.png differ diff --git a/view/theme/diabook-blue/icons/selected.png b/view/theme/diabook-blue/icons/selected.png new file mode 100755 index 000000000..2a30ae252 Binary files /dev/null and b/view/theme/diabook-blue/icons/selected.png differ diff --git a/view/theme/diabook-blue/icons/star.png b/view/theme/diabook-blue/icons/star.png new file mode 100755 index 000000000..0b00cb189 Binary files /dev/null and b/view/theme/diabook-blue/icons/star.png differ diff --git a/view/theme/diabook-blue/icons/star_dummy.png b/view/theme/diabook-blue/icons/star_dummy.png new file mode 100644 index 000000000..ce11f30d4 Binary files /dev/null and b/view/theme/diabook-blue/icons/star_dummy.png differ diff --git a/view/theme/diabook-blue/icons/tagged.png b/view/theme/diabook-blue/icons/tagged.png new file mode 100755 index 000000000..144649ef8 Binary files /dev/null and b/view/theme/diabook-blue/icons/tagged.png differ diff --git a/view/theme/diabook-blue/icons/toogle_off.png b/view/theme/diabook-blue/icons/toogle_off.png new file mode 100755 index 000000000..99490bcd9 Binary files /dev/null and b/view/theme/diabook-blue/icons/toogle_off.png differ diff --git a/view/theme/diabook-blue/icons/toogle_on.png b/view/theme/diabook-blue/icons/toogle_on.png new file mode 100755 index 000000000..81e8f9120 Binary files /dev/null and b/view/theme/diabook-blue/icons/toogle_on.png differ diff --git a/view/theme/diabook-blue/icons/unglobe.png b/view/theme/diabook-blue/icons/unglobe.png new file mode 100755 index 000000000..aa9b0e189 Binary files /dev/null and b/view/theme/diabook-blue/icons/unglobe.png differ diff --git a/view/theme/diabook-blue/icons/unlock.png b/view/theme/diabook-blue/icons/unlock.png new file mode 100755 index 000000000..a0cda0ae5 Binary files /dev/null and b/view/theme/diabook-blue/icons/unlock.png differ diff --git a/view/theme/diabook-blue/icons/unstarred.png b/view/theme/diabook-blue/icons/unstarred.png new file mode 100755 index 000000000..ca2072414 Binary files /dev/null and b/view/theme/diabook-blue/icons/unstarred.png differ diff --git a/view/theme/diabook-blue/icons/video.png b/view/theme/diabook-blue/icons/video.png new file mode 100755 index 000000000..a03d1d818 Binary files /dev/null and b/view/theme/diabook-blue/icons/video.png differ diff --git a/view/theme/diabook-blue/icons/weblink.png b/view/theme/diabook-blue/icons/weblink.png new file mode 100755 index 000000000..216e78344 Binary files /dev/null and b/view/theme/diabook-blue/icons/weblink.png differ diff --git a/view/theme/diabook-blue/jot.tpl b/view/theme/diabook-blue/jot.tpl new file mode 100755 index 000000000..387eb1f91 --- /dev/null +++ b/view/theme/diabook-blue/jot.tpl @@ -0,0 +1,84 @@ + +
    +
    +
     
    +
    +
    +
    + +
    + + + + + + + + + + + + +
    + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    + +
    +
    + +
    + + + + $preview + +
    + $bang +
    + + +
    + $jotplugins +
    + +
    + +
    + +
    +
    + + + +
    +
    + $acl +
    +
    $emailcc
    +
    + $jotnets +
    +
    + + + + +
    +
    + {{ if $content }}{{ endif }} diff --git a/view/theme/diabook-blue/nav.tpl b/view/theme/diabook-blue/nav.tpl new file mode 100644 index 000000000..d0ff06673 --- /dev/null +++ b/view/theme/diabook-blue/nav.tpl @@ -0,0 +1,190 @@ +
    +
    $sitelocation
    + +
    + + + +
    +
    $langselector
    +
    + + + + + + + +{# + +{{ if $nav.logout }}$nav.logout.1 {{ endif }} +{{ if $nav.login }} {{ endif }} + + + +{{ if $nav.register }}$nav.register.1{{ endif }} + +$nav.help.1 + +{{ if $nav.apps }}$nav.apps.1{{ endif }} + +$nav.search.1 +$nav.directory.1 + +{{ if $nav.admin }}$nav.admin.1{{ endif }} + +{{ if $nav.notifications }} +$nav.notifications.1 + +{{ endif }} +{{ if $nav.messages }} +$nav.messages.1 + +{{ endif }} + +{{ if $nav.manage }}$nav.manage.1{{ endif }} + +{{ if $nav.settings }}$nav.settings.1{{ endif }} +{{ if $nav.profiles }}$nav.profiles.1{{ endif }} + + + + + +#} diff --git a/view/theme/diabook-blue/profile_vcard.tpl b/view/theme/diabook-blue/profile_vcard.tpl new file mode 100644 index 000000000..3a545f9ba --- /dev/null +++ b/view/theme/diabook-blue/profile_vcard.tpl @@ -0,0 +1,64 @@ +
    + +
    +
    $profile.name
    + {{ if $profile.edit }} +
    + $profile.edit.1 + +
    + {{ endif }} +
    + + + {{ 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/diabook-blue/style.css b/view/theme/diabook-blue/style.css new file mode 100644 index 000000000..e272191c2 --- /dev/null +++ b/view/theme/diabook-blue/style.css @@ -0,0 +1,2304 @@ +/** + * Fabio Comuni + * Additional Changes: Michael Vogel + **/ + +/* ========= */ +/* = Admin = */ +/* ========= */ + +#adminpage { +/* width: 80%;*/ +} + +#pending-update { + float:right; + color: #ffffff; + font-weight: bold; + background-color: #FF0000; + padding: 0em 0.3em; +} + +.admin.linklist { + border: 0px; padding: 0px; +} + +.admin.link { + list-style-position: inside; + font-size: 1em; + padding: 5px; + width: 100px; + margin: 5px; +} + +#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 #898989; + margin-bottom: 5px; + margin-top: 10px; +} + +#adminpage .submit { + clear:left; +} + +#adminpage #pluginslist { + margin: 0px; padding: 0px; +} + +#adminpage .plugin { + list-style: none; + display: block; + /* border: 1px solid #888888; */ + padding: 1em; + margin-bottom: 5px; + clear: left; +} + +#adminpage .toggleplugin { + float:left; + margin-right: 1em; +} + +#adminpage table {width:100%; border-bottom: 1p 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: #eeeeee; } +#adminpage .selectall { text-align: right; } +/* icons */ + +.icon.contacts { + background-image: url("../../../view/theme/diabook-blue/icons/contacts.png");} +.icon.notifications { + background-image: url("../../../view/theme/diabook-blue/icons/notifications.png");} +.icon.notify { + background-image: url("../../../view/theme/diabook-blue/icons/notify.png");} +.icon.messages { + background-image: url("../../../view/theme/diabook-blue/icons/messages.png");} +.icon.community { + background-image: url("../../../view/theme/diabook-blue/icons/community.png");} + +.icon.drop { background-image: url("../../../view/theme/diabook-blue/icons/drop.png");} +.icon.drophide { background-image: url("../../../view/theme/diabook-blue/icons/drop.png");} +.icon.dislike { background-image: url("../../../view/theme/diabook-blue/icons/dislike.png");} +.icon.like { background-image: url("../../../view/theme/diabook-blue/icons/like.png");} +.icon.pencil { background-image: url("../../../view/theme/diabook-blue/icons/pencil.png");} +.icon.recycle { background-image: url("../../../view/theme/diabook-blue/icons/recycle.png");} +.icon.remote-link { background-image: url("../../../view/theme/diabook-blue/icons/remote.png");} +.icon.tagged { background-image: url("../../../view/theme/diabook-blue/icons/tagged.png");} +.icon.unstarred { background-image: url("../../../view/theme/diabook-blue/icons/star.png");} +.icon.star { background-image: url("../../../view/theme/diabook-blue/icons/star.png");} +.icon.link { background-image: url("../../../view/theme/diabook-blue/icons/link.png");} +.icon.lock { background-image: url("../../../view/theme/diabook-blue/icons/lock.png");} +.icon.unlock { background-image: url("../../../view/theme/diabook-blue/icons/unlock.png");} +.icon.isstar { background-image: url("../../../view/theme/diabook-blue/icons/isstar.png");} +.icon.language { background-image: url("../../../view/theme/diabook-blue/icons/language.png");} + + +.camera { background-image: url("../../../view/theme/diabook-blue/icons/camera.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.attach { background-image: url("../../../view/theme/diabook-blue/icons/attach.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.video2 { background-image: url("../../../view/theme/diabook-blue/icons/video.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.video { background-image: url("../../../view/theme/diabook-blue/icons/video.png"); + display: block; width: 100%; height: 28px; background-repeat: no-repeat; + } +.audio2 { background-image: url("../../../view/theme/diabook-blue/icons/audio.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.audio { background-image: url("../../../view/theme/diabook-blue/icons/audio.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.weblink { background-image: url("../../../view/theme/diabook-blue/icons/weblink.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.globe { background-image: url("../../../view/theme/diabook-blue/icons/globe.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.unglobe { background-image: url("../../../view/theme/diabook-blue/icons/unglobe.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.edit {background-image: url("../../../view/theme/diabook-blue/icons/pencil2.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat;} + + + + +.article { background-position: -50px 0px;} +/*.audio { background-position: -70px 0px;}*/ +.block { background-position: -90px 0px;} +/*.drop { background-position: -110px 0px;}*/ +/*.drophide { background-position: -130px 0px;}*/ +/*.edit { background-position: -150px 0px;}*/ +/*.camera { background-position: -170px 0px;}*/ +/*.dislike { background-position: -190px 0px;}*/ +/*.like { background-position: -210px 0px;}*/ +/*.link { background-position: -230px 0px;}*/ + +/*.globe { background-position: -50px -20px;}*/ +/*.noglobe { background-position: -70px -20px;}*/ +.no { background-position: -90px -20px;} +.pause { background-position: -110px -20px;} +.play { background-position: -130px -20px;} +/*.pencil { background-position: -150px -20px;}*/ +.small-pencil { background-position: -170px -20px;} +/*.recycle { background-position: -190px -20px;}*/ +/*.remote-link { background-position: -210px -20px;}*/ +.share { background-position: -230px -20px;} + +.tools { background-position: -50px -40px;} +/*.lock { background-position: -70px -40px;}*/ + +/*.video { background-position: -110px -40px;}*/ +.youtube { background-position: -130px -40px;} + +/*.attach { background-position: -190px -40px;}*/ +/*.language { background-position: -210px -40px;}*/ + + +.icon.on { background-image: url("../../../view/theme/diabook-blue/icons/toogle_on.png"); background-repeat: no-repeat;} +.icon.off { background-image: url("../../../view/theme/diabook-blue/icons/toogle_off.png"); background-repeat: no-repeat;} +.prev { background-position: -90px -60px;} +.next { background-position: -110px -60px;} +/*.tagged { background-position: -130px -60px;}*/ + +.attachtype { + display: block; width: 20px; height: 23px; + background-image: url('../../../images/content-types.png'); +} + +.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; } + +.icon.drop, .icon.drophide { + float: left; +} + +.icon { + display: block; + width: 20px; + height: 20px; + /*background-image: url('icons.png');*/ +} + +.icon { + background-color: transparent ; + background-repeat: no-repeat; + /* background-position: left center; */ + display: block; + overflow: hidden; + text-indent: -9999px; + padding: 1px; +} + +.icon.border.camera{ + background-image: url("../../../view/theme/diabook-blue/icons/camera.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } + +.icon.border.link{ + background-image: url("../../../view/theme/diabook-blue/icons/weblink.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + margin-left: 10px; + } + +.icon.text { + text-indent: 0px; +} +.icon.s10 { + min-width: 10px; + height: 10px; +} +.icon.s10.notify { + background-image: url("../../../images/icons/10/notify_off.png"); +} +.icon.s10.gear { + background-image: url("../../../images/icons/10/gear.png"); +} +.icon.s10.add { + background-image: url("../../../images/icons/10/add.png"); +} +.icon.s10.delete { + background-image: url("../../../images/icons/10/delete.png"); +} +.icon.s10.edit { + background-image: url("../../../images/icons/10/edit.png"); +} +.icon.s10.star { + background-image: url("../../../images/icons/10/star.png"); +} +.icon.s10.menu { + background-image: url("../../../images/icons/10/menu.png"); +} +.icon.s10.link { + background-image: url("../../../images/icons/10/link.png"); +} +.icon.s10.lock { + background-image: url("../../../images/icons/10/lock.png"); +} +.icon.s10.unlock { + background-image: url("../../../images/icons/10/unlock.png"); +} +.icon.s10.text { + padding: 2px 0px 0px 15px; + font-size: 10px; +} +.icon.s16 { + min-width: 16px; + height: 16px; +} +.icon.s16.notify { + background-image: url("../../../images/icons/16/notify_off.png"); +} +.icon.s16.gear { + background-image: url("../../../images/icons/16/gear.png"); +} +.icon.s16.add { + background-image: url("../../../images/icons/16/add.png"); +} +.icon.s16.delete { + background-image: url("../../../images/icons/16/delete.png"); +} +/*.icon.s16.edit { + background-image: url("../../../images/icons/16/edit.png"); +}*/ +.icon.s16.star { + background-image: url("../../../images/icons/16/star.png"); +} +.icon.s16.menu { + background-image: url("../../../images/icons/16/menu.png"); +} +/*.icon.s16.link { + background-image: url("../../../images/icons/16/link.png"); +}*/ +.icon.s16.lock { + background-image: url("../../../images/icons/16/lock.png"); +} +.icon.s16.unlock { + background-image: url("../../../images/icons/16/unlock.png"); +} +.icon.s16.text { + padding: 4px 0px 0px 20px; + font-size: 10px; +} +.icon.s22 { + min-width: 22px; + height: 22px; +} +.icon.s22.notify { + background-image: url("../../../images/icons/22/notify_off.png"); +} +.icon.s22.gear { + background-image: url("../../../images/icons/22/gear.png"); +} +.icon.s22.add { + background-image: url("../../../images/icons/22/add.png"); +} +.icon.s22.delete { + background-image: url("../../../images/icons/22/delete.png"); +} +.icon.s22.edit { + background-image: url("../../../images/icons/22/edit.png"); +} +.icon.s22.star { + background-image: url("../../../images/icons/22/star.png"); +} +.icon.s22.menu { + background-image: url("../../../images/icons/22/menu.png"); +} +.icon.s22.link { + background-image: url("../../../images/icons/22/link.png"); +} +.icon.s22.lock { + background-image: url("../../../images/icons/22/lock.png"); +} +.icon.s22.unlock { + background-image: url("../../../images/icons/22/unlock.png"); +} +.icon.s22.text { + padding: 10px 0px 0px 25px; + width: 200px; +} +.icon.s48 { + width: 48px; + height: 48px; +} +.icon.s48.notify { + background-image: url("../../../images/icons/48/notify_off.png"); +} +.icon.s48.gear { + background-image: url("../../../images/icons/48/gear.png"); +} +.icon.s48.add { + background-image: url("../../../images/icons/48/add.png"); +} +.icon.s48.delete { + background-image: url("../../../images/icons/48/delete.png"); +} +.icon.s48.edit { + background-image: url("../../../images/icons/48/edit.png"); +} +.icon.s48.star { + background-image: url("../../../images/icons/48/star.png"); +} +.icon.s48.menu { + background-image: url("../../../images/icons/48/menu.png"); +} +.icon.s48.link { + background-image: url("../../../images/icons/48/link.png"); +} +.icon.s48.lock { + background-image: url("../../../images/icons/48/lock.png"); +} +.icon.s48.unlock { + background-image: url("../../../images/icons/48/unlock.png"); +} + +#contact-edit-links ul { + list-style: none; + list-style-type: none; +} + +.hide-comments-outer { + margin-left: 80px; + margin-bottom: 5px; + width: 684px; + border-bottom: 1px solid #BDCDD4; + border-top: 1px solid #BDCDD4; + + padding: 8px; +} + +/* global */ +body { + font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + background-color: #ffffff; + color: #2d2d2d; + margin: 50px auto auto; + display: table; +} +h4 { + font-size: 1.1em; +} + +a { + color: #333333; + /* color: #3e3e8c; */ + text-decoration: none; +} +a:hover { + /* color: blue; */ + text-decoration: underline +} + +.wall-item-name-link { +/* float: left;*/ +} + +.wall-item-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} + +.left { + float: left; +} +.right { + float: right; +} +.hidden { + display: none; +} +.clear { + clear: both; +} +.fakelink { + color: #3465A4; + /* color: #3e3e8c; */ + text-decoration: none; + cursor: pointer; +} +.fakelink:hover { + /* color: blue; */ + /*color: #005c94; */ + text-decoration: underline; +} +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; +} +#panel { + position: absolute; + width: 10em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 1em; + list-style: none; + border: 3px solid #364e59; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +/* tool */ +.tool { + height: auto; + overflow: auto; + padding: 3px; +} +#saved-search-ul .tool:hover, +#nets-sidebar .tool:hover, +#sidebar-group-list .tool:hover { + background: #EEE; +} +.tool .label { + float: left; +} +.tool .action { + float: right; +} +.tool a { + color: ##3F8FBA; +} +.tool a:hover { + text-decoration: none; +} +/* 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; +} +/* header */ +header { + position: fixed; + left: 0%; + right: 80%; + top: 0px; + margin: 0px; + padding: 0px; + width: 20%; + height: 32px; + background: #1872a2; + background-color: #1872a2; + z-index: 100; + border-bottom: 1px; + border-bottom-color: black; + border-bottom-style: inset; +} +header #site-location { + display: none; +} +header #banner { + overflow: hidden; + text-align: center; + width: 100%; +} +header #banner a, +header #banner a:active, +header #banner a:visited, +header #banner a:link, +header #banner a:hover { + color: #ffffff; + text-decoration: none; + outline: none; + vertical-align: middle; +} +header #banner #logo-img { + height: 25px; + margin-top: 5px; +} +header #banner #logo-text { + font-size: 22px; + position: absolute; + top: 15%; +} +/* nav */ +nav { + width: 80%; + height: 32px; + position: fixed; + left: 20%; + top: 0px; + padding: 0px; + background: #1872a2; + color: #1872a2; + z-index: 100; + border-bottom: 1px; + border-bottom-color: black; + border-bottom-style: inset; +} +nav a, +nav a:active, +nav a:visited, +nav a:link, +nav a:hover { + color: #ffffff; + text-decoration: none; + outline: none; +} +nav #banner { + overflow: hidden; + /*text-align: center;*/ + width: 100%; +} +nav #banner a, +nav #banner a:active, +nav #banner a:visited, +nav #banner a:link, +nav #banner a:hover { + color: #ffffff; + text-decoration: none; + outline: none; + vertical-align: bottom; +} +nav #banner #logo-img { + height: 22px; + margin-top: 5px; +} +nav #banner #logo-text { + font-size: 22px; +} +nav #navbar{ + } +nav ul { + margin: 0px; + padding: 0px 20px; +} +nav ul li { + list-style: none; + margin: 0px; + /* padding: 1px 1px 3px 1px; */ + float: left; +} +nav ul li .menu-popup { + left: 0px; + right: auto; +} + +nav #logo-img { + height: 25px; + margin-top: 4px; + margin-left: 30px; +} + +nav #logo-text { + font-size: 22px; + margin-top: 3px; + margin-right: 15px; +} +nav .nav-menu-search { + position: relative; + + margin: 3px 17px; + margin-right: 0px; + height: 17px; + width: 180px; + +} + +nav #search-box #search-text { + background-image: url('icons/lupe.png'); + background-repeat:no-repeat; + padding-left:20px; + } + + +nav .nav-menu-icon { + position: relative; + height: 22px; + padding: 5px; + margin: 0px 7px; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +nav .nav-menu-icon.selected { + background-color: #fff; +} +nav .nav-menu-icon img { + width: 22px; + height: 22px; +} +nav .nav-menu-icon .nav-notify { + top: 3px; +} +nav .nav-menu { + position: relative; + height: 16px; + padding: 5px; + margin: 3px 15px 0px; + font-size: 13px; + /*border-bottom: 3px solid #364A84;*/ +} +nav .nav-menu.selected { + /*border-bottom: 3px solid #9eabb0;*/ +} +nav .nav-notify { + display: none; + position: absolute; + background-color: #ff0000; + /* background-color: #19aeff; */ + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + font-size: 10px; + font-weight: 900; + padding: 1px 4px; + top: 0px; + right: -6px; + min-width: 10px; + text-align: center; +} +nav .nav-notify.show { + display: block; +} +nav #nav-help-link, +nav #nav-search-link, +nav #nav-directory-link, +nav #nav-apps-link, +nav #nav-site-linkmenu, +nav #nav-home-link, +nav #nav-user-linkmenu +{ + float: right; +} +nav #nav-user-linkmenu{ + margin-right: 0px; + } +nav #nav-home-link{ + margin-left: 0px; + font-weight: bold; + } +nav #nav-directory-link{ + margin-left: 0px; + margin-right: 0px; + font-weight: bold; + margin: 3px 15px; + } +nav #nav-apps-link{ + margin-left: 0px; + margin-right: 0px; + font-weight: bold; + margin: 3px 15px; + } +nav #nav-help-link .menu-popup, +nav #nav-search-link .menu-popup, +nav #nav-directory-link .menu-popup, +nav #nav-apps-link .menu-popup, +nav #nav-site-linkmenu .menu-popup { + right: 0px; + left: auto; +} + +nav #nav-messages-linkmenu.on .icon.messages, nav #nav-messages-linkmenu.selected .icon.messages{ + background-image: url("../../../view/theme/diabook-blue/icons/messages2.png"); + } + +/*nav #nav-notifications-linkmenu.on .icon.notify,*/ nav #nav-notifications-linkmenu.selected .icon.notify{ + background-image: url("../../../view/theme/diabook-blue/icons/notify2.png"); + } + +nav #nav-contacts-linkmenu.on .icon.contacts, nav #nav-contacts-linkmenu.selected .icon.contacts{ + background-image: url("../../../view/theme/diabook-blue/icons/contacts2.png"); + } + +nav #nav-apps-link.selected { + background-color: #364e59; +} + +#nav-notifications-mark-all { + /* padding: 1px 1px 2px 26px; */ + /* border-bottom: 1px solid #364E59; */ + /* margin: 0px 0px 2px 0px; + padding: 5px 10px; */ +} + +#nav-notifications-see-all { + /* padding: 1px 1px 2px 26px; */ + /* border-bottom: 1px solid #364E59; */ + /* margin: 0px 0px 2px 0px; + padding: 5px 10px; */ +} + +.notify-seen { + background: none repeat scroll 0 0 #DDDDDD; + } + +ul.menu-popup { + position: absolute; + display: none; + width: 11em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 0px; + list-style: none; + border: 1px solid #364e59; + border-top-color: transparent; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +ul.menu-popup a { + display: block; + color: #2d2d2d; + padding: 5px 10px; + text-decoration: none; +} +ul.menu-popup a:hover { + background-color: #14618a; /*bdcdd4;*/ + color: #fff; +} +ul.menu-popup .menu-sep { + border-top: 1px solid #9eabb0; +} +ul.menu-popup li { + float: none; + overflow: auto; + height: auto; + display: block; +} +ul.menu-popup li img { + float: left; + width: 16px; + height: 16px; + padding-right: 5px; +} +ul.menu-popup .empty { + padding: 5px; + text-align: center; + color: #9eabb0; +} +/* autocomplete popup */ +.acpopup { + max-height: 150px; + background-color: #ffffff; + color: #2d2d2d; + border: 1px solid #MenuBorder; + overflow: auto; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +.acpopupitem { + color: #2d2d2d; + padding: 4px; + clear: left; +} +.acpopupitem img { + float: left; + margin-right: 4px; +} +.acpopupitem.selected { + background-color: #bdcdd4; +} +#nav-notifications-menu { + width: 400px; + max-height: 550px; + overflow: auto; +} +/* #nav-notifications-menu a { + display: inline; + padding: 5px 0px; + margin: 0px 0px 2px 0px; +} +#nav-notifications-menu li:hover { + background-color: #bdcdd4; +}*/ + +#nav-notifications-menu img { + float: left; + margin-right: 5px; +} +#nav-notifications-menu .contactname { + font-weight: bold; +} +#nav-notifications-menu .notif-when { + font-size: 10px; + color: #9eabb0; + display: block; +} + +.notif-image { + width: 32px; + height: 32px; + padding: 7px 7px 0px 0px; +} + +/* aside */ +aside { + display: table-cell; + vertical-align: top; + width: 180px; + padding: 0px 10px 0px 20px; + border-right: 1px solid #D2D2D2; + float: left; + /* background: #F1F1F1; */ +} +aside .vcard .fn { + font-size: 18px; + font-weight: bold; + margin-bottom: 5px; +} +aside .vcard .title { + margin-bottom: 5px; +} +aside .vcard dl { + height: auto; + overflow: auto; +} +aside .vcard dt { + float: left; + margin-left: 0px; + /*width: 35%;*/ + text-align: right; + color: #999999; +} +aside .vcard dd { + float: left; + margin-left: 5px; + /*width: 60%;*/ +} +aside #profile-extra-links ul { + padding: 0px; + margin: 0px; +} +aside #profile-extra-links li { + padding: 0px; + margin: 0px; + list-style: none; +} +aside #dfrn-request-link { + display: block; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + color: #ffffff; + background: #005c94 url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform: uppercase; + padding: 4px 2px 2px 35px; +} +aside #dfrn-request-link:hover { + text-decoration: none; + background-color: #36c; + /* background-color: #19aeff; */ +} +aside #profiles-menu { + width: 20em; +} +aside #search-text { + width: 173px; +} +aside #side-follow-url { + width: 173px; + } +aside #side-peoplefind-url { + width: 173px; + } +#contact-block { + overflow: auto; + height: auto; +} +#contact-block .contact-block-h4 { + float: left; + margin: 5px 0px; +} +#contact-block .allcontact-link { + float: right; + margin: 5px 0px; +} +#contact-block .contact-block-content { + clear: both; + overflow: auto; + height: auto; +} +#contact-block .contact-block-link { + float: left; + margin: 0px 2px 2px 0px; +} +#contact-block .contact-block-link img { + widht: 55px; + height: 55px; +} +/* widget */ +.widget { + margin-bottom: 2em; + /*.action .s10 { width: 10px; overflow: hidden; padding: 0px;} + .action .s16 { width: 16px; overflow: hidden; padding: 0px;}*/ +/* font-size: 12px; */ +} +.widget h3 { + padding: 0px; + margin: 2px; +} +.widget .action { + opacity: 0.1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget input.action { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget:hover .title .action { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget .tool:hover .action { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget .tool:hover .action.ticked { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget ul { + padding: 0px; +} +.widget ul li { + padding-left: 16px; + min-height: 16px; + list-style: none; +} +.widget .tool.selected { + background: url("../../../view/theme/diabook-blue/icons/selected.png") no-repeat left center; +} +/* widget: search */ +#add-search-popup { + width: 200px; + top: 18px; +} +/* section */ +section { + display: table-cell; + vertical-align: top; + width: 800px; + padding: 0px 0px 0px 12px; +} +.pager { + padding: 10px; + text-align: center; + font-size: 1.0em; +} + +.tabs { + + background-position: 0 -20px; + background-repeat: repeat-x; + height: 27px; + padding: 0; + } +.tab.button { + margin-right: 5px; + margin-left: 5px; + /*background: none repeat scroll 0 0 #F8F8F8;*/ + border: 1px solid #CCCCCC; + border-radius: 3px 3px 3px 3px; + font-weight: normal; + padding: 3px; + color: #333333; + } + +#birthday-notice, #event-notice, #birthday-wrapper, #event-wrapper{ + margin-bottom: 10px; + } +/* wall item */ +.tread-wrapper { + border-bottom: 1px solid #D2D2D2; + position: relative; + padding: 5px; + margin-bottom: 0px; + width: 775px; +} +.wall-item-decor { + position: absolute; + left: 790px; + top: -10px; + width: 16px; +} +.unstarred { + display: none; +} +.wall-item-container { + display: table; + width: 780px; +} + + +.wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom { + display: table-row; +} +.wall-item-bottom { + font-size: 13px; +} +.wall-item-container .wall-item-bottom { +/* opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; */ +} +.wall-item-container:hover .wall-item-bottom { +/* opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; */ +} +.wall-item-container .wall-item-info { + display: table-cell; + vertical-align: top; + text-align: left; + width: 80px; +} +.wall-item-container .wall-item-location { + padding-right: 40px; +} +.wall-item-container .wall-item-ago { + word-wrap: break-word; + width: 50px; + margin-left: 10px; + color: #999; +} +.wall-item-location { + + clear: both; + overflow: hidden; + + margin-bottom: 5px; +} + +.wall-item-container .wall-item-content { + font-size: 13px; + max-width: 720px; + word-wrap: break-word; + line-height: 1.4; +} + +.wall-item-container .wall-item-content img { + max-width: 700px; +} +.wall-item-container .wall-item-links, .wall-item-container .wall-item-actions { + display: table-cell; + vertical-align: middle; +} +.wall-item-container .wall-item-links .icon, .wall-item-container .wall-item-actions .icon { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-links .icon:hover, .wall-item-container .wall-item-actions .icon:hover { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-name { + font-weight: bold; +} +.wall-item-container .wall-item-actions-author { + width: 100%; + margin-bottom: 0.3em; +} +.wall-item-container .wall-item-actions-social { + float: left; + margin-bottom: 1px; +} +.wall-item-container .wall-item-actions-social a { + margin-right: 1em; +} +.wall-item-actions-social a { + float: left; +} +.wall-item-container .wall-item-actions-tools { + float: right; + width: 80px; +} +.wall-item-container .wall-item-actions-tools a { + float: right; +} +.wall-item-container .wall-item-actions-tools input { + float: right; +} +.wall-item-container.comment { + margin-top: 5px; + margin-bottom: 5px; + margin-left: 80px; + width: 700px; + border-bottom: 1px solid hsl(198, 21%, 79%); +} +.wall-item-container.comment .contact-photo { + width: 32px; + height: 32px; + margin-left: 16px; + /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/ + +} +.wall-item-container.comment { + top: 15px !important; + left: 15px !important; +} +.wall-item-container.comment .wall-item-links { + padding-left: 12px; +} +.wall-item-comment-wrapper { + margin: 1px 5px 1px 80px; +} +.wall-item-comment-wrapper .comment-edit-photo { + display: none; +} +.wall-item-comment-wrapper textarea { + height: 2.0em; + width: 100%; + font-size: 10px; + color: #999999; + border: 1px solid #DDD; + padding: 0.3em; + font-size: 14px; +} +.wall-item-comment-wrapper .comment-edit-text-full { + font-size: 14px; + height: 4em; + color: #2d2d2d; + border: 1px solid #2d2d2d; +} +.comment-edit-preview { + width: 710px; + border: 1px solid #2d2d2d; + margin-top: 10px; +} +.comment-edit-preview .contact-photo { + width: 32px; + height: 32px; + margin-left: 16px; + /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/ + +} +.comment-edit-preview { + top: 15px !important; + left: 15px !important; +} +.comment-edit-preview .wall-item-links { + padding-left: 12px; +} +.comment-edit-preview .wall-item-container { + width: 700px; +} +.comment-edit-preview .tread-wrapper { + width: 700px; + padding: 0; + margin: 10px 0; +} + +.shiny { + /* border-right: 10px solid #fce94f; */ + border-right: 1px solid #A7C7F7; + padding-right: 12px; +} + +#jot-preview-content{ + margin-top: 30px;} + +#jot-preview-content .tread-wrapper { + background-color: #fff797; +} + +.wall-item-tags { + padding-top: 1px; + padding-bottom: 2px; +} +.tag { + /*background: url("../../../images/tag_b.png") repeat-x center left;*/ + color: #3465A4; + padding-left: 3px; + font-size: 12px; +} +.tag a { + padding-right: 5px; + /*background: url("../../../images/tag.png") no-repeat center right;*/ + color: #3465A4; +} +.wwto { + position: absolute !important; + width: 25px; + height: 25px; + background: #FFFFFF; + border: 2px solid #364e59; + height: 25px; + width: 25px; + overflow: hidden; + padding: 1px; + position: absolute !important; + top: 40px; + left: 30px; + -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); +} +.wwto .contact-photo { + width: auto; + height: 25px; +} +/* contacts menu */ +.contact-photo-wrapper { + position: relative; + width: 80px; +} + +.contact-photo-wrapper.wwto { + width: 25px; +} + +.contact-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} +.contact-photo img { + width: 48px; + height: 48px; +} + +.contact-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 15px; +} +.contact-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.contact-wrapper { + left: 0px; + top: 63px; +} +.contact-photo { + width: 48px; + height: 48px; +} +.contact-photo img { + width: 48px; + height: 48px; +} +.contact-name { + /* text-align: center; */ + /*font-weight: bold;*/ + font-size: 12px; +} +.contact-details { + color: #999999; +} +/* editor */ +.jothidden { + display: none; +} +#jot { + width: 785px; + margin: 0px 2em 20px 0px; +} +#profile-jot-form #profile-jot-text { + height: 2.0em; + width: 99%; + font-size: 15px; + color: #999999; + border: 1px solid #DDD; + padding: 0.3em; + margin-bottom: 10px; +} +#jot #jot-tools { + margin: 0px; + padding: 0px; + height: 40px; + overflow: none; + width: 783px; + background-color: #fff; + border-bottom: 2px solid #9eabb0; +} + +#jot #jot-tools li { + list-style: none; + float: left; + width: 80px; + height: 40px; + border-bottom: 2px solid #9eabb0; +} +#jot #jot-tools li a { + display: block; + color: #cccccc; + width: 100%; + height: 40px; + text-align: center; + line-height: 40px; + overflow: hidden; +} +#jot #jot-tools li:hover { + background-color: #364e59; + border-bottom: 2px solid #bdcdd4; +} +#jot #jot-tools li.perms { + float: right; + width: 40px; +} +#jot #jot-tools li.perms a.unlock { + width: 30px; + border-left: 10px solid #cccccc; + background-color: #cccccc; + background-position: left center; +} +#jot #jot-tools li.perms a.lock { + width: 30px; + border-left: 10px solid #666666; + background-color: #666666; +} +#jot #jot-tools li.submit { + float: right; + background-color: #cccccc; + border-bottom: 2px solid #cccccc; + border-right: 1px solid #666666; + border-left: 1px solid #666666; +} +#jot #jot-tools li.submit input { + border: 0px; + margin: 0px; + padding: 0px; + background-color: #cccccc; + color: #666666; + width: 80px; + height: 40px; + line-height: 40px; +} +#jot #jot-tools li.submit input:hover { + background-color: #bdcdd4; + color: #666666; +} +#jot #jot-tools li.loading { + float: right; + background-color: #ffffff; + width: 20px; + vertical-align: center; + text-align: center; + border-top: 2px solid #9eabb0; + height: 38px; +} +#jot #jot-tools li.loading img { + margin-top: 10px; +} +#profile-jot-form #jot-title { + + border-radius: 5px 5px 5px 5px; + font-weight: bold; + height: 20px; + margin: 0 0 5px; + width: 60%; + border: 1px solid #ffffff; +} +#profile-jot-form #jot-title:-webkit-input-placeholder { + font-weight: normal; +} +#profile-jot-form #jot-title:-moz-placeholder { + font-weight: normal; +} +#profile-jot-form #profile-jot-text_parent #profile-jot-text_tbl{ + width: 785px; + height: 100px; + } +#jot #jot-title:hover { + border: 1px solid #999999; +} +#jot #jot-title:focus { + border: 1px solid #999999; +} +#jot #character-counter { + width: 80px; + float: right; + text-align: right; + height: 20px; + line-height: 20px; + padding-right: 20px; +} +#jot-perms-icon, +#profile-location, +#profile-nolocation, +#profile-youtube, +#profile-video, +#profile-audio, +#profile-link, +#profile-title, +#wall-image-upload, +#wall-file-upload, +#wall-image-upload-div, +#wall-file-upload-div, +.hover, .focus { + cursor: pointer; + margin-top: 2px; +} +#profile-jot-wrapper{ + margin: 0 2em 20px 0; + width: 785px; + } + +#profile-jot-submit-wrapper { + margin-bottom: 50px; + width: 785px; +} + +#profile-jot-submit { + float: right; + margin-top: 2px; + +} +#profile-upload-wrapper { + float: left; + margin-top: 2px; + margin-left: 10px; + +} +#profile-attach-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-rotator { + float: left; + margin-left: 30px; + margin-top: 2px; +} +#profile-link-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-youtube-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-video-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-audio-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-location-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-jot-perms { + float: left; + margin-left: 45px; + margin-top: 2px; +} +#jot-preview-link { + float: right; + margin-left: 10px; + margin-top: 2px; + font-size: 10px; +} +#profile-jot-perms{ + float: right; + margin-left: 10px; + margin-top: 2px; + } +/** buttons **/ +.button.creation1 { + background-color: #fff; + border: 1px solid #777777; + background-image: -moz-linear-gradient(center top , white 0%, #DDDDDD 100%); + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; +} +.button.creation2 { + background-color: #33ACFF; + background-image: -moz-linear-gradient(center top , #66C1FF 0%, #0097FF 100%); + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; +} +/*input[type="submit"] { + border: 0px; + background-color: @ButtonBackgroundColor; + color: @ButtonColor; + padding: 0px 10px; + .rounded(5px); + height: 18px; +}*/ +/** acl **/ +#photo-edit-perms-select, #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper { + display: block!important; +} +#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; + color: #999999; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +#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-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 **/ +/** tab buttons 14618a**/ +ul.tabs { + list-style-type: none; + padding-bottom: 10px; + font-size: 13px; +} +ul.tabs li { + float: left; + margin-left: 5px; +} +ul.tabs li .active { + background-color: #055580; + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; +} +/** + * 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 .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; +} +.field .hidden { + display: none!important; +} +.field.radio .field_help { + margin-left: 0px; +} +#directory-search-form{ + margin-bottom: 50px; + } +#profile-edit-links-end { + clear: both; + margin-bottom: 15px; +} + +#profile-edit-links ul { margin: 20px; padding-bottom: 20px; list-style: none; } + +#profile-edit-links li { + float: left; + list-style: none; + margin-left: 10px; +} + +.profile-edit-side-div { + display: none; +} + +#register-form label, +#profile-edit-form label { + width: 300px; float: left; +} + +.required { + display: inline; + color: #B20202; +} + +/* 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; +} +/* contacts */ +.contact-entry-wrapper { + width: 120px; + height: 120px; + float: left; +} +/* photo */ +.lframe { + float: left; + margin: 0px 10px 10px 0px; +} +/* profile match wrapper */ +.profile-match-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 20px; +} +.profile-match-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.profile-match-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.profile-match-wrapper { + left: 0px; + top: 63px; +} + +.contact-photo-menu-button { + position: relative; + background-image: url("../../../images/icons/16/menu.png"); + background-position: top left; + background-repeat: no-repeat; + margin: 0px 0px -16px 0px; + padding: 0px; + width: 16px; + height: 16px; + top: -20px; left:0px; + overflow: hidden; + text-indent: 40px; + display: none; + +} +.contact-photo-menu { + width: 11em; + border: 3px solid #364e59; + color: #2d2d2d; + background: #FFFFFF; +/* position: absolute;*/ + position: relative; + left: 0px; top: 0px; + display: none; + z-index: 10000; +} +.contact-photo-menu ul { margin:0px; padding: 0px; list-style: none } +.contact-photo-menu li a { + display: block; + padding: 5px 10px; + color: #2d2d2d; + text-decoration: none; +} +.contact-photo-menu li a:hover { + background-color: #bdcdd4; +} + +/* page footer */ +footer { + height: 100px; + display: table-row; +} + +blockquote { + border-left: 1px solid #D2D2D2; + padding-left: 9px; + margin: 0 0 0 .8ex; +} +.aprofile dt{ +box-shadow: 1px 1px 5px 0; + color: #666666; + margin: 15px 0 5px; + padding-left: 5px; + } +/* ================== */ +/* = Contacts Block = */ +/* ================== */ + +.contact-block-img { + width: 55px; + height: 55px; + padding-right: 3px; +} +.contact-block-div { + float: left; +} + +.contact-block-textdiv { width: 150px; height: 34px; float: left; } +#contact-block-end { clear: both; } + +#group-edit-wrapper { + margin-bottom: 10px; +} + +#group-members-end { + clear: both; +} +#group-edit-desc { + margin-top: 15px; +} + +/* +#group-separator, +#prof-separator { display: none;} +*/ + +#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; +} + +/* ========== */ +/* = Events = */ +/* ========== */ +.eventcal { + float: left; + font-size: 20px; +} + +.vevent { + border: 1px solid #CCCCCC; +} +.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-like-div .wall-item-like-buttons { + float: left; + margin-right: 10px; + } +.wall-item-like-buttons .icon.like { +float: left; +} + +#photo-photo-end { + clear: both; +} + +.tabs .comment-wwedit-wrapper { + display: block; + margin-top: 30px; + margin-left: 50px; + } + +.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; +} + +/* ============= */ +/* = Directory = */ +/* ============= */ +/* contacts menu */ +.contact-photo-wrapper { + position: relative; +} +.contact-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} +.contact-photo img { + width: 48px; + height: 48px; +} +.contact-photo-menu-button { + display: none; + /* position: absolute; */ + /* position: absolute; */ + left: -2px; + top: -20px; +} +.contact-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 15px; +} +.contact-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo-menu-button { + left: 0px; + top: 63px; +} +.directory-item { + float: left; + width: 200px; + height: 200px; +} +.directory-item .contact-photo { + width: 175px; + height: 175px; +} +.directory-item .contact-photo img { + width: 175px; + height: 175px; +} +.contact-name { + text-align: left; + font-weight: bold; + font-size: 12px; +} +.contact-details { + color: #999999; +} + +.photo-top-image-wrapper { + position: relative; + float: left; + margin-top: 15px; + margin-right: 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; +} + diff --git a/view/theme/diabook-blue/wall_item.tpl b/view/theme/diabook-blue/wall_item.tpl new file mode 100644 index 000000000..0a02ba812 --- /dev/null +++ b/view/theme/diabook-blue/wall_item.tpl @@ -0,0 +1,100 @@ +{{ if $item.indent }}{{ else }} +
    + $item.star.starred + {{ if $item.lock }}$item.lock{{ endif }} + +
    +{{ endif }} +
    +
    +
    +
    + + $item.name + + menu + + +
    +
    +
    + $item.name + - + {{ if $item.plink }}$item.ago{{ else }} $item.ago {{ endif }} + {{ if $item.lock }} - $item.lock {{ endif }} + +
    +
    + {{ if $item.title }}

    $item.title

    {{ endif }} + $item.body +
    +
    +
    + +
    + {{ for $item.tags as $tag }} + $tag + {{ endfor }} +
    +
    +
    +
    + +
    +
    +
    $item.location 
    +
    + + + {{ if $item.vote }} + + + {{ endif }} + + {{ if $item.vote.share }} + + {{ endif }} + + + {{ if $item.star }} + + $item.star.do + + $item.star.undo + $item.star.tagger + {{ endif }} + + {{ if $item.plink }}$item.plink.title{{ endif }} + + + +
    + +
    + + {{ if $item.drop.dropping }} + + $item.drop.delete + {{ endif }} + {{ if $item.edpost }} + + {{ endif }} +
    + +
    +
    +
    + + +
    $item.dislike
    +
    +
    + +
    + $item.comment +
    diff --git a/view/theme/diabook-blue/wallwall_item.tpl b/view/theme/diabook-blue/wallwall_item.tpl new file mode 100644 index 000000000..effb7273f --- /dev/null +++ b/view/theme/diabook-blue/wallwall_item.tpl @@ -0,0 +1,106 @@ +{{ if $item.indent }}{{ else }} +
    + $item.star.starred + {{ if $item.lock }}$item.lock{{ endif }} + +
    +{{ endif }} +
    +
    +
    +
    + + $item.owner_name + +
    +
    + + $item.name + + menu + + +
    +
    +
    + $item.name + $item.to $item.owner_name + $item.vwall -   + {{ if $item.plink }}$item.ago{{ else }} $item.ago {{ endif }} + {{ if $item.lock }} - $item.lock {{ endif }} + +
    +
    + {{ if $item.title }}

    $item.title

    {{ endif }} + $item.body +
    +
    +
    + +
    + {{ for $item.tags as $tag }} + $tag + {{ endfor }} +
    +
    +
    +
    + +
    +
    +
    $item.location 
    +
    + + + {{ if $item.vote }} + + + {{ endif }} + + {{ if $item.vote.share }} + + {{ endif }} + + + {{ if $item.star }} + + $item.star.do + + $item.star.undo + $item.star.tagger + {{ endif }} + + {{ if $item.plink }}$item.plink.title{{ endif }} + + + +
    + +
    + + {{ if $item.drop.dropping }} + + $item.drop.delete + {{ endif }} + {{ if $item.edpost }} + + {{ endif }} +
    + +
    +
    +
    + + +
    $item.dislike
    +
    +
    + +
    + $item.comment +
    \ No newline at end of file diff --git a/view/theme/diabook/comment_item.tpl b/view/theme/diabook/comment_item.tpl new file mode 100644 index 000000000..85176732b --- /dev/null +++ b/view/theme/diabook/comment_item.tpl @@ -0,0 +1,35 @@ +
    +
    + + + + + + + +
    + $mytitle +
    +
    + + + {{ if $qcomment }} +
      + {{ for $qcomment as $qc }} + + {{ endfor }} +
    + {{ endif }} + +
    + + +
    +
    + +
    diff --git a/view/theme/diabook/nav.tpl b/view/theme/diabook/nav.tpl index c7c00e20c..d0ff06673 100644 --- a/view/theme/diabook/nav.tpl +++ b/view/theme/diabook/nav.tpl @@ -1,7 +1,4 @@
    - - -
    $sitelocation
    @@ -76,7 +73,7 @@
  • $nav.search.1
  • -
  • About
  • +
  • Info/Impressum
  • {{ if $nav.settings }}
  • $nav.settings.1
  • {{ endif }} {{ if $nav.admin }}
  • $nav.admin.1
  • {{ endif }} @@ -144,7 +141,7 @@
    $langselector
    -
    +
    diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 1722588ba..768ce1370 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -548,7 +548,8 @@ header #banner #logo-img { } header #banner #logo-text { font-size: 22px; - + position: absolute; + top: 15%; } /* nav */ nav { @@ -1058,6 +1059,10 @@ section { padding: 3px; color: #333333; } + +#birthday-notice, #event-notice, #birthday-wrapper, #event-wrapper{ + margin-bottom: 10px; + } /* wall item */ .tread-wrapper { border-bottom: 1px solid #D2D2D2; @@ -1939,6 +1944,9 @@ box-shadow: 1px 1px 5px 0; #group-members-end { clear: both; } +#group-edit-desc { + margin-top: 15px; +} /* #group-separator, @@ -2146,11 +2154,24 @@ a.mail-list-link { #photo-photo { float: left; } +#photo-like-div .wall-item-like-buttons { + float: left; + margin-right: 10px; + } +.wall-item-like-buttons .icon.like { +float: left; +} #photo-photo-end { clear: both; } +.tabs .comment-wwedit-wrapper { + display: block; + margin-top: 30px; + margin-left: 50px; + } + .profile-match-photo { float: left; text-align: center; -- cgit v1.2.3 From 3cfa83c3db5c12947357d56447c78de1f6ae035b Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 8 Mar 2012 14:34:58 -0800 Subject: revup --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 4557f2f39..76d2f9326 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1274' ); +define ( 'FRIENDICA_VERSION', '2.3.1275' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DB_UPDATE_VERSION', 1131 ); -- cgit v1.2.3 From af9f7da449dea6c62972fcf5ecc27e2e43160bfb Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 8 Mar 2012 16:29:22 -0800 Subject: catalan translation --- view/ca/cmnt_received_eml.tpl | 18 + view/ca/follow_notify_eml.tpl | 13 + view/ca/friend_complete_eml.tpl | 19 + view/ca/htconfig.tpl | 68 + view/ca/intro_complete_eml.tpl | 21 + view/ca/lostpass_eml.tpl | 35 + view/ca/mail_received_html_body_eml.tpl | 24 + view/ca/mail_received_text_body_eml.tpl | 9 + view/ca/messages.po | 6127 +++++++++++++++++++++++++++++++ view/ca/passchanged_eml.tpl | 19 + view/ca/register_open_eml.tpl | 22 + view/ca/register_verify_eml.tpl | 23 + view/ca/request_notify_eml.tpl | 13 + view/ca/strings.php | 1425 +++++++ view/ca/wall_received_eml.tpl | 18 + 15 files changed, 7854 insertions(+) create mode 100755 view/ca/cmnt_received_eml.tpl create mode 100755 view/ca/follow_notify_eml.tpl create mode 100755 view/ca/friend_complete_eml.tpl create mode 100755 view/ca/htconfig.tpl create mode 100755 view/ca/intro_complete_eml.tpl create mode 100755 view/ca/lostpass_eml.tpl create mode 100755 view/ca/mail_received_html_body_eml.tpl create mode 100755 view/ca/mail_received_text_body_eml.tpl create mode 100755 view/ca/messages.po create mode 100755 view/ca/passchanged_eml.tpl create mode 100755 view/ca/register_open_eml.tpl create mode 100755 view/ca/register_verify_eml.tpl create mode 100755 view/ca/request_notify_eml.tpl create mode 100755 view/ca/strings.php create mode 100755 view/ca/wall_received_eml.tpl diff --git a/view/ca/cmnt_received_eml.tpl b/view/ca/cmnt_received_eml.tpl new file mode 100755 index 000000000..ca61ca492 --- /dev/null +++ b/view/ca/cmnt_received_eml.tpl @@ -0,0 +1,18 @@ + +Apreciat/da $username, + + '$from' ha comentat un element/conversació que estàs seguint. + +----- +$body +----- + +Accedeix a $siteurl per a veure la conversa completa: + +$display + + + $sitename + + + diff --git a/view/ca/follow_notify_eml.tpl b/view/ca/follow_notify_eml.tpl new file mode 100755 index 000000000..ab5a4b371 --- /dev/null +++ b/view/ca/follow_notify_eml.tpl @@ -0,0 +1,13 @@ + +Apreciat/da $myname, + +Tens un nou seguidor en $sitename - '$requestor'. + +Pots visitar el seu perfil en $url. + +Iniciï sessió en el seu lloc per a aprovar o rebutjar/cancelar la sol·licitud. + +$siteurl + + + $sitename diff --git a/view/ca/friend_complete_eml.tpl b/view/ca/friend_complete_eml.tpl new file mode 100755 index 000000000..539d9ff3d --- /dev/null +++ b/view/ca/friend_complete_eml.tpl @@ -0,0 +1,19 @@ + +Apreciat/da $username, + + Grans noticies... '$fn' a '$dfrn_url' ha acceptat la teva sol·licitud de connexió en '$sitename'. + +Ara sous amics mutus i podreu intercanviar actualizacions de estatus, fotos, i correu electrónic +sense cap restricció. + +Visita la teva pàgina de 'Contactes' en $sitename si desitja realizar qualsevol canvi en aquesta relació. + +$siteurl + +[Per exemple, pots crear un perfil independent amb informació que no esta disponible al públic en general +- i assignar drets de visualització a '$fn']. + + + $sitename + + diff --git a/view/ca/htconfig.tpl b/view/ca/htconfig.tpl new file mode 100755 index 000000000..28446f3df --- /dev/null +++ b/view/ca/htconfig.tpl @@ -0,0 +1,68 @@ +path to 'directory/subdirectory'. + +$a->path = '$urlpath'; + +// Choose a legal default timezone. If you are unsure, use "America/Los_Angeles". +// It can be changed later and only applies to timestamps for anonymous viewers. + +$default_timezone = '$timezone'; + +// What is your site name? + +$a->config['sitename'] = "La Meva Xarxa d'Amics"; + +// Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED. +// Be certain to create your own personal account before setting +// REGISTER_CLOSED. 'register_text' (if set) will be displayed prominently on +// the registration page. REGISTER_APPROVE requires you set 'admin_email' +// to the email address of an already registered person who can authorise +// and/or approve/deny the request. + +$a->config['register_policy'] = REGISTER_OPEN; +$a->config['register_text'] = ''; +$a->config['admin_email'] = '$adminmail'; + +// Maximum size of an imported message, 0 is unlimited + +$a->config['max_import_size'] = 200000; + +// maximum size of uploaded photos + +$a->config['system']['maximagesize'] = 800000; + +// Location of PHP command line processor + +$a->config['php_path'] = '$phpath'; + +// Location of global directory submission page. + +$a->config['system']['directory_submit_url'] = 'http://dir.friendika.com/submit'; +$a->config['system']['directory_search_url'] = 'http://dir.friendika.com/directory?search='; + +// PuSH - aka pubsubhubbub URL. This makes delivery of public posts as fast as private posts + +$a->config['system']['huburl'] = 'http://pubsubhubbub.appspot.com'; + +// Server-to-server private message encryption (RINO) is allowed by default. +// Encryption will only be provided if this setting is true and the +// PHP mcrypt extension is installed on both systems + +$a->config['system']['rino_encrypt'] = true; + +// default system theme + +$a->config['system']['theme'] = 'duepuntozero'; + diff --git a/view/ca/intro_complete_eml.tpl b/view/ca/intro_complete_eml.tpl new file mode 100755 index 000000000..70507d71d --- /dev/null +++ b/view/ca/intro_complete_eml.tpl @@ -0,0 +1,21 @@ + +Apreciat/da $username, + + '$fn' en '$dfrn_url' ha acceptat la teva petició +connexió a '$sitename'. + + '$fn' ha optat per acceptar-te com a "fan", que restringeix certes +formes de comunicació, com missatges privats i algunes interaccions +amb el perfil. Si ets una "celebritat" o una pàgina de comunitat, +aquests ajustos s'aplican automàticament + + '$fn' pot optar per extendre aixó en una relació més permisiva +en el futur. + + Començaràs a rebre les actualizacions públiques de estatus de '$fn', +que apareixeran a la teva pàgina "Xarxa" en + +$siteurl + + + $sitename diff --git a/view/ca/lostpass_eml.tpl b/view/ca/lostpass_eml.tpl new file mode 100755 index 000000000..eccf2050a --- /dev/null +++ b/view/ca/lostpass_eml.tpl @@ -0,0 +1,35 @@ + +Apreciat/da $username, + + S'ha rebut una sol·licitud en $sitename recentment per restablir +la teva contrasenya. Per confirmar aquesta sol·licitud, per favor seleccioni l'enllaç de +verificació sota o copia-ho i pega-ho en la barra d'adreces del teu navegador. + +Si NO has sol·licitat aquest canvi, per favor NO segueixis l'enllaç indicat i ignora +i/o elimina aquest missatge. + +La teva contrasenya no es canviarà tret que puguem verificar que ets la teva qui +va emetre aquesta sol·licitud. + +Segueix aquest enllaç per verificar la teva identitat: + +$reset_link + +A continuació rebràs un missatge amb la nova contrasenya. + +Després de accedir, podràs canviar la contrasenya del teu compte a la pàgina de +configuració. + +Les dades d'accés són els següents: + + +Lloc: $siteurl +Nom: $email + + + + +Salutacions, + L'administració de $sitename + + diff --git a/view/ca/mail_received_html_body_eml.tpl b/view/ca/mail_received_html_body_eml.tpl new file mode 100755 index 000000000..64eee0bf1 --- /dev/null +++ b/view/ca/mail_received_html_body_eml.tpl @@ -0,0 +1,24 @@ + + + + Mensaje de Friendica + + + + + + + + + + + + + + + + + +
    Friendica
    Has rebut un nou missatge privat de '$from' en $siteName.
    $from
    $title
    $htmlversion
    Accedeix a $siteurl per a llegir i respondre als teus missatges privats.
    $siteName
    + + diff --git a/view/ca/mail_received_text_body_eml.tpl b/view/ca/mail_received_text_body_eml.tpl new file mode 100755 index 000000000..b343c4e6d --- /dev/null +++ b/view/ca/mail_received_text_body_eml.tpl @@ -0,0 +1,9 @@ +Has rebut un nou missatge privat de '$from' en $siteName. + +$title + +$textversion + +Accedeix a $siteurl per a llegir i respondre als teus missatges privats. + + $siteName diff --git a/view/ca/messages.po b/view/ca/messages.po new file mode 100755 index 000000000..8463ceb12 --- /dev/null +++ b/view/ca/messages.po @@ -0,0 +1,6127 @@ +# FRIENDICA Distributed Social Network +# Copyright (C) 2010, 2011 the Friendica Project +# This file is distributed under the same license as the Friendica package. +# +# Translators: +# Rafael GARAU ESPINÓS , 2012. +msgid "" +msgstr "" +"Project-Id-Version: friendica\n" +"Report-Msgid-Bugs-To: http://bugs.friendica.com/\n" +"POT-Creation-Date: 2012-03-06 15:09-0800\n" +"PO-Revision-Date: 2012-03-08 21:58+0000\n" +"Last-Translator: Rafael GARAU ESPINÓS \n" +"Language-Team: Catalan (http://www.transifex.net/projects/p/friendica/language/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" + +#: ../../mod/oexchange.php:25 +msgid "Post successful." +msgstr "Publicat amb éxit." + +#: ../../mod/update_notes.php:41 ../../mod/update_community.php:18 +#: ../../mod/update_network.php:22 ../../mod/update_profile.php:41 +msgid "[Embedded content - reload page to view]" +msgstr "[Contingut embegut - recarrega la pàgina per a veure-ho]" + +#: ../../mod/crepair.php:102 +msgid "Contact settings applied." +msgstr "Ajustos de Contacte aplicats." + +#: ../../mod/crepair.php:104 +msgid "Contact update failed." +msgstr "Fracassà l'actualització de Contacte" + +#: ../../mod/crepair.php:115 ../../mod/wall_attach.php:43 +#: ../../mod/fsuggest.php:78 ../../mod/events.php:110 ../../mod/api.php:26 +#: ../../mod/api.php:31 ../../mod/photos.php:129 ../../mod/photos.php:865 +#: ../../mod/editpost.php:10 ../../mod/install.php:171 +#: ../../mod/notifications.php:62 ../../mod/contacts.php:125 +#: ../../mod/settings.php:49 ../../mod/settings.php:411 +#: ../../mod/settings.php:416 ../../mod/manage.php:86 ../../mod/network.php:6 +#: ../../mod/notes.php:20 ../../mod/attach.php:33 ../../mod/group.php:19 +#: ../../mod/viewcontacts.php:22 ../../mod/register.php:36 +#: ../../mod/regmod.php:111 ../../mod/item.php:124 ../../mod/item.php:140 +#: ../../mod/profile_photo.php:19 ../../mod/profile_photo.php:137 +#: ../../mod/profile_photo.php:148 ../../mod/profile_photo.php:159 +#: ../../mod/message.php:9 ../../mod/message.php:46 ../../mod/allfriends.php:9 +#: ../../mod/wall_upload.php:42 ../../mod/follow.php:8 ../../mod/common.php:9 +#: ../../mod/display.php:133 ../../mod/profiles.php:7 +#: ../../mod/profiles.php:229 ../../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:332 +#: ../../include/items.php:3030 ../../index.php:288 +msgid "Permission denied." +msgstr "Permís denegat." + +#: ../../mod/crepair.php:129 ../../mod/fsuggest.php:20 +#: ../../mod/fsuggest.php:92 ../../mod/dfrn_confirm.php:118 +msgid "Contact not found." +msgstr "Contacte no trobat" + +#: ../../mod/crepair.php:135 +msgid "Repair Contact Settings" +msgstr "Reposar els ajustos de Contacte" + +#: ../../mod/crepair.php:137 +msgid "" +"WARNING: This is highly advanced and if you enter incorrect" +" information your communications with this contact may stop working." +msgstr "ADVERTÈNCIA: Això és molt avançat i si s'introdueix informació incorrecta la seva comunicació amb aquest contacte pot deixar de funcionar." + +#: ../../mod/crepair.php:138 +msgid "" +"Please use your browser 'Back' button now if you are " +"uncertain what to do on this page." +msgstr "Si us plau, prem el botó 'Tornar' ara si no saps segur que has de fer aqui." + +#: ../../mod/crepair.php:144 +msgid "Return to contact editor" +msgstr "Tornar al editor de contactes" + +#: ../../mod/crepair.php:148 ../../mod/settings.php:462 +#: ../../mod/settings.php:488 ../../mod/admin.php:484 ../../mod/admin.php:493 +msgid "Name" +msgstr "Nom" + +#: ../../mod/crepair.php:149 +msgid "Account Nickname" +msgstr "Malnom de Compte" + +#: ../../mod/crepair.php:150 +msgid "@Tagname - overrides Name/Nickname" +msgstr "@Tagname - té prel·lació sobre Nom/Malnom" + +#: ../../mod/crepair.php:151 +msgid "Account URL" +msgstr "Adreça URL del Compte" + +#: ../../mod/crepair.php:152 +msgid "Friend Request URL" +msgstr "Adreça URL de sol·licitud d'Amistat" + +#: ../../mod/crepair.php:153 +msgid "Friend Confirm URL" +msgstr "Adreça URL de confirmació d'Amic" + +#: ../../mod/crepair.php:154 +msgid "Notification Endpoint URL" +msgstr "Adreça URL de Notificació" + +#: ../../mod/crepair.php:155 +msgid "Poll/Feed URL" +msgstr "Adreça de Enquesta/Alimentador" + +#: ../../mod/crepair.php:156 +msgid "New photo from this URL" +msgstr "Nova foto d'aquesta URL" + +#: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107 +#: ../../mod/events.php:400 ../../mod/photos.php:900 ../../mod/photos.php:958 +#: ../../mod/photos.php:1182 ../../mod/photos.php:1222 +#: ../../mod/photos.php:1262 ../../mod/photos.php:1293 +#: ../../mod/install.php:251 ../../mod/install.php:289 +#: ../../mod/localtime.php:45 ../../mod/contacts.php:319 +#: ../../mod/settings.php:460 ../../mod/settings.php:603 +#: ../../mod/settings.php:797 ../../mod/manage.php:109 ../../mod/group.php:80 +#: ../../mod/admin.php:313 ../../mod/admin.php:481 ../../mod/admin.php:609 +#: ../../mod/admin.php:776 ../../mod/admin.php:856 ../../mod/profiles.php:375 +#: ../../mod/invite.php:106 ../../addon/facebook/facebook.php:411 +#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:92 +#: ../../addon/nsfw/nsfw.php:57 +#: ../../addon/uhremotestorage/uhremotestorage.php:89 +#: ../../addon/randplace/randplace.php:179 ../../addon/dwpost/dwpost.php:92 +#: ../../addon/drpost/drpost.php:110 ../../addon/geonames/geonames.php:187 +#: ../../addon/oembed.old/oembed.php:41 ../../addon/impressum/impressum.php:69 +#: ../../addon/blockem/blockem.php:57 ../../addon/qcomment/qcomment.php:61 +#: ../../addon/openstreetmap/openstreetmap.php:70 +#: ../../addon/editplain/editplain.php:84 ../../addon/blackout/blackout.php:94 +#: ../../addon/pageheader/pageheader.php:52 +#: ../../addon/statusnet/statusnet.php:273 +#: ../../addon/statusnet/statusnet.php:287 +#: ../../addon/statusnet/statusnet.php:313 +#: ../../addon/statusnet/statusnet.php:320 +#: ../../addon/statusnet/statusnet.php:345 +#: ../../addon/statusnet/statusnet.php:532 ../../addon/tumblr/tumblr.php:90 +#: ../../addon/numfriends/numfriends.php:85 ../../addon/gnot/gnot.php:88 +#: ../../addon/wppost/wppost.php:102 ../../addon/showmore/showmore.php:48 +#: ../../addon/piwik/piwik.php:89 ../../addon/twitter/twitter.php:175 +#: ../../addon/twitter/twitter.php:201 ../../addon/twitter/twitter.php:355 +#: ../../addon/posterous/posterous.php:90 +#: ../../view/theme/quattro/theme.php:15 ../../include/conversation.php:552 +msgid "Submit" +msgstr "Enviar" + +#: ../../mod/help.php:30 +msgid "Help:" +msgstr "Ajuda:" + +#: ../../mod/help.php:34 ../../include/nav.php:82 +msgid "Help" +msgstr "Ajuda" + +#: ../../mod/help.php:38 ../../index.php:221 +msgid "Not Found" +msgstr "No trobat" + +#: ../../mod/help.php:41 ../../index.php:224 +msgid "Page not found." +msgstr "Pàgina no trobada." + +#: ../../mod/wall_attach.php:57 +#, php-format +msgid "File exceeds size limit of %d" +msgstr "L'arxiu excedeix la mida límit de %d" + +#: ../../mod/wall_attach.php:85 ../../mod/wall_attach.php:96 +msgid "File upload failed." +msgstr "La càrrega de fitxers ha fallat." + +#: ../../mod/fsuggest.php:63 +msgid "Friend suggestion sent." +msgstr "Enviat suggeriment d'amic." + +#: ../../mod/fsuggest.php:97 +msgid "Suggest Friends" +msgstr "Suggerir Amics" + +#: ../../mod/fsuggest.php:99 +#, php-format +msgid "Suggest a friend for %s" +msgstr "Suggerir una amic per a %s" + +#: ../../mod/events.php:62 +msgid "Event description and start time are required." +msgstr "Es requereix descripció de l'esdeveniment i l'hora d'inici." + +#: ../../mod/events.php:230 +msgid "l, F j" +msgstr "l, F j" + +#: ../../mod/events.php:252 +msgid "Edit event" +msgstr "Editar esdeveniment" + +#: ../../mod/events.php:272 ../../include/text.php:982 +msgid "link to source" +msgstr "Enllaç al origen" + +#: ../../mod/events.php:296 ../../include/nav.php:50 ../../boot.php:1349 +msgid "Events" +msgstr "Esdeveniments" + +#: ../../mod/events.php:297 +msgid "Create New Event" +msgstr "Crear un nou esdeveniment" + +#: ../../mod/events.php:298 +msgid "Previous" +msgstr "Previ" + +#: ../../mod/events.php:299 ../../mod/install.php:210 +msgid "Next" +msgstr "Proper" + +#: ../../mod/events.php:371 +msgid "hour:minute" +msgstr "hora:minut" + +#: ../../mod/events.php:380 +msgid "Event details" +msgstr "Detalls del esdeveniment" + +#: ../../mod/events.php:381 +#, php-format +msgid "Format is %s %s. Starting date and Description are required." +msgstr "El format és %s %s. Es requereix Data d'inici i Descripció." + +#: ../../mod/events.php:383 +msgid "Event Starts:" +msgstr "Inici d'Esdeveniment:" + +#: ../../mod/events.php:386 +msgid "Finish date/time is not known or not relevant" +msgstr "La data/hora de finalització no es coneixen o no són relevants" + +#: ../../mod/events.php:388 +msgid "Event Finishes:" +msgstr "L'esdeveniment Finalitza:" + +#: ../../mod/events.php:391 +msgid "Adjust for viewer timezone" +msgstr "Ajustar a la zona horaria de l'espectador" + +#: ../../mod/events.php:393 +msgid "Description:" +msgstr "Descripció:" + +#: ../../mod/events.php:395 ../../include/event.php:37 +#: ../../include/bb2diaspora.php:260 ../../boot.php:980 +msgid "Location:" +msgstr "Ubicació:" + +#: ../../mod/events.php:397 +msgid "Share this event" +msgstr "Compartir aquest esdeveniment" + +#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94 +#: ../../mod/dfrn_request.php:686 ../../mod/settings.php:461 +#: ../../mod/settings.php:487 ../../addon/js_upload/js_upload.php:45 +msgid "Cancel" +msgstr "Cancel·lar" + +#: ../../mod/tagrm.php:41 +msgid "Tag removed" +msgstr "Etiqueta eliminada" + +#: ../../mod/tagrm.php:79 +msgid "Remove Item Tag" +msgstr "Esborrar etiqueta del element" + +#: ../../mod/tagrm.php:81 +msgid "Select a tag to remove: " +msgstr "Selecciona etiqueta a esborrar:" + +#: ../../mod/tagrm.php:93 ../../mod/delegate.php:130 +msgid "Remove" +msgstr "Esborrar" + +#: ../../mod/dfrn_poll.php:91 ../../mod/dfrn_poll.php:517 +#, php-format +msgid "%s welcomes %s" +msgstr "%s Benvingut %s" + +#: ../../mod/api.php:76 ../../mod/api.php:102 +msgid "Authorize application connection" +msgstr "Autoritzi la connexió de aplicacions" + +#: ../../mod/api.php:77 +msgid "Return to your app and insert this Securty Code:" +msgstr "Torni a la seva aplicació i inserti aquest Codi de Seguretat:" + +#: ../../mod/api.php:89 +msgid "Please login to continue." +msgstr "Per favor, accedeixi per a continuar." + +#: ../../mod/api.php:104 +msgid "" +"Do you want to authorize this application to access your posts and contacts," +" and/or create new posts for you?" +msgstr "Vol autoritzar a aquesta aplicació per accedir als teus missatges i contactes, i/o crear nous enviaments per a vostè?" + +#: ../../mod/api.php:105 ../../mod/dfrn_request.php:676 +#: ../../mod/settings.php:692 ../../mod/settings.php:698 +#: ../../mod/settings.php:706 ../../mod/settings.php:710 +#: ../../mod/settings.php:715 ../../mod/settings.php:721 +#: ../../mod/settings.php:727 ../../mod/settings.php:787 +#: ../../mod/settings.php:788 ../../mod/settings.php:789 +#: ../../mod/settings.php:790 ../../mod/register.php:524 +#: ../../mod/profiles.php:357 +msgid "Yes" +msgstr "Si" + +#: ../../mod/api.php:106 ../../mod/dfrn_request.php:677 +#: ../../mod/settings.php:692 ../../mod/settings.php:698 +#: ../../mod/settings.php:706 ../../mod/settings.php:710 +#: ../../mod/settings.php:715 ../../mod/settings.php:721 +#: ../../mod/settings.php:727 ../../mod/settings.php:787 +#: ../../mod/settings.php:788 ../../mod/settings.php:789 +#: ../../mod/settings.php:790 ../../mod/register.php:525 +#: ../../mod/profiles.php:358 +msgid "No" +msgstr "No" + +#: ../../mod/photos.php:42 +msgid "Photo Albums" +msgstr "Àlbum de Fotos" + +#: ../../mod/photos.php:50 ../../mod/photos.php:150 ../../mod/photos.php:879 +#: ../../mod/photos.php:950 ../../mod/photos.php:965 ../../mod/photos.php:1371 +#: ../../mod/photos.php:1383 ../../addon/communityhome/communityhome.php:110 +msgid "Contact Photos" +msgstr "Fotos de Contacte" + +#: ../../mod/photos.php:57 ../../mod/photos.php:975 ../../mod/photos.php:1413 +msgid "Upload New Photos" +msgstr "Actualitzar Noves Fotos" + +#: ../../mod/photos.php:68 ../../mod/settings.php:11 +msgid "everybody" +msgstr "tothom" + +#: ../../mod/photos.php:139 +msgid "Contact information unavailable" +msgstr "Informació del Contacte no disponible" + +#: ../../mod/photos.php:150 ../../mod/photos.php:597 ../../mod/photos.php:950 +#: ../../mod/photos.php:965 ../../mod/register.php:327 +#: ../../mod/register.php:334 ../../mod/register.php:341 +#: ../../mod/profile_photo.php:58 ../../mod/profile_photo.php:65 +#: ../../mod/profile_photo.php:72 ../../mod/profile_photo.php:170 +#: ../../mod/profile_photo.php:246 ../../mod/profile_photo.php:255 +#: ../../addon/communityhome/communityhome.php:111 +msgid "Profile Photos" +msgstr "Fotos del Perfil" + +#: ../../mod/photos.php:160 +msgid "Album not found." +msgstr "Àlbum no trobat." + +#: ../../mod/photos.php:178 ../../mod/photos.php:959 +msgid "Delete Album" +msgstr "Eliminar Àlbum" + +#: ../../mod/photos.php:241 ../../mod/photos.php:1183 +msgid "Delete Photo" +msgstr "Eliminar Foto" + +#: ../../mod/photos.php:528 +msgid "was tagged in a" +msgstr "Fou etiquetat a un" + +#: ../../mod/photos.php:528 ../../mod/like.php:127 ../../mod/tagger.php:70 +#: ../../addon/communityhome/communityhome.php:163 ../../include/text.php:1226 +#: ../../include/diaspora.php:1600 ../../include/conversation.php:53 +#: ../../include/conversation.php:126 +msgid "photo" +msgstr "foto" + +#: ../../mod/photos.php:528 +msgid "by" +msgstr "per" + +#: ../../mod/photos.php:631 ../../addon/js_upload/js_upload.php:315 +msgid "Image exceeds size limit of " +msgstr "La imatge excedeix el límit de " + +#: ../../mod/photos.php:639 +msgid "Image file is empty." +msgstr "El fitxer de imatge és buit." + +#: ../../mod/photos.php:653 ../../mod/profile_photo.php:122 +#: ../../mod/wall_upload.php:65 +msgid "Unable to process image." +msgstr "Incapaç de processar la imatge." + +#: ../../mod/photos.php:673 ../../mod/profile_photo.php:251 +#: ../../mod/wall_upload.php:84 +msgid "Image upload failed." +msgstr "Actualització de la imatge fracassada." + +#: ../../mod/photos.php:759 ../../mod/community.php:16 +#: ../../mod/dfrn_request.php:625 ../../mod/viewcontacts.php:17 +#: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:33 +msgid "Public access denied." +msgstr "Accés públic denegat." + +#: ../../mod/photos.php:769 +msgid "No photos selected" +msgstr "No s'han seleccionat fotos" + +#: ../../mod/photos.php:846 +msgid "Access to this item is restricted." +msgstr "L'accés a aquest element està restringit." + +#: ../../mod/photos.php:907 +msgid "Upload Photos" +msgstr "Carregar Fotos" + +#: ../../mod/photos.php:910 ../../mod/photos.php:954 +msgid "New album name: " +msgstr "Nou nom d'àlbum:" + +#: ../../mod/photos.php:911 +msgid "or existing album name: " +msgstr "o nom d'àlbum existent:" + +#: ../../mod/photos.php:912 +msgid "Do not show a status post for this upload" +msgstr "No tornis a mostrar un missatge d'estat d'aquesta pujada" + +#: ../../mod/photos.php:914 ../../mod/photos.php:1178 +msgid "Permissions" +msgstr "Permisos" + +#: ../../mod/photos.php:969 +msgid "Edit Album" +msgstr "Editar Àlbum" + +#: ../../mod/photos.php:984 ../../mod/photos.php:1396 +msgid "View Photo" +msgstr "Veure Foto" + +#: ../../mod/photos.php:1019 +msgid "Permission denied. Access to this item may be restricted." +msgstr "Permís denegat. L'accés a aquest element pot estar restringit." + +#: ../../mod/photos.php:1021 +msgid "Photo not available" +msgstr "Foto no disponible" + +#: ../../mod/photos.php:1071 +msgid "View photo" +msgstr "Veure foto" + +#: ../../mod/photos.php:1071 +msgid "Edit photo" +msgstr "Editar foto" + +#: ../../mod/photos.php:1072 +msgid "Use as profile photo" +msgstr "Emprar com a foto del perfil" + +#: ../../mod/photos.php:1078 ../../include/conversation.php:482 +msgid "Private Message" +msgstr "Missatge Privat" + +#: ../../mod/photos.php:1089 +msgid "View Full Size" +msgstr "Veure'l a Mida Completa" + +#: ../../mod/photos.php:1157 +msgid "Tags: " +msgstr "Etiquetes:" + +#: ../../mod/photos.php:1160 +msgid "[Remove any tag]" +msgstr "Treure etiquetes" + +#: ../../mod/photos.php:1171 +msgid "New album name" +msgstr "Nou nom d'àlbum" + +#: ../../mod/photos.php:1174 +msgid "Caption" +msgstr "Títol" + +#: ../../mod/photos.php:1176 +msgid "Add a Tag" +msgstr "Afegir una etiqueta" + +#: ../../mod/photos.php:1180 +msgid "" +"Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" +msgstr "Exemple: @bob, @Barbara_jensen, @jim@example.com, #California, #camping" + +#: ../../mod/photos.php:1200 ../../include/conversation.php:529 +msgid "I like this (toggle)" +msgstr "M'agrada això (canviar)" + +#: ../../mod/photos.php:1201 ../../include/conversation.php:530 +msgid "I don't like this (toggle)" +msgstr "No m'agrada això (canviar)" + +#: ../../mod/photos.php:1202 ../../include/conversation.php:933 +msgid "Share" +msgstr "Compartir" + +#: ../../mod/photos.php:1203 ../../mod/editpost.php:104 +#: ../../mod/message.php:155 ../../mod/message.php:296 +#: ../../include/conversation.php:348 ../../include/conversation.php:694 +#: ../../include/conversation.php:950 +msgid "Please wait" +msgstr "Si us plau esperi" + +#: ../../mod/photos.php:1219 ../../mod/photos.php:1259 +#: ../../mod/photos.php:1290 ../../include/conversation.php:549 +msgid "This is you" +msgstr "Aquest ets tu" + +#: ../../mod/photos.php:1221 ../../mod/photos.php:1261 +#: ../../mod/photos.php:1292 ../../include/conversation.php:551 +#: ../../boot.php:447 +msgid "Comment" +msgstr "Comentari" + +#: ../../mod/photos.php:1223 ../../mod/editpost.php:123 +#: ../../include/conversation.php:553 ../../include/conversation.php:968 +msgid "Preview" +msgstr "Vista prèvia" + +#: ../../mod/photos.php:1320 ../../mod/settings.php:520 +#: ../../mod/settings.php:601 ../../mod/group.php:158 ../../mod/admin.php:488 +#: ../../include/conversation.php:304 ../../include/conversation.php:573 +msgid "Delete" +msgstr "Esborrar" + +#: ../../mod/photos.php:1402 +msgid "View Album" +msgstr "Veure Àlbum" + +#: ../../mod/photos.php:1411 +msgid "Recent Photos" +msgstr "Fotos Recents" + +#: ../../mod/community.php:21 +msgid "Not available." +msgstr "No disponible." + +#: ../../mod/community.php:30 ../../include/nav.php:97 +msgid "Community" +msgstr "Comunitat" + +#: ../../mod/community.php:60 ../../mod/search.php:118 +msgid "No results." +msgstr "Sense resultats." + +#: ../../mod/friendica.php:43 +msgid "This is Friendica, version" +msgstr "Això és Friendica, versió" + +#: ../../mod/friendica.php:44 +msgid "running at web location" +msgstr "funcionant en la ubicació web" + +#: ../../mod/friendica.php:46 +msgid "" +"Please visit Friendica.com to learn " +"more about the Friendica project." +msgstr "Si us plau, visiteu Friendica.com per obtenir més informació sobre el projecte Friendica." + +#: ../../mod/friendica.php:48 +msgid "Bug reports and issues: please visit" +msgstr "Pels informes d'error i problemes: si us plau, visiteu" + +#: ../../mod/friendica.php:49 +msgid "" +"Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - " +"dot com" +msgstr "Suggeriments, elogis, donacions, etc si us plau escrigui a \"Info\" en Friendica - dot com" + +#: ../../mod/friendica.php:54 +msgid "Installed plugins/addons/apps" +msgstr "plugins/addons/apps instal·lats" + +#: ../../mod/friendica.php:62 +msgid "No installed plugins/addons/apps" +msgstr "plugins/addons/apps no instal·lats" + +#: ../../mod/editpost.php:17 ../../mod/editpost.php:27 +msgid "Item not found" +msgstr "Element no trobat" + +#: ../../mod/editpost.php:36 +msgid "Edit post" +msgstr "Editar Enviament" + +#: ../../mod/editpost.php:80 ../../include/conversation.php:919 +msgid "Post to Email" +msgstr "Correu per enviar" + +#: ../../mod/editpost.php:95 ../../mod/settings.php:519 +#: ../../include/conversation.php:560 +msgid "Edit" +msgstr "Editar" + +#: ../../mod/editpost.php:96 ../../mod/message.php:153 +#: ../../mod/message.php:294 ../../include/conversation.php:934 +msgid "Upload photo" +msgstr "Carregar foto" + +#: ../../mod/editpost.php:97 ../../include/conversation.php:936 +msgid "Attach file" +msgstr "Adjunta fitxer" + +#: ../../mod/editpost.php:98 ../../mod/message.php:154 +#: ../../mod/message.php:295 ../../include/conversation.php:938 +msgid "Insert web link" +msgstr "Inserir enllaç web" + +#: ../../mod/editpost.php:99 +msgid "Insert YouTube video" +msgstr "Serà mostrat de forma preeminent a la pagina durant el procés de registre." + +#: ../../mod/editpost.php:100 +msgid "Insert Vorbis [.ogg] video" +msgstr "Inserir video Vorbis [.ogg]" + +#: ../../mod/editpost.php:101 +msgid "Insert Vorbis [.ogg] audio" +msgstr "Inserir audio Vorbis [.ogg]" + +#: ../../mod/editpost.php:102 ../../include/conversation.php:944 +msgid "Set your location" +msgstr "Canvia la teva ubicació" + +#: ../../mod/editpost.php:103 ../../include/conversation.php:946 +msgid "Clear browser location" +msgstr "neteja adreçes del navegador" + +#: ../../mod/editpost.php:105 ../../include/conversation.php:951 +msgid "Permission settings" +msgstr "Configuració de permisos" + +#: ../../mod/editpost.php:113 ../../include/conversation.php:960 +msgid "CC: email addresses" +msgstr "CC: Adreça de correu" + +#: ../../mod/editpost.php:114 ../../include/conversation.php:961 +msgid "Public post" +msgstr "Enviament públic" + +#: ../../mod/editpost.php:117 ../../include/conversation.php:949 +msgid "Set title" +msgstr "Canviar títol" + +#: ../../mod/editpost.php:118 ../../include/conversation.php:963 +msgid "Example: bob@example.com, mary@example.com" +msgstr "Exemple: bob@example.com, mary@example.com" + +#: ../../mod/dfrn_request.php:92 +msgid "This introduction has already been accepted." +msgstr "Aquesta presentació ha estat acceptada." + +#: ../../mod/dfrn_request.php:116 ../../mod/dfrn_request.php:381 +msgid "Profile location is not valid or does not contain profile information." +msgstr "El perfil de situació no és vàlid o no contè informació de perfil" + +#: ../../mod/dfrn_request.php:121 ../../mod/dfrn_request.php:386 +msgid "Warning: profile location has no identifiable owner name." +msgstr "Atenció: El perfil de situació no te nom de propietari identificable." + +#: ../../mod/dfrn_request.php:123 ../../mod/dfrn_request.php:388 +msgid "Warning: profile location has no profile photo." +msgstr "Atenció: El perfil de situació no te foto de perfil" + +#: ../../mod/dfrn_request.php:126 ../../mod/dfrn_request.php:391 +#, php-format +msgid "%d required parameter was not found at the given location" +msgid_plural "%d required parameters were not found at the given location" +msgstr[0] "%d el paràmetre requerit no es va trobar al lloc indicat" +msgstr[1] "%d els paràmetres requerits no es van trobar allloc indicat" + +#: ../../mod/dfrn_request.php:167 +msgid "Introduction complete." +msgstr "Completada la presentació." + +#: ../../mod/dfrn_request.php:191 +msgid "Unrecoverable protocol error." +msgstr "Error de protocol irrecuperable." + +#: ../../mod/dfrn_request.php:219 +msgid "Profile unavailable." +msgstr "Perfil no disponible" + +#: ../../mod/dfrn_request.php:244 +#, php-format +msgid "%s has received too many connection requests today." +msgstr "%s avui ha rebut excesives peticions de connexió. " + +#: ../../mod/dfrn_request.php:245 +msgid "Spam protection measures have been invoked." +msgstr "Mesures de protecció contra spam han estat invocades." + +#: ../../mod/dfrn_request.php:246 +msgid "Friends are advised to please try again in 24 hours." +msgstr "S'aconsellà els amics que probin pasades 24 hores." + +#: ../../mod/dfrn_request.php:306 +msgid "Invalid locator" +msgstr "Localitzador no vàlid" + +#: ../../mod/dfrn_request.php:326 +msgid "Unable to resolve your name at the provided location." +msgstr "Incapaç de resoldre el teu nom al lloc facilitat." + +#: ../../mod/dfrn_request.php:339 +msgid "You have already introduced yourself here." +msgstr "Has fer la teva presentació aquí." + +#: ../../mod/dfrn_request.php:343 +#, php-format +msgid "Apparently you are already friends with %s." +msgstr "Aparentment, ja tens amistat amb %s" + +#: ../../mod/dfrn_request.php:364 +msgid "Invalid profile URL." +msgstr "Perfil URL no vàlid." + +#: ../../mod/dfrn_request.php:370 ../../mod/follow.php:20 +msgid "Disallowed profile URL." +msgstr "Perfil URL no permès." + +#: ../../mod/dfrn_request.php:439 ../../mod/contacts.php:102 +msgid "Failed to update contact record." +msgstr "Error en actualitzar registre de contacte." + +#: ../../mod/dfrn_request.php:460 +msgid "Your introduction has been sent." +msgstr "La teva presentació ha estat enviada." + +#: ../../mod/dfrn_request.php:513 +msgid "Please login to confirm introduction." +msgstr "Si us plau, entri per confirmar la presentació." + +#: ../../mod/dfrn_request.php:527 +msgid "" +"Incorrect identity currently logged in. Please login to " +"this profile." +msgstr "Sesió iniciada amb la identificació incorrecta. Entra en aquest perfil." + +#: ../../mod/dfrn_request.php:539 +#, php-format +msgid "Welcome home %s." +msgstr "Benvingut de nou %s" + +#: ../../mod/dfrn_request.php:540 +#, php-format +msgid "Please confirm your introduction/connection request to %s." +msgstr "Si us plau, confirmi la seva sol·licitud de Presentació/Amistat a %s." + +#: ../../mod/dfrn_request.php:541 +msgid "Confirm" +msgstr "Confirmar" + +#: ../../mod/dfrn_request.php:582 ../../include/items.php:2566 +msgid "[Name Withheld]" +msgstr "[Nom Amagat]" + +#: ../../mod/dfrn_request.php:666 +#, php-format +msgid "" +"Diaspora members: Please do not use this form. Instead, enter \"%s\" into " +"your Diaspora search bar." +msgstr "Membres de Diàspora: Si us plau, no utilitzi aquest formulari. Pel contrari, escriviu \"%s\" a la barra de cerca de Diàspora." + +#: ../../mod/dfrn_request.php:669 +msgid "" +"Please enter your 'Identity Address' from one of the following supported " +"social networks:" +msgstr "Si us plau, introdueixi la seva \"Adreça Identificativa\" d'una de les següents xarxes socials suportades:" + +#: ../../mod/dfrn_request.php:672 +msgid "Friend/Connection Request" +msgstr "Sol·licitud d'Amistat" + +#: ../../mod/dfrn_request.php:673 +msgid "" +"Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, " +"testuser@identi.ca" +msgstr "Exemples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca" + +#: ../../mod/dfrn_request.php:674 +msgid "Please answer the following:" +msgstr "Si us plau, contesti les següents preguntes:" + +#: ../../mod/dfrn_request.php:675 +#, php-format +msgid "Does %s know you?" +msgstr "%s et coneix?" + +#: ../../mod/dfrn_request.php:678 +msgid "Add a personal note:" +msgstr "Afegir una nota personal:" + +#: ../../mod/dfrn_request.php:680 ../../include/contact_selectors.php:76 +msgid "Friendica" +msgstr "Friendica" + +#: ../../mod/dfrn_request.php:681 +msgid "StatusNet/Federated Social Web" +msgstr "Web Social StatusNet/Federated " + +#: ../../mod/dfrn_request.php:682 ../../mod/settings.php:555 +#: ../../include/contact_selectors.php:80 +msgid "Diaspora" +msgstr "Diaspora" + +#: ../../mod/dfrn_request.php:683 +msgid "- please share from your own site as noted above" +msgstr "- si us plau, Comparteix des del teu propi lloc tal com s'ha dit abans." + +#: ../../mod/dfrn_request.php:684 +msgid "Your Identity Address:" +msgstr "La Teva Adreça Identificativa:" + +#: ../../mod/dfrn_request.php:685 +msgid "Submit Request" +msgstr "Sol·licitud Enviada" + +#: ../../mod/install.php:111 +msgid "Friendica Social Communications Server - Setup" +msgstr "Friendica Social Communications Server - Ajustos" + +#: ../../mod/install.php:117 ../../mod/install.php:157 +#: ../../mod/install.php:230 +msgid "Database connection" +msgstr "Conexió a la base de dades" + +#: ../../mod/install.php:124 +msgid "Could not connect to database." +msgstr "No puc connectar a la base de dades." + +#: ../../mod/install.php:128 +msgid "Could not create table." +msgstr "No puc creat taula." + +#: ../../mod/install.php:133 +msgid "Your Friendica site database has been installed." +msgstr "La base de dades del teu lloc Friendica ha estat instal·lada." + +#: ../../mod/install.php:134 +msgid "" +"IMPORTANT: You will need to [manually] setup a scheduled task for the " +"poller." +msgstr "IMPORTANT: necessitarà configurar [manualment] el programar una tasca pel sondejador (poller.php)" + +#: ../../mod/install.php:135 ../../mod/install.php:151 +#: ../../mod/install.php:209 +msgid "Please see the file \"INSTALL.txt\"." +msgstr "Per favor, consulti l'arxiu \"INSTALL.txt\"." + +#: ../../mod/install.php:137 +msgid "Proceed to registration" +msgstr "Procedir a la inscripció" + +#: ../../mod/install.php:143 +msgid "Proceed with Installation" +msgstr "Procedeixi amb la Instal·lació" + +#: ../../mod/install.php:150 +msgid "" +"You may need to import the file \"database.sql\" manually using phpmyadmin " +"or mysql." +msgstr "Pot ser que hagi d'importar l'arxiu \"database.sql\" manualment amb phpmyadmin o mysql." + +#: ../../mod/install.php:158 +msgid "Database import failed." +msgstr "La importació de base de dades ha fallat." + +#: ../../mod/install.php:206 +msgid "System check" +msgstr "Comprovació del Sistema" + +#: ../../mod/install.php:211 +msgid "Check again" +msgstr "Comprovi de nou" + +#: ../../mod/install.php:231 +msgid "" +"In order to install Friendica we need to know how to connect to your " +"database." +msgstr "Per a instal·lar Friendica necessitem conèixer com connectar amb la deva base de dades." + +#: ../../mod/install.php:232 +msgid "" +"Please contact your hosting provider or site administrator if you have " +"questions about these settings." +msgstr "Per favor, posi's en contacte amb el seu proveïdor de hosting o administrador del lloc si té alguna pregunta sobre aquestes opcions." + +#: ../../mod/install.php:233 +msgid "" +"The database you specify below should already exist. If it does not, please " +"create it before continuing." +msgstr "La base de dades que especifiques ja hauria d'existir. Si no és així, crea-la abans de continuar." + +#: ../../mod/install.php:237 +msgid "Database Server Name" +msgstr "Nom del Servidor de base de Dades" + +#: ../../mod/install.php:238 +msgid "Database Login Name" +msgstr "Nom d'Usuari de la base de Dades" + +#: ../../mod/install.php:239 +msgid "Database Login Password" +msgstr "Contrasenya d'Usuari de la base de Dades" + +#: ../../mod/install.php:240 +msgid "Database Name" +msgstr "Nom de la base de Dades" + +#: ../../mod/install.php:241 ../../mod/install.php:280 +msgid "Site administrator email address" +msgstr "Adreça de correu del administrador del lloc" + +#: ../../mod/install.php:241 ../../mod/install.php:280 +msgid "" +"Your account email address must match this in order to use the web admin " +"panel." +msgstr "El seu compte d'adreça electrònica ha de coincidir per tal d'utilitzar el panell d'administració web." + +#: ../../mod/install.php:245 ../../mod/install.php:283 +msgid "Please select a default timezone for your website" +msgstr "Per favor, seleccioni una zona horària per defecte per al seu lloc web" + +#: ../../mod/install.php:270 +msgid "Site settings" +msgstr "Configuracions del lloc" + +#: ../../mod/install.php:323 +msgid "Could not find a command line version of PHP in the web server PATH." +msgstr "No es va poder trobar una versió de línia de comandos de PHP en la ruta del servidor web." + +#: ../../mod/install.php:326 +msgid "PHP executable path" +msgstr "Direcció del executable PHP" + +#: ../../mod/install.php:326 +msgid "Enter full path to php executable" +msgstr "Introdueixi el camí complet del executable php" + +#: ../../mod/install.php:331 +msgid "Command line PHP" +msgstr "Linia de comandos PHP" + +#: ../../mod/install.php:340 +msgid "" +"The command line version of PHP on your system does not have " +"\"register_argc_argv\" enabled." +msgstr "La versió de línia de comandos de PHP en el seu sistema no té \"register_argc_argv\" habilitat." + +#: ../../mod/install.php:341 +msgid "This is required for message delivery to work." +msgstr "Això és necessari perquè funcioni el lliurament de missatges." + +#: ../../mod/install.php:343 +msgid "PHP \"register_argc_argv\"" +msgstr "PHP \"register_argc_argv\"" + +#: ../../mod/install.php:364 +msgid "" +"Error: the \"openssl_pkey_new\" function on this system is not able to " +"generate encryption keys" +msgstr "Error: la funció \"openssl_pkey_new\" en aquest sistema no és capaç de generar claus de xifrat" + +#: ../../mod/install.php:365 +msgid "" +"If running under Windows, please see " +"\"http://www.php.net/manual/en/openssl.installation.php\"." +msgstr "Si s'executa en Windows, per favor consulti la secció \"http://www.php.net/manual/en/openssl.installation.php\"." + +#: ../../mod/install.php:367 +msgid "Generate encryption keys" +msgstr "Generar claus d'encripció" + +#: ../../mod/install.php:374 +msgid "libCurl PHP module" +msgstr "Mòdul libCurl de PHP" + +#: ../../mod/install.php:375 +msgid "GD graphics PHP module" +msgstr "Mòdul GD de gràfics de PHP" + +#: ../../mod/install.php:376 +msgid "OpenSSL PHP module" +msgstr "Mòdul OpenSSl de PHP" + +#: ../../mod/install.php:377 +msgid "mysqli PHP module" +msgstr "Mòdul mysqli de PHP" + +#: ../../mod/install.php:378 +msgid "mb_string PHP module" +msgstr "Mòdul mb_string de PHP" + +#: ../../mod/install.php:383 ../../mod/install.php:385 +msgid "Apace mod_rewrite module" +msgstr "Mòdul mod_rewrite de Apache" + +#: ../../mod/install.php:383 +msgid "" +"Error: Apache webserver mod-rewrite module is required but not installed." +msgstr "Error: el mòdul mod-rewrite del servidor web Apache és necessari però no està instal·lat." + +#: ../../mod/install.php:390 +msgid "Error: libCURL PHP module required but not installed." +msgstr "Error: El mòdul libCURL de PHP és necessari però no està instal·lat." + +#: ../../mod/install.php:394 +msgid "" +"Error: GD graphics PHP module with JPEG support required but not installed." +msgstr "Error: el mòdul gràfic GD de PHP amb support per JPEG és necessari però no està instal·lat." + +#: ../../mod/install.php:398 +msgid "Error: openssl PHP module required but not installed." +msgstr "Error: El mòdul enssl de PHP és necessari però no està instal·lat." + +#: ../../mod/install.php:402 +msgid "Error: mysqli PHP module required but not installed." +msgstr "Error: El mòdul mysqli de PHP és necessari però no està instal·lat." + +#: ../../mod/install.php:406 +msgid "Error: mb_string PHP module required but not installed." +msgstr "Error: mòdul mb_string de PHP requerit però no instal·lat." + +#: ../../mod/install.php:423 +msgid "" +"The web installer needs to be able to create a file called \".htconfig.php\"" +" in the top folder of your web server and it is unable to do so." +msgstr "L'instal·lador web necessita crear un arxiu anomenat \".htconfig.php\" en la carpeta superior del seu servidor web però alguna cosa ho va impedir." + +#: ../../mod/install.php:424 +msgid "" +"This is most often a permission setting, as the web server may not be able " +"to write files in your folder - even if you can." +msgstr "Això freqüentment és a causa d'una configuració de permisos; el servidor web no pot escriure arxius en la carpeta - encara que sigui possible." + +#: ../../mod/install.php:425 +msgid "" +"Please check with your site documentation or support people to see if this " +"situation can be corrected." +msgstr "Per favor, consulti amb la documentació del seu lloc o persones de suport per veure si aquesta situació es pot corregir." + +#: ../../mod/install.php:426 +msgid "" +"If not, you may be required to perform a manual installation. Please see the" +" file \"INSTALL.txt\" for instructions." +msgstr "Si no, vostè pot ser requerit per realitzar una instal·lació manual. Per favor, consulti l'arxiu \"INSTALL.txt\" per obtenir instruccions." + +#: ../../mod/install.php:429 +msgid ".htconfig.php is writable" +msgstr ".htconfig.php és escribible" + +#: ../../mod/install.php:436 +msgid "" +"The database configuration file \".htconfig.php\" could not be written. " +"Please use the enclosed text to create a configuration file in your web " +"server root." +msgstr "L'arxiu per a la configuració de la base de dades \".htconfig.php\" no es pot escriure. Per favor, usi el text adjunt per crear un arxiu de configuració en l'arrel del servidor web." + +#: ../../mod/install.php:461 +msgid "Errors encountered creating database tables." +msgstr "Trobats errors durant la creació de les taules de la base de dades." + +#: ../../mod/localtime.php:12 ../../include/event.php:11 +#: ../../include/bb2diaspora.php:238 +msgid "l F d, Y \\@ g:i A" +msgstr "l F d, Y \\@ g:i A" + +#: ../../mod/localtime.php:24 +msgid "Time Conversion" +msgstr "Temps de Conversió" + +#: ../../mod/localtime.php:26 +msgid "" +"Friendika provides this service for sharing events with other networks and " +"friends in unknown timezones." +msgstr "Friendica ofereix aquest servei per compartir esdeveniments amb altres xarxes i amics a les zones horàries desconegudes." + +#: ../../mod/localtime.php:30 +#, php-format +msgid "UTC time: %s" +msgstr "hora UTC: %s" + +#: ../../mod/localtime.php:33 +#, php-format +msgid "Current timezone: %s" +msgstr "Zona horària actual: %s" + +#: ../../mod/localtime.php:36 +#, php-format +msgid "Converted localtime: %s" +msgstr "Conversión de hora local: %s" + +#: ../../mod/localtime.php:41 +msgid "Please select your timezone:" +msgstr "Si us plau, seleccioneu la vostra zona horària:" + +#: ../../mod/match.php:12 +msgid "Profile Match" +msgstr "Perfil Aconseguit" + +#: ../../mod/match.php:20 +msgid "No keywords to match. Please add keywords to your default profile." +msgstr "No hi ha paraules clau que coincideixin. Si us plau, afegeixi paraules clau al teu perfil predeterminat." + +#: ../../mod/match.php:57 +msgid "is interested in:" +msgstr "està interessat en:" + +#: ../../mod/match.php:58 ../../mod/suggest.php:59 +#: ../../include/contact_widgets.php:9 ../../boot.php:930 +msgid "Connect" +msgstr "Connexió" + +#: ../../mod/match.php:65 ../../mod/dirfind.php:57 +msgid "No matches" +msgstr "No hi ha coincidències" + +#: ../../mod/lockview.php:39 +msgid "Remote privacy information not available." +msgstr "Informació de privacitat remota no disponible." + +#: ../../mod/lockview.php:43 +msgid "Visible to:" +msgstr "Visible per a:" + +#: ../../mod/home.php:26 ../../addon/communityhome/communityhome.php:179 +#, php-format +msgid "Welcome to %s" +msgstr "Benvingut a %s" + +#: ../../mod/notifications.php:26 +msgid "Invalid request identifier." +msgstr "Sol·licitud d'identificació no vàlida." + +#: ../../mod/notifications.php:35 ../../mod/notifications.php:157 +#: ../../mod/notifications.php:203 +msgid "Discard" +msgstr "Descartar" + +#: ../../mod/notifications.php:47 ../../mod/notifications.php:156 +#: ../../mod/notifications.php:202 ../../mod/contacts.php:302 +#: ../../mod/contacts.php:345 +msgid "Ignore" +msgstr "Ignorar" + +#: ../../mod/notifications.php:71 +msgid "System" +msgstr "Sistema" + +#: ../../mod/notifications.php:76 ../../include/nav.php:109 +msgid "Network" +msgstr "Xarxa" + +#: ../../mod/notifications.php:81 ../../mod/network.php:177 +msgid "Personal" +msgstr "Personal" + +#: ../../mod/notifications.php:86 ../../include/nav.php:73 +#: ../../include/nav.php:111 +msgid "Home" +msgstr "Inici" + +#: ../../mod/notifications.php:91 ../../include/nav.php:117 +msgid "Introductions" +msgstr "Presentacions" + +#: ../../mod/notifications.php:96 ../../mod/message.php:76 +#: ../../include/nav.php:124 +msgid "Messages" +msgstr "Missatges" + +#: ../../mod/notifications.php:115 +msgid "Show Ignored Requests" +msgstr "Mostra les Sol·licituds Ignorades" + +#: ../../mod/notifications.php:115 +msgid "Hide Ignored Requests" +msgstr "Amaga les Sol·licituds Ignorades" + +#: ../../mod/notifications.php:141 ../../mod/notifications.php:187 +msgid "Notification type: " +msgstr "Tipus de Notificació:" + +#: ../../mod/notifications.php:142 +msgid "Friend Suggestion" +msgstr "Amics Suggerits " + +#: ../../mod/notifications.php:144 +#, php-format +msgid "suggested by %s" +msgstr "sugerit per %s" + +#: ../../mod/notifications.php:149 ../../mod/notifications.php:196 +#: ../../mod/contacts.php:350 +msgid "Hide this contact from others" +msgstr "Amaga aquest contacte dels altres" + +#: ../../mod/notifications.php:150 ../../mod/notifications.php:197 +msgid "Post a new friend activity" +msgstr "Publica una activitat d'amic nova" + +#: ../../mod/notifications.php:150 ../../mod/notifications.php:197 +msgid "if applicable" +msgstr "si es pot aplicar" + +#: ../../mod/notifications.php:153 ../../mod/notifications.php:200 +#: ../../mod/admin.php:486 +msgid "Approve" +msgstr "Aprovar" + +#: ../../mod/notifications.php:173 +msgid "Claims to be known to you: " +msgstr "Diu que et coneix:" + +#: ../../mod/notifications.php:173 +msgid "yes" +msgstr "sí" + +#: ../../mod/notifications.php:173 +msgid "no" +msgstr "no" + +#: ../../mod/notifications.php:180 +msgid "Approve as: " +msgstr "Aprovat com:" + +#: ../../mod/notifications.php:181 +msgid "Friend" +msgstr "Amic" + +#: ../../mod/notifications.php:182 +msgid "Sharer" +msgstr "Partícip" + +#: ../../mod/notifications.php:182 +msgid "Fan/Admirer" +msgstr "Fan/Admirador" + +#: ../../mod/notifications.php:188 +msgid "Friend/Connect Request" +msgstr "Sol·licitud d'Amistat/Connexió" + +#: ../../mod/notifications.php:188 +msgid "New Follower" +msgstr "Nou Seguidor" + +#: ../../mod/notifications.php:209 +msgid "No introductions." +msgstr "Sense presentacions." + +#: ../../mod/notifications.php:212 ../../include/nav.php:118 +msgid "Notifications" +msgstr "Notificacions" + +#: ../../mod/notifications.php:249 ../../mod/notifications.php:374 +#: ../../mod/notifications.php:461 +#, php-format +msgid "%s liked %s's post" +msgstr "A %s li agrada l'enviament de %s" + +#: ../../mod/notifications.php:258 ../../mod/notifications.php:383 +#: ../../mod/notifications.php:470 +#, php-format +msgid "%s disliked %s's post" +msgstr "A %s no li agrada l'enviament de %s" + +#: ../../mod/notifications.php:272 ../../mod/notifications.php:397 +#: ../../mod/notifications.php:484 +#, php-format +msgid "%s is now friends with %s" +msgstr "%s es ara amic de %s" + +#: ../../mod/notifications.php:279 ../../mod/notifications.php:404 +#, php-format +msgid "%s created a new post" +msgstr "%s ha creat un enviament nou" + +#: ../../mod/notifications.php:280 ../../mod/notifications.php:405 +#: ../../mod/notifications.php:493 +#, php-format +msgid "%s commented on %s's post" +msgstr "%s va comentar en l'enviament de %s" + +#: ../../mod/notifications.php:294 +msgid "No more network notifications." +msgstr "No més notificacions de xarxa." + +#: ../../mod/notifications.php:298 +msgid "Network Notifications" +msgstr "Notificacions de la Xarxa" + +#: ../../mod/notifications.php:324 ../../mod/notify.php:61 +msgid "No more system notifications." +msgstr "No més notificacions del sistema." + +#: ../../mod/notifications.php:328 ../../mod/notify.php:65 +msgid "System Notifications" +msgstr "Notificacions del Sistema" + +#: ../../mod/notifications.php:419 +msgid "No more personal notifications." +msgstr "No més notificacions personals." + +#: ../../mod/notifications.php:423 +msgid "Personal Notifications" +msgstr "Notificacions Personals" + +#: ../../mod/notifications.php:500 +msgid "No more home notifications." +msgstr "No més notificacions d'inici." + +#: ../../mod/notifications.php:504 +msgid "Home Notifications" +msgstr "Notificacions d'Inici" + +#: ../../mod/contacts.php:63 ../../mod/contacts.php:143 +msgid "Could not access contact record." +msgstr "No puc accedir al registre del contacte." + +#: ../../mod/contacts.php:77 +msgid "Could not locate selected profile." +msgstr "No puc localitzar el perfil seleccionat." + +#: ../../mod/contacts.php:100 +msgid "Contact updated." +msgstr "Contacte actualitzat." + +#: ../../mod/contacts.php:165 +msgid "Contact has been blocked" +msgstr "Elcontacte ha estat bloquejat" + +#: ../../mod/contacts.php:165 +msgid "Contact has been unblocked" +msgstr "El contacte ha estat desbloquejat" + +#: ../../mod/contacts.php:179 +msgid "Contact has been ignored" +msgstr "El contacte ha estat ignorat" + +#: ../../mod/contacts.php:179 +msgid "Contact has been unignored" +msgstr "El contacte ha estat recordat" + +#: ../../mod/contacts.php:200 +msgid "stopped following" +msgstr "Deixar de seguir" + +#: ../../mod/contacts.php:221 +msgid "Contact has been removed." +msgstr "El contacte ha estat tret" + +#: ../../mod/contacts.php:245 +#, php-format +msgid "You are mutual friends with %s" +msgstr "Ara te una amistat mutua amb %s" + +#: ../../mod/contacts.php:249 +#, php-format +msgid "You are sharing with %s" +msgstr "Estas compartint amb %s" + +#: ../../mod/contacts.php:254 +#, php-format +msgid "%s is sharing with you" +msgstr "%s esta compartint amb tú" + +#: ../../mod/contacts.php:271 +msgid "Private communications are not available for this contact." +msgstr "Comunicacions privades no disponibles per aquest contacte." + +#: ../../mod/contacts.php:274 +msgid "Never" +msgstr "Mai" + +#: ../../mod/contacts.php:278 +msgid "(Update was successful)" +msgstr "(L'actualització fou exitosa)" + +#: ../../mod/contacts.php:278 +msgid "(Update was not successful)" +msgstr "(L'actualització fracassà)" + +#: ../../mod/contacts.php:280 +msgid "Suggest friends" +msgstr "Suggerir amics" + +#: ../../mod/contacts.php:284 +#, php-format +msgid "Network type: %s" +msgstr "Xarxa tipus: %s" + +#: ../../mod/contacts.php:287 +#, php-format +msgid "%d contact in common" +msgid_plural "%d contacts in common" +msgstr[0] "%d contacte en comú" +msgstr[1] "%d contactes en comú" + +#: ../../mod/contacts.php:292 +msgid "View all contacts" +msgstr "Veure tots els contactes" + +#: ../../mod/contacts.php:297 ../../mod/contacts.php:344 +#: ../../mod/admin.php:490 +msgid "Unblock" +msgstr "Desbloquejar" + +#: ../../mod/contacts.php:297 ../../mod/contacts.php:344 +#: ../../mod/admin.php:489 +msgid "Block" +msgstr "Bloquejar" + +#: ../../mod/contacts.php:302 ../../mod/contacts.php:345 +msgid "Unignore" +msgstr "Treure d'Ignorats" + +#: ../../mod/contacts.php:307 +msgid "Repair" +msgstr "Reparar" + +#: ../../mod/contacts.php:317 +msgid "Contact Editor" +msgstr "Editor de Contactes" + +#: ../../mod/contacts.php:320 +msgid "Profile Visibility" +msgstr "Perfil de Visibilitat" + +#: ../../mod/contacts.php:321 +#, php-format +msgid "" +"Please choose the profile you would like to display to %s when viewing your " +"profile securely." +msgstr "Si us plau triï el perfil que voleu mostrar a %s quan estigui veient el teu de forma segura." + +#: ../../mod/contacts.php:322 +msgid "Contact Information / Notes" +msgstr "Informació/Notes del contacte" + +#: ../../mod/contacts.php:323 +msgid "Edit contact notes" +msgstr "Editar notes de contactes" + +#: ../../mod/contacts.php:328 ../../mod/contacts.php:497 +#: ../../mod/viewcontacts.php:60 +#, php-format +msgid "Visit %s's profile [%s]" +msgstr "Visitar perfil de %s [%s]" + +#: ../../mod/contacts.php:329 +msgid "Block/Unblock contact" +msgstr "Bloquejar/Alliberar contacte" + +#: ../../mod/contacts.php:330 +msgid "Ignore contact" +msgstr "Ignore contacte" + +#: ../../mod/contacts.php:331 +msgid "Repair URL settings" +msgstr "Restablir configuració de URL" + +#: ../../mod/contacts.php:332 +msgid "View conversations" +msgstr "Veient conversacions" + +#: ../../mod/contacts.php:334 +msgid "Delete contact" +msgstr "Esborrar contacte" + +#: ../../mod/contacts.php:338 +msgid "Last update:" +msgstr "Última actualització:" + +#: ../../mod/contacts.php:339 +msgid "Update public posts" +msgstr "Actualitzar enviament públic" + +#: ../../mod/contacts.php:341 ../../mod/admin.php:905 +msgid "Update now" +msgstr "Actualitza ara" + +#: ../../mod/contacts.php:348 +msgid "Currently blocked" +msgstr "Bloquejat actualment" + +#: ../../mod/contacts.php:349 +msgid "Currently ignored" +msgstr "Ignorat actualment" + +#: ../../mod/contacts.php:350 +msgid "" +"Replies/likes to your public posts may still be visible" +msgstr "Répliques/agraiments per als teus missatges públics poden romandre visibles" + +#: ../../mod/contacts.php:399 ../../mod/group.php:179 +msgid "All Contacts" +msgstr "Tots els Contactes" + +#: ../../mod/contacts.php:404 +msgid "Unblocked Contacts" +msgstr "Contactes Desbloquejats" + +#: ../../mod/contacts.php:410 +msgid "Blocked Contacts" +msgstr "Contactes Bloquejats" + +#: ../../mod/contacts.php:416 +msgid "Ignored Contacts" +msgstr "Contactes Ignorats" + +#: ../../mod/contacts.php:422 +msgid "Hidden Contacts" +msgstr "Contactes Amagats" + +#: ../../mod/contacts.php:473 +msgid "Mutual Friendship" +msgstr "Amistat Mutua" + +#: ../../mod/contacts.php:477 +msgid "is a fan of yours" +msgstr "Es un fan teu" + +#: ../../mod/contacts.php:481 +msgid "you are a fan of" +msgstr "ets fan de" + +#: ../../mod/contacts.php:498 ../../include/Contact.php:135 +#: ../../include/conversation.php:792 +msgid "Edit contact" +msgstr "Editar contacte" + +#: ../../mod/contacts.php:519 ../../include/nav.php:132 +msgid "Contacts" +msgstr "Contactes" + +#: ../../mod/contacts.php:523 +msgid "Search your contacts" +msgstr "Cercant el seus contactes" + +#: ../../mod/contacts.php:524 ../../mod/directory.php:67 +msgid "Finding: " +msgstr "Cercant:" + +#: ../../mod/contacts.php:525 ../../mod/directory.php:69 +#: ../../include/contact_widgets.php:34 +msgid "Find" +msgstr "Cercar" + +#: ../../mod/lostpass.php:16 +msgid "No valid account found." +msgstr "compte no vàlid trobat." + +#: ../../mod/lostpass.php:31 +msgid "Password reset request issued. Check your email." +msgstr "Sol·licitut de restabliment de contrasenya enviat. Comprovi el seu correu." + +#: ../../mod/lostpass.php:42 +#, php-format +msgid "Password reset requested at %s" +msgstr "Contrasenya restablerta enviada a %s" + +#: ../../mod/lostpass.php:44 ../../mod/lostpass.php:106 +#: ../../mod/register.php:380 ../../mod/register.php:434 +#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:726 +#: ../../include/items.php:2575 +msgid "Administrator" +msgstr "Administrador" + +#: ../../mod/lostpass.php:64 +msgid "" +"Request could not be verified. (You may have previously submitted it.) " +"Password reset failed." +msgstr "La sol·licitut no pot ser verificada. (Hauries de presentar-la abans). Restabliment de contrasenya fracassat." + +#: ../../mod/lostpass.php:82 ../../boot.php:723 +msgid "Password Reset" +msgstr "Restabliment de Contrasenya" + +#: ../../mod/lostpass.php:83 +msgid "Your password has been reset as requested." +msgstr "La teva contrasenya fou restablerta com vas demanar." + +#: ../../mod/lostpass.php:84 +msgid "Your new password is" +msgstr "La teva nova contrasenya es" + +#: ../../mod/lostpass.php:85 +msgid "Save or copy your new password - and then" +msgstr "Guarda o copia la nova contrasenya - i llavors" + +#: ../../mod/lostpass.php:86 +msgid "click here to login" +msgstr "clica aquí per identificarte" + +#: ../../mod/lostpass.php:87 +msgid "" +"Your password may be changed from the Settings page after " +"successful login." +msgstr "Pots camviar la contrasenya des de la pàgina de Configuración desprès d'accedir amb èxit." + +#: ../../mod/lostpass.php:118 +msgid "Forgot your Password?" +msgstr "Has Oblidat la Contrasenya?" + +#: ../../mod/lostpass.php:119 +msgid "" +"Enter your email address and submit to have your password reset. Then check " +"your email for further instructions." +msgstr "Introdueixi la seva adreça de correu i enivii-la per restablir la seva contrasenya. Llavors comprovi el seu correu per a les següents instruccións. " + +#: ../../mod/lostpass.php:120 +msgid "Nickname or Email: " +msgstr "Malnom o Correu:" + +#: ../../mod/lostpass.php:121 +msgid "Reset" +msgstr "Restablir" + +#: ../../mod/settings.php:72 +msgid "Missing some important data!" +msgstr "Perdudes algunes dades importants!" + +#: ../../mod/settings.php:75 ../../mod/settings.php:486 ../../mod/admin.php:75 +msgid "Update" +msgstr "Actualitzar" + +#: ../../mod/settings.php:175 +msgid "Failed to connect with email account using the settings provided." +msgstr "Connexió fracassada amb el compte de correu emprant la configuració proveïda." + +#: ../../mod/settings.php:180 +msgid "Email settings updated." +msgstr "Configuració del correu electrònic actualitzada." + +#: ../../mod/settings.php:198 +msgid "Passwords do not match. Password unchanged." +msgstr "Les contrasenyes no coincideixen. Contrasenya no canviada." + +#: ../../mod/settings.php:203 +msgid "Empty passwords are not allowed. Password unchanged." +msgstr "No es permeten contasenyes buides. Contrasenya no canviada" + +#: ../../mod/settings.php:214 +msgid "Password changed." +msgstr "Contrasenya canviada." + +#: ../../mod/settings.php:216 +msgid "Password update failed. Please try again." +msgstr "Ha fallat l'actualització de la Contrasenya. Per favor, intenti-ho de nou." + +#: ../../mod/settings.php:280 +msgid " Please use a shorter name." +msgstr "Si us plau, faci servir un nom més curt." + +#: ../../mod/settings.php:282 +msgid " Name too short." +msgstr "Nom massa curt." + +#: ../../mod/settings.php:288 +msgid " Not valid email." +msgstr "Correu no vàlid." + +#: ../../mod/settings.php:290 +msgid " Cannot change to that email." +msgstr "No puc canviar a aquest correu." + +#: ../../mod/settings.php:358 ../../addon/facebook/facebook.php:321 +#: ../../addon/impressum/impressum.php:64 +#: ../../addon/openstreetmap/openstreetmap.php:80 +#: ../../addon/piwik/piwik.php:105 ../../addon/twitter/twitter.php:350 +msgid "Settings updated." +msgstr "Ajustos actualitzats." + +#: ../../mod/settings.php:422 ../../include/nav.php:130 +msgid "Account settings" +msgstr "Configuració del compte" + +#: ../../mod/settings.php:427 +msgid "Connector settings" +msgstr "Configuració dels connectors" + +#: ../../mod/settings.php:432 +msgid "Plugin settings" +msgstr "Configuració del plugin" + +#: ../../mod/settings.php:437 +msgid "Connections" +msgstr "Connexions" + +#: ../../mod/settings.php:442 +msgid "Export personal data" +msgstr "Exportar dades personals" + +#: ../../mod/settings.php:459 ../../mod/settings.php:485 +#: ../../mod/settings.php:518 +msgid "Add application" +msgstr "Afegir aplicació" + +#: ../../mod/settings.php:463 ../../mod/settings.php:489 +#: ../../addon/statusnet/statusnet.php:526 +msgid "Consumer Key" +msgstr "Consumer Key" + +#: ../../mod/settings.php:464 ../../mod/settings.php:490 +#: ../../addon/statusnet/statusnet.php:525 +msgid "Consumer Secret" +msgstr "Consumer Secret" + +#: ../../mod/settings.php:465 ../../mod/settings.php:491 +msgid "Redirect" +msgstr "Redirigir" + +#: ../../mod/settings.php:466 ../../mod/settings.php:492 +msgid "Icon url" +msgstr "icona de url" + +#: ../../mod/settings.php:477 +msgid "You can't edit this application." +msgstr "No pots editar aquesta aplicació." + +#: ../../mod/settings.php:517 +msgid "Connected Apps" +msgstr "Aplicacions conectades" + +#: ../../mod/settings.php:521 +msgid "Client key starts with" +msgstr "Les claus de client comançen amb" + +#: ../../mod/settings.php:522 +msgid "No name" +msgstr "Sense nom" + +#: ../../mod/settings.php:523 +msgid "Remove authorization" +msgstr "retirar l'autorització" + +#: ../../mod/settings.php:535 +msgid "No Plugin settings configured" +msgstr "No s'han configurat ajustos de Plugin" + +#: ../../mod/settings.php:542 ../../addon/widgets/widgets.php:122 +msgid "Plugin Settings" +msgstr "Ajustos de Plugin" + +#: ../../mod/settings.php:555 ../../mod/settings.php:556 +#, php-format +msgid "Built-in support for %s connectivity is %s" +msgstr "El suport integrat per a la connectivitat de %s és %s" + +#: ../../mod/settings.php:555 ../../mod/settings.php:556 +msgid "enabled" +msgstr "habilitat" + +#: ../../mod/settings.php:555 ../../mod/settings.php:556 +msgid "disabled" +msgstr "deshabilitat" + +#: ../../mod/settings.php:556 +msgid "StatusNet" +msgstr "StatusNet" + +#: ../../mod/settings.php:584 +msgid "Connector Settings" +msgstr "Configuració de connectors" + +#: ../../mod/settings.php:590 +msgid "Email/Mailbox Setup" +msgstr "Preparació de Correu/Bústia" + +#: ../../mod/settings.php:591 +msgid "" +"If you wish to communicate with email contacts using this service " +"(optional), please specify how to connect to your mailbox." +msgstr "Si vol comunicar-se amb els contactes de correu emprant aquest servei (opcional), Si us plau, especifiqui com connectar amb la seva bústia." + +#: ../../mod/settings.php:592 +msgid "Last successful email check:" +msgstr "Última comprovació de correu amb èxit:" + +#: ../../mod/settings.php:593 +msgid "Email access is disabled on this site." +msgstr "L'accés al correu està deshabilitat en aquest lloc." + +#: ../../mod/settings.php:594 +msgid "IMAP server name:" +msgstr "Nom del servidor IMAP:" + +#: ../../mod/settings.php:595 +msgid "IMAP port:" +msgstr "Port IMAP:" + +#: ../../mod/settings.php:596 +msgid "Security:" +msgstr "Seguretat:" + +#: ../../mod/settings.php:596 ../../mod/settings.php:601 +msgid "None" +msgstr "Cap" + +#: ../../mod/settings.php:597 +msgid "Email login name:" +msgstr "Nom d'usuari del correu" + +#: ../../mod/settings.php:598 +msgid "Email password:" +msgstr "Contrasenya del correu:" + +#: ../../mod/settings.php:599 +msgid "Reply-to address:" +msgstr "Adreça de resposta:" + +#: ../../mod/settings.php:600 +msgid "Send public posts to all email contacts:" +msgstr "Enviar correu públic a tots els contactes del correu:" + +#: ../../mod/settings.php:601 +msgid "Action after import:" +msgstr "Acció després d'importar:" + +#: ../../mod/settings.php:601 +msgid "Mark as seen" +msgstr "Marcar com a vist" + +#: ../../mod/settings.php:601 +msgid "Move to folder" +msgstr "Moure a la carpeta" + +#: ../../mod/settings.php:602 +msgid "Move to folder:" +msgstr "Moure a la carpeta:" + +#: ../../mod/settings.php:659 ../../mod/admin.php:142 ../../mod/admin.php:462 +msgid "Normal Account" +msgstr "Compte Normal" + +#: ../../mod/settings.php:660 +msgid "This account is a normal personal profile" +msgstr "Aques compte es un compte personal normal" + +#: ../../mod/settings.php:663 ../../mod/admin.php:143 ../../mod/admin.php:463 +msgid "Soapbox Account" +msgstr "Compte Tribuna" + +#: ../../mod/settings.php:664 +msgid "Automatically approve all connection/friend requests as read-only fans" +msgstr "Aprova automàticament totes les sol·licituds de amistat/connexió com a fans de només lectura." + +#: ../../mod/settings.php:667 ../../mod/admin.php:144 ../../mod/admin.php:464 +msgid "Community/Celebrity Account" +msgstr "Compte de Comunitat/Celebritat" + +#: ../../mod/settings.php:668 +msgid "" +"Automatically approve all connection/friend requests as read-write fans" +msgstr "Aprova automàticament totes les sol·licituds de amistat/connexió com a fans de lectura-escriptura" + +#: ../../mod/settings.php:671 ../../mod/admin.php:145 ../../mod/admin.php:465 +msgid "Automatic Friend Account" +msgstr "Compte d'Amistat Automàtic" + +#: ../../mod/settings.php:672 +msgid "Automatically approve all connection/friend requests as friends" +msgstr "Aprova totes les sol·licituds de amistat/connexió com a amic automàticament" + +#: ../../mod/settings.php:682 +msgid "OpenID:" +msgstr "OpenID:" + +#: ../../mod/settings.php:682 +msgid "(Optional) Allow this OpenID to login to this account." +msgstr "(Opcional) Permetre a aquest OpenID iniciar sessió en aquest compte." + +#: ../../mod/settings.php:692 +msgid "Publish your default profile in your local site directory?" +msgstr "Publicar el teu perfil predeterminat en el directori del lloc local?" + +#: ../../mod/settings.php:698 +msgid "Publish your default profile in the global social directory?" +msgstr "Publicar el teu perfil predeterminat al directori social global?" + +#: ../../mod/settings.php:706 +msgid "Hide your contact/friend list from viewers of your default profile?" +msgstr "Amaga la teva llista de contactes/amics dels espectadors del seu perfil per defecte?" + +#: ../../mod/settings.php:710 +msgid "Hide your profile details from unknown viewers?" +msgstr "Amagar els detalls del seu perfil a espectadors desconeguts?" + +#: ../../mod/settings.php:715 +msgid "Allow friends to post to your profile page?" +msgstr "Permet als amics publicar en la seva pàgina de perfil?" + +#: ../../mod/settings.php:721 +msgid "Allow friends to tag your posts?" +msgstr "Permet als amics d'etiquetar els teus missatges?" + +#: ../../mod/settings.php:727 +msgid "Allow us to suggest you as a potential friend to new members?" +msgstr "Permeteu-nos suggerir-li com un amic potencial dels nous membres?" + +#: ../../mod/settings.php:736 +msgid "Profile is not published." +msgstr "El Perfil no està publicat." + +#: ../../mod/settings.php:768 ../../mod/profile_photo.php:206 +msgid "or" +msgstr "o" + +#: ../../mod/settings.php:773 +msgid "Your Identity Address is" +msgstr "La seva Adreça d'Identitat és" + +#: ../../mod/settings.php:784 +msgid "Automatically expire posts after this many days:" +msgstr "Després de aquests nombre de dies, els missatges caduquen automàticament:" + +#: ../../mod/settings.php:784 +msgid "If empty, posts will not expire. Expired posts will be deleted" +msgstr "Si està buit, els missatges no caducarà. Missatges caducats s'eliminaran" + +#: ../../mod/settings.php:785 +msgid "Advanced expiration settings" +msgstr "Configuració avançada d'expiració" + +#: ../../mod/settings.php:786 +msgid "Advanced Expiration" +msgstr "Expiració Avançada" + +#: ../../mod/settings.php:787 +msgid "Expire posts:" +msgstr "Expiració d'enviaments" + +#: ../../mod/settings.php:788 +msgid "Expire personal notes:" +msgstr "Expiració de notes personals" + +#: ../../mod/settings.php:789 +msgid "Expire starred posts:" +msgstr "Expiració de enviaments de favorits" + +#: ../../mod/settings.php:790 +msgid "Expire photos:" +msgstr "Expiració de fotos" + +#: ../../mod/settings.php:795 +msgid "Account Settings" +msgstr "Ajustos de Compte" + +#: ../../mod/settings.php:803 +msgid "Password Settings" +msgstr "Ajustos de Contrasenya" + +#: ../../mod/settings.php:804 +msgid "New Password:" +msgstr "Nova Contrasenya:" + +#: ../../mod/settings.php:805 +msgid "Confirm:" +msgstr "Confirmar:" + +#: ../../mod/settings.php:805 +msgid "Leave password fields blank unless changing" +msgstr "Deixi els camps de contrasenya buits per a no fer canvis" + +#: ../../mod/settings.php:809 +msgid "Basic Settings" +msgstr "Ajustos Basics" + +#: ../../mod/settings.php:810 ../../include/profile_advanced.php:15 +msgid "Full Name:" +msgstr "Nom Complet:" + +#: ../../mod/settings.php:811 +msgid "Email Address:" +msgstr "Adreça de Correu:" + +#: ../../mod/settings.php:812 +msgid "Your Timezone:" +msgstr "La teva zona Horària:" + +#: ../../mod/settings.php:813 +msgid "Default Post Location:" +msgstr "Localització per Defecte del Missatge:" + +#: ../../mod/settings.php:814 +msgid "Use Browser Location:" +msgstr "Ubicar-se amb el Navegador:" + +#: ../../mod/settings.php:815 +msgid "Display Theme:" +msgstr "Visualitzar el Tema:" + +#: ../../mod/settings.php:816 +msgid "Update browser every xx seconds" +msgstr "Actualitzar navegador cada xx segons" + +#: ../../mod/settings.php:816 +msgid "Minimum of 10 seconds, no maximum" +msgstr "Mínim cada 10 segons, no hi ha màxim" + +#: ../../mod/settings.php:818 +msgid "Security and Privacy Settings" +msgstr "Ajustos de Seguretat i Privacitat" + +#: ../../mod/settings.php:820 +msgid "Maximum Friend Requests/Day:" +msgstr "Nombre Màxim de Sol·licituds per Dia" + +#: ../../mod/settings.php:820 +msgid "(to prevent spam abuse)" +msgstr "(per a prevenir abusos de spam)" + +#: ../../mod/settings.php:821 +msgid "Default Post Permissions" +msgstr "Permisos de Correu per Defecte" + +#: ../../mod/settings.php:822 +msgid "(click to open/close)" +msgstr "(clicar per a obrir/tancar)" + +#: ../../mod/settings.php:837 +msgid "Notification Settings" +msgstr "Ajustos de Notificació" + +#: ../../mod/settings.php:838 +msgid "Send a notification email when:" +msgstr "Envia un correu notificant quan:" + +#: ../../mod/settings.php:839 +msgid "You receive an introduction" +msgstr "Has rebut una presentació" + +#: ../../mod/settings.php:840 +msgid "Your introductions are confirmed" +msgstr "La teva presentació està confirmada" + +#: ../../mod/settings.php:841 +msgid "Someone writes on your profile wall" +msgstr "Algú ha escrit en el teu mur de perfil" + +#: ../../mod/settings.php:842 +msgid "Someone writes a followup comment" +msgstr "Algú ha escrit un comentari de seguiment" + +#: ../../mod/settings.php:843 +msgid "You receive a private message" +msgstr "Has rebut un missatge privat" + +#: ../../mod/settings.php:844 +msgid "You receive a friend suggestion" +msgstr "Has rebut una suggerencia d'un amic" + +#: ../../mod/settings.php:845 +msgid "You are tagged in a post" +msgstr "Estàs etiquetat en un enviament" + +#: ../../mod/settings.php:848 +msgid "Advanced Page Settings" +msgstr "Ajustos Avançats de Pàgina" + +#: ../../mod/manage.php:90 +msgid "Manage Identities and/or Pages" +msgstr "Administrar Identitats i/o Pàgines" + +#: ../../mod/manage.php:93 +msgid "" +"Toggle between different identities or community/group pages which share " +"your account details or which you have been granted \"manage\" permissions" +msgstr "Alternar entre les diferents identitats o les pàgines de comunitats/grups que comparteixen les dades del seu compte o que se li ha concedit els permisos de \"administrar\"" + +#: ../../mod/manage.php:95 +msgid "Select an identity to manage: " +msgstr "Seleccionar identitat a administrar:" + +#: ../../mod/network.php:43 +msgid "Search Results For:" +msgstr "Resultats de la Cerca Per a:" + +#: ../../mod/network.php:77 ../../mod/search.php:16 +msgid "Remove term" +msgstr "Traieu termini" + +#: ../../mod/network.php:86 ../../mod/search.php:13 +msgid "Saved Searches" +msgstr "Cerques Guardades" + +#: ../../mod/network.php:87 ../../include/group.php:216 +msgid "add" +msgstr "afegir" + +#: ../../mod/network.php:166 +msgid "Commented Order" +msgstr "Ordre dels Comentaris" + +#: ../../mod/network.php:171 +msgid "Posted Order" +msgstr "Ordre dels Enviaments" + +#: ../../mod/network.php:182 +msgid "New" +msgstr "Nou" + +#: ../../mod/network.php:187 +msgid "Starred" +msgstr "Favorits" + +#: ../../mod/network.php:192 +msgid "Bookmarks" +msgstr "Marcadors" + +#: ../../mod/network.php:250 +#, php-format +msgid "Warning: This group contains %s member from an insecure network." +msgid_plural "" +"Warning: This group contains %s members from an insecure network." +msgstr[0] "Advertència: Aquest grup conté el membre %s en una xarxa insegura." +msgstr[1] "Advertència: Aquest grup conté %s membres d'una xarxa insegura." + +#: ../../mod/network.php:253 +msgid "Private messages to this group are at risk of public disclosure." +msgstr "Els missatges privats a aquest grup es troben en risc de divulgació pública." + +#: ../../mod/network.php:298 +msgid "No such group" +msgstr "Cap grup com" + +#: ../../mod/network.php:309 +msgid "Group is empty" +msgstr "El Grup es buit" + +#: ../../mod/network.php:313 +msgid "Group: " +msgstr "Grup:" + +#: ../../mod/network.php:323 +msgid "Contact: " +msgstr "Contacte:" + +#: ../../mod/network.php:325 +msgid "Private messages to this person are at risk of public disclosure." +msgstr "Els missatges privats a aquesta persona es troben en risc de divulgació pública." + +#: ../../mod/network.php:330 +msgid "Invalid contact." +msgstr "Contacte no vàlid." + +#: ../../mod/notes.php:44 ../../boot.php:1354 +msgid "Personal Notes" +msgstr "Notes Personals" + +#: ../../mod/notes.php:63 ../../include/text.php:645 +msgid "Save" +msgstr "Guardar" + +#: ../../mod/newmember.php:6 +msgid "Welcome to Friendica" +msgstr "Benvingut a Friendica" + +#: ../../mod/newmember.php:8 +msgid "New Member Checklist" +msgstr "Llista de Verificació dels Nous Membres" + +#: ../../mod/newmember.php:12 +msgid "" +"We would like to offer some tips and links to help make your experience " +"enjoyable. Click any item to visit the relevant page. A link to this page " +"will be visible from your home page for two weeks after your initial " +"registration and then will quietly disappear." +msgstr "Ens agradaria oferir alguns consells i enllaços per ajudar a fer la seva experiència agradable. Feu clic a qualsevol element per visitar la pàgina corresponent. Un enllaç a aquesta pàgina serà visible des de la pàgina d'inici durant dues setmanes després de la seva inscripció inicial i després desapareixerà en silenci." + +#: ../../mod/newmember.php:16 +msgid "" +"On your Settings page - change your initial password. Also make a " +"note of your Identity Address. This looks just like an email address - and " +"will be useful in making friends on the free social web." +msgstr "En la de la seva configuració de la pàgina - canviï la contrasenya inicial. També prengui nota de la Adreça d'Identitat. Això s'assembla a una adreça de correu electrònic - i serà útil per fer amics a la xarxa social lliure." + +#: ../../mod/newmember.php:18 +msgid "" +"Review the other settings, particularly the privacy settings. An unpublished" +" directory listing is like having an unlisted phone number. In general, you " +"should probably publish your listing - unless all of your friends and " +"potential friends know exactly how to find you." +msgstr "Reviseu les altres configuracions, en particular la configuració de privadesa. Una llista de directoris no publicada és com tenir un número de telèfon no llistat. Normalment, hauria de publicar la seva llista - a menys que tots els seus amics i els amics potencials sàpiguen exactament com trobar-li." + +#: ../../mod/newmember.php:20 +msgid "" +"Upload a profile photo if you have not done so already. Studies have shown " +"that people with real photos of themselves are ten times more likely to make" +" friends than people who do not." +msgstr "Puji una foto del seu perfil si encara no ho ha fet. Els estudis han demostrat que les persones amb fotos reals de ells mateixos tenen deu vegades més probabilitats de fer amics que les persones que no ho fan." + +#: ../../mod/newmember.php:23 +msgid "" +"Authorise the Facebook Connector if you currently have a Facebook account " +"and we will (optionally) import all your Facebook friends and conversations." +msgstr "Autoritzi el connector de Facebook si vostè té un compte al Facebook i nosaltres (opcionalment) importarem tots els teus amics de Facebook i les converses." + +#: ../../mod/newmember.php:25 +msgid "" +"If this is your own personal server, installing the Facebook addon " +"may ease your transition to the free social web." +msgstr "Si aquesta és el seu servidor personal, la instal·lació del complement de Facebook pot facilitar la transició a la web social lliure." + +#: ../../mod/newmember.php:30 +msgid "" +"Enter your email access information on your Connector Settings page if you " +"wish to import and interact with friends or mailing lists from your email " +"INBOX" +msgstr "Introduïu les dades d'accés al correu electrònic a la seva pàgina de configuració de connector, si es desitja importar i relacionar-se amb amics o llistes de correu de la seva bústia d'email" + +#: ../../mod/newmember.php:32 +msgid "" +"Edit your default profile to your liking. Review the " +"settings for hiding your list of friends and hiding the profile from unknown" +" visitors." +msgstr "Editi el perfil per defecte al seu gust. Reviseu la configuració per ocultar la seva llista d'amics i ocultar el perfil dels visitants desconeguts." + +#: ../../mod/newmember.php:34 +msgid "" +"Set some public keywords for your default profile which describe your " +"interests. We may be able to find other people with similar interests and " +"suggest friendships." +msgstr "Estableix algunes paraules clau públiques al teu perfil predeterminat que descriguin els teus interessos. Podem ser capaços de trobar altres persones amb interessos similars i suggerir amistats." + +#: ../../mod/newmember.php:36 +msgid "" +"Your Contacts page is your gateway to managing friendships and connecting " +"with friends on other networks. Typically you enter their address or site " +"URL in the Add New Contact dialog." +msgstr "La seva pàgina de Contactes és la seva porta d'entrada a la gestió de l'amistat i la connexió amb amics d'altres xarxes. Normalment, vostè entrar en la seva direcció o URL del lloc al diàleg Afegir Nou Contacte." + +#: ../../mod/newmember.php:38 +msgid "" +"The Directory page lets you find other people in this network or other " +"federated sites. Look for a Connect or Follow link on " +"their profile page. Provide your own Identity Address if requested." +msgstr "La pàgina del Directori li permet trobar altres persones en aquesta xarxa o altres llocs federats. Busqui un enllaç Connectar o Seguir a la seva pàgina de perfil. Proporcioni la seva pròpia Adreça de Identitat si així ho sol·licita." + +#: ../../mod/newmember.php:40 +msgid "" +"On the side panel of the Contacts page are several tools to find new " +"friends. We can match people by interest, look up people by name or " +"interest, and provide suggestions based on network relationships. On a brand" +" new site, friend suggestions will usually begin to be populated within 24 " +"hours." +msgstr "Al tauler lateral de la pàgina de contacte Hi ha diverses eines per trobar nous amics. Podem coincidir amb les persones per interesos, buscar persones pel nom o per interès, i oferir suggeriments basats en les relacions de la xarxa. En un nou lloc, els suggeriments d'amics, en general comencen a poblar el lloc a les 24 hores." + +#: ../../mod/newmember.php:42 +msgid "" +"Once you have made some friends, organize them into private conversation " +"groups from the sidebar of your Contacts page and then you can interact with" +" each group privately on your Network page." +msgstr "Una vegada que s'han fet alguns amics, organitzi'ls en grups de conversa privada a la barra lateral de la seva pàgina de contactes i després pot interactuar amb cada grup de forma privada a la pàgina de la xarxa." + +#: ../../mod/newmember.php:44 +msgid "" +"Our help pages may be consulted for detail on other program" +" features and resources." +msgstr "A les nostres pàgines d'ajuda es poden consultar detalls sobre les característiques d'altres programes i recursos." + +#: ../../mod/attach.php:8 +msgid "Item not available." +msgstr "Element no disponible" + +#: ../../mod/attach.php:20 +msgid "Item was not found." +msgstr "Element no trobat." + +#: ../../mod/group.php:27 +msgid "Group created." +msgstr "Grup creat." + +#: ../../mod/group.php:33 +msgid "Could not create group." +msgstr "No puc crear grup." + +#: ../../mod/group.php:43 ../../mod/group.php:127 +msgid "Group not found." +msgstr "Grup no trobat" + +#: ../../mod/group.php:56 +msgid "Group name changed." +msgstr "Nom de Grup canviat." + +#: ../../mod/group.php:67 ../../mod/profperm.php:19 ../../index.php:287 +msgid "Permission denied" +msgstr "Permís denegat" + +#: ../../mod/group.php:85 +msgid "Create a group of contacts/friends." +msgstr "Crear un grup de contactes/amics." + +#: ../../mod/group.php:86 ../../mod/group.php:166 +msgid "Group Name: " +msgstr "Nom del Grup:" + +#: ../../mod/group.php:102 +msgid "Group removed." +msgstr "Grup esborrat." + +#: ../../mod/group.php:104 +msgid "Unable to remove group." +msgstr "Incapaç de esborrar Grup." + +#: ../../mod/group.php:165 +msgid "Group Editor" +msgstr "Editor de Grup:" + +#: ../../mod/group.php:177 +msgid "Members" +msgstr "Membres" + +#: ../../mod/group.php:209 ../../mod/profperm.php:105 +msgid "Click on a contact to add or remove." +msgstr "Clicar sobre el contacte per afegir o esborrar." + +#: ../../mod/profperm.php:25 ../../mod/profperm.php:55 +msgid "Invalid profile identifier." +msgstr "Identificador del perfil no vàlid." + +#: ../../mod/profperm.php:101 +msgid "Profile Visibility Editor" +msgstr "Editor de Visibilitat del Perfil" + +#: ../../mod/profperm.php:103 ../../include/profile_advanced.php:7 +#: ../../include/profile_advanced.php:76 ../../include/nav.php:48 +#: ../../boot.php:1336 +msgid "Profile" +msgstr "Perfil" + +#: ../../mod/profperm.php:114 +msgid "Visible To" +msgstr "Visible Per" + +#: ../../mod/profperm.php:130 +msgid "All Contacts (with secure profile access)" +msgstr "Tots els Contactes (amb accés segur al perfil)" + +#: ../../mod/viewcontacts.php:39 +msgid "No contacts." +msgstr "Sense Contactes" + +#: ../../mod/viewcontacts.php:74 ../../include/text.php:584 +msgid "View Contacts" +msgstr "Veure Contactes" + +#: ../../mod/register.php:62 +msgid "An invitation is required." +msgstr "Es requereix invitació." + +#: ../../mod/register.php:67 +msgid "Invitation could not be verified." +msgstr "La invitació no ha pogut ser verificada." + +#: ../../mod/register.php:75 +msgid "Invalid OpenID url" +msgstr "OpenID url no vàlid" + +#: ../../mod/register.php:90 +msgid "Please enter the required information." +msgstr "Per favor, introdueixi la informació requerida." + +#: ../../mod/register.php:104 +msgid "Please use a shorter name." +msgstr "Per favor, empri un nom més curt." + +#: ../../mod/register.php:106 +msgid "Name too short." +msgstr "Nom massa curt." + +#: ../../mod/register.php:121 +msgid "That doesn't appear to be your full (First Last) name." +msgstr "Això no sembla ser el teu nom complet." + +#: ../../mod/register.php:126 +msgid "Your email domain is not among those allowed on this site." +msgstr "El seu domini de correu electrònic no es troba entre els permesos en aquest lloc." + +#: ../../mod/register.php:129 +msgid "Not a valid email address." +msgstr "Adreça de correu no vàlida." + +#: ../../mod/register.php:139 +msgid "Cannot use that email." +msgstr "No es pot utilitzar aquest correu electrònic." + +#: ../../mod/register.php:145 +msgid "" +"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and " +"must also begin with a letter." +msgstr "El teu sobrenom nomes pot contenir \"a-z\", \"0-9\", \"-\", i \"_\", i començar amb lletra." + +#: ../../mod/register.php:151 ../../mod/register.php:252 +msgid "Nickname is already registered. Please choose another." +msgstr "malnom ja registrat. Tria un altre." + +#: ../../mod/register.php:170 +msgid "SERIOUS ERROR: Generation of security keys failed." +msgstr "ERROR IMPORTANT: La generació de claus de seguretat ha fallat." + +#: ../../mod/register.php:238 +msgid "An error occurred during registration. Please try again." +msgstr "Un error ha succeït durant el registre. Intenta-ho de nou." + +#: ../../mod/register.php:274 +msgid "An error occurred creating your default profile. Please try again." +msgstr "Un error ha succeit durant la creació del teu perfil per defecte. Intenta-ho de nou." + +#: ../../mod/register.php:378 ../../mod/regmod.php:52 +#, php-format +msgid "Registration details for %s" +msgstr "Detalls del registre per a %s" + +#: ../../mod/register.php:386 +msgid "" +"Registration successful. Please check your email for further instructions." +msgstr "Registrat amb èxit. Per favor, comprovi el seu correu per a posteriors instruccions." + +#: ../../mod/register.php:390 +msgid "Failed to send email message. Here is the message that failed." +msgstr "Error en enviar missatge de correu electrònic. Aquí està el missatge que ha fallat." + +#: ../../mod/register.php:395 +msgid "Your registration can not be processed." +msgstr "El seu registre no pot ser processat." + +#: ../../mod/register.php:432 +#, php-format +msgid "Registration request at %s" +msgstr "Sol·licitud de registre a %s" + +#: ../../mod/register.php:441 +msgid "Your registration is pending approval by the site owner." +msgstr "El seu registre està pendent d'aprovació pel propietari del lloc." + +#: ../../mod/register.php:479 +msgid "" +"This site has exceeded the number of allowed daily account registrations. " +"Please try again tomorrow." +msgstr "Aquest lloc excedeix el nombre diari de registres de comptes. Per favor, provi de nou demà." + +#: ../../mod/register.php:505 +msgid "" +"You may (optionally) fill in this form via OpenID by supplying your OpenID " +"and clicking 'Register'." +msgstr "Vostè pot (opcionalment), omplir aquest formulari a través de OpenID mitjançant el subministrament de la seva OpenID i fent clic a 'Registrar'." + +#: ../../mod/register.php:506 +msgid "" +"If you are not familiar with OpenID, please leave that field blank and fill " +"in the rest of the items." +msgstr "Si vostè no està familiaritzat amb Twitter, si us plau deixi aquest camp en blanc i completi la resta dels elements." + +#: ../../mod/register.php:507 +msgid "Your OpenID (optional): " +msgstr "El seu OpenID (opcional):" + +#: ../../mod/register.php:521 +msgid "Include your profile in member directory?" +msgstr "Incloc el seu perfil al directori de membres?" + +#: ../../mod/register.php:536 +msgid "Membership on this site is by invitation only." +msgstr "Lloc accesible mitjançant invitació." + +#: ../../mod/register.php:537 +msgid "Your invitation ID: " +msgstr "El teu ID de invitació:" + +#: ../../mod/register.php:540 ../../mod/admin.php:314 +msgid "Registration" +msgstr "Procés de Registre" + +#: ../../mod/register.php:548 +msgid "Your Full Name (e.g. Joe Smith): " +msgstr "El seu nom complet (per exemple, Joan Ningú):" + +#: ../../mod/register.php:549 +msgid "Your Email Address: " +msgstr "La Seva Adreça de Correu:" + +#: ../../mod/register.php:550 +msgid "" +"Choose a profile nickname. This must begin with a text character. Your " +"profile address on this site will then be " +"'nickname@$sitename'." +msgstr "Tria un nom de perfil. Això ha de començar amb un caràcter de text. La seva adreça de perfil en aquest lloc serà 'malnom@$sitename'." + +#: ../../mod/register.php:551 +msgid "Choose a nickname: " +msgstr "Tria un malnom:" + +#: ../../mod/register.php:554 ../../include/nav.php:77 ../../boot.php:693 +msgid "Register" +msgstr "Registrar" + +#: ../../mod/dirfind.php:23 +msgid "People Search" +msgstr "Cercant Gent" + +#: ../../mod/like.php:127 ../../mod/tagger.php:70 +#: ../../addon/facebook/facebook.php:1092 +#: ../../addon/communityhome/communityhome.php:158 +#: ../../addon/communityhome/communityhome.php:167 +#: ../../include/diaspora.php:1600 ../../include/conversation.php:48 +#: ../../include/conversation.php:57 ../../include/conversation.php:121 +#: ../../include/conversation.php:130 +msgid "status" +msgstr "estatus" + +#: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1096 +#: ../../addon/communityhome/communityhome.php:172 +#: ../../include/diaspora.php:1616 ../../include/conversation.php:65 +#, php-format +msgid "%1$s likes %2$s's %3$s" +msgstr "a %1$s agrada %2$s de %3$s" + +#: ../../mod/like.php:146 ../../include/conversation.php:68 +#, php-format +msgid "%1$s doesn't like %2$s's %3$s" +msgstr "a %1$s no agrada %2$s de %3$s" + +#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:127 +#: ../../mod/admin.php:522 ../../mod/admin.php:700 ../../mod/display.php:29 +#: ../../mod/display.php:137 ../../mod/viewd.php:14 +#: ../../include/items.php:2942 +msgid "Item not found." +msgstr "Article no trobat." + +#: ../../mod/viewsrc.php:7 ../../mod/viewd.php:6 +msgid "Access denied." +msgstr "Accés denegat." + +#: ../../mod/regmod.php:61 +msgid "Account approved." +msgstr "Compte aprovat." + +#: ../../mod/regmod.php:93 +#, php-format +msgid "Registration revoked for %s" +msgstr "Procés de Registre revocat per a %s" + +#: ../../mod/regmod.php:105 +msgid "Please login." +msgstr "Si us plau, ingressa." + +#: ../../mod/item.php:89 +msgid "Unable to locate original post." +msgstr "No es pot localitzar post original." + +#: ../../mod/item.php:249 +msgid "Empty post discarded." +msgstr "Buidat després de rebutjar." + +#: ../../mod/item.php:351 ../../mod/wall_upload.php:81 +#: ../../mod/wall_upload.php:90 ../../mod/wall_upload.php:97 +#: ../../include/message.php:143 +msgid "Wall Photos" +msgstr "Fotos del Mur" + +#: ../../mod/item.php:833 +msgid "System error. Post not saved." +msgstr "Error del sistema. Publicació no guardada." + +#: ../../mod/item.php:858 +#, php-format +msgid "" +"This message was sent to you by %s, a member of the Friendica social " +"network." +msgstr "Aquest missatge va ser enviat a vostè per %s, un membre de la xarxa social Friendica." + +#: ../../mod/item.php:860 +#, php-format +msgid "You may visit them online at %s" +msgstr "El pot visitar en línia a %s" + +#: ../../mod/item.php:861 +msgid "" +"Please contact the sender by replying to this post if you do not wish to " +"receive these messages." +msgstr "Si us plau, poseu-vos en contacte amb el remitent responent a aquest missatge si no voleu rebre aquests missatges." + +#: ../../mod/item.php:863 +#, php-format +msgid "%s posted an update." +msgstr "%s ha publicat una actualització." + +#: ../../mod/profile_photo.php:28 +msgid "Image uploaded but image cropping failed." +msgstr "Imatge pujada però no es va poder retallar." + +#: ../../mod/profile_photo.php:61 ../../mod/profile_photo.php:68 +#: ../../mod/profile_photo.php:75 ../../mod/profile_photo.php:258 +#, php-format +msgid "Image size reduction [%s] failed." +msgstr "La reducció de la imatge [%s] va fracassar." + +#: ../../mod/profile_photo.php:89 +msgid "" +"Shift-reload the page or clear browser cache if the new photo does not " +"display immediately." +msgstr "Recarregui la pàgina o netegi la caché del navegador si la nova foto no apareix immediatament." + +#: ../../mod/profile_photo.php:99 +msgid "Unable to process image" +msgstr "No es pot processar la imatge" + +#: ../../mod/profile_photo.php:113 ../../mod/wall_upload.php:56 +#, php-format +msgid "Image exceeds size limit of %d" +msgstr "La imatge sobrepassa el límit de mida de %d" + +#: ../../mod/profile_photo.php:203 +msgid "Upload File:" +msgstr "Pujar arxiu:" + +#: ../../mod/profile_photo.php:204 +msgid "Upload Profile Photo" +msgstr "Pujar Foto del Perfil" + +#: ../../mod/profile_photo.php:205 +msgid "Upload" +msgstr "Pujar" + +#: ../../mod/profile_photo.php:206 +msgid "skip this step" +msgstr "saltar aquest pas" + +#: ../../mod/profile_photo.php:206 +msgid "select a photo from your photo albums" +msgstr "tria una foto dels teus àlbums" + +#: ../../mod/profile_photo.php:219 +msgid "Crop Image" +msgstr "retallar imatge" + +#: ../../mod/profile_photo.php:220 +msgid "Please adjust the image cropping for optimum viewing." +msgstr "Per favor, ajusta la retallada d'imatge per a una optima visualització." + +#: ../../mod/profile_photo.php:221 +msgid "Done Editing" +msgstr "Edició Feta" + +#: ../../mod/profile_photo.php:249 +msgid "Image uploaded successfully." +msgstr "Carregada de la imatge amb èxit." + +#: ../../mod/hcard.php:10 +msgid "No profile" +msgstr "Sense perfil" + +#: ../../mod/removeme.php:45 ../../mod/removeme.php:48 +msgid "Remove My Account" +msgstr "Eliminar el Meu Compte" + +#: ../../mod/removeme.php:46 +msgid "" +"This will completely remove your account. Once this has been done it is not " +"recoverable." +msgstr "Això eliminarà per complet el seu compte. Quan s'hagi fet això, no serà recuperable." + +#: ../../mod/removeme.php:47 +msgid "Please enter your password for verification:" +msgstr "Si us plau, introduïu la contrasenya per a la verificació:" + +#: ../../mod/message.php:23 +msgid "No recipient selected." +msgstr "No s'ha seleccionat destinatari." + +#: ../../mod/message.php:26 +msgid "Unable to locate contact information." +msgstr "No es pot trobar informació de contacte." + +#: ../../mod/message.php:29 +msgid "Message could not be sent." +msgstr "El Missatge no ha estat enviat." + +#: ../../mod/message.php:32 +msgid "Message collection failure." +msgstr "Ha fallat la recollida del missatge." + +#: ../../mod/message.php:35 +msgid "Message sent." +msgstr "Missatge enviat." + +#: ../../mod/message.php:55 +msgid "Inbox" +msgstr "Safata d'entrada" + +#: ../../mod/message.php:60 +msgid "Outbox" +msgstr "Safata de sortida" + +#: ../../mod/message.php:65 +msgid "New Message" +msgstr "Nou Missatge" + +#: ../../mod/message.php:91 +msgid "Message deleted." +msgstr "Missatge eliminat." + +#: ../../mod/message.php:121 +msgid "Conversation removed." +msgstr "Conversació esborrada." + +#: ../../mod/message.php:137 ../../include/conversation.php:887 +msgid "Please enter a link URL:" +msgstr "Sius plau, entri l'enllaç URL:" + +#: ../../mod/message.php:145 +msgid "Send Private Message" +msgstr "Enviant Missatge Privat" + +#: ../../mod/message.php:146 ../../mod/message.php:287 +msgid "To:" +msgstr "Per a:" + +#: ../../mod/message.php:147 ../../mod/message.php:288 +msgid "Subject:" +msgstr "Assumpte::" + +#: ../../mod/message.php:150 ../../mod/message.php:291 +#: ../../mod/invite.php:101 +msgid "Your message:" +msgstr "El teu missatge:" + +#: ../../mod/message.php:188 +msgid "No messages." +msgstr "Sense missatges." + +#: ../../mod/message.php:201 +msgid "Delete conversation" +msgstr "Esborrar conversació" + +#: ../../mod/message.php:204 +msgid "D, d M Y - g:i A" +msgstr "D, d M Y - g:i A" + +#: ../../mod/message.php:239 +msgid "Message not available." +msgstr "Missatge no disponible." + +#: ../../mod/message.php:276 +msgid "Delete message" +msgstr "Esborra missatge" + +#: ../../mod/message.php:286 +msgid "Send Reply" +msgstr "Enviar Resposta" + +#: ../../mod/allfriends.php:34 +#, php-format +msgid "Friends of %s" +msgstr "Amics de %s" + +#: ../../mod/allfriends.php:40 +msgid "No friends to display." +msgstr "No hi ha amics que mostrar" + +#: ../../mod/admin.php:71 ../../mod/admin.php:312 +msgid "Site" +msgstr "Lloc" + +#: ../../mod/admin.php:72 ../../mod/admin.php:480 ../../mod/admin.php:492 +msgid "Users" +msgstr "Usuaris" + +#: ../../mod/admin.php:73 ../../mod/admin.php:569 ../../mod/admin.php:608 +msgid "Plugins" +msgstr "Plugins" + +#: ../../mod/admin.php:74 ../../mod/admin.php:742 ../../mod/admin.php:775 +msgid "Themes" +msgstr "Temes" + +#: ../../mod/admin.php:89 ../../mod/admin.php:855 +msgid "Logs" +msgstr "Transcripcions" + +#: ../../mod/admin.php:94 +msgid "User registrations waiting for confirmation" +msgstr "Registre d'usuari a l'espera de confirmació" + +#: ../../mod/admin.php:161 ../../mod/admin.php:311 ../../mod/admin.php:479 +#: ../../mod/admin.php:568 ../../mod/admin.php:607 ../../mod/admin.php:741 +#: ../../mod/admin.php:774 ../../mod/admin.php:854 +msgid "Administration" +msgstr "Administració" + +#: ../../mod/admin.php:162 +msgid "Summary" +msgstr "Sumari" + +#: ../../mod/admin.php:163 +msgid "Registered users" +msgstr "Usuaris registrats" + +#: ../../mod/admin.php:165 +msgid "Pending registrations" +msgstr "Registres d'usuari pendents" + +#: ../../mod/admin.php:166 +msgid "Version" +msgstr "Versió" + +#: ../../mod/admin.php:168 +msgid "Active plugins" +msgstr "Plugins actius" + +#: ../../mod/admin.php:260 +msgid "Site settings updated." +msgstr "Ajustos del lloc actualitzats." + +#: ../../mod/admin.php:304 +msgid "Closed" +msgstr "Tancat" + +#: ../../mod/admin.php:305 +msgid "Requires approval" +msgstr "Requereix aprovació" + +#: ../../mod/admin.php:306 +msgid "Open" +msgstr "Obert" + +#: ../../mod/admin.php:315 +msgid "File upload" +msgstr "Fitxer carregat" + +#: ../../mod/admin.php:316 +msgid "Policies" +msgstr "Polítiques" + +#: ../../mod/admin.php:317 +msgid "Advanced" +msgstr "Avançat" + +#: ../../mod/admin.php:321 ../../addon/statusnet/statusnet.php:523 +msgid "Site name" +msgstr "Nom del lloc" + +#: ../../mod/admin.php:322 +msgid "Banner/Logo" +msgstr "Senyera/Logo" + +#: ../../mod/admin.php:323 +msgid "System language" +msgstr "Idioma del Systema" + +#: ../../mod/admin.php:324 +msgid "System theme" +msgstr "Tema del sistema" + +#: ../../mod/admin.php:324 +msgid "Default system theme - may be over-ridden by user profiles" +msgstr "Tema per defecte del sitema - pot ser canviat als perfils dels usuaris" + +#: ../../mod/admin.php:326 +msgid "Maximum image size" +msgstr "Mida màxima de les imatges" + +#: ../../mod/admin.php:326 +msgid "" +"Maximum size in bytes of uploaded images. Default is 0, which means no " +"limits." +msgstr "Mida màxima en bytes de les imatges a pujar. Per defecte es 0, que vol dir sense límits." + +#: ../../mod/admin.php:328 +msgid "Register policy" +msgstr "Política per a registrar" + +#: ../../mod/admin.php:329 +msgid "Register text" +msgstr "Text al registrar" + +#: ../../mod/admin.php:329 +msgid "Will be displayed prominently on the registration page." +msgstr "Sea mostrat de forma peminent a la pagina durant el procés de registre." + +#: ../../mod/admin.php:330 +msgid "Accounts abandoned after x days" +msgstr "Comptes abandonats després de x dies" + +#: ../../mod/admin.php:330 +msgid "" +"Will not waste system resources polling external sites for abandonded " +"accounts. Enter 0 for no time limit." +msgstr "No gastará recursos del sistema creant enquestes des de llocs externos per a comptes abandonats. Introdueixi 0 per a cap límit temporal." + +#: ../../mod/admin.php:331 +msgid "Allowed friend domains" +msgstr "Dominis amics permesos" + +#: ../../mod/admin.php:331 +msgid "" +"Comma separated list of domains which are allowed to establish friendships " +"with this site. Wildcards are accepted. Empty to allow any domains" +msgstr "Llista de dominis separada per comes, de adreçes de correu que són permeses per establir amistats. S'admeten comodins. Deixa'l buit per a acceptar tots els dominis." + +#: ../../mod/admin.php:332 +msgid "Allowed email domains" +msgstr "Dominis de correu permesos" + +#: ../../mod/admin.php:332 +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 "Llista de dominis separada per comes, de adreçes de correu que són permeses per registrtar-se. S'admeten comodins. Deixa'l buit per a acceptar tots els dominis." + +#: ../../mod/admin.php:333 +msgid "Block public" +msgstr "Bloqueig públic" + +#: ../../mod/admin.php:333 +msgid "" +"Check to block public access to all otherwise public personal pages on this " +"site unless you are currently logged in." +msgstr "Bloqueija l'accés públic a qualsevol pàgina del lloc fins que t'hagis identificat." + +#: ../../mod/admin.php:334 +msgid "Force publish" +msgstr "Forçar publicació" + +#: ../../mod/admin.php:334 +msgid "" +"Check to force all profiles on this site to be listed in the site directory." +msgstr "Obliga a que tots el perfils en aquest lloc siguin mostrats en el directori del lloc." + +#: ../../mod/admin.php:335 +msgid "Global directory update URL" +msgstr "Actualitzar URL del directori global" + +#: ../../mod/admin.php:335 +msgid "" +"URL to update the global directory. If this is not set, the global directory" +" is completely unavailable to the application." +msgstr "URL per actualitzar el directori global. Si no es configura, el directori global serà completament inaccesible per a l'aplicació. " + +#: ../../mod/admin.php:337 +msgid "Block multiple registrations" +msgstr "Bloquejar multiples registracions" + +#: ../../mod/admin.php:337 +msgid "Disallow users to register additional accounts for use as pages." +msgstr "Inhabilita als usuaris el crear comptes adicionals per a usar com a pàgines." + +#: ../../mod/admin.php:338 +msgid "OpenID support" +msgstr "Suport per a OpenID" + +#: ../../mod/admin.php:338 +msgid "OpenID support for registration and logins." +msgstr "Suport per a registre i validació a OpenID." + +#: ../../mod/admin.php:339 +msgid "Gravatar support" +msgstr "Suport per a gravatar" + +#: ../../mod/admin.php:339 +msgid "Search new user's photo on Gravatar." +msgstr "Cerca la nova foto d'usuari a Gravatar." + +#: ../../mod/admin.php:340 +msgid "Fullname check" +msgstr "Comprobació de nom complet" + +#: ../../mod/admin.php:340 +msgid "" +"Force users to register with a space between firstname and lastname in Full " +"name, as an antispam measure" +msgstr "Obliga els usuaris a col·locar un espai en blanc entre nom i cognoms, com a mesura antifemater" + +#: ../../mod/admin.php:341 +msgid "UTF-8 Regular expressions" +msgstr "expresions regulars UTF-8" + +#: ../../mod/admin.php:341 +msgid "Use PHP UTF8 regular expressions" +msgstr "Empri expresions regulars de PHP amb format UTF8" + +#: ../../mod/admin.php:342 +msgid "Show Community Page" +msgstr "Mostra la Pàgina de Comunitat" + +#: ../../mod/admin.php:342 +msgid "" +"Display a Community page showing all recent public postings on this site." +msgstr "Mostra a la pàgina de comunitat tots els missatges públics recents, d'aquest lloc." + +#: ../../mod/admin.php:343 +msgid "Enable OStatus support" +msgstr "Activa el suport per a OStatus" + +#: ../../mod/admin.php:343 +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 "Proveeix de compatibilitat integrada amb OStatus (identi.ca, status.net, etc). Totes les comunicacions a OStatus són públiques amb el que ocasionalment pots veure advertències." + +#: ../../mod/admin.php:344 +msgid "Enable Diaspora support" +msgstr "Habilitar suport per Diaspora" + +#: ../../mod/admin.php:344 +msgid "Provide built-in Diaspora network compatibility." +msgstr "Proveeix compatibilitat integrada amb la xarxa Diaspora" + +#: ../../mod/admin.php:345 +msgid "Only allow Friendica contacts" +msgstr "Només permetre contactes de Friendica" + +#: ../../mod/admin.php:345 +msgid "" +"All contacts must use Friendica protocols. All other built-in communication " +"protocols disabled." +msgstr "Tots els contactes " + +#: ../../mod/admin.php:346 +msgid "Verify SSL" +msgstr "Verificar SSL" + +#: ../../mod/admin.php:346 +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 "Si ho vols, pots comprovar el certificat estrictament. Això farà que no puguis connectar (de cap manera) amb llocs amb certificats SSL autosignats." + +#: ../../mod/admin.php:347 +msgid "Proxy user" +msgstr "proxy d'usuari" + +#: ../../mod/admin.php:348 +msgid "Proxy URL" +msgstr "URL del proxy" + +#: ../../mod/admin.php:349 +msgid "Network timeout" +msgstr "Temps excedit a la xarxa" + +#: ../../mod/admin.php:349 +msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." +msgstr "Valor en segons. Canviat a 0 es sense límits (no recomenat)" + +#: ../../mod/admin.php:370 +#, php-format +msgid "%s user blocked/unblocked" +msgid_plural "%s users blocked/unblocked" +msgstr[0] "%s usuari bloquejar/desbloquejar" +msgstr[1] "%s usuaris bloquejar/desbloquejar" + +#: ../../mod/admin.php:377 +#, php-format +msgid "%s user deleted" +msgid_plural "%s users deleted" +msgstr[0] "%s usuari esborrat" +msgstr[1] "%s usuaris esborrats" + +#: ../../mod/admin.php:411 +#, php-format +msgid "User '%s' deleted" +msgstr "Usuari %s' esborrat" + +#: ../../mod/admin.php:418 +#, php-format +msgid "User '%s' unblocked" +msgstr "Usuari %s' desbloquejat" + +#: ../../mod/admin.php:418 +#, php-format +msgid "User '%s' blocked" +msgstr "L'usuari '%s' és bloquejat" + +#: ../../mod/admin.php:482 +msgid "select all" +msgstr "Seleccionar tot" + +#: ../../mod/admin.php:483 +msgid "User registrations waiting for confirm" +msgstr "Registre d'usuari esperant confirmació" + +#: ../../mod/admin.php:484 +msgid "Request date" +msgstr "Data de sol·licitud" + +#: ../../mod/admin.php:484 ../../mod/admin.php:493 +#: ../../include/contact_selectors.php:79 +msgid "Email" +msgstr "Correu" + +#: ../../mod/admin.php:485 +msgid "No registrations." +msgstr "Sense registres." + +#: ../../mod/admin.php:487 +msgid "Deny" +msgstr "Denegar" + +#: ../../mod/admin.php:493 +msgid "Register date" +msgstr "Data de registre" + +#: ../../mod/admin.php:493 +msgid "Last login" +msgstr "Últim accés" + +#: ../../mod/admin.php:493 +msgid "Last item" +msgstr "Últim element" + +#: ../../mod/admin.php:493 +msgid "Account" +msgstr "Compte" + +#: ../../mod/admin.php:495 +msgid "" +"Selected users will be deleted!\\n\\nEverything these users had posted on " +"this site will be permanently deleted!\\n\\nAre you sure?" +msgstr "Els usuaris seleccionats seran esborrats!\\n\\nqualsevol cosa que aquests usuaris hagin publicat en aquest lloc s'esborrarà!\\n\\nEsteu segur?" + +#: ../../mod/admin.php:496 +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 "L'usuari {0} s'eliminarà!\\n\\nQualsevol cosa que aquest usuari hagi publicat en aquest lloc s'esborrarà!\\n\\nEsteu segur?" + +#: ../../mod/admin.php:532 +#, php-format +msgid "Plugin %s disabled." +msgstr "Plugin %s deshabilitat." + +#: ../../mod/admin.php:536 +#, php-format +msgid "Plugin %s enabled." +msgstr "Plugin %s habilitat." + +#: ../../mod/admin.php:546 ../../mod/admin.php:724 +msgid "Disable" +msgstr "Deshabilitar" + +#: ../../mod/admin.php:548 ../../mod/admin.php:726 +msgid "Enable" +msgstr "Habilitar" + +#: ../../mod/admin.php:570 ../../mod/admin.php:743 +msgid "Toggle" +msgstr "Canviar" + +#: ../../mod/admin.php:571 ../../mod/admin.php:744 ../../include/nav.php:130 +msgid "Settings" +msgstr "Ajustos" + +#: ../../mod/admin.php:578 ../../mod/admin.php:753 +msgid "Author: " +msgstr "Autor:" + +#: ../../mod/admin.php:579 ../../mod/admin.php:754 +msgid "Maintainer: " +msgstr "Encarregat:" + +#: ../../mod/admin.php:689 +msgid "No themes found." +msgstr "No s'ha trobat temes." + +#: ../../mod/admin.php:780 +msgid "[Experimental]" +msgstr "[Experimental]" + +#: ../../mod/admin.php:781 +msgid "[Unsupported]" +msgstr "[No soportat]" + +#: ../../mod/admin.php:804 +msgid "Log settings updated." +msgstr "Configuració del transcriptor actualitzada." + +#: ../../mod/admin.php:857 +msgid "Clear" +msgstr "Netejar" + +#: ../../mod/admin.php:863 +msgid "Debugging" +msgstr "Esplugar" + +#: ../../mod/admin.php:864 +msgid "Log file" +msgstr "Arxiu de transcripció" + +#: ../../mod/admin.php:864 +msgid "" +"Must be writable by web server. Relative to your Friendica top-level " +"directory." +msgstr "Ha de tenir permisos d'escriptura pel servidor web. En relació amb el seu directori Friendica de nivell superior." + +#: ../../mod/admin.php:865 +msgid "Log level" +msgstr "Nivell de transcripció" + +#: ../../mod/admin.php:906 +msgid "Close" +msgstr "Tancar" + +#: ../../mod/admin.php:912 +msgid "FTP Host" +msgstr "Amfitrió FTP" + +#: ../../mod/admin.php:913 +msgid "FTP Path" +msgstr "Direcció FTP" + +#: ../../mod/admin.php:914 +msgid "FTP User" +msgstr "Usuari FTP" + +#: ../../mod/admin.php:915 +msgid "FTP Password" +msgstr "Contrasenya FTP" + +#: ../../mod/profile.php:15 ../../boot.php:845 +msgid "Requested profile is not available." +msgstr "El perfil sol·licitat no està disponible." + +#: ../../mod/profile.php:111 ../../mod/display.php:67 +msgid "Access to this profile has been restricted." +msgstr "L'accés a aquest perfil ha estat restringit." + +#: ../../mod/profile.php:131 +msgid "Tips for New Members" +msgstr "Consells per a nous membres" + +#: ../../mod/ping.php:174 +msgid "{0} wants to be your friend" +msgstr "{0} vol ser el teu amic" + +#: ../../mod/ping.php:179 +msgid "{0} sent you a message" +msgstr "{0} t'ha enviat un missatge de" + +#: ../../mod/ping.php:184 +msgid "{0} requested registration" +msgstr "{0} solicituts de registre" + +#: ../../mod/ping.php:190 +#, php-format +msgid "{0} commented %s's post" +msgstr "{0} va comentar l'enviament de %s" + +#: ../../mod/ping.php:195 +#, php-format +msgid "{0} liked %s's post" +msgstr "A {0} l'ha agradat l'enviament de %s" + +#: ../../mod/ping.php:200 +#, php-format +msgid "{0} disliked %s's post" +msgstr "A {0} no l'ha agradat l'enviament de %s" + +#: ../../mod/ping.php:205 +#, php-format +msgid "{0} is now friends with %s" +msgstr "{0} ara és amic de %s" + +#: ../../mod/ping.php:210 +msgid "{0} posted" +msgstr "{0} publicat" + +#: ../../mod/ping.php:215 +#, php-format +msgid "{0} tagged %s's post with #%s" +msgstr "{0} va etiquetar la publicació de %s com #%s" + +#: ../../mod/ping.php:221 +msgid "{0} mentioned you in a post" +msgstr "{0} et menciona en un missatge" + +#: ../../mod/openid.php:63 ../../mod/openid.php:77 ../../include/auth.php:90 +#: ../../include/auth.php:115 ../../include/auth.php:169 +msgid "Login failed." +msgstr "Error d'accés." + +#: ../../mod/follow.php:27 +msgid "Connect URL missing." +msgstr "URL del connector perduda." + +#: ../../mod/follow.php:47 +msgid "" +"This site is not configured to allow communications with other networks." +msgstr "Aquest lloc no està configurat per permetre les comunicacions amb altres xarxes." + +#: ../../mod/follow.php:48 ../../mod/follow.php:63 +msgid "No compatible communication protocols or feeds were discovered." +msgstr "Protocol de comunnicació no compatible o alimentador descobert." + +#: ../../mod/follow.php:61 +msgid "The profile address specified does not provide adequate information." +msgstr "L'adreça de perfil especificada no proveeix informació adient." + +#: ../../mod/follow.php:65 +msgid "An author or name was not found." +msgstr "Un autor o nom no va ser trobat" + +#: ../../mod/follow.php:67 +msgid "No browser URL could be matched to this address." +msgstr "Cap direcció URL del navegador coincideix amb aquesta adreça." + +#: ../../mod/follow.php:74 +msgid "" +"The profile address specified belongs to a network which has been disabled " +"on this site." +msgstr "La direcció del perfil especificat pertany a una xarxa que ha estat desactivada en aquest lloc." + +#: ../../mod/follow.php:79 +msgid "" +"Limited profile. This person will be unable to receive direct/personal " +"notifications from you." +msgstr "Perfil limitat. Aquesta persona no podrà rebre notificacions personals/directes de tu." + +#: ../../mod/follow.php:149 +msgid "Unable to retrieve contact information." +msgstr "No es pot recuperar la informació de contacte." + +#: ../../mod/follow.php:195 +msgid "following" +msgstr "seguint" + +#: ../../mod/common.php:34 +msgid "Common Friends" +msgstr "Amics Comuns" + +#: ../../mod/common.php:42 +msgid "No friends in common." +msgstr "No hi ha amics en comú." + +#: ../../mod/display.php:130 +msgid "Item has been removed." +msgstr "El element ha estat esborrat." + +#: ../../mod/apps.php:4 +msgid "Applications" +msgstr "Aplicacions" + +#: ../../mod/apps.php:7 +msgid "No installed applications." +msgstr "Aplicacions no instal·lades." + +#: ../../mod/search.php:83 +msgid "Search This Site" +msgstr "Cerca en Aquest Lloc" + +#: ../../mod/profiles.php:21 ../../mod/profiles.php:239 +#: ../../mod/profiles.php:344 ../../mod/dfrn_confirm.php:62 +msgid "Profile not found." +msgstr "Perfil no trobat." + +#: ../../mod/profiles.php:28 +msgid "Profile Name is required." +msgstr "Nom de perfil requerit." + +#: ../../mod/profiles.php:198 +msgid "Profile updated." +msgstr "Perfil actualitzat." + +#: ../../mod/profiles.php:256 +msgid "Profile deleted." +msgstr "Perfil esborrat." + +#: ../../mod/profiles.php:272 ../../mod/profiles.php:303 +msgid "Profile-" +msgstr "Perfil-" + +#: ../../mod/profiles.php:291 ../../mod/profiles.php:330 +msgid "New profile created." +msgstr "Nou perfil creat." + +#: ../../mod/profiles.php:309 +msgid "Profile unavailable to clone." +msgstr "No es pot clonar el perfil." + +#: ../../mod/profiles.php:356 +msgid "Hide your contact/friend list from viewers of this profile?" +msgstr "Amaga la llista de contactes/amics en la vista d'aquest perfil?" + +#: ../../mod/profiles.php:374 +msgid "Edit Profile Details" +msgstr "Editor de Detalls del Perfil" + +#: ../../mod/profiles.php:376 +msgid "View this profile" +msgstr "Veure aquest perfil" + +#: ../../mod/profiles.php:377 +msgid "Create a new profile using these settings" +msgstr "Crear un nou perfil amb aquests ajustos" + +#: ../../mod/profiles.php:378 +msgid "Clone this profile" +msgstr "Clonar aquest perfil" + +#: ../../mod/profiles.php:379 +msgid "Delete this profile" +msgstr "Esborrar aquest perfil" + +#: ../../mod/profiles.php:380 +msgid "Profile Name:" +msgstr "Nom de Perfil:" + +#: ../../mod/profiles.php:381 +msgid "Your Full Name:" +msgstr "El Teu Nom Complet." + +#: ../../mod/profiles.php:382 +msgid "Title/Description:" +msgstr "Títol/Descripció:" + +#: ../../mod/profiles.php:383 +msgid "Your Gender:" +msgstr "Gènere:" + +#: ../../mod/profiles.php:384 +#, php-format +msgid "Birthday (%s):" +msgstr "Aniversari (%s)" + +#: ../../mod/profiles.php:385 +msgid "Street Address:" +msgstr "Direcció:" + +#: ../../mod/profiles.php:386 +msgid "Locality/City:" +msgstr "Localitat/Ciutat:" + +#: ../../mod/profiles.php:387 +msgid "Postal/Zip Code:" +msgstr "Codi Postal:" + +#: ../../mod/profiles.php:388 +msgid "Country:" +msgstr "País" + +#: ../../mod/profiles.php:389 +msgid "Region/State:" +msgstr "Región/Estat:" + +#: ../../mod/profiles.php:390 +msgid " Marital Status:" +msgstr " Estat Civil:" + +#: ../../mod/profiles.php:391 +msgid "Who: (if applicable)" +msgstr "Qui? (si és aplicable)" + +#: ../../mod/profiles.php:392 +msgid "Examples: cathy123, Cathy Williams, cathy@example.com" +msgstr "Exemples: cathy123, Cathy Williams, cathy@example.com" + +#: ../../mod/profiles.php:393 ../../include/profile_advanced.php:43 +msgid "Sexual Preference:" +msgstr "Preferència Sexual:" + +#: ../../mod/profiles.php:394 +msgid "Homepage URL:" +msgstr "Pàgina web URL:" + +#: ../../mod/profiles.php:395 ../../include/profile_advanced.php:49 +msgid "Political Views:" +msgstr "Idees Polítiques:" + +#: ../../mod/profiles.php:396 +msgid "Religious Views:" +msgstr "Creencies Religioses:" + +#: ../../mod/profiles.php:397 +msgid "Public Keywords:" +msgstr "Paraules Clau Públiques" + +#: ../../mod/profiles.php:398 +msgid "Private Keywords:" +msgstr "Paraules Clau Privades:" + +#: ../../mod/profiles.php:399 +msgid "Example: fishing photography software" +msgstr "Exemple: pesca fotografia programari" + +#: ../../mod/profiles.php:400 +msgid "(Used for suggesting potential friends, can be seen by others)" +msgstr "(Emprat per suggerir potencials amics, Altres poden veure-ho)" + +#: ../../mod/profiles.php:401 +msgid "(Used for searching profiles, never shown to others)" +msgstr "(Emprat durant la cerca de perfils, mai mostrat a ningú)" + +#: ../../mod/profiles.php:402 +msgid "Tell us about yourself..." +msgstr "Parla'ns de tú....." + +#: ../../mod/profiles.php:403 +msgid "Hobbies/Interests" +msgstr "Aficions/Interessos" + +#: ../../mod/profiles.php:404 +msgid "Contact information and Social Networks" +msgstr "Informació de contacte i Xarxes Socials" + +#: ../../mod/profiles.php:405 +msgid "Musical interests" +msgstr "Gustos musicals" + +#: ../../mod/profiles.php:406 +msgid "Books, literature" +msgstr "Llibres, Literatura" + +#: ../../mod/profiles.php:407 +msgid "Television" +msgstr "Televisió" + +#: ../../mod/profiles.php:408 +msgid "Film/dance/culture/entertainment" +msgstr "Cinema/ball/cultura/entreteniments" + +#: ../../mod/profiles.php:409 +msgid "Love/romance" +msgstr "Amor/sentiments" + +#: ../../mod/profiles.php:410 +msgid "Work/employment" +msgstr "Treball/ocupació" + +#: ../../mod/profiles.php:411 +msgid "School/education" +msgstr "Ensenyament/estudis" + +#: ../../mod/profiles.php:416 +msgid "" +"This is your public profile.
    It may " +"be visible to anybody using the internet." +msgstr "Aquest és el teu perfil públic.
    El qual pot ser visible per qualsevol qui faci servir Internet." + +#: ../../mod/profiles.php:426 ../../mod/directory.php:124 +msgid "Age: " +msgstr "Edat:" + +#: ../../mod/profiles.php:461 +msgid "Edit/Manage Profiles" +msgstr "Editar/Gestionar Perfils" + +#: ../../mod/profiles.php:462 ../../boot.php:946 +msgid "Change profile photo" +msgstr "Canviar la foto del perfil" + +#: ../../mod/profiles.php:463 ../../boot.php:947 +msgid "Create New Profile" +msgstr "Crear un Nou Perfil" + +#: ../../mod/profiles.php:473 ../../boot.php:957 +msgid "Profile Image" +msgstr "Imatge del Perfil" + +#: ../../mod/profiles.php:475 ../../boot.php:960 +msgid "visible to everybody" +msgstr "Visible per tothom" + +#: ../../mod/profiles.php:476 ../../boot.php:961 +msgid "Edit visibility" +msgstr "Editar visibilitat" + +#: ../../mod/tagger.php:103 ../../include/conversation.php:138 +#, php-format +msgid "%1$s tagged %2$s's %3$s with %4$s" +msgstr "%1$s etiquetats %2$s %3$s amb %4$s" + +#: ../../mod/delegate.php:95 +msgid "No potential page delegates located." +msgstr "No es troben pàgines potencialment delegades." + +#: ../../mod/delegate.php:121 +msgid "Delegate Page Management" +msgstr "Gestió de les Pàgines Delegades" + +#: ../../mod/delegate.php:123 +msgid "" +"Delegates are able to manage all aspects of this account/page except for " +"basic account settings. Please do not delegate your personal account to " +"anybody that you do not trust completely." +msgstr "Els delegats poden gestionar tots els aspectes d'aquest compte/pàgina, excepte per als ajustaments bàsics del compte. Si us plau, no deleguin el seu compte personal a ningú que no confiïn completament." + +#: ../../mod/delegate.php:124 +msgid "Existing Page Managers" +msgstr "Actuals Administradors de Pàgina" + +#: ../../mod/delegate.php:126 +msgid "Existing Page Delegates" +msgstr "Actuals Delegats de Pàgina" + +#: ../../mod/delegate.php:128 +msgid "Potential Delegates" +msgstr "Delegats Potencials" + +#: ../../mod/delegate.php:131 +msgid "Add" +msgstr "Afegir" + +#: ../../mod/delegate.php:132 +msgid "No entries." +msgstr "Sense entrades" + +#: ../../mod/suggest.php:38 ../../include/contact_widgets.php:35 +msgid "Friend Suggestions" +msgstr "Amics Suggerits" + +#: ../../mod/suggest.php:44 +msgid "" +"No suggestions available. If this is a new site, please try again in 24 " +"hours." +msgstr "Cap suggeriment disponible. Si això és un nou lloc, si us plau torna a intentar en 24 hores." + +#: ../../mod/suggest.php:61 +msgid "Ignore/Hide" +msgstr "Ignorar/Amagar" + +#: ../../mod/directory.php:51 +msgid "Global Directory" +msgstr "Directori Global" + +#: ../../mod/directory.php:57 +msgid "Normal site view" +msgstr "Vista normal del lloc" + +#: ../../mod/directory.php:59 +msgid "Admin - View all site entries" +msgstr "Admin- Veure totes les entrades del lloc" + +#: ../../mod/directory.php:65 +msgid "Find on this site" +msgstr "Trobat en aquest lloc" + +#: ../../mod/directory.php:68 +msgid "Site Directory" +msgstr "Directori Local" + +#: ../../mod/directory.php:127 +msgid "Gender: " +msgstr "Gènere:" + +#: ../../mod/directory.php:153 +msgid "No entries (some entries may be hidden)." +msgstr "No hi ha entrades (algunes de les entrades poden estar amagades)." + +#: ../../mod/invite.php:35 +#, php-format +msgid "%s : Not a valid email address." +msgstr "%s : No es una adreça de correu vàlida" + +#: ../../mod/invite.php:59 +#, php-format +msgid "Please join my network on %s" +msgstr "Si us plau, uneix-te a la meva xarxa en %s" + +#: ../../mod/invite.php:69 +#, php-format +msgid "%s : Message delivery failed." +msgstr "%s : Ha fallat l'entrega del missatge." + +#: ../../mod/invite.php:73 +#, php-format +msgid "%d message sent." +msgid_plural "%d messages sent." +msgstr[0] "%d missatge enviat" +msgstr[1] "%d missatges enviats." + +#: ../../mod/invite.php:92 +msgid "You have no more invitations available" +msgstr "No te més invitacions disponibles" + +#: ../../mod/invite.php:99 +msgid "Send invitations" +msgstr "Enviant Invitacions" + +#: ../../mod/invite.php:100 +msgid "Enter email addresses, one per line:" +msgstr "Entri adreçes de correu, una per línia:" + +#: ../../mod/invite.php:102 +#, php-format +msgid "Please join my social network on %s" +msgstr "Per favor, uneix-te a la meva xarxa social en %s" + +#: ../../mod/invite.php:103 +msgid "To accept this invitation, please visit:" +msgstr "Per acceptar aquesta invitació, si us plau, visiti:" + +#: ../../mod/invite.php:104 +msgid "You will need to supply this invitation code: $invite_code" +msgstr "Vostè haurà de proporcionar aquest codi d'invitació: $invite_code" + +#: ../../mod/invite.php:104 +msgid "" +"Once you have registered, please connect with me via my profile page at:" +msgstr "Un cop registrat, si us plau contactar amb mi a través de la meva pàgina de perfil a:" + +#: ../../mod/dfrn_confirm.php:119 +msgid "" +"This may occasionally happen if contact was requested by both persons and it" +" has already been approved." +msgstr "Això pot ocorre ocasionalment si el contacte fa una petició per ambdues persones i ja han estat aprovades." + +#: ../../mod/dfrn_confirm.php:239 +msgid "Response from remote site was not understood." +msgstr "La resposta des del lloc remot no s'entenia." + +#: ../../mod/dfrn_confirm.php:248 +msgid "Unexpected response from remote site: " +msgstr "Resposta inesperada de lloc remot:" + +#: ../../mod/dfrn_confirm.php:256 +msgid "Confirmation completed successfully." +msgstr "La confirmació s'ha completat correctament." + +#: ../../mod/dfrn_confirm.php:258 ../../mod/dfrn_confirm.php:272 +#: ../../mod/dfrn_confirm.php:279 +msgid "Remote site reported: " +msgstr "El lloc remot informa:" + +#: ../../mod/dfrn_confirm.php:270 +msgid "Temporary failure. Please wait and try again." +msgstr "Fallada temporal. Si us plau, espereu i torneu a intentar." + +#: ../../mod/dfrn_confirm.php:277 +msgid "Introduction failed or was revoked." +msgstr "La presentació va fallar o va ser revocada." + +#: ../../mod/dfrn_confirm.php:422 +msgid "Unable to set contact photo." +msgstr "No es pot canviar la foto de contacte." + +#: ../../mod/dfrn_confirm.php:474 ../../include/diaspora.php:495 +#: ../../include/conversation.php:101 +#, php-format +msgid "%1$s is now friends with %2$s" +msgstr "%1$s és ara amic amb %2$s" + +#: ../../mod/dfrn_confirm.php:544 +#, php-format +msgid "No user record found for '%s' " +msgstr "No es troben registres d'usuari per a '%s'" + +#: ../../mod/dfrn_confirm.php:554 +msgid "Our site encryption key is apparently messed up." +msgstr "La nostra clau de xifrat del lloc pel que sembla en mal estat." + +#: ../../mod/dfrn_confirm.php:565 +msgid "Empty site URL was provided or URL could not be decrypted by us." +msgstr "Es va proporcionar una URL del lloc buida o la URL no va poder ser desxifrada per nosaltres." + +#: ../../mod/dfrn_confirm.php:586 +msgid "Contact record was not found for you on our site." +msgstr "No s'han trobat registres del contacte al nostre lloc." + +#: ../../mod/dfrn_confirm.php:600 +#, php-format +msgid "Site public key not available in contact record for URL %s." +msgstr "la clau pública del lloc no disponible en les dades del contacte per URL %s." + +#: ../../mod/dfrn_confirm.php:620 +msgid "" +"The ID provided by your system is a duplicate on our system. It should work " +"if you try again." +msgstr "La ID proporcionada pel seu sistema és un duplicat en el nostre sistema. Hauria de treballar si intenta de nou." + +#: ../../mod/dfrn_confirm.php:631 +msgid "Unable to set your contact credentials on our system." +msgstr "No es pot canviar les seves credencials de contacte en el nostre sistema." + +#: ../../mod/dfrn_confirm.php:694 +msgid "Unable to update your contact profile details on our system" +msgstr "No es pot actualitzar els detalls del seu perfil de contacte en el nostre sistema" + +#: ../../mod/dfrn_confirm.php:724 +#, php-format +msgid "Connection accepted at %s" +msgstr "Connexió acceptada en %s" + +#: ../../addon/facebook/facebook.php:338 +msgid "Facebook disabled" +msgstr "Facebook deshabilitat" + +#: ../../addon/facebook/facebook.php:343 +msgid "Updating contacts" +msgstr "Actualitzant contactes" + +#: ../../addon/facebook/facebook.php:352 +msgid "Facebook API key is missing." +msgstr "La clau del API de Facebook s'ha perdut." + +#: ../../addon/facebook/facebook.php:359 +msgid "Facebook Connect" +msgstr "Facebook Connectat" + +#: ../../addon/facebook/facebook.php:365 +msgid "Install Facebook connector for this account." +msgstr "Instal·lar el connector de Facebook per aquest compte." + +#: ../../addon/facebook/facebook.php:372 +msgid "Remove Facebook connector" +msgstr "Eliminar el connector de Faceboook" + +#: ../../addon/facebook/facebook.php:377 +msgid "" +"Re-authenticate [This is necessary whenever your Facebook password is " +"changed.]" +msgstr "Re-autentificar [Això és necessari cada vegada que la contrasenya de Facebook canvia.]" + +#: ../../addon/facebook/facebook.php:384 +msgid "Post to Facebook by default" +msgstr "Enviar a Facebook per defecte" + +#: ../../addon/facebook/facebook.php:388 +msgid "Link all your Facebook friends and conversations on this website" +msgstr "Enllaça tots els teus amics i les converses de Facebook en aquest lloc web" + +#: ../../addon/facebook/facebook.php:390 +msgid "" +"Facebook conversations consist of your profile wall and your friend" +" stream." +msgstr "Les converses de Facebook consisteixen en el perfil del mur i en el stream del seu amic." + +#: ../../addon/facebook/facebook.php:391 +msgid "On this website, your Facebook friend stream is only visible to you." +msgstr "En aquesta pàgina web, el stream del seu amic a Facebook només és visible per a vostè." + +#: ../../addon/facebook/facebook.php:392 +msgid "" +"The following settings determine the privacy of your Facebook profile wall " +"on this website." +msgstr "Les següents opcions determinen la privacitat del mur del seu perfil de Facebook en aquest lloc web." + +#: ../../addon/facebook/facebook.php:396 +msgid "" +"On this website your Facebook profile wall conversations will only be " +"visible to you" +msgstr "En aquesta pàgina web les seves converses al mur del perfil de Facebook només seran visible per a vostè" + +#: ../../addon/facebook/facebook.php:401 +msgid "Do not import your Facebook profile wall conversations" +msgstr "No importi les seves converses del mur del perfil de Facebook" + +#: ../../addon/facebook/facebook.php:403 +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 " +"website and your privacy settings on this website will be used to determine " +"who may see the conversations." +msgstr "Si opta per vincular les converses i deixar ambdues caselles sense marcar, el mur del seu perfil de Facebook es fusionarà amb el mur del seu perfil en aquest lloc web i la seva configuració de privacitat en aquest website serà utilitzada per determinar qui pot veure les converses." + +#: ../../addon/facebook/facebook.php:408 +msgid "Comma separated applications to ignore" +msgstr "Separats per comes les aplicacions a ignorar" + +#: ../../addon/facebook/facebook.php:476 +#: ../../include/contact_selectors.php:81 +msgid "Facebook" +msgstr "Facebook" + +#: ../../addon/facebook/facebook.php:477 +msgid "Facebook Connector Settings" +msgstr "Ajustos del Connector de Facebook" + +#: ../../addon/facebook/facebook.php:491 +msgid "Post to Facebook" +msgstr "Enviament a Facebook" + +#: ../../addon/facebook/facebook.php:582 +msgid "" +"Post to Facebook cancelled because of multi-network access permission " +"conflict." +msgstr "Enviament a Facebook cancel·lat perque hi ha un conflicte de permisos d'accés multi-xarxa." + +#: ../../addon/facebook/facebook.php:651 +msgid "Image: " +msgstr "Imatge:" + +#: ../../addon/facebook/facebook.php:728 +msgid "View on Friendica" +msgstr "Vist en Friendica" + +#: ../../addon/facebook/facebook.php:752 +msgid "Facebook post failed. Queued for retry." +msgstr "Enviament a Facebook fracassat. En cua per a reintent." + +#: ../../addon/facebook/facebook.php:877 ../../addon/facebook/facebook.php:886 +#: ../../include/bb2diaspora.php:102 +msgid "link" +msgstr "enllaç" + +#: ../../addon/widgets/widget_like.php:58 +#, php-format +msgid "%d person likes this" +msgid_plural "%d people like this" +msgstr[0] "%d persona li agrada això" +msgstr[1] "%d persones els agrada això" + +#: ../../addon/widgets/widget_like.php:61 +#, php-format +msgid "%d person doesn't like this" +msgid_plural "%d people don't like this" +msgstr[0] "%d persona no li agrada això" +msgstr[1] "%d persones no els agrada això" + +#: ../../addon/widgets/widgets.php:55 +msgid "Generate new key" +msgstr "Generar nova clau" + +#: ../../addon/widgets/widgets.php:58 +msgid "Widgets key" +msgstr "Ginys clau" + +#: ../../addon/widgets/widgets.php:60 +msgid "Widgets available" +msgstr "Ginys disponibles" + +#: ../../addon/widgets/widget_friends.php:40 +msgid "Connect on Friendica!" +msgstr "Connectar en Friendica" + +#: ../../addon/yourls/yourls.php:55 +msgid "YourLS Settings" +msgstr "La Teva Configuració de LS" + +#: ../../addon/yourls/yourls.php:57 +msgid "URL: http://" +msgstr "URL: http://" + +#: ../../addon/yourls/yourls.php:62 +msgid "Username:" +msgstr "Nom d'usuari:" + +#: ../../addon/yourls/yourls.php:67 +msgid "Password:" +msgstr "Contrasenya:" + +#: ../../addon/yourls/yourls.php:72 +msgid "Use SSL " +msgstr "Emprar SSL" + +#: ../../addon/yourls/yourls.php:92 +msgid "yourls Settings saved." +msgstr "Guardar la seva configuració." + +#: ../../addon/ljpost/ljpost.php:38 +msgid "Post to LiveJournal" +msgstr "Missatge a Livejournal" + +#: ../../addon/ljpost/ljpost.php:69 +msgid "LiveJournal Post Settings" +msgstr "Configuració d'enviaments a Livejournal" + +#: ../../addon/ljpost/ljpost.php:71 +msgid "Enable LiveJournal Post Plugin" +msgstr "Habilitat el plugin d'enviaments a Livejournal" + +#: ../../addon/ljpost/ljpost.php:76 +msgid "LiveJournal username" +msgstr "Nom d'usuari a Livejournal" + +#: ../../addon/ljpost/ljpost.php:81 +msgid "LiveJournal password" +msgstr "Contrasenya a Livejournal" + +#: ../../addon/ljpost/ljpost.php:86 +msgid "Post to LiveJournal by default" +msgstr "Enviar per defecte a Livejournal" + +#: ../../addon/nsfw/nsfw.php:47 +msgid "\"Not Safe For Work\" Settings" +msgstr "Configuració de \"Not Safe For Work\"" + +#: ../../addon/nsfw/nsfw.php:50 +msgid "Enable NSFW filter" +msgstr "Habilitar el filtre NSFW" + +#: ../../addon/nsfw/nsfw.php:53 +msgid "Comma separated words to treat as NSFW" +msgstr "Tractar com NSFW les paraules separades per comes " + +#: ../../addon/nsfw/nsfw.php:58 +msgid "Use /expression/ to provide regular expressions" +msgstr "Emprar /expressió/ per a proporcionar expressions regulars" + +#: ../../addon/nsfw/nsfw.php:74 +msgid "NSFW Settings saved." +msgstr "Configuració NSFW guardada." + +#: ../../addon/nsfw/nsfw.php:120 +#, php-format +msgid "%s - Click to open/close" +msgstr "%s - Clicar per obrir/tancar" + +#: ../../addon/communityhome/communityhome.php:28 +#: ../../addon/communityhome/communityhome.php:34 +#: ../../addon/communityhome/twillingham/communityhome.php:28 +#: ../../addon/communityhome/twillingham/communityhome.php:34 +#: ../../include/nav.php:62 ../../boot.php:710 +msgid "Login" +msgstr "Identifica't" + +#: ../../addon/communityhome/communityhome.php:29 +#: ../../addon/communityhome/twillingham/communityhome.php:29 +msgid "OpenID" +msgstr "OpenID" + +#: ../../addon/communityhome/communityhome.php:38 +msgid "Last users" +msgstr "Últims usuaris" + +#: ../../addon/communityhome/communityhome.php:81 +#: ../../addon/communityhome/twillingham/communityhome.php:81 +msgid "Most active users" +msgstr "Usuaris més actius" + +#: ../../addon/communityhome/communityhome.php:98 +msgid "Last photos" +msgstr "Últimes fotos" + +#: ../../addon/communityhome/communityhome.php:133 +msgid "Last likes" +msgstr "Últims \"m'agrada\"" + +#: ../../addon/communityhome/communityhome.php:155 ../../include/text.php:1224 +#: ../../include/conversation.php:45 ../../include/conversation.php:118 +msgid "event" +msgstr "esdeveniment" + +#: ../../addon/communityhome/twillingham/communityhome.php:38 +msgid "Latest users" +msgstr "Últims usuaris" + +#: ../../addon/uhremotestorage/uhremotestorage.php:84 +#, php-format +msgid "" +"Allow to use your friendica id (%s) to connecto to external unhosted-enabled" +" storage (like ownCloud). See RemoteStorage" +" WebFinger" +msgstr "Permetre l'ús del seu ID de friendica (%s) per Connectar a l'emmagatzematge extern (com ownCloud). Veure WebFinger RemoteStorage " + +#: ../../addon/uhremotestorage/uhremotestorage.php:85 +msgid "Template URL (with {category})" +msgstr "Plantilles de URL (amb {categoria})" + +#: ../../addon/uhremotestorage/uhremotestorage.php:86 +msgid "OAuth end-point" +msgstr "OAuth end-point" + +#: ../../addon/uhremotestorage/uhremotestorage.php:87 +msgid "Api" +msgstr "Api" + +#: ../../addon/membersince/membersince.php:18 +msgid "Member since:" +msgstr "Membre des de:" + +#: ../../addon/tictac/tictac.php:20 +msgid "Three Dimensional Tic-Tac-Toe" +msgstr "Tres en línia Tridimensional" + +#: ../../addon/tictac/tictac.php:53 +msgid "3D Tic-Tac-Toe" +msgstr "Tres en línia 3D" + +#: ../../addon/tictac/tictac.php:58 +msgid "New game" +msgstr "Nou joc" + +#: ../../addon/tictac/tictac.php:59 +msgid "New game with handicap" +msgstr "Nou joc modificat" + +#: ../../addon/tictac/tictac.php:60 +msgid "" +"Three dimensional tic-tac-toe is just like the traditional game except that " +"it is played on multiple levels simultaneously. " +msgstr "El joc del tres en línia tridimensional és com el joc tradicional, excepte que es juga en diversos nivells simultàniament." + +#: ../../addon/tictac/tictac.php:61 +msgid "" +"In this case there are three levels. You win by getting three in a row on " +"any level, as well as up, down, and diagonally across the different levels." +msgstr "En aquest cas hi ha tres nivells. Vostè guanya per aconseguir tres en una fila en qualsevol nivell, així com dalt, baix i en diagonal a través dels diferents nivells." + +#: ../../addon/tictac/tictac.php:63 +msgid "" +"The handicap game disables the center position on the middle level because " +"the player claiming this square often has an unfair advantage." +msgstr "El joc modificat desactiva la posició central en el nivell mitjà perquè el jugador en aquesta posició té sovint un avantatge injust." + +#: ../../addon/tictac/tictac.php:182 +msgid "You go first..." +msgstr "Vostè va primer ..." + +#: ../../addon/tictac/tictac.php:187 +msgid "I'm going first this time..." +msgstr "Vaig primer aquesta vegada ..." + +#: ../../addon/tictac/tictac.php:193 +msgid "You won!" +msgstr "Has guanyat!" + +#: ../../addon/tictac/tictac.php:199 ../../addon/tictac/tictac.php:224 +msgid "\"Cat\" game!" +msgstr "Empat!" + +#: ../../addon/tictac/tictac.php:222 +msgid "I won!" +msgstr "Vaig guanyar!" + +#: ../../addon/randplace/randplace.php:171 +msgid "Randplace Settings" +msgstr "Configuració de Randplace" + +#: ../../addon/randplace/randplace.php:173 +msgid "Enable Randplace Plugin" +msgstr "Habilitar el Plugin de Randplace" + +#: ../../addon/dwpost/dwpost.php:38 +msgid "Post to Dreamwidth" +msgstr "Missatge a Dreamwidth" + +#: ../../addon/dwpost/dwpost.php:69 +msgid "Dreamwidth Post Settings" +msgstr "Configuració d'enviaments a Dreamwidth" + +#: ../../addon/dwpost/dwpost.php:71 +msgid "Enable dreamwidth Post Plugin" +msgstr "Habilitat el plugin d'enviaments a Dreamwidth" + +#: ../../addon/dwpost/dwpost.php:76 +msgid "dreamwidth username" +msgstr "Nom d'usuari a Dreamwidth" + +#: ../../addon/dwpost/dwpost.php:81 +msgid "dreamwidth password" +msgstr "Contrasenya a Dreamwidth" + +#: ../../addon/dwpost/dwpost.php:86 +msgid "Post to dreamwidth by default" +msgstr "Enviar per defecte a Dreamwidth" + +#: ../../addon/drpost/drpost.php:35 +msgid "Post to Drupal" +msgstr "Missatge a Drupal" + +#: ../../addon/drpost/drpost.php:72 +msgid "Drupal Post Settings" +msgstr "Configuració d'enviaments a Drupal" + +#: ../../addon/drpost/drpost.php:74 +msgid "Enable Drupal Post Plugin" +msgstr "Habilitar el Plugin d'Enviaments de Drupal" + +#: ../../addon/drpost/drpost.php:79 +msgid "Drupal username" +msgstr "Nom d'usuari de Drupal" + +#: ../../addon/drpost/drpost.php:84 +msgid "Drupal password" +msgstr "Contrasenya de Drupal" + +#: ../../addon/drpost/drpost.php:89 +msgid "Post Type - article,page,or blog" +msgstr "Tipus d'Enviament- article,pàgina, o blog" + +#: ../../addon/drpost/drpost.php:94 +msgid "Drupal site URL" +msgstr "URL del lloc Drupal" + +#: ../../addon/drpost/drpost.php:99 +msgid "Drupal site uses clean URLS" +msgstr "el Lloc Drupal empra URLS netes" + +#: ../../addon/drpost/drpost.php:104 +msgid "Post to Drupal by default" +msgstr "Enviar a Drupal per defecte" + +#: ../../addon/drpost/drpost.php:184 ../../addon/wppost/wppost.php:172 +#: ../../addon/posterous/posterous.php:173 +msgid "Post from Friendica" +msgstr "Enviament des de Friendica" + +#: ../../addon/geonames/geonames.php:143 +msgid "Geonames settings updated." +msgstr "Actualitzada la configuració de Geonames." + +#: ../../addon/geonames/geonames.php:179 +msgid "Geonames Settings" +msgstr "Configuració de Geonames" + +#: ../../addon/geonames/geonames.php:181 +msgid "Enable Geonames Plugin" +msgstr "Habilitar Plugin de Geonames" + +#: ../../addon/js_upload/js_upload.php:43 +msgid "Upload a file" +msgstr "Carrega un arxiu" + +#: ../../addon/js_upload/js_upload.php:44 +msgid "Drop files here to upload" +msgstr "Deixa aquí el arxiu a carregar" + +#: ../../addon/js_upload/js_upload.php:46 +msgid "Failed" +msgstr "Fracassar" + +#: ../../addon/js_upload/js_upload.php:297 +msgid "No files were uploaded." +msgstr "No hi ha arxius carregats." + +#: ../../addon/js_upload/js_upload.php:303 +msgid "Uploaded file is empty" +msgstr "L'arxiu carregat està buit" + +#: ../../addon/js_upload/js_upload.php:326 +msgid "File has an invalid extension, it should be one of " +msgstr "Arxiu té una extensió no vàlida, ha de ser una de" + +#: ../../addon/js_upload/js_upload.php:337 +msgid "Upload was cancelled, or server error encountered" +msgstr "La pujada va ser cancel.lada, o es va trobar un error de servidor" + +#: ../../addon/oembed.old/oembed.php:30 +msgid "OEmbed settings updated" +msgstr "Actualitzar la configuració OEmbed" + +#: ../../addon/oembed.old/oembed.php:43 +msgid "Use OEmbed for YouTube videos" +msgstr "Empreu OEmbed per videos YouTube" + +#: ../../addon/oembed.old/oembed.php:71 +msgid "URL to embed:" +msgstr "Adreça URL del recurs" + +#: ../../addon/impressum/impressum.php:25 +msgid "Impressum" +msgstr "Impressum" + +#: ../../addon/impressum/impressum.php:38 +#: ../../addon/impressum/impressum.php:40 +#: ../../addon/impressum/impressum.php:70 +msgid "Site Owner" +msgstr "Propietari del lloc" + +#: ../../addon/impressum/impressum.php:38 +#: ../../addon/impressum/impressum.php:74 +msgid "Email Address" +msgstr "Adreça de correu" + +#: ../../addon/impressum/impressum.php:43 +#: ../../addon/impressum/impressum.php:72 +msgid "Postal Address" +msgstr "Adreça postal" + +#: ../../addon/impressum/impressum.php:49 +msgid "" +"The impressum addon needs to be configured!
    Please add at least the " +"owner variable to your config file. For other variables please " +"refer to the README file of the addon." +msgstr "El complement impressum s'ha de configurar!
    Si us plau afegiu almenys la variable propietari al fitxer de configuració. Per a les altres variables, consulteu el fitxer README del complement." + +#: ../../addon/impressum/impressum.php:71 +msgid "Site Owners Profile" +msgstr "Perfil del Propietari del Lloc" + +#: ../../addon/impressum/impressum.php:73 +msgid "Notes" +msgstr "Notes" + +#: ../../addon/buglink/buglink.php:15 +msgid "Report Bug" +msgstr "Informar de problema" + +#: ../../addon/blockem/blockem.php:51 +msgid "\"Blockem\" Settings" +msgstr "Configuració de \"Bloqueig\"" + +#: ../../addon/blockem/blockem.php:53 +msgid "Comma separated profile URLS to block" +msgstr "URLS dels perfils a bloquejar, separats per comes" + +#: ../../addon/blockem/blockem.php:70 +msgid "BLOCKEM Settings saved." +msgstr "Guardada la configuració de BLOQUEIG." + +#: ../../addon/blockem/blockem.php:105 +#, php-format +msgid "Blocked %s - Click to open/close" +msgstr "Bloquejar %s - Clica per obrir/tancar" + +#: ../../addon/blockem/blockem.php:160 +msgid "Unblock Author" +msgstr "Desbloquejar Autor" + +#: ../../addon/blockem/blockem.php:162 +msgid "Block Author" +msgstr "Bloquejar Autor" + +#: ../../addon/blockem/blockem.php:194 +msgid "blockem settings updated" +msgstr "Actualitzar la Configuració de bloqueig" + +#: ../../addon/qcomment/qcomment.php:51 +msgid ":-)" +msgstr ":-)" + +#: ../../addon/qcomment/qcomment.php:51 +msgid ":-(" +msgstr ":-(" + +#: ../../addon/qcomment/qcomment.php:51 +msgid "lol" +msgstr "lol" + +#: ../../addon/qcomment/qcomment.php:54 +msgid "Quick Comment Settings" +msgstr "Configuració Ràpida dels Comentaris" + +#: ../../addon/qcomment/qcomment.php:56 +msgid "" +"Quick comments are found near comment boxes, sometimes hidden. Click them to" +" provide simple replies." +msgstr "Comentaris ràpids es troben prop de les caixes de comentaris, de vegades ocults. Feu clic a ells per donar respostes simples." + +#: ../../addon/qcomment/qcomment.php:57 +msgid "Enter quick comments, one per line" +msgstr "Introduïu els comentaris ràpids, un per línia" + +#: ../../addon/qcomment/qcomment.php:75 +msgid "Quick Comment settings saved." +msgstr "Guardada la configuració de comentaris ràpids." + +#: ../../addon/openstreetmap/openstreetmap.php:71 +msgid "Tile Server URL" +msgstr "URL del servidor, del mosaico de servidores" + +#: ../../addon/openstreetmap/openstreetmap.php:71 +msgid "" +"A list of public tile servers" +msgstr "Una llista de un mosaic de servidors públics" + +#: ../../addon/openstreetmap/openstreetmap.php:72 +msgid "Default zoom" +msgstr "Zoom per defecte" + +#: ../../addon/openstreetmap/openstreetmap.php:72 +msgid "The default zoom level. (1:world, 18:highest)" +msgstr "Nivell de zoom per defecte. (1: el món, 18: el més alt)" + +#: ../../addon/editplain/editplain.php:46 +msgid "Editplain settings updated." +msgstr "Actualitzar la configuració de Editplain." + +#: ../../addon/editplain/editplain.php:76 +msgid "Editplain Settings" +msgstr "Configuració de Editplain" + +#: ../../addon/editplain/editplain.php:78 +msgid "Disable richtext status editor" +msgstr "Deshabilitar l'editor d'estatus de texte enriquit" + +#: ../../addon/pageheader/pageheader.php:47 +msgid "\"pageheader\" Settings" +msgstr "Configuració de la capçalera de pàgina." + +#: ../../addon/pageheader/pageheader.php:65 +msgid "pageheader Settings saved." +msgstr "guardada la configuració de la capçalera de pàgina." + +#: ../../addon/viewsrc/viewsrc.php:25 +msgid "View Source" +msgstr "Veure les Fonts" + +#: ../../addon/statusnet/statusnet.php:134 +msgid "Post to StatusNet" +msgstr "Publica-ho a StatusNet" + +#: ../../addon/statusnet/statusnet.php:175 +msgid "" +"Please contact your site administrator.
    The provided API URL is not " +"valid." +msgstr "Si us plau, poseu-vos en contacte amb l'administrador del lloc.
    L'adreça URL de l'API proporcionada no és vàlida." + +#: ../../addon/statusnet/statusnet.php:203 +msgid "We could not contact the StatusNet API with the Path you entered." +msgstr "No hem pogut posar-nos en contacte amb l'API StatusNet amb la ruta que has introduït." + +#: ../../addon/statusnet/statusnet.php:229 +msgid "StatusNet settings updated." +msgstr "La configuració StatusNet actualitzada." + +#: ../../addon/statusnet/statusnet.php:252 +msgid "StatusNet Posting Settings" +msgstr "Configuració d'Enviaments per a StatusNet" + +#: ../../addon/statusnet/statusnet.php:266 +msgid "Globally Available StatusNet OAuthKeys" +msgstr "OAuthKeys de StatusNet Globalment Disponible" + +#: ../../addon/statusnet/statusnet.php:267 +msgid "" +"There are preconfigured OAuth key pairs for some StatusNet servers " +"available. If you are useing one of them, please use these credentials. If " +"not feel free to connect to any other StatusNet instance (see below)." +msgstr "Hi ha preconfigurats parells clau OAuth per a alguns servidors StatusNet disponibles. Si està emprant un d'ells, utilitzi aquestes credencials. Si no és així no dubteu a connectar-se a qualsevol altra instància StatusNet (veure a baix)." + +#: ../../addon/statusnet/statusnet.php:275 +msgid "Provide your own OAuth Credentials" +msgstr "Proporcioneu les vostres credencials de OAuth" + +#: ../../addon/statusnet/statusnet.php:276 +msgid "" +"No consumer key pair for StatusNet found. Register your Friendica Account as" +" an desktop client on your StatusNet account, copy the consumer key pair " +"here and enter the API base root.
    Before you register your own OAuth " +"key pair ask the administrator if there is already a key pair for this " +"Friendica installation at your favorited StatusNet installation." +msgstr "no s'ha trobat cap parell \"consumer key\" per StatusNet. Registra el teu compte Friendica com un client d'escriptori en el seu compte StatusNet, copieu el parell de \"consumer key\" aquí i entri a l'arrel de la base de l'API.
    Abans de registrar el seu parell de claus OAuth demani a l'administrador si ja hi ha un parell de claus per a aquesta instal·lació de Friendica en la instal·lació del teu favorit StatusNet." + +#: ../../addon/statusnet/statusnet.php:278 +msgid "OAuth Consumer Key" +msgstr "OAuth Consumer Key" + +#: ../../addon/statusnet/statusnet.php:281 +msgid "OAuth Consumer Secret" +msgstr "OAuth Consumer Secret" + +#: ../../addon/statusnet/statusnet.php:284 +msgid "Base API Path (remember the trailing /)" +msgstr "Base API Path (recorda deixar / al final)" + +#: ../../addon/statusnet/statusnet.php:305 +msgid "" +"To connect to your StatusNet account click the button below to get a " +"security code from StatusNet which you have to copy into the input box below" +" and submit the form. Only your public posts will be posted" +" to StatusNet." +msgstr "Per connectar al seu compte StatusNet, feu clic al botó de sota per obtenir un codi de seguretat StatusNet, que has de copiar a la casella de sota, i enviar el formulari. Només els missatges públics es publicaran en StatusNet." + +#: ../../addon/statusnet/statusnet.php:306 +msgid "Log in with StatusNet" +msgstr "Accedeixi com en StatusNet" + +#: ../../addon/statusnet/statusnet.php:308 +msgid "Copy the security code from StatusNet here" +msgstr "Copieu el codi de seguretat StatusNet aquí" + +#: ../../addon/statusnet/statusnet.php:314 +msgid "Cancel Connection Process" +msgstr "Cancel·lar el procés de connexió" + +#: ../../addon/statusnet/statusnet.php:316 +msgid "Current StatusNet API is" +msgstr "L'Actual StatusNet API és" + +#: ../../addon/statusnet/statusnet.php:317 +msgid "Cancel StatusNet Connection" +msgstr "Cancel·lar la connexió amb StatusNet" + +#: ../../addon/statusnet/statusnet.php:328 ../../addon/twitter/twitter.php:184 +msgid "Currently connected to: " +msgstr "Actualment connectat a: " + +#: ../../addon/statusnet/statusnet.php:329 +msgid "" +"If enabled all your public postings can be posted to the " +"associated StatusNet account. You can choose to do so by default (here) or " +"for every posting separately in the posting options when writing the entry." +msgstr "Si està activat, tots els seus anuncis públics poden ser publicats en el compte StatusNet associat. Vostè pot optar per fer-ho per defecte (en aquest cas) o per cada missatge per separat en les opcions de comptabilització en escriure l'entrada." + +#: ../../addon/statusnet/statusnet.php:331 +msgid "" +"Note: Due your privacy settings (Hide your profile " +"details from unknown viewers?) the link potentially included in public " +"postings relayed to StatusNet will lead the visitor to a blank page " +"informing the visitor that the access to your profile has been restricted." +msgstr "Nota: A causa de les seves opcions de privacitat (Amaga els detalls del teu perfil dels espectadors desconeguts? ) el vincle potencialment inclòs en anuncis públics transmesos a StatusNet conduirà el visitant a una pàgina en blanc en la que informarà al visitants que l'accés al seu perfil s'ha restringit." + +#: ../../addon/statusnet/statusnet.php:334 +msgid "Allow posting to StatusNet" +msgstr "Permetre enviaments a StatusNet" + +#: ../../addon/statusnet/statusnet.php:337 +msgid "Send public postings to StatusNet by default" +msgstr "Enviar missatges públics a StatusNet per defecte" + +#: ../../addon/statusnet/statusnet.php:342 ../../addon/twitter/twitter.php:198 +msgid "Clear OAuth configuration" +msgstr "Esborrar configuració de OAuth" + +#: ../../addon/statusnet/statusnet.php:524 +msgid "API URL" +msgstr "API URL" + +#: ../../addon/tumblr/tumblr.php:36 +msgid "Post to Tumblr" +msgstr "Publica-ho al Tumblr" + +#: ../../addon/tumblr/tumblr.php:67 +msgid "Tumblr Post Settings" +msgstr "Configuració d'Enviaments de Tumblr" + +#: ../../addon/tumblr/tumblr.php:69 +msgid "Enable Tumblr Post Plugin" +msgstr "Habilita el plugin de enviaments de Tumblr" + +#: ../../addon/tumblr/tumblr.php:74 +msgid "Tumblr login" +msgstr "Inici de sessió de Tumblr" + +#: ../../addon/tumblr/tumblr.php:79 +msgid "Tumblr password" +msgstr "Caontrasenya de Tumblr" + +#: ../../addon/tumblr/tumblr.php:84 +msgid "Post to Tumblr by default" +msgstr "Enviar a Tumblr per defecte" + +#: ../../addon/numfriends/numfriends.php:46 +msgid "Numfriends settings updated." +msgstr "Actualitzar la configuració de Numfriends." + +#: ../../addon/numfriends/numfriends.php:77 +msgid "Numfriends Settings" +msgstr "Configuració de Numfriends" + +#: ../../addon/numfriends/numfriends.php:79 +msgid "How many contacts to display on profile sidebar" +msgstr "Quants contactes per mostrar a la barra lateral el perfil" + +#: ../../addon/gnot/gnot.php:48 +msgid "Gnot settings updated." +msgstr "Configuració de Gnot actualitzada" + +#: ../../addon/gnot/gnot.php:79 +msgid "Gnot Settings" +msgstr "Configuració de Gnot" + +#: ../../addon/gnot/gnot.php:81 +msgid "" +"Allows threading of email comment notifications on Gmail and anonymising the" +" subject line." +msgstr "Permet crear fils de les notificacions de comentaris de correu electrònic a Gmail i anonimat de la línia d'assumpte." + +#: ../../addon/gnot/gnot.php:82 +msgid "Enable this plugin/addon?" +msgstr "Activar aquest plugin/aplicació?" + +#: ../../addon/gnot/gnot.php:97 +#, php-format +msgid "[Friendica:Notify] Comment to conversation #%d" +msgstr "[Friendica: Notifica] Conversació comentada #%d" + +#: ../../addon/wppost/wppost.php:42 +msgid "Post to Wordpress" +msgstr "Publica-ho al Wordpress" + +#: ../../addon/wppost/wppost.php:74 +msgid "WordPress Post Settings" +msgstr "Configuració d'enviaments a WordPress" + +#: ../../addon/wppost/wppost.php:76 +msgid "Enable WordPress Post Plugin" +msgstr "Habilitar Configuració d'Enviaments a WordPress" + +#: ../../addon/wppost/wppost.php:81 +msgid "WordPress username" +msgstr "Nom d'usuari de WordPress" + +#: ../../addon/wppost/wppost.php:86 +msgid "WordPress password" +msgstr "Contrasenya de WordPress" + +#: ../../addon/wppost/wppost.php:91 +msgid "WordPress API URL" +msgstr "WordPress API URL" + +#: ../../addon/wppost/wppost.php:96 +msgid "Post to WordPress by default" +msgstr "Enviar a WordPress per defecte" + +#: ../../addon/showmore/showmore.php:38 +msgid "\"Show more\" Settings" +msgstr "Configuració de \"Mostrar més\"" + +#: ../../addon/showmore/showmore.php:41 +msgid "Enable Show More" +msgstr "Habilita Mostrar Més" + +#: ../../addon/showmore/showmore.php:44 +msgid "Cutting posts after how much characters" +msgstr "Tallar els missatges després de quants caràcters" + +#: ../../addon/showmore/showmore.php:64 +msgid "Show More Settings saved." +msgstr "Guardada la configuració de \"Mostra Més\"." + +#: ../../addon/showmore/showmore.php:86 +msgid "Show More" +msgstr "Mostra Més" + +#: ../../addon/piwik/piwik.php:79 +msgid "" +"This website is tracked using the Piwik " +"analytics tool." +msgstr "Aquest lloc web realitza un seguiment mitjançant la eina d'anàlisi Piwik." + +#: ../../addon/piwik/piwik.php:82 +#, php-format +msgid "" +"If you do not want that your visits are logged this way you can" +" set a cookie to prevent Piwik from tracking further visits of the site " +"(opt-out)." +msgstr "Si no vol que les seves visites es transcribin d'aquesta manera vostè pot establir una cookie per evitar a Piwik a partir de noves visites del lloc web (opt-out)." + +#: ../../addon/piwik/piwik.php:90 +msgid "Piwik Base URL" +msgstr "URL Piwik Base" + +#: ../../addon/piwik/piwik.php:90 +msgid "" +"Absolute path to your Piwik installation. (without protocol (http/s), with " +"trailing slash)" +msgstr "Trajectoria absoluta per a la instal·lació de Piwik (sense el protocol (http/s), amb la barra final )" + +#: ../../addon/piwik/piwik.php:91 +msgid "Site ID" +msgstr "Lloc ID" + +#: ../../addon/piwik/piwik.php:92 +msgid "Show opt-out cookie link?" +msgstr "Mostra l'enllaç cookie opt-out?" + +#: ../../addon/piwik/piwik.php:93 +msgid "Asynchronous tracking" +msgstr "Seguiment asíncrono" + +#: ../../addon/twitter/twitter.php:73 +msgid "Post to Twitter" +msgstr "Publica-ho al Twitter" + +#: ../../addon/twitter/twitter.php:119 +msgid "Twitter settings updated." +msgstr "La configuració de Twitter actualitzada." + +#: ../../addon/twitter/twitter.php:141 +msgid "Twitter Posting Settings" +msgstr "Configuració d'Enviaments per a Twitter" + +#: ../../addon/twitter/twitter.php:148 +msgid "" +"No consumer key pair for Twitter found. Please contact your site " +"administrator." +msgstr "No s'ha pogut emparellar cap clau \"consumer key\" per a Twitter. Si us plau, poseu-vos en contacte amb l'administrador del lloc." + +#: ../../addon/twitter/twitter.php:167 +msgid "" +"At this Friendica instance the Twitter plugin was enabled but you have not " +"yet connected your account to your Twitter account. To do so click the " +"button below to get a PIN from Twitter which you have to copy into the input" +" box below and submit the form. Only your public posts will" +" be posted to Twitter." +msgstr "En aquesta instància Friendica el plugin Twitter va ser habilitat, però encara no ha connectat el compte al seu compte de Twitter. Per a això feu clic al botó de sota per obtenir un PIN de Twitter que ha de copiar a la casella de sota i enviar el formulari. Només els missatges públics es publicaran a Twitter." + +#: ../../addon/twitter/twitter.php:168 +msgid "Log in with Twitter" +msgstr "Accedeixi com en Twitter" + +#: ../../addon/twitter/twitter.php:170 +msgid "Copy the PIN from Twitter here" +msgstr "Copieu el codi PIN de Twitter aquí" + +#: ../../addon/twitter/twitter.php:185 +msgid "" +"If enabled all your public postings can be posted to the " +"associated Twitter account. You can choose to do so by default (here) or for" +" every posting separately in the posting options when writing the entry." +msgstr "Si està activat, tots els seus anuncis públics poden ser publicats en el corresponent compte de Twitter. Vostè pot optar per fer-ho per defecte (en aquest cas) o per cada missatge per separat en les opcions de comptabilització en escriure l'entrada." + +#: ../../addon/twitter/twitter.php:187 +msgid "" +"Note: Due your privacy settings (Hide your profile " +"details from unknown viewers?) the link potentially included in public " +"postings relayed to Twitter will lead the visitor to a blank page informing " +"the visitor that the access to your profile has been restricted." +msgstr "Nota: donada la seva configuració de privacitat ( Amaga els detalls del teu perfil dels espectadors desconeguts? ) el vincle potencialment inclòs en anuncis públics retransmesos a Twitter conduirà al visitant a una pàgina en blanc informar als visitants que l'accés al seu perfil s'ha restringit." + +#: ../../addon/twitter/twitter.php:190 +msgid "Allow posting to Twitter" +msgstr "Permetre anunci a Twitter" + +#: ../../addon/twitter/twitter.php:193 +msgid "Send public postings to Twitter by default" +msgstr "Enviar anuncis públics a Twitter per defecte" + +#: ../../addon/twitter/twitter.php:357 +msgid "Consumer key" +msgstr "Consumer key" + +#: ../../addon/twitter/twitter.php:358 +msgid "Consumer secret" +msgstr "Consumer secret" + +#: ../../addon/irc/irc.php:20 +msgid "irc Chatroom" +msgstr "irc Chatroom" + +#: ../../addon/posterous/posterous.php:36 +msgid "Post to Posterous" +msgstr "enviament a Posterous" + +#: ../../addon/posterous/posterous.php:67 +msgid "Posterous Post Settings" +msgstr "Configuració d'Enviaments a Posterous" + +#: ../../addon/posterous/posterous.php:69 +msgid "Enable Posterous Post Plugin" +msgstr "Habilitar plugin d'Enviament de Posterous" + +#: ../../addon/posterous/posterous.php:74 +msgid "Posterous login" +msgstr "Inici de sessió a Posterous" + +#: ../../addon/posterous/posterous.php:79 +msgid "Posterous password" +msgstr "Contrasenya a Posterous" + +#: ../../addon/posterous/posterous.php:84 +msgid "Post to Posterous by default" +msgstr "Enviar a Posterous per defecte" + +#: ../../view/theme/quattro/theme.php:17 +msgid "Theme settings" +msgstr "Configuració de Temes" + +#: ../../view/theme/quattro/theme.php:18 +msgid "Alignment" +msgstr "Adaptació" + +#: ../../view/theme/quattro/theme.php:18 +msgid "Left" +msgstr "Esquerra" + +#: ../../view/theme/quattro/theme.php:18 +msgid "Center" +msgstr "Centre" + +#: ../../include/profile_advanced.php:17 ../../boot.php:982 +msgid "Gender:" +msgstr "Gènere:" + +#: ../../include/profile_advanced.php:22 +msgid "j F, Y" +msgstr "j F, Y" + +#: ../../include/profile_advanced.php:23 +msgid "j F" +msgstr "j F" + +#: ../../include/profile_advanced.php:30 ../../include/datetime.php:438 +#: ../../include/items.php:1349 +msgid "Birthday:" +msgstr "Aniversari:" + +#: ../../include/profile_advanced.php:34 +msgid "Age:" +msgstr "Edat:" + +#: ../../include/profile_advanced.php:37 ../../boot.php:985 +msgid "Status:" +msgstr "Estatus:" + +#: ../../include/profile_advanced.php:45 ../../boot.php:987 +msgid "Homepage:" +msgstr "Pàgina web:" + +#: ../../include/profile_advanced.php:47 +msgid "Tags:" +msgstr "Etiquetes:" + +#: ../../include/profile_advanced.php:51 +msgid "Religion:" +msgstr "Religió:" + +#: ../../include/profile_advanced.php:53 +msgid "About:" +msgstr "Acerca de:" + +#: ../../include/profile_advanced.php:55 +msgid "Hobbies/Interests:" +msgstr "Aficiones/Intereses:" + +#: ../../include/profile_advanced.php:57 +msgid "Contact information and Social Networks:" +msgstr "Informació de contacte i Xarxes Socials:" + +#: ../../include/profile_advanced.php:59 +msgid "Musical interests:" +msgstr "Gustos musicals:" + +#: ../../include/profile_advanced.php:61 +msgid "Books, literature:" +msgstr "Llibres, literatura:" + +#: ../../include/profile_advanced.php:63 +msgid "Television:" +msgstr "Televisió:" + +#: ../../include/profile_advanced.php:65 +msgid "Film/dance/culture/entertainment:" +msgstr "Cinema/ball/cultura/entreteniments:" + +#: ../../include/profile_advanced.php:67 +msgid "Love/Romance:" +msgstr "Amor/sentiments:" + +#: ../../include/profile_advanced.php:69 +msgid "Work/employment:" +msgstr "Treball/ocupació:" + +#: ../../include/profile_advanced.php:71 +msgid "School/education:" +msgstr "Escola/formació" + +#: ../../include/contact_selectors.php:32 +msgid "Unknown | Not categorised" +msgstr "Desconegut/No categoritzat" + +#: ../../include/contact_selectors.php:33 +msgid "Block immediately" +msgstr "Bloquejar immediatament" + +#: ../../include/contact_selectors.php:34 +msgid "Shady, spammer, self-marketer" +msgstr "Sospitós, Femater, auto-publicitat" + +#: ../../include/contact_selectors.php:35 +msgid "Known to me, but no opinion" +msgstr "Conegut per mi, però sense opinió" + +#: ../../include/contact_selectors.php:36 +msgid "OK, probably harmless" +msgstr "Bé, probablement inofensiu" + +#: ../../include/contact_selectors.php:37 +msgid "Reputable, has my trust" +msgstr "Bona reputació, té la meva confiança" + +#: ../../include/contact_selectors.php:56 +msgid "Frequently" +msgstr "Freqüentment" + +#: ../../include/contact_selectors.php:57 +msgid "Hourly" +msgstr "Cada hora" + +#: ../../include/contact_selectors.php:58 +msgid "Twice daily" +msgstr "Dues vegades al dia" + +#: ../../include/contact_selectors.php:59 +msgid "Daily" +msgstr "Diari" + +#: ../../include/contact_selectors.php:60 +msgid "Weekly" +msgstr "Setmanal" + +#: ../../include/contact_selectors.php:61 +msgid "Monthly" +msgstr "Mensual" + +#: ../../include/contact_selectors.php:77 +msgid "OStatus" +msgstr "OStatus" + +#: ../../include/contact_selectors.php:78 +msgid "RSS/Atom" +msgstr "RSS/Atom" + +#: ../../include/contact_selectors.php:82 +msgid "Zot!" +msgstr "Zot!" + +#: ../../include/contact_selectors.php:83 +msgid "LinkedIn" +msgstr "LinkedIn" + +#: ../../include/contact_selectors.php:84 +msgid "XMPP/IM" +msgstr "XMPP/IM" + +#: ../../include/contact_selectors.php:85 +msgid "MySpace" +msgstr "MySpace" + +#: ../../include/profile_selectors.php:6 +msgid "Male" +msgstr "Home" + +#: ../../include/profile_selectors.php:6 +msgid "Female" +msgstr "Dona" + +#: ../../include/profile_selectors.php:6 +msgid "Currently Male" +msgstr "Actualment Home" + +#: ../../include/profile_selectors.php:6 +msgid "Currently Female" +msgstr "Actualment Dona" + +#: ../../include/profile_selectors.php:6 +msgid "Mostly Male" +msgstr "Habitualment Home" + +#: ../../include/profile_selectors.php:6 +msgid "Mostly Female" +msgstr "Habitualment Dona" + +#: ../../include/profile_selectors.php:6 +msgid "Transgender" +msgstr "Transgènere" + +#: ../../include/profile_selectors.php:6 +msgid "Intersex" +msgstr "Bisexual" + +#: ../../include/profile_selectors.php:6 +msgid "Transsexual" +msgstr "Transexual" + +#: ../../include/profile_selectors.php:6 +msgid "Hermaphrodite" +msgstr "Hermafrodita" + +#: ../../include/profile_selectors.php:6 +msgid "Neuter" +msgstr "Neutre" + +#: ../../include/profile_selectors.php:6 +msgid "Non-specific" +msgstr "No específicat" + +#: ../../include/profile_selectors.php:6 +msgid "Other" +msgstr "Altres" + +#: ../../include/profile_selectors.php:6 +msgid "Undecided" +msgstr "No Decidit" + +#: ../../include/profile_selectors.php:19 +msgid "Males" +msgstr "Home" + +#: ../../include/profile_selectors.php:19 +msgid "Females" +msgstr "Dona" + +#: ../../include/profile_selectors.php:19 +msgid "Gay" +msgstr "Gay" + +#: ../../include/profile_selectors.php:19 +msgid "Lesbian" +msgstr "Lesbiana" + +#: ../../include/profile_selectors.php:19 +msgid "No Preference" +msgstr "Sense Preferències" + +#: ../../include/profile_selectors.php:19 +msgid "Bisexual" +msgstr "Bisexual" + +#: ../../include/profile_selectors.php:19 +msgid "Autosexual" +msgstr "Autosexual" + +#: ../../include/profile_selectors.php:19 +msgid "Abstinent" +msgstr "Abstinent/a" + +#: ../../include/profile_selectors.php:19 +msgid "Virgin" +msgstr "Verge" + +#: ../../include/profile_selectors.php:19 +msgid "Deviant" +msgstr "Desviat/da" + +#: ../../include/profile_selectors.php:19 +msgid "Fetish" +msgstr "Fetixiste" + +#: ../../include/profile_selectors.php:19 +msgid "Oodles" +msgstr "Orgies" + +#: ../../include/profile_selectors.php:19 +msgid "Nonsexual" +msgstr "Asexual" + +#: ../../include/profile_selectors.php:33 +msgid "Single" +msgstr "Solter/a" + +#: ../../include/profile_selectors.php:33 +msgid "Lonely" +msgstr "Solitari" + +#: ../../include/profile_selectors.php:33 +msgid "Available" +msgstr "Disponible" + +#: ../../include/profile_selectors.php:33 +msgid "Unavailable" +msgstr "No Disponible" + +#: ../../include/profile_selectors.php:33 +msgid "Dating" +msgstr "De cites" + +#: ../../include/profile_selectors.php:33 +msgid "Unfaithful" +msgstr "Infidel" + +#: ../../include/profile_selectors.php:33 +msgid "Sex Addict" +msgstr "Adicte al sexe" + +#: ../../include/profile_selectors.php:33 +msgid "Friends" +msgstr "Amics/Amigues" + +#: ../../include/profile_selectors.php:33 +msgid "Friends/Benefits" +msgstr "Amics íntims" + +#: ../../include/profile_selectors.php:33 +msgid "Casual" +msgstr "Oportunista" + +#: ../../include/profile_selectors.php:33 +msgid "Engaged" +msgstr "Promès" + +#: ../../include/profile_selectors.php:33 +msgid "Married" +msgstr "Casat" + +#: ../../include/profile_selectors.php:33 +msgid "Partners" +msgstr "Socis" + +#: ../../include/profile_selectors.php:33 +msgid "Cohabiting" +msgstr "Cohabitant" + +#: ../../include/profile_selectors.php:33 +msgid "Happy" +msgstr "Feliç" + +#: ../../include/profile_selectors.php:33 +msgid "Not Looking" +msgstr "No Cerco" + +#: ../../include/profile_selectors.php:33 +msgid "Swinger" +msgstr "Parella Liberal" + +#: ../../include/profile_selectors.php:33 +msgid "Betrayed" +msgstr "Traït/da" + +#: ../../include/profile_selectors.php:33 +msgid "Separated" +msgstr "Separat/da" + +#: ../../include/profile_selectors.php:33 +msgid "Unstable" +msgstr "Inestable" + +#: ../../include/profile_selectors.php:33 +msgid "Divorced" +msgstr "Divorciat/da" + +#: ../../include/profile_selectors.php:33 +msgid "Widowed" +msgstr "Vidu/a" + +#: ../../include/profile_selectors.php:33 +msgid "Uncertain" +msgstr "Incert" + +#: ../../include/profile_selectors.php:33 +msgid "Complicated" +msgstr "Complicat" + +#: ../../include/profile_selectors.php:33 +msgid "Don't care" +msgstr "No t'interessa" + +#: ../../include/profile_selectors.php:33 +msgid "Ask me" +msgstr "Pregunta'm" + +#: ../../include/event.php:17 ../../include/bb2diaspora.php:244 +msgid "Starts:" +msgstr "Inici:" + +#: ../../include/event.php:27 ../../include/bb2diaspora.php:252 +msgid "Finishes:" +msgstr "Acaba:" + +#: ../../include/delivery.php:425 ../../include/notifier.php:638 +msgid "(no subject)" +msgstr "(sense assumpte)" + +#: ../../include/delivery.php:432 ../../include/enotify.php:17 +#: ../../include/notifier.php:645 +msgid "noreply" +msgstr "no contestar" + +#: ../../include/text.php:238 +msgid "prev" +msgstr "Prev" + +#: ../../include/text.php:240 +msgid "first" +msgstr "primer" + +#: ../../include/text.php:269 +msgid "last" +msgstr "Últim" + +#: ../../include/text.php:272 +msgid "next" +msgstr "Proper" + +#: ../../include/text.php:563 +msgid "No contacts" +msgstr "Sense contactes" + +#: ../../include/text.php:572 +#, php-format +msgid "%d Contact" +msgid_plural "%d Contacts" +msgstr[0] "%d Contacte" +msgstr[1] "%d Contactes" + +#: ../../include/text.php:643 ../../include/nav.php:87 +msgid "Search" +msgstr "Cercar" + +#: ../../include/text.php:831 +msgid "Monday" +msgstr "Dilluns" + +#: ../../include/text.php:831 +msgid "Tuesday" +msgstr "Dimarts" + +#: ../../include/text.php:831 +msgid "Wednesday" +msgstr "Dimecres" + +#: ../../include/text.php:831 +msgid "Thursday" +msgstr "Dijous" + +#: ../../include/text.php:831 +msgid "Friday" +msgstr "Divendres" + +#: ../../include/text.php:831 +msgid "Saturday" +msgstr "Dissabte" + +#: ../../include/text.php:831 +msgid "Sunday" +msgstr "Diumenge" + +#: ../../include/text.php:835 +msgid "January" +msgstr "Gener" + +#: ../../include/text.php:835 +msgid "February" +msgstr "Febrer" + +#: ../../include/text.php:835 +msgid "March" +msgstr "Març" + +#: ../../include/text.php:835 +msgid "April" +msgstr "Abril" + +#: ../../include/text.php:835 +msgid "May" +msgstr "Maig" + +#: ../../include/text.php:835 +msgid "June" +msgstr "Juny" + +#: ../../include/text.php:835 +msgid "July" +msgstr "Juliol" + +#: ../../include/text.php:835 +msgid "August" +msgstr "Agost" + +#: ../../include/text.php:835 +msgid "September" +msgstr "Setembre" + +#: ../../include/text.php:835 +msgid "October" +msgstr "Octubre" + +#: ../../include/text.php:835 +msgid "November" +msgstr "Novembre" + +#: ../../include/text.php:835 +msgid "December" +msgstr "Desembre" + +#: ../../include/text.php:905 +msgid "bytes" +msgstr "bytes" + +#: ../../include/text.php:1000 +msgid "Select an alternate language" +msgstr "Sel·lecciona un idioma alternatiu" + +#: ../../include/text.php:1012 +msgid "default" +msgstr "per defecte" + +#: ../../include/text.php:1228 +msgid "activity" +msgstr "activitat" + +#: ../../include/text.php:1230 +msgid "comment" +msgstr "comentari" + +#: ../../include/text.php:1231 +msgid "post" +msgstr "missatge" + +#: ../../include/diaspora.php:570 +msgid "Sharing notification from Diaspora network" +msgstr "Compartint la notificació de la xarxa Diàspora" + +#: ../../include/diaspora.php:1911 +msgid "Attachments:" +msgstr "Adjunts:" + +#: ../../include/diaspora.php:2094 +#, php-format +msgid "[Relayed] Comment authored by %s from network %s" +msgstr "[Retransmès] Comentari escrit per %s des de la xarxa %s" + +#: ../../include/network.php:814 +msgid "view full size" +msgstr "Veure a mida completa" + +#: ../../include/oembed.php:128 +msgid "Embedded content" +msgstr "Contingut incrustat" + +#: ../../include/oembed.php:137 +msgid "Embedding disabled" +msgstr "Incrustacions deshabilitades" + +#: ../../include/group.php:25 +msgid "" +"A deleted group with this name was revived. Existing item permissions " +"may apply to this group and any future members. If this is " +"not what you intended, please create another group with a different name." +msgstr "Un grup eliminat amb aquest nom va ser restablert. Els permisos dels elements existents poden aplicar-se a aquest grup i tots els futurs membres. Si això no és el que pretén, si us plau, crei un altre grup amb un nom diferent." + +#: ../../include/group.php:168 +msgid "Everybody" +msgstr "Tothom" + +#: ../../include/group.php:191 +msgid "edit" +msgstr "editar" + +#: ../../include/group.php:212 +msgid "Groups" +msgstr "Grups" + +#: ../../include/group.php:213 +msgid "Edit group" +msgstr "Editar grup" + +#: ../../include/group.php:214 +msgid "Create a new group" +msgstr "Crear un nou grup" + +#: ../../include/nav.php:44 ../../boot.php:709 +msgid "Logout" +msgstr "Sortir" + +#: ../../include/nav.php:44 +msgid "End this session" +msgstr "Termina sessió" + +#: ../../include/nav.php:47 ../../boot.php:1331 +msgid "Status" +msgstr "Estatus" + +#: ../../include/nav.php:47 ../../include/nav.php:111 +msgid "Your posts and conversations" +msgstr "Els teus anuncis i converses" + +#: ../../include/nav.php:48 +msgid "Your profile page" +msgstr "La seva pàgina de perfil" + +#: ../../include/nav.php:49 ../../boot.php:1341 +msgid "Photos" +msgstr "Fotos" + +#: ../../include/nav.php:49 +msgid "Your photos" +msgstr "Les seves fotos" + +#: ../../include/nav.php:50 +msgid "Your events" +msgstr "Els seus esdeveniments" + +#: ../../include/nav.php:51 +msgid "Personal notes" +msgstr "Notes personals" + +#: ../../include/nav.php:51 +msgid "Your personal photos" +msgstr "Les seves fotos personals" + +#: ../../include/nav.php:62 +msgid "Sign in" +msgstr "Accedeix" + +#: ../../include/nav.php:73 +msgid "Home Page" +msgstr "Pàgina d'Inici" + +#: ../../include/nav.php:77 +msgid "Create an account" +msgstr "Crear un compte" + +#: ../../include/nav.php:82 +msgid "Help and documentation" +msgstr "Ajuda i documentació" + +#: ../../include/nav.php:85 +msgid "Apps" +msgstr "Aplicacions" + +#: ../../include/nav.php:85 +msgid "Addon applications, utilities, games" +msgstr "Afegits: aplicacions, utilitats, jocs" + +#: ../../include/nav.php:87 +msgid "Search site content" +msgstr "Busca contingut en el lloc" + +#: ../../include/nav.php:97 +msgid "Conversations on this site" +msgstr "Converses en aquest lloc" + +#: ../../include/nav.php:99 +msgid "Directory" +msgstr "Directori" + +#: ../../include/nav.php:99 +msgid "People directory" +msgstr "Directori de gent" + +#: ../../include/nav.php:109 +msgid "Conversations from your friends" +msgstr "Converses dels teus amics" + +#: ../../include/nav.php:117 +msgid "Friend Requests" +msgstr "Sol·licitud d'Amistat" + +#: ../../include/nav.php:119 +msgid "See all notifications" +msgstr "Veure totes les notificacions" + +#: ../../include/nav.php:120 +msgid "Mark all system notifications seen" +msgstr "Marcar totes les notificacions del sistema com a vistes" + +#: ../../include/nav.php:124 +msgid "Private mail" +msgstr "Correu privat" + +#: ../../include/nav.php:127 +msgid "Manage" +msgstr "Gestionar" + +#: ../../include/nav.php:127 +msgid "Manage other pages" +msgstr "Gestiona altres pàgines" + +#: ../../include/nav.php:131 ../../boot.php:940 +msgid "Profiles" +msgstr "Perfils" + +#: ../../include/nav.php:131 ../../boot.php:940 +msgid "Manage/edit profiles" +msgstr "Gestiona/edita perfils" + +#: ../../include/nav.php:132 +msgid "Manage/edit friends and contacts" +msgstr "Gestiona/edita amics i contactes" + +#: ../../include/nav.php:139 +msgid "Admin" +msgstr "Admin" + +#: ../../include/nav.php:139 +msgid "Site setup and configuration" +msgstr "Ajustos i configuració del lloc" + +#: ../../include/nav.php:162 +msgid "Nothing new here" +msgstr "Res nou aquí" + +#: ../../include/contact_widgets.php:6 +msgid "Add New Contact" +msgstr "Afegir Nou Contacte" + +#: ../../include/contact_widgets.php:7 +msgid "Enter address or web location" +msgstr "Introdueixi adreça o ubicació web" + +#: ../../include/contact_widgets.php:8 +msgid "Example: bob@example.com, http://example.com/barbara" +msgstr "Exemple: bob@example.com, http://example.com/barbara" + +#: ../../include/contact_widgets.php:18 +msgid "Invite Friends" +msgstr "Invita Amics" + +#: ../../include/contact_widgets.php:24 +#, php-format +msgid "%d invitation available" +msgid_plural "%d invitations available" +msgstr[0] "%d invitació disponible" +msgstr[1] "%d invitacions disponibles" + +#: ../../include/contact_widgets.php:30 +msgid "Find People" +msgstr "Trobar Gent" + +#: ../../include/contact_widgets.php:31 +msgid "Enter name or interest" +msgstr "Introdueixi nom o aficions" + +#: ../../include/contact_widgets.php:32 +msgid "Connect/Follow" +msgstr "Connectar/Seguir" + +#: ../../include/contact_widgets.php:33 +msgid "Examples: Robert Morgenstein, Fishing" +msgstr "Exemples: Robert Morgenstein, Pescar" + +#: ../../include/contact_widgets.php:36 +msgid "Similar Interests" +msgstr "Aficions Similars" + +#: ../../include/contact_widgets.php:68 +msgid "Networks" +msgstr "Xarxes" + +#: ../../include/contact_widgets.php:71 +msgid "All Networks" +msgstr "totes les Xarxes" + +#: ../../include/auth.php:29 +msgid "Logged out." +msgstr "Has sortit" + +#: ../../include/datetime.php:43 ../../include/datetime.php:45 +msgid "Miscellaneous" +msgstr "Miscel·lania" + +#: ../../include/datetime.php:121 ../../include/datetime.php:253 +msgid "year" +msgstr "any" + +#: ../../include/datetime.php:126 ../../include/datetime.php:254 +msgid "month" +msgstr "mes" + +#: ../../include/datetime.php:131 ../../include/datetime.php:256 +msgid "day" +msgstr "dia" + +#: ../../include/datetime.php:244 +msgid "never" +msgstr "mai" + +#: ../../include/datetime.php:250 +msgid "less than a second ago" +msgstr "Fa menys d'un segon" + +#: ../../include/datetime.php:253 +msgid "years" +msgstr "anys" + +#: ../../include/datetime.php:254 +msgid "months" +msgstr "mesos" + +#: ../../include/datetime.php:255 +msgid "week" +msgstr "setmana" + +#: ../../include/datetime.php:255 +msgid "weeks" +msgstr "setmanes" + +#: ../../include/datetime.php:256 +msgid "days" +msgstr "dies" + +#: ../../include/datetime.php:257 +msgid "hour" +msgstr "hora" + +#: ../../include/datetime.php:257 +msgid "hours" +msgstr "hores" + +#: ../../include/datetime.php:258 +msgid "minute" +msgstr "minut" + +#: ../../include/datetime.php:258 +msgid "minutes" +msgstr "minuts" + +#: ../../include/datetime.php:259 +msgid "second" +msgstr "segon" + +#: ../../include/datetime.php:259 +msgid "seconds" +msgstr "segons" + +#: ../../include/datetime.php:267 +#, php-format +msgid "%1$d %2$s ago" +msgstr " fa %1$d %2$s" + +#: ../../include/poller.php:513 +msgid "From: " +msgstr "Des de:" + +#: ../../include/bbcode.php:202 +msgid "$1 wrote:" +msgstr "$1 va escrivir:" + +#: ../../include/bbcode.php:216 ../../include/bbcode.php:282 +msgid "Image/photo" +msgstr "Imatge/foto" + +#: ../../include/dba.php:39 +#, php-format +msgid "Cannot locate DNS info for database server '%s'" +msgstr "No put trobar informació de DNS del servidor de base de dades '%s'" + +#: ../../include/message.php:14 +msgid "[no subject]" +msgstr "[Sense assumpte]" + +#: ../../include/acl_selectors.php:284 +msgid "Visible to everybody" +msgstr "Visible per tothom" + +#: ../../include/acl_selectors.php:285 +msgid "show" +msgstr "mostra" + +#: ../../include/acl_selectors.php:286 +msgid "don't show" +msgstr "no mostris" + +#: ../../include/enotify.php:8 +msgid "Friendica Notification" +msgstr "Notificacions de Friendica" + +#: ../../include/enotify.php:11 +msgid "Thank You," +msgstr "Gràcies," + +#: ../../include/enotify.php:13 +#, php-format +msgid "%s Administrator" +msgstr "%s Administrador" + +#: ../../include/enotify.php:29 +#, php-format +msgid "%s " +msgstr "%s " + +#: ../../include/enotify.php:33 +#, php-format +msgid "[Friendica:Notify] New mail received at %s" +msgstr "[Friendica: Notifica] nou correu rebut a %s" + +#: ../../include/enotify.php:35 +#, php-format +msgid "%s sent you a new private message at %s." +msgstr "%s t'ha enviat un nou missatge privat en %s" + +#: ../../include/enotify.php:36 +#, php-format +msgid "%s sent you %s." +msgstr "%s t'ha enviat %s." + +#: ../../include/enotify.php:36 +msgid "a private message" +msgstr "un missatge privat" + +#: ../../include/enotify.php:37 +#, php-format +msgid "Please visit %s to view and/or reply to your private messages." +msgstr "Per favor, visiteu %s per a veure i/o respondre els teus missatges privats." + +#: ../../include/enotify.php:67 +#, php-format +msgid "%s's" +msgstr "%s's" + +#: ../../include/enotify.php:71 +msgid "your" +msgstr "tu" + +#: ../../include/enotify.php:78 +#, php-format +msgid "[Friendica:Notify] Comment to conversation #%d by %s" +msgstr "[Friendica:Notifica] Conversació comentada #%d per %s" + +#: ../../include/enotify.php:79 +#, php-format +msgid "%s commented on an item/conversation you have been following." +msgstr "%s ha comentat un element/conversació que estas seguint." + +#: ../../include/enotify.php:80 +#, php-format +msgid "%s commented on %s." +msgstr "%s comentat a %s." + +#: ../../include/enotify.php:82 ../../include/enotify.php:95 +#: ../../include/enotify.php:106 ../../include/enotify.php:117 +#, php-format +msgid "Please visit %s to view and/or reply to the conversation." +msgstr "Si us pau, visiteu %s per a veure i/o respondre la conversació." + +#: ../../include/enotify.php:89 +#, php-format +msgid "[Friendica:Notify] %s posted to your profile wall" +msgstr "[Friendica:Notifica] %s enviat al teu mur del perfil" + +#: ../../include/enotify.php:91 +#, php-format +msgid "%s posted to your profile wall at %s" +msgstr "%s enviat al teu mur de perfil %s" + +#: ../../include/enotify.php:93 +#, php-format +msgid "%s posted to %s" +msgstr "%s enviat a %s" + +#: ../../include/enotify.php:93 +msgid "your profile wall." +msgstr "El teu perfil del mur." + +#: ../../include/enotify.php:102 +#, php-format +msgid "[Friendica:Notify] %s tagged you" +msgstr "[Friendica:Notifica] %s t'ha etiquetat" + +#: ../../include/enotify.php:103 +#, php-format +msgid "%s tagged you at %s" +msgstr "%s t'ha etiquetat en %s" + +#: ../../include/enotify.php:104 +#, php-format +msgid "%s %s." +msgstr "%s %s." + +#: ../../include/enotify.php:104 +msgid "tagged you" +msgstr "Etiquetat" + +#: ../../include/enotify.php:113 +#, php-format +msgid "[Friendica:Notify] %s tagged your post" +msgstr "[Friendica:Notifica] %s ha etiquetat el teu missatge" + +#: ../../include/enotify.php:114 +#, php-format +msgid "%s tagged your post at %s" +msgstr "%s Ha etiquetat un missatge teu en %s" + +#: ../../include/enotify.php:115 +#, php-format +msgid "%s tagged %s" +msgstr "%s etiquetat %s" + +#: ../../include/enotify.php:115 +msgid "your post" +msgstr "El teu missatge" + +#: ../../include/enotify.php:124 +msgid "[Friendica:Notify] Introduction received" +msgstr "[Friendica:Notifica] Presentacio rebuda" + +#: ../../include/enotify.php:125 +#, php-format +msgid "You've received an introduction from '%s' at %s" +msgstr "Has rebut una presentació de %s en %s" + +#: ../../include/enotify.php:126 +#, php-format +msgid "You've received %s from %s." +msgstr "Has rebut %s de %s" + +#: ../../include/enotify.php:126 +msgid "an introduction" +msgstr "Una presentació" + +#: ../../include/enotify.php:127 ../../include/enotify.php:144 +#, php-format +msgid "You may visit their profile at %s" +msgstr "Pot visitar el seu perfil en %s" + +#: ../../include/enotify.php:129 +#, php-format +msgid "Please visit %s to approve or reject the introduction." +msgstr "Si us plau visiteu %s per aprovar o rebutjar la presentació." + +#: ../../include/enotify.php:136 +msgid "[Friendica:Notify] Friend suggestion received" +msgstr "[Friendica:Notifica] Suggerencia d'amistat rebuda" + +#: ../../include/enotify.php:137 +#, php-format +msgid "You've received a friend suggestion from '%s' at %s" +msgstr "Has rebut una suggerencia d'amistat de %s en %s" + +#: ../../include/enotify.php:138 +#, php-format +msgid "You've received %s for %s from %s." +msgstr "Has rebut %s per %s de %s." + +#: ../../include/enotify.php:139 +msgid "a friend suggestion" +msgstr "Un suggerencia d'amistat" + +#: ../../include/enotify.php:142 +msgid "Name:" +msgstr "Nom:" + +#: ../../include/enotify.php:143 +msgid "Photo:" +msgstr "Foto:" + +#: ../../include/enotify.php:146 +#, php-format +msgid "Please visit %s to approve or reject the suggestion." +msgstr "Si us plau, visiteu %s per aprovar o rebutjar la suggerencia." + +#: ../../include/items.php:2573 +msgid "A new person is sharing with you at " +msgstr "Una persona nova està compartint amb tú en" + +#: ../../include/items.php:2573 +msgid "You have a new follower at " +msgstr "Tens un nou seguidor a " + +#: ../../include/bb2diaspora.php:102 ../../include/bb2diaspora.php:112 +#: ../../include/bb2diaspora.php:113 +msgid "image/photo" +msgstr "Imatge/foto" + +#: ../../include/security.php:20 +msgid "Welcome " +msgstr "Benvingut" + +#: ../../include/security.php:21 +msgid "Please upload a profile photo." +msgstr "Per favor, carrega una foto per al perfil" + +#: ../../include/security.php:24 +msgid "Welcome back " +msgstr "Benvingut de nou " + +#: ../../include/Contact.php:131 ../../include/conversation.php:788 +msgid "View status" +msgstr "Veure estatus" + +#: ../../include/Contact.php:132 ../../include/conversation.php:789 +msgid "View profile" +msgstr "Veure perfil" + +#: ../../include/Contact.php:133 ../../include/conversation.php:790 +msgid "View photos" +msgstr "Veure fotos" + +#: ../../include/Contact.php:134 ../../include/Contact.php:147 +#: ../../include/conversation.php:791 +msgid "View recent" +msgstr "Veure recent" + +#: ../../include/Contact.php:136 ../../include/Contact.php:147 +#: ../../include/conversation.php:793 +msgid "Send PM" +msgstr "Enviar Missatge Privat" + +#: ../../include/conversation.php:163 +msgid "post/item" +msgstr "anunci/element" + +#: ../../include/conversation.php:164 +#, php-format +msgid "%1$s marked %2$s's %3$s as favorite" +msgstr "%1$s marcat %2$s's %3$s com favorit" + +#: ../../include/conversation.php:303 ../../include/conversation.php:572 +msgid "Select" +msgstr "Selecionar" + +#: ../../include/conversation.php:320 ../../include/conversation.php:665 +#: ../../include/conversation.php:666 +#, php-format +msgid "View %s's profile @ %s" +msgstr "Veure perfil de %s @ %s" + +#: ../../include/conversation.php:330 ../../include/conversation.php:677 +#, php-format +msgid "%s from %s" +msgstr "%s des de %s" + +#: ../../include/conversation.php:346 +msgid "View in context" +msgstr "Veure en context" + +#: ../../include/conversation.php:467 +#, php-format +msgid "%d comment" +msgid_plural "%d comments" +msgstr[0] "%d comentari" +msgstr[1] "%d comentaris" + +#: ../../include/conversation.php:468 ../../boot.php:448 +msgid "show more" +msgstr "Mostrar més" + +#: ../../include/conversation.php:529 +msgid "like" +msgstr "Agrada" + +#: ../../include/conversation.php:530 +msgid "dislike" +msgstr "Desagrada" + +#: ../../include/conversation.php:532 +msgid "Share this" +msgstr "Compartir això" + +#: ../../include/conversation.php:532 +msgid "share" +msgstr "Compartir" + +#: ../../include/conversation.php:582 +msgid "add star" +msgstr "Afegir a favorits" + +#: ../../include/conversation.php:583 +msgid "remove star" +msgstr "Esborrar favorit" + +#: ../../include/conversation.php:584 +msgid "toggle star status" +msgstr "Canviar estatus de favorit" + +#: ../../include/conversation.php:587 +msgid "starred" +msgstr "favorit" + +#: ../../include/conversation.php:588 +msgid "add tag" +msgstr "afegir etiqueta" + +#: ../../include/conversation.php:667 +msgid "to" +msgstr "a" + +#: ../../include/conversation.php:668 +msgid "Wall-to-Wall" +msgstr "Mur-a-Mur" + +#: ../../include/conversation.php:669 +msgid "via Wall-To-Wall:" +msgstr "via Mur-a-Mur" + +#: ../../include/conversation.php:713 +msgid "Delete Selected Items" +msgstr "Esborra els Elements Seleccionats" + +#: ../../include/conversation.php:845 +#, php-format +msgid "%s likes this." +msgstr "a %s agrada això." + +#: ../../include/conversation.php:845 +#, php-format +msgid "%s doesn't like this." +msgstr "a %s desagrada això." + +#: ../../include/conversation.php:849 +#, php-format +msgid "%2$d people like this." +msgstr "Li agrada a%2$d persones ." + +#: ../../include/conversation.php:851 +#, php-format +msgid "%2$d people don't like this." +msgstr "No li agrada%2$d persones ." + +#: ../../include/conversation.php:857 +msgid "and" +msgstr "i" + +#: ../../include/conversation.php:860 +#, php-format +msgid ", and %d other people" +msgstr ", i altres %d persones" + +#: ../../include/conversation.php:861 +#, php-format +msgid "%s like this." +msgstr "a %s le gusta esto." + +#: ../../include/conversation.php:861 +#, php-format +msgid "%s don't like this." +msgstr "a %s no le gusta esto." + +#: ../../include/conversation.php:886 +msgid "Visible to everybody" +msgstr "Visible per a tothom" + +#: ../../include/conversation.php:888 +msgid "Please enter a video link/URL:" +msgstr "Per favor , introdueixi el enllaç/URL del video" + +#: ../../include/conversation.php:889 +msgid "Please enter an audio link/URL:" +msgstr "Per favor , introdueixi el enllaç/URL del audio:" + +#: ../../include/conversation.php:890 +msgid "Tag term:" +msgstr "Terminis de l'etiqueta:" + +#: ../../include/conversation.php:891 +msgid "Where are you right now?" +msgstr "On ets ara?" + +#: ../../include/conversation.php:892 +msgid "Enter a title for this item" +msgstr "Escriviu un títol per a aquest article" + +#: ../../include/conversation.php:935 +msgid "upload photo" +msgstr "carregar fotos" + +#: ../../include/conversation.php:937 +msgid "attach file" +msgstr "adjuntar arxiu" + +#: ../../include/conversation.php:939 +msgid "web link" +msgstr "enllaç de web" + +#: ../../include/conversation.php:940 +msgid "Insert video link" +msgstr "Insertar enllaç de video" + +#: ../../include/conversation.php:941 +msgid "video link" +msgstr "enllaç de video" + +#: ../../include/conversation.php:942 +msgid "Insert audio link" +msgstr "Insertar enllaç de audio" + +#: ../../include/conversation.php:943 +msgid "audio link" +msgstr "enllaç de audio" + +#: ../../include/conversation.php:945 +msgid "set location" +msgstr "establir la ubicació" + +#: ../../include/conversation.php:947 +msgid "clear location" +msgstr "netejar ubicació" + +#: ../../include/conversation.php:952 +msgid "permissions" +msgstr "Permissos" + +#: ../../boot.php:446 +msgid "Delete this item?" +msgstr "Esborrar aquest element?" + +#: ../../boot.php:449 +msgid "show fewer" +msgstr "Mostrar menys" + +#: ../../boot.php:692 +msgid "Create a New Account" +msgstr "Crear un Nou Compte" + +#: ../../boot.php:712 +msgid "Nickname or Email address: " +msgstr "Malnom o Adreça de correu:" + +#: ../../boot.php:713 +msgid "Password: " +msgstr "Contrasenya:" + +#: ../../boot.php:716 +msgid "Or login using OpenID: " +msgstr "O accedixi emprant OpenID:" + +#: ../../boot.php:722 +msgid "Forgot your password?" +msgstr "Oblidà la contrasenya?" + +#: ../../boot.php:879 +msgid "Edit profile" +msgstr "Editar perfil" + +#: ../../boot.php:1046 ../../boot.php:1117 +msgid "g A l F d" +msgstr "g A l F d" + +#: ../../boot.php:1047 ../../boot.php:1118 +msgid "F d" +msgstr "F d" + +#: ../../boot.php:1072 +msgid "Birthday Reminders" +msgstr "Recordatori d'Aniversaris" + +#: ../../boot.php:1073 +msgid "Birthdays this week:" +msgstr "Aniversari aquesta setmana" + +#: ../../boot.php:1096 ../../boot.php:1160 +msgid "[today]" +msgstr "[avui]" + +#: ../../boot.php:1141 +msgid "Event Reminders" +msgstr "Recordatori d'Esdeveniments" + +#: ../../boot.php:1142 +msgid "Events this week:" +msgstr "Esdeveniments aquesta setmana" + +#: ../../boot.php:1154 +msgid "[No description]" +msgstr "[sense descripció]" diff --git a/view/ca/passchanged_eml.tpl b/view/ca/passchanged_eml.tpl new file mode 100755 index 000000000..22e54b8c0 --- /dev/null +++ b/view/ca/passchanged_eml.tpl @@ -0,0 +1,19 @@ + +Apreciat/da $username, + + La teva contrasenya ha estat modificada com has sol·licitat. Pren nota d'aquesta informació +(o canvía immediatament la contrasenya amb quelcom que recordis). + + +Les teves dades d'accés son les següents: + +Lloc: $siteurl +Nom: $email +Contrasenya: $new_password + +Després d'accedir pots canviar la contrasenya des de la pàgina de configuració del teu perfil. + + + $sitename + + diff --git a/view/ca/register_open_eml.tpl b/view/ca/register_open_eml.tpl new file mode 100755 index 000000000..0170c98e3 --- /dev/null +++ b/view/ca/register_open_eml.tpl @@ -0,0 +1,22 @@ + +Apreciat/da $username, + + Gràcies per registrar-te en $sitename. El teu compte ha estat creat. + + +Les dades d'accés són les següents: + + +Lloc: $siteurl +Nom: $email +Contrasenya: $password + + +Després d'accedir pots canviar la teva contrasenya a la pàgina de "Configuració". + +Pren un moment per revisar les altres configuracions del compte en aquesta pàgina. + + +Gràcies i benvingut/da $sitename. + + diff --git a/view/ca/register_verify_eml.tpl b/view/ca/register_verify_eml.tpl new file mode 100755 index 000000000..3dd966e0a --- /dev/null +++ b/view/ca/register_verify_eml.tpl @@ -0,0 +1,23 @@ + +S'ha rebut la sol·licitud de registre d'un nou usuari en +$sitename que requereix la teva aprovació. + +Les dades d'accés són els següents: + +Nom Complet: $username +Lloc: $siteurl +Nom: $email + + +Per aprovar aquesta sol·licitud, visita el següent enllaç: + +$siteurl/regmod/allow/$hash + +Per denegar la sol·licitud i eliminar el compte, per favor visita: + +$siteurl/regmod/deny/$hash + + +Gràcies. + + diff --git a/view/ca/request_notify_eml.tpl b/view/ca/request_notify_eml.tpl new file mode 100755 index 000000000..276624aae --- /dev/null +++ b/view/ca/request_notify_eml.tpl @@ -0,0 +1,13 @@ + +Apreciat/da $myname, + +Acabes de rebre una sol·licitud de connexió de '$requestor' en $sitename. + +Pots visitar el seu perfil en $url. + +Accedeix al teu lloc per a veure la presentació completa i acceptar o ignorar/cancel·lar la sol·licitud. + +$siteurl + + + $sitename diff --git a/view/ca/strings.php b/view/ca/strings.php new file mode 100755 index 000000000..e5aed8be6 --- /dev/null +++ b/view/ca/strings.php @@ -0,0 +1,1425 @@ +strings["Post successful."] = "Publicat amb éxit."; +$a->strings["[Embedded content - reload page to view]"] = "[Contingut embegut - recarrega la pàgina per a veure-ho]"; +$a->strings["Contact settings applied."] = "Ajustos de Contacte aplicats."; +$a->strings["Contact update failed."] = "Fracassà l'actualització de Contacte"; +$a->strings["Permission denied."] = "Permís denegat."; +$a->strings["Contact not found."] = "Contacte no trobat"; +$a->strings["Repair Contact Settings"] = "Reposar els ajustos de Contacte"; +$a->strings["WARNING: This is highly advanced and if you enter incorrect information your communications with this contact may stop working."] = "ADVERTÈNCIA: Això és molt avançat i si s'introdueix informació incorrecta la seva comunicació amb aquest contacte pot deixar de funcionar."; +$a->strings["Please use your browser 'Back' button now if you are uncertain what to do on this page."] = "Si us plau, prem el botó 'Tornar' ara si no saps segur que has de fer aqui."; +$a->strings["Return to contact editor"] = "Tornar al editor de contactes"; +$a->strings["Name"] = "Nom"; +$a->strings["Account Nickname"] = "Malnom de Compte"; +$a->strings["@Tagname - overrides Name/Nickname"] = "@Tagname - té prel·lació sobre Nom/Malnom"; +$a->strings["Account URL"] = "Adreça URL del Compte"; +$a->strings["Friend Request URL"] = "Adreça URL de sol·licitud d'Amistat"; +$a->strings["Friend Confirm URL"] = "Adreça URL de confirmació d'Amic"; +$a->strings["Notification Endpoint URL"] = "Adreça URL de Notificació"; +$a->strings["Poll/Feed URL"] = "Adreça de Enquesta/Alimentador"; +$a->strings["New photo from this URL"] = "Nova foto d'aquesta URL"; +$a->strings["Submit"] = "Enviar"; +$a->strings["Help:"] = "Ajuda:"; +$a->strings["Help"] = "Ajuda"; +$a->strings["Not Found"] = "No trobat"; +$a->strings["Page not found."] = "Pàgina no trobada."; +$a->strings["File exceeds size limit of %d"] = "L'arxiu excedeix la mida límit de %d"; +$a->strings["File upload failed."] = "La càrrega de fitxers ha fallat."; +$a->strings["Friend suggestion sent."] = "Enviat suggeriment d'amic."; +$a->strings["Suggest Friends"] = "Suggerir Amics"; +$a->strings["Suggest a friend for %s"] = "Suggerir una amic per a %s"; +$a->strings["Event description and start time are required."] = "Es requereix descripció de l'esdeveniment i l'hora d'inici."; +$a->strings["l, F j"] = "l, F j"; +$a->strings["Edit event"] = "Editar esdeveniment"; +$a->strings["link to source"] = "Enllaç al origen"; +$a->strings["Events"] = "Esdeveniments"; +$a->strings["Create New Event"] = "Crear un nou esdeveniment"; +$a->strings["Previous"] = "Previ"; +$a->strings["Next"] = "Proper"; +$a->strings["hour:minute"] = "hora:minut"; +$a->strings["Event details"] = "Detalls del esdeveniment"; +$a->strings["Format is %s %s. Starting date and Description are required."] = "El format és %s %s. Es requereix Data d'inici i Descripció."; +$a->strings["Event Starts:"] = "Inici d'Esdeveniment:"; +$a->strings["Finish date/time is not known or not relevant"] = "La data/hora de finalització no es coneixen o no són relevants"; +$a->strings["Event Finishes:"] = "L'esdeveniment Finalitza:"; +$a->strings["Adjust for viewer timezone"] = "Ajustar a la zona horaria de l'espectador"; +$a->strings["Description:"] = "Descripció:"; +$a->strings["Location:"] = "Ubicació:"; +$a->strings["Share this event"] = "Compartir aquest esdeveniment"; +$a->strings["Cancel"] = "Cancel·lar"; +$a->strings["Tag removed"] = "Etiqueta eliminada"; +$a->strings["Remove Item Tag"] = "Esborrar etiqueta del element"; +$a->strings["Select a tag to remove: "] = "Selecciona etiqueta a esborrar:"; +$a->strings["Remove"] = "Esborrar"; +$a->strings["%s welcomes %s"] = "%s Benvingut %s"; +$a->strings["Authorize application connection"] = "Autoritzi la connexió de aplicacions"; +$a->strings["Return to your app and insert this Securty Code:"] = "Torni a la seva aplicació i inserti aquest Codi de Seguretat:"; +$a->strings["Please login to continue."] = "Per favor, accedeixi per a continuar."; +$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Vol autoritzar a aquesta aplicació per accedir als teus missatges i contactes, i/o crear nous enviaments per a vostè?"; +$a->strings["Yes"] = "Si"; +$a->strings["No"] = "No"; +$a->strings["Photo Albums"] = "Àlbum de Fotos"; +$a->strings["Contact Photos"] = "Fotos de Contacte"; +$a->strings["Upload New Photos"] = "Actualitzar Noves Fotos"; +$a->strings["everybody"] = "tothom"; +$a->strings["Contact information unavailable"] = "Informació del Contacte no disponible"; +$a->strings["Profile Photos"] = "Fotos del Perfil"; +$a->strings["Album not found."] = "Àlbum no trobat."; +$a->strings["Delete Album"] = "Eliminar Àlbum"; +$a->strings["Delete Photo"] = "Eliminar Foto"; +$a->strings["was tagged in a"] = "Fou etiquetat a un"; +$a->strings["photo"] = "foto"; +$a->strings["by"] = "per"; +$a->strings["Image exceeds size limit of "] = "La imatge excedeix el límit de "; +$a->strings["Image file is empty."] = "El fitxer de imatge és buit."; +$a->strings["Unable to process image."] = "Incapaç de processar la imatge."; +$a->strings["Image upload failed."] = "Actualització de la imatge fracassada."; +$a->strings["Public access denied."] = "Accés públic denegat."; +$a->strings["No photos selected"] = "No s'han seleccionat fotos"; +$a->strings["Access to this item is restricted."] = "L'accés a aquest element està restringit."; +$a->strings["Upload Photos"] = "Carregar Fotos"; +$a->strings["New album name: "] = "Nou nom d'àlbum:"; +$a->strings["or existing album name: "] = "o nom d'àlbum existent:"; +$a->strings["Do not show a status post for this upload"] = "No tornis a mostrar un missatge d'estat d'aquesta pujada"; +$a->strings["Permissions"] = "Permisos"; +$a->strings["Edit Album"] = "Editar Àlbum"; +$a->strings["View Photo"] = "Veure Foto"; +$a->strings["Permission denied. Access to this item may be restricted."] = "Permís denegat. L'accés a aquest element pot estar restringit."; +$a->strings["Photo not available"] = "Foto no disponible"; +$a->strings["View photo"] = "Veure foto"; +$a->strings["Edit photo"] = "Editar foto"; +$a->strings["Use as profile photo"] = "Emprar com a foto del perfil"; +$a->strings["Private Message"] = "Missatge Privat"; +$a->strings["View Full Size"] = "Veure'l a Mida Completa"; +$a->strings["Tags: "] = "Etiquetes:"; +$a->strings["[Remove any tag]"] = "Treure etiquetes"; +$a->strings["New album name"] = "Nou nom d'àlbum"; +$a->strings["Caption"] = "Títol"; +$a->strings["Add a Tag"] = "Afegir una etiqueta"; +$a->strings["Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"] = "Exemple: @bob, @Barbara_jensen, @jim@example.com, #California, #camping"; +$a->strings["I like this (toggle)"] = "M'agrada això (canviar)"; +$a->strings["I don't like this (toggle)"] = "No m'agrada això (canviar)"; +$a->strings["Share"] = "Compartir"; +$a->strings["Please wait"] = "Si us plau esperi"; +$a->strings["This is you"] = "Aquest ets tu"; +$a->strings["Comment"] = "Comentari"; +$a->strings["Preview"] = "Vista prèvia"; +$a->strings["Delete"] = "Esborrar"; +$a->strings["View Album"] = "Veure Àlbum"; +$a->strings["Recent Photos"] = "Fotos Recents"; +$a->strings["Not available."] = "No disponible."; +$a->strings["Community"] = "Comunitat"; +$a->strings["No results."] = "Sense resultats."; +$a->strings["This is Friendica, version"] = "Això és Friendica, versió"; +$a->strings["running at web location"] = "funcionant en la ubicació web"; +$a->strings["Please visit Friendica.com to learn more about the Friendica project."] = "Si us plau, visiteu Friendica.com per obtenir més informació sobre el projecte Friendica."; +$a->strings["Bug reports and issues: please visit"] = "Pels informes d'error i problemes: si us plau, visiteu"; +$a->strings["Suggestions, praise, donations, etc. - please email \"Info\" at Friendica - dot com"] = "Suggeriments, elogis, donacions, etc si us plau escrigui a \"Info\" en Friendica - dot com"; +$a->strings["Installed plugins/addons/apps"] = "plugins/addons/apps instal·lats"; +$a->strings["No installed plugins/addons/apps"] = "plugins/addons/apps no instal·lats"; +$a->strings["Item not found"] = "Element no trobat"; +$a->strings["Edit post"] = "Editar Enviament"; +$a->strings["Post to Email"] = "Correu per enviar"; +$a->strings["Edit"] = "Editar"; +$a->strings["Upload photo"] = "Carregar foto"; +$a->strings["Attach file"] = "Adjunta fitxer"; +$a->strings["Insert web link"] = "Inserir enllaç web"; +$a->strings["Insert YouTube video"] = "Serà mostrat de forma preeminent a la pagina durant el procés de registre."; +$a->strings["Insert Vorbis [.ogg] video"] = "Inserir video Vorbis [.ogg]"; +$a->strings["Insert Vorbis [.ogg] audio"] = "Inserir audio Vorbis [.ogg]"; +$a->strings["Set your location"] = "Canvia la teva ubicació"; +$a->strings["Clear browser location"] = "neteja adreçes del navegador"; +$a->strings["Permission settings"] = "Configuració de permisos"; +$a->strings["CC: email addresses"] = "CC: Adreça de correu"; +$a->strings["Public post"] = "Enviament públic"; +$a->strings["Set title"] = "Canviar títol"; +$a->strings["Example: bob@example.com, mary@example.com"] = "Exemple: bob@example.com, mary@example.com"; +$a->strings["This introduction has already been accepted."] = "Aquesta presentació ha estat acceptada."; +$a->strings["Profile location is not valid or does not contain profile information."] = "El perfil de situació no és vàlid o no contè informació de perfil"; +$a->strings["Warning: profile location has no identifiable owner name."] = "Atenció: El perfil de situació no te nom de propietari identificable."; +$a->strings["Warning: profile location has no profile photo."] = "Atenció: El perfil de situació no te foto de perfil"; +$a->strings["%d required parameter was not found at the given location"] = array( + 0 => "%d el paràmetre requerit no es va trobar al lloc indicat", + 1 => "%d els paràmetres requerits no es van trobar allloc indicat", +); +$a->strings["Introduction complete."] = "Completada la presentació."; +$a->strings["Unrecoverable protocol error."] = "Error de protocol irrecuperable."; +$a->strings["Profile unavailable."] = "Perfil no disponible"; +$a->strings["%s has received too many connection requests today."] = "%s avui ha rebut excesives peticions de connexió. "; +$a->strings["Spam protection measures have been invoked."] = "Mesures de protecció contra spam han estat invocades."; +$a->strings["Friends are advised to please try again in 24 hours."] = "S'aconsellà els amics que probin pasades 24 hores."; +$a->strings["Invalid locator"] = "Localitzador no vàlid"; +$a->strings["Unable to resolve your name at the provided location."] = "Incapaç de resoldre el teu nom al lloc facilitat."; +$a->strings["You have already introduced yourself here."] = "Has fer la teva presentació aquí."; +$a->strings["Apparently you are already friends with %s."] = "Aparentment, ja tens amistat amb %s"; +$a->strings["Invalid profile URL."] = "Perfil URL no vàlid."; +$a->strings["Disallowed profile URL."] = "Perfil URL no permès."; +$a->strings["Failed to update contact record."] = "Error en actualitzar registre de contacte."; +$a->strings["Your introduction has been sent."] = "La teva presentació ha estat enviada."; +$a->strings["Please login to confirm introduction."] = "Si us plau, entri per confirmar la presentació."; +$a->strings["Incorrect identity currently logged in. Please login to this profile."] = "Sesió iniciada amb la identificació incorrecta. Entra en aquest perfil."; +$a->strings["Welcome home %s."] = "Benvingut de nou %s"; +$a->strings["Please confirm your introduction/connection request to %s."] = "Si us plau, confirmi la seva sol·licitud de Presentació/Amistat a %s."; +$a->strings["Confirm"] = "Confirmar"; +$a->strings["[Name Withheld]"] = "[Nom Amagat]"; +$a->strings["Diaspora members: Please do not use this form. Instead, enter \"%s\" into your Diaspora search bar."] = "Membres de Diàspora: Si us plau, no utilitzi aquest formulari. Pel contrari, escriviu \"%s\" a la barra de cerca de Diàspora."; +$a->strings["Please enter your 'Identity Address' from one of the following supported social networks:"] = "Si us plau, introdueixi la seva \"Adreça Identificativa\" d'una de les següents xarxes socials suportades:"; +$a->strings["Friend/Connection Request"] = "Sol·licitud d'Amistat"; +$a->strings["Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"] = "Exemples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"; +$a->strings["Please answer the following:"] = "Si us plau, contesti les següents preguntes:"; +$a->strings["Does %s know you?"] = "%s et coneix?"; +$a->strings["Add a personal note:"] = "Afegir una nota personal:"; +$a->strings["Friendica"] = "Friendica"; +$a->strings["StatusNet/Federated Social Web"] = "Web Social StatusNet/Federated "; +$a->strings["Diaspora"] = "Diaspora"; +$a->strings["- please share from your own site as noted above"] = "- si us plau, Comparteix des del teu propi lloc tal com s'ha dit abans."; +$a->strings["Your Identity Address:"] = "La Teva Adreça Identificativa:"; +$a->strings["Submit Request"] = "Sol·licitud Enviada"; +$a->strings["Friendica Social Communications Server - Setup"] = "Friendica Social Communications Server - Ajustos"; +$a->strings["Database connection"] = "Conexió a la base de dades"; +$a->strings["Could not connect to database."] = "No puc connectar a la base de dades."; +$a->strings["Could not create table."] = "No puc creat taula."; +$a->strings["Your Friendica site database has been installed."] = "La base de dades del teu lloc Friendica ha estat instal·lada."; +$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "IMPORTANT: necessitarà configurar [manualment] el programar una tasca pel sondejador (poller.php)"; +$a->strings["Please see the file \"INSTALL.txt\"."] = "Per favor, consulti l'arxiu \"INSTALL.txt\"."; +$a->strings["Proceed to registration"] = "Procedir a la inscripció"; +$a->strings["Proceed with Installation"] = "Procedeixi amb la Instal·lació"; +$a->strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Pot ser que hagi d'importar l'arxiu \"database.sql\" manualment amb phpmyadmin o mysql."; +$a->strings["Database import failed."] = "La importació de base de dades ha fallat."; +$a->strings["System check"] = "Comprovació del Sistema"; +$a->strings["Check again"] = "Comprovi de nou"; +$a->strings["In order to install Friendica we need to know how to connect to your database."] = "Per a instal·lar Friendica necessitem conèixer com connectar amb la deva base de dades."; +$a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Per favor, posi's en contacte amb el seu proveïdor de hosting o administrador del lloc si té alguna pregunta sobre aquestes opcions."; +$a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "La base de dades que especifiques ja hauria d'existir. Si no és així, crea-la abans de continuar."; +$a->strings["Database Server Name"] = "Nom del Servidor de base de Dades"; +$a->strings["Database Login Name"] = "Nom d'Usuari de la base de Dades"; +$a->strings["Database Login Password"] = "Contrasenya d'Usuari de la base de Dades"; +$a->strings["Database Name"] = "Nom de la base de Dades"; +$a->strings["Site administrator email address"] = "Adreça de correu del administrador del lloc"; +$a->strings["Your account email address must match this in order to use the web admin panel."] = "El seu compte d'adreça electrònica ha de coincidir per tal d'utilitzar el panell d'administració web."; +$a->strings["Please select a default timezone for your website"] = "Per favor, seleccioni una zona horària per defecte per al seu lloc web"; +$a->strings["Site settings"] = "Configuracions del lloc"; +$a->strings["Could not find a command line version of PHP in the web server PATH."] = "No es va poder trobar una versió de línia de comandos de PHP en la ruta del servidor web."; +$a->strings["PHP executable path"] = "Direcció del executable PHP"; +$a->strings["Enter full path to php executable"] = "Introdueixi el camí complet del executable php"; +$a->strings["Command line PHP"] = "Linia de comandos PHP"; +$a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "La versió de línia de comandos de PHP en el seu sistema no té \"register_argc_argv\" habilitat."; +$a->strings["This is required for message delivery to work."] = "Això és necessari perquè funcioni el lliurament de missatges."; +$a->strings["PHP \"register_argc_argv\""] = "PHP \"register_argc_argv\""; +$a->strings["Error: the \"openssl_pkey_new\" function on this system is not able to generate encryption keys"] = "Error: la funció \"openssl_pkey_new\" en aquest sistema no és capaç de generar claus de xifrat"; +$a->strings["If running under Windows, please see \"http://www.php.net/manual/en/openssl.installation.php\"."] = "Si s'executa en Windows, per favor consulti la secció \"http://www.php.net/manual/en/openssl.installation.php\"."; +$a->strings["Generate encryption keys"] = "Generar claus d'encripció"; +$a->strings["libCurl PHP module"] = "Mòdul libCurl de PHP"; +$a->strings["GD graphics PHP module"] = "Mòdul GD de gràfics de PHP"; +$a->strings["OpenSSL PHP module"] = "Mòdul OpenSSl de PHP"; +$a->strings["mysqli PHP module"] = "Mòdul mysqli de PHP"; +$a->strings["mb_string PHP module"] = "Mòdul mb_string de PHP"; +$a->strings["Apace mod_rewrite module"] = "Mòdul mod_rewrite de Apache"; +$a->strings["Error: Apache webserver mod-rewrite module is required but not installed."] = "Error: el mòdul mod-rewrite del servidor web Apache és necessari però no està instal·lat."; +$a->strings["Error: libCURL PHP module required but not installed."] = "Error: El mòdul libCURL de PHP és necessari però no està instal·lat."; +$a->strings["Error: GD graphics PHP module with JPEG support required but not installed."] = "Error: el mòdul gràfic GD de PHP amb support per JPEG és necessari però no està instal·lat."; +$a->strings["Error: openssl PHP module required but not installed."] = "Error: El mòdul enssl de PHP és necessari però no està instal·lat."; +$a->strings["Error: mysqli PHP module required but not installed."] = "Error: El mòdul mysqli de PHP és necessari però no està instal·lat."; +$a->strings["Error: mb_string PHP module required but not installed."] = "Error: mòdul mb_string de PHP requerit però no instal·lat."; +$a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "L'instal·lador web necessita crear un arxiu anomenat \".htconfig.php\" en la carpeta superior del seu servidor web però alguna cosa ho va impedir."; +$a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "Això freqüentment és a causa d'una configuració de permisos; el servidor web no pot escriure arxius en la carpeta - encara que sigui possible."; +$a->strings["Please check with your site documentation or support people to see if this situation can be corrected."] = "Per favor, consulti amb la documentació del seu lloc o persones de suport per veure si aquesta situació es pot corregir."; +$a->strings["If not, you may be required to perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Si no, vostè pot ser requerit per realitzar una instal·lació manual. Per favor, consulti l'arxiu \"INSTALL.txt\" per obtenir instruccions."; +$a->strings[".htconfig.php is writable"] = ".htconfig.php és escribible"; +$a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "L'arxiu per a la configuració de la base de dades \".htconfig.php\" no es pot escriure. Per favor, usi el text adjunt per crear un arxiu de configuració en l'arrel del servidor web."; +$a->strings["Errors encountered creating database tables."] = "Trobats errors durant la creació de les taules de la base de dades."; +$a->strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A"; +$a->strings["Time Conversion"] = "Temps de Conversió"; +$a->strings["Friendika provides this service for sharing events with other networks and friends in unknown timezones."] = "Friendica ofereix aquest servei per compartir esdeveniments amb altres xarxes i amics a les zones horàries desconegudes."; +$a->strings["UTC time: %s"] = "hora UTC: %s"; +$a->strings["Current timezone: %s"] = "Zona horària actual: %s"; +$a->strings["Converted localtime: %s"] = "Conversión de hora local: %s"; +$a->strings["Please select your timezone:"] = "Si us plau, seleccioneu la vostra zona horària:"; +$a->strings["Profile Match"] = "Perfil Aconseguit"; +$a->strings["No keywords to match. Please add keywords to your default profile."] = "No hi ha paraules clau que coincideixin. Si us plau, afegeixi paraules clau al teu perfil predeterminat."; +$a->strings["is interested in:"] = "està interessat en:"; +$a->strings["Connect"] = "Connexió"; +$a->strings["No matches"] = "No hi ha coincidències"; +$a->strings["Remote privacy information not available."] = "Informació de privacitat remota no disponible."; +$a->strings["Visible to:"] = "Visible per a:"; +$a->strings["Welcome to %s"] = "Benvingut a %s"; +$a->strings["Invalid request identifier."] = "Sol·licitud d'identificació no vàlida."; +$a->strings["Discard"] = "Descartar"; +$a->strings["Ignore"] = "Ignorar"; +$a->strings["System"] = "Sistema"; +$a->strings["Network"] = "Xarxa"; +$a->strings["Personal"] = "Personal"; +$a->strings["Home"] = "Inici"; +$a->strings["Introductions"] = "Presentacions"; +$a->strings["Messages"] = "Missatges"; +$a->strings["Show Ignored Requests"] = "Mostra les Sol·licituds Ignorades"; +$a->strings["Hide Ignored Requests"] = "Amaga les Sol·licituds Ignorades"; +$a->strings["Notification type: "] = "Tipus de Notificació:"; +$a->strings["Friend Suggestion"] = "Amics Suggerits "; +$a->strings["suggested by %s"] = "sugerit per %s"; +$a->strings["Hide this contact from others"] = "Amaga aquest contacte dels altres"; +$a->strings["Post a new friend activity"] = "Publica una activitat d'amic nova"; +$a->strings["if applicable"] = "si es pot aplicar"; +$a->strings["Approve"] = "Aprovar"; +$a->strings["Claims to be known to you: "] = "Diu que et coneix:"; +$a->strings["yes"] = "sí"; +$a->strings["no"] = "no"; +$a->strings["Approve as: "] = "Aprovat com:"; +$a->strings["Friend"] = "Amic"; +$a->strings["Sharer"] = "Partícip"; +$a->strings["Fan/Admirer"] = "Fan/Admirador"; +$a->strings["Friend/Connect Request"] = "Sol·licitud d'Amistat/Connexió"; +$a->strings["New Follower"] = "Nou Seguidor"; +$a->strings["No introductions."] = "Sense presentacions."; +$a->strings["Notifications"] = "Notificacions"; +$a->strings["%s liked %s's post"] = "A %s li agrada l'enviament de %s"; +$a->strings["%s disliked %s's post"] = "A %s no li agrada l'enviament de %s"; +$a->strings["%s is now friends with %s"] = "%s es ara amic de %s"; +$a->strings["%s created a new post"] = "%s ha creat un enviament nou"; +$a->strings["%s commented on %s's post"] = "%s va comentar en l'enviament de %s"; +$a->strings["No more network notifications."] = "No més notificacions de xarxa."; +$a->strings["Network Notifications"] = "Notificacions de la Xarxa"; +$a->strings["No more system notifications."] = "No més notificacions del sistema."; +$a->strings["System Notifications"] = "Notificacions del Sistema"; +$a->strings["No more personal notifications."] = "No més notificacions personals."; +$a->strings["Personal Notifications"] = "Notificacions Personals"; +$a->strings["No more home notifications."] = "No més notificacions d'inici."; +$a->strings["Home Notifications"] = "Notificacions d'Inici"; +$a->strings["Could not access contact record."] = "No puc accedir al registre del contacte."; +$a->strings["Could not locate selected profile."] = "No puc localitzar el perfil seleccionat."; +$a->strings["Contact updated."] = "Contacte actualitzat."; +$a->strings["Contact has been blocked"] = "Elcontacte ha estat bloquejat"; +$a->strings["Contact has been unblocked"] = "El contacte ha estat desbloquejat"; +$a->strings["Contact has been ignored"] = "El contacte ha estat ignorat"; +$a->strings["Contact has been unignored"] = "El contacte ha estat recordat"; +$a->strings["stopped following"] = "Deixar de seguir"; +$a->strings["Contact has been removed."] = "El contacte ha estat tret"; +$a->strings["You are mutual friends with %s"] = "Ara te una amistat mutua amb %s"; +$a->strings["You are sharing with %s"] = "Estas compartint amb %s"; +$a->strings["%s is sharing with you"] = "%s esta compartint amb tú"; +$a->strings["Private communications are not available for this contact."] = "Comunicacions privades no disponibles per aquest contacte."; +$a->strings["Never"] = "Mai"; +$a->strings["(Update was successful)"] = "(L'actualització fou exitosa)"; +$a->strings["(Update was not successful)"] = "(L'actualització fracassà)"; +$a->strings["Suggest friends"] = "Suggerir amics"; +$a->strings["Network type: %s"] = "Xarxa tipus: %s"; +$a->strings["%d contact in common"] = array( + 0 => "%d contacte en comú", + 1 => "%d contactes en comú", +); +$a->strings["View all contacts"] = "Veure tots els contactes"; +$a->strings["Unblock"] = "Desbloquejar"; +$a->strings["Block"] = "Bloquejar"; +$a->strings["Unignore"] = "Treure d'Ignorats"; +$a->strings["Repair"] = "Reparar"; +$a->strings["Contact Editor"] = "Editor de Contactes"; +$a->strings["Profile Visibility"] = "Perfil de Visibilitat"; +$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Si us plau triï el perfil que voleu mostrar a %s quan estigui veient el teu de forma segura."; +$a->strings["Contact Information / Notes"] = "Informació/Notes del contacte"; +$a->strings["Edit contact notes"] = "Editar notes de contactes"; +$a->strings["Visit %s's profile [%s]"] = "Visitar perfil de %s [%s]"; +$a->strings["Block/Unblock contact"] = "Bloquejar/Alliberar contacte"; +$a->strings["Ignore contact"] = "Ignore contacte"; +$a->strings["Repair URL settings"] = "Restablir configuració de URL"; +$a->strings["View conversations"] = "Veient conversacions"; +$a->strings["Delete contact"] = "Esborrar contacte"; +$a->strings["Last update:"] = "Última actualització:"; +$a->strings["Update public posts"] = "Actualitzar enviament públic"; +$a->strings["Update now"] = "Actualitza ara"; +$a->strings["Currently blocked"] = "Bloquejat actualment"; +$a->strings["Currently ignored"] = "Ignorat actualment"; +$a->strings["Replies/likes to your public posts may still be visible"] = "Répliques/agraiments per als teus missatges públics poden romandre visibles"; +$a->strings["All Contacts"] = "Tots els Contactes"; +$a->strings["Unblocked Contacts"] = "Contactes Desbloquejats"; +$a->strings["Blocked Contacts"] = "Contactes Bloquejats"; +$a->strings["Ignored Contacts"] = "Contactes Ignorats"; +$a->strings["Hidden Contacts"] = "Contactes Amagats"; +$a->strings["Mutual Friendship"] = "Amistat Mutua"; +$a->strings["is a fan of yours"] = "Es un fan teu"; +$a->strings["you are a fan of"] = "ets fan de"; +$a->strings["Edit contact"] = "Editar contacte"; +$a->strings["Contacts"] = "Contactes"; +$a->strings["Search your contacts"] = "Cercant el seus contactes"; +$a->strings["Finding: "] = "Cercant:"; +$a->strings["Find"] = "Cercar"; +$a->strings["No valid account found."] = "compte no vàlid trobat."; +$a->strings["Password reset request issued. Check your email."] = "Sol·licitut de restabliment de contrasenya enviat. Comprovi el seu correu."; +$a->strings["Password reset requested at %s"] = "Contrasenya restablerta enviada a %s"; +$a->strings["Administrator"] = "Administrador"; +$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "La sol·licitut no pot ser verificada. (Hauries de presentar-la abans). Restabliment de contrasenya fracassat."; +$a->strings["Password Reset"] = "Restabliment de Contrasenya"; +$a->strings["Your password has been reset as requested."] = "La teva contrasenya fou restablerta com vas demanar."; +$a->strings["Your new password is"] = "La teva nova contrasenya es"; +$a->strings["Save or copy your new password - and then"] = "Guarda o copia la nova contrasenya - i llavors"; +$a->strings["click here to login"] = "clica aquí per identificarte"; +$a->strings["Your password may be changed from the Settings page after successful login."] = "Pots camviar la contrasenya des de la pàgina de Configuración desprès d'accedir amb èxit."; +$a->strings["Forgot your Password?"] = "Has Oblidat la Contrasenya?"; +$a->strings["Enter your email address and submit to have your password reset. Then check your email for further instructions."] = "Introdueixi la seva adreça de correu i enivii-la per restablir la seva contrasenya. Llavors comprovi el seu correu per a les següents instruccións. "; +$a->strings["Nickname or Email: "] = "Malnom o Correu:"; +$a->strings["Reset"] = "Restablir"; +$a->strings["Missing some important data!"] = "Perdudes algunes dades importants!"; +$a->strings["Update"] = "Actualitzar"; +$a->strings["Failed to connect with email account using the settings provided."] = "Connexió fracassada amb el compte de correu emprant la configuració proveïda."; +$a->strings["Email settings updated."] = "Configuració del correu electrònic actualitzada."; +$a->strings["Passwords do not match. Password unchanged."] = "Les contrasenyes no coincideixen. Contrasenya no canviada."; +$a->strings["Empty passwords are not allowed. Password unchanged."] = "No es permeten contasenyes buides. Contrasenya no canviada"; +$a->strings["Password changed."] = "Contrasenya canviada."; +$a->strings["Password update failed. Please try again."] = "Ha fallat l'actualització de la Contrasenya. Per favor, intenti-ho de nou."; +$a->strings[" Please use a shorter name."] = "Si us plau, faci servir un nom més curt."; +$a->strings[" Name too short."] = "Nom massa curt."; +$a->strings[" Not valid email."] = "Correu no vàlid."; +$a->strings[" Cannot change to that email."] = "No puc canviar a aquest correu."; +$a->strings["Settings updated."] = "Ajustos actualitzats."; +$a->strings["Account settings"] = "Configuració del compte"; +$a->strings["Connector settings"] = "Configuració dels connectors"; +$a->strings["Plugin settings"] = "Configuració del plugin"; +$a->strings["Connections"] = "Connexions"; +$a->strings["Export personal data"] = "Exportar dades personals"; +$a->strings["Add application"] = "Afegir aplicació"; +$a->strings["Consumer Key"] = "Consumer Key"; +$a->strings["Consumer Secret"] = "Consumer Secret"; +$a->strings["Redirect"] = "Redirigir"; +$a->strings["Icon url"] = "icona de url"; +$a->strings["You can't edit this application."] = "No pots editar aquesta aplicació."; +$a->strings["Connected Apps"] = "Aplicacions conectades"; +$a->strings["Client key starts with"] = "Les claus de client comançen amb"; +$a->strings["No name"] = "Sense nom"; +$a->strings["Remove authorization"] = "retirar l'autorització"; +$a->strings["No Plugin settings configured"] = "No s'han configurat ajustos de Plugin"; +$a->strings["Plugin Settings"] = "Ajustos de Plugin"; +$a->strings["Built-in support for %s connectivity is %s"] = "El suport integrat per a la connectivitat de %s és %s"; +$a->strings["enabled"] = "habilitat"; +$a->strings["disabled"] = "deshabilitat"; +$a->strings["StatusNet"] = "StatusNet"; +$a->strings["Connector Settings"] = "Configuració de connectors"; +$a->strings["Email/Mailbox Setup"] = "Preparació de Correu/Bústia"; +$a->strings["If you wish to communicate with email contacts using this service (optional), please specify how to connect to your mailbox."] = "Si vol comunicar-se amb els contactes de correu emprant aquest servei (opcional), Si us plau, especifiqui com connectar amb la seva bústia."; +$a->strings["Last successful email check:"] = "Última comprovació de correu amb èxit:"; +$a->strings["Email access is disabled on this site."] = "L'accés al correu està deshabilitat en aquest lloc."; +$a->strings["IMAP server name:"] = "Nom del servidor IMAP:"; +$a->strings["IMAP port:"] = "Port IMAP:"; +$a->strings["Security:"] = "Seguretat:"; +$a->strings["None"] = "Cap"; +$a->strings["Email login name:"] = "Nom d'usuari del correu"; +$a->strings["Email password:"] = "Contrasenya del correu:"; +$a->strings["Reply-to address:"] = "Adreça de resposta:"; +$a->strings["Send public posts to all email contacts:"] = "Enviar correu públic a tots els contactes del correu:"; +$a->strings["Action after import:"] = "Acció després d'importar:"; +$a->strings["Mark as seen"] = "Marcar com a vist"; +$a->strings["Move to folder"] = "Moure a la carpeta"; +$a->strings["Move to folder:"] = "Moure a la carpeta:"; +$a->strings["Normal Account"] = "Compte Normal"; +$a->strings["This account is a normal personal profile"] = "Aques compte es un compte personal normal"; +$a->strings["Soapbox Account"] = "Compte Tribuna"; +$a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Aprova automàticament totes les sol·licituds de amistat/connexió com a fans de només lectura."; +$a->strings["Community/Celebrity Account"] = "Compte de Comunitat/Celebritat"; +$a->strings["Automatically approve all connection/friend requests as read-write fans"] = "Aprova automàticament totes les sol·licituds de amistat/connexió com a fans de lectura-escriptura"; +$a->strings["Automatic Friend Account"] = "Compte d'Amistat Automàtic"; +$a->strings["Automatically approve all connection/friend requests as friends"] = "Aprova totes les sol·licituds de amistat/connexió com a amic automàticament"; +$a->strings["OpenID:"] = "OpenID:"; +$a->strings["(Optional) Allow this OpenID to login to this account."] = "(Opcional) Permetre a aquest OpenID iniciar sessió en aquest compte."; +$a->strings["Publish your default profile in your local site directory?"] = "Publicar el teu perfil predeterminat en el directori del lloc local?"; +$a->strings["Publish your default profile in the global social directory?"] = "Publicar el teu perfil predeterminat al directori social global?"; +$a->strings["Hide your contact/friend list from viewers of your default profile?"] = "Amaga la teva llista de contactes/amics dels espectadors del seu perfil per defecte?"; +$a->strings["Hide your profile details from unknown viewers?"] = "Amagar els detalls del seu perfil a espectadors desconeguts?"; +$a->strings["Allow friends to post to your profile page?"] = "Permet als amics publicar en la seva pàgina de perfil?"; +$a->strings["Allow friends to tag your posts?"] = "Permet als amics d'etiquetar els teus missatges?"; +$a->strings["Allow us to suggest you as a potential friend to new members?"] = "Permeteu-nos suggerir-li com un amic potencial dels nous membres?"; +$a->strings["Profile is not published."] = "El Perfil no està publicat."; +$a->strings["or"] = "o"; +$a->strings["Your Identity Address is"] = "La seva Adreça d'Identitat és"; +$a->strings["Automatically expire posts after this many days:"] = "Després de aquests nombre de dies, els missatges caduquen automàticament:"; +$a->strings["If empty, posts will not expire. Expired posts will be deleted"] = "Si està buit, els missatges no caducarà. Missatges caducats s'eliminaran"; +$a->strings["Advanced expiration settings"] = "Configuració avançada d'expiració"; +$a->strings["Advanced Expiration"] = "Expiració Avançada"; +$a->strings["Expire posts:"] = "Expiració d'enviaments"; +$a->strings["Expire personal notes:"] = "Expiració de notes personals"; +$a->strings["Expire starred posts:"] = "Expiració de enviaments de favorits"; +$a->strings["Expire photos:"] = "Expiració de fotos"; +$a->strings["Account Settings"] = "Ajustos de Compte"; +$a->strings["Password Settings"] = "Ajustos de Contrasenya"; +$a->strings["New Password:"] = "Nova Contrasenya:"; +$a->strings["Confirm:"] = "Confirmar:"; +$a->strings["Leave password fields blank unless changing"] = "Deixi els camps de contrasenya buits per a no fer canvis"; +$a->strings["Basic Settings"] = "Ajustos Basics"; +$a->strings["Full Name:"] = "Nom Complet:"; +$a->strings["Email Address:"] = "Adreça de Correu:"; +$a->strings["Your Timezone:"] = "La teva zona Horària:"; +$a->strings["Default Post Location:"] = "Localització per Defecte del Missatge:"; +$a->strings["Use Browser Location:"] = "Ubicar-se amb el Navegador:"; +$a->strings["Display Theme:"] = "Visualitzar el Tema:"; +$a->strings["Update browser every xx seconds"] = "Actualitzar navegador cada xx segons"; +$a->strings["Minimum of 10 seconds, no maximum"] = "Mínim cada 10 segons, no hi ha màxim"; +$a->strings["Security and Privacy Settings"] = "Ajustos de Seguretat i Privacitat"; +$a->strings["Maximum Friend Requests/Day:"] = "Nombre Màxim de Sol·licituds per Dia"; +$a->strings["(to prevent spam abuse)"] = "(per a prevenir abusos de spam)"; +$a->strings["Default Post Permissions"] = "Permisos de Correu per Defecte"; +$a->strings["(click to open/close)"] = "(clicar per a obrir/tancar)"; +$a->strings["Notification Settings"] = "Ajustos de Notificació"; +$a->strings["Send a notification email when:"] = "Envia un correu notificant quan:"; +$a->strings["You receive an introduction"] = "Has rebut una presentació"; +$a->strings["Your introductions are confirmed"] = "La teva presentació està confirmada"; +$a->strings["Someone writes on your profile wall"] = "Algú ha escrit en el teu mur de perfil"; +$a->strings["Someone writes a followup comment"] = "Algú ha escrit un comentari de seguiment"; +$a->strings["You receive a private message"] = "Has rebut un missatge privat"; +$a->strings["You receive a friend suggestion"] = "Has rebut una suggerencia d'un amic"; +$a->strings["You are tagged in a post"] = "Estàs etiquetat en un enviament"; +$a->strings["Advanced Page Settings"] = "Ajustos Avançats de Pàgina"; +$a->strings["Manage Identities and/or Pages"] = "Administrar Identitats i/o Pàgines"; +$a->strings["Toggle between different identities or community/group pages which share your account details or which you have been granted \"manage\" permissions"] = "Alternar entre les diferents identitats o les pàgines de comunitats/grups que comparteixen les dades del seu compte o que se li ha concedit els permisos de \"administrar\""; +$a->strings["Select an identity to manage: "] = "Seleccionar identitat a administrar:"; +$a->strings["Search Results For:"] = "Resultats de la Cerca Per a:"; +$a->strings["Remove term"] = "Traieu termini"; +$a->strings["Saved Searches"] = "Cerques Guardades"; +$a->strings["add"] = "afegir"; +$a->strings["Commented Order"] = "Ordre dels Comentaris"; +$a->strings["Posted Order"] = "Ordre dels Enviaments"; +$a->strings["New"] = "Nou"; +$a->strings["Starred"] = "Favorits"; +$a->strings["Bookmarks"] = "Marcadors"; +$a->strings["Warning: This group contains %s member from an insecure network."] = array( + 0 => "Advertència: Aquest grup conté el membre %s en una xarxa insegura.", + 1 => "Advertència: Aquest grup conté %s membres d'una xarxa insegura.", +); +$a->strings["Private messages to this group are at risk of public disclosure."] = "Els missatges privats a aquest grup es troben en risc de divulgació pública."; +$a->strings["No such group"] = "Cap grup com"; +$a->strings["Group is empty"] = "El Grup es buit"; +$a->strings["Group: "] = "Grup:"; +$a->strings["Contact: "] = "Contacte:"; +$a->strings["Private messages to this person are at risk of public disclosure."] = "Els missatges privats a aquesta persona es troben en risc de divulgació pública."; +$a->strings["Invalid contact."] = "Contacte no vàlid."; +$a->strings["Personal Notes"] = "Notes Personals"; +$a->strings["Save"] = "Guardar"; +$a->strings["Welcome to Friendica"] = "Benvingut a Friendica"; +$a->strings["New Member Checklist"] = "Llista de Verificació dels Nous Membres"; +$a->strings["We would like to offer some tips and links to help make your experience enjoyable. Click any item to visit the relevant page. A link to this page will be visible from your home page for two weeks after your initial registration and then will quietly disappear."] = "Ens agradaria oferir alguns consells i enllaços per ajudar a fer la seva experiència agradable. Feu clic a qualsevol element per visitar la pàgina corresponent. Un enllaç a aquesta pàgina serà visible des de la pàgina d'inici durant dues setmanes després de la seva inscripció inicial i després desapareixerà en silenci."; +$a->strings["On your Settings page - change your initial password. Also make a note of your Identity Address. This looks just like an email address - and will be useful in making friends on the free social web."] = "En la de la seva configuració de la pàgina - canviï la contrasenya inicial. També prengui nota de la Adreça d'Identitat. Això s'assembla a una adreça de correu electrònic - i serà útil per fer amics a la xarxa social lliure."; +$a->strings["Review the other settings, particularly the privacy settings. An unpublished directory listing is like having an unlisted phone number. In general, you should probably publish your listing - unless all of your friends and potential friends know exactly how to find you."] = "Reviseu les altres configuracions, en particular la configuració de privadesa. Una llista de directoris no publicada és com tenir un número de telèfon no llistat. Normalment, hauria de publicar la seva llista - a menys que tots els seus amics i els amics potencials sàpiguen exactament com trobar-li."; +$a->strings["Upload a profile photo if you have not done so already. Studies have shown that people with real photos of themselves are ten times more likely to make friends than people who do not."] = "Puji una foto del seu perfil si encara no ho ha fet. Els estudis han demostrat que les persones amb fotos reals de ells mateixos tenen deu vegades més probabilitats de fer amics que les persones que no ho fan."; +$a->strings["Authorise the Facebook Connector if you currently have a Facebook account and we will (optionally) import all your Facebook friends and conversations."] = "Autoritzi el connector de Facebook si vostè té un compte al Facebook i nosaltres (opcionalment) importarem tots els teus amics de Facebook i les converses."; +$a->strings["If this is your own personal server, installing the Facebook addon may ease your transition to the free social web."] = "Si aquesta és el seu servidor personal, la instal·lació del complement de Facebook pot facilitar la transició a la web social lliure."; +$a->strings["Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX"] = "Introduïu les dades d'accés al correu electrònic a la seva pàgina de configuració de connector, si es desitja importar i relacionar-se amb amics o llistes de correu de la seva bústia d'email"; +$a->strings["Edit your default profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors."] = "Editi el perfil per defecte al seu gust. Reviseu la configuració per ocultar la seva llista d'amics i ocultar el perfil dels visitants desconeguts."; +$a->strings["Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships."] = "Estableix algunes paraules clau públiques al teu perfil predeterminat que descriguin els teus interessos. Podem ser capaços de trobar altres persones amb interessos similars i suggerir amistats."; +$a->strings["Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the Add New Contact dialog."] = "La seva pàgina de Contactes és la seva porta d'entrada a la gestió de l'amistat i la connexió amb amics d'altres xarxes. Normalment, vostè entrar en la seva direcció o URL del lloc al diàleg Afegir Nou Contacte."; +$a->strings["The Directory page lets you find other people in this network or other federated sites. Look for a Connect or Follow link on their profile page. Provide your own Identity Address if requested."] = "La pàgina del Directori li permet trobar altres persones en aquesta xarxa o altres llocs federats. Busqui un enllaç Connectar o Seguir a la seva pàgina de perfil. Proporcioni la seva pròpia Adreça de Identitat si així ho sol·licita."; +$a->strings["On the side panel of the Contacts page are several tools to find new friends. We can match people by interest, look up people by name or interest, and provide suggestions based on network relationships. On a brand new site, friend suggestions will usually begin to be populated within 24 hours."] = "Al tauler lateral de la pàgina de contacte Hi ha diverses eines per trobar nous amics. Podem coincidir amb les persones per interesos, buscar persones pel nom o per interès, i oferir suggeriments basats en les relacions de la xarxa. En un nou lloc, els suggeriments d'amics, en general comencen a poblar el lloc a les 24 hores."; +$a->strings["Once you have made some friends, organize them into private conversation groups from the sidebar of your Contacts page and then you can interact with each group privately on your Network page."] = "Una vegada que s'han fet alguns amics, organitzi'ls en grups de conversa privada a la barra lateral de la seva pàgina de contactes i després pot interactuar amb cada grup de forma privada a la pàgina de la xarxa."; +$a->strings["Our help pages may be consulted for detail on other program features and resources."] = "A les nostres pàgines d'ajuda es poden consultar detalls sobre les característiques d'altres programes i recursos."; +$a->strings["Item not available."] = "Element no disponible"; +$a->strings["Item was not found."] = "Element no trobat."; +$a->strings["Group created."] = "Grup creat."; +$a->strings["Could not create group."] = "No puc crear grup."; +$a->strings["Group not found."] = "Grup no trobat"; +$a->strings["Group name changed."] = "Nom de Grup canviat."; +$a->strings["Permission denied"] = "Permís denegat"; +$a->strings["Create a group of contacts/friends."] = "Crear un grup de contactes/amics."; +$a->strings["Group Name: "] = "Nom del Grup:"; +$a->strings["Group removed."] = "Grup esborrat."; +$a->strings["Unable to remove group."] = "Incapaç de esborrar Grup."; +$a->strings["Group Editor"] = "Editor de Grup:"; +$a->strings["Members"] = "Membres"; +$a->strings["Click on a contact to add or remove."] = "Clicar sobre el contacte per afegir o esborrar."; +$a->strings["Invalid profile identifier."] = "Identificador del perfil no vàlid."; +$a->strings["Profile Visibility Editor"] = "Editor de Visibilitat del Perfil"; +$a->strings["Profile"] = "Perfil"; +$a->strings["Visible To"] = "Visible Per"; +$a->strings["All Contacts (with secure profile access)"] = "Tots els Contactes (amb accés segur al perfil)"; +$a->strings["No contacts."] = "Sense Contactes"; +$a->strings["View Contacts"] = "Veure Contactes"; +$a->strings["An invitation is required."] = "Es requereix invitació."; +$a->strings["Invitation could not be verified."] = "La invitació no ha pogut ser verificada."; +$a->strings["Invalid OpenID url"] = "OpenID url no vàlid"; +$a->strings["Please enter the required information."] = "Per favor, introdueixi la informació requerida."; +$a->strings["Please use a shorter name."] = "Per favor, empri un nom més curt."; +$a->strings["Name too short."] = "Nom massa curt."; +$a->strings["That doesn't appear to be your full (First Last) name."] = "Això no sembla ser el teu nom complet."; +$a->strings["Your email domain is not among those allowed on this site."] = "El seu domini de correu electrònic no es troba entre els permesos en aquest lloc."; +$a->strings["Not a valid email address."] = "Adreça de correu no vàlida."; +$a->strings["Cannot use that email."] = "No es pot utilitzar aquest correu electrònic."; +$a->strings["Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and must also begin with a letter."] = "El teu sobrenom nomes pot contenir \"a-z\", \"0-9\", \"-\", i \"_\", i començar amb lletra."; +$a->strings["Nickname is already registered. Please choose another."] = "malnom ja registrat. Tria un altre."; +$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "ERROR IMPORTANT: La generació de claus de seguretat ha fallat."; +$a->strings["An error occurred during registration. Please try again."] = "Un error ha succeït durant el registre. Intenta-ho de nou."; +$a->strings["An error occurred creating your default profile. Please try again."] = "Un error ha succeit durant la creació del teu perfil per defecte. Intenta-ho de nou."; +$a->strings["Registration details for %s"] = "Detalls del registre per a %s"; +$a->strings["Registration successful. Please check your email for further instructions."] = "Registrat amb èxit. Per favor, comprovi el seu correu per a posteriors instruccions."; +$a->strings["Failed to send email message. Here is the message that failed."] = "Error en enviar missatge de correu electrònic. Aquí està el missatge que ha fallat."; +$a->strings["Your registration can not be processed."] = "El seu registre no pot ser processat."; +$a->strings["Registration request at %s"] = "Sol·licitud de registre a %s"; +$a->strings["Your registration is pending approval by the site owner."] = "El seu registre està pendent d'aprovació pel propietari del lloc."; +$a->strings["This site has exceeded the number of allowed daily account registrations. Please try again tomorrow."] = "Aquest lloc excedeix el nombre diari de registres de comptes. Per favor, provi de nou demà."; +$a->strings["You may (optionally) fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "Vostè pot (opcionalment), omplir aquest formulari a través de OpenID mitjançant el subministrament de la seva OpenID i fent clic a 'Registrar'."; +$a->strings["If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items."] = "Si vostè no està familiaritzat amb Twitter, si us plau deixi aquest camp en blanc i completi la resta dels elements."; +$a->strings["Your OpenID (optional): "] = "El seu OpenID (opcional):"; +$a->strings["Include your profile in member directory?"] = "Incloc el seu perfil al directori de membres?"; +$a->strings["Membership on this site is by invitation only."] = "Lloc accesible mitjançant invitació."; +$a->strings["Your invitation ID: "] = "El teu ID de invitació:"; +$a->strings["Registration"] = "Procés de Registre"; +$a->strings["Your Full Name (e.g. Joe Smith): "] = "El seu nom complet (per exemple, Joan Ningú):"; +$a->strings["Your Email Address: "] = "La Seva Adreça de Correu:"; +$a->strings["Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be 'nickname@\$sitename'."] = "Tria un nom de perfil. Això ha de començar amb un caràcter de text. La seva adreça de perfil en aquest lloc serà 'malnom@\$sitename'."; +$a->strings["Choose a nickname: "] = "Tria un malnom:"; +$a->strings["Register"] = "Registrar"; +$a->strings["People Search"] = "Cercant Gent"; +$a->strings["status"] = "estatus"; +$a->strings["%1\$s likes %2\$s's %3\$s"] = "a %1\$s agrada %2\$s de %3\$s"; +$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "a %1\$s no agrada %2\$s de %3\$s"; +$a->strings["Item not found."] = "Article no trobat."; +$a->strings["Access denied."] = "Accés denegat."; +$a->strings["Account approved."] = "Compte aprovat."; +$a->strings["Registration revoked for %s"] = "Procés de Registre revocat per a %s"; +$a->strings["Please login."] = "Si us plau, ingressa."; +$a->strings["Unable to locate original post."] = "No es pot localitzar post original."; +$a->strings["Empty post discarded."] = "Buidat després de rebutjar."; +$a->strings["Wall Photos"] = "Fotos del Mur"; +$a->strings["System error. Post not saved."] = "Error del sistema. Publicació no guardada."; +$a->strings["This message was sent to you by %s, a member of the Friendica social network."] = "Aquest missatge va ser enviat a vostè per %s, un membre de la xarxa social Friendica."; +$a->strings["You may visit them online at %s"] = "El pot visitar en línia a %s"; +$a->strings["Please contact the sender by replying to this post if you do not wish to receive these messages."] = "Si us plau, poseu-vos en contacte amb el remitent responent a aquest missatge si no voleu rebre aquests missatges."; +$a->strings["%s posted an update."] = "%s ha publicat una actualització."; +$a->strings["Image uploaded but image cropping failed."] = "Imatge pujada però no es va poder retallar."; +$a->strings["Image size reduction [%s] failed."] = "La reducció de la imatge [%s] va fracassar."; +$a->strings["Shift-reload the page or clear browser cache if the new photo does not display immediately."] = "Recarregui la pàgina o netegi la caché del navegador si la nova foto no apareix immediatament."; +$a->strings["Unable to process image"] = "No es pot processar la imatge"; +$a->strings["Image exceeds size limit of %d"] = "La imatge sobrepassa el límit de mida de %d"; +$a->strings["Upload File:"] = "Pujar arxiu:"; +$a->strings["Upload Profile Photo"] = "Pujar Foto del Perfil"; +$a->strings["Upload"] = "Pujar"; +$a->strings["skip this step"] = "saltar aquest pas"; +$a->strings["select a photo from your photo albums"] = "tria una foto dels teus àlbums"; +$a->strings["Crop Image"] = "retallar imatge"; +$a->strings["Please adjust the image cropping for optimum viewing."] = "Per favor, ajusta la retallada d'imatge per a una optima visualització."; +$a->strings["Done Editing"] = "Edició Feta"; +$a->strings["Image uploaded successfully."] = "Carregada de la imatge amb èxit."; +$a->strings["No profile"] = "Sense perfil"; +$a->strings["Remove My Account"] = "Eliminar el Meu Compte"; +$a->strings["This will completely remove your account. Once this has been done it is not recoverable."] = "Això eliminarà per complet el seu compte. Quan s'hagi fet això, no serà recuperable."; +$a->strings["Please enter your password for verification:"] = "Si us plau, introduïu la contrasenya per a la verificació:"; +$a->strings["No recipient selected."] = "No s'ha seleccionat destinatari."; +$a->strings["Unable to locate contact information."] = "No es pot trobar informació de contacte."; +$a->strings["Message could not be sent."] = "El Missatge no ha estat enviat."; +$a->strings["Message collection failure."] = "Ha fallat la recollida del missatge."; +$a->strings["Message sent."] = "Missatge enviat."; +$a->strings["Inbox"] = "Safata d'entrada"; +$a->strings["Outbox"] = "Safata de sortida"; +$a->strings["New Message"] = "Nou Missatge"; +$a->strings["Message deleted."] = "Missatge eliminat."; +$a->strings["Conversation removed."] = "Conversació esborrada."; +$a->strings["Please enter a link URL:"] = "Sius plau, entri l'enllaç URL:"; +$a->strings["Send Private Message"] = "Enviant Missatge Privat"; +$a->strings["To:"] = "Per a:"; +$a->strings["Subject:"] = "Assumpte::"; +$a->strings["Your message:"] = "El teu missatge:"; +$a->strings["No messages."] = "Sense missatges."; +$a->strings["Delete conversation"] = "Esborrar conversació"; +$a->strings["D, d M Y - g:i A"] = "D, d M Y - g:i A"; +$a->strings["Message not available."] = "Missatge no disponible."; +$a->strings["Delete message"] = "Esborra missatge"; +$a->strings["Send Reply"] = "Enviar Resposta"; +$a->strings["Friends of %s"] = "Amics de %s"; +$a->strings["No friends to display."] = "No hi ha amics que mostrar"; +$a->strings["Site"] = "Lloc"; +$a->strings["Users"] = "Usuaris"; +$a->strings["Plugins"] = "Plugins"; +$a->strings["Themes"] = "Temes"; +$a->strings["Logs"] = "Transcripcions"; +$a->strings["User registrations waiting for confirmation"] = "Registre d'usuari a l'espera de confirmació"; +$a->strings["Administration"] = "Administració"; +$a->strings["Summary"] = "Sumari"; +$a->strings["Registered users"] = "Usuaris registrats"; +$a->strings["Pending registrations"] = "Registres d'usuari pendents"; +$a->strings["Version"] = "Versió"; +$a->strings["Active plugins"] = "Plugins actius"; +$a->strings["Site settings updated."] = "Ajustos del lloc actualitzats."; +$a->strings["Closed"] = "Tancat"; +$a->strings["Requires approval"] = "Requereix aprovació"; +$a->strings["Open"] = "Obert"; +$a->strings["File upload"] = "Fitxer carregat"; +$a->strings["Policies"] = "Polítiques"; +$a->strings["Advanced"] = "Avançat"; +$a->strings["Site name"] = "Nom del lloc"; +$a->strings["Banner/Logo"] = "Senyera/Logo"; +$a->strings["System language"] = "Idioma del Systema"; +$a->strings["System theme"] = "Tema del sistema"; +$a->strings["Default system theme - may be over-ridden by user profiles"] = "Tema per defecte del sitema - pot ser canviat als perfils dels usuaris"; +$a->strings["Maximum image size"] = "Mida màxima de les imatges"; +$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Mida màxima en bytes de les imatges a pujar. Per defecte es 0, que vol dir sense límits."; +$a->strings["Register policy"] = "Política per a registrar"; +$a->strings["Register text"] = "Text al registrar"; +$a->strings["Will be displayed prominently on the registration page."] = "Sea mostrat de forma peminent a la pagina durant el procés de registre."; +$a->strings["Accounts abandoned after x days"] = "Comptes abandonats després de x dies"; +$a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "No gastará recursos del sistema creant enquestes des de llocs externos per a comptes abandonats. Introdueixi 0 per a cap límit temporal."; +$a->strings["Allowed friend domains"] = "Dominis amics permesos"; +$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Llista de dominis separada per comes, de adreçes de correu que són permeses per establir amistats. S'admeten comodins. Deixa'l buit per a acceptar tots els dominis."; +$a->strings["Allowed email domains"] = "Dominis de correu permesos"; +$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Llista de dominis separada per comes, de adreçes de correu que són permeses per registrtar-se. S'admeten comodins. Deixa'l buit per a acceptar tots els dominis."; +$a->strings["Block public"] = "Bloqueig públic"; +$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Bloqueija l'accés públic a qualsevol pàgina del lloc fins que t'hagis identificat."; +$a->strings["Force publish"] = "Forçar publicació"; +$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Obliga a que tots el perfils en aquest lloc siguin mostrats en el directori del lloc."; +$a->strings["Global directory update URL"] = "Actualitzar URL del directori global"; +$a->strings["URL to update the global directory. If this is not set, the global directory is completely unavailable to the application."] = "URL per actualitzar el directori global. Si no es configura, el directori global serà completament inaccesible per a l'aplicació. "; +$a->strings["Block multiple registrations"] = "Bloquejar multiples registracions"; +$a->strings["Disallow users to register additional accounts for use as pages."] = "Inhabilita als usuaris el crear comptes adicionals per a usar com a pàgines."; +$a->strings["OpenID support"] = "Suport per a OpenID"; +$a->strings["OpenID support for registration and logins."] = "Suport per a registre i validació a OpenID."; +$a->strings["Gravatar support"] = "Suport per a gravatar"; +$a->strings["Search new user's photo on Gravatar."] = "Cerca la nova foto d'usuari a Gravatar."; +$a->strings["Fullname check"] = "Comprobació de nom complet"; +$a->strings["Force users to register with a space between firstname and lastname in Full name, as an antispam measure"] = "Obliga els usuaris a col·locar un espai en blanc entre nom i cognoms, com a mesura antifemater"; +$a->strings["UTF-8 Regular expressions"] = "expresions regulars UTF-8"; +$a->strings["Use PHP UTF8 regular expressions"] = "Empri expresions regulars de PHP amb format UTF8"; +$a->strings["Show Community Page"] = "Mostra la Pàgina de Comunitat"; +$a->strings["Display a Community page showing all recent public postings on this site."] = "Mostra a la pàgina de comunitat tots els missatges públics recents, d'aquest lloc."; +$a->strings["Enable OStatus support"] = "Activa el suport per a OStatus"; +$a->strings["Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "Proveeix de compatibilitat integrada amb OStatus (identi.ca, status.net, etc). Totes les comunicacions a OStatus són públiques amb el que ocasionalment pots veure advertències."; +$a->strings["Enable Diaspora support"] = "Habilitar suport per Diaspora"; +$a->strings["Provide built-in Diaspora network compatibility."] = "Proveeix compatibilitat integrada amb la xarxa Diaspora"; +$a->strings["Only allow Friendica contacts"] = "Només permetre contactes de Friendica"; +$a->strings["All contacts must use Friendica protocols. All other built-in communication protocols disabled."] = "Tots els contactes "; +$a->strings["Verify SSL"] = "Verificar SSL"; +$a->strings["If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."] = "Si ho vols, pots comprovar el certificat estrictament. Això farà que no puguis connectar (de cap manera) amb llocs amb certificats SSL autosignats."; +$a->strings["Proxy user"] = "proxy d'usuari"; +$a->strings["Proxy URL"] = "URL del proxy"; +$a->strings["Network timeout"] = "Temps excedit a la xarxa"; +$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Valor en segons. Canviat a 0 es sense límits (no recomenat)"; +$a->strings["%s user blocked/unblocked"] = array( + 0 => "%s usuari bloquejar/desbloquejar", + 1 => "%s usuaris bloquejar/desbloquejar", +); +$a->strings["%s user deleted"] = array( + 0 => "%s usuari esborrat", + 1 => "%s usuaris esborrats", +); +$a->strings["User '%s' deleted"] = "Usuari %s' esborrat"; +$a->strings["User '%s' unblocked"] = "Usuari %s' desbloquejat"; +$a->strings["User '%s' blocked"] = "L'usuari '%s' és bloquejat"; +$a->strings["select all"] = "Seleccionar tot"; +$a->strings["User registrations waiting for confirm"] = "Registre d'usuari esperant confirmació"; +$a->strings["Request date"] = "Data de sol·licitud"; +$a->strings["Email"] = "Correu"; +$a->strings["No registrations."] = "Sense registres."; +$a->strings["Deny"] = "Denegar"; +$a->strings["Register date"] = "Data de registre"; +$a->strings["Last login"] = "Últim accés"; +$a->strings["Last item"] = "Últim element"; +$a->strings["Account"] = "Compte"; +$a->strings["Selected users will be deleted!\\n\\nEverything these users had posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "Els usuaris seleccionats seran esborrats!\\n\\nqualsevol cosa que aquests usuaris hagin publicat en aquest lloc s'esborrarà!\\n\\nEsteu segur?"; +$a->strings["The user {0} will be deleted!\\n\\nEverything this user has posted on this site will be permanently deleted!\\n\\nAre you sure?"] = "L'usuari {0} s'eliminarà!\\n\\nQualsevol cosa que aquest usuari hagi publicat en aquest lloc s'esborrarà!\\n\\nEsteu segur?"; +$a->strings["Plugin %s disabled."] = "Plugin %s deshabilitat."; +$a->strings["Plugin %s enabled."] = "Plugin %s habilitat."; +$a->strings["Disable"] = "Deshabilitar"; +$a->strings["Enable"] = "Habilitar"; +$a->strings["Toggle"] = "Canviar"; +$a->strings["Settings"] = "Ajustos"; +$a->strings["Author: "] = "Autor:"; +$a->strings["Maintainer: "] = "Encarregat:"; +$a->strings["No themes found."] = "No s'ha trobat temes."; +$a->strings["[Experimental]"] = "[Experimental]"; +$a->strings["[Unsupported]"] = "[No soportat]"; +$a->strings["Log settings updated."] = "Configuració del transcriptor actualitzada."; +$a->strings["Clear"] = "Netejar"; +$a->strings["Debugging"] = "Esplugar"; +$a->strings["Log file"] = "Arxiu de transcripció"; +$a->strings["Must be writable by web server. Relative to your Friendica top-level directory."] = "Ha de tenir permisos d'escriptura pel servidor web. En relació amb el seu directori Friendica de nivell superior."; +$a->strings["Log level"] = "Nivell de transcripció"; +$a->strings["Close"] = "Tancar"; +$a->strings["FTP Host"] = "Amfitrió FTP"; +$a->strings["FTP Path"] = "Direcció FTP"; +$a->strings["FTP User"] = "Usuari FTP"; +$a->strings["FTP Password"] = "Contrasenya FTP"; +$a->strings["Requested profile is not available."] = "El perfil sol·licitat no està disponible."; +$a->strings["Access to this profile has been restricted."] = "L'accés a aquest perfil ha estat restringit."; +$a->strings["Tips for New Members"] = "Consells per a nous membres"; +$a->strings["{0} wants to be your friend"] = "{0} vol ser el teu amic"; +$a->strings["{0} sent you a message"] = "{0} t'ha enviat un missatge de"; +$a->strings["{0} requested registration"] = "{0} solicituts de registre"; +$a->strings["{0} commented %s's post"] = "{0} va comentar l'enviament de %s"; +$a->strings["{0} liked %s's post"] = "A {0} l'ha agradat l'enviament de %s"; +$a->strings["{0} disliked %s's post"] = "A {0} no l'ha agradat l'enviament de %s"; +$a->strings["{0} is now friends with %s"] = "{0} ara és amic de %s"; +$a->strings["{0} posted"] = "{0} publicat"; +$a->strings["{0} tagged %s's post with #%s"] = "{0} va etiquetar la publicació de %s com #%s"; +$a->strings["{0} mentioned you in a post"] = "{0} et menciona en un missatge"; +$a->strings["Login failed."] = "Error d'accés."; +$a->strings["Connect URL missing."] = "URL del connector perduda."; +$a->strings["This site is not configured to allow communications with other networks."] = "Aquest lloc no està configurat per permetre les comunicacions amb altres xarxes."; +$a->strings["No compatible communication protocols or feeds were discovered."] = "Protocol de comunnicació no compatible o alimentador descobert."; +$a->strings["The profile address specified does not provide adequate information."] = "L'adreça de perfil especificada no proveeix informació adient."; +$a->strings["An author or name was not found."] = "Un autor o nom no va ser trobat"; +$a->strings["No browser URL could be matched to this address."] = "Cap direcció URL del navegador coincideix amb aquesta adreça."; +$a->strings["The profile address specified belongs to a network which has been disabled on this site."] = "La direcció del perfil especificat pertany a una xarxa que ha estat desactivada en aquest lloc."; +$a->strings["Limited profile. This person will be unable to receive direct/personal notifications from you."] = "Perfil limitat. Aquesta persona no podrà rebre notificacions personals/directes de tu."; +$a->strings["Unable to retrieve contact information."] = "No es pot recuperar la informació de contacte."; +$a->strings["following"] = "seguint"; +$a->strings["Common Friends"] = "Amics Comuns"; +$a->strings["No friends in common."] = "No hi ha amics en comú."; +$a->strings["Item has been removed."] = "El element ha estat esborrat."; +$a->strings["Applications"] = "Aplicacions"; +$a->strings["No installed applications."] = "Aplicacions no instal·lades."; +$a->strings["Search This Site"] = "Cerca en Aquest Lloc"; +$a->strings["Profile not found."] = "Perfil no trobat."; +$a->strings["Profile Name is required."] = "Nom de perfil requerit."; +$a->strings["Profile updated."] = "Perfil actualitzat."; +$a->strings["Profile deleted."] = "Perfil esborrat."; +$a->strings["Profile-"] = "Perfil-"; +$a->strings["New profile created."] = "Nou perfil creat."; +$a->strings["Profile unavailable to clone."] = "No es pot clonar el perfil."; +$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Amaga la llista de contactes/amics en la vista d'aquest perfil?"; +$a->strings["Edit Profile Details"] = "Editor de Detalls del Perfil"; +$a->strings["View this profile"] = "Veure aquest perfil"; +$a->strings["Create a new profile using these settings"] = "Crear un nou perfil amb aquests ajustos"; +$a->strings["Clone this profile"] = "Clonar aquest perfil"; +$a->strings["Delete this profile"] = "Esborrar aquest perfil"; +$a->strings["Profile Name:"] = "Nom de Perfil:"; +$a->strings["Your Full Name:"] = "El Teu Nom Complet."; +$a->strings["Title/Description:"] = "Títol/Descripció:"; +$a->strings["Your Gender:"] = "Gènere:"; +$a->strings["Birthday (%s):"] = "Aniversari (%s)"; +$a->strings["Street Address:"] = "Direcció:"; +$a->strings["Locality/City:"] = "Localitat/Ciutat:"; +$a->strings["Postal/Zip Code:"] = "Codi Postal:"; +$a->strings["Country:"] = "País"; +$a->strings["Region/State:"] = "Región/Estat:"; +$a->strings[" Marital Status:"] = " Estat Civil:"; +$a->strings["Who: (if applicable)"] = "Qui? (si és aplicable)"; +$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Exemples: cathy123, Cathy Williams, cathy@example.com"; +$a->strings["Sexual Preference:"] = "Preferència Sexual:"; +$a->strings["Homepage URL:"] = "Pàgina web URL:"; +$a->strings["Political Views:"] = "Idees Polítiques:"; +$a->strings["Religious Views:"] = "Creencies Religioses:"; +$a->strings["Public Keywords:"] = "Paraules Clau Públiques"; +$a->strings["Private Keywords:"] = "Paraules Clau Privades:"; +$a->strings["Example: fishing photography software"] = "Exemple: pesca fotografia programari"; +$a->strings["(Used for suggesting potential friends, can be seen by others)"] = "(Emprat per suggerir potencials amics, Altres poden veure-ho)"; +$a->strings["(Used for searching profiles, never shown to others)"] = "(Emprat durant la cerca de perfils, mai mostrat a ningú)"; +$a->strings["Tell us about yourself..."] = "Parla'ns de tú....."; +$a->strings["Hobbies/Interests"] = "Aficions/Interessos"; +$a->strings["Contact information and Social Networks"] = "Informació de contacte i Xarxes Socials"; +$a->strings["Musical interests"] = "Gustos musicals"; +$a->strings["Books, literature"] = "Llibres, Literatura"; +$a->strings["Television"] = "Televisió"; +$a->strings["Film/dance/culture/entertainment"] = "Cinema/ball/cultura/entreteniments"; +$a->strings["Love/romance"] = "Amor/sentiments"; +$a->strings["Work/employment"] = "Treball/ocupació"; +$a->strings["School/education"] = "Ensenyament/estudis"; +$a->strings["This is your public profile.
    It may be visible to anybody using the internet."] = "Aquest és el teu perfil públic.
    El qual pot ser visible per qualsevol qui faci servir Internet."; +$a->strings["Age: "] = "Edat:"; +$a->strings["Edit/Manage Profiles"] = "Editar/Gestionar Perfils"; +$a->strings["Change profile photo"] = "Canviar la foto del perfil"; +$a->strings["Create New Profile"] = "Crear un Nou Perfil"; +$a->strings["Profile Image"] = "Imatge del Perfil"; +$a->strings["visible to everybody"] = "Visible per tothom"; +$a->strings["Edit visibility"] = "Editar visibilitat"; +$a->strings["%1\$s tagged %2\$s's %3\$s with %4\$s"] = "%1\$s etiquetats %2\$s %3\$s amb %4\$s"; +$a->strings["No potential page delegates located."] = "No es troben pàgines potencialment delegades."; +$a->strings["Delegate Page Management"] = "Gestió de les Pàgines Delegades"; +$a->strings["Delegates are able to manage all aspects of this account/page except for basic account settings. Please do not delegate your personal account to anybody that you do not trust completely."] = "Els delegats poden gestionar tots els aspectes d'aquest compte/pàgina, excepte per als ajustaments bàsics del compte. Si us plau, no deleguin el seu compte personal a ningú que no confiïn completament."; +$a->strings["Existing Page Managers"] = "Actuals Administradors de Pàgina"; +$a->strings["Existing Page Delegates"] = "Actuals Delegats de Pàgina"; +$a->strings["Potential Delegates"] = "Delegats Potencials"; +$a->strings["Add"] = "Afegir"; +$a->strings["No entries."] = "Sense entrades"; +$a->strings["Friend Suggestions"] = "Amics Suggerits"; +$a->strings["No suggestions available. If this is a new site, please try again in 24 hours."] = "Cap suggeriment disponible. Si això és un nou lloc, si us plau torna a intentar en 24 hores."; +$a->strings["Ignore/Hide"] = "Ignorar/Amagar"; +$a->strings["Global Directory"] = "Directori Global"; +$a->strings["Normal site view"] = "Vista normal del lloc"; +$a->strings["Admin - View all site entries"] = "Admin- Veure totes les entrades del lloc"; +$a->strings["Find on this site"] = "Trobat en aquest lloc"; +$a->strings["Site Directory"] = "Directori Local"; +$a->strings["Gender: "] = "Gènere:"; +$a->strings["No entries (some entries may be hidden)."] = "No hi ha entrades (algunes de les entrades poden estar amagades)."; +$a->strings["%s : Not a valid email address."] = "%s : No es una adreça de correu vàlida"; +$a->strings["Please join my network on %s"] = "Si us plau, uneix-te a la meva xarxa en %s"; +$a->strings["%s : Message delivery failed."] = "%s : Ha fallat l'entrega del missatge."; +$a->strings["%d message sent."] = array( + 0 => "%d missatge enviat", + 1 => "%d missatges enviats.", +); +$a->strings["You have no more invitations available"] = "No te més invitacions disponibles"; +$a->strings["Send invitations"] = "Enviant Invitacions"; +$a->strings["Enter email addresses, one per line:"] = "Entri adreçes de correu, una per línia:"; +$a->strings["Please join my social network on %s"] = "Per favor, uneix-te a la meva xarxa social en %s"; +$a->strings["To accept this invitation, please visit:"] = "Per acceptar aquesta invitació, si us plau, visiti:"; +$a->strings["You will need to supply this invitation code: \$invite_code"] = "Vostè haurà de proporcionar aquest codi d'invitació: \$invite_code"; +$a->strings["Once you have registered, please connect with me via my profile page at:"] = "Un cop registrat, si us plau contactar amb mi a través de la meva pàgina de perfil a:"; +$a->strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "Això pot ocorre ocasionalment si el contacte fa una petició per ambdues persones i ja han estat aprovades."; +$a->strings["Response from remote site was not understood."] = "La resposta des del lloc remot no s'entenia."; +$a->strings["Unexpected response from remote site: "] = "Resposta inesperada de lloc remot:"; +$a->strings["Confirmation completed successfully."] = "La confirmació s'ha completat correctament."; +$a->strings["Remote site reported: "] = "El lloc remot informa:"; +$a->strings["Temporary failure. Please wait and try again."] = "Fallada temporal. Si us plau, espereu i torneu a intentar."; +$a->strings["Introduction failed or was revoked."] = "La presentació va fallar o va ser revocada."; +$a->strings["Unable to set contact photo."] = "No es pot canviar la foto de contacte."; +$a->strings["%1\$s is now friends with %2\$s"] = "%1\$s és ara amic amb %2\$s"; +$a->strings["No user record found for '%s' "] = "No es troben registres d'usuari per a '%s'"; +$a->strings["Our site encryption key is apparently messed up."] = "La nostra clau de xifrat del lloc pel que sembla en mal estat."; +$a->strings["Empty site URL was provided or URL could not be decrypted by us."] = "Es va proporcionar una URL del lloc buida o la URL no va poder ser desxifrada per nosaltres."; +$a->strings["Contact record was not found for you on our site."] = "No s'han trobat registres del contacte al nostre lloc."; +$a->strings["Site public key not available in contact record for URL %s."] = "la clau pública del lloc no disponible en les dades del contacte per URL %s."; +$a->strings["The ID provided by your system is a duplicate on our system. It should work if you try again."] = "La ID proporcionada pel seu sistema és un duplicat en el nostre sistema. Hauria de treballar si intenta de nou."; +$a->strings["Unable to set your contact credentials on our system."] = "No es pot canviar les seves credencials de contacte en el nostre sistema."; +$a->strings["Unable to update your contact profile details on our system"] = "No es pot actualitzar els detalls del seu perfil de contacte en el nostre sistema"; +$a->strings["Connection accepted at %s"] = "Connexió acceptada en %s"; +$a->strings["Facebook disabled"] = "Facebook deshabilitat"; +$a->strings["Updating contacts"] = "Actualitzant contactes"; +$a->strings["Facebook API key is missing."] = "La clau del API de Facebook s'ha perdut."; +$a->strings["Facebook Connect"] = "Facebook Connectat"; +$a->strings["Install Facebook connector for this account."] = "Instal·lar el connector de Facebook per aquest compte."; +$a->strings["Remove Facebook connector"] = "Eliminar el connector de Faceboook"; +$a->strings["Re-authenticate [This is necessary whenever your Facebook password is changed.]"] = "Re-autentificar [Això és necessari cada vegada que la contrasenya de Facebook canvia.]"; +$a->strings["Post to Facebook by default"] = "Enviar a Facebook per defecte"; +$a->strings["Link all your Facebook friends and conversations on this website"] = "Enllaça tots els teus amics i les converses de Facebook en aquest lloc web"; +$a->strings["Facebook conversations consist of your profile wall and your friend stream."] = "Les converses de Facebook consisteixen en el perfil del mur i en el stream del seu amic."; +$a->strings["On this website, your Facebook friend stream is only visible to you."] = "En aquesta pàgina web, el stream del seu amic a Facebook només és visible per a vostè."; +$a->strings["The following settings determine the privacy of your Facebook profile wall on this website."] = "Les següents opcions determinen la privacitat del mur del seu perfil de Facebook en aquest lloc web."; +$a->strings["On this website your Facebook profile wall conversations will only be visible to you"] = "En aquesta pàgina web les seves converses al mur del perfil de Facebook només seran visible per a vostè"; +$a->strings["Do not import your Facebook profile wall conversations"] = "No importi les seves converses del mur del perfil de Facebook"; +$a->strings["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 website and your privacy settings on this website will be used to determine who may see the conversations."] = "Si opta per vincular les converses i deixar ambdues caselles sense marcar, el mur del seu perfil de Facebook es fusionarà amb el mur del seu perfil en aquest lloc web i la seva configuració de privacitat en aquest website serà utilitzada per determinar qui pot veure les converses."; +$a->strings["Comma separated applications to ignore"] = "Separats per comes les aplicacions a ignorar"; +$a->strings["Facebook"] = "Facebook"; +$a->strings["Facebook Connector Settings"] = "Ajustos del Connector de Facebook"; +$a->strings["Post to Facebook"] = "Enviament a Facebook"; +$a->strings["Post to Facebook cancelled because of multi-network access permission conflict."] = "Enviament a Facebook cancel·lat perque hi ha un conflicte de permisos d'accés multi-xarxa."; +$a->strings["Image: "] = "Imatge:"; +$a->strings["View on Friendica"] = "Vist en Friendica"; +$a->strings["Facebook post failed. Queued for retry."] = "Enviament a Facebook fracassat. En cua per a reintent."; +$a->strings["link"] = "enllaç"; +$a->strings["%d person likes this"] = array( + 0 => "%d persona li agrada això", + 1 => "%d persones els agrada això", +); +$a->strings["%d person doesn't like this"] = array( + 0 => "%d persona no li agrada això", + 1 => "%d persones no els agrada això", +); +$a->strings["Generate new key"] = "Generar nova clau"; +$a->strings["Widgets key"] = "Ginys clau"; +$a->strings["Widgets available"] = "Ginys disponibles"; +$a->strings["Connect on Friendica!"] = "Connectar en Friendica"; +$a->strings["YourLS Settings"] = "La Teva Configuració de LS"; +$a->strings["URL: http://"] = "URL: http://"; +$a->strings["Username:"] = "Nom d'usuari:"; +$a->strings["Password:"] = "Contrasenya:"; +$a->strings["Use SSL "] = "Emprar SSL"; +$a->strings["yourls Settings saved."] = "Guardar la seva configuració."; +$a->strings["Post to LiveJournal"] = "Missatge a Livejournal"; +$a->strings["LiveJournal Post Settings"] = "Configuració d'enviaments a Livejournal"; +$a->strings["Enable LiveJournal Post Plugin"] = "Habilitat el plugin d'enviaments a Livejournal"; +$a->strings["LiveJournal username"] = "Nom d'usuari a Livejournal"; +$a->strings["LiveJournal password"] = "Contrasenya a Livejournal"; +$a->strings["Post to LiveJournal by default"] = "Enviar per defecte a Livejournal"; +$a->strings["\"Not Safe For Work\" Settings"] = "Configuració de \"Not Safe For Work\""; +$a->strings["Enable NSFW filter"] = "Habilitar el filtre NSFW"; +$a->strings["Comma separated words to treat as NSFW"] = "Tractar com NSFW les paraules separades per comes "; +$a->strings["Use /expression/ to provide regular expressions"] = "Emprar /expressió/ per a proporcionar expressions regulars"; +$a->strings["NSFW Settings saved."] = "Configuració NSFW guardada."; +$a->strings["%s - Click to open/close"] = "%s - Clicar per obrir/tancar"; +$a->strings["Login"] = "Identifica't"; +$a->strings["OpenID"] = "OpenID"; +$a->strings["Last users"] = "Últims usuaris"; +$a->strings["Most active users"] = "Usuaris més actius"; +$a->strings["Last photos"] = "Últimes fotos"; +$a->strings["Last likes"] = "Últims \"m'agrada\""; +$a->strings["event"] = "esdeveniment"; +$a->strings["Latest users"] = "Últims usuaris"; +$a->strings["Allow to use your friendica id (%s) to connecto to external unhosted-enabled storage (like ownCloud). See RemoteStorage WebFinger"] = "Permetre l'ús del seu ID de friendica (%s) per Connectar a l'emmagatzematge extern (com ownCloud). Veure WebFinger RemoteStorage "; +$a->strings["Template URL (with {category})"] = "Plantilles de URL (amb {categoria})"; +$a->strings["OAuth end-point"] = "OAuth end-point"; +$a->strings["Api"] = "Api"; +$a->strings["Member since:"] = "Membre des de:"; +$a->strings["Three Dimensional Tic-Tac-Toe"] = "Tres en línia Tridimensional"; +$a->strings["3D Tic-Tac-Toe"] = "Tres en línia 3D"; +$a->strings["New game"] = "Nou joc"; +$a->strings["New game with handicap"] = "Nou joc modificat"; +$a->strings["Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. "] = "El joc del tres en línia tridimensional és com el joc tradicional, excepte que es juga en diversos nivells simultàniament."; +$a->strings["In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels."] = "En aquest cas hi ha tres nivells. Vostè guanya per aconseguir tres en una fila en qualsevol nivell, així com dalt, baix i en diagonal a través dels diferents nivells."; +$a->strings["The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage."] = "El joc modificat desactiva la posició central en el nivell mitjà perquè el jugador en aquesta posició té sovint un avantatge injust."; +$a->strings["You go first..."] = "Vostè va primer ..."; +$a->strings["I'm going first this time..."] = "Vaig primer aquesta vegada ..."; +$a->strings["You won!"] = "Has guanyat!"; +$a->strings["\"Cat\" game!"] = "Empat!"; +$a->strings["I won!"] = "Vaig guanyar!"; +$a->strings["Randplace Settings"] = "Configuració de Randplace"; +$a->strings["Enable Randplace Plugin"] = "Habilitar el Plugin de Randplace"; +$a->strings["Post to Dreamwidth"] = "Missatge a Dreamwidth"; +$a->strings["Dreamwidth Post Settings"] = "Configuració d'enviaments a Dreamwidth"; +$a->strings["Enable dreamwidth Post Plugin"] = "Habilitat el plugin d'enviaments a Dreamwidth"; +$a->strings["dreamwidth username"] = "Nom d'usuari a Dreamwidth"; +$a->strings["dreamwidth password"] = "Contrasenya a Dreamwidth"; +$a->strings["Post to dreamwidth by default"] = "Enviar per defecte a Dreamwidth"; +$a->strings["Post to Drupal"] = "Missatge a Drupal"; +$a->strings["Drupal Post Settings"] = "Configuració d'enviaments a Drupal"; +$a->strings["Enable Drupal Post Plugin"] = "Habilitar el Plugin d'Enviaments de Drupal"; +$a->strings["Drupal username"] = "Nom d'usuari de Drupal"; +$a->strings["Drupal password"] = "Contrasenya de Drupal"; +$a->strings["Post Type - article,page,or blog"] = "Tipus d'Enviament- article,pàgina, o blog"; +$a->strings["Drupal site URL"] = "URL del lloc Drupal"; +$a->strings["Drupal site uses clean URLS"] = "el Lloc Drupal empra URLS netes"; +$a->strings["Post to Drupal by default"] = "Enviar a Drupal per defecte"; +$a->strings["Post from Friendica"] = "Enviament des de Friendica"; +$a->strings["Geonames settings updated."] = "Actualitzada la configuració de Geonames."; +$a->strings["Geonames Settings"] = "Configuració de Geonames"; +$a->strings["Enable Geonames Plugin"] = "Habilitar Plugin de Geonames"; +$a->strings["Upload a file"] = "Carrega un arxiu"; +$a->strings["Drop files here to upload"] = "Deixa aquí el arxiu a carregar"; +$a->strings["Failed"] = "Fracassar"; +$a->strings["No files were uploaded."] = "No hi ha arxius carregats."; +$a->strings["Uploaded file is empty"] = "L'arxiu carregat està buit"; +$a->strings["File has an invalid extension, it should be one of "] = "Arxiu té una extensió no vàlida, ha de ser una de"; +$a->strings["Upload was cancelled, or server error encountered"] = "La pujada va ser cancel.lada, o es va trobar un error de servidor"; +$a->strings["OEmbed settings updated"] = "Actualitzar la configuració OEmbed"; +$a->strings["Use OEmbed for YouTube videos"] = "Empreu OEmbed per videos YouTube"; +$a->strings["URL to embed:"] = "Adreça URL del recurs"; +$a->strings["Impressum"] = "Impressum"; +$a->strings["Site Owner"] = "Propietari del lloc"; +$a->strings["Email Address"] = "Adreça de correu"; +$a->strings["Postal Address"] = "Adreça postal"; +$a->strings["The impressum addon needs to be configured!
    Please add at least the owner variable to your config file. For other variables please refer to the README file of the addon."] = "El complement impressum s'ha de configurar!
    Si us plau afegiu almenys la variable propietari al fitxer de configuració. Per a les altres variables, consulteu el fitxer README del complement."; +$a->strings["Site Owners Profile"] = "Perfil del Propietari del Lloc"; +$a->strings["Notes"] = "Notes"; +$a->strings["Report Bug"] = "Informar de problema"; +$a->strings["\"Blockem\" Settings"] = "Configuració de \"Bloqueig\""; +$a->strings["Comma separated profile URLS to block"] = "URLS dels perfils a bloquejar, separats per comes"; +$a->strings["BLOCKEM Settings saved."] = "Guardada la configuració de BLOQUEIG."; +$a->strings["Blocked %s - Click to open/close"] = "Bloquejar %s - Clica per obrir/tancar"; +$a->strings["Unblock Author"] = "Desbloquejar Autor"; +$a->strings["Block Author"] = "Bloquejar Autor"; +$a->strings["blockem settings updated"] = "Actualitzar la Configuració de bloqueig"; +$a->strings[":-)"] = ":-)"; +$a->strings[":-("] = ":-("; +$a->strings["lol"] = "lol"; +$a->strings["Quick Comment Settings"] = "Configuració Ràpida dels Comentaris"; +$a->strings["Quick comments are found near comment boxes, sometimes hidden. Click them to provide simple replies."] = "Comentaris ràpids es troben prop de les caixes de comentaris, de vegades ocults. Feu clic a ells per donar respostes simples."; +$a->strings["Enter quick comments, one per line"] = "Introduïu els comentaris ràpids, un per línia"; +$a->strings["Quick Comment settings saved."] = "Guardada la configuració de comentaris ràpids."; +$a->strings["Tile Server URL"] = "URL del servidor, del mosaico de servidores"; +$a->strings["A list of public tile servers"] = "Una llista de un mosaic de servidors públics"; +$a->strings["Default zoom"] = "Zoom per defecte"; +$a->strings["The default zoom level. (1:world, 18:highest)"] = "Nivell de zoom per defecte. (1: el món, 18: el més alt)"; +$a->strings["Editplain settings updated."] = "Actualitzar la configuració de Editplain."; +$a->strings["Editplain Settings"] = "Configuració de Editplain"; +$a->strings["Disable richtext status editor"] = "Deshabilitar l'editor d'estatus de texte enriquit"; +$a->strings["\"pageheader\" Settings"] = "Configuració de la capçalera de pàgina."; +$a->strings["pageheader Settings saved."] = "guardada la configuració de la capçalera de pàgina."; +$a->strings["View Source"] = "Veure les Fonts"; +$a->strings["Post to StatusNet"] = "Publica-ho a StatusNet"; +$a->strings["Please contact your site administrator.
    The provided API URL is not valid."] = "Si us plau, poseu-vos en contacte amb l'administrador del lloc.
    L'adreça URL de l'API proporcionada no és vàlida."; +$a->strings["We could not contact the StatusNet API with the Path you entered."] = "No hem pogut posar-nos en contacte amb l'API StatusNet amb la ruta que has introduït."; +$a->strings["StatusNet settings updated."] = "La configuració StatusNet actualitzada."; +$a->strings["StatusNet Posting Settings"] = "Configuració d'Enviaments per a StatusNet"; +$a->strings["Globally Available StatusNet OAuthKeys"] = "OAuthKeys de StatusNet Globalment Disponible"; +$a->strings["There are preconfigured OAuth key pairs for some StatusNet servers available. If you are useing one of them, please use these credentials. If not feel free to connect to any other StatusNet instance (see below)."] = "Hi ha preconfigurats parells clau OAuth per a alguns servidors StatusNet disponibles. Si està emprant un d'ells, utilitzi aquestes credencials. Si no és així no dubteu a connectar-se a qualsevol altra instància StatusNet (veure a baix)."; +$a->strings["Provide your own OAuth Credentials"] = "Proporcioneu les vostres credencials de OAuth"; +$a->strings["No consumer key pair for StatusNet found. Register your Friendica Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.
    Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendica installation at your favorited StatusNet installation."] = "no s'ha trobat cap parell \"consumer key\" per StatusNet. Registra el teu compte Friendica com un client d'escriptori en el seu compte StatusNet, copieu el parell de \"consumer key\" aquí i entri a l'arrel de la base de l'API.
    Abans de registrar el seu parell de claus OAuth demani a l'administrador si ja hi ha un parell de claus per a aquesta instal·lació de Friendica en la instal·lació del teu favorit StatusNet."; +$a->strings["OAuth Consumer Key"] = "OAuth Consumer Key"; +$a->strings["OAuth Consumer Secret"] = "OAuth Consumer Secret"; +$a->strings["Base API Path (remember the trailing /)"] = "Base API Path (recorda deixar / al final)"; +$a->strings["To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your public posts will be posted to StatusNet."] = "Per connectar al seu compte StatusNet, feu clic al botó de sota per obtenir un codi de seguretat StatusNet, que has de copiar a la casella de sota, i enviar el formulari. Només els missatges públics es publicaran en StatusNet."; +$a->strings["Log in with StatusNet"] = "Accedeixi com en StatusNet"; +$a->strings["Copy the security code from StatusNet here"] = "Copieu el codi de seguretat StatusNet aquí"; +$a->strings["Cancel Connection Process"] = "Cancel·lar el procés de connexió"; +$a->strings["Current StatusNet API is"] = "L'Actual StatusNet API és"; +$a->strings["Cancel StatusNet Connection"] = "Cancel·lar la connexió amb StatusNet"; +$a->strings["Currently connected to: "] = "Actualment connectat a: "; +$a->strings["If enabled all your public postings can be posted to the associated StatusNet account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Si està activat, tots els seus anuncis públics poden ser publicats en el compte StatusNet associat. Vostè pot optar per fer-ho per defecte (en aquest cas) o per cada missatge per separat en les opcions de comptabilització en escriure l'entrada."; +$a->strings["Note: Due your privacy settings (Hide your profile details from unknown viewers?) the link potentially included in public postings relayed to StatusNet will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "Nota: A causa de les seves opcions de privacitat (Amaga els detalls del teu perfil dels espectadors desconeguts? ) el vincle potencialment inclòs en anuncis públics transmesos a StatusNet conduirà el visitant a una pàgina en blanc en la que informarà al visitants que l'accés al seu perfil s'ha restringit."; +$a->strings["Allow posting to StatusNet"] = "Permetre enviaments a StatusNet"; +$a->strings["Send public postings to StatusNet by default"] = "Enviar missatges públics a StatusNet per defecte"; +$a->strings["Clear OAuth configuration"] = "Esborrar configuració de OAuth"; +$a->strings["API URL"] = "API URL"; +$a->strings["Post to Tumblr"] = "Publica-ho al Tumblr"; +$a->strings["Tumblr Post Settings"] = "Configuració d'Enviaments de Tumblr"; +$a->strings["Enable Tumblr Post Plugin"] = "Habilita el plugin de enviaments de Tumblr"; +$a->strings["Tumblr login"] = "Inici de sessió de Tumblr"; +$a->strings["Tumblr password"] = "Caontrasenya de Tumblr"; +$a->strings["Post to Tumblr by default"] = "Enviar a Tumblr per defecte"; +$a->strings["Numfriends settings updated."] = "Actualitzar la configuració de Numfriends."; +$a->strings["Numfriends Settings"] = "Configuració de Numfriends"; +$a->strings["How many contacts to display on profile sidebar"] = "Quants contactes per mostrar a la barra lateral el perfil"; +$a->strings["Gnot settings updated."] = "Configuració de Gnot actualitzada"; +$a->strings["Gnot Settings"] = "Configuració de Gnot"; +$a->strings["Allows threading of email comment notifications on Gmail and anonymising the subject line."] = "Permet crear fils de les notificacions de comentaris de correu electrònic a Gmail i anonimat de la línia d'assumpte."; +$a->strings["Enable this plugin/addon?"] = "Activar aquest plugin/aplicació?"; +$a->strings["[Friendica:Notify] Comment to conversation #%d"] = "[Friendica: Notifica] Conversació comentada #%d"; +$a->strings["Post to Wordpress"] = "Publica-ho al Wordpress"; +$a->strings["WordPress Post Settings"] = "Configuració d'enviaments a WordPress"; +$a->strings["Enable WordPress Post Plugin"] = "Habilitar Configuració d'Enviaments a WordPress"; +$a->strings["WordPress username"] = "Nom d'usuari de WordPress"; +$a->strings["WordPress password"] = "Contrasenya de WordPress"; +$a->strings["WordPress API URL"] = "WordPress API URL"; +$a->strings["Post to WordPress by default"] = "Enviar a WordPress per defecte"; +$a->strings["\"Show more\" Settings"] = "Configuració de \"Mostrar més\""; +$a->strings["Enable Show More"] = "Habilita Mostrar Més"; +$a->strings["Cutting posts after how much characters"] = "Tallar els missatges després de quants caràcters"; +$a->strings["Show More Settings saved."] = "Guardada la configuració de \"Mostra Més\"."; +$a->strings["Show More"] = "Mostra Més"; +$a->strings["This website is tracked using the Piwik analytics tool."] = "Aquest lloc web realitza un seguiment mitjançant la eina d'anàlisi Piwik."; +$a->strings["If you do not want that your visits are logged this way you can set a cookie to prevent Piwik from tracking further visits of the site (opt-out)."] = "Si no vol que les seves visites es transcribin d'aquesta manera vostè pot establir una cookie per evitar a Piwik a partir de noves visites del lloc web (opt-out)."; +$a->strings["Piwik Base URL"] = "URL Piwik Base"; +$a->strings["Absolute path to your Piwik installation. (without protocol (http/s), with trailing slash)"] = "Trajectoria absoluta per a la instal·lació de Piwik (sense el protocol (http/s), amb la barra final )"; +$a->strings["Site ID"] = "Lloc ID"; +$a->strings["Show opt-out cookie link?"] = "Mostra l'enllaç cookie opt-out?"; +$a->strings["Asynchronous tracking"] = "Seguiment asíncrono"; +$a->strings["Post to Twitter"] = "Publica-ho al Twitter"; +$a->strings["Twitter settings updated."] = "La configuració de Twitter actualitzada."; +$a->strings["Twitter Posting Settings"] = "Configuració d'Enviaments per a Twitter"; +$a->strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "No s'ha pogut emparellar cap clau \"consumer key\" per a Twitter. Si us plau, poseu-vos en contacte amb l'administrador del lloc."; +$a->strings["At this Friendica instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your public posts will be posted to Twitter."] = "En aquesta instància Friendica el plugin Twitter va ser habilitat, però encara no ha connectat el compte al seu compte de Twitter. Per a això feu clic al botó de sota per obtenir un PIN de Twitter que ha de copiar a la casella de sota i enviar el formulari. Només els missatges públics es publicaran a Twitter."; +$a->strings["Log in with Twitter"] = "Accedeixi com en Twitter"; +$a->strings["Copy the PIN from Twitter here"] = "Copieu el codi PIN de Twitter aquí"; +$a->strings["If enabled all your public postings can be posted to the associated Twitter account. You can choose to do so by default (here) or for every posting separately in the posting options when writing the entry."] = "Si està activat, tots els seus anuncis públics poden ser publicats en el corresponent compte de Twitter. Vostè pot optar per fer-ho per defecte (en aquest cas) o per cada missatge per separat en les opcions de comptabilització en escriure l'entrada."; +$a->strings["Note: Due your privacy settings (Hide your profile details from unknown viewers?) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "Nota: donada la seva configuració de privacitat ( Amaga els detalls del teu perfil dels espectadors desconeguts? ) el vincle potencialment inclòs en anuncis públics retransmesos a Twitter conduirà al visitant a una pàgina en blanc informar als visitants que l'accés al seu perfil s'ha restringit."; +$a->strings["Allow posting to Twitter"] = "Permetre anunci a Twitter"; +$a->strings["Send public postings to Twitter by default"] = "Enviar anuncis públics a Twitter per defecte"; +$a->strings["Consumer key"] = "Consumer key"; +$a->strings["Consumer secret"] = "Consumer secret"; +$a->strings["irc Chatroom"] = "irc Chatroom"; +$a->strings["Post to Posterous"] = "enviament a Posterous"; +$a->strings["Posterous Post Settings"] = "Configuració d'Enviaments a Posterous"; +$a->strings["Enable Posterous Post Plugin"] = "Habilitar plugin d'Enviament de Posterous"; +$a->strings["Posterous login"] = "Inici de sessió a Posterous"; +$a->strings["Posterous password"] = "Contrasenya a Posterous"; +$a->strings["Post to Posterous by default"] = "Enviar a Posterous per defecte"; +$a->strings["Theme settings"] = "Configuració de Temes"; +$a->strings["Alignment"] = "Adaptació"; +$a->strings["Left"] = "Esquerra"; +$a->strings["Center"] = "Centre"; +$a->strings["Gender:"] = "Gènere:"; +$a->strings["j F, Y"] = "j F, Y"; +$a->strings["j F"] = "j F"; +$a->strings["Birthday:"] = "Aniversari:"; +$a->strings["Age:"] = "Edat:"; +$a->strings["Status:"] = "Estatus:"; +$a->strings["Homepage:"] = "Pàgina web:"; +$a->strings["Tags:"] = "Etiquetes:"; +$a->strings["Religion:"] = "Religió:"; +$a->strings["About:"] = "Acerca de:"; +$a->strings["Hobbies/Interests:"] = "Aficiones/Intereses:"; +$a->strings["Contact information and Social Networks:"] = "Informació de contacte i Xarxes Socials:"; +$a->strings["Musical interests:"] = "Gustos musicals:"; +$a->strings["Books, literature:"] = "Llibres, literatura:"; +$a->strings["Television:"] = "Televisió:"; +$a->strings["Film/dance/culture/entertainment:"] = "Cinema/ball/cultura/entreteniments:"; +$a->strings["Love/Romance:"] = "Amor/sentiments:"; +$a->strings["Work/employment:"] = "Treball/ocupació:"; +$a->strings["School/education:"] = "Escola/formació"; +$a->strings["Unknown | Not categorised"] = "Desconegut/No categoritzat"; +$a->strings["Block immediately"] = "Bloquejar immediatament"; +$a->strings["Shady, spammer, self-marketer"] = "Sospitós, Femater, auto-publicitat"; +$a->strings["Known to me, but no opinion"] = "Conegut per mi, però sense opinió"; +$a->strings["OK, probably harmless"] = "Bé, probablement inofensiu"; +$a->strings["Reputable, has my trust"] = "Bona reputació, té la meva confiança"; +$a->strings["Frequently"] = "Freqüentment"; +$a->strings["Hourly"] = "Cada hora"; +$a->strings["Twice daily"] = "Dues vegades al dia"; +$a->strings["Daily"] = "Diari"; +$a->strings["Weekly"] = "Setmanal"; +$a->strings["Monthly"] = "Mensual"; +$a->strings["OStatus"] = "OStatus"; +$a->strings["RSS/Atom"] = "RSS/Atom"; +$a->strings["Zot!"] = "Zot!"; +$a->strings["LinkedIn"] = "LinkedIn"; +$a->strings["XMPP/IM"] = "XMPP/IM"; +$a->strings["MySpace"] = "MySpace"; +$a->strings["Male"] = "Home"; +$a->strings["Female"] = "Dona"; +$a->strings["Currently Male"] = "Actualment Home"; +$a->strings["Currently Female"] = "Actualment Dona"; +$a->strings["Mostly Male"] = "Habitualment Home"; +$a->strings["Mostly Female"] = "Habitualment Dona"; +$a->strings["Transgender"] = "Transgènere"; +$a->strings["Intersex"] = "Bisexual"; +$a->strings["Transsexual"] = "Transexual"; +$a->strings["Hermaphrodite"] = "Hermafrodita"; +$a->strings["Neuter"] = "Neutre"; +$a->strings["Non-specific"] = "No específicat"; +$a->strings["Other"] = "Altres"; +$a->strings["Undecided"] = "No Decidit"; +$a->strings["Males"] = "Home"; +$a->strings["Females"] = "Dona"; +$a->strings["Gay"] = "Gay"; +$a->strings["Lesbian"] = "Lesbiana"; +$a->strings["No Preference"] = "Sense Preferències"; +$a->strings["Bisexual"] = "Bisexual"; +$a->strings["Autosexual"] = "Autosexual"; +$a->strings["Abstinent"] = "Abstinent/a"; +$a->strings["Virgin"] = "Verge"; +$a->strings["Deviant"] = "Desviat/da"; +$a->strings["Fetish"] = "Fetixiste"; +$a->strings["Oodles"] = "Orgies"; +$a->strings["Nonsexual"] = "Asexual"; +$a->strings["Single"] = "Solter/a"; +$a->strings["Lonely"] = "Solitari"; +$a->strings["Available"] = "Disponible"; +$a->strings["Unavailable"] = "No Disponible"; +$a->strings["Dating"] = "De cites"; +$a->strings["Unfaithful"] = "Infidel"; +$a->strings["Sex Addict"] = "Adicte al sexe"; +$a->strings["Friends"] = "Amics/Amigues"; +$a->strings["Friends/Benefits"] = "Amics íntims"; +$a->strings["Casual"] = "Oportunista"; +$a->strings["Engaged"] = "Promès"; +$a->strings["Married"] = "Casat"; +$a->strings["Partners"] = "Socis"; +$a->strings["Cohabiting"] = "Cohabitant"; +$a->strings["Happy"] = "Feliç"; +$a->strings["Not Looking"] = "No Cerco"; +$a->strings["Swinger"] = "Parella Liberal"; +$a->strings["Betrayed"] = "Traït/da"; +$a->strings["Separated"] = "Separat/da"; +$a->strings["Unstable"] = "Inestable"; +$a->strings["Divorced"] = "Divorciat/da"; +$a->strings["Widowed"] = "Vidu/a"; +$a->strings["Uncertain"] = "Incert"; +$a->strings["Complicated"] = "Complicat"; +$a->strings["Don't care"] = "No t'interessa"; +$a->strings["Ask me"] = "Pregunta'm"; +$a->strings["Starts:"] = "Inici:"; +$a->strings["Finishes:"] = "Acaba:"; +$a->strings["(no subject)"] = "(sense assumpte)"; +$a->strings["noreply"] = "no contestar"; +$a->strings["prev"] = "Prev"; +$a->strings["first"] = "primer"; +$a->strings["last"] = "Últim"; +$a->strings["next"] = "Proper"; +$a->strings["No contacts"] = "Sense contactes"; +$a->strings["%d Contact"] = array( + 0 => "%d Contacte", + 1 => "%d Contactes", +); +$a->strings["Search"] = "Cercar"; +$a->strings["Monday"] = "Dilluns"; +$a->strings["Tuesday"] = "Dimarts"; +$a->strings["Wednesday"] = "Dimecres"; +$a->strings["Thursday"] = "Dijous"; +$a->strings["Friday"] = "Divendres"; +$a->strings["Saturday"] = "Dissabte"; +$a->strings["Sunday"] = "Diumenge"; +$a->strings["January"] = "Gener"; +$a->strings["February"] = "Febrer"; +$a->strings["March"] = "Març"; +$a->strings["April"] = "Abril"; +$a->strings["May"] = "Maig"; +$a->strings["June"] = "Juny"; +$a->strings["July"] = "Juliol"; +$a->strings["August"] = "Agost"; +$a->strings["September"] = "Setembre"; +$a->strings["October"] = "Octubre"; +$a->strings["November"] = "Novembre"; +$a->strings["December"] = "Desembre"; +$a->strings["bytes"] = "bytes"; +$a->strings["Select an alternate language"] = "Sel·lecciona un idioma alternatiu"; +$a->strings["default"] = "per defecte"; +$a->strings["activity"] = "activitat"; +$a->strings["comment"] = "comentari"; +$a->strings["post"] = "missatge"; +$a->strings["Sharing notification from Diaspora network"] = "Compartint la notificació de la xarxa Diàspora"; +$a->strings["Attachments:"] = "Adjunts:"; +$a->strings["[Relayed] Comment authored by %s from network %s"] = "[Retransmès] Comentari escrit per %s des de la xarxa %s"; +$a->strings["view full size"] = "Veure a mida completa"; +$a->strings["Embedded content"] = "Contingut incrustat"; +$a->strings["Embedding disabled"] = "Incrustacions deshabilitades"; +$a->strings["A deleted group with this name was revived. Existing item permissions may apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Un grup eliminat amb aquest nom va ser restablert. Els permisos dels elements existents poden aplicar-se a aquest grup i tots els futurs membres. Si això no és el que pretén, si us plau, crei un altre grup amb un nom diferent."; +$a->strings["Everybody"] = "Tothom"; +$a->strings["edit"] = "editar"; +$a->strings["Groups"] = "Grups"; +$a->strings["Edit group"] = "Editar grup"; +$a->strings["Create a new group"] = "Crear un nou grup"; +$a->strings["Logout"] = "Sortir"; +$a->strings["End this session"] = "Termina sessió"; +$a->strings["Status"] = "Estatus"; +$a->strings["Your posts and conversations"] = "Els teus anuncis i converses"; +$a->strings["Your profile page"] = "La seva pàgina de perfil"; +$a->strings["Photos"] = "Fotos"; +$a->strings["Your photos"] = "Les seves fotos"; +$a->strings["Your events"] = "Els seus esdeveniments"; +$a->strings["Personal notes"] = "Notes personals"; +$a->strings["Your personal photos"] = "Les seves fotos personals"; +$a->strings["Sign in"] = "Accedeix"; +$a->strings["Home Page"] = "Pàgina d'Inici"; +$a->strings["Create an account"] = "Crear un compte"; +$a->strings["Help and documentation"] = "Ajuda i documentació"; +$a->strings["Apps"] = "Aplicacions"; +$a->strings["Addon applications, utilities, games"] = "Afegits: aplicacions, utilitats, jocs"; +$a->strings["Search site content"] = "Busca contingut en el lloc"; +$a->strings["Conversations on this site"] = "Converses en aquest lloc"; +$a->strings["Directory"] = "Directori"; +$a->strings["People directory"] = "Directori de gent"; +$a->strings["Conversations from your friends"] = "Converses dels teus amics"; +$a->strings["Friend Requests"] = "Sol·licitud d'Amistat"; +$a->strings["See all notifications"] = "Veure totes les notificacions"; +$a->strings["Mark all system notifications seen"] = "Marcar totes les notificacions del sistema com a vistes"; +$a->strings["Private mail"] = "Correu privat"; +$a->strings["Manage"] = "Gestionar"; +$a->strings["Manage other pages"] = "Gestiona altres pàgines"; +$a->strings["Profiles"] = "Perfils"; +$a->strings["Manage/edit profiles"] = "Gestiona/edita perfils"; +$a->strings["Manage/edit friends and contacts"] = "Gestiona/edita amics i contactes"; +$a->strings["Admin"] = "Admin"; +$a->strings["Site setup and configuration"] = "Ajustos i configuració del lloc"; +$a->strings["Nothing new here"] = "Res nou aquí"; +$a->strings["Add New Contact"] = "Afegir Nou Contacte"; +$a->strings["Enter address or web location"] = "Introdueixi adreça o ubicació web"; +$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Exemple: bob@example.com, http://example.com/barbara"; +$a->strings["Invite Friends"] = "Invita Amics"; +$a->strings["%d invitation available"] = array( + 0 => "%d invitació disponible", + 1 => "%d invitacions disponibles", +); +$a->strings["Find People"] = "Trobar Gent"; +$a->strings["Enter name or interest"] = "Introdueixi nom o aficions"; +$a->strings["Connect/Follow"] = "Connectar/Seguir"; +$a->strings["Examples: Robert Morgenstein, Fishing"] = "Exemples: Robert Morgenstein, Pescar"; +$a->strings["Similar Interests"] = "Aficions Similars"; +$a->strings["Networks"] = "Xarxes"; +$a->strings["All Networks"] = "totes les Xarxes"; +$a->strings["Logged out."] = "Has sortit"; +$a->strings["Miscellaneous"] = "Miscel·lania"; +$a->strings["year"] = "any"; +$a->strings["month"] = "mes"; +$a->strings["day"] = "dia"; +$a->strings["never"] = "mai"; +$a->strings["less than a second ago"] = "Fa menys d'un segon"; +$a->strings["years"] = "anys"; +$a->strings["months"] = "mesos"; +$a->strings["week"] = "setmana"; +$a->strings["weeks"] = "setmanes"; +$a->strings["days"] = "dies"; +$a->strings["hour"] = "hora"; +$a->strings["hours"] = "hores"; +$a->strings["minute"] = "minut"; +$a->strings["minutes"] = "minuts"; +$a->strings["second"] = "segon"; +$a->strings["seconds"] = "segons"; +$a->strings["%1\$d %2\$s ago"] = " fa %1\$d %2\$s"; +$a->strings["From: "] = "Des de:"; +$a->strings["$1 wrote:"] = "$1 va escrivir:"; +$a->strings["Image/photo"] = "Imatge/foto"; +$a->strings["Cannot locate DNS info for database server '%s'"] = "No put trobar informació de DNS del servidor de base de dades '%s'"; +$a->strings["[no subject]"] = "[Sense assumpte]"; +$a->strings["Visible to everybody"] = "Visible per tothom"; +$a->strings["show"] = "mostra"; +$a->strings["don't show"] = "no mostris"; +$a->strings["Friendica Notification"] = "Notificacions de Friendica"; +$a->strings["Thank You,"] = "Gràcies,"; +$a->strings["%s Administrator"] = "%s Administrador"; +$a->strings["%s "] = "%s "; +$a->strings["[Friendica:Notify] New mail received at %s"] = "[Friendica: Notifica] nou correu rebut a %s"; +$a->strings["%s sent you a new private message at %s."] = "%s t'ha enviat un nou missatge privat en %s"; +$a->strings["%s sent you %s."] = "%s t'ha enviat %s."; +$a->strings["a private message"] = "un missatge privat"; +$a->strings["Please visit %s to view and/or reply to your private messages."] = "Per favor, visiteu %s per a veure i/o respondre els teus missatges privats."; +$a->strings["%s's"] = "%s's"; +$a->strings["your"] = "tu"; +$a->strings["[Friendica:Notify] Comment to conversation #%d by %s"] = "[Friendica:Notifica] Conversació comentada #%d per %s"; +$a->strings["%s commented on an item/conversation you have been following."] = "%s ha comentat un element/conversació que estas seguint."; +$a->strings["%s commented on %s."] = "%s comentat a %s."; +$a->strings["Please visit %s to view and/or reply to the conversation."] = "Si us pau, visiteu %s per a veure i/o respondre la conversació."; +$a->strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica:Notifica] %s enviat al teu mur del perfil"; +$a->strings["%s posted to your profile wall at %s"] = "%s enviat al teu mur de perfil %s"; +$a->strings["%s posted to %s"] = "%s enviat a %s"; +$a->strings["your profile wall."] = "El teu perfil del mur."; +$a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica:Notifica] %s t'ha etiquetat"; +$a->strings["%s tagged you at %s"] = "%s t'ha etiquetat en %s"; +$a->strings["%s %s."] = "%s %s."; +$a->strings["tagged you"] = "Etiquetat"; +$a->strings["[Friendica:Notify] %s tagged your post"] = "[Friendica:Notifica] %s ha etiquetat el teu missatge"; +$a->strings["%s tagged your post at %s"] = "%s Ha etiquetat un missatge teu en %s"; +$a->strings["%s tagged %s"] = "%s etiquetat %s"; +$a->strings["your post"] = "El teu missatge"; +$a->strings["[Friendica:Notify] Introduction received"] = "[Friendica:Notifica] Presentacio rebuda"; +$a->strings["You've received an introduction from '%s' at %s"] = "Has rebut una presentació de %s en %s"; +$a->strings["You've received %s from %s."] = "Has rebut %s de %s"; +$a->strings["an introduction"] = "Una presentació"; +$a->strings["You may visit their profile at %s"] = "Pot visitar el seu perfil en %s"; +$a->strings["Please visit %s to approve or reject the introduction."] = "Si us plau visiteu %s per aprovar o rebutjar la presentació."; +$a->strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica:Notifica] Suggerencia d'amistat rebuda"; +$a->strings["You've received a friend suggestion from '%s' at %s"] = "Has rebut una suggerencia d'amistat de %s en %s"; +$a->strings["You've received %s for %s from %s."] = "Has rebut %s per %s de %s."; +$a->strings["a friend suggestion"] = "Un suggerencia d'amistat"; +$a->strings["Name:"] = "Nom:"; +$a->strings["Photo:"] = "Foto:"; +$a->strings["Please visit %s to approve or reject the suggestion."] = "Si us plau, visiteu %s per aprovar o rebutjar la suggerencia."; +$a->strings["A new person is sharing with you at "] = "Una persona nova està compartint amb tú en"; +$a->strings["You have a new follower at "] = "Tens un nou seguidor a "; +$a->strings["image/photo"] = "Imatge/foto"; +$a->strings["Welcome "] = "Benvingut"; +$a->strings["Please upload a profile photo."] = "Per favor, carrega una foto per al perfil"; +$a->strings["Welcome back "] = "Benvingut de nou "; +$a->strings["View status"] = "Veure estatus"; +$a->strings["View profile"] = "Veure perfil"; +$a->strings["View photos"] = "Veure fotos"; +$a->strings["View recent"] = "Veure recent"; +$a->strings["Send PM"] = "Enviar Missatge Privat"; +$a->strings["post/item"] = "anunci/element"; +$a->strings["%1\$s marked %2\$s's %3\$s as favorite"] = "%1\$s marcat %2\$s's %3\$s com favorit"; +$a->strings["Select"] = "Selecionar"; +$a->strings["View %s's profile @ %s"] = "Veure perfil de %s @ %s"; +$a->strings["%s from %s"] = "%s des de %s"; +$a->strings["View in context"] = "Veure en context"; +$a->strings["%d comment"] = array( + 0 => "%d comentari", + 1 => "%d comentaris", +); +$a->strings["show more"] = "Mostrar més"; +$a->strings["like"] = "Agrada"; +$a->strings["dislike"] = "Desagrada"; +$a->strings["Share this"] = "Compartir això"; +$a->strings["share"] = "Compartir"; +$a->strings["add star"] = "Afegir a favorits"; +$a->strings["remove star"] = "Esborrar favorit"; +$a->strings["toggle star status"] = "Canviar estatus de favorit"; +$a->strings["starred"] = "favorit"; +$a->strings["add tag"] = "afegir etiqueta"; +$a->strings["to"] = "a"; +$a->strings["Wall-to-Wall"] = "Mur-a-Mur"; +$a->strings["via Wall-To-Wall:"] = "via Mur-a-Mur"; +$a->strings["Delete Selected Items"] = "Esborra els Elements Seleccionats"; +$a->strings["%s likes this."] = "a %s agrada això."; +$a->strings["%s doesn't like this."] = "a %s desagrada això."; +$a->strings["%2\$d people like this."] = "Li agrada a%2\$d persones ."; +$a->strings["%2\$d people don't like this."] = "No li agrada%2\$d persones ."; +$a->strings["and"] = "i"; +$a->strings[", and %d other people"] = ", i altres %d persones"; +$a->strings["%s like this."] = "a %s le gusta esto."; +$a->strings["%s don't like this."] = "a %s no le gusta esto."; +$a->strings["Visible to everybody"] = "Visible per a tothom"; +$a->strings["Please enter a video link/URL:"] = "Per favor , introdueixi el enllaç/URL del video"; +$a->strings["Please enter an audio link/URL:"] = "Per favor , introdueixi el enllaç/URL del audio:"; +$a->strings["Tag term:"] = "Terminis de l'etiqueta:"; +$a->strings["Where are you right now?"] = "On ets ara?"; +$a->strings["Enter a title for this item"] = "Escriviu un títol per a aquest article"; +$a->strings["upload photo"] = "carregar fotos"; +$a->strings["attach file"] = "adjuntar arxiu"; +$a->strings["web link"] = "enllaç de web"; +$a->strings["Insert video link"] = "Insertar enllaç de video"; +$a->strings["video link"] = "enllaç de video"; +$a->strings["Insert audio link"] = "Insertar enllaç de audio"; +$a->strings["audio link"] = "enllaç de audio"; +$a->strings["set location"] = "establir la ubicació"; +$a->strings["clear location"] = "netejar ubicació"; +$a->strings["permissions"] = "Permissos"; +$a->strings["Delete this item?"] = "Esborrar aquest element?"; +$a->strings["show fewer"] = "Mostrar menys"; +$a->strings["Create a New Account"] = "Crear un Nou Compte"; +$a->strings["Nickname or Email address: "] = "Malnom o Adreça de correu:"; +$a->strings["Password: "] = "Contrasenya:"; +$a->strings["Or login using OpenID: "] = "O accedixi emprant OpenID:"; +$a->strings["Forgot your password?"] = "Oblidà la contrasenya?"; +$a->strings["Edit profile"] = "Editar perfil"; +$a->strings["g A l F d"] = "g A l F d"; +$a->strings["F d"] = "F d"; +$a->strings["Birthday Reminders"] = "Recordatori d'Aniversaris"; +$a->strings["Birthdays this week:"] = "Aniversari aquesta setmana"; +$a->strings["[today]"] = "[avui]"; +$a->strings["Event Reminders"] = "Recordatori d'Esdeveniments"; +$a->strings["Events this week:"] = "Esdeveniments aquesta setmana"; +$a->strings["[No description]"] = "[sense descripció]"; diff --git a/view/ca/wall_received_eml.tpl b/view/ca/wall_received_eml.tpl new file mode 100755 index 000000000..0b5c150fd --- /dev/null +++ b/view/ca/wall_received_eml.tpl @@ -0,0 +1,18 @@ + +Apreciat/da $username, + + '$from' ha escrit quelcom en el mur del teu perfil. + +----- +$body +----- + +Accedeix a $siteurl per a veure o esborrar l'element: + +$display + + + $sitename + + + -- cgit v1.2.3 From b86a08166cf0db891392b2877c290231a3143238 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 8 Mar 2012 16:30:45 -0800 Subject: theme info file for testbubble --- view/theme/testbubble/theme.php | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 view/theme/testbubble/theme.php diff --git a/view/theme/testbubble/theme.php b/view/theme/testbubble/theme.php new file mode 100644 index 000000000..87ce4dd73 --- /dev/null +++ b/view/theme/testbubble/theme.php @@ -0,0 +1,9 @@ + + */ -- cgit v1.2.3 From 6ae5962b009cfd88925eae721e24bf895e8b78d5 Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 9 Mar 2012 01:49:12 +0000 Subject: More improved transparency for smilies --- images/beer_mug.gif | Bin 1032 -> 1021 bytes images/smiley-Oo.gif | Bin 1045 -> 1003 bytes images/smiley-brokenheart.gif | Bin 616 -> 598 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/images/beer_mug.gif b/images/beer_mug.gif index a047d1987..9a3e05192 100644 Binary files a/images/beer_mug.gif and b/images/beer_mug.gif differ diff --git a/images/smiley-Oo.gif b/images/smiley-Oo.gif index a125d0ff2..a15d97427 100755 Binary files a/images/smiley-Oo.gif and b/images/smiley-Oo.gif differ diff --git a/images/smiley-brokenheart.gif b/images/smiley-brokenheart.gif index 79ca0c31b..971b57fd9 100755 Binary files a/images/smiley-brokenheart.gif and b/images/smiley-brokenheart.gif differ -- cgit v1.2.3 From feda3cfc960c317c91f483238c29fce629f494e6 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Fri, 9 Mar 2012 02:59:13 +0100 Subject: fixed star-bug --- view/theme/diabook-blue/icons/starred.png | Bin 0 -> 1617 bytes view/theme/diabook-blue/icons/unstarred.png | Bin 358 -> 468 bytes view/theme/diabook-blue/style.css | 9 +++------ view/theme/diabook-blue/wall_item.tpl | 9 +++------ view/theme/diabook-blue/wallwall_item.tpl | 9 +++------ view/theme/diabook/icons/starred.png | Bin 0 -> 1617 bytes view/theme/diabook/icons/unstarred.png | Bin 358 -> 468 bytes view/theme/diabook/style.css | 11 ++++------- view/theme/diabook/wall_item.tpl | 9 +++------ view/theme/diabook/wallwall_item.tpl | 9 +++------ 10 files changed, 19 insertions(+), 37 deletions(-) create mode 100755 view/theme/diabook-blue/icons/starred.png create mode 100755 view/theme/diabook/icons/starred.png diff --git a/view/theme/diabook-blue/icons/starred.png b/view/theme/diabook-blue/icons/starred.png new file mode 100755 index 000000000..72a49c157 Binary files /dev/null and b/view/theme/diabook-blue/icons/starred.png differ diff --git a/view/theme/diabook-blue/icons/unstarred.png b/view/theme/diabook-blue/icons/unstarred.png index ca2072414..ba3183f5c 100755 Binary files a/view/theme/diabook-blue/icons/unstarred.png and b/view/theme/diabook-blue/icons/unstarred.png differ diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index e272191c2..5b7a3f3d6 100644 --- a/view/theme/diabook-blue/style.css +++ b/view/theme/diabook-blue/style.css @@ -102,12 +102,11 @@ .icon.recycle { background-image: url("../../../view/theme/diabook-blue/icons/recycle.png");} .icon.remote-link { background-image: url("../../../view/theme/diabook-blue/icons/remote.png");} .icon.tagged { background-image: url("../../../view/theme/diabook-blue/icons/tagged.png");} -.icon.unstarred { background-image: url("../../../view/theme/diabook-blue/icons/star.png");} -.icon.star { background-image: url("../../../view/theme/diabook-blue/icons/star.png");} +.star-item.icon.unstarred { background-image: url("../../../view/theme/diabook-blue/icons/unstarred.png");} +.star-item.icon.starred { background-image: url("../../../view/theme/diabook-blue/icons/starred.png");} .icon.link { background-image: url("../../../view/theme/diabook-blue/icons/link.png");} .icon.lock { background-image: url("../../../view/theme/diabook-blue/icons/lock.png");} .icon.unlock { background-image: url("../../../view/theme/diabook-blue/icons/unlock.png");} -.icon.isstar { background-image: url("../../../view/theme/diabook-blue/icons/isstar.png");} .icon.language { background-image: url("../../../view/theme/diabook-blue/icons/language.png");} @@ -1078,9 +1077,7 @@ section { top: -10px; width: 16px; } -.unstarred { - display: none; -} + .wall-item-container { display: table; width: 780px; diff --git a/view/theme/diabook-blue/wall_item.tpl b/view/theme/diabook-blue/wall_item.tpl index 0a02ba812..b1a014949 100644 --- a/view/theme/diabook-blue/wall_item.tpl +++ b/view/theme/diabook-blue/wall_item.tpl @@ -1,6 +1,5 @@ {{ if $item.indent }}{{ else }}
    - $item.star.starred {{ if $item.lock }}$item.lock{{ endif }}
    @@ -62,11 +61,9 @@ {{ if $item.star }} - - $item.star.do - - $item.star.undo - $item.star.tagger + + $item.star.do + {{ endif }} {{ if $item.plink }}$item.plink.title{{ endif }} diff --git a/view/theme/diabook-blue/wallwall_item.tpl b/view/theme/diabook-blue/wallwall_item.tpl index effb7273f..603a908c5 100644 --- a/view/theme/diabook-blue/wallwall_item.tpl +++ b/view/theme/diabook-blue/wallwall_item.tpl @@ -1,6 +1,5 @@ {{ if $item.indent }}{{ else }}
    - $item.star.starred {{ if $item.lock }}$item.lock{{ endif }}
    @@ -68,11 +67,9 @@ {{ if $item.star }} - - $item.star.do - - $item.star.undo - $item.star.tagger + + $item.star.do + {{ endif }} {{ if $item.plink }}$item.plink.title{{ endif }} diff --git a/view/theme/diabook/icons/starred.png b/view/theme/diabook/icons/starred.png new file mode 100755 index 000000000..72a49c157 Binary files /dev/null and b/view/theme/diabook/icons/starred.png differ diff --git a/view/theme/diabook/icons/unstarred.png b/view/theme/diabook/icons/unstarred.png index ca2072414..ba3183f5c 100755 Binary files a/view/theme/diabook/icons/unstarred.png and b/view/theme/diabook/icons/unstarred.png differ diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 768ce1370..bccfea149 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -101,13 +101,12 @@ .icon.pencil { background-image: url("../../../view/theme/diabook/icons/pencil.png");} .icon.recycle { background-image: url("../../../view/theme/diabook/icons/recycle.png");} .icon.remote-link { background-image: url("../../../view/theme/diabook/icons/remote.png");} -.icon.tagged { background-image: url("../../../view/theme/diabook/icons/tagged.png");} -.icon.unstarred { background-image: url("../../../view/theme/diabook/icons/star.png");} -.icon.star { background-image: url("../../../view/theme/diabook/icons/star.png");} +.icon.tagged { background-image: url("../../../view/theme/diabook/icons/tagged.png");} +.star-item.icon.unstarred { background-image: url("../../../view/theme/diabook/icons/unstarred.png");} +.star-item.icon.starred { background-image: url("../../../view/theme/diabook/icons/starred.png");} .icon.link { background-image: url("../../../view/theme/diabook/icons/link.png");} .icon.lock { background-image: url("../../../view/theme/diabook/icons/lock.png");} .icon.unlock { background-image: url("../../../view/theme/diabook/icons/unlock.png");} -.icon.isstar { background-image: url("../../../view/theme/diabook/icons/isstar.png");} .icon.language { background-image: url("../../../view/theme/diabook/icons/language.png");} @@ -1077,9 +1076,7 @@ section { top: -10px; width: 16px; } -.unstarred { - display: none; -} + .wall-item-container { display: table; width: 780px; diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index 0a02ba812..b1a014949 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -1,6 +1,5 @@ {{ if $item.indent }}{{ else }}
    - $item.star.starred {{ if $item.lock }}$item.lock{{ endif }}
    @@ -62,11 +61,9 @@ {{ if $item.star }} - - $item.star.do - - $item.star.undo - $item.star.tagger + + $item.star.do + {{ endif }} {{ if $item.plink }}$item.plink.title{{ endif }} diff --git a/view/theme/diabook/wallwall_item.tpl b/view/theme/diabook/wallwall_item.tpl index effb7273f..603a908c5 100644 --- a/view/theme/diabook/wallwall_item.tpl +++ b/view/theme/diabook/wallwall_item.tpl @@ -1,6 +1,5 @@ {{ if $item.indent }}{{ else }}
    - $item.star.starred {{ if $item.lock }}$item.lock{{ endif }}
    @@ -68,11 +67,9 @@ {{ if $item.star }} - - $item.star.do - - $item.star.undo - $item.star.tagger + + $item.star.do + {{ endif }} {{ if $item.plink }}$item.plink.title{{ endif }} -- cgit v1.2.3 From 722f631d153cda58ed68f772a39e823bec9b9676 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Fri, 9 Mar 2012 04:14:24 +0100 Subject: add info --- view/theme/diabook-blue/theme.php | 8 ++++++++ view/theme/diabook/theme.php | 6 ++++++ 2 files changed, 14 insertions(+) create mode 100755 view/theme/diabook-blue/theme.php create mode 100644 view/theme/diabook/theme.php diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php new file mode 100755 index 000000000..4bfbaef7f --- /dev/null +++ b/view/theme/diabook-blue/theme.php @@ -0,0 +1,8 @@ + Date: Fri, 9 Mar 2012 04:38:20 +0100 Subject: removed info --- view/theme/diabook-blue/theme.php | 8 -------- view/theme/diabook/theme.php | 6 ------ 2 files changed, 14 deletions(-) delete mode 100755 view/theme/diabook-blue/theme.php delete mode 100644 view/theme/diabook/theme.php diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php deleted file mode 100755 index 4bfbaef7f..000000000 --- a/view/theme/diabook-blue/theme.php +++ /dev/null @@ -1,8 +0,0 @@ - Date: Fri, 9 Mar 2012 00:00:56 -0500 Subject: i consider dispy pretty stable at this point, so i'm removing the experimental file Signed-off-by: Simon L'nu --- view/theme/dispy/experimental | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 view/theme/dispy/experimental diff --git a/view/theme/dispy/experimental b/view/theme/dispy/experimental deleted file mode 100755 index e69de29bb..000000000 -- cgit v1.2.3 From 2050f886cc020c50684df14830bc98e40200309c Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 8 Mar 2012 21:14:41 -0800 Subject: keep tony from talking to himself --- htconfig.php | 2 +- include/conversation.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/htconfig.php b/htconfig.php index 423d5d369..f52aed2b1 100755 --- a/htconfig.php +++ b/htconfig.php @@ -69,7 +69,7 @@ $a->config['system']['rino_encrypt'] = true; // allowed themes (change this from admin panel after installation) -$a->config['system']['allowed_themes'] = 'dispy,quattro,testbubble,vier,darkbubble,darkzero,duepuntozero,greenzero,purplezero,quattro-green,slackr,diabook'; +$a->config['system']['allowed_themes'] = 'dispy,quattro,testbubble,vier,darkbubble,darkzero,duepuntozero,greenzero,purplezero,quattro-green,slackr,diabook,diabook-blue'; // default system theme diff --git a/include/conversation.php b/include/conversation.php index b458923e5..f1134975a 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -502,7 +502,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $template = $wallwall; $commentww = 'ww'; } - if((! $item['wall']) && (strlen($item['owner-link'])) && ($item['owner-link'] != $item['author-link'])) { + if((! $item['wall']) && (strlen($item['owner-link'])) && (! link_compare($item['owner-link'],$item['author-link']))) { // Could be anybody. -- cgit v1.2.3 From 81f5b0e2df3a8c9bda2101d5e5cc4d179da7141c Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 9 Mar 2012 00:26:54 -0500 Subject: [theme:dispy] optimised the pngs: bet. 0 and 30% savings in size. style label elemnts. Signed-off-by: Simon L'nu --- view/theme/dispy/icons.png | Bin 28752 -> 18998 bytes view/theme/dispy/next.png | Bin 891 -> 590 bytes view/theme/dispy/notifications.png | Bin 3115 -> 2494 bytes view/theme/dispy/premium.png | Bin 2317 -> 2304 bytes view/theme/dispy/prev.png | Bin 853 -> 593 bytes view/theme/dispy/style.css | 30 +++++++++++++++++++++++++----- view/theme/dispy/tag.png | Bin 632 -> 571 bytes 7 files changed, 25 insertions(+), 5 deletions(-) mode change 100755 => 100644 view/theme/dispy/next.png mode change 100755 => 100644 view/theme/dispy/premium.png mode change 100755 => 100644 view/theme/dispy/prev.png diff --git a/view/theme/dispy/icons.png b/view/theme/dispy/icons.png index a59a80358..2f0459bd3 100644 Binary files a/view/theme/dispy/icons.png and b/view/theme/dispy/icons.png differ diff --git a/view/theme/dispy/next.png b/view/theme/dispy/next.png old mode 100755 new mode 100644 index 353e2e72a..5e0067c4b Binary files a/view/theme/dispy/next.png and b/view/theme/dispy/next.png differ diff --git a/view/theme/dispy/notifications.png b/view/theme/dispy/notifications.png index 37ebdf1e3..66c432eac 100644 Binary files a/view/theme/dispy/notifications.png and b/view/theme/dispy/notifications.png differ diff --git a/view/theme/dispy/premium.png b/view/theme/dispy/premium.png old mode 100755 new mode 100644 index 1ad601c0f..d2855a4f5 Binary files a/view/theme/dispy/premium.png and b/view/theme/dispy/premium.png differ diff --git a/view/theme/dispy/prev.png b/view/theme/dispy/prev.png old mode 100755 new mode 100644 index 0ae6022af..10b10d74f Binary files a/view/theme/dispy/prev.png and b/view/theme/dispy/prev.png differ diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index f7a1b295c..0977d5fcb 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -45,12 +45,18 @@ body { font-size: 16px; line-height: 1.1em; } - body, button, input, select, textarea { font-family: sans-serif; color: #222; background-color: rgb(254,254,254); - background-color: rgba(254,254,254,255); +} +select { + border: 1px #555 dotted; + padding: 3px; + margin: 2px; +} +option { + padding: 3px; } /* remember to define focus styles! */ :focus { @@ -1992,7 +1998,9 @@ div[id$="wrapper"] br { text-decoration: none; text-align: center; } - +#peoplefind-sidebar form { + margin-bottom: 10px; +} #sidebar-new-group:hover { /*background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b20202), color-stop(1, #d60808) );*/ /*background: -moz-linear-gradient( center top, #b20202 5%, #d60808 100% );*/ @@ -2003,6 +2011,18 @@ div[id$="wrapper"] br { position: relative; top: 1px; } +#side-peoplefind-url { + background-color: #e5e0cf; + color: #666; + border: 1px 666 solid; + margin-right: 3px; + width: 75%; +} +#side-peoplefind-url:hover, #side-peoplefind-url:focus { + background-color: #efefef; + color: #222; + border: 1px 333 solid; +} .nets-ul { list-style-type: none; padding-left: 0px; @@ -2110,7 +2130,7 @@ div[id$="wrapper"] br { overflow: auto; width: 100%; } -.field label { +.field label, label { float: left; width: 275px; display: block; @@ -2122,7 +2142,7 @@ div[id$="wrapper"] br { background: #eee; vertical-align: middle; } -.field input { +.field input, input[type="text"] { width: 250px; height: 25px; border: 1px #999 solid; diff --git a/view/theme/dispy/tag.png b/view/theme/dispy/tag.png index aca10707a..9b5a7223e 100644 Binary files a/view/theme/dispy/tag.png and b/view/theme/dispy/tag.png differ -- cgit v1.2.3 From 312c17504515b0f6c77b2e59ef8569dbf8d048fa Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 9 Mar 2012 00:31:17 -0800 Subject: bug in check for private email comment to public conversation prevents authenticated visitor from seeing comments that should be allowed --- include/conversation.php | 31 ++++++++----------------------- include/security.php | 1 + 2 files changed, 9 insertions(+), 23 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index f1134975a..526c6ea00 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -179,9 +179,11 @@ function localize_item(&$item){ * that are based on unique features of the calling module. * */ - if(!function_exists('conversation')){ + +if(!function_exists('conversation')) { function conversation(&$a, $items, $mode, $update, $preview = false) { + require_once('bbcode.php'); $profile_owner = 0; @@ -418,26 +420,6 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $toplevelprivate = (($toplevelpost && $item['private']) ? true : false); $item_writeable = (($item['writable'] || $item['self']) ? true : false); - // DISABLED - /* - if($blowhard == $item['cid'] && (! $item['self']) && ($mode != 'profile') && ($mode != 'notes')) { - $blowhard_count ++; - if($blowhard_count == 3) { - $o .= '' . ''; - $blowhard_count = 0; - } - // END DISABLED - */ - $comments_seen = 0; $comments_collapsed = false; $comment_lastcollapsed = false; @@ -445,13 +427,16 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $threadsid++; $threads[$threadsid]['id'] = $item['item_id']; + $threads[$threadsid]['private'] = $item['private']; $threads[$threadsid]['items'] = array(); } else { - // prevent private email from leaking into public conversation - if((! $toplevelpost) && (! $toplevelprivate) && ($item['private']) && ($profile_owner != local_user())) + + // prevent private email reply to public conversation from leaking. + if($item['private'] && ! $threads[$threadsid]['private']) continue; + $comments_seen ++; $comment_lastcollapsed = false; $comment_firstcollapsed = false; diff --git a/include/security.php b/include/security.php index f469dad66..8c536b656 100755 --- a/include/security.php +++ b/include/security.php @@ -283,6 +283,7 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null) ); } } + return $sql; } -- cgit v1.2.3 From 3878b58f0d19a60cb51b65e2c4b02ccb242ba73b Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 9 Mar 2012 00:47:10 -0800 Subject: bug #324 - tinymce used for mail even if editplain being used. --- mod/message.php | 6 ++++ view/msg-header.tpl | 79 +++++++++++++++++++++-------------------------------- 2 files changed, 37 insertions(+), 48 deletions(-) diff --git a/mod/message.php b/mod/message.php index 4b494e906..91db5baef 100755 --- a/mod/message.php +++ b/mod/message.php @@ -129,10 +129,16 @@ function message_content(&$a) { $o .= $header; + $plaintext = false; + if(intval(get_pconfig(local_user(),'system','plaintext'))) + $plaintext = true; + + $tpl = get_markup_template('msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array( '$baseurl' => $a->get_baseurl(), + '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'), '$nickname' => $a->user['nickname'], '$linkurl' => t('Please enter a link URL:') )); diff --git a/view/msg-header.tpl b/view/msg-header.tpl index a74154c19..b5c78345a 100755 --- a/view/msg-header.tpl +++ b/view/msg-header.tpl @@ -2,55 +2,38 @@ -- cgit v1.2.3 From 42d622d6bfb5768205573cb6b149340d28f46886 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 9 Mar 2012 02:50:57 -0800 Subject: recover contacts total count which got lost --- mod/contacts.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mod/contacts.php b/mod/contacts.php index c99ac1452..001bf12af 100755 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -447,9 +447,10 @@ function contacts_content(&$a) { $r = q("SELECT COUNT(*) AS `total` FROM `contact` WHERE `uid` = %d AND `pending` = 0 $sql_extra $sql_extra2 ", intval($_SESSION['uid'])); - if(count($r)) + if(count($r)) { $a->set_pager_total($r[0]['total']); - + $total = $r[0]['total']; + } @@ -518,7 +519,7 @@ function contacts_content(&$a) { $o .= replace_macros($tpl,array( '$header' => t('Contacts') . (($nets) ? ' - ' . network_to_name($nets) : ''), '$tabs' => $t, - '$total' => $r[0]['total'], + '$total' => $total, '$search' => $search_hdr, '$desc' => t('Search your contacts'), '$finding' => (strlen($search) ? t('Finding: ') . "'" . $search . "'" : ""), -- cgit v1.2.3 From f84c191f8df126b95d8a41f70e785a9592018390 Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Fri, 9 Mar 2012 12:16:58 +0100 Subject: added some tests --- build.xml | 28 +++++------ tests/xss_filter_test.php | 116 +++++++++++++++++++++++++++++++++++----------- util/db_update.php | 2 +- 3 files changed, 102 insertions(+), 44 deletions(-) diff --git a/build.xml b/build.xml index 0f5745072..a61a5123d 100644 --- a/build.xml +++ b/build.xml @@ -1,16 +1,6 @@ - - - set_include_path( - get_include_path() . PATH_SEPARATOR - . 'include' . PATH_SEPARATOR - . 'library' . PATH_SEPARATOR - . 'library/phpsec' . PATH_SEPARATOR - . '.' ); - - @@ -32,16 +22,17 @@ - + + @@ -50,9 +41,9 @@ - + @@ -75,6 +66,9 @@ + + + diff --git a/tests/xss_filter_test.php b/tests/xss_filter_test.php index e480ef7ec..00e97cf98 100644 --- a/tests/xss_filter_test.php +++ b/tests/xss_filter_test.php @@ -1,16 +1,26 @@ '; @@ -53,12 +63,12 @@ class AntiXSSTest extends PHPUnit_Framework_TestCase { $autoname1=autoname(-23); $this->assertEquals(0, count($autoname1)); } - -// public function testAutonameMaxLength() { -// $autoname2=autoname(PHP_INT_MAX); -// $this->assertEquals(PHP_INT_MAX, count($autoname2)); -// } - + + // public function testAutonameMaxLength() { + // $autoname2=autoname(PHP_INT_MAX); + // $this->assertEquals(PHP_INT_MAX, count($autoname2)); + // } + public function testAutonameLength1() { $autoname3=autoname(1); $this->assertEquals(1, count($autoname3)); @@ -68,7 +78,7 @@ class AntiXSSTest extends PHPUnit_Framework_TestCase { *xmlify and unxmlify */ public function testXmlify() { - $text="I want to break\n this!11!"; + $text="I want to break\n this!11!"; $xml=xmlify($text); //test whether it actually may be part of a xml document $retext=unxmlify($text); @@ -85,7 +95,7 @@ class AntiXSSTest extends PHPUnit_Framework_TestCase { $this->assertEquals(12, hex2bin(bin2hex(12))); $this->assertEquals(PHP_INT_MAX, hex2bin(bin2hex(PHP_INT_MAX))); } - + /** * test expand_acl */ @@ -93,7 +103,7 @@ class AntiXSSTest extends PHPUnit_Framework_TestCase { $text="<1><2><3>"; $this->assertEquals(array(1, 2, 3), expand_acl($text)); } - + public function testExpandAclBigNumber() { $text="<1><279012><15>"; $this->assertEquals(array(1, 279012, 15), expand_acl($text)); @@ -133,19 +143,19 @@ class AntiXSSTest extends PHPUnit_Framework_TestCase { $text="Another> invalid> string>"; //should be invalid $this->assertEquals(array(), expand_acl($text)); } - + public function testExpandAclOpenOnly() { $text="assertEquals(array(), expand_acl($text)); } - + public function testExpandAclNoMatching1() { $text=" invalid "; //should be invalid $this->assertEquals(array(), expand_acl($text)); } - + public function testExpandAclNoMatching2() { - $text="<1>2><3>"; + $text="<1>2><3>"; $this->assertEquals(array(), expand_acl($text)); } @@ -166,7 +176,7 @@ class AntiXSSTest extends PHPUnit_Framework_TestCase { $this->assertTrue(attribute_contains($testAttr, "class3")); $this->assertFalse(attribute_contains($testAttr, "class2")); } - + public function testAttributeContainsEmpty() { $testAttr=""; $this->assertFalse(attribute_contains($testAttr, "class2")); @@ -176,17 +186,71 @@ class AntiXSSTest extends PHPUnit_Framework_TestCase { $testAttr="--... %\$ä() /(=?}"; $this->assertFalse(attribute_contains($testAttr, "class2")); } - + /** * test get_tags */ + public function testGetTagsShortPerson() { + $text="hi @Mike"; + + $tags=get_tags($text); + + $this->assertEquals("@Mike", $tags[0]); + } + + public function testGetTagsShortTag() { + $text="This is a #test_case"; + + $tags=get_tags($text); + + $this->assertEquals("#test_case", $tags[0]); + } + + public function testGetTagsShortTagAndPerson() { + $text="hi @Mike This is a #test_case"; + + $tags=get_tags($text); + + $this->assertEquals("@Mike", $tags[0]); + $this->assertEquals("#test_case", $tags[1]); + } + + public function testGetTagsShortTagAndPersonSpecialChars() { + $text="hi @Mike, This is a #test_case."; + + $tags=get_tags($text); + + $this->assertEquals("@Mike", $tags[0]); + $this->assertEquals("#test_case", $tags[1]); + } + + public function testGetTagsPersonOnly() { + $text="@Mike I saw the Theme Dev group was created."; + + $tags=get_tags($text); + + $this->assertEquals("@Mike", $tags[0]); + } + + public function testGetTags2Persons1TagSpecialChars() { + $text="hi @Mike, I'm just writing #test_cases, so" + ." so @somebody@friendica.com may change #things."; + + $tags=get_tags($text); + + $this->assertEquals("@Mike", $tags[0]); + $this->assertEquals("#test_cases", $tags[1]); + $this->assertEquals("@somebody@friendica.com", $tags[2]); + $this->assertEquals("#things", $tags[3]); + } + public function testGetTags() { $text="hi @Mike, I'm just writing #test_cases, " ." so @somebody@friendica.com may change #things. Of course I " ."look for a lot of #pitfalls, like #tags at the end of a sentence " ."@comment. I hope noone forgets about @fullstops.because that might" ." break #things. @Mike@campino@friendica.eu is also #nice, isn't it? " - ."Now, add a @first_last tag. "; + ."Now, add a @first_last tag. "; //check whether this are all variants (no, auto-stuff is missing). $tags=get_tags($text); @@ -210,8 +274,8 @@ class AntiXSSTest extends PHPUnit_Framework_TestCase { $tags=get_tags(""); $this->assertEquals(0, count($tags)); } -//function qp, quick and dirty?? -//get_mentions -//get_contact_block, bis Zeile 538 + //function qp, quick and dirty?? + //get_mentions + //get_contact_block, bis Zeile 538 } ?> diff --git a/util/db_update.php b/util/db_update.php index a6177324a..35620e80b 100755 --- a/util/db_update.php +++ b/util/db_update.php @@ -26,7 +26,7 @@ echo "New DB VERSION: " . DB_UPDATE_VERSION . "\n"; if($build != DB_UPDATE_VERSION) { echo "Updating database..."; - check_config(); + check_config($a); echo "Done\n"; } -- cgit v1.2.3 From 21589c5eced7869d7105fa439c433e6a12c89531 Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Fri, 9 Mar 2012 12:18:37 +0100 Subject: changed a test string --- tests/xss_filter_test.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/xss_filter_test.php b/tests/xss_filter_test.php index 00e97cf98..35d3b1be9 100644 --- a/tests/xss_filter_test.php +++ b/tests/xss_filter_test.php @@ -225,11 +225,11 @@ class AntiXSSTest extends PHPUnit_Framework_TestCase { } public function testGetTagsPersonOnly() { - $text="@Mike I saw the Theme Dev group was created."; + $text="@Test I saw the Theme Dev group was created."; $tags=get_tags($text); - $this->assertEquals("@Mike", $tags[0]); + $this->assertEquals("@Test", $tags[0]); } public function testGetTags2Persons1TagSpecialChars() { -- cgit v1.2.3 From f8042d04451905486fb766c520736f4060ae9a12 Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Fri, 9 Mar 2012 12:57:11 +0100 Subject: splitted test cases. --- mod/item.php | 212 +++++++++++++++++++++++----------------------- tests/get_tags_test.php | 147 ++++++++++++++++++++++++++++++++ tests/xss_filter_test.php | 88 ------------------- 3 files changed, 255 insertions(+), 192 deletions(-) create mode 100644 tests/get_tags_test.php diff --git a/mod/item.php b/mod/item.php index 81d7c753b..a9edf0da6 100755 --- a/mod/item.php +++ b/mod/item.php @@ -425,110 +425,7 @@ function item_post(&$a) { if(count($tags)) { foreach($tags as $tag) { - - if(isset($profile)) - unset($profile); - if(strpos($tag,'#') === 0) { - if(strpos($tag,'[url=')) - continue; - $basetag = str_replace('_',' ',substr($tag,1)); - $body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body); - - $newtag = '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]'; - if(! stristr($str_tags,$newtag)) { - if(strlen($str_tags)) - $str_tags .= ','; - $str_tags .= $newtag; - } - continue; - } - if(strpos($tag,'@') === 0) { - if(strpos($tag,'[url=')) - continue; - $stat = false; - $name = substr($tag,1); - if((strpos($name,'@')) || (strpos($name,'http://'))) { - $newname = $name; - $links = @lrdd($name); - if(count($links)) { - foreach($links as $link) { - if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page') - $profile = $link['@attributes']['href']; - if($link['@attributes']['rel'] === 'salmon') { - if(strlen($inform)) - $inform .= ','; - $inform .= 'url:' . str_replace(',','%2c',$link['@attributes']['href']); - } - } - } - } - else { - $newname = $name; - $alias = ''; - $tagcid = 0; - if(strrpos($newname,'+')) { - $tagcid = intval(substr($newname,strrpos($newname,'+') + 1)); - if(strpos($name,' ')) - $name = substr($name,0,strpos($name,' ')); - } - if($tagcid) { - $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($tagcid), - intval($profile_uid) - ); - } - elseif(strstr($name,'_') || strstr($name,' ')) { - $newname = str_replace('_',' ',$name); - $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1", - dbesc($newname), - intval($profile_uid) - ); - } - else { - $r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1", - dbesc($name), - dbesc($name), - intval($profile_uid) - ); - } - if(count($r)) { - $profile = $r[0]['url']; - if($r[0]['network'] === 'stat') { - $newname = $r[0]['nick']; - $stat = true; - if($r[0]['alias']) - $alias = $r[0]['alias']; - } - else - $newname = $r[0]['name']; - if(strlen($inform)) - $inform .= ','; - $inform .= 'cid:' . $r[0]['id']; - } - } - if($profile) { - $body = str_replace('@' . $name, '@' . '[url=' . $profile . ']' . $newname . '[/url]', $body); - $profile = str_replace(',','%2c',$profile); - $newtag = '@[url=' . $profile . ']' . $newname . '[/url]'; - if(! stristr($str_tags,$newtag)) { - if(strlen($str_tags)) - $str_tags .= ','; - $str_tags .= $newtag; - } - - // Status.Net seems to require the numeric ID URL in a mention if the person isn't - // subscribed to you. But the nickname URL is OK if they are. Grrr. We'll tag both. - - if(strlen($alias)) { - $newtag = '@[url=' . $alias . ']' . $newname . '[/url]'; - if(! stristr($str_tags,$newtag)) { - if(strlen($str_tags)) - $str_tags .= ','; - $str_tags .= $newtag; - } - } - } - } + handle_tag($body, $inform, $str_tags, $profile_uid, $tag); } } @@ -922,3 +819,110 @@ function item_content(&$a) { drop_item($a->argv[2]); } } + +function handle_body(&$body, &$inform, &$str_tags, $profile_uid, $tag) { + $profile=null; + if(isset($profile)) + unset($profile); + if(strpos($tag,'#') === 0) { + if(strpos($tag,'[url=')) + continue; + $basetag = str_replace('_',' ',substr($tag,1)); + $body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body); + + $newtag = '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]'; + if(! stristr($str_tags,$newtag)) { + if(strlen($str_tags)) + $str_tags .= ','; + $str_tags .= $newtag; + } + continue; + } + if(strpos($tag,'@') === 0) { + if(strpos($tag,'[url=')) + continue; + $stat = false; + $name = substr($tag,1); + if((strpos($name,'@')) || (strpos($name,'http://'))) { + $newname = $name; + $links = @lrdd($name); + if(count($links)) { + foreach($links as $link) { + if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page') + $profile = $link['@attributes']['href']; + if($link['@attributes']['rel'] === 'salmon') { + if(strlen($inform)) + $inform .= ','; + $inform .= 'url:' . str_replace(',','%2c',$link['@attributes']['href']); + } + } + } + } + else { + $newname = $name; + $alias = ''; + $tagcid = 0; + if(strrpos($newname,'+')) { + $tagcid = intval(substr($newname,strrpos($newname,'+') + 1)); + if(strpos($name,' ')) + $name = substr($name,0,strpos($name,' ')); + } + if($tagcid) { + $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($tagcid), + intval($profile_uid) + ); + } + elseif(strstr($name,'_') || strstr($name,' ')) { + $newname = str_replace('_',' ',$name); + $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1", + dbesc($newname), + intval($profile_uid) + ); + } + else { + $r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1", + dbesc($name), + dbesc($name), + intval($profile_uid) + ); + } + if(count($r)) { + $profile = $r[0]['url']; + if($r[0]['network'] === 'stat') { + $newname = $r[0]['nick']; + $stat = true; + if($r[0]['alias']) + $alias = $r[0]['alias']; + } + else + $newname = $r[0]['name']; + if(strlen($inform)) + $inform .= ','; + $inform .= 'cid:' . $r[0]['id']; + } + } + if($profile) { + $body = str_replace('@' . $name, '@' . '[url=' . $profile . ']' . $newname . '[/url]', $body); + $profile = str_replace(',','%2c',$profile); + $newtag = '@[url=' . $profile . ']' . $newname . '[/url]'; + if(! stristr($str_tags,$newtag)) { + if(strlen($str_tags)) + $str_tags .= ','; + $str_tags .= $newtag; + } + + // Status.Net seems to require the numeric ID URL in a mention if the person isn't + // subscribed to you. But the nickname URL is OK if they are. Grrr. We'll tag both. + + if(strlen($alias)) { + $newtag = '@[url=' . $alias . ']' . $newname . '[/url]'; + if(! stristr($str_tags,$newtag)) { + if(strlen($str_tags)) + $str_tags .= ','; + $str_tags .= $newtag; + } + } + } + } +} diff --git a/tests/get_tags_test.php b/tests/get_tags_test.php new file mode 100644 index 000000000..a458f0fbc --- /dev/null +++ b/tests/get_tags_test.php @@ -0,0 +1,147 @@ +15, 'network'=>'stat', 'alias'=>'Mike', 'nick'=>'Mike', 'url'=>"http://justatest.de")); + +} +function dbesc($str) { + echo $str; +} + +class GetTagsTest extends PHPUnit_Framework_TestCase { + + public function setUp() { + set_include_path( + get_include_path() . PATH_SEPARATOR + . 'include' . PATH_SEPARATOR + . 'library' . PATH_SEPARATOR + . 'library/phpsec' . PATH_SEPARATOR + . '.' ); + } + + /** + * test with one Person tag + */ + public function testGetTagsShortPerson() { + $text="hi @Mike"; + + $tags=get_tags($text); + + $inform=''; + $str_tags=''; + handle_body($text, $inform, $str_tags, 11, $tags[0]); + + $this->assertEquals("@Mike", $tags[0]); + $this->assertEquals($text, "hi @[url=http://justatest.de]Mike[/url]"); + } + + /** + * Test with one hash tag. + */ + public function testGetTagsShortTag() { + $text="This is a #test_case"; + + $tags=get_tags($text); + + $this->assertEquals("#test_case", $tags[0]); + } + + /** + * test with a person and a hash tag + */ + public function testGetTagsShortTagAndPerson() { + $text="hi @Mike This is a #test_case"; + + $tags=get_tags($text); + + $inform=''; + $str_tags=''; + handle_body($text, $inform, $str_tags, 11, $tags[0]); + + $this->assertEquals("hi @[url=http://justatest.de]Mike[/url] This is a #test_case", $text); + $this->assertEquals("@Mike", $tags[0]); + $this->assertEquals("#test_case", $tags[1]); + } + + /** + * test with a person, a hash tag and some special chars. + */ + public function testGetTagsShortTagAndPersonSpecialChars() { + $text="hi @Mike, This is a #test_case."; + + $tags=get_tags($text); + + $this->assertEquals("@Mike", $tags[0]); + $this->assertEquals("#test_case", $tags[1]); + } + + /** + * Test with a person tag and text behind it. + */ + public function testGetTagsPersonOnly() { + $text="@Test I saw the Theme Dev group was created."; + + $tags=get_tags($text); + + $this->assertEquals("@Test", $tags[0]); + } + + /** + * test with two persons and one special tag. + */ + public function testGetTags2Persons1TagSpecialChars() { + $text="hi @Mike, I'm just writing #test_cases, so" + ." so @somebody@friendica.com may change #things."; + + $tags=get_tags($text); + + $this->assertEquals("@Mike", $tags[0]); + $this->assertEquals("#test_cases", $tags[1]); + $this->assertEquals("@somebody@friendica.com", $tags[2]); + $this->assertEquals("#things", $tags[3]); + } + + /** + * test with a long text. + */ + public function testGetTags() { + $text="hi @Mike, I'm just writing #test_cases, " + ." so @somebody@friendica.com may change #things. Of course I " + ."look for a lot of #pitfalls, like #tags at the end of a sentence " + ."@comment. I hope noone forgets about @fullstops.because that might" + ." break #things. @Mike@campino@friendica.eu is also #nice, isn't it? " + ."Now, add a @first_last tag. "; + //TODO check whether this are all variants (no, auto-stuff is missing). + + $tags=get_tags($text); + + $this->assertEquals("@Mike", $tags[0]); + $this->assertEquals("#test_cases", $tags[1]); + $this->assertEquals("@somebody@friendica.com", $tags[2]); + $this->assertEquals("#things", $tags[3]); + $this->assertEquals("#pitfalls", $tags[4]); + $this->assertEquals("#tags", $tags[5]); + $this->assertEquals("@comment", $tags[6]); + $this->assertEquals("@fullstops", $tags[7]); + $this->assertEquals("#things", $tags[8]); + $this->assertEquals("@Mike", $tags[9]); + $this->assertEquals("@campino@friendica.eu", $tags[10]); + $this->assertEquals("#nice", $tags[11]); + $this->assertEquals("@first_last", $tags[12]); + } + + /** + * test with an empty string + */ + public function testGetTagsEmpty() { + $tags=get_tags(""); + $this->assertEquals(0, count($tags)); + } +} \ No newline at end of file diff --git a/tests/xss_filter_test.php b/tests/xss_filter_test.php index 35d3b1be9..fe944c2a7 100644 --- a/tests/xss_filter_test.php +++ b/tests/xss_filter_test.php @@ -1,6 +1,5 @@ assertFalse(attribute_contains($testAttr, "class2")); } - /** - * test get_tags - */ - public function testGetTagsShortPerson() { - $text="hi @Mike"; - - $tags=get_tags($text); - - $this->assertEquals("@Mike", $tags[0]); - } - - public function testGetTagsShortTag() { - $text="This is a #test_case"; - - $tags=get_tags($text); - - $this->assertEquals("#test_case", $tags[0]); - } - - public function testGetTagsShortTagAndPerson() { - $text="hi @Mike This is a #test_case"; - - $tags=get_tags($text); - - $this->assertEquals("@Mike", $tags[0]); - $this->assertEquals("#test_case", $tags[1]); - } - - public function testGetTagsShortTagAndPersonSpecialChars() { - $text="hi @Mike, This is a #test_case."; - - $tags=get_tags($text); - - $this->assertEquals("@Mike", $tags[0]); - $this->assertEquals("#test_case", $tags[1]); - } - - public function testGetTagsPersonOnly() { - $text="@Test I saw the Theme Dev group was created."; - - $tags=get_tags($text); - - $this->assertEquals("@Test", $tags[0]); - } - - public function testGetTags2Persons1TagSpecialChars() { - $text="hi @Mike, I'm just writing #test_cases, so" - ." so @somebody@friendica.com may change #things."; - - $tags=get_tags($text); - - $this->assertEquals("@Mike", $tags[0]); - $this->assertEquals("#test_cases", $tags[1]); - $this->assertEquals("@somebody@friendica.com", $tags[2]); - $this->assertEquals("#things", $tags[3]); - } - - public function testGetTags() { - $text="hi @Mike, I'm just writing #test_cases, " - ." so @somebody@friendica.com may change #things. Of course I " - ."look for a lot of #pitfalls, like #tags at the end of a sentence " - ."@comment. I hope noone forgets about @fullstops.because that might" - ." break #things. @Mike@campino@friendica.eu is also #nice, isn't it? " - ."Now, add a @first_last tag. "; - //check whether this are all variants (no, auto-stuff is missing). - - $tags=get_tags($text); - - $this->assertEquals("@Mike", $tags[0]); - $this->assertEquals("#test_cases", $tags[1]); - $this->assertEquals("@somebody@friendica.com", $tags[2]); - $this->assertEquals("#things", $tags[3]); - $this->assertEquals("#pitfalls", $tags[4]); - $this->assertEquals("#tags", $tags[5]); - $this->assertEquals("@comment", $tags[6]); - $this->assertEquals("@fullstops", $tags[7]); - $this->assertEquals("#things", $tags[8]); - $this->assertEquals("@Mike", $tags[9]); - $this->assertEquals("@campino@friendica.eu", $tags[10]); - $this->assertEquals("#nice", $tags[11]); - $this->assertEquals("@first_last", $tags[12]); - } - - public function testGetTagsEmpty() { - $tags=get_tags(""); - $this->assertEquals(0, count($tags)); - } //function qp, quick and dirty?? //get_mentions //get_contact_block, bis Zeile 538 -- cgit v1.2.3 From 9f441731af6929272b27ad9097235aab82f25b29 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Fri, 9 Mar 2012 13:23:38 +0100 Subject: fixes in css --- view/theme/diabook-blue/comment_item.tpl | 35 -------------------------------- view/theme/diabook-blue/nav.tpl | 4 ++-- view/theme/diabook-blue/style.css | 16 +++++++++------ view/theme/diabook/comment_item.tpl | 35 -------------------------------- view/theme/diabook/nav.tpl | 4 ++-- view/theme/diabook/style.css | 15 ++++++++------ 6 files changed, 23 insertions(+), 86 deletions(-) delete mode 100644 view/theme/diabook-blue/comment_item.tpl delete mode 100644 view/theme/diabook/comment_item.tpl diff --git a/view/theme/diabook-blue/comment_item.tpl b/view/theme/diabook-blue/comment_item.tpl deleted file mode 100644 index 85176732b..000000000 --- a/view/theme/diabook-blue/comment_item.tpl +++ /dev/null @@ -1,35 +0,0 @@ -
    -
    - - - - - - - -
    - $mytitle -
    -
    - - - {{ if $qcomment }} -
      - {{ for $qcomment as $qc }} - - {{ endfor }} -
    - {{ endif }} - -
    - - -
    -
    - -
    diff --git a/view/theme/diabook-blue/nav.tpl b/view/theme/diabook-blue/nav.tpl index d0ff06673..289581c36 100644 --- a/view/theme/diabook-blue/nav.tpl +++ b/view/theme/diabook-blue/nav.tpl @@ -140,8 +140,8 @@
    -
    $langselector
    -
    +
    $langselector
    +
    diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index 5b7a3f3d6..7f5fe1fec 100644 --- a/view/theme/diabook-blue/style.css +++ b/view/theme/diabook-blue/style.css @@ -515,7 +515,7 @@ header { top: 0px; margin: 0px; padding: 0px; - width: 20%; + width: 22%; height: 32px; background: #1872a2; background-color: #1872a2; @@ -529,8 +529,9 @@ header #site-location { } header #banner { overflow: hidden; - text-align: center; - width: 100%; + text-align: banner; + width: 82%; + margin-left: 25%; } header #banner a, header #banner a:active, @@ -556,12 +557,12 @@ nav { width: 80%; height: 32px; position: fixed; - left: 20%; + left: 22%; top: 0px; padding: 0px; background: #1872a2; - color: #1872a2; - z-index: 100; + color: #ffffff; + z-index: 99; border-bottom: 1px; border-bottom-color: black; border-bottom-style: inset; @@ -1036,6 +1037,9 @@ section { width: 800px; padding: 0px 0px 0px 12px; } +#contact-edit-end { + margin-top: 140%; + } .pager { padding: 10px; text-align: center; diff --git a/view/theme/diabook/comment_item.tpl b/view/theme/diabook/comment_item.tpl deleted file mode 100644 index 85176732b..000000000 --- a/view/theme/diabook/comment_item.tpl +++ /dev/null @@ -1,35 +0,0 @@ -
    -
    - - - - - - - -
    - $mytitle -
    -
    - - - {{ if $qcomment }} -
      - {{ for $qcomment as $qc }} - - {{ endfor }} -
    - {{ endif }} - -
    - - -
    -
    - -
    diff --git a/view/theme/diabook/nav.tpl b/view/theme/diabook/nav.tpl index d0ff06673..289581c36 100644 --- a/view/theme/diabook/nav.tpl +++ b/view/theme/diabook/nav.tpl @@ -140,8 +140,8 @@
    -
    $langselector
    -
    +
    $langselector
    +
    diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index bccfea149..6e3909ab4 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -515,7 +515,7 @@ header { top: 0px; margin: 0px; padding: 0px; - width: 20%; + width: 22%; height: 32px; background: #000; z-index: 100; @@ -528,8 +528,9 @@ header #site-location { } header #banner { overflow: hidden; - text-align: center; - width: 100%; + text-align: left; + width: 82%%; + margin-left: 25%; } header #banner a, header #banner a:active, @@ -555,12 +556,12 @@ nav { width: 80%; height: 32px; position: fixed; - left: 20%; + left: 22%; top: 0px; padding: 0px; background: #000; color: #ffffff; - z-index: 100; + z-index: 99; -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); @@ -1035,12 +1036,14 @@ section { width: 800px; padding: 0px 0px 0px 12px; } +#contact-edit-end { + margin-top: 140%; + } .pager { padding: 10px; text-align: center; font-size: 1.0em; } - .tabs { background-position: 0 -20px; -- cgit v1.2.3 From 8fe4645a5d97a66b823744248698c624f7146d5b Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Fri, 9 Mar 2012 18:15:27 +0100 Subject: add js to hide nav-menus, when clicked outside --- view/theme/diabook-blue/icons/starred.png | Bin 1617 -> 501 bytes view/theme/diabook-blue/theme.php | 66 ++++++++++++++++++++++++++++++ view/theme/diabook/icons/starred.png | Bin 1617 -> 501 bytes view/theme/diabook/nav.tpl | 2 + view/theme/diabook/theme.php | 66 ++++++++++++++++++++++++++++++ 5 files changed, 134 insertions(+) create mode 100755 view/theme/diabook-blue/theme.php create mode 100755 view/theme/diabook/theme.php diff --git a/view/theme/diabook-blue/icons/starred.png b/view/theme/diabook-blue/icons/starred.png index 72a49c157..2b82dfca3 100755 Binary files a/view/theme/diabook-blue/icons/starred.png and b/view/theme/diabook-blue/icons/starred.png differ diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php new file mode 100755 index 000000000..0a20c9fbc --- /dev/null +++ b/view/theme/diabook-blue/theme.php @@ -0,0 +1,66 @@ +theme_info = array( + 'extends' => 'diabook', +); + +$a->page['htmlhead'] .= <<< EOT + +EOT; diff --git a/view/theme/diabook/icons/starred.png b/view/theme/diabook/icons/starred.png index 72a49c157..2b82dfca3 100755 Binary files a/view/theme/diabook/icons/starred.png and b/view/theme/diabook/icons/starred.png differ diff --git a/view/theme/diabook/nav.tpl b/view/theme/diabook/nav.tpl index 289581c36..5776b6cf7 100644 --- a/view/theme/diabook/nav.tpl +++ b/view/theme/diabook/nav.tpl @@ -26,6 +26,7 @@ + {{ endif }} {{ if $nav.messages }} @@ -145,6 +146,7 @@ + diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php new file mode 100755 index 000000000..0a20c9fbc --- /dev/null +++ b/view/theme/diabook/theme.php @@ -0,0 +1,66 @@ +theme_info = array( + 'extends' => 'diabook', +); + +$a->page['htmlhead'] .= <<< EOT + +EOT; -- cgit v1.2.3 From 92a93642e16e58621f8445534ed2348a53891488 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 9 Mar 2012 14:43:48 -0800 Subject: revup --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 76d2f9326..45f728999 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1275' ); +define ( 'FRIENDICA_VERSION', '2.3.1276' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DB_UPDATE_VERSION', 1131 ); -- cgit v1.2.3 From cb1ecf2c5ad649eb372db9eb3bd1da756f207fb6 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 10 Mar 2012 00:15:27 +0100 Subject: diabook: Moving the location between the icons --- view/theme/diabook/style.css | 3 +++ view/theme/diabook/wall_item.tpl | 3 +-- view/theme/diabook/wallwall_item.tpl | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index bccfea149..2d4670dca 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -1113,6 +1113,7 @@ section { } .wall-item-container .wall-item-location { padding-right: 40px; + display: table-cell; } .wall-item-container .wall-item-ago { word-wrap: break-word; @@ -1168,6 +1169,7 @@ section { .wall-item-container .wall-item-actions-social { float: left; margin-bottom: 1px; + display: table-cell; } .wall-item-container .wall-item-actions-social a { margin-right: 1em; @@ -1178,6 +1180,7 @@ section { .wall-item-container .wall-item-actions-tools { float: right; width: 80px; + display: table-cell; } .wall-item-container .wall-item-actions-tools a { float: right; diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index b1a014949..8c892fd2a 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -46,7 +46,6 @@
    -
    $item.location 
    @@ -82,7 +81,7 @@ {{ endif }}
    - +
    $item.location 
    diff --git a/view/theme/diabook/wallwall_item.tpl b/view/theme/diabook/wallwall_item.tpl index 603a908c5..3b103745b 100644 --- a/view/theme/diabook/wallwall_item.tpl +++ b/view/theme/diabook/wallwall_item.tpl @@ -52,7 +52,6 @@
    -
    $item.location 
    @@ -88,7 +87,8 @@ {{ endif }}
    - +
    $item.location 
    +
    @@ -100,4 +100,4 @@
    $item.comment -
    \ No newline at end of file +
    -- cgit v1.2.3 -- cgit v1.2.3 From fd1f8fb4361b415defa8d6da2c93d2f19fb59ba1 Mon Sep 17 00:00:00 2001 From: Michael Johnston Date: Fri, 9 Mar 2012 21:29:39 -0500 Subject: allow user to set number of items to show on network page --- mod/network.php | 3 ++- mod/settings.php | 9 +++++++++ view/settings.tpl | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/mod/network.php b/mod/network.php index 27c6e315b..b04a7b489 100755 --- a/mod/network.php +++ b/mod/network.php @@ -403,7 +403,8 @@ function network_content(&$a, $update = 0) { if(count($r)) { $a->set_pager_total($r[0]['total']); - $a->set_pager_itemspage(40); + $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'])); } diff --git a/mod/settings.php b/mod/settings.php index a9d00bc98..2ef582fdf 100755 --- a/mod/settings.php +++ b/mod/settings.php @@ -237,6 +237,10 @@ function settings_post(&$a) { if($browser_update < 10000) $browser_update = 40000; + $itemspage_network = ((x($_POST,'itemspage_network')) ? intval($_POST['itemspage_network']) : 40); + if($itemspage_network > 100) + $itemspage_network = 40; + $allow_location = (((x($_POST,'allow_location')) && (intval($_POST['allow_location']) == 1)) ? 1: 0); $publish = (((x($_POST,'profile_in_directory')) && (intval($_POST['profile_in_directory']) == 1)) ? 1: 0); @@ -331,6 +335,7 @@ function settings_post(&$a) { set_pconfig(local_user(),'system','suggestme', $suggestme); set_pconfig(local_user(),'system','update_interval', $browser_update); + set_pconfig(local_user(),'system','itemspage_network', $itemspage_network); $r = q("UPDATE `user` SET `username` = '%s', `email` = '%s', `openid` = '%s', `timezone` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `notify-flags` = %d, `page-flags` = %d, `default-location` = '%s', `allow_location` = %d, `theme` = '%s', `maxreq` = %d, `expire` = %d, `openidserver` = '%s', `blockwall` = %d, `hidewall` = %d, `blocktags` = %d WHERE `uid` = %d LIMIT 1", dbesc($username), @@ -648,6 +653,9 @@ function settings_content(&$a) { $browser_update = intval(get_pconfig(local_user(), 'system','update_interval')); $browser_update = (($browser_update == 0) ? 40 : $browser_update / 1000); // default if not set: 40 seconds + + $itemspage_network = intval(get_pconfig(local_user(), 'system','itemspage_network')); + $itemspage_network = (($itemspage_network > 0 && $itemspage_network < 101) ? $itemspage_network : 40); // default if not set: 40 items if(! strlen($a->user['timezone'])) $timezone = date_default_timezone_get(); @@ -814,6 +822,7 @@ function settings_content(&$a) { '$allowloc' => array('allow_location', t('Use Browser Location:'), ($a->user['allow_location'] == 1), ''), '$theme' => array('theme', t('Display Theme:'), $theme_selected, '', $themes), '$ajaxint' => array('browser_update', t("Update browser every xx seconds"), $browser_update, t('Minimum of 10 seconds, no maximum')), + '$itemspage_network' => array('itemspage_network', t("Number of items to display on the network page:"), $itemspage_network, t('Maximum of 100 items')), '$h_prv' => t('Security and Privacy Settings'), diff --git a/view/settings.tpl b/view/settings.tpl index b7f427b32..46c737b23 100755 --- a/view/settings.tpl +++ b/view/settings.tpl @@ -30,6 +30,7 @@ $nickname_block {{inc field_checkbox.tpl with $field=$allowloc }}{{endinc}} {{inc field_select.tpl with $field=$theme }}{{endinc}} {{inc field_input.tpl with $field=$ajaxint }}{{endinc}} +{{inc field_input.tpl with $field=$itemspage_network }}{{endinc}}
    -- cgit v1.2.3 From 0e3b9097f68e3bc6fcd3a9b18f0715951300bbd1 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 9 Mar 2012 19:50:31 -0800 Subject: spec directory --- spec/dfrn-snap2.jpg | Bin 0 -> 246724 bytes spec/dfrn2.odt | Bin 0 -> 209276 bytes spec/dfrn2.pdf | Bin 0 -> 304958 bytes spec/zot.txt | 362 ++++++++++++++++++++++++++++++++++++++++++++++++++++ zot.txt | 362 ---------------------------------------------------- 5 files changed, 362 insertions(+), 362 deletions(-) create mode 100755 spec/dfrn-snap2.jpg create mode 100755 spec/dfrn2.odt create mode 100755 spec/dfrn2.pdf create mode 100755 spec/zot.txt delete mode 100755 zot.txt diff --git a/spec/dfrn-snap2.jpg b/spec/dfrn-snap2.jpg new file mode 100755 index 000000000..ee00f5654 Binary files /dev/null and b/spec/dfrn-snap2.jpg differ diff --git a/spec/dfrn2.odt b/spec/dfrn2.odt new file mode 100755 index 000000000..390fc4bb8 Binary files /dev/null and b/spec/dfrn2.odt differ diff --git a/spec/dfrn2.pdf b/spec/dfrn2.pdf new file mode 100755 index 000000000..e46225f7e Binary files /dev/null and b/spec/dfrn2.pdf differ diff --git a/spec/zot.txt b/spec/zot.txt new file mode 100755 index 000000000..2c3bbb180 --- /dev/null +++ b/spec/zot.txt @@ -0,0 +1,362 @@ +This is the Zot! social communications protocol. + +Specification revision: 1 +2 October 2011 + +Mike Macgirvin +This specification is public domain. + +Zot is a framework for secure delivery of messages on the web based on +webfinger and encapsulating salmon. + +First read the salmon and salmon magic envelope specifications. Zot also +makes use of webfinger and ActivityStreams and several concepts from RFC822 +(email). Zot encompasses the zot delivery framework and the zid remote +access protocol. + +The current specification revision (1) is frozen until a reference +implementation is available. After that, any protocol changes will require a +change to the revision number. + +**************** +* Zot delivery * +**************** + +Format of a zot wrapper. This completely encapsulates a salmon magic envelope +and provides privacy protection, while defining a delivery envelope - a +concept familiar to email systems. All addresses in zot are webfinger +resolvable addresses containing zot endpoints and salmon public keys (zot +is a superset of salmon). + + + + + ((key)) + ((iv)) + ((env_key)) + ((env_iv)) + ((envelope)) + ((sender signature)) + AES-256-CBC + ((salmon)) + + + +zot:key +******* + +A suitable randomly generated encyption key of length 32 octets for encrypting +the salmon packet. This is then encrypted with the sender's private key and +base64url encoded. + +zot:iv +****** + +A suitable randomly generated initialisation vector of length 16 octets for +encrypting the salmon packet. This is then encrypted with the sender's private +key and base64url encoded. + +zot:env_key +*********** + +A suitable randomly generated encyption key of length 32 octets for encrypting +the envelope. This is then encrypted with the recipient's public key and +base64url encoded. For bulk deliveries, it is encrypted with the site bulk +delivery public key. + + +zot:env_iv +********** + +A suitable randomly generated initialisation vector of length 16 octets for +encrypting the envelope. This is then encrypted with the recipient's public +key and base64url encoded. For bulk deliveries, it is encrypted with the site +bulk delivery public key. + + +zot:env +******* + +This consists of RFC822-style header fields representing the sender and +recipient(s). Line lengths have no defined limit and RFC822 continuation +lines are not supported. If an inbound server is not able to process an +envelope or post due to size constraints, it SHOULD return a +"413 Entity too large" HTTP response. + +Example: + +Z-From: zot:bob@example.com +Z-Sender: zot:bob@example.com +Z-To: zot:alice@example.com + +Both "Z-From:" and "Z-Sender:" MUST be provided, and represent a single +webfinger address of the author and sender respectively. The webfinger +address for the From address MUST contain a discoverable salmon public key +which is needed to verify the enclosed salmon data. Sender is used to indicate +the webfinger identity responsible for transmitting this message. From +indicates the message author. + +In web-based social systems, a reply to a message SHOULD be conveyed to all of +the original message participants. Only the author of the original message +may know all the recipients (such as those contained in Bcc: elements). The +author of a message always provides 'From'. They MUST duplicate this +information as 'Sender' when posting a followup message. + +A reply to a given message MUST be sent to the From address of the original +post, and MAY be sent to any additional addresses in the recipient list. The +original post author MUST send the reply to all known recipients of the +original message, with their webfinger identity as Sender, and the +comment/reply author as From. + +Receiving agents SHOULD validate the From identity as the signer of the salmon +magic envelope, and MAY reject it. They SHOULD also verify the Sender signature +of the zot packet if it is different than the salmon signature. They MAY +reject the message if the Sender is not allowed in their "friend list", or if +they do not have a suitable relationship with the Sender, or if either +signature fails to validate. Rejected messages for one of these reasons SHOULD +be indicated with a "400 Bad Request" HTTP response. + + +Z-To: * + +indicates a public message with no specifically enumerated recipients. + +The fields Z-To: and/or Z-Bcc: MAY be present. At least one recipient field +MUST be present. + +Z-To: zot:bob@example.com, zot:alice@example.com, mailto:dave@example.com +Z-Bcc: zot:https://example.com/profile/richard + +are valid entries. Adresses are comma separated and individual entries MUST NOT +contain commas. There MAY be any number of ASCII space characters between +entries for legibility. Header lines are terminated with a linefeed character +(ASCII 0x0A). + +This specification provides the following protocol address prefixes +for use in Z-To: or Z-Bcc: elements: + +zot: - normal zot delivery using webfinger or LRDD resolvable address +dfrn: - legacy DFRN mode delivery using webfinger or LRDD resovable address +ostatus: - normal OStatus delivery using webfinger or LRDD resovable address +diaspora: - Diaspora network delivery using webfinger address +facebook: - Facebook profile page URL +twitter: - Twitter personal page URL without AJAX '#!' fragment +mailto: - email RFC822/ESMTP address + +Examples: + +twitter:http://twitter.com/bjensen +facebook:http://facebook.com/profile.php?id=000000001 + +Foreign protocol addresses which have not been defined in this specification +or future revisions of this specification and which are unknown to the +recipient delivery process MAY be ignored. + +In cases where an address may contain either a webfinger or LRDD address, the +webfinger address SHOULD be used preferentially. + + +Z-Bcc: +****** + +The Z-Bcc element may contain one or more addresses which are hidden from end +user presentation. A zot receiving system MUST NOT store or allow for +the display of the Bcc information. Implementations which require extreme +privacy SHOULD send individual posts to each of the Bcc: recipients containing +only a single address. They MAY send all Bcc: posts using bulk delivery, +however this may have privacy implications as there is no guarantee a +receiving system will not log, store, or otherwise reveal the contents of the +Bcc recipient list. + +Z-To: addresses MAY be shown to an end user. + + +Envelope encryption +******************* + + +The entire envelope is encrypted using alg with env_key and env_iv and +base64url encoded for transmission. + +The zot envelope MAY include remote addresses. A zot inbound delivery agent +MUST parse the envelope and determine whether a delivery address to the +current endpoint is valid. This may be the result of: + + 1. An address contains the public message wildcard '*' + + 2. The current endpoint is a personal endpoint and one of the recipients +listed in the Z-To: or Z-Bcc: addresses matches the webfinger address of +the "owner" of the endpoint. + + 3. The current endpoint is a bulk delivery endpoint. The bulk delivery +endpoint is defined elsewhere in this document. The bulk delivery agent +will deliver to all local addresses found in the address lists. + +zot:sig +******* + +The Sender of the message signs the underlying salmon data in the manner +prescribed by salmon. If the Sender and From address are identical, the +signature will be identical to the signature of the underlying salmon packet. +If they are different, this signature is verified with the Sender's public +key to verify the Sender. + +zot:alg +******* + +Currently the only valid choice for alg is "AES-256-CBC". + + +zot:data +******** + +The data field is a salmon magic envelope. This is encrypted with alg using +key and iv. The result is then base64url encoded for transmission. + +For the first release of this specification, the data format of the enclosed +salmon SHOULD be 'application/atom+xml' representing an Atom formatted +ActivityStream. Future revisions MAY allow other alternate data formats. +All acceptable formats MUST be listed in an XRD property (described elsewhere +in this document). + + +Delivery +******** + +The zot message is then POSTed to the zot endpoint URL as +application/text+xml and can be decoded/decrypted by the recipient using +their private key. + +The normal salmon endpoint for a service MAY be used as an alternate +delivery method for non-encrypted (e.g. public) messages. + +Discover of the zot endpoint is based on webfinger XRD: + + + + +Bulk Delivery +************* + +A site MAY provide a bulk delivery endpoint, which MAY be used to avoid +multiple encryptions of the same data for a single destination. +This is discoverable by providing a zot endpoint with a corresponding +salmon public key in the site's .well-known/host-meta file. +A delivery to this endpoint will deliver to all local recipients provided +within the zot envelope. + + +Extensibility +************* + +This specification is subject to change. The current version which is in +effect at a given site may be noted by XRD properties. The following +properties MUST be present in the XRD providing the relevant endpoint: + +1 +application/atom+xml + + +Version is specified in this document and indicates the current revision. +Version is an increasing non-zero integer value. There are no minor versions. +Implementations MAY provide compatibility to multiple incompatible versions +by using this version indication. The "accept" indicates a range of document +content types which may be enclosed in the underlying salmon magic envelope. +We anticipate this specification will in the future allow for a close variant +of "message/rfc822" and which may include MIME. This may also be used to +embed alternate message formats and protocols such as +"application/x-diaspora+xml". If a delivery agent is unable to provide any +acceptable data format to the remote system, the delivery to that system MUST +be terminated/cancelled. + +Foreign Messages +**************** + +Messages MAY be imported from other networks and systems which have no +knowledge of salmon signatures. The salmon signature in this case MUST be the +exact string 'NOTSIGNED' to indicate that the author (From address) cannot be +validated using salmon verification. This message MUST be relayed by a Sender +who can provide a valid salmon signature of the message via zot:sig. Delivery +systems MAY reject foreign messages. + + + + + +******************************* +* Zid (Zot-ID) authentication * +******************************* + +This section of the document is considered separate from the delivery +specification precding it and represents a different protocol, which is +currently incomplete. This will be split off into another document in the +future, but is presented here as a synergistic component of the Zot network +model. + + +URLs may be present within a zot message which refer to private and/or +protected resources. Zid uses OpenID to gain access to these protected +resources. These could be private photos or profile information - or *any* +web accessible resource. Using zid, these can have access controls which +extends to any resolvable webfinger address. + +Zid authentication relies on the presence of an OpenID provider element in +webfinger, and a URL template which is applied to protected resources within +a zot message. + +The template is designated with the characters "{zid=}" within a URL of a zot +message. When the page is rendered for viewing to an observer, this template +is replaced with the webfinger address of the viewer (if known), or an empty +string if the webfinger address of the viewer cannot be determined. + +For example in a message body: + +http://example.com/photos/bob/picture.jpg?{zid=} + +refers to a private photo which is only visible to alice@example.com. + +If Alice is viewing the page, the link is rendered with + +http://example.com/photos/bob/picture.jpg?zid=alice@example.com + +If the page viewer is unknown, it is rendered as + +http://example.com/photos/bob/picture.jpg?zid= + + +When the link is visited, the web server at example.com notes the presence of +the zid parameter and uses information from webfinger to locate the OpenID +provider for the zid webfinger address. It then redirects to the OpenID +server and requests authentication of the given person. If this is successful, +access to the protected resource is granted. + +A browser cookie may be provided to avoid future authentication redirects +and allow authenticated browsing to other resources on the website. + +Only authentication via OpenID is defined in this version of the specification. + +This can be used to provide access control of any web resource to any +webfinger identity on the internet. + + +********* +* Links * +********* + +Salmon Protocol + http://www.salmon-protocol.org/salmon-protocol-summary + +Salmon Magic Envelope + http://salmon-protocol.googlecode.com/svn/trunk/draft-panzer-magicsig-01.html + +Atom Activity Stream Draft + http://activitystrea.ms/specs/atom/1.0/ + +Activty Stream Base Schema + http://activitystrea.ms/head/activity-schema.html + +WebFinger Protocol + http://code.google.com/p/webfinger/wiki/WebFingerProtocol + + diff --git a/zot.txt b/zot.txt deleted file mode 100755 index 2c3bbb180..000000000 --- a/zot.txt +++ /dev/null @@ -1,362 +0,0 @@ -This is the Zot! social communications protocol. - -Specification revision: 1 -2 October 2011 - -Mike Macgirvin -This specification is public domain. - -Zot is a framework for secure delivery of messages on the web based on -webfinger and encapsulating salmon. - -First read the salmon and salmon magic envelope specifications. Zot also -makes use of webfinger and ActivityStreams and several concepts from RFC822 -(email). Zot encompasses the zot delivery framework and the zid remote -access protocol. - -The current specification revision (1) is frozen until a reference -implementation is available. After that, any protocol changes will require a -change to the revision number. - -**************** -* Zot delivery * -**************** - -Format of a zot wrapper. This completely encapsulates a salmon magic envelope -and provides privacy protection, while defining a delivery envelope - a -concept familiar to email systems. All addresses in zot are webfinger -resolvable addresses containing zot endpoints and salmon public keys (zot -is a superset of salmon). - - - - - ((key)) - ((iv)) - ((env_key)) - ((env_iv)) - ((envelope)) - ((sender signature)) - AES-256-CBC - ((salmon)) - - - -zot:key -******* - -A suitable randomly generated encyption key of length 32 octets for encrypting -the salmon packet. This is then encrypted with the sender's private key and -base64url encoded. - -zot:iv -****** - -A suitable randomly generated initialisation vector of length 16 octets for -encrypting the salmon packet. This is then encrypted with the sender's private -key and base64url encoded. - -zot:env_key -*********** - -A suitable randomly generated encyption key of length 32 octets for encrypting -the envelope. This is then encrypted with the recipient's public key and -base64url encoded. For bulk deliveries, it is encrypted with the site bulk -delivery public key. - - -zot:env_iv -********** - -A suitable randomly generated initialisation vector of length 16 octets for -encrypting the envelope. This is then encrypted with the recipient's public -key and base64url encoded. For bulk deliveries, it is encrypted with the site -bulk delivery public key. - - -zot:env -******* - -This consists of RFC822-style header fields representing the sender and -recipient(s). Line lengths have no defined limit and RFC822 continuation -lines are not supported. If an inbound server is not able to process an -envelope or post due to size constraints, it SHOULD return a -"413 Entity too large" HTTP response. - -Example: - -Z-From: zot:bob@example.com -Z-Sender: zot:bob@example.com -Z-To: zot:alice@example.com - -Both "Z-From:" and "Z-Sender:" MUST be provided, and represent a single -webfinger address of the author and sender respectively. The webfinger -address for the From address MUST contain a discoverable salmon public key -which is needed to verify the enclosed salmon data. Sender is used to indicate -the webfinger identity responsible for transmitting this message. From -indicates the message author. - -In web-based social systems, a reply to a message SHOULD be conveyed to all of -the original message participants. Only the author of the original message -may know all the recipients (such as those contained in Bcc: elements). The -author of a message always provides 'From'. They MUST duplicate this -information as 'Sender' when posting a followup message. - -A reply to a given message MUST be sent to the From address of the original -post, and MAY be sent to any additional addresses in the recipient list. The -original post author MUST send the reply to all known recipients of the -original message, with their webfinger identity as Sender, and the -comment/reply author as From. - -Receiving agents SHOULD validate the From identity as the signer of the salmon -magic envelope, and MAY reject it. They SHOULD also verify the Sender signature -of the zot packet if it is different than the salmon signature. They MAY -reject the message if the Sender is not allowed in their "friend list", or if -they do not have a suitable relationship with the Sender, or if either -signature fails to validate. Rejected messages for one of these reasons SHOULD -be indicated with a "400 Bad Request" HTTP response. - - -Z-To: * - -indicates a public message with no specifically enumerated recipients. - -The fields Z-To: and/or Z-Bcc: MAY be present. At least one recipient field -MUST be present. - -Z-To: zot:bob@example.com, zot:alice@example.com, mailto:dave@example.com -Z-Bcc: zot:https://example.com/profile/richard - -are valid entries. Adresses are comma separated and individual entries MUST NOT -contain commas. There MAY be any number of ASCII space characters between -entries for legibility. Header lines are terminated with a linefeed character -(ASCII 0x0A). - -This specification provides the following protocol address prefixes -for use in Z-To: or Z-Bcc: elements: - -zot: - normal zot delivery using webfinger or LRDD resolvable address -dfrn: - legacy DFRN mode delivery using webfinger or LRDD resovable address -ostatus: - normal OStatus delivery using webfinger or LRDD resovable address -diaspora: - Diaspora network delivery using webfinger address -facebook: - Facebook profile page URL -twitter: - Twitter personal page URL without AJAX '#!' fragment -mailto: - email RFC822/ESMTP address - -Examples: - -twitter:http://twitter.com/bjensen -facebook:http://facebook.com/profile.php?id=000000001 - -Foreign protocol addresses which have not been defined in this specification -or future revisions of this specification and which are unknown to the -recipient delivery process MAY be ignored. - -In cases where an address may contain either a webfinger or LRDD address, the -webfinger address SHOULD be used preferentially. - - -Z-Bcc: -****** - -The Z-Bcc element may contain one or more addresses which are hidden from end -user presentation. A zot receiving system MUST NOT store or allow for -the display of the Bcc information. Implementations which require extreme -privacy SHOULD send individual posts to each of the Bcc: recipients containing -only a single address. They MAY send all Bcc: posts using bulk delivery, -however this may have privacy implications as there is no guarantee a -receiving system will not log, store, or otherwise reveal the contents of the -Bcc recipient list. - -Z-To: addresses MAY be shown to an end user. - - -Envelope encryption -******************* - - -The entire envelope is encrypted using alg with env_key and env_iv and -base64url encoded for transmission. - -The zot envelope MAY include remote addresses. A zot inbound delivery agent -MUST parse the envelope and determine whether a delivery address to the -current endpoint is valid. This may be the result of: - - 1. An address contains the public message wildcard '*' - - 2. The current endpoint is a personal endpoint and one of the recipients -listed in the Z-To: or Z-Bcc: addresses matches the webfinger address of -the "owner" of the endpoint. - - 3. The current endpoint is a bulk delivery endpoint. The bulk delivery -endpoint is defined elsewhere in this document. The bulk delivery agent -will deliver to all local addresses found in the address lists. - -zot:sig -******* - -The Sender of the message signs the underlying salmon data in the manner -prescribed by salmon. If the Sender and From address are identical, the -signature will be identical to the signature of the underlying salmon packet. -If they are different, this signature is verified with the Sender's public -key to verify the Sender. - -zot:alg -******* - -Currently the only valid choice for alg is "AES-256-CBC". - - -zot:data -******** - -The data field is a salmon magic envelope. This is encrypted with alg using -key and iv. The result is then base64url encoded for transmission. - -For the first release of this specification, the data format of the enclosed -salmon SHOULD be 'application/atom+xml' representing an Atom formatted -ActivityStream. Future revisions MAY allow other alternate data formats. -All acceptable formats MUST be listed in an XRD property (described elsewhere -in this document). - - -Delivery -******** - -The zot message is then POSTed to the zot endpoint URL as -application/text+xml and can be decoded/decrypted by the recipient using -their private key. - -The normal salmon endpoint for a service MAY be used as an alternate -delivery method for non-encrypted (e.g. public) messages. - -Discover of the zot endpoint is based on webfinger XRD: - - - - -Bulk Delivery -************* - -A site MAY provide a bulk delivery endpoint, which MAY be used to avoid -multiple encryptions of the same data for a single destination. -This is discoverable by providing a zot endpoint with a corresponding -salmon public key in the site's .well-known/host-meta file. -A delivery to this endpoint will deliver to all local recipients provided -within the zot envelope. - - -Extensibility -************* - -This specification is subject to change. The current version which is in -effect at a given site may be noted by XRD properties. The following -properties MUST be present in the XRD providing the relevant endpoint: - -1 -application/atom+xml - - -Version is specified in this document and indicates the current revision. -Version is an increasing non-zero integer value. There are no minor versions. -Implementations MAY provide compatibility to multiple incompatible versions -by using this version indication. The "accept" indicates a range of document -content types which may be enclosed in the underlying salmon magic envelope. -We anticipate this specification will in the future allow for a close variant -of "message/rfc822" and which may include MIME. This may also be used to -embed alternate message formats and protocols such as -"application/x-diaspora+xml". If a delivery agent is unable to provide any -acceptable data format to the remote system, the delivery to that system MUST -be terminated/cancelled. - -Foreign Messages -**************** - -Messages MAY be imported from other networks and systems which have no -knowledge of salmon signatures. The salmon signature in this case MUST be the -exact string 'NOTSIGNED' to indicate that the author (From address) cannot be -validated using salmon verification. This message MUST be relayed by a Sender -who can provide a valid salmon signature of the message via zot:sig. Delivery -systems MAY reject foreign messages. - - - - - -******************************* -* Zid (Zot-ID) authentication * -******************************* - -This section of the document is considered separate from the delivery -specification precding it and represents a different protocol, which is -currently incomplete. This will be split off into another document in the -future, but is presented here as a synergistic component of the Zot network -model. - - -URLs may be present within a zot message which refer to private and/or -protected resources. Zid uses OpenID to gain access to these protected -resources. These could be private photos or profile information - or *any* -web accessible resource. Using zid, these can have access controls which -extends to any resolvable webfinger address. - -Zid authentication relies on the presence of an OpenID provider element in -webfinger, and a URL template which is applied to protected resources within -a zot message. - -The template is designated with the characters "{zid=}" within a URL of a zot -message. When the page is rendered for viewing to an observer, this template -is replaced with the webfinger address of the viewer (if known), or an empty -string if the webfinger address of the viewer cannot be determined. - -For example in a message body: - -http://example.com/photos/bob/picture.jpg?{zid=} - -refers to a private photo which is only visible to alice@example.com. - -If Alice is viewing the page, the link is rendered with - -http://example.com/photos/bob/picture.jpg?zid=alice@example.com - -If the page viewer is unknown, it is rendered as - -http://example.com/photos/bob/picture.jpg?zid= - - -When the link is visited, the web server at example.com notes the presence of -the zid parameter and uses information from webfinger to locate the OpenID -provider for the zid webfinger address. It then redirects to the OpenID -server and requests authentication of the given person. If this is successful, -access to the protected resource is granted. - -A browser cookie may be provided to avoid future authentication redirects -and allow authenticated browsing to other resources on the website. - -Only authentication via OpenID is defined in this version of the specification. - -This can be used to provide access control of any web resource to any -webfinger identity on the internet. - - -********* -* Links * -********* - -Salmon Protocol - http://www.salmon-protocol.org/salmon-protocol-summary - -Salmon Magic Envelope - http://salmon-protocol.googlecode.com/svn/trunk/draft-panzer-magicsig-01.html - -Atom Activity Stream Draft - http://activitystrea.ms/specs/atom/1.0/ - -Activty Stream Base Schema - http://activitystrea.ms/head/activity-schema.html - -WebFinger Protocol - http://code.google.com/p/webfinger/wiki/WebFingerProtocol - - -- cgit v1.2.3 From 15916a2cb717828367fc7e0bb74137942836a772 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 10 Mar 2012 09:52:20 +0100 Subject: Mail: Removing signatures, gpg, unnecessary line breaks --- include/email.php | 14 ++++ include/msgclean.php | 225 +++++++++++++++++++++++++++++++++++++++++++++++++++ include/poller.php | 3 +- 3 files changed, 240 insertions(+), 2 deletions(-) create mode 100644 include/msgclean.php diff --git a/include/email.php b/include/email.php index 659978b6e..a3449a424 100755 --- a/include/email.php +++ b/include/email.php @@ -1,5 +1,7 @@ parts) { $ret['body'] = email_get_part($mbox,$uid,$struc,0, 'html'); + $html = $ret['body']; if (trim($ret['body']) == '') $ret['body'] = email_get_part($mbox,$uid,$struc,0, 'plain'); @@ -107,6 +110,17 @@ function email_get_msg($mbox,$uid) { else $ret['body'] = $text; } + + $ret['body'] = removegpg($ret['body']); + $msg = removesig($ret['body']); + $ret['body'] = $msg['body']; + $ret['body'] = convertquote($ret['body'], false); + + if (trim($html) != '') + $ret['body'] = removelinebreak($ret['body']); + + $ret['body'] = unifyattributionline($ret['body']); + return $ret; } diff --git a/include/msgclean.php b/include/msgclean.php new file mode 100644 index 000000000..284ad1ce4 --- /dev/null +++ b/include/msgclean.php @@ -0,0 +1,225 @@ +\s.*?To: (.*?)\s*?Cc: (.*?)\s*?Sent: (.*?)\s.*?Subject: ([^\n].*)\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/----- Original Message -----\s.*?From: "([^<"].*?)" <(.*?)>\s.*?To: (.*?)\s*?Sent: (.*?)\s.*?Subject: ([^\n].*)\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/-------- Original-Nachricht --------\s*\['.$quote.'\]\nDatum: (.*?)\nVon: (.*?) <(.*?)>\nAn: (.*?)\nBetreff: (.*?)\n/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/-------- Original-Nachricht --------\s*\['.$quote.'\]\sDatum: (.*?)\s.*Von: "([^<"].*?)" <(.*?)>\s.*An: (.*?)\n.*/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/-------- Original-Nachricht --------\s*\['.$quote.'\]\nDatum: (.*?)\nVon: (.*?)\nAn: (.*?)\nBetreff: (.*?)\n/i', "[".$quote."='$2']\n", $message); + + $message = savereplace('/-----Urspr.*?ngliche Nachricht-----\sVon: "([^<"].*?)" <(.*?)>\s.*Gesendet: (.*?)\s.*An: (.*?)\s.*Betreff: ([^\n].*?).*:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/-----Urspr.*?ngliche Nachricht-----\sVon: "([^<"].*?)" <(.*?)>\s.*Gesendet: (.*?)\s.*An: (.*?)\s.*Betreff: ([^\n].*?)\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/Am (.*?), schrieb (.*?):\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + + $message = savereplace('/Am .*?, \d+ .*? \d+ \d+:\d+:\d+ \+\d+\sschrieb\s(.*?)\s<(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/Am (.*?) schrieb (.*?) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/Am (.*?) schrieb <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/Am (.*?) schrieb (.*?):\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/Am (.*?) schrieb (.*?)\n(.*?):\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + + $message = savereplace('/(\d+)\/(\d+)\/(\d+) ([^<"].*?) <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + + $message = savereplace('/On .*?, \d+ .*? \d+ \d+:\d+:\d+ \+\d+\s(.*?)\s<(.*?)>\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/On (.*?) at (.*?), (.*?)\s<(.*?)>\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$3']\n", $message); + $message = savereplace('/On (.*?)\n([^<].*?)\s<(.*?)>\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/On (.*?), (.*?), (.*?)\s<(.*?)>\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$3']\n", $message); + $message = savereplace('/On ([^,].*?), (.*?)\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/On (.*?), (.*?)\swrote\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + + // Der loescht manchmal den Body - was eigentlich unmoeglich ist + $message = savereplace('/On (.*?),(.*?),(.*?),(.*?), (.*?) wrote:\s*\['.$quote.'\]/i', "[".$quote."='$5']\n", $message); + + $message = savereplace('/Zitat von ([^<].*?) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/Quoting ([^<].*?) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/From: "([^<"].*?)" <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/From: <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/Du \(([^)].*?)\) schreibst:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/--- (.*?) <.*?> schrieb am (.*?):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/--- (.*?) schrieb am (.*?):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/\* (.*?) <(.*?)> hat geschrieben:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/(.*?) <(.*?)> schrieb (.*?)\):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) <(.*?)> schrieb am (.*?) um (.*):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) schrieb am (.*?) um (.*):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) \((.*?)\) schrieb:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/(.*?) schrieb:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/(.*?) <(.*?)> writes:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) \((.*?)\) writes:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/(.*?) writes:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/\* (.*?) wrote:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) wrote \(.*?\):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) wrote:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/([^<].*?) <.*?> hat am (.*?)\sum\s(.*)\sgeschrieben:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/(\d+)\/(\d+)\/(\d+) ([^<"].*?) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + $message = savereplace('/(\d+)\/(\d+)\/(\d+) (.*?) <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + $message = savereplace('/(\d+)\/(\d+)\/(\d+) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + $message = savereplace('/(\d+)\/(\d+)\/(\d+) <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + + $message = savereplace('/(.*?) <(.*?)> schrubselte:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) \((.*?)\) schrubselte:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + + } + return($message); +} + +function removegpg($message) +{ + + $pattern = '/(.*)\s*-----BEGIN PGP SIGNED MESSAGE-----\s*[\r\n].*Hash:.*?[\r\n](.*)'. + '[\r\n]\s*-----BEGIN PGP SIGNATURE-----\s*[\r\n].*'. + '[\r\n]\s*-----END PGP SIGNATURE-----(.*)/is'; + + preg_match($pattern, $message, $result); + + $cleaned = trim($result[1].$result[2].$result[3]); + + $cleaned = str_replace(array("\n- --\n", "\n- -"), array("\n-- \n", "\n-"), $cleaned); + + + if ($cleaned == '') + $cleaned = $message; + + return($cleaned); +} + +function removesig($message) +{ + $sigpos = strrpos($message, "\n-- \n"); + $quotepos = strrpos($message, "[/quote]"); + + if ($sigpos == 0) { + // Speziell fuer web.de, die das als Trenner verwenden + $message = str_replace("\n___________________________________________________________\n", "\n-- \n", $message); + $sigpos = strrpos($message, "\n-- \n"); + $quotepos = strrpos($message, "[/quote]"); + } + + // Sollte sich der Signaturtrenner innerhalb eines Quotes befinden + // wird keine Signaturtrennung ausgefuehrt + if (($sigpos < $quotepos) and ($sigpos != 0)) + return(array('body' => $message, 'sig' => '')); + + // To-Do: Regexp umstellen, so dass auf 1 oder kein Leerzeichen + // geprueft wird + //$message = str_replace("\n--\n", "\n-- \n", $message); + + $pattern = '/(.*)[\r\n]-- [\r\n](.*)/is'; + + preg_match($pattern, $message, $result); + + if (($result[1] != '') and ($result[2] != '')) { + $cleaned = trim($result[1])."\n"; + $sig = trim($result[2]); + // '[hr][size=x-small][color=darkblue]'.trim($result[2]).'[/color][/size]'; + } else { + $cleaned = $message; + $sig = ''; + } + + return(array('body' => $cleaned, 'sig' => $sig)); +} + +function removelinebreak($message) +{ + $arrbody = explode("\n", trim($message)); + + $lines = array(); + $lineno = 0; + + foreach($arrbody as $i => $line) { + $currquotelevel = 0; + $currline = $line; + while ((strlen($currline)>0) and ((substr($currline, 0, 1) == '>') + or (substr($currline, 0, 1) == ' '))) { + if (substr($currline, 0, 1) == '>') + $currquotelevel++; + + $currline = ltrim(substr($currline, 1)); + } + + $quotelevel = 0; + $nextline = trim($arrbody[$i+1]); + while ((strlen($nextline)>0) and ((substr($nextline, 0, 1) == '>') + or (substr($nextline, 0, 1) == ' '))) { + if (substr($nextline, 0, 1) == '>') + $quotelevel++; + + $nextline = ltrim(substr($nextline, 1)); + } + + $len = strlen($line); + $firstword = strpos($nextline.' ', ' '); + + $specialchars = ((substr(trim($nextline), 0, 1) == '-') or + (substr(trim($nextline), 0, 1) == '=') or + (substr(trim($nextline), 0, 1) == '*') or + (substr(trim($nextline), 0, 1) == '·') or + (substr(trim($nextline), 0, 4) == '[url') or + (substr(trim($nextline), 0, 5) == '[size') or + (substr(trim($nextline), 0, 7) == 'http://') or + (substr(trim($nextline), 0, 8) == 'https://')); + + if (!$specialchars) + $specialchars = ((substr(rtrim($line), -1) == '-') or + (substr(rtrim($line), -1) == '=') or + (substr(rtrim($line), -1) == '*') or + (substr(rtrim($line), -1) == '·') or + (substr(rtrim($line), -6) == '[/url]') or + (substr(rtrim($line), -7) == '[/size]')); + + //if ($specialchars) + // echo ("Special\n"); + + if ($lines[$lineno] != '') { + if (substr($lines[$lineno], -1) != ' ') + $lines[$lineno] .= ' '; + + while ((strlen($line)>0) and ((substr($line, 0, 1) == '>') + or (substr($line, 0, 1) == ' '))) { + + $line = ltrim(substr($line, 1)); + } + + } + //else + // $lines[$lineno] = $quotelevel.'-'.$len.'-'.$firstword.'-'; + + $lines[$lineno] .= $line; + //if ((($len + $firstword < 68) and (substr($line, -1, 1) != ' ')) + // or ($quotelevel != $currquotelevel) or $specialchars) + if (((substr($line, -1, 1) != ' ')) + or ($quotelevel != $currquotelevel)) + $lineno++; + } + return(implode("\n", $lines)); + +} +?> diff --git a/include/poller.php b/include/poller.php index cfbc46b87..3be6caebd 100755 --- a/include/poller.php +++ b/include/poller.php @@ -1,7 +1,6 @@ Date: Sat, 10 Mar 2012 10:36:20 +0100 Subject: German translation --- view/de/messages.po | 1201 +++++++++++++++++++++++++++++++-------------------- view/de/strings.php | 82 +++- 2 files changed, 810 insertions(+), 473 deletions(-) diff --git a/view/de/messages.po b/view/de/messages.po index 33adc8c76..6aab0bf1b 100644 --- a/view/de/messages.po +++ b/view/de/messages.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: friendica\n" "Report-Msgid-Bugs-To: http://bugs.friendica.com/\n" -"POT-Creation-Date: 2012-02-24 22:44-0800\n" -"PO-Revision-Date: 2012-02-28 20:51+0000\n" +"POT-Creation-Date: 2012-03-06 15:09-0800\n" +"PO-Revision-Date: 2012-03-07 20:47+0000\n" "Last-Translator: greeneyedred \n" "Language-Team: German (http://www.transifex.net/projects/p/friendica/language/de/)\n" "MIME-Version: 1.0\n" @@ -48,8 +48,8 @@ msgstr "Konnte den Kontakt nicht aktualisieren." #: ../../mod/api.php:31 ../../mod/photos.php:129 ../../mod/photos.php:865 #: ../../mod/editpost.php:10 ../../mod/install.php:171 #: ../../mod/notifications.php:62 ../../mod/contacts.php:125 -#: ../../mod/settings.php:49 ../../mod/settings.php:404 -#: ../../mod/settings.php:409 ../../mod/manage.php:86 ../../mod/network.php:6 +#: ../../mod/settings.php:49 ../../mod/settings.php:411 +#: ../../mod/settings.php:416 ../../mod/manage.php:86 ../../mod/network.php:6 #: ../../mod/notes.php:20 ../../mod/attach.php:33 ../../mod/group.php:19 #: ../../mod/viewcontacts.php:22 ../../mod/register.php:36 #: ../../mod/regmod.php:111 ../../mod/item.php:124 ../../mod/item.php:140 @@ -57,11 +57,11 @@ msgstr "Konnte den Kontakt nicht aktualisieren." #: ../../mod/profile_photo.php:148 ../../mod/profile_photo.php:159 #: ../../mod/message.php:9 ../../mod/message.php:46 ../../mod/allfriends.php:9 #: ../../mod/wall_upload.php:42 ../../mod/follow.php:8 ../../mod/common.php:9 -#: ../../mod/display.php:130 ../../mod/profiles.php:7 +#: ../../mod/display.php:133 ../../mod/profiles.php:7 #: ../../mod/profiles.php:229 ../../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:332 -#: ../../include/items.php:2968 ../../index.php:288 +#: ../../include/items.php:3030 ../../index.php:288 msgid "Permission denied." msgstr "Zugriff verweigert." @@ -90,8 +90,8 @@ msgstr "Bitte nutze den Zurück-Button deines Browsers jetzt, w msgid "Return to contact editor" msgstr "Zurück zum Kontakteditor" -#: ../../mod/crepair.php:148 ../../mod/settings.php:455 -#: ../../mod/settings.php:481 ../../mod/admin.php:480 ../../mod/admin.php:489 +#: ../../mod/crepair.php:148 ../../mod/settings.php:462 +#: ../../mod/settings.php:488 ../../mod/admin.php:484 ../../mod/admin.php:493 msgid "Name" msgstr "Name" @@ -133,18 +133,18 @@ msgstr "Neues Foto von dieser URL" #: ../../mod/photos.php:1262 ../../mod/photos.php:1293 #: ../../mod/install.php:251 ../../mod/install.php:289 #: ../../mod/localtime.php:45 ../../mod/contacts.php:319 -#: ../../mod/settings.php:453 ../../mod/settings.php:592 -#: ../../mod/settings.php:786 ../../mod/manage.php:109 ../../mod/group.php:84 -#: ../../mod/group.php:167 ../../mod/admin.php:312 ../../mod/admin.php:477 -#: ../../mod/admin.php:603 ../../mod/admin.php:769 ../../mod/admin.php:847 -#: ../../mod/profiles.php:375 ../../mod/invite.php:106 -#: ../../addon/facebook/facebook.php:411 ../../addon/yourls/yourls.php:76 +#: ../../mod/settings.php:460 ../../mod/settings.php:603 +#: ../../mod/settings.php:797 ../../mod/manage.php:109 ../../mod/group.php:80 +#: ../../mod/admin.php:313 ../../mod/admin.php:481 ../../mod/admin.php:609 +#: ../../mod/admin.php:776 ../../mod/admin.php:856 ../../mod/profiles.php:375 +#: ../../mod/invite.php:106 ../../addon/facebook/facebook.php:411 +#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:92 #: ../../addon/nsfw/nsfw.php:57 #: ../../addon/uhremotestorage/uhremotestorage.php:89 -#: ../../addon/randplace/randplace.php:179 ../../addon/drpost/drpost.php:110 -#: ../../addon/geonames/geonames.php:187 ../../addon/oembed.old/oembed.php:41 -#: ../../addon/impressum/impressum.php:69 ../../addon/blockem/blockem.php:57 -#: ../../addon/qcomment/qcomment.php:60 +#: ../../addon/randplace/randplace.php:179 ../../addon/dwpost/dwpost.php:92 +#: ../../addon/drpost/drpost.php:110 ../../addon/geonames/geonames.php:187 +#: ../../addon/oembed.old/oembed.php:41 ../../addon/impressum/impressum.php:69 +#: ../../addon/blockem/blockem.php:57 ../../addon/qcomment/qcomment.php:61 #: ../../addon/openstreetmap/openstreetmap.php:70 #: ../../addon/editplain/editplain.php:84 ../../addon/blackout/blackout.php:94 #: ../../addon/pageheader/pageheader.php:52 @@ -154,11 +154,12 @@ msgstr "Neues Foto von dieser URL" #: ../../addon/statusnet/statusnet.php:320 #: ../../addon/statusnet/statusnet.php:345 #: ../../addon/statusnet/statusnet.php:532 ../../addon/tumblr/tumblr.php:90 -#: ../../addon/numfriends/numfriends.php:85 ../../addon/wppost/wppost.php:102 -#: ../../addon/showmore/showmore.php:48 ../../addon/piwik/piwik.php:89 -#: ../../addon/twitter/twitter.php:175 ../../addon/twitter/twitter.php:201 -#: ../../addon/twitter/twitter.php:355 ../../addon/posterous/posterous.php:90 -#: ../../include/conversation.php:542 +#: ../../addon/numfriends/numfriends.php:85 ../../addon/gnot/gnot.php:88 +#: ../../addon/wppost/wppost.php:102 ../../addon/showmore/showmore.php:48 +#: ../../addon/piwik/piwik.php:89 ../../addon/twitter/twitter.php:175 +#: ../../addon/twitter/twitter.php:201 ../../addon/twitter/twitter.php:355 +#: ../../addon/posterous/posterous.php:90 +#: ../../view/theme/quattro/theme.php:15 ../../include/conversation.php:552 msgid "Submit" msgstr "Senden" @@ -212,7 +213,7 @@ msgstr "l, F j" msgid "Edit event" msgstr "Veranstaltung bearbeiten" -#: ../../mod/events.php:272 ../../include/text.php:964 +#: ../../mod/events.php:272 ../../include/text.php:982 msgid "link to source" msgstr "Link zum Originalbeitrag" @@ -266,7 +267,7 @@ msgid "Description:" msgstr "Beschreibung" #: ../../mod/events.php:395 ../../include/event.php:37 -#: ../../include/bb2diaspora.php:290 ../../boot.php:980 +#: ../../include/bb2diaspora.php:260 ../../boot.php:980 msgid "Location:" msgstr "Ort:" @@ -275,8 +276,8 @@ msgid "Share this event" msgstr "Veranstaltung teilen" #: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94 -#: ../../mod/dfrn_request.php:686 ../../mod/settings.php:454 -#: ../../mod/settings.php:480 ../../addon/js_upload/js_upload.php:45 +#: ../../mod/dfrn_request.php:686 ../../mod/settings.php:461 +#: ../../mod/settings.php:487 ../../addon/js_upload/js_upload.php:45 msgid "Cancel" msgstr "Abbrechen" @@ -320,23 +321,23 @@ msgid "" msgstr "Möchtest du dieser Anwendung den Zugriff auf deine Beiträge und Kontakte, sowie das Erstellen neuer Beiträge in deinem Namen gestatten?" #: ../../mod/api.php:105 ../../mod/dfrn_request.php:676 -#: ../../mod/settings.php:681 ../../mod/settings.php:687 -#: ../../mod/settings.php:695 ../../mod/settings.php:699 -#: ../../mod/settings.php:704 ../../mod/settings.php:710 -#: ../../mod/settings.php:716 ../../mod/settings.php:776 -#: ../../mod/settings.php:777 ../../mod/settings.php:778 -#: ../../mod/settings.php:779 ../../mod/register.php:524 +#: ../../mod/settings.php:692 ../../mod/settings.php:698 +#: ../../mod/settings.php:706 ../../mod/settings.php:710 +#: ../../mod/settings.php:715 ../../mod/settings.php:721 +#: ../../mod/settings.php:727 ../../mod/settings.php:787 +#: ../../mod/settings.php:788 ../../mod/settings.php:789 +#: ../../mod/settings.php:790 ../../mod/register.php:524 #: ../../mod/profiles.php:357 msgid "Yes" msgstr "Ja" #: ../../mod/api.php:106 ../../mod/dfrn_request.php:677 -#: ../../mod/settings.php:681 ../../mod/settings.php:687 -#: ../../mod/settings.php:695 ../../mod/settings.php:699 -#: ../../mod/settings.php:704 ../../mod/settings.php:710 -#: ../../mod/settings.php:716 ../../mod/settings.php:776 -#: ../../mod/settings.php:777 ../../mod/settings.php:778 -#: ../../mod/settings.php:779 ../../mod/register.php:525 +#: ../../mod/settings.php:692 ../../mod/settings.php:698 +#: ../../mod/settings.php:706 ../../mod/settings.php:710 +#: ../../mod/settings.php:715 ../../mod/settings.php:721 +#: ../../mod/settings.php:727 ../../mod/settings.php:787 +#: ../../mod/settings.php:788 ../../mod/settings.php:789 +#: ../../mod/settings.php:790 ../../mod/register.php:525 #: ../../mod/profiles.php:358 msgid "No" msgstr "Nein" @@ -390,7 +391,7 @@ msgid "was tagged in a" msgstr "wurde getaggt in einem" #: ../../mod/photos.php:528 ../../mod/like.php:127 ../../mod/tagger.php:70 -#: ../../addon/communityhome/communityhome.php:163 +#: ../../addon/communityhome/communityhome.php:163 ../../include/text.php:1226 #: ../../include/diaspora.php:1600 ../../include/conversation.php:53 #: ../../include/conversation.php:126 msgid "photo" @@ -480,7 +481,7 @@ msgstr "Foto bearbeiten" msgid "Use as profile photo" msgstr "Als Profilbild verwenden" -#: ../../mod/photos.php:1078 ../../include/conversation.php:472 +#: ../../mod/photos.php:1078 ../../include/conversation.php:482 msgid "Private Message" msgstr "Private Nachricht" @@ -513,44 +514,44 @@ msgid "" "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" -#: ../../mod/photos.php:1200 ../../include/conversation.php:519 +#: ../../mod/photos.php:1200 ../../include/conversation.php:529 msgid "I like this (toggle)" msgstr "Ich mag das (toggle)" -#: ../../mod/photos.php:1201 ../../include/conversation.php:520 +#: ../../mod/photos.php:1201 ../../include/conversation.php:530 msgid "I don't like this (toggle)" msgstr "Ich mag das nicht (toggle)" -#: ../../mod/photos.php:1202 ../../include/conversation.php:914 +#: ../../mod/photos.php:1202 ../../include/conversation.php:933 msgid "Share" msgstr "Teilen" #: ../../mod/photos.php:1203 ../../mod/editpost.php:104 #: ../../mod/message.php:155 ../../mod/message.php:296 -#: ../../include/conversation.php:343 ../../include/conversation.php:677 -#: ../../include/conversation.php:931 +#: ../../include/conversation.php:348 ../../include/conversation.php:694 +#: ../../include/conversation.php:950 msgid "Please wait" msgstr "Bitte warten" #: ../../mod/photos.php:1219 ../../mod/photos.php:1259 -#: ../../mod/photos.php:1290 ../../include/conversation.php:539 +#: ../../mod/photos.php:1290 ../../include/conversation.php:549 msgid "This is you" msgstr "Das bist du" #: ../../mod/photos.php:1221 ../../mod/photos.php:1261 -#: ../../mod/photos.php:1292 ../../include/conversation.php:541 +#: ../../mod/photos.php:1292 ../../include/conversation.php:551 #: ../../boot.php:447 msgid "Comment" msgstr "Kommentar" #: ../../mod/photos.php:1223 ../../mod/editpost.php:123 -#: ../../include/conversation.php:543 ../../include/conversation.php:949 +#: ../../include/conversation.php:553 ../../include/conversation.php:968 msgid "Preview" msgstr "Vorschau" -#: ../../mod/photos.php:1320 ../../mod/settings.php:513 -#: ../../mod/group.php:154 ../../mod/admin.php:484 -#: ../../include/conversation.php:302 ../../include/conversation.php:563 +#: ../../mod/photos.php:1320 ../../mod/settings.php:520 +#: ../../mod/settings.php:601 ../../mod/group.php:158 ../../mod/admin.php:488 +#: ../../include/conversation.php:304 ../../include/conversation.php:573 msgid "Delete" msgstr "Löschen" @@ -614,26 +615,26 @@ msgstr "Beitrag nicht gefunden" msgid "Edit post" msgstr "Beitrag bearbeiten" -#: ../../mod/editpost.php:80 ../../include/conversation.php:900 +#: ../../mod/editpost.php:80 ../../include/conversation.php:919 msgid "Post to Email" msgstr "An E-Mail senden" -#: ../../mod/editpost.php:95 ../../mod/settings.php:512 -#: ../../include/conversation.php:550 +#: ../../mod/editpost.php:95 ../../mod/settings.php:519 +#: ../../include/conversation.php:560 msgid "Edit" msgstr "Bearbeiten" #: ../../mod/editpost.php:96 ../../mod/message.php:153 -#: ../../mod/message.php:294 ../../include/conversation.php:915 +#: ../../mod/message.php:294 ../../include/conversation.php:934 msgid "Upload photo" msgstr "Foto hochladen" -#: ../../mod/editpost.php:97 ../../include/conversation.php:917 +#: ../../mod/editpost.php:97 ../../include/conversation.php:936 msgid "Attach file" msgstr "Datei anhängen" #: ../../mod/editpost.php:98 ../../mod/message.php:154 -#: ../../mod/message.php:295 ../../include/conversation.php:919 +#: ../../mod/message.php:295 ../../include/conversation.php:938 msgid "Insert web link" msgstr "Weblink einfügen" @@ -649,31 +650,31 @@ msgstr "Vorbis [.ogg] Video einfügen" msgid "Insert Vorbis [.ogg] audio" msgstr "Vorbis [.ogg] Audio einfügen" -#: ../../mod/editpost.php:102 ../../include/conversation.php:925 +#: ../../mod/editpost.php:102 ../../include/conversation.php:944 msgid "Set your location" msgstr "Deinen Standort festlegen" -#: ../../mod/editpost.php:103 ../../include/conversation.php:927 +#: ../../mod/editpost.php:103 ../../include/conversation.php:946 msgid "Clear browser location" msgstr "Browser-Standort leeren" -#: ../../mod/editpost.php:105 ../../include/conversation.php:932 +#: ../../mod/editpost.php:105 ../../include/conversation.php:951 msgid "Permission settings" msgstr "Berechtigungseinstellungen" -#: ../../mod/editpost.php:113 ../../include/conversation.php:941 +#: ../../mod/editpost.php:113 ../../include/conversation.php:960 msgid "CC: email addresses" msgstr "Cc:-E-Mail-Addressen" -#: ../../mod/editpost.php:114 ../../include/conversation.php:942 +#: ../../mod/editpost.php:114 ../../include/conversation.php:961 msgid "Public post" msgstr "Öffentlicher Beitrag" -#: ../../mod/editpost.php:117 ../../include/conversation.php:930 +#: ../../mod/editpost.php:117 ../../include/conversation.php:949 msgid "Set title" msgstr "Titel setzen" -#: ../../mod/editpost.php:118 ../../include/conversation.php:944 +#: ../../mod/editpost.php:118 ../../include/conversation.php:963 msgid "Example: bob@example.com, mary@example.com" msgstr "Z.B.: bob@example.com, mary@example.com" @@ -782,7 +783,7 @@ msgstr "Bitte bestätige deine Kontaktanfrage bei %s." msgid "Confirm" msgstr "Bestätigen" -#: ../../mod/dfrn_request.php:582 ../../include/items.php:2504 +#: ../../mod/dfrn_request.php:582 ../../include/items.php:2566 msgid "[Name Withheld]" msgstr "[Name unterdrückt]" @@ -830,7 +831,7 @@ msgstr "Friendica" msgid "StatusNet/Federated Social Web" msgstr "StatusNet/Federated Social Web" -#: ../../mod/dfrn_request.php:682 ../../mod/settings.php:548 +#: ../../mod/dfrn_request.php:682 ../../mod/settings.php:555 #: ../../include/contact_selectors.php:80 msgid "Diaspora" msgstr "Diaspora" @@ -1093,7 +1094,7 @@ msgid "Errors encountered creating database tables." msgstr "Fehler aufgetreten während der Erzeugung der Datenbanktabellen." #: ../../mod/localtime.php:12 ../../include/event.php:11 -#: ../../include/bb2diaspora.php:268 +#: ../../include/bb2diaspora.php:238 msgid "l F d, Y \\@ g:i A" msgstr "l F d, Y \\@ g:i A" @@ -1236,7 +1237,7 @@ msgid "if applicable" msgstr "falls anwendbar" #: ../../mod/notifications.php:153 ../../mod/notifications.php:200 -#: ../../mod/admin.php:482 +#: ../../mod/admin.php:486 msgid "Approve" msgstr "Genehmigen" @@ -1321,11 +1322,11 @@ msgstr "Keine weiteren Netzwerk-Benachrichtigungen." msgid "Network Notifications" msgstr "Netzwerk Benachrichtigungen" -#: ../../mod/notifications.php:324 ../../mod/notify.php:59 +#: ../../mod/notifications.php:324 ../../mod/notify.php:61 msgid "No more system notifications." msgstr "Keine weiteren System Benachrichtigungen." -#: ../../mod/notifications.php:328 ../../mod/notify.php:63 +#: ../../mod/notifications.php:328 ../../mod/notify.php:65 msgid "System Notifications" msgstr "System Benachrichtigungen" @@ -1433,12 +1434,12 @@ msgid "View all contacts" msgstr "Alle Kontakte anzeigen" #: ../../mod/contacts.php:297 ../../mod/contacts.php:344 -#: ../../mod/admin.php:486 +#: ../../mod/admin.php:490 msgid "Unblock" msgstr "Entsperren" #: ../../mod/contacts.php:297 ../../mod/contacts.php:344 -#: ../../mod/admin.php:485 +#: ../../mod/admin.php:489 msgid "Block" msgstr "Sperren" @@ -1507,7 +1508,7 @@ msgstr "letzte Aktualisierung:" msgid "Update public posts" msgstr "Öffentliche Beiträge aktualisieren" -#: ../../mod/contacts.php:341 ../../mod/admin.php:896 +#: ../../mod/contacts.php:341 ../../mod/admin.php:905 msgid "Update now" msgstr "Jetzt aktualisieren" @@ -1524,7 +1525,7 @@ msgid "" "Replies/likes to your public posts may still be visible" msgstr "Antworten/Likes auf deine öffentlichen Beiträge könnten weiterhin sichtbar sein" -#: ../../mod/contacts.php:399 ../../mod/group.php:194 +#: ../../mod/contacts.php:399 ../../mod/group.php:179 msgid "All Contacts" msgstr "Alle Kontakte" @@ -1557,23 +1558,23 @@ msgid "you are a fan of" msgstr "du bist Fan von" #: ../../mod/contacts.php:498 ../../include/Contact.php:135 -#: ../../include/conversation.php:773 +#: ../../include/conversation.php:792 msgid "Edit contact" msgstr "Kontakt bearbeiten" -#: ../../mod/contacts.php:518 ../../include/nav.php:132 +#: ../../mod/contacts.php:519 ../../include/nav.php:132 msgid "Contacts" msgstr "Kontakte" -#: ../../mod/contacts.php:522 +#: ../../mod/contacts.php:523 msgid "Search your contacts" msgstr "Suche in deinen Kontakten" -#: ../../mod/contacts.php:523 ../../mod/directory.php:67 +#: ../../mod/contacts.php:524 ../../mod/directory.php:67 msgid "Finding: " msgstr "Funde: " -#: ../../mod/contacts.php:524 ../../mod/directory.php:69 +#: ../../mod/contacts.php:525 ../../mod/directory.php:69 #: ../../include/contact_widgets.php:34 msgid "Find" msgstr "Finde" @@ -1593,8 +1594,8 @@ msgstr "Anfrage zum Zurücksetzen des Passworts auf %s erhalten" #: ../../mod/lostpass.php:44 ../../mod/lostpass.php:106 #: ../../mod/register.php:380 ../../mod/register.php:434 -#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:716 -#: ../../include/items.php:2513 +#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:726 +#: ../../include/items.php:2575 msgid "Administrator" msgstr "Administrator" @@ -1648,429 +1649,445 @@ msgstr "Spitzname oder Email:" msgid "Reset" msgstr "Zurücksetzen" -#: ../../mod/settings.php:70 +#: ../../mod/settings.php:72 msgid "Missing some important data!" msgstr "Wichtige Daten fehlen!" -#: ../../mod/settings.php:73 ../../mod/settings.php:479 ../../mod/admin.php:75 +#: ../../mod/settings.php:75 ../../mod/settings.php:486 ../../mod/admin.php:75 msgid "Update" msgstr "Aktualisierungen" -#: ../../mod/settings.php:168 +#: ../../mod/settings.php:175 msgid "Failed to connect with email account using the settings provided." msgstr "Konnte das Email Konto mit den angegebenen Einstellungen nicht erreichen." -#: ../../mod/settings.php:173 +#: ../../mod/settings.php:180 msgid "Email settings updated." msgstr "EMail Einstellungen bearbeitet." -#: ../../mod/settings.php:191 +#: ../../mod/settings.php:198 msgid "Passwords do not match. Password unchanged." msgstr "Die Passwörter stimmen nicht überein. Das Passwort bleibt unverändert." -#: ../../mod/settings.php:196 +#: ../../mod/settings.php:203 msgid "Empty passwords are not allowed. Password unchanged." msgstr "Leere Passwörter sind nicht erlaubt. Passwort bleibt unverändert." -#: ../../mod/settings.php:207 +#: ../../mod/settings.php:214 msgid "Password changed." msgstr "Passwort ändern." -#: ../../mod/settings.php:209 +#: ../../mod/settings.php:216 msgid "Password update failed. Please try again." msgstr "Aktualisierung des Passworts gescheitert, bitte versuche es noch einmal." -#: ../../mod/settings.php:273 +#: ../../mod/settings.php:280 msgid " Please use a shorter name." msgstr " Bitte verwende einen kürzeren Namen." -#: ../../mod/settings.php:275 +#: ../../mod/settings.php:282 msgid " Name too short." msgstr " Name ist zu kurz." -#: ../../mod/settings.php:281 +#: ../../mod/settings.php:288 msgid " Not valid email." msgstr " Keine gültige E-Mail." -#: ../../mod/settings.php:283 +#: ../../mod/settings.php:290 msgid " Cannot change to that email." msgstr "Ändern der E-Mail nicht möglich. " -#: ../../mod/settings.php:351 ../../addon/facebook/facebook.php:321 +#: ../../mod/settings.php:358 ../../addon/facebook/facebook.php:321 #: ../../addon/impressum/impressum.php:64 #: ../../addon/openstreetmap/openstreetmap.php:80 #: ../../addon/piwik/piwik.php:105 ../../addon/twitter/twitter.php:350 msgid "Settings updated." msgstr "Einstellungen aktualisiert." -#: ../../mod/settings.php:415 ../../include/nav.php:130 +#: ../../mod/settings.php:422 ../../include/nav.php:130 msgid "Account settings" msgstr "Account Einstellungen" -#: ../../mod/settings.php:420 +#: ../../mod/settings.php:427 msgid "Connector settings" msgstr "Connector-Einstellungen" -#: ../../mod/settings.php:425 +#: ../../mod/settings.php:432 msgid "Plugin settings" msgstr "Plugin-Einstellungen" -#: ../../mod/settings.php:430 +#: ../../mod/settings.php:437 msgid "Connections" msgstr "Verbindungen" -#: ../../mod/settings.php:435 +#: ../../mod/settings.php:442 msgid "Export personal data" msgstr "Persönliche Daten exportieren" -#: ../../mod/settings.php:452 ../../mod/settings.php:478 -#: ../../mod/settings.php:511 +#: ../../mod/settings.php:459 ../../mod/settings.php:485 +#: ../../mod/settings.php:518 msgid "Add application" msgstr "Programm hinzufügen" -#: ../../mod/settings.php:456 ../../mod/settings.php:482 +#: ../../mod/settings.php:463 ../../mod/settings.php:489 #: ../../addon/statusnet/statusnet.php:526 msgid "Consumer Key" msgstr "Consumer Key" -#: ../../mod/settings.php:457 ../../mod/settings.php:483 +#: ../../mod/settings.php:464 ../../mod/settings.php:490 #: ../../addon/statusnet/statusnet.php:525 msgid "Consumer Secret" msgstr "Consumer Secret" -#: ../../mod/settings.php:458 ../../mod/settings.php:484 +#: ../../mod/settings.php:465 ../../mod/settings.php:491 msgid "Redirect" msgstr "Umleiten" -#: ../../mod/settings.php:459 ../../mod/settings.php:485 +#: ../../mod/settings.php:466 ../../mod/settings.php:492 msgid "Icon url" msgstr "Icon URL" -#: ../../mod/settings.php:470 +#: ../../mod/settings.php:477 msgid "You can't edit this application." msgstr "Du kannst dieses Programm nicht bearbeiten." -#: ../../mod/settings.php:510 +#: ../../mod/settings.php:517 msgid "Connected Apps" msgstr "Verbundene Programme" -#: ../../mod/settings.php:514 +#: ../../mod/settings.php:521 msgid "Client key starts with" msgstr "Anwender Schlüssel beginnt mit" -#: ../../mod/settings.php:515 +#: ../../mod/settings.php:522 msgid "No name" msgstr "Kein Name" -#: ../../mod/settings.php:516 +#: ../../mod/settings.php:523 msgid "Remove authorization" msgstr "Autorisierung entziehen" -#: ../../mod/settings.php:528 +#: ../../mod/settings.php:535 msgid "No Plugin settings configured" msgstr "Keine Plugin-Einstellungen konfiguriert" -#: ../../mod/settings.php:535 ../../addon/widgets/widgets.php:122 +#: ../../mod/settings.php:542 ../../addon/widgets/widgets.php:122 msgid "Plugin Settings" msgstr "Plugin-Einstellungen" -#: ../../mod/settings.php:548 ../../mod/settings.php:549 +#: ../../mod/settings.php:555 ../../mod/settings.php:556 #, php-format msgid "Built-in support for %s connectivity is %s" msgstr "Eingebaute Unterstützung für Verbindungen zu %s ist %s" -#: ../../mod/settings.php:548 ../../mod/settings.php:549 +#: ../../mod/settings.php:555 ../../mod/settings.php:556 msgid "enabled" msgstr "eingeschaltet" -#: ../../mod/settings.php:548 ../../mod/settings.php:549 +#: ../../mod/settings.php:555 ../../mod/settings.php:556 msgid "disabled" msgstr "ausgeschaltet" -#: ../../mod/settings.php:549 +#: ../../mod/settings.php:556 msgid "StatusNet" msgstr "StatusNet" -#: ../../mod/settings.php:575 +#: ../../mod/settings.php:584 msgid "Connector Settings" msgstr "Verbindungs-Einstellungen" -#: ../../mod/settings.php:581 +#: ../../mod/settings.php:590 msgid "Email/Mailbox Setup" msgstr "E-Mail/Postfach-Einstellungen" -#: ../../mod/settings.php:582 +#: ../../mod/settings.php:591 msgid "" "If you wish to communicate with email contacts using this service " "(optional), please specify how to connect to your mailbox." msgstr "Wenn du mit E-Mail-Kontakten über diesen Service kommunizieren möchtest (optional), gib bitte die Einstellungen für dein Postfach an." -#: ../../mod/settings.php:583 +#: ../../mod/settings.php:592 msgid "Last successful email check:" msgstr "Letzter erfolgreicher Email Check" -#: ../../mod/settings.php:584 +#: ../../mod/settings.php:593 msgid "Email access is disabled on this site." msgstr "Zugriff auf E-Mails für diese Seite deaktiviert." -#: ../../mod/settings.php:585 +#: ../../mod/settings.php:594 msgid "IMAP server name:" msgstr "IMAP-Server-Name:" -#: ../../mod/settings.php:586 +#: ../../mod/settings.php:595 msgid "IMAP port:" msgstr "IMAP-Port:" -#: ../../mod/settings.php:587 +#: ../../mod/settings.php:596 msgid "Security:" msgstr "Sicherheit:" -#: ../../mod/settings.php:587 +#: ../../mod/settings.php:596 ../../mod/settings.php:601 msgid "None" msgstr "Keine" -#: ../../mod/settings.php:588 +#: ../../mod/settings.php:597 msgid "Email login name:" msgstr "E-Mail-Login-Name:" -#: ../../mod/settings.php:589 +#: ../../mod/settings.php:598 msgid "Email password:" msgstr "E-Mail-Passwort:" -#: ../../mod/settings.php:590 +#: ../../mod/settings.php:599 msgid "Reply-to address:" msgstr "Reply-to Adresse:" -#: ../../mod/settings.php:591 +#: ../../mod/settings.php:600 msgid "Send public posts to all email contacts:" msgstr "Sende öffentliche Beiträge an alle E-Mail-Kontakte:" -#: ../../mod/settings.php:648 ../../mod/admin.php:142 ../../mod/admin.php:459 +#: ../../mod/settings.php:601 +msgid "Action after import:" +msgstr "Aktion nach Import:" + +#: ../../mod/settings.php:601 +msgid "Mark as seen" +msgstr "Als gelesen markieren" + +#: ../../mod/settings.php:601 +msgid "Move to folder" +msgstr "In einen Ordner verschieben" + +#: ../../mod/settings.php:602 +msgid "Move to folder:" +msgstr "In diesen Ordner verschieben:" + +#: ../../mod/settings.php:659 ../../mod/admin.php:142 ../../mod/admin.php:462 msgid "Normal Account" msgstr "Normaler Account" -#: ../../mod/settings.php:649 +#: ../../mod/settings.php:660 msgid "This account is a normal personal profile" msgstr "Dieser Account ist ein normales persönliches Profil" -#: ../../mod/settings.php:652 ../../mod/admin.php:143 ../../mod/admin.php:460 +#: ../../mod/settings.php:663 ../../mod/admin.php:143 ../../mod/admin.php:463 msgid "Soapbox Account" msgstr "Sandkasten-Account" -#: ../../mod/settings.php:653 +#: ../../mod/settings.php:664 msgid "Automatically approve all connection/friend requests as read-only fans" msgstr "Freundschaftsanfragen werden automatisch als Nurlese-Fans akzeptiert" -#: ../../mod/settings.php:656 ../../mod/admin.php:144 ../../mod/admin.php:461 +#: ../../mod/settings.php:667 ../../mod/admin.php:144 ../../mod/admin.php:464 msgid "Community/Celebrity Account" msgstr "Gemeinschafts/Promi-Account" -#: ../../mod/settings.php:657 +#: ../../mod/settings.php:668 msgid "" "Automatically approve all connection/friend requests as read-write fans" msgstr "Freundschaftsanfragen werden automatisch als Lese-und-Schreib-Fans akzeptiert" -#: ../../mod/settings.php:660 ../../mod/admin.php:145 ../../mod/admin.php:462 +#: ../../mod/settings.php:671 ../../mod/admin.php:145 ../../mod/admin.php:465 msgid "Automatic Friend Account" msgstr "Automatischer Freundesaccount" -#: ../../mod/settings.php:661 +#: ../../mod/settings.php:672 msgid "Automatically approve all connection/friend requests as friends" msgstr "Freundschaftsanfragen werden automatisch als Freund akzeptiert" -#: ../../mod/settings.php:671 +#: ../../mod/settings.php:682 msgid "OpenID:" msgstr "OpenID:" -#: ../../mod/settings.php:671 +#: ../../mod/settings.php:682 msgid "(Optional) Allow this OpenID to login to this account." msgstr "(Optional) Erlaube die Anmeldung für diesen Account mit dieser OpenID." -#: ../../mod/settings.php:681 +#: ../../mod/settings.php:692 msgid "Publish your default profile in your local site directory?" msgstr "Veröffentliche dein Standardprofil im Verzeichnis der lokalen Seite?" -#: ../../mod/settings.php:687 +#: ../../mod/settings.php:698 msgid "Publish your default profile in the global social directory?" msgstr "Veröffentliche dein Standardprofil im weltweiten Verzeichnis?" -#: ../../mod/settings.php:695 +#: ../../mod/settings.php:706 msgid "Hide your contact/friend list from viewers of your default profile?" msgstr "Liste der Kontakte vor Betrachtern des Standardprofils verbergen?" -#: ../../mod/settings.php:699 +#: ../../mod/settings.php:710 msgid "Hide your profile details from unknown viewers?" msgstr "Profil-Details vor unbekannten Betrachtern verbergen?" -#: ../../mod/settings.php:704 +#: ../../mod/settings.php:715 msgid "Allow friends to post to your profile page?" msgstr "Deinen Kontakten erlauben, auf deine Pinnwand zu schreiben?" -#: ../../mod/settings.php:710 +#: ../../mod/settings.php:721 msgid "Allow friends to tag your posts?" msgstr "Deinen Kontakten erlauben, deine Beiträge mit Schlagwörtern zu versehen?" -#: ../../mod/settings.php:716 +#: ../../mod/settings.php:727 msgid "Allow us to suggest you as a potential friend to new members?" msgstr "Erlaube uns dich als potentiellen Kontakt für neue Mitglieder vorzuschlagen?" -#: ../../mod/settings.php:725 +#: ../../mod/settings.php:736 msgid "Profile is not published." msgstr "Profil ist nicht veröffentlicht." -#: ../../mod/settings.php:757 ../../mod/profile_photo.php:206 +#: ../../mod/settings.php:768 ../../mod/profile_photo.php:206 msgid "or" msgstr "oder" -#: ../../mod/settings.php:762 +#: ../../mod/settings.php:773 msgid "Your Identity Address is" msgstr "Die Adresse deines Profils lautet:" -#: ../../mod/settings.php:773 +#: ../../mod/settings.php:784 msgid "Automatically expire posts after this many days:" msgstr "Beiträge verfallen automatisch nach dieser Anzahl von Tagen" -#: ../../mod/settings.php:773 +#: ../../mod/settings.php:784 msgid "If empty, posts will not expire. Expired posts will be deleted" msgstr "Wenn leer verfallen Beiträge nie automatisch. Verfallene Beiträge werden gelöscht." -#: ../../mod/settings.php:774 +#: ../../mod/settings.php:785 msgid "Advanced expiration settings" msgstr "Erweiterte Verfallseinstellungen" -#: ../../mod/settings.php:775 +#: ../../mod/settings.php:786 msgid "Advanced Expiration" msgstr "Erweitertes Verfallen" -#: ../../mod/settings.php:776 +#: ../../mod/settings.php:787 msgid "Expire posts:" msgstr "Beiträge verfallen lassen:" -#: ../../mod/settings.php:777 +#: ../../mod/settings.php:788 msgid "Expire personal notes:" msgstr "Persönliche Notizen verfallen lassen:" -#: ../../mod/settings.php:778 +#: ../../mod/settings.php:789 msgid "Expire starred posts:" msgstr "Markierte Beiträge verfallen lassen:" -#: ../../mod/settings.php:779 +#: ../../mod/settings.php:790 msgid "Expire photos:" msgstr "Fotos verfallen lassen:" -#: ../../mod/settings.php:784 +#: ../../mod/settings.php:795 msgid "Account Settings" msgstr "Account-Einstellungen" -#: ../../mod/settings.php:792 +#: ../../mod/settings.php:803 msgid "Password Settings" msgstr "Passwort-Einstellungen" -#: ../../mod/settings.php:793 +#: ../../mod/settings.php:804 msgid "New Password:" msgstr "Neues Passwort:" -#: ../../mod/settings.php:794 +#: ../../mod/settings.php:805 msgid "Confirm:" msgstr "Bestätigen:" -#: ../../mod/settings.php:794 +#: ../../mod/settings.php:805 msgid "Leave password fields blank unless changing" msgstr "Lass die Passwort-Felder leer, außer du willst das Passwort ändern" -#: ../../mod/settings.php:798 +#: ../../mod/settings.php:809 msgid "Basic Settings" msgstr "Grundeinstellungen" -#: ../../mod/settings.php:799 ../../include/profile_advanced.php:15 +#: ../../mod/settings.php:810 ../../include/profile_advanced.php:15 msgid "Full Name:" msgstr "Kompletter Name:" -#: ../../mod/settings.php:800 +#: ../../mod/settings.php:811 msgid "Email Address:" msgstr "Emailadresse:" -#: ../../mod/settings.php:801 +#: ../../mod/settings.php:812 msgid "Your Timezone:" msgstr "Deine Zeitzone:" -#: ../../mod/settings.php:802 +#: ../../mod/settings.php:813 msgid "Default Post Location:" msgstr "Standardstandort:" -#: ../../mod/settings.php:803 +#: ../../mod/settings.php:814 msgid "Use Browser Location:" msgstr "Verwende den Standort des Browsers:" -#: ../../mod/settings.php:804 +#: ../../mod/settings.php:815 msgid "Display Theme:" msgstr "Theme:" -#: ../../mod/settings.php:805 +#: ../../mod/settings.php:816 msgid "Update browser every xx seconds" msgstr "Browser alle xx Sekunden aktualisieren" -#: ../../mod/settings.php:805 +#: ../../mod/settings.php:816 msgid "Minimum of 10 seconds, no maximum" msgstr "Minimal 10 Sekunden, kein Maximum" -#: ../../mod/settings.php:807 +#: ../../mod/settings.php:818 msgid "Security and Privacy Settings" msgstr "Sicherheits- und Privatsphäre-Einstellungen" -#: ../../mod/settings.php:809 +#: ../../mod/settings.php:820 msgid "Maximum Friend Requests/Day:" msgstr "Maximale Anzahl von Freundschaftsanfragen/Tag:" -#: ../../mod/settings.php:809 +#: ../../mod/settings.php:820 msgid "(to prevent spam abuse)" msgstr "(um SPAM zu vermeiden)" -#: ../../mod/settings.php:810 +#: ../../mod/settings.php:821 msgid "Default Post Permissions" msgstr "Standard-Zugriffsrechte für Beiträge" -#: ../../mod/settings.php:811 +#: ../../mod/settings.php:822 msgid "(click to open/close)" msgstr "(klicke zum öffnen/schließen)" -#: ../../mod/settings.php:826 +#: ../../mod/settings.php:837 msgid "Notification Settings" msgstr "Benachrichtigungseinstellungen" -#: ../../mod/settings.php:827 +#: ../../mod/settings.php:838 msgid "Send a notification email when:" msgstr "Benachrichtigungs-E-Mail senden wenn:" -#: ../../mod/settings.php:828 +#: ../../mod/settings.php:839 msgid "You receive an introduction" msgstr "- du eine Kontaktanfrage erhältst" -#: ../../mod/settings.php:829 +#: ../../mod/settings.php:840 msgid "Your introductions are confirmed" msgstr "- eine deiner Kontaktanfragen akzeptiert wurde" -#: ../../mod/settings.php:830 +#: ../../mod/settings.php:841 msgid "Someone writes on your profile wall" msgstr "- jemand etwas auf deine Pinnwand schreibt" -#: ../../mod/settings.php:831 +#: ../../mod/settings.php:842 msgid "Someone writes a followup comment" msgstr "- jemand auch einen Kommentar verfasst" -#: ../../mod/settings.php:832 +#: ../../mod/settings.php:843 msgid "You receive a private message" msgstr "- du eine private Nachricht erhältst" -#: ../../mod/settings.php:833 +#: ../../mod/settings.php:844 msgid "You receive a friend suggestion" msgstr "- du eine Empfehlung erhältst" -#: ../../mod/settings.php:834 +#: ../../mod/settings.php:845 msgid "You are tagged in a post" msgstr "- du in einem Beitrag erwähnt wurdest" -#: ../../mod/settings.php:837 +#: ../../mod/settings.php:848 msgid "Advanced Page Settings" msgstr "Erweiterte Seiten-Einstellungen" @@ -2136,27 +2153,27 @@ msgstr[1] "Warnung: Diese Gruppe beinhaltet %s Personen aus unsicheren Netzwerke msgid "Private messages to this group are at risk of public disclosure." msgstr "Private Nachrichten an diese Gruppe könnten an die Öffentlichkeit geraten." -#: ../../mod/network.php:300 +#: ../../mod/network.php:298 msgid "No such group" msgstr "Es gibt keine solche Gruppe" -#: ../../mod/network.php:311 +#: ../../mod/network.php:309 msgid "Group is empty" msgstr "Gruppe ist leer" -#: ../../mod/network.php:315 +#: ../../mod/network.php:313 msgid "Group: " msgstr "Gruppe: " -#: ../../mod/network.php:325 +#: ../../mod/network.php:323 msgid "Contact: " msgstr "Kontakt: " -#: ../../mod/network.php:327 +#: ../../mod/network.php:325 msgid "Private messages to this person are at risk of public disclosure." msgstr "Private Nachrichten an diese Person könnten an die Öffentlichkeit gelangen." -#: ../../mod/network.php:332 +#: ../../mod/network.php:330 msgid "Invalid contact." msgstr "Ungültiger Kontakt." @@ -2164,7 +2181,7 @@ msgstr "Ungültiger Kontakt." msgid "Personal Notes" msgstr "Persönliche Notizen" -#: ../../mod/notes.php:63 ../../include/text.php:639 +#: ../../mod/notes.php:63 ../../include/text.php:645 msgid "Save" msgstr "Speichern" @@ -2291,7 +2308,7 @@ msgstr "Gruppe erstellt." msgid "Could not create group." msgstr "Konnte die Gruppe nicht erstellen." -#: ../../mod/group.php:43 ../../mod/group.php:123 +#: ../../mod/group.php:43 ../../mod/group.php:127 msgid "Group not found." msgstr "Gruppe nicht gefunden." @@ -2303,34 +2320,34 @@ msgstr "Gruppenname geändert." msgid "Permission denied" msgstr "Zugriff verweigert" -#: ../../mod/group.php:82 +#: ../../mod/group.php:85 msgid "Create a group of contacts/friends." msgstr "Eine Gruppe von Kontakten/Freunden anlegen." -#: ../../mod/group.php:83 ../../mod/group.php:166 +#: ../../mod/group.php:86 ../../mod/group.php:166 msgid "Group Name: " msgstr "Gruppenname:" -#: ../../mod/group.php:98 +#: ../../mod/group.php:102 msgid "Group removed." msgstr "Gruppe entfernt." -#: ../../mod/group.php:100 +#: ../../mod/group.php:104 msgid "Unable to remove group." msgstr "Konnte die Gruppe nicht entfernen." -#: ../../mod/group.php:164 ../../mod/profperm.php:105 -msgid "Click on a contact to add or remove." -msgstr "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen" - #: ../../mod/group.php:165 msgid "Group Editor" msgstr "Gruppeneditor" -#: ../../mod/group.php:179 +#: ../../mod/group.php:177 msgid "Members" msgstr "Mitglieder" +#: ../../mod/group.php:209 ../../mod/profperm.php:105 +msgid "Click on a contact to add or remove." +msgstr "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen" + #: ../../mod/profperm.php:25 ../../mod/profperm.php:55 msgid "Invalid profile identifier." msgstr "Ungültiger Profil-Bezeichner" @@ -2357,7 +2374,7 @@ msgstr "Alle Kontakte (mit gesichertem Profilzugriff)" msgid "No contacts." msgstr "Keine Kontakte." -#: ../../mod/viewcontacts.php:73 ../../include/text.php:578 +#: ../../mod/viewcontacts.php:74 ../../include/text.php:584 msgid "View Contacts" msgstr "Kontakte anzeigen" @@ -2484,7 +2501,7 @@ msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung mögli msgid "Your invitation ID: " msgstr "ID deiner Einladung: " -#: ../../mod/register.php:540 ../../mod/admin.php:313 +#: ../../mod/register.php:540 ../../mod/admin.php:314 msgid "Registration" msgstr "Registrierung" @@ -2538,9 +2555,9 @@ msgid "%1$s doesn't like %2$s's %3$s" msgstr "%1$s mag %2$ss %3$s nicht" #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:127 -#: ../../mod/admin.php:518 ../../mod/admin.php:694 ../../mod/display.php:29 -#: ../../mod/display.php:134 ../../mod/viewd.php:14 -#: ../../include/items.php:2880 +#: ../../mod/admin.php:522 ../../mod/admin.php:700 ../../mod/display.php:29 +#: ../../mod/display.php:137 ../../mod/viewd.php:14 +#: ../../include/items.php:2942 msgid "Item not found." msgstr "Beitrag nicht gefunden." @@ -2575,29 +2592,29 @@ msgstr "Leerer Beitrag wurde verworfen." msgid "Wall Photos" msgstr "Pinnwand-Bilder" -#: ../../mod/item.php:830 +#: ../../mod/item.php:833 msgid "System error. Post not saved." msgstr "Systemfehler. Beitrag konnte nicht gespeichert werden." -#: ../../mod/item.php:855 +#: ../../mod/item.php:858 #, php-format msgid "" "This message was sent to you by %s, a member of the Friendica social " "network." msgstr "Diese Nachricht wurde dir von %s geschickt, einem Mitglied des Sozialen Netzwerks Friendica." -#: ../../mod/item.php:857 +#: ../../mod/item.php:860 #, php-format msgid "You may visit them online at %s" msgstr "Du kannst sie online unter %s besuchen" -#: ../../mod/item.php:858 +#: ../../mod/item.php:861 msgid "" "Please contact the sender by replying to this post if you do not wish to " "receive these messages." msgstr "Falls du diese Beiträge nicht erhalten möchtest, kontaktiere bitte den Autor, indem du auf diese Nachricht antwortest." -#: ../../mod/item.php:860 +#: ../../mod/item.php:863 #, php-format msgid "%s posted an update." msgstr "%s hat ein Update veröffentlicht." @@ -2721,7 +2738,7 @@ msgstr "Nachricht gelöscht." msgid "Conversation removed." msgstr "Unterhaltung gelöscht." -#: ../../mod/message.php:137 ../../include/conversation.php:868 +#: ../../mod/message.php:137 ../../include/conversation.php:887 msgid "Please enter a link URL:" msgstr "Bitte gib die URL des Links ein:" @@ -2775,23 +2792,23 @@ msgstr "Freunde von %s" msgid "No friends to display." msgstr "Keine Freunde zum Anzeigen." -#: ../../mod/admin.php:71 ../../mod/admin.php:311 +#: ../../mod/admin.php:71 ../../mod/admin.php:312 msgid "Site" msgstr "Seite" -#: ../../mod/admin.php:72 ../../mod/admin.php:476 ../../mod/admin.php:488 +#: ../../mod/admin.php:72 ../../mod/admin.php:480 ../../mod/admin.php:492 msgid "Users" msgstr "Nutzer" -#: ../../mod/admin.php:73 ../../mod/admin.php:565 ../../mod/admin.php:602 +#: ../../mod/admin.php:73 ../../mod/admin.php:569 ../../mod/admin.php:608 msgid "Plugins" msgstr "Plugins" -#: ../../mod/admin.php:74 ../../mod/admin.php:736 ../../mod/admin.php:768 +#: ../../mod/admin.php:74 ../../mod/admin.php:742 ../../mod/admin.php:775 msgid "Themes" msgstr "Themen" -#: ../../mod/admin.php:89 ../../mod/admin.php:846 +#: ../../mod/admin.php:89 ../../mod/admin.php:855 msgid "Logs" msgstr "Protokolle" @@ -2799,325 +2816,439 @@ msgstr "Protokolle" msgid "User registrations waiting for confirmation" msgstr "Nutzeranmeldungen die auf Bestätigung warten" -#: ../../mod/admin.php:160 ../../mod/admin.php:310 ../../mod/admin.php:475 -#: ../../mod/admin.php:564 ../../mod/admin.php:601 ../../mod/admin.php:735 -#: ../../mod/admin.php:767 ../../mod/admin.php:845 +#: ../../mod/admin.php:161 ../../mod/admin.php:311 ../../mod/admin.php:479 +#: ../../mod/admin.php:568 ../../mod/admin.php:607 ../../mod/admin.php:741 +#: ../../mod/admin.php:774 ../../mod/admin.php:854 msgid "Administration" msgstr "Administration" -#: ../../mod/admin.php:161 +#: ../../mod/admin.php:162 msgid "Summary" msgstr "Zusammenfassung" -#: ../../mod/admin.php:162 +#: ../../mod/admin.php:163 msgid "Registered users" msgstr "Registrierte Nutzer" -#: ../../mod/admin.php:164 +#: ../../mod/admin.php:165 msgid "Pending registrations" msgstr "Anstehende Anmeldungen" -#: ../../mod/admin.php:165 +#: ../../mod/admin.php:166 msgid "Version" msgstr "Version" -#: ../../mod/admin.php:167 +#: ../../mod/admin.php:168 msgid "Active plugins" msgstr "Aktive Plugins" -#: ../../mod/admin.php:259 +#: ../../mod/admin.php:260 msgid "Site settings updated." msgstr "Seiteneinstellungen aktualisiert." -#: ../../mod/admin.php:303 +#: ../../mod/admin.php:304 msgid "Closed" msgstr "Geschlossen" -#: ../../mod/admin.php:304 +#: ../../mod/admin.php:305 msgid "Requires approval" msgstr "Bedarf der Zustimmung" -#: ../../mod/admin.php:305 +#: ../../mod/admin.php:306 msgid "Open" msgstr "Offen" -#: ../../mod/admin.php:314 +#: ../../mod/admin.php:315 msgid "File upload" msgstr "Datei hochladen" -#: ../../mod/admin.php:315 +#: ../../mod/admin.php:316 msgid "Policies" msgstr "Regeln" -#: ../../mod/admin.php:316 +#: ../../mod/admin.php:317 msgid "Advanced" msgstr "Erweitert" -#: ../../mod/admin.php:320 ../../addon/statusnet/statusnet.php:523 +#: ../../mod/admin.php:321 ../../addon/statusnet/statusnet.php:523 msgid "Site name" msgstr "Seitenname" -#: ../../mod/admin.php:321 +#: ../../mod/admin.php:322 msgid "Banner/Logo" msgstr "Banner/Logo" -#: ../../mod/admin.php:322 +#: ../../mod/admin.php:323 msgid "System language" msgstr "Systemsprache" -#: ../../mod/admin.php:323 +#: ../../mod/admin.php:324 msgid "System theme" msgstr "Systemweites Thema" -#: ../../mod/admin.php:325 +#: ../../mod/admin.php:324 +msgid "Default system theme - may be over-ridden by user profiles" +msgstr "Standard Server Theme - kann von den Benutzereinstellungen überschrieben werden." + +#: ../../mod/admin.php:326 msgid "Maximum image size" msgstr "Maximale Größe von Bildern" -#: ../../mod/admin.php:327 +#: ../../mod/admin.php:326 +msgid "" +"Maximum size in bytes of uploaded images. Default is 0, which means no " +"limits." +msgstr "Maximale Upload-Größe von Bildern in Bytes. Standard ist 0, d.h. ohne Limit." + +#: ../../mod/admin.php:328 msgid "Register policy" msgstr "Registrierungsmethode" -#: ../../mod/admin.php:328 +#: ../../mod/admin.php:329 msgid "Register text" msgstr "Registrierungstext" #: ../../mod/admin.php:329 +msgid "Will be displayed prominently on the registration page." +msgstr "Wird gut sichtbar auf der Registrierungs-Seite angezeigt." + +#: ../../mod/admin.php:330 msgid "Accounts abandoned after x days" msgstr "Accounts gelten nach x Tagen als unbenutzt" -#: ../../mod/admin.php:329 +#: ../../mod/admin.php:330 msgid "" "Will not waste system resources polling external sites for abandonded " "accounts. Enter 0 for no time limit." msgstr "Verschwende keine System-Ressourcen auf das Pollen externer Seiten, wenn Accounts nicht mehr benutzt werden. 0 eingeben für kein Limit." -#: ../../mod/admin.php:330 +#: ../../mod/admin.php:331 msgid "Allowed friend domains" msgstr "Erlaubte Domains für Kontakte" #: ../../mod/admin.php:331 +msgid "" +"Comma separated list of domains which are allowed to establish friendships " +"with this site. Wildcards are accepted. Empty to allow any domains" +msgstr "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben." + +#: ../../mod/admin.php:332 msgid "Allowed email domains" msgstr "Erlaubte Domains für Emails" #: ../../mod/admin.php:332 +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 "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben." + +#: ../../mod/admin.php:333 msgid "Block public" msgstr "Öffentlichen Zugriff blockieren" #: ../../mod/admin.php:333 +msgid "" +"Check to block public access to all otherwise public personal pages on this " +"site unless you are currently logged in." +msgstr "Klicken, um öffentlichen Zugriff auf sonst öffentliche Profile zu blockieren, wenn man nicht eingeloggt ist." + +#: ../../mod/admin.php:334 msgid "Force publish" msgstr "Erzwinge Veröffentlichung" #: ../../mod/admin.php:334 +msgid "" +"Check to force all profiles on this site to be listed in the site directory." +msgstr "Klicken, um Anzeige aller Profile dieses Servers im Verzeichnis zu erzwingen." + +#: ../../mod/admin.php:335 msgid "Global directory update URL" msgstr "URL für Updates beim weltweiten Verzeichnis" -#: ../../mod/admin.php:336 +#: ../../mod/admin.php:335 +msgid "" +"URL to update the global directory. If this is not set, the global directory" +" is completely unavailable to the application." +msgstr "URL für Update des globalen Verzeichnisses. Wenn nichts eingetragen ist, bleibt das globale Verzeichnis unerreichbar." + +#: ../../mod/admin.php:337 msgid "Block multiple registrations" msgstr "Unterbinde Mehrfachregistrierung" #: ../../mod/admin.php:337 +msgid "Disallow users to register additional accounts for use as pages." +msgstr "Benutzern nicht erlauben, weitere Accounts als zusätzliche Profile anzulegen." + +#: ../../mod/admin.php:338 msgid "OpenID support" msgstr "OpenID Unterstützung" #: ../../mod/admin.php:338 +msgid "OpenID support for registration and logins." +msgstr "OpenID-Unterstützung für Registrierung und Login." + +#: ../../mod/admin.php:339 msgid "Gravatar support" msgstr "Gravatar Unterstützung" #: ../../mod/admin.php:339 +msgid "Search new user's photo on Gravatar." +msgstr "Suchfunktion bei Gravatar für Profilbilder neuer Nutzer." + +#: ../../mod/admin.php:340 msgid "Fullname check" msgstr "Namen auf Vollständigkeit überprüfen" #: ../../mod/admin.php:340 +msgid "" +"Force users to register with a space between firstname and lastname in Full " +"name, as an antispam measure" +msgstr "Leerzeichen zwischen Vor- und Nachname im vollständigen Namen erzwingen, um SPAM zu vermeiden." + +#: ../../mod/admin.php:341 msgid "UTF-8 Regular expressions" msgstr "UTF-8 Reguläre Ausdrücke" #: ../../mod/admin.php:341 +msgid "Use PHP UTF8 regular expressions" +msgstr "PHP UTF8 Ausdrücke verwenden" + +#: ../../mod/admin.php:342 msgid "Show Community Page" msgstr "Gemeinschaftsseite anzeigen" #: ../../mod/admin.php:342 +msgid "" +"Display a Community page showing all recent public postings on this site." +msgstr "Zeige die Gemeinschaftsseite mit allen öffentlichen Beiträgen auf diesem Server." + +#: ../../mod/admin.php:343 msgid "Enable OStatus support" msgstr "OStatus Unterstützung aktivieren" #: ../../mod/admin.php:343 +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 "Biete die eingebaute OStatus (identi.ca, status.net, etc.) Unterstützung an. Jede Kommunikation in OStatus ist öffentlich, so Privatsphäre Warnungen werden bei Bedarf angezeigt." + +#: ../../mod/admin.php:344 msgid "Enable Diaspora support" msgstr "Diaspora-Support aktivieren" #: ../../mod/admin.php:344 +msgid "Provide built-in Diaspora network compatibility." +msgstr "Verwende die eingebaute Diaspora-Verknüpfung." + +#: ../../mod/admin.php:345 msgid "Only allow Friendica contacts" msgstr "Nur Friendica-Kontakte erlauben" #: ../../mod/admin.php:345 +msgid "" +"All contacts must use Friendica protocols. All other built-in communication " +"protocols disabled." +msgstr "Alle Kontakte müssen das Friendica Protokoll nutzen. Alle anderen Kommunikationsprotokolle werden deaktiviert." + +#: ../../mod/admin.php:346 msgid "Verify SSL" msgstr "SSL Überprüfen" #: ../../mod/admin.php:346 +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 "Wenn gewollt, kann man hier eine strenge Zertifikat Kontrolle anstellen. Das bedeutet, das man zu keinen Seiten mit selbst unterzeichneten SSL eine Verbindung herstellen kann." + +#: ../../mod/admin.php:347 msgid "Proxy user" msgstr "Proxy Nutzer" -#: ../../mod/admin.php:347 +#: ../../mod/admin.php:348 msgid "Proxy URL" msgstr "Proxy URL" -#: ../../mod/admin.php:348 +#: ../../mod/admin.php:349 msgid "Network timeout" msgstr "Netzwerk Wartezeit" -#: ../../mod/admin.php:369 +#: ../../mod/admin.php:349 +msgid "Value is in seconds. Set to 0 for unlimited (not recommended)." +msgstr "Der Wert ist in Sekunden. Setze 0 für unbegrenzt (nicht empfohlen)." + +#: ../../mod/admin.php:370 #, php-format -msgid "%s user blocked" +msgid "%s user blocked/unblocked" msgid_plural "%s users blocked/unblocked" -msgstr[0] "%s Nutzer gesperrt" -msgstr[1] "%s Nutzer gesperrt/entsperrt" +msgstr[0] "%s Benutzer geblockt/freigegeben" +msgstr[1] "%s Benutzer geblockt/freigegeben" -#: ../../mod/admin.php:376 +#: ../../mod/admin.php:377 #, php-format msgid "%s user deleted" msgid_plural "%s users deleted" msgstr[0] "%s Nutzer gelöscht" msgstr[1] "%s Nutzer gelöscht" -#: ../../mod/admin.php:410 +#: ../../mod/admin.php:411 #, php-format msgid "User '%s' deleted" msgstr "Nutzer '%s' gelöscht" -#: ../../mod/admin.php:417 +#: ../../mod/admin.php:418 #, php-format msgid "User '%s' unblocked" msgstr "Nutzer '%s' entsperrt" -#: ../../mod/admin.php:417 +#: ../../mod/admin.php:418 #, php-format msgid "User '%s' blocked" msgstr "Nutzer '%s' gesperrt" -#: ../../mod/admin.php:478 +#: ../../mod/admin.php:482 msgid "select all" msgstr "Alle auswählen" -#: ../../mod/admin.php:479 +#: ../../mod/admin.php:483 msgid "User registrations waiting for confirm" msgstr "Neuanmeldungen, die auf deine Bestätigung warten" -#: ../../mod/admin.php:480 +#: ../../mod/admin.php:484 msgid "Request date" msgstr "Anfrage Datum" -#: ../../mod/admin.php:480 ../../mod/admin.php:489 +#: ../../mod/admin.php:484 ../../mod/admin.php:493 #: ../../include/contact_selectors.php:79 msgid "Email" msgstr "Email" -#: ../../mod/admin.php:481 +#: ../../mod/admin.php:485 msgid "No registrations." msgstr "Keine Neuanmeldungen." -#: ../../mod/admin.php:483 +#: ../../mod/admin.php:487 msgid "Deny" msgstr "Verwehren" -#: ../../mod/admin.php:489 +#: ../../mod/admin.php:493 msgid "Register date" msgstr "Anmeldedatum" -#: ../../mod/admin.php:489 +#: ../../mod/admin.php:493 msgid "Last login" msgstr "Letzte Anmeldung" -#: ../../mod/admin.php:489 +#: ../../mod/admin.php:493 msgid "Last item" msgstr "Letzter Beitrag" -#: ../../mod/admin.php:489 +#: ../../mod/admin.php:493 msgid "Account" msgstr "Nutzerkonto" -#: ../../mod/admin.php:491 +#: ../../mod/admin.php:495 msgid "" "Selected users will be deleted!\\n\\nEverything these users had posted on " "this site will be permanently deleted!\\n\\nAre you sure?" msgstr "Die markierten Nutzer werden gelöscht!\\n\\nAlle Beiträge, die diese Nutzer auf dieser Seite veröffentlicht haben, werden permanent gelöscht!\\n\\nBist du sicher?" -#: ../../mod/admin.php:492 +#: ../../mod/admin.php:496 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 "Der Nutzer {0} wird gelöscht!\\n\\nAlles was dieser Nutzer auf dieser Seite veröffentlicht hat, wird permanent gelöscht!\\n\\nBist du sicher?" -#: ../../mod/admin.php:528 +#: ../../mod/admin.php:532 #, php-format msgid "Plugin %s disabled." msgstr "Plugin %s deaktiviert." -#: ../../mod/admin.php:532 +#: ../../mod/admin.php:536 #, php-format msgid "Plugin %s enabled." msgstr "Plugin %s aktiviert." -#: ../../mod/admin.php:542 ../../mod/admin.php:718 +#: ../../mod/admin.php:546 ../../mod/admin.php:724 msgid "Disable" msgstr "Ausschalten" -#: ../../mod/admin.php:544 ../../mod/admin.php:720 +#: ../../mod/admin.php:548 ../../mod/admin.php:726 msgid "Enable" msgstr "Einschalten" -#: ../../mod/admin.php:566 ../../mod/admin.php:737 +#: ../../mod/admin.php:570 ../../mod/admin.php:743 msgid "Toggle" msgstr "Umschalten" -#: ../../mod/admin.php:567 ../../mod/admin.php:738 ../../include/nav.php:130 +#: ../../mod/admin.php:571 ../../mod/admin.php:744 ../../include/nav.php:130 msgid "Settings" msgstr "Einstellungen" -#: ../../mod/admin.php:683 +#: ../../mod/admin.php:578 ../../mod/admin.php:753 +msgid "Author: " +msgstr "Autor:" + +#: ../../mod/admin.php:579 ../../mod/admin.php:754 +msgid "Maintainer: " +msgstr "Betreuer:" + +#: ../../mod/admin.php:689 msgid "No themes found." msgstr "Keine Themen gefunden." -#: ../../mod/admin.php:795 +#: ../../mod/admin.php:780 +msgid "[Experimental]" +msgstr "[Experimentell]" + +#: ../../mod/admin.php:781 +msgid "[Unsupported]" +msgstr "[Nicht unterstützt]" + +#: ../../mod/admin.php:804 msgid "Log settings updated." msgstr "Protokolleinstellungen aktualisiert." -#: ../../mod/admin.php:848 +#: ../../mod/admin.php:857 msgid "Clear" msgstr "löschen" -#: ../../mod/admin.php:854 +#: ../../mod/admin.php:863 msgid "Debugging" msgstr "Protokoll führen" -#: ../../mod/admin.php:855 +#: ../../mod/admin.php:864 msgid "Log file" msgstr "Protokolldatei" -#: ../../mod/admin.php:855 +#: ../../mod/admin.php:864 msgid "" "Must be writable by web server. Relative to your Friendica top-level " "directory." msgstr "Webserver muss Schreibrechte besitzen. Abhängig vom Friendica-Installationsverzeichnis." -#: ../../mod/admin.php:856 +#: ../../mod/admin.php:865 msgid "Log level" msgstr "Protokoll-Level" -#: ../../mod/admin.php:897 +#: ../../mod/admin.php:906 msgid "Close" msgstr "Schließen" -#: ../../mod/admin.php:903 +#: ../../mod/admin.php:912 msgid "FTP Host" msgstr "FTP Host" -#: ../../mod/admin.php:904 +#: ../../mod/admin.php:913 msgid "FTP Path" msgstr "FTP Pfad" -#: ../../mod/admin.php:905 +#: ../../mod/admin.php:914 msgid "FTP User" msgstr "FTP Nutzername" -#: ../../mod/admin.php:906 +#: ../../mod/admin.php:915 msgid "FTP Password" msgstr "FTP Passwort" @@ -3133,48 +3264,48 @@ msgstr "Der Zugriff zu diesem Profil wurde eingeschränkt." msgid "Tips for New Members" msgstr "Tipps für neue Nutzer" -#: ../../mod/ping.php:146 +#: ../../mod/ping.php:174 msgid "{0} wants to be your friend" msgstr "{0} möchte mit dir in Kontakt treten" -#: ../../mod/ping.php:151 +#: ../../mod/ping.php:179 msgid "{0} sent you a message" msgstr "{0} hat dir eine Nachricht geschickt" -#: ../../mod/ping.php:156 +#: ../../mod/ping.php:184 msgid "{0} requested registration" msgstr "{0} möchte sich registrieren" -#: ../../mod/ping.php:162 +#: ../../mod/ping.php:190 #, php-format msgid "{0} commented %s's post" msgstr "{0} kommentierte einen Beitrag von %s" -#: ../../mod/ping.php:167 +#: ../../mod/ping.php:195 #, php-format msgid "{0} liked %s's post" msgstr "{0} mag %ss Beitrag" -#: ../../mod/ping.php:172 +#: ../../mod/ping.php:200 #, php-format msgid "{0} disliked %s's post" msgstr "{0} mag %ss Beitrag nicht" -#: ../../mod/ping.php:177 +#: ../../mod/ping.php:205 #, php-format msgid "{0} is now friends with %s" msgstr "{0} ist jetzt mit %s befreundet" -#: ../../mod/ping.php:182 +#: ../../mod/ping.php:210 msgid "{0} posted" msgstr "{0} hat etwas veröffentlicht" -#: ../../mod/ping.php:187 +#: ../../mod/ping.php:215 #, php-format msgid "{0} tagged %s's post with #%s" msgstr "{0} hat %ss Beitrag mit dem Schlagwort #%s versehen" -#: ../../mod/ping.php:193 +#: ../../mod/ping.php:221 msgid "{0} mentioned you in a post" msgstr "{0} hat dich in einem Beitrag erwähnt" @@ -3236,7 +3367,7 @@ msgstr "Gemeinsame Freunde" msgid "No friends in common." msgstr "Keine gemeinsamen Freunde." -#: ../../mod/display.php:127 +#: ../../mod/display.php:130 msgid "Item has been removed." msgstr "Eintrag wurde entfernt." @@ -3602,78 +3733,84 @@ msgid "" "Once you have registered, please connect with me via my profile page at:" msgstr "Sobald du registriert bist, kontaktiere mich bitte auf meiner Profilseite:" -#: ../../mod/dfrn_confirm.php:238 +#: ../../mod/dfrn_confirm.php:119 +msgid "" +"This may occasionally happen if contact was requested by both persons and it" +" has already been approved." +msgstr "Das kann passieren, wenn sich zwei Kontakte gegenseitig eingeladen haben und bereits einer angenommen wurde." + +#: ../../mod/dfrn_confirm.php:239 msgid "Response from remote site was not understood." msgstr "Antwort der Gegenstelle unverständlich." -#: ../../mod/dfrn_confirm.php:247 +#: ../../mod/dfrn_confirm.php:248 msgid "Unexpected response from remote site: " msgstr "Unerwartete Antwort der Gegenstelle: " -#: ../../mod/dfrn_confirm.php:255 +#: ../../mod/dfrn_confirm.php:256 msgid "Confirmation completed successfully." msgstr "Bestätigung erfolgreich abgeschlossen." -#: ../../mod/dfrn_confirm.php:257 ../../mod/dfrn_confirm.php:271 -#: ../../mod/dfrn_confirm.php:278 +#: ../../mod/dfrn_confirm.php:258 ../../mod/dfrn_confirm.php:272 +#: ../../mod/dfrn_confirm.php:279 msgid "Remote site reported: " msgstr "Gegenstelle meldet: " -#: ../../mod/dfrn_confirm.php:269 +#: ../../mod/dfrn_confirm.php:270 msgid "Temporary failure. Please wait and try again." msgstr "Zeitweiser Fehler. Bitte warte einige Momente und versuche es dann noch einmal." -#: ../../mod/dfrn_confirm.php:276 +#: ../../mod/dfrn_confirm.php:277 msgid "Introduction failed or was revoked." msgstr "Kontaktanfrage schlug fehl oder wurde zurück gezogen." -#: ../../mod/dfrn_confirm.php:421 +#: ../../mod/dfrn_confirm.php:422 msgid "Unable to set contact photo." msgstr "Konnte das Bild des Kontakts nicht speichern." -#: ../../mod/dfrn_confirm.php:473 ../../include/diaspora.php:495 +#: ../../mod/dfrn_confirm.php:474 ../../include/diaspora.php:495 #: ../../include/conversation.php:101 #, php-format msgid "%1$s is now friends with %2$s" msgstr "%1$s ist nun mit %2$s befreundet" -#: ../../mod/dfrn_confirm.php:543 +#: ../../mod/dfrn_confirm.php:544 #, php-format msgid "No user record found for '%s' " msgstr "Für '%s' wurde kein Nutzer gefunden" -#: ../../mod/dfrn_confirm.php:553 +#: ../../mod/dfrn_confirm.php:554 msgid "Our site encryption key is apparently messed up." msgstr "Der Verschlüsselungsschlüssel unserer Seite ist anscheinend im Arsch." -#: ../../mod/dfrn_confirm.php:564 +#: ../../mod/dfrn_confirm.php:565 msgid "Empty site URL was provided or URL could not be decrypted by us." msgstr "Leere URL für die Seite erhalten oder die URL konnte nicht entschlüsselt werden." -#: ../../mod/dfrn_confirm.php:585 +#: ../../mod/dfrn_confirm.php:586 msgid "Contact record was not found for you on our site." msgstr "Für diesen Kontakt wurde auf unserer Seite kein Eintrag gefunden." -#: ../../mod/dfrn_confirm.php:599 +#: ../../mod/dfrn_confirm.php:600 #, php-format msgid "Site public key not available in contact record for URL %s." msgstr "Die Kontaktdaten für URL %s enthalten keinen Public Key für den Server." -#: ../../mod/dfrn_confirm.php:619 +#: ../../mod/dfrn_confirm.php:620 msgid "" "The ID provided by your system is a duplicate on our system. It should work " "if you try again." msgstr "Die ID, die uns dein System angeboten hat, ist hier bereits vergeben. Bitte versuche es noch einmal." -#: ../../mod/dfrn_confirm.php:630 +#: ../../mod/dfrn_confirm.php:631 msgid "Unable to set your contact credentials on our system." msgstr "Deine Kontaktreferenzen konnten nicht in unserem System gespeichert werden." -#: ../../mod/dfrn_confirm.php:684 +#: ../../mod/dfrn_confirm.php:694 msgid "Unable to update your contact profile details on our system" msgstr "Die Updates für dein Profil konnten nicht gespeichert werden" -#: ../../mod/dfrn_confirm.php:714 +#: ../../mod/dfrn_confirm.php:724 #, php-format msgid "Connection accepted at %s" msgstr "Auf %s wurde die Verbindung akzeptiert" @@ -3786,7 +3923,7 @@ msgid "Facebook post failed. Queued for retry." msgstr "Veröffentlichung bei Facebook gescheitert. Wir versuchen es später erneut." #: ../../addon/facebook/facebook.php:877 ../../addon/facebook/facebook.php:886 -#: ../../include/bb2diaspora.php:132 +#: ../../include/bb2diaspora.php:102 msgid "link" msgstr "Verweis" @@ -3844,6 +3981,30 @@ msgstr "SSL Verwenden " msgid "yourls Settings saved." msgstr "yourls Einstellungen gespeichert" +#: ../../addon/ljpost/ljpost.php:38 +msgid "Post to LiveJournal" +msgstr "In LiveJournal veröffentlichen." + +#: ../../addon/ljpost/ljpost.php:69 +msgid "LiveJournal Post Settings" +msgstr "LiveJournal Veröffentlichungs-Einstellungen" + +#: ../../addon/ljpost/ljpost.php:71 +msgid "Enable LiveJournal Post Plugin" +msgstr "LiveJournal Post Plugin aktivieren" + +#: ../../addon/ljpost/ljpost.php:76 +msgid "LiveJournal username" +msgstr "LiveJournal Benutzername" + +#: ../../addon/ljpost/ljpost.php:81 +msgid "LiveJournal password" +msgstr "LiveJournal Passwort" + +#: ../../addon/ljpost/ljpost.php:86 +msgid "Post to LiveJournal by default" +msgstr "Standardmäßig bei LiveJournal veröffentlichen" + #: ../../addon/nsfw/nsfw.php:47 msgid "\"Not Safe For Work\" Settings" msgstr "\"Not Safe For Work\"-Einstellungen" @@ -3870,12 +4031,15 @@ msgid "%s - Click to open/close" msgstr "%s – Zum Öffnen/Schließen klicken" #: ../../addon/communityhome/communityhome.php:28 -#: ../../addon/communityhome/communityhome.php:34 ../../include/nav.php:62 -#: ../../boot.php:710 +#: ../../addon/communityhome/communityhome.php:34 +#: ../../addon/communityhome/twillingham/communityhome.php:28 +#: ../../addon/communityhome/twillingham/communityhome.php:34 +#: ../../include/nav.php:62 ../../boot.php:710 msgid "Login" msgstr "Anmeldung" #: ../../addon/communityhome/communityhome.php:29 +#: ../../addon/communityhome/twillingham/communityhome.php:29 msgid "OpenID" msgstr "OpenID" @@ -3884,6 +4048,7 @@ msgid "Last users" msgstr "Letzte Nutzer" #: ../../addon/communityhome/communityhome.php:81 +#: ../../addon/communityhome/twillingham/communityhome.php:81 msgid "Most active users" msgstr "Aktivste Nutzer" @@ -3895,11 +4060,15 @@ msgstr "Letzte Fotos" msgid "Last likes" msgstr "Zuletzt gemocht" -#: ../../addon/communityhome/communityhome.php:155 +#: ../../addon/communityhome/communityhome.php:155 ../../include/text.php:1224 #: ../../include/conversation.php:45 ../../include/conversation.php:118 msgid "event" msgstr "Veranstaltung" +#: ../../addon/communityhome/twillingham/communityhome.php:38 +msgid "Latest users" +msgstr "Letzte Benutzer" + #: ../../addon/uhremotestorage/uhremotestorage.php:84 #, php-format msgid "" @@ -3987,6 +4156,30 @@ msgstr "Randplace-Einstellungen" msgid "Enable Randplace Plugin" msgstr "Randplace-Plugin aktivieren" +#: ../../addon/dwpost/dwpost.php:38 +msgid "Post to Dreamwidth" +msgstr "In Dreamwidth veröffentlichen" + +#: ../../addon/dwpost/dwpost.php:69 +msgid "Dreamwidth Post Settings" +msgstr "Dreamwidth Veröffentlichungs-Einstellungen" + +#: ../../addon/dwpost/dwpost.php:71 +msgid "Enable dreamwidth Post Plugin" +msgstr "Dreamwidth Post Plugin aktivieren" + +#: ../../addon/dwpost/dwpost.php:76 +msgid "dreamwidth username" +msgstr "Dreamwidth Benutzername" + +#: ../../addon/dwpost/dwpost.php:81 +msgid "dreamwidth password" +msgstr "Dreamwidth Passwort" + +#: ../../addon/dwpost/dwpost.php:86 +msgid "Post to dreamwidth by default" +msgstr "Standardmäßig bei Dreamwidth veröffentlichen" + #: ../../addon/drpost/drpost.php:35 msgid "Post to Drupal" msgstr "Bei Drupal veröffentlichen" @@ -4165,10 +4358,16 @@ msgid "Quick Comment Settings" msgstr "Schnell-Kommentar Einstellungen" #: ../../addon/qcomment/qcomment.php:56 +msgid "" +"Quick comments are found near comment boxes, sometimes hidden. Click them to" +" provide simple replies." +msgstr "Kurz-Kommentare findet man in der Nähe der Kommentar-Boxen. Ein Klick darauf erstellt einfache Antworten." + +#: ../../addon/qcomment/qcomment.php:57 msgid "Enter quick comments, one per line" msgstr "Gib einen Schnell-Kommentar pro Zeile ein" -#: ../../addon/qcomment/qcomment.php:74 +#: ../../addon/qcomment/qcomment.php:75 msgid "Quick Comment settings saved." msgstr "Schnell-Kommentare Einstellungen gespeichert" @@ -4371,6 +4570,29 @@ msgstr "Numfriends Einstellungen" msgid "How many contacts to display on profile sidebar" msgstr "Wie viele Kontakte sollen in der Seitenleiste angezeigt werden" +#: ../../addon/gnot/gnot.php:48 +msgid "Gnot settings updated." +msgstr "Gnot Einstellungen aktualisiert." + +#: ../../addon/gnot/gnot.php:79 +msgid "Gnot Settings" +msgstr "Gnot Einstellungen" + +#: ../../addon/gnot/gnot.php:81 +msgid "" +"Allows threading of email comment notifications on Gmail and anonymising the" +" subject line." +msgstr "Erlaubt das Veröffentlichen von E-Mail Kommentar Benachrichtigungen bei Gmail mit anonymisiertem Betreff" + +#: ../../addon/gnot/gnot.php:82 +msgid "Enable this plugin/addon?" +msgstr "Dieses Plugin/Addon aktivieren?" + +#: ../../addon/gnot/gnot.php:97 +#, php-format +msgid "[Friendica:Notify] Comment to conversation #%d" +msgstr "[Friendica Meldung] Kommentar zum Beitrag #%d" + #: ../../addon/wppost/wppost.php:42 msgid "Post to Wordpress" msgstr "Bei WordPress veröffentlichen" @@ -4521,6 +4743,10 @@ msgstr "Consumer Key" msgid "Consumer secret" msgstr "Consumer Secret" +#: ../../addon/irc/irc.php:20 +msgid "irc Chatroom" +msgstr "irc Chatroom" + #: ../../addon/posterous/posterous.php:36 msgid "Post to Posterous" msgstr "Nach Posterous senden" @@ -4545,6 +4771,22 @@ msgstr "Posterous-Passwort" msgid "Post to Posterous by default" msgstr "Veröffentliche öffentliche Beiträge standardmäßig bei Posterous" +#: ../../view/theme/quattro/theme.php:17 +msgid "Theme settings" +msgstr "Themen Einstellungen" + +#: ../../view/theme/quattro/theme.php:18 +msgid "Alignment" +msgstr "Ausrichtung" + +#: ../../view/theme/quattro/theme.php:18 +msgid "Left" +msgstr "Links" + +#: ../../view/theme/quattro/theme.php:18 +msgid "Center" +msgstr "Mitte" + #: ../../include/profile_advanced.php:17 ../../boot.php:982 msgid "Gender:" msgstr "Geschlecht:" @@ -4906,142 +5148,154 @@ msgstr "Ist mir nicht wichtig" msgid "Ask me" msgstr "Frag mich" -#: ../../include/event.php:17 ../../include/bb2diaspora.php:274 +#: ../../include/event.php:17 ../../include/bb2diaspora.php:244 msgid "Starts:" msgstr "Beginnt:" -#: ../../include/event.php:27 ../../include/bb2diaspora.php:282 +#: ../../include/event.php:27 ../../include/bb2diaspora.php:252 msgid "Finishes:" msgstr "Endet:" -#: ../../include/delivery.php:424 ../../include/notifier.php:637 +#: ../../include/delivery.php:425 ../../include/notifier.php:638 msgid "(no subject)" msgstr "(kein Betreff)" -#: ../../include/delivery.php:431 ../../include/enotify.php:16 -#: ../../include/notifier.php:644 +#: ../../include/delivery.php:432 ../../include/enotify.php:17 +#: ../../include/notifier.php:645 msgid "noreply" msgstr "noreply" -#: ../../include/text.php:232 +#: ../../include/text.php:238 msgid "prev" msgstr "vorige" -#: ../../include/text.php:234 +#: ../../include/text.php:240 msgid "first" msgstr "erste" -#: ../../include/text.php:263 +#: ../../include/text.php:269 msgid "last" msgstr "letzte" -#: ../../include/text.php:266 +#: ../../include/text.php:272 msgid "next" msgstr "nächste" -#: ../../include/text.php:557 +#: ../../include/text.php:563 msgid "No contacts" msgstr "Keine Kontakte" -#: ../../include/text.php:566 +#: ../../include/text.php:572 #, php-format msgid "%d Contact" msgid_plural "%d Contacts" msgstr[0] "%d Kontakt" msgstr[1] "%d Kontakte" -#: ../../include/text.php:637 ../../include/nav.php:87 +#: ../../include/text.php:643 ../../include/nav.php:87 msgid "Search" msgstr "Suche" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Monday" msgstr "Montag" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Tuesday" msgstr "Dienstag" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Wednesday" msgstr "Mittwoch" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Thursday" msgstr "Donnerstag" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Friday" msgstr "Freitag" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Saturday" msgstr "Samstag" -#: ../../include/text.php:813 +#: ../../include/text.php:831 msgid "Sunday" msgstr "Sonntag" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "January" msgstr "Januar" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "February" msgstr "Februar" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "March" msgstr "März" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "April" msgstr "April" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "May" msgstr "Mai" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "June" msgstr "Juni" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "July" msgstr "Juli" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "August" msgstr "August" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "September" msgstr "September" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "October" msgstr "Oktober" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "November" msgstr "November" -#: ../../include/text.php:817 +#: ../../include/text.php:835 msgid "December" msgstr "Dezember" -#: ../../include/text.php:887 +#: ../../include/text.php:905 msgid "bytes" msgstr "Byte" -#: ../../include/text.php:982 +#: ../../include/text.php:1000 msgid "Select an alternate language" msgstr "Alternative Sprache auswählen" -#: ../../include/text.php:994 +#: ../../include/text.php:1012 msgid "default" msgstr "standard" +#: ../../include/text.php:1228 +msgid "activity" +msgstr "Aktivität" + +#: ../../include/text.php:1230 +msgid "comment" +msgstr "Kommentar" + +#: ../../include/text.php:1231 +msgid "post" +msgstr "Beitrag" + #: ../../include/diaspora.php:570 msgid "Sharing notification from Diaspora network" msgstr "Freigabe-Benachrichtigung von Diaspora" @@ -5055,6 +5309,10 @@ msgstr "Anhänge:" msgid "[Relayed] Comment authored by %s from network %s" msgstr "[Weitergeleitet] Kommentar von %s aus dem %s Netzwerk" +#: ../../include/network.php:814 +msgid "view full size" +msgstr "Volle Größe anzeigen" + #: ../../include/oembed.php:128 msgid "Embedded content" msgstr "Eingebetteter Inhalt" @@ -5350,7 +5608,7 @@ msgstr "Sekunden" msgid "%1$d %2$s ago" msgstr "%1$d %2$s her" -#: ../../include/poller.php:474 +#: ../../include/poller.php:513 msgid "From: " msgstr "Von: " @@ -5371,15 +5629,15 @@ msgstr "Kann die DNS Informationen für den Datenbanken Server '%s' nicht ermitt msgid "[no subject]" msgstr "[kein Betreff]" -#: ../../include/acl_selectors.php:279 +#: ../../include/acl_selectors.php:284 msgid "Visible to everybody" msgstr "Für jeden sichtbar" -#: ../../include/acl_selectors.php:280 +#: ../../include/acl_selectors.php:285 msgid "show" msgstr "zeigen" -#: ../../include/acl_selectors.php:281 +#: ../../include/acl_selectors.php:286 msgid "don't show" msgstr "nicht zeigen" @@ -5396,172 +5654,191 @@ msgstr "Danke," msgid "%s Administrator" msgstr "der Administrator von %s" -#: ../../include/enotify.php:28 +#: ../../include/enotify.php:29 #, php-format -msgid "New mail received at %s" -msgstr "Neue Nachricht auf %s empfangen" +msgid "%s " +msgstr "%s " -#: ../../include/enotify.php:30 +#: ../../include/enotify.php:33 +#, php-format +msgid "[Friendica:Notify] New mail received at %s" +msgstr "[Friendica Meldung] Neue Nachricht erhalten von %s" + +#: ../../include/enotify.php:35 #, php-format msgid "%s sent you a new private message at %s." msgstr "%s hat dir eine neue private Nachricht auf %s geschrieben." -#: ../../include/enotify.php:31 +#: ../../include/enotify.php:36 #, php-format msgid "%s sent you %s." msgstr "%s hat Dir geschickt %s" -#: ../../include/enotify.php:31 +#: ../../include/enotify.php:36 msgid "a private message" msgstr "eine private Nachricht" -#: ../../include/enotify.php:32 +#: ../../include/enotify.php:37 #, php-format msgid "Please visit %s to view and/or reply to your private messages." msgstr "Bitte besuche %s, um deine privaten Nachrichten anzusehen und/oder zu beantworten." -#: ../../include/enotify.php:40 +#: ../../include/enotify.php:67 +#, php-format +msgid "%s's" +msgstr "%s's" + +#: ../../include/enotify.php:71 +msgid "your" +msgstr "Dein" + +#: ../../include/enotify.php:78 #, php-format -msgid "%s commented on an item at %s" -msgstr "%s kommentierte einen Beitrag auf %s" +msgid "[Friendica:Notify] Comment to conversation #%d by %s" +msgstr "[Friendica Meldung] Kommentar zum Beitrag #%d von %s" -#: ../../include/enotify.php:41 +#: ../../include/enotify.php:79 #, php-format msgid "%s commented on an item/conversation you have been following." msgstr "%s hat einen Beitrag kommentiert, dem du folgst." -#: ../../include/enotify.php:42 +#: ../../include/enotify.php:80 #, php-format -msgid "%s commented in %s." -msgstr "%s wurde kommentiert in %s" +msgid "%s commented on %s." +msgstr "%s kommentierte %s." -#: ../../include/enotify.php:42 -msgid "a watched conversation" -msgstr "eine beobachtete Unterhaltung" - -#: ../../include/enotify.php:44 ../../include/enotify.php:54 -#: ../../include/enotify.php:64 ../../include/enotify.php:74 +#: ../../include/enotify.php:82 ../../include/enotify.php:95 +#: ../../include/enotify.php:106 ../../include/enotify.php:117 #, php-format msgid "Please visit %s to view and/or reply to the conversation." msgstr "Bitte besuche %s, um die Konversation anzusehen und/oder zu kommentieren." -#: ../../include/enotify.php:51 +#: ../../include/enotify.php:89 +#, php-format +msgid "[Friendica:Notify] %s posted to your profile wall" +msgstr "[Friendica Meldung] %s hat auf Deine Pinnwand geschrieben" + +#: ../../include/enotify.php:91 #, php-format msgid "%s posted to your profile wall at %s" msgstr "%s hat auf deine Pinnwand bei %s gepostet" -#: ../../include/enotify.php:52 +#: ../../include/enotify.php:93 #, php-format msgid "%s posted to %s" msgstr "%s schrieb an %s" -#: ../../include/enotify.php:52 +#: ../../include/enotify.php:93 msgid "your profile wall." msgstr "Deine Pinnwand" -#: ../../include/enotify.php:61 +#: ../../include/enotify.php:102 +#, php-format +msgid "[Friendica:Notify] %s tagged you" +msgstr "[Friendica Meldung] %s hat Dich erwähnt" + +#: ../../include/enotify.php:103 #, php-format msgid "%s tagged you at %s" msgstr "%s hat dich auf %s erwähnt" -#: ../../include/enotify.php:62 +#: ../../include/enotify.php:104 #, php-format msgid "%s %s." msgstr "%s %s." -#: ../../include/enotify.php:62 +#: ../../include/enotify.php:104 msgid "tagged you" msgstr "erwähnte Dich" -#: ../../include/enotify.php:71 +#: ../../include/enotify.php:113 +#, php-format +msgid "[Friendica:Notify] %s tagged your post" +msgstr "[Friendica Meldung] %s markierte Deinen Beitrag" + +#: ../../include/enotify.php:114 #, php-format msgid "%s tagged your post at %s" msgstr "%s hat deinen Beitrag auf %s getaggt" -#: ../../include/enotify.php:72 +#: ../../include/enotify.php:115 #, php-format msgid "%s tagged %s" msgstr "%s markierte %s" -#: ../../include/enotify.php:72 +#: ../../include/enotify.php:115 msgid "your post" msgstr "Dein Beitrag" -#: ../../include/enotify.php:81 -#, php-format -msgid "Introduction received at %s" -msgstr "Kontaktanfrage auf %s erhalten" +#: ../../include/enotify.php:124 +msgid "[Friendica:Notify] Introduction received" +msgstr "[Friendica Meldung] Kontaktanfrage erhalten" -#: ../../include/enotify.php:82 +#: ../../include/enotify.php:125 #, php-format msgid "You've received an introduction from '%s' at %s" msgstr "Du hast eine Kontaktanfrage von '%s' auf %s erhalten" -#: ../../include/enotify.php:83 +#: ../../include/enotify.php:126 #, php-format msgid "You've received %s from %s." msgstr "Du hast %s von %s erhalten." -#: ../../include/enotify.php:83 +#: ../../include/enotify.php:126 msgid "an introduction" msgstr "eine Einführung" -#: ../../include/enotify.php:84 ../../include/enotify.php:101 +#: ../../include/enotify.php:127 ../../include/enotify.php:144 #, php-format msgid "You may visit their profile at %s" msgstr "Hier kannst du das Profil betrachten: %s" -#: ../../include/enotify.php:86 +#: ../../include/enotify.php:129 #, php-format msgid "Please visit %s to approve or reject the introduction." msgstr "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen." -#: ../../include/enotify.php:93 -#, php-format -msgid "Friend suggestion received at %s" -msgstr "Kontaktvorschlag empfangen auf %s" +#: ../../include/enotify.php:136 +msgid "[Friendica:Notify] Friend suggestion received" +msgstr "[Friendica Meldung] Kontaktvorschlag erhalten" -#: ../../include/enotify.php:94 +#: ../../include/enotify.php:137 #, php-format msgid "You've received a friend suggestion from '%s' at %s" msgstr "Du hast von '%s' einen Kontaktvorschlag erhalten auf %s" -#: ../../include/enotify.php:95 +#: ../../include/enotify.php:138 #, php-format msgid "You've received %s for %s from %s." msgstr "Du hast %s für %s von %s erhalten." -#: ../../include/enotify.php:96 +#: ../../include/enotify.php:139 msgid "a friend suggestion" msgstr "ein Freunde Vorschlag" -#: ../../include/enotify.php:99 +#: ../../include/enotify.php:142 msgid "Name:" msgstr "Name:" -#: ../../include/enotify.php:100 +#: ../../include/enotify.php:143 msgid "Photo:" msgstr "Foto:" -#: ../../include/enotify.php:103 +#: ../../include/enotify.php:146 #, php-format msgid "Please visit %s to approve or reject the suggestion." msgstr "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen." -#: ../../include/items.php:2511 +#: ../../include/items.php:2573 msgid "A new person is sharing with you at " msgstr "Eine neue Person teilt mit dir auf " -#: ../../include/items.php:2511 +#: ../../include/items.php:2573 msgid "You have a new follower at " msgstr "Du hast einen neuen Kontakt auf " -#: ../../include/bb2diaspora.php:83 -msgid "view full size" -msgstr "Volle Größe anzeigen" - -#: ../../include/bb2diaspora.php:132 ../../include/bb2diaspora.php:142 -#: ../../include/bb2diaspora.php:143 +#: ../../include/bb2diaspora.php:102 ../../include/bb2diaspora.php:112 +#: ../../include/bb2diaspora.php:113 msgid "image/photo" msgstr "Bild/Foto" @@ -5577,25 +5854,25 @@ msgstr "Bitte lade ein Profilbild hoch." msgid "Welcome back " msgstr "Willkommen zurück " -#: ../../include/Contact.php:131 ../../include/conversation.php:769 +#: ../../include/Contact.php:131 ../../include/conversation.php:788 msgid "View status" msgstr "Status anzeigen" -#: ../../include/Contact.php:132 ../../include/conversation.php:770 +#: ../../include/Contact.php:132 ../../include/conversation.php:789 msgid "View profile" msgstr "Profil anzeigen" -#: ../../include/Contact.php:133 ../../include/conversation.php:771 +#: ../../include/Contact.php:133 ../../include/conversation.php:790 msgid "View photos" msgstr "Fotos ansehen" #: ../../include/Contact.php:134 ../../include/Contact.php:147 -#: ../../include/conversation.php:772 +#: ../../include/conversation.php:791 msgid "View recent" msgstr "Neueste anzeigen" #: ../../include/Contact.php:136 ../../include/Contact.php:147 -#: ../../include/conversation.php:774 +#: ../../include/conversation.php:793 msgid "Send PM" msgstr "Private Nachricht senden" @@ -5608,188 +5885,188 @@ msgstr "Nachricht/Beitrag" msgid "%1$s marked %2$s's %3$s as favorite" msgstr "%1$s hat %2$s\\s %3$s als Favorit markiert" -#: ../../include/conversation.php:301 ../../include/conversation.php:562 +#: ../../include/conversation.php:303 ../../include/conversation.php:572 msgid "Select" msgstr "Auswählen" -#: ../../include/conversation.php:316 ../../include/conversation.php:648 -#: ../../include/conversation.php:649 +#: ../../include/conversation.php:320 ../../include/conversation.php:665 +#: ../../include/conversation.php:666 #, php-format msgid "View %s's profile @ %s" msgstr "Das Profil von %s auf %s betrachten." -#: ../../include/conversation.php:325 ../../include/conversation.php:660 +#: ../../include/conversation.php:330 ../../include/conversation.php:677 #, php-format msgid "%s from %s" msgstr "%s von %s" -#: ../../include/conversation.php:341 +#: ../../include/conversation.php:346 msgid "View in context" msgstr "Im Zusammenhang betrachten" -#: ../../include/conversation.php:456 +#: ../../include/conversation.php:467 #, php-format msgid "%d comment" msgid_plural "%d comments" msgstr[0] "%d Kommentar" msgstr[1] "%d Kommentare" -#: ../../include/conversation.php:459 ../../boot.php:448 +#: ../../include/conversation.php:468 ../../boot.php:448 msgid "show more" msgstr "mehr anzeigen" -#: ../../include/conversation.php:519 +#: ../../include/conversation.php:529 msgid "like" msgstr "mag ich" -#: ../../include/conversation.php:520 +#: ../../include/conversation.php:530 msgid "dislike" msgstr "mag ich nicht" -#: ../../include/conversation.php:522 +#: ../../include/conversation.php:532 msgid "Share this" msgstr "Teile dieses" -#: ../../include/conversation.php:522 +#: ../../include/conversation.php:532 msgid "share" msgstr "Teilen" -#: ../../include/conversation.php:572 +#: ../../include/conversation.php:582 msgid "add star" msgstr "markieren" -#: ../../include/conversation.php:573 +#: ../../include/conversation.php:583 msgid "remove star" msgstr "Markierung entfernen" -#: ../../include/conversation.php:574 +#: ../../include/conversation.php:584 msgid "toggle star status" msgstr "Markierung umschalten" -#: ../../include/conversation.php:577 +#: ../../include/conversation.php:587 msgid "starred" msgstr "markiert" -#: ../../include/conversation.php:578 +#: ../../include/conversation.php:588 msgid "add tag" msgstr "Tag hinzufügen" -#: ../../include/conversation.php:650 +#: ../../include/conversation.php:667 msgid "to" msgstr "zu" -#: ../../include/conversation.php:651 +#: ../../include/conversation.php:668 msgid "Wall-to-Wall" msgstr "Wall-to-Wall" -#: ../../include/conversation.php:652 +#: ../../include/conversation.php:669 msgid "via Wall-To-Wall:" msgstr "via Wall-To-Wall:" -#: ../../include/conversation.php:694 +#: ../../include/conversation.php:713 msgid "Delete Selected Items" msgstr "Lösche die markierten Beiträge" -#: ../../include/conversation.php:826 +#: ../../include/conversation.php:845 #, php-format msgid "%s likes this." msgstr "%s mag das." -#: ../../include/conversation.php:826 +#: ../../include/conversation.php:845 #, php-format msgid "%s doesn't like this." msgstr "%s mag das nicht." -#: ../../include/conversation.php:830 +#: ../../include/conversation.php:849 #, php-format msgid "%2$d people like this." msgstr "%2$d Leute mögen das." -#: ../../include/conversation.php:832 +#: ../../include/conversation.php:851 #, php-format msgid "%2$d people don't like this." msgstr "%2$d Leute mögen das nicht." -#: ../../include/conversation.php:838 +#: ../../include/conversation.php:857 msgid "and" msgstr "und" -#: ../../include/conversation.php:841 +#: ../../include/conversation.php:860 #, php-format msgid ", and %d other people" msgstr " und %d andere" -#: ../../include/conversation.php:842 +#: ../../include/conversation.php:861 #, php-format msgid "%s like this." msgstr "%s mögen das." -#: ../../include/conversation.php:842 +#: ../../include/conversation.php:861 #, php-format msgid "%s don't like this." msgstr "%s mögen das nicht." -#: ../../include/conversation.php:867 +#: ../../include/conversation.php:886 msgid "Visible to everybody" msgstr "Für jedermann sichtbar" -#: ../../include/conversation.php:869 +#: ../../include/conversation.php:888 msgid "Please enter a video link/URL:" msgstr "Bitte Link/URL zum Video einfügen:" -#: ../../include/conversation.php:870 +#: ../../include/conversation.php:889 msgid "Please enter an audio link/URL:" msgstr "Bitte Link/URL zum Audio einfügen:" -#: ../../include/conversation.php:871 +#: ../../include/conversation.php:890 msgid "Tag term:" msgstr "Tag:" -#: ../../include/conversation.php:872 +#: ../../include/conversation.php:891 msgid "Where are you right now?" msgstr "Wo hältst du dich jetzt gerade auf?" -#: ../../include/conversation.php:873 +#: ../../include/conversation.php:892 msgid "Enter a title for this item" msgstr "Gib den Titel für diesen Beitrag ein" -#: ../../include/conversation.php:916 +#: ../../include/conversation.php:935 msgid "upload photo" msgstr "Bild hochladen" -#: ../../include/conversation.php:918 +#: ../../include/conversation.php:937 msgid "attach file" msgstr "Datei anhängen" -#: ../../include/conversation.php:920 +#: ../../include/conversation.php:939 msgid "web link" msgstr "Weblink" -#: ../../include/conversation.php:921 +#: ../../include/conversation.php:940 msgid "Insert video link" msgstr "Video-Adresse einfügen" -#: ../../include/conversation.php:922 +#: ../../include/conversation.php:941 msgid "video link" msgstr "Video-Link" -#: ../../include/conversation.php:923 +#: ../../include/conversation.php:942 msgid "Insert audio link" msgstr "Audio-Adresse einfügen" -#: ../../include/conversation.php:924 +#: ../../include/conversation.php:943 msgid "audio link" msgstr "Audio-Link" -#: ../../include/conversation.php:926 +#: ../../include/conversation.php:945 msgid "set location" msgstr "Ort setzen" -#: ../../include/conversation.php:928 +#: ../../include/conversation.php:947 msgid "clear location" msgstr "Ort löschen" -#: ../../include/conversation.php:933 +#: ../../include/conversation.php:952 msgid "permissions" msgstr "Zugriffsrechte" diff --git a/view/de/strings.php b/view/de/strings.php index a093b7068..3f9176cd7 100755 --- a/view/de/strings.php +++ b/view/de/strings.php @@ -409,6 +409,10 @@ $a->strings["Email login name:"] = "E-Mail-Login-Name:"; $a->strings["Email password:"] = "E-Mail-Passwort:"; $a->strings["Reply-to address:"] = "Reply-to Adresse:"; $a->strings["Send public posts to all email contacts:"] = "Sende öffentliche Beiträge an alle E-Mail-Kontakte:"; +$a->strings["Action after import:"] = "Aktion nach Import:"; +$a->strings["Mark as seen"] = "Als gelesen markieren"; +$a->strings["Move to folder"] = "In einen Ordner verschieben"; +$a->strings["Move to folder:"] = "In diesen Ordner verschieben:"; $a->strings["Normal Account"] = "Normaler Account"; $a->strings["This account is a normal personal profile"] = "Dieser Account ist ein normales persönliches Profil"; $a->strings["Soapbox Account"] = "Sandkasten-Account"; @@ -518,9 +522,9 @@ $a->strings["Create a group of contacts/friends."] = "Eine Gruppe von Kontakten/ $a->strings["Group Name: "] = "Gruppenname:"; $a->strings["Group removed."] = "Gruppe entfernt."; $a->strings["Unable to remove group."] = "Konnte die Gruppe nicht entfernen."; -$a->strings["Click on a contact to add or remove."] = "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen"; $a->strings["Group Editor"] = "Gruppeneditor"; $a->strings["Members"] = "Mitglieder"; +$a->strings["Click on a contact to add or remove."] = "Klicke einen Kontakt an, um ihn hinzuzufügen oder zu entfernen"; $a->strings["Invalid profile identifier."] = "Ungültiger Profil-Bezeichner"; $a->strings["Profile Visibility Editor"] = "Editor für die Profil-Sichtbarkeit"; $a->strings["Profile"] = "Profil"; @@ -643,32 +647,51 @@ $a->strings["Site name"] = "Seitenname"; $a->strings["Banner/Logo"] = "Banner/Logo"; $a->strings["System language"] = "Systemsprache"; $a->strings["System theme"] = "Systemweites Thema"; +$a->strings["Default system theme - may be over-ridden by user profiles"] = "Standard Server Theme - kann von den Benutzereinstellungen überschrieben werden."; $a->strings["Maximum image size"] = "Maximale Größe von Bildern"; +$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "Maximale Upload-Größe von Bildern in Bytes. Standard ist 0, d.h. ohne Limit."; $a->strings["Register policy"] = "Registrierungsmethode"; $a->strings["Register text"] = "Registrierungstext"; +$a->strings["Will be displayed prominently on the registration page."] = "Wird gut sichtbar auf der Registrierungs-Seite angezeigt."; $a->strings["Accounts abandoned after x days"] = "Accounts gelten nach x Tagen als unbenutzt"; $a->strings["Will not waste system resources polling external sites for abandonded accounts. Enter 0 for no time limit."] = "Verschwende keine System-Ressourcen auf das Pollen externer Seiten, wenn Accounts nicht mehr benutzt werden. 0 eingeben für kein Limit."; $a->strings["Allowed friend domains"] = "Erlaubte Domains für Kontakte"; +$a->strings["Comma separated list of domains which are allowed to establish friendships with this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für Freundschaften erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."; $a->strings["Allowed email domains"] = "Erlaubte Domains für Emails"; +$a->strings["Comma separated list of domains which are allowed in email addresses for registrations to this site. Wildcards are accepted. Empty to allow any domains"] = "Liste der Domains, die für E-Mail-Adressen bei der Registrierung erlaubt sind, durch Kommas getrennt. Platzhalter werden akzeptiert. Leer lassen, um alle Domains zu erlauben."; $a->strings["Block public"] = "Öffentlichen Zugriff blockieren"; +$a->strings["Check to block public access to all otherwise public personal pages on this site unless you are currently logged in."] = "Klicken, um öffentlichen Zugriff auf sonst öffentliche Profile zu blockieren, wenn man nicht eingeloggt ist."; $a->strings["Force publish"] = "Erzwinge Veröffentlichung"; +$a->strings["Check to force all profiles on this site to be listed in the site directory."] = "Klicken, um Anzeige aller Profile dieses Servers im Verzeichnis zu erzwingen."; $a->strings["Global directory update URL"] = "URL für Updates beim weltweiten Verzeichnis"; +$a->strings["URL to update the global directory. If this is not set, the global directory is completely unavailable to the application."] = "URL für Update des globalen Verzeichnisses. Wenn nichts eingetragen ist, bleibt das globale Verzeichnis unerreichbar."; $a->strings["Block multiple registrations"] = "Unterbinde Mehrfachregistrierung"; +$a->strings["Disallow users to register additional accounts for use as pages."] = "Benutzern nicht erlauben, weitere Accounts als zusätzliche Profile anzulegen."; $a->strings["OpenID support"] = "OpenID Unterstützung"; +$a->strings["OpenID support for registration and logins."] = "OpenID-Unterstützung für Registrierung und Login."; $a->strings["Gravatar support"] = "Gravatar Unterstützung"; +$a->strings["Search new user's photo on Gravatar."] = "Suchfunktion bei Gravatar für Profilbilder neuer Nutzer."; $a->strings["Fullname check"] = "Namen auf Vollständigkeit überprüfen"; +$a->strings["Force users to register with a space between firstname and lastname in Full name, as an antispam measure"] = "Leerzeichen zwischen Vor- und Nachname im vollständigen Namen erzwingen, um SPAM zu vermeiden."; $a->strings["UTF-8 Regular expressions"] = "UTF-8 Reguläre Ausdrücke"; +$a->strings["Use PHP UTF8 regular expressions"] = "PHP UTF8 Ausdrücke verwenden"; $a->strings["Show Community Page"] = "Gemeinschaftsseite anzeigen"; +$a->strings["Display a Community page showing all recent public postings on this site."] = "Zeige die Gemeinschaftsseite mit allen öffentlichen Beiträgen auf diesem Server."; $a->strings["Enable OStatus support"] = "OStatus Unterstützung aktivieren"; +$a->strings["Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "Biete die eingebaute OStatus (identi.ca, status.net, etc.) Unterstützung an. Jede Kommunikation in OStatus ist öffentlich, so Privatsphäre Warnungen werden bei Bedarf angezeigt."; $a->strings["Enable Diaspora support"] = "Diaspora-Support aktivieren"; +$a->strings["Provide built-in Diaspora network compatibility."] = "Verwende die eingebaute Diaspora-Verknüpfung."; $a->strings["Only allow Friendica contacts"] = "Nur Friendica-Kontakte erlauben"; +$a->strings["All contacts must use Friendica protocols. All other built-in communication protocols disabled."] = "Alle Kontakte müssen das Friendica Protokoll nutzen. Alle anderen Kommunikationsprotokolle werden deaktiviert."; $a->strings["Verify SSL"] = "SSL Überprüfen"; +$a->strings["If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."] = "Wenn gewollt, kann man hier eine strenge Zertifikat Kontrolle anstellen. Das bedeutet, das man zu keinen Seiten mit selbst unterzeichneten SSL eine Verbindung herstellen kann."; $a->strings["Proxy user"] = "Proxy Nutzer"; $a->strings["Proxy URL"] = "Proxy URL"; $a->strings["Network timeout"] = "Netzwerk Wartezeit"; -$a->strings["%s user blocked"] = array( - 0 => "%s Nutzer gesperrt", - 1 => "%s Nutzer gesperrt/entsperrt", +$a->strings["Value is in seconds. Set to 0 for unlimited (not recommended)."] = "Der Wert ist in Sekunden. Setze 0 für unbegrenzt (nicht empfohlen)."; +$a->strings["%s user blocked/unblocked"] = array( + 0 => "%s Benutzer geblockt/freigegeben", + 1 => "%s Benutzer geblockt/freigegeben", ); $a->strings["%s user deleted"] = array( 0 => "%s Nutzer gelöscht", @@ -695,7 +718,11 @@ $a->strings["Disable"] = "Ausschalten"; $a->strings["Enable"] = "Einschalten"; $a->strings["Toggle"] = "Umschalten"; $a->strings["Settings"] = "Einstellungen"; +$a->strings["Author: "] = "Autor:"; +$a->strings["Maintainer: "] = "Betreuer:"; $a->strings["No themes found."] = "Keine Themen gefunden."; +$a->strings["[Experimental]"] = "[Experimentell]"; +$a->strings["[Unsupported]"] = "[Nicht unterstützt]"; $a->strings["Log settings updated."] = "Protokolleinstellungen aktualisiert."; $a->strings["Clear"] = "löschen"; $a->strings["Debugging"] = "Protokoll führen"; @@ -823,6 +850,7 @@ $a->strings["Please join my social network on %s"] = "Bitte trete meinem Soziale $a->strings["To accept this invitation, please visit:"] = "Um diese Einladung anzunehmen besuche bitte:"; $a->strings["You will need to supply this invitation code: \$invite_code"] = "Du benötigst den folgenden Einladungscode: \$invite_code"; $a->strings["Once you have registered, please connect with me via my profile page at:"] = "Sobald du registriert bist, kontaktiere mich bitte auf meiner Profilseite:"; +$a->strings["This may occasionally happen if contact was requested by both persons and it has already been approved."] = "Das kann passieren, wenn sich zwei Kontakte gegenseitig eingeladen haben und bereits einer angenommen wurde."; $a->strings["Response from remote site was not understood."] = "Antwort der Gegenstelle unverständlich."; $a->strings["Unexpected response from remote site: "] = "Unerwartete Antwort der Gegenstelle: "; $a->strings["Confirmation completed successfully."] = "Bestätigung erfolgreich abgeschlossen."; @@ -882,6 +910,12 @@ $a->strings["Username:"] = "Nutzername:"; $a->strings["Password:"] = "Passwort:"; $a->strings["Use SSL "] = "SSL Verwenden "; $a->strings["yourls Settings saved."] = "yourls Einstellungen gespeichert"; +$a->strings["Post to LiveJournal"] = "In LiveJournal veröffentlichen."; +$a->strings["LiveJournal Post Settings"] = "LiveJournal Veröffentlichungs-Einstellungen"; +$a->strings["Enable LiveJournal Post Plugin"] = "LiveJournal Post Plugin aktivieren"; +$a->strings["LiveJournal username"] = "LiveJournal Benutzername"; +$a->strings["LiveJournal password"] = "LiveJournal Passwort"; +$a->strings["Post to LiveJournal by default"] = "Standardmäßig bei LiveJournal veröffentlichen"; $a->strings["\"Not Safe For Work\" Settings"] = "\"Not Safe For Work\"-Einstellungen"; $a->strings["Enable NSFW filter"] = "NSFW Filter aktivieren"; $a->strings["Comma separated words to treat as NSFW"] = "Wörter, die gefiltert werden sollen (durch Kommas getrennt)"; @@ -895,6 +929,7 @@ $a->strings["Most active users"] = "Aktivste Nutzer"; $a->strings["Last photos"] = "Letzte Fotos"; $a->strings["Last likes"] = "Zuletzt gemocht"; $a->strings["event"] = "Veranstaltung"; +$a->strings["Latest users"] = "Letzte Benutzer"; $a->strings["Allow to use your friendica id (%s) to connecto to external unhosted-enabled storage (like ownCloud). See RemoteStorage WebFinger"] = "Ermöglicht dir, deine friendica id (%s) mit externen unhosted-fähigen Speichern (z.B. ownCloud) zu verbinden. Siehe RemoteStorage WebFinger"; $a->strings["Template URL (with {category})"] = "Vorlagen URL (mit {Kategorie})"; $a->strings["OAuth end-point"] = "OAuth end-point"; @@ -914,6 +949,12 @@ $a->strings["\"Cat\" game!"] = "Unentschieden!"; $a->strings["I won!"] = "Ich gewinne!"; $a->strings["Randplace Settings"] = "Randplace-Einstellungen"; $a->strings["Enable Randplace Plugin"] = "Randplace-Plugin aktivieren"; +$a->strings["Post to Dreamwidth"] = "In Dreamwidth veröffentlichen"; +$a->strings["Dreamwidth Post Settings"] = "Dreamwidth Veröffentlichungs-Einstellungen"; +$a->strings["Enable dreamwidth Post Plugin"] = "Dreamwidth Post Plugin aktivieren"; +$a->strings["dreamwidth username"] = "Dreamwidth Benutzername"; +$a->strings["dreamwidth password"] = "Dreamwidth Passwort"; +$a->strings["Post to dreamwidth by default"] = "Standardmäßig bei Dreamwidth veröffentlichen"; $a->strings["Post to Drupal"] = "Bei Drupal veröffentlichen"; $a->strings["Drupal Post Settings"] = "Drupal-Beitragseinstellungen"; $a->strings["Enable Drupal Post Plugin"] = "Veröffentlichung bei Drupal erlauben"; @@ -956,6 +997,7 @@ $a->strings[":-)"] = ":-)"; $a->strings[":-("] = ":-("; $a->strings["lol"] = "lol"; $a->strings["Quick Comment Settings"] = "Schnell-Kommentar Einstellungen"; +$a->strings["Quick comments are found near comment boxes, sometimes hidden. Click them to provide simple replies."] = "Kurz-Kommentare findet man in der Nähe der Kommentar-Boxen. Ein Klick darauf erstellt einfache Antworten."; $a->strings["Enter quick comments, one per line"] = "Gib einen Schnell-Kommentar pro Zeile ein"; $a->strings["Quick Comment settings saved."] = "Schnell-Kommentare Einstellungen gespeichert"; $a->strings["Tile Server URL"] = "Tile Server URL"; @@ -1002,6 +1044,11 @@ $a->strings["Post to Tumblr by default"] = "Standardmäßig bei Tumblr veröffen $a->strings["Numfriends settings updated."] = "Numfriends Einstellungen aktualisiert"; $a->strings["Numfriends Settings"] = "Numfriends Einstellungen"; $a->strings["How many contacts to display on profile sidebar"] = "Wie viele Kontakte sollen in der Seitenleiste angezeigt werden"; +$a->strings["Gnot settings updated."] = "Gnot Einstellungen aktualisiert."; +$a->strings["Gnot Settings"] = "Gnot Einstellungen"; +$a->strings["Allows threading of email comment notifications on Gmail and anonymising the subject line."] = "Erlaubt das Veröffentlichen von E-Mail Kommentar Benachrichtigungen bei Gmail mit anonymisiertem Betreff"; +$a->strings["Enable this plugin/addon?"] = "Dieses Plugin/Addon aktivieren?"; +$a->strings["[Friendica:Notify] Comment to conversation #%d"] = "[Friendica Meldung] Kommentar zum Beitrag #%d"; $a->strings["Post to Wordpress"] = "Bei WordPress veröffentlichen"; $a->strings["WordPress Post Settings"] = "WordPress-Beitragseinstellungen"; $a->strings["Enable WordPress Post Plugin"] = "WordPress-Plugin aktivieren."; @@ -1034,12 +1081,17 @@ $a->strings["Allow posting to Twitter"] = "Veröffentlichung bei Twitter erlaube $a->strings["Send public postings to Twitter by default"] = "Veröffentliche öffentliche Beiträge standardmäßig bei Twitter"; $a->strings["Consumer key"] = "Consumer Key"; $a->strings["Consumer secret"] = "Consumer Secret"; +$a->strings["irc Chatroom"] = "irc Chatroom"; $a->strings["Post to Posterous"] = "Nach Posterous senden"; $a->strings["Posterous Post Settings"] = "Posterous Beitrags-Einstellungen"; $a->strings["Enable Posterous Post Plugin"] = "Posterous-Plugin aktivieren"; $a->strings["Posterous login"] = "Posterous-Anmeldename"; $a->strings["Posterous password"] = "Posterous-Passwort"; $a->strings["Post to Posterous by default"] = "Veröffentliche öffentliche Beiträge standardmäßig bei Posterous"; +$a->strings["Theme settings"] = "Themen Einstellungen"; +$a->strings["Alignment"] = "Ausrichtung"; +$a->strings["Left"] = "Links"; +$a->strings["Center"] = "Mitte"; $a->strings["Gender:"] = "Geschlecht:"; $a->strings["j F, Y"] = "j F, Y"; $a->strings["j F"] = "j F"; @@ -1166,9 +1218,13 @@ $a->strings["December"] = "Dezember"; $a->strings["bytes"] = "Byte"; $a->strings["Select an alternate language"] = "Alternative Sprache auswählen"; $a->strings["default"] = "standard"; +$a->strings["activity"] = "Aktivität"; +$a->strings["comment"] = "Kommentar"; +$a->strings["post"] = "Beitrag"; $a->strings["Sharing notification from Diaspora network"] = "Freigabe-Benachrichtigung von Diaspora"; $a->strings["Attachments:"] = "Anhänge:"; $a->strings["[Relayed] Comment authored by %s from network %s"] = "[Weitergeleitet] Kommentar von %s aus dem %s Netzwerk"; +$a->strings["view full size"] = "Volle Größe anzeigen"; $a->strings["Embedded content"] = "Eingebetteter Inhalt"; $a->strings["Embedding disabled"] = "Einbettungen deaktiviert"; $a->strings["A deleted group with this name was revived. Existing item permissions may apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Eine gelöschte Gruppe mit diesem Namen wurde wiederbelebt. Bestehende Berechtigungseinstellungen könnten auf diese Gruppe oder zukünftige Mitglieder angewandt werden. Falls du dies nicht möchtest, erstelle bitte eine andere Gruppe mit einem anderen Namen."; @@ -1255,32 +1311,37 @@ $a->strings["don't show"] = "nicht zeigen"; $a->strings["Friendica Notification"] = "Friendica-Benachrichtigung"; $a->strings["Thank You,"] = "Danke,"; $a->strings["%s Administrator"] = "der Administrator von %s"; -$a->strings["New mail received at %s"] = "Neue Nachricht auf %s empfangen"; +$a->strings["%s "] = "%s "; +$a->strings["[Friendica:Notify] New mail received at %s"] = "[Friendica Meldung] Neue Nachricht erhalten von %s"; $a->strings["%s sent you a new private message at %s."] = "%s hat dir eine neue private Nachricht auf %s geschrieben."; $a->strings["%s sent you %s."] = "%s hat Dir geschickt %s"; $a->strings["a private message"] = "eine private Nachricht"; $a->strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um deine privaten Nachrichten anzusehen und/oder zu beantworten."; -$a->strings["%s commented on an item at %s"] = "%s kommentierte einen Beitrag auf %s"; +$a->strings["%s's"] = "%s's"; +$a->strings["your"] = "Dein"; +$a->strings["[Friendica:Notify] Comment to conversation #%d by %s"] = "[Friendica Meldung] Kommentar zum Beitrag #%d von %s"; $a->strings["%s commented on an item/conversation you have been following."] = "%s hat einen Beitrag kommentiert, dem du folgst."; -$a->strings["%s commented in %s."] = "%s wurde kommentiert in %s"; -$a->strings["a watched conversation"] = "eine beobachtete Unterhaltung"; +$a->strings["%s commented on %s."] = "%s kommentierte %s."; $a->strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Konversation anzusehen und/oder zu kommentieren."; +$a->strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica Meldung] %s hat auf Deine Pinnwand geschrieben"; $a->strings["%s posted to your profile wall at %s"] = "%s hat auf deine Pinnwand bei %s gepostet"; $a->strings["%s posted to %s"] = "%s schrieb an %s"; $a->strings["your profile wall."] = "Deine Pinnwand"; +$a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica Meldung] %s hat Dich erwähnt"; $a->strings["%s tagged you at %s"] = "%s hat dich auf %s erwähnt"; $a->strings["%s %s."] = "%s %s."; $a->strings["tagged you"] = "erwähnte Dich"; +$a->strings["[Friendica:Notify] %s tagged your post"] = "[Friendica Meldung] %s markierte Deinen Beitrag"; $a->strings["%s tagged your post at %s"] = "%s hat deinen Beitrag auf %s getaggt"; $a->strings["%s tagged %s"] = "%s markierte %s"; $a->strings["your post"] = "Dein Beitrag"; -$a->strings["Introduction received at %s"] = "Kontaktanfrage auf %s erhalten"; +$a->strings["[Friendica:Notify] Introduction received"] = "[Friendica Meldung] Kontaktanfrage erhalten"; $a->strings["You've received an introduction from '%s' at %s"] = "Du hast eine Kontaktanfrage von '%s' auf %s erhalten"; $a->strings["You've received %s from %s."] = "Du hast %s von %s erhalten."; $a->strings["an introduction"] = "eine Einführung"; $a->strings["You may visit their profile at %s"] = "Hier kannst du das Profil betrachten: %s"; $a->strings["Please visit %s to approve or reject the introduction."] = "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen."; -$a->strings["Friend suggestion received at %s"] = "Kontaktvorschlag empfangen auf %s"; +$a->strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica Meldung] Kontaktvorschlag erhalten"; $a->strings["You've received a friend suggestion from '%s' at %s"] = "Du hast von '%s' einen Kontaktvorschlag erhalten auf %s"; $a->strings["You've received %s for %s from %s."] = "Du hast %s für %s von %s erhalten."; $a->strings["a friend suggestion"] = "ein Freunde Vorschlag"; @@ -1289,7 +1350,6 @@ $a->strings["Photo:"] = "Foto:"; $a->strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen."; $a->strings["A new person is sharing with you at "] = "Eine neue Person teilt mit dir auf "; $a->strings["You have a new follower at "] = "Du hast einen neuen Kontakt auf "; -$a->strings["view full size"] = "Volle Größe anzeigen"; $a->strings["image/photo"] = "Bild/Foto"; $a->strings["Welcome "] = "Willkommen "; $a->strings["Please upload a profile photo."] = "Bitte lade ein Profilbild hoch."; -- cgit v1.2.3 From e098147c24bd45bc15c14fc597bd101b66011458 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 10 Mar 2012 11:29:40 +0100 Subject: New config options if ostatus polling should use the priority in the contacts --- include/poller.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/poller.php b/include/poller.php index 3be6caebd..f165ad590 100755 --- a/include/poller.php +++ b/include/poller.php @@ -140,7 +140,10 @@ function poller_run($argv, $argc){ if($manual_id) $contact['last-update'] = '0000-00-00 00:00:00'; - if($contact['network'] === NETWORK_DFRN || $contact['network'] === NETWORK_OSTATUS) + if($contact['network'] === NETWORK_DFRN) + $contact['priority'] = 2; + + if(!get_config('system','ostatus_use_priority') and ($contact['network'] === NETWORK_OSTATUS)) $contact['priority'] = 2; if($contact['priority'] || $contact['subhub']) { -- cgit v1.2.3 From 0f3255467e8a64af86ca67c6af70edf1d3279640 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 10 Mar 2012 13:22:41 +0100 Subject: fixed login-fields, fixed. notofication.png, changed locations --- view/theme/diabook-blue/icons/notifications.png | Bin 795 -> 727 bytes view/theme/diabook-blue/style.css | 29 +++++++++++++++++++++++- view/theme/diabook-blue/wall_item.tpl | 4 ++-- view/theme/diabook-blue/wallwall_item.tpl | 4 ++-- view/theme/diabook/icons/notifications.png | Bin 758 -> 714 bytes view/theme/diabook/style.css | 15 +++++++++++- view/theme/diabook/theme.php | 3 ++- view/theme/diabook/wall_item.tpl | 4 ++-- view/theme/diabook/wallwall_item.tpl | 4 ++-- 9 files changed, 52 insertions(+), 11 deletions(-) diff --git a/view/theme/diabook-blue/icons/notifications.png b/view/theme/diabook-blue/icons/notifications.png index 33ae95c6a..c23673dbd 100755 Binary files a/view/theme/diabook-blue/icons/notifications.png and b/view/theme/diabook-blue/icons/notifications.png differ diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index 7f5fe1fec..51b173f2a 100644 --- a/view/theme/diabook-blue/style.css +++ b/view/theme/diabook-blue/style.css @@ -652,6 +652,17 @@ nav .nav-menu-icon { -webkit-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; } +nav .nav-menu-icon:hover { + background-color: #308dbf; + position: relative; + height: 22px; + padding: 5px; + margin: 0px 7px; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + nav .nav-menu-icon.selected { background-color: #fff; } @@ -1037,13 +1048,22 @@ section { width: 800px; padding: 0px 0px 0px 12px; } +#id_username { + width: 173px; + } +#id_password { + width: 173px; + } +#id_openid_url { + width: 173px; + } #contact-edit-end { - margin-top: 140%; } .pager { padding: 10px; text-align: center; font-size: 1.0em; + margin-top: 140%; } .tabs { @@ -1075,6 +1095,10 @@ section { margin-bottom: 0px; width: 775px; } +.tread-wrapper a{ + color: #1872A2; +} + .wall-item-decor { position: absolute; left: 790px; @@ -1118,6 +1142,7 @@ section { } .wall-item-container .wall-item-location { padding-right: 40px; + display: table-cell; } .wall-item-container .wall-item-ago { word-wrap: break-word; @@ -1173,6 +1198,7 @@ section { .wall-item-container .wall-item-actions-social { float: left; margin-bottom: 1px; + display: table-cell; } .wall-item-container .wall-item-actions-social a { margin-right: 1em; @@ -1183,6 +1209,7 @@ section { .wall-item-container .wall-item-actions-tools { float: right; width: 80px; + display: table-cell;done } .wall-item-container .wall-item-actions-tools a { float: right; diff --git a/view/theme/diabook-blue/wall_item.tpl b/view/theme/diabook-blue/wall_item.tpl index b1a014949..ebe40fd4e 100644 --- a/view/theme/diabook-blue/wall_item.tpl +++ b/view/theme/diabook-blue/wall_item.tpl @@ -46,7 +46,7 @@
    -
    $item.location 
    +
    @@ -82,7 +82,7 @@ {{ endif }}
    - +
    $item.location 
    diff --git a/view/theme/diabook-blue/wallwall_item.tpl b/view/theme/diabook-blue/wallwall_item.tpl index 603a908c5..e02e5a8be 100644 --- a/view/theme/diabook-blue/wallwall_item.tpl +++ b/view/theme/diabook-blue/wallwall_item.tpl @@ -52,7 +52,7 @@
    -
    $item.location 
    +
    @@ -88,7 +88,7 @@ {{ endif }}
    - +
    $item.location 
    diff --git a/view/theme/diabook/icons/notifications.png b/view/theme/diabook/icons/notifications.png index 5bdc34f76..270997740 100755 Binary files a/view/theme/diabook/icons/notifications.png and b/view/theme/diabook/icons/notifications.png differ diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 6e3909ab4..ad7119c2a 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -1036,13 +1036,23 @@ section { width: 800px; padding: 0px 0px 0px 12px; } +#id_username { + width: 173px; + } +#id_password { + width: 173px; + } +#id_openid_url { + width: 173px; + } #contact-edit-end { - margin-top: 140%; + } .pager { padding: 10px; text-align: center; font-size: 1.0em; + margin-top: 140%; } .tabs { @@ -1116,6 +1126,7 @@ section { } .wall-item-container .wall-item-location { padding-right: 40px; + display: table-cell; } .wall-item-container .wall-item-ago { word-wrap: break-word; @@ -1171,6 +1182,7 @@ section { .wall-item-container .wall-item-actions-social { float: left; margin-bottom: 1px; + display: table-cell; } .wall-item-container .wall-item-actions-social a { margin-right: 1em; @@ -1181,6 +1193,7 @@ section { .wall-item-container .wall-item-actions-tools { float: right; width: 80px; + display: table-cell; } .wall-item-container .wall-item-actions-tools a { float: right; diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php index 0a20c9fbc..5a1828ad7 100755 --- a/view/theme/diabook/theme.php +++ b/view/theme/diabook/theme.php @@ -13,6 +13,7 @@ $a->theme_info = array( $a->page['htmlhead'] .= <<< EOT + EOT; diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index b1a014949..ebe40fd4e 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -46,7 +46,7 @@
    -
    $item.location 
    +
    @@ -82,7 +82,7 @@ {{ endif }}
    - +
    $item.location 
    diff --git a/view/theme/diabook/wallwall_item.tpl b/view/theme/diabook/wallwall_item.tpl index 603a908c5..e02e5a8be 100644 --- a/view/theme/diabook/wallwall_item.tpl +++ b/view/theme/diabook/wallwall_item.tpl @@ -52,7 +52,7 @@
    -
    $item.location 
    +
    @@ -88,7 +88,7 @@ {{ endif }}
    - +
    $item.location 
    -- cgit v1.2.3 From 74b3e9f273b019729d213f3ccaeba1bb11d61d24 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 10 Mar 2012 15:50:35 +0100 Subject: Enabled Caching for items. Changed color of tags in diabook. --- include/text.php | 17 ++++++++++++++++- view/theme/diabook/style.css | 4 ++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/include/text.php b/include/text.php index 5ad0154d7..38736d836 100644 --- a/include/text.php +++ b/include/text.php @@ -874,6 +874,14 @@ function link_compare($a,$b) { if(! function_exists('prepare_body')) { function prepare_body($item,$attach = false) { + $cache = get_config('system','itemcache'); + + if (($cache != '')) { + $cachefile = $cache."/".$item["guid"]."-".strtotime($item["edited"])."-".$attach; + if (file_exists($cachefile)) + return(file_get_contents($cachefile)); + } + call_hooks('prepare_body_init', $item); $s = prepare_text($item['body']); @@ -882,8 +890,11 @@ function prepare_body($item,$attach = false) { call_hooks('prepare_body', $prep_arr); $s = $prep_arr['html']; - if(! $attach) + if(! $attach) { + if ($cache != '') + file_put_contents($cachefile, $s); return $s; + } $arr = explode(',',$item['attach']); if(count($arr)) { @@ -917,6 +928,10 @@ function prepare_body($item,$attach = false) { $prep_arr = array('item' => $item, 'html' => $s); call_hooks('prepare_body_final', $prep_arr); + + if ($cache != '') + file_put_contents($cachefile, $prep_arr['html']); + return $prep_arr['html']; }} diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 2d4670dca..0504ce96a 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -1277,14 +1277,14 @@ section { } .tag { /*background: url("../../../images/tag_b.png") repeat-x center left;*/ - color: #3465A4; + color: #999; padding-left: 3px; font-size: 12px; } .tag a { padding-right: 5px; /*background: url("../../../images/tag.png") no-repeat center right;*/ - color: #3465A4; + color: #999; } .wwto { position: absolute !important; -- cgit v1.2.3 From 670b571c8ac0532cc80fff6351f91b1b0fa58e0c Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 10 Mar 2012 18:19:00 +0100 Subject: Caching improved. --- include/text.php | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/include/text.php b/include/text.php index 38736d836..5bf815105 100644 --- a/include/text.php +++ b/include/text.php @@ -874,25 +874,27 @@ function link_compare($a,$b) { if(! function_exists('prepare_body')) { function prepare_body($item,$attach = false) { + call_hooks('prepare_body_init', $item); + $cache = get_config('system','itemcache'); if (($cache != '')) { - $cachefile = $cache."/".$item["guid"]."-".strtotime($item["edited"])."-".$attach; - if (file_exists($cachefile)) - return(file_get_contents($cachefile)); - } - - call_hooks('prepare_body_init', $item); + $cachefile = $cache."/".$item["guid"]."-".strtotime($item["edited"])."-".$attach."-".hash("crc32", $item['body']); - $s = prepare_text($item['body']); + if (file_exists($cachefile)) + $s = file_get_contents($cachefile); + else { + $s = prepare_text($item['body']); + file_put_contents($cachefile, $s); + } + } else + $s = prepare_text($item['body']); $prep_arr = array('item' => $item, 'html' => $s); call_hooks('prepare_body', $prep_arr); $s = $prep_arr['html']; if(! $attach) { - if ($cache != '') - file_put_contents($cachefile, $s); return $s; } @@ -925,13 +927,9 @@ function prepare_body($item,$attach = false) { $s .= '
    '; } - $prep_arr = array('item' => $item, 'html' => $s); call_hooks('prepare_body_final', $prep_arr); - if ($cache != '') - file_put_contents($cachefile, $prep_arr['html']); - return $prep_arr['html']; }} -- cgit v1.2.3 From 20d1a16dbb8a406bdeef62e8ee6973082e8d026a Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 10 Mar 2012 14:44:43 -0800 Subject: revup --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 45f728999..1414adb06 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1276' ); +define ( 'FRIENDICA_VERSION', '2.3.1277' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DB_UPDATE_VERSION', 1131 ); -- cgit v1.2.3 From 1bddd4866151f53f4469dee636a3742fe8381306 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 10 Mar 2012 15:50:51 -0800 Subject: bug #327 - composed private message is lost if no recip specified. --- mod/message.php | 20 +++++++++++++++----- view/prv_message.tpl | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/mod/message.php b/mod/message.php index 91db5baef..dcaaf6975 100755 --- a/mod/message.php +++ b/mod/message.php @@ -10,17 +10,19 @@ function message_post(&$a) { return; } - $replyto = ((x($_POST,'replyto')) ? notags(trim($_POST['replyto'])) : ''); - $subject = ((x($_POST,'subject')) ? notags(trim($_POST['subject'])) : ''); - $body = ((x($_POST,'body')) ? escape_tags(trim($_POST['body'])) : ''); - $recipient = ((x($_POST,'messageto')) ? intval($_POST['messageto']) : 0 ); + $replyto = ((x($_REQUEST,'replyto')) ? notags(trim($_REQUEST['replyto'])) : ''); + $subject = ((x($_REQUEST,'subject')) ? notags(trim($_REQUEST['subject'])) : ''); + $body = ((x($_REQUEST,'body')) ? escape_tags(trim($_REQUEST['body'])) : ''); + $recipient = ((x($_REQUEST,'messageto')) ? intval($_REQUEST['messageto']) : 0 ); $ret = send_message($recipient, $body, $subject, $replyto); + $norecip = false; switch($ret){ case -1: notice( t('No recipient selected.') . EOL ); + $norecip = true; break; case -2: notice( t('Unable to locate contact information.') . EOL ); @@ -35,6 +37,13 @@ function message_post(&$a) { info( t('Message sent.') . EOL ); } + // fake it to go back to the input form if no recipient listed + + if($norecip) { + $a->argc = 2; + $a->argv[1] = 'new'; + } + } function message_content(&$a) { @@ -151,7 +160,8 @@ function message_content(&$a) { '$header' => t('Send Private Message'), '$to' => t('To:'), '$subject' => t('Subject:'), - '$subjtxt' => '', + '$subjtxt' => ((x($_REQUEST,'subject')) ? strip_tags($_REQUEST['subject']) : ''), + '$text' => ((x($_REQUEST,'body')) ? escape_tags(htmlspecialchars($_REQUEST['body'])) : ''), '$readonly' => '', '$yourmessage' => t('Your message:'), '$select' => $select, diff --git a/view/prv_message.tpl b/view/prv_message.tpl index 25bf93b99..4b904cbcd 100755 --- a/view/prv_message.tpl +++ b/view/prv_message.tpl @@ -13,7 +13,7 @@ $select
    $yourmessage
    - +
    -- cgit v1.2.3 From d9c5d9d2ebf1d0830020e4dc5971cf5bd2227ed5 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 10 Mar 2012 15:53:36 -0800 Subject: default the text template var on conversations --- mod/message.php | 1 + 1 file changed, 1 insertion(+) diff --git a/mod/message.php b/mod/message.php index dcaaf6975..57d45ee3c 100755 --- a/mod/message.php +++ b/mod/message.php @@ -305,6 +305,7 @@ function message_content(&$a) { '$subjtxt' => template_escape($message['title']), '$readonly' => ' readonly="readonly" style="background: #BBBBBB;" ', '$yourmessage' => t('Your message:'), + '$text' => '', '$select' => $select, '$parent' => $parent, '$upload' => t('Upload photo'), -- cgit v1.2.3 From 5915325367013f96ffdabb7ef5ca56aa652ccd8d Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 10 Mar 2012 18:52:50 -0800 Subject: bug #328 --- include/bbcode.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/bbcode.php b/include/bbcode.php index cff26f5c8..d69cb263f 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -216,6 +216,9 @@ function bbcode($Text,$preserve_nl = false) { $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 $Text = preg_replace_callback("/\[video\](.*?)\[\/video\]/ism", 'tryoembed', $Text); @@ -224,9 +227,6 @@ function bbcode($Text,$preserve_nl = false) { // html5 video and audio - $Text = preg_replace("/\[video\](.*?)\[\/video\]/ism", '', $Text); - - $Text = preg_replace("/\[audio\](.*?)\[\/audio\]/ism", '', $Text); $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '', $Text); -- cgit v1.2.3 From f7ade749b827c22efe873b4f99941a1b7e5d0d62 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 11 Mar 2012 01:32:11 -0500 Subject: preliminary dispy-dark theme. WIP! did i say "WIP!"? yes, i did. WIP! Signed-off-by: Simon L'nu --- view/theme/dispy-dark/comment_item.tpl | 35 + view/theme/dispy-dark/connect.png | Bin 0 -> 443 bytes view/theme/dispy-dark/contact_template.tpl | 28 + view/theme/dispy-dark/conversation.tpl | 23 + view/theme/dispy-dark/experimental | 0 view/theme/dispy-dark/group_side.tpl | 30 + view/theme/dispy-dark/head.tpl | 99 + view/theme/dispy-dark/icons.png | Bin 0 -> 29039 bytes view/theme/dispy-dark/icons.svg | 2096 +++++++++++++++++++ view/theme/dispy-dark/jot-header.tpl | 312 +++ view/theme/dispy-dark/jot.tpl | 72 + view/theme/dispy-dark/login-bg.gif | Bin 0 -> 237 bytes view/theme/dispy-dark/mail_head.tpl | 5 + view/theme/dispy-dark/menu-user-pin.jpg | Bin 0 -> 385 bytes view/theme/dispy-dark/nav.tpl | 123 ++ view/theme/dispy-dark/nets.tpl | 10 + view/theme/dispy-dark/next.png | Bin 0 -> 590 bytes view/theme/dispy-dark/notifications.png | Bin 0 -> 2494 bytes view/theme/dispy-dark/notifications.svg | 273 +++ view/theme/dispy-dark/photo-menu.jpg | Bin 0 -> 459 bytes view/theme/dispy-dark/photo_view.tpl | 40 + view/theme/dispy-dark/premium.png | Bin 0 -> 2304 bytes view/theme/dispy-dark/prev.png | Bin 0 -> 593 bytes view/theme/dispy-dark/profile_vcard.tpl | 66 + view/theme/dispy-dark/saved_searches_aside.tpl | 14 + view/theme/dispy-dark/search_item.tpl | 51 + view/theme/dispy-dark/star.png | Bin 0 -> 2129 bytes view/theme/dispy-dark/style.css | 2631 ++++++++++++++++++++++++ view/theme/dispy-dark/tag.png | Bin 0 -> 571 bytes view/theme/dispy-dark/theme.php | 74 + view/theme/dispy-dark/wall_item.tpl | 77 + view/theme/dispy-dark/wallwall_item.tpl | 81 + view/theme/dispy/style.css | 17 +- 33 files changed, 6144 insertions(+), 13 deletions(-) create mode 100644 view/theme/dispy-dark/comment_item.tpl create mode 100644 view/theme/dispy-dark/connect.png create mode 100644 view/theme/dispy-dark/contact_template.tpl create mode 100644 view/theme/dispy-dark/conversation.tpl create mode 100644 view/theme/dispy-dark/experimental create mode 100644 view/theme/dispy-dark/group_side.tpl create mode 100644 view/theme/dispy-dark/head.tpl create mode 100644 view/theme/dispy-dark/icons.png create mode 100644 view/theme/dispy-dark/icons.svg create mode 100644 view/theme/dispy-dark/jot-header.tpl create mode 100644 view/theme/dispy-dark/jot.tpl create mode 100644 view/theme/dispy-dark/login-bg.gif create mode 100644 view/theme/dispy-dark/mail_head.tpl create mode 100644 view/theme/dispy-dark/menu-user-pin.jpg create mode 100644 view/theme/dispy-dark/nav.tpl create mode 100644 view/theme/dispy-dark/nets.tpl create mode 100644 view/theme/dispy-dark/next.png create mode 100644 view/theme/dispy-dark/notifications.png create mode 100644 view/theme/dispy-dark/notifications.svg create mode 100644 view/theme/dispy-dark/photo-menu.jpg create mode 100644 view/theme/dispy-dark/photo_view.tpl create mode 100644 view/theme/dispy-dark/premium.png create mode 100644 view/theme/dispy-dark/prev.png create mode 100644 view/theme/dispy-dark/profile_vcard.tpl create mode 100644 view/theme/dispy-dark/saved_searches_aside.tpl create mode 100644 view/theme/dispy-dark/search_item.tpl create mode 100644 view/theme/dispy-dark/star.png create mode 100644 view/theme/dispy-dark/style.css create mode 100644 view/theme/dispy-dark/tag.png create mode 100644 view/theme/dispy-dark/theme.php create mode 100644 view/theme/dispy-dark/wall_item.tpl create mode 100644 view/theme/dispy-dark/wallwall_item.tpl diff --git a/view/theme/dispy-dark/comment_item.tpl b/view/theme/dispy-dark/comment_item.tpl new file mode 100644 index 000000000..85176732b --- /dev/null +++ b/view/theme/dispy-dark/comment_item.tpl @@ -0,0 +1,35 @@ +
    +
    + + + + + + + +
    + $mytitle +
    +
    + + + {{ if $qcomment }} +
      + {{ for $qcomment as $qc }} + + {{ endfor }} +
    + {{ endif }} + +
    + + +
    +
    + +
    diff --git a/view/theme/dispy-dark/connect.png b/view/theme/dispy-dark/connect.png new file mode 100644 index 000000000..b76fc13dc Binary files /dev/null and b/view/theme/dispy-dark/connect.png differ diff --git a/view/theme/dispy-dark/contact_template.tpl b/view/theme/dispy-dark/contact_template.tpl new file mode 100644 index 000000000..fbf354b47 --- /dev/null +++ b/view/theme/dispy-dark/contact_template.tpl @@ -0,0 +1,28 @@ + +
    +
    +
    + + $contact.name + + {{ if $contact.photo_menu }} + menu +
    +
      + $contact.photo_menu +
    +
    + {{ endif }} +
    + +
    +
    +
    $contact.name
    +
    + Profile URL
    +
    $contact.network
    + +
    +
    diff --git a/view/theme/dispy-dark/conversation.tpl b/view/theme/dispy-dark/conversation.tpl new file mode 100644 index 000000000..41b6aeadf --- /dev/null +++ b/view/theme/dispy-dark/conversation.tpl @@ -0,0 +1,23 @@ +{{ 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 }} + +{{ if $dropping }} + +{{ endif }} diff --git a/view/theme/dispy-dark/experimental b/view/theme/dispy-dark/experimental new file mode 100644 index 000000000..e69de29bb diff --git a/view/theme/dispy-dark/group_side.tpl b/view/theme/dispy-dark/group_side.tpl new file mode 100644 index 000000000..516d70d5b --- /dev/null +++ b/view/theme/dispy-dark/group_side.tpl @@ -0,0 +1,30 @@ +
    +

    $title

    + + + +
    + + diff --git a/view/theme/dispy-dark/head.tpl b/view/theme/dispy-dark/head.tpl new file mode 100644 index 000000000..793af6fd2 --- /dev/null +++ b/view/theme/dispy-dark/head.tpl @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/view/theme/dispy-dark/icons.png b/view/theme/dispy-dark/icons.png new file mode 100644 index 000000000..f99ec29ee Binary files /dev/null and b/view/theme/dispy-dark/icons.png differ diff --git a/view/theme/dispy-dark/icons.svg b/view/theme/dispy-dark/icons.svg new file mode 100644 index 000000000..05a00d93c --- /dev/null +++ b/view/theme/dispy-dark/icons.svg @@ -0,0 +1,2096 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Lorem Ip + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ? + ? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/view/theme/dispy-dark/jot-header.tpl b/view/theme/dispy-dark/jot-header.tpl new file mode 100644 index 000000000..43dcdbb84 --- /dev/null +++ b/view/theme/dispy-dark/jot-header.tpl @@ -0,0 +1,312 @@ + + + + diff --git a/view/theme/dispy-dark/jot.tpl b/view/theme/dispy-dark/jot.tpl new file mode 100644 index 000000000..94c31da23 --- /dev/null +++ b/view/theme/dispy-dark/jot.tpl @@ -0,0 +1,72 @@ +
    +
    +
     
    + +
    + + + + + + + + + + + + + +
    + + +
    +
    + $acl +
    +
    $emailcc
    + +
    + $jotnets +
    +
    + +
    +{{ if $content }}{{ endif }} diff --git a/view/theme/dispy-dark/login-bg.gif b/view/theme/dispy-dark/login-bg.gif new file mode 100644 index 000000000..cde836c89 Binary files /dev/null and b/view/theme/dispy-dark/login-bg.gif differ diff --git a/view/theme/dispy-dark/mail_head.tpl b/view/theme/dispy-dark/mail_head.tpl new file mode 100644 index 000000000..d49d7c1af --- /dev/null +++ b/view/theme/dispy-dark/mail_head.tpl @@ -0,0 +1,5 @@ +

    $messages

    + +
    +$tab_content +
    diff --git a/view/theme/dispy-dark/menu-user-pin.jpg b/view/theme/dispy-dark/menu-user-pin.jpg new file mode 100644 index 000000000..26449569f Binary files /dev/null and b/view/theme/dispy-dark/menu-user-pin.jpg differ diff --git a/view/theme/dispy-dark/nav.tpl b/view/theme/dispy-dark/nav.tpl new file mode 100644 index 000000000..4a030e7ae --- /dev/null +++ b/view/theme/dispy-dark/nav.tpl @@ -0,0 +1,123 @@ + + + + diff --git a/view/theme/dispy-dark/nets.tpl b/view/theme/dispy-dark/nets.tpl new file mode 100644 index 000000000..b0cb8890c --- /dev/null +++ b/view/theme/dispy-dark/nets.tpl @@ -0,0 +1,10 @@ +
    +

    $title

    +
    $desc
    + $all +
      + {{ for $nets as $net }} +
    • $net.name
    • + {{ endfor }} +
    +
    diff --git a/view/theme/dispy-dark/next.png b/view/theme/dispy-dark/next.png new file mode 100644 index 000000000..5e0067c4b Binary files /dev/null and b/view/theme/dispy-dark/next.png differ diff --git a/view/theme/dispy-dark/notifications.png b/view/theme/dispy-dark/notifications.png new file mode 100644 index 000000000..66c432eac Binary files /dev/null and b/view/theme/dispy-dark/notifications.png differ diff --git a/view/theme/dispy-dark/notifications.svg b/view/theme/dispy-dark/notifications.svg new file mode 100644 index 000000000..0ec2c0569 --- /dev/null +++ b/view/theme/dispy-dark/notifications.svg @@ -0,0 +1,273 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/view/theme/dispy-dark/photo-menu.jpg b/view/theme/dispy-dark/photo-menu.jpg new file mode 100644 index 000000000..fde5eb535 Binary files /dev/null and b/view/theme/dispy-dark/photo-menu.jpg differ diff --git a/view/theme/dispy-dark/photo_view.tpl b/view/theme/dispy-dark/photo_view.tpl new file mode 100644 index 000000000..4582751c6 --- /dev/null +++ b/view/theme/dispy-dark/photo_view.tpl @@ -0,0 +1,40 @@ +
    +

    $album.1

    + + + +
    + {{ if $prevlink }}{{ endif }} + + {{ if $nextlink }}{{ endif }} +
    + +
    +
    $desc
    +{{ if $tags }} +
    $tags.0
    +
    $tags.1
    +{{ endif }} +{{ if $tags.2 }}{{ endif }} + +{{ if $edit }}$edit{{ endif }} + +{{ if $likebuttons }} +
    + $likebuttons + $like + $dislike +
    +{{ endif }} + +$comments + +$paginate + diff --git a/view/theme/dispy-dark/premium.png b/view/theme/dispy-dark/premium.png new file mode 100644 index 000000000..d2855a4f5 Binary files /dev/null and b/view/theme/dispy-dark/premium.png differ diff --git a/view/theme/dispy-dark/prev.png b/view/theme/dispy-dark/prev.png new file mode 100644 index 000000000..10b10d74f Binary files /dev/null and b/view/theme/dispy-dark/prev.png differ diff --git a/view/theme/dispy-dark/profile_vcard.tpl b/view/theme/dispy-dark/profile_vcard.tpl new file mode 100644 index 000000000..0c289d982 --- /dev/null +++ b/view/theme/dispy-dark/profile_vcard.tpl @@ -0,0 +1,66 @@ +
    + +
    $profile.name
    + + {{ if $pdesc }} +
    $profile.pdesc
    + {{ endif }} +
    + $profile.name +
    + + {{ if $location }} +
    + $location +
    + {{ if $profile.address }} +
    $profile.address
    {{ endif }} + $profile.zip + $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/dispy-dark/saved_searches_aside.tpl b/view/theme/dispy-dark/saved_searches_aside.tpl new file mode 100644 index 000000000..e2aae1e77 --- /dev/null +++ b/view/theme/dispy-dark/saved_searches_aside.tpl @@ -0,0 +1,14 @@ +
    + + $searchbox + +
      + {{ for $saved as $search }} +
    • + + $search.term +
    • + {{ endfor }} +
    +
    +
    diff --git a/view/theme/dispy-dark/search_item.tpl b/view/theme/dispy-dark/search_item.tpl new file mode 100644 index 000000000..54c3e389c --- /dev/null +++ b/view/theme/dispy-dark/search_item.tpl @@ -0,0 +1,51 @@ +
    +
    +
    +
    + + $item.name + menu +
    +
      + $item.item_photo_menu +
    +
    +
    +
    +
    {{ if $item.location }}$item.location {{ endif }}
    +
    +
    + {{ if $item.lock }}
    $item.lock
    + {{ else }}
    {{ endif }} +
    +
    +
    + {{ if $item.drop.dropping }}{{ endif }} +
    + {{ if $item.drop.dropping }}{{ endif }} +
    +
    +
    +
    $item.title
    +
    +
    $item.body
    +
    +
    + $item.name +
    $item.ago
    + +
    + +
    +
    +
    + +
    +
    + {{ if $item.conv }} + $item.conv.title + {{ endif }} +
    + diff --git a/view/theme/dispy-dark/star.png b/view/theme/dispy-dark/star.png new file mode 100644 index 000000000..a327ba14e Binary files /dev/null and b/view/theme/dispy-dark/star.png differ diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css new file mode 100644 index 000000000..d5e6826a8 --- /dev/null +++ b/view/theme/dispy-dark/style.css @@ -0,0 +1,2631 @@ +/* + * dispy-dark + * + * modernised, sort of, by simon + * + */ + +/* from html5boilerplate */ + +/* these are to tell browsers they should be displayed a certain way */ +article, aside, details, figcaption, figure, footer, +header, hgroup, nav, section { + display: block; +} +audio, canvas, video, time { + display: inline-block; + *display: inline; + *zoom: 1; +} +audio:not([controls]) { + display: none; +} +[hidden] { + display: none; +} + +/* + * Base + */ + +/* + * 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units + * 2. Force vertical scrollbar in non-IE + * 3. Prevent iOS text size adjust on device orientation change, without disabling user zoom: h5bp.com/g + */ + +html { + font-size: 100%; + overflow-y: scroll; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; + font-size: 16px; + line-height: 1.1em; +} +body, button, input, select, textarea { + font-family: sans-serif; + color: #eec; + /*background-color: #2e3436;*/ + background-color: #2e2f2e; +} +select { + border: 1px #555 dotted; + padding: 3px; + margin: 2px; +} +option { + padding: 3px; + vertical-align: middle; +} +/* remember to define focus styles! */ +:focus { + outline: 0; +} + +/* remember to highlight inserts somehow! */ +ins { + background-color: #2e302e; + color: #ff9; + text-decoration: none; +} +mark { + background-color: #2e302e; + color: #ff9; + font-style: italic; + font-weight: bold; +} +/* Redeclare monospace font family: h5bp.com/j */ +pre, code, kbd, samp, .wall-item-body code { + font-family: monospace, monospace; + _font-family: 'courier new', monospace; + font-size: 1em; } + +/* Improve readability of pre-formatted text in all browsers */ +pre, .wall-item-body code { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +q { + quotes: none; +} +q:before, q:after { + content: ""; + content: none; +} +small { + font-size: 85%; +} + +/* Position subscript and superscript content without affecting line-height: h5bp.com/k */ +sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0 none; + /*vertical-align: middle;*/ +} +a { + color: #88a9d2; + text-decoration: none; + margin-bottom: 1px; + text-decoration: none; +} +/*a:hover { */ +/* text-decoration: none;*/ +/*}*/ +a:hover img { + text-decoration: none; +} +blockquote { + background: #444; + color: #eec; + text-indent: 5px; + padding: 5px; + border: 1px #aaa solid; + border-radius: 5px; +} +a:hover { + color: #729fcf; + padding-bottom: 0; + border-bottom: 1px dotted #729fcf; +} +.required { + display: inline; + color: #ff0; + font-size: 16px; + font-weight: bold; + margin: 3px; +} +.fakelink, .lockview { + color: #729fcf; + cursor: pointer; +} +.fakelink:hover { + color: #729fcf; +} +input[type=submit] { + font-weight: bold; + background-color: #eee; + color: #2e302e; + margin-top: 10px; + height: 22px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + border: 0; +} +.smalltext { + font-size: 0.7em; +} +#panel { + position: absolute; + font-size: 0.8em; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + border: 1px solid #fff; + background-color: #2e302e; + color: #eeeeec; + padding: 1em; +} +.pager { + margin-top: 60px; + display: block; + clear: both; + text-align: center; +} +.pager span { + padding: 4px; + margin: 4px; +} +.pager_current { + background-color: #729fcf; + color: #fff; +} + +/** + * global + */ +/* .tool .action */ +.action { + float: right; +} + +/** + * login + */ +#login-extra-links a { + margin-right: 20px; +} + +/********* +* nav +*********/ +nav { + height: 60px; + display: block; + background-color: #1d1f1d; + color: #eeeeec; + position: relative; + padding: 20px 20px 10px 95px; + margin-left: auto; + margin-right: auto; +} +nav a { + text-decoration: none; + color: #eeeeec; + border: 0px; +} +nav a:hover { + text-decoration: none; + color: #eeeeec; + border: 0px; +} +nav #banner { + display: block; + position: absolute; + left: 51px; + top: 25px; +} +nav #banner #logo-text a { + font-size: 40px; + font-weight: bold; + margin-left: 3px; +} +nav #user-menu { + display: block; + width: auto; + float: right; + margin: 3px 68px 0 0; + position: relative; + background-color: #555753; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + background: #555753 url("menu-user-pin.jpg") 98% center no-repeat; + clear: both; +} +nav #user-menu-label { + float: left; + font-size: 12px; + padding: 3px 20px 9px 5px; + height: 10px; +} +ul#user-menu-popup { + display: none; + position: absolute; + background-color: #555753; + width: 100%; + padding: 10px 0px; + margin: 0px; + top: 20px; + left: 0; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + z-index: 10000; +} +ul#user-menu-popup li { + display: block; +} +ul#user-menu-popup li a { + display: block; + padding: 5px; +} +ul#user-menu-popup li a:hover { + color: #2e302e; + background-color: #eeeeec; +} +ul#user-menu-popup li a.nav-sep { + border-top: 1px solid #eeeeec; +} +#nav-buttons { + clear: both; + list-style: none; + padding: 0px; +} +#nav-buttons li { + padding: 0; +} +nav .nav-link { + float: right; + display: block; + width: 22px; + height: 22px; + overflow: hidden; + margin: 0px 5px 5px; + text-indent: 50px; + background: transparent url(icons.png) 0 0 no-repeat; +} +#nav-apps-link { + background-position: 0 -66px; +} +#nav-apps-link:hover { + background-position: -22px -66px; +} +#nav-community-link { + background-position: 0 -22px; +} +#nav-community-link:hover { + background-position: -22px -22px; +} +#nav-contacts-link { + background-position: 0 -22px; +} +#nav-contacts-link:hover { + background-position: -22px -22px; +} +#nav-directory-link { + background-position: -44px -154px; +} +#nav-directory-link:hover { + background-position: -66px -154px; +} +#nav-help-link { + background-position: 0 -110px; +} +#nav-help-link:hover { + background-position: -22px -110px; +} +#nav-home-link { + background-position: -44px -132px; +} +#nav-home-link:hover { + background-position: -66px -132px; +} +#nav-intro-link { + background-position: 0px -190px; +} +#nav-intro-link:hover { + background-position: -44px -190px; +} +#nav-login-link { + background-position: 0 -88px; +} +#nav-login-link:hover { + background-position: -22px -88px; +} +#nav-logout-link { + background-position: 0 -88px; +} +#nav-logout-link:hover { + background-position: -22px -88px; +} +#nav-messages-link { + background-position: -44px -88px; +} +#nav-messages-link:hover { + background-position: -66px -88px; +} +#nav-notify-link, #nav-notifications-linkmenu { + background-position: -44px -110px; +} +#nav-notify-link:hover { + background-position: -66px -110px; +} +#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; +} +#profile-link, +#profile-title, +#wall-image-upload, +#wall-file-upload, +#profile-attach-wrapper, +#profile-audio, +#profile-link, +#profile-location, +#profile-nolocation, +#profile-title, +#jot-title, +#profile-upload-wrapper, +#profile-video, +#profile-jot-submit, +#wall-image-upload-div, +#wall-file-upload-div, +.icon, .hover, .focus, .pointer { + cursor: pointer; +} +#notifications { + height: 20px; + width: 100%; + position: absolute; + top: -19px; + left: 0; +} +/* 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; +} +#nav-notifications-menu { + margin: 30px 0 0 -45px; + width: 300px; + max-height: 400px; + overflow: auto; + font-size: 9pt; +} +#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 { + color: black; +} +#nav-notifications-menu a:hover { + color: black; + text-decoration: underline; +} +nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-linkmenu.selected .icon.s22.notify { + background-image: url("../../../images/icons/22/notify_on.png"); +} +.show { + display: block; +} +#nav-floater { + position: fixed; + top: 20px; + right: 1%; + padding: 5px; + background: #1d1f1d; + color: transparent; + border-radius: 5px; + z-index: 100; +} +.floaterflip { + display: block; + position: fixed; + z-index: 110; + top: 53px; + right: 19px; + width: 22px; + height: 22px; + overflow: hidden; + margin: 0px; + background: transparent url(icons.png) -190px -60px no-repeat; +} +.nav-ajax-update, .nav-ajax-left { + width: 30px; + height: 19px; + background: transparent url(notifications.svg) 0 0 no-repeat; + color: #222; + font-weight: bold; + font-size: 0.8em; + padding-top: 0.2em; + text-align: center; + float: left; + margin: 0 -1px 0 3px; + display: block; + visibility: hidden; +} +.nav-ajax-update.show, .nav-ajax-left.show { + visibility: visible; +} +#net-update { + background-position: 0px 0px; +} +#mail-update { + background-position: -30px 0; +} +#notify-update { + background-position: -60px 0px; +} +#home-update { + background-position: -90px 0px; +} +#intro-update { + background-position: -120px 0px; +} +#lang-select-icon { + cursor: pointer; + position: absolute; + left: 0; + top: 0; +} +#language-selector { + position: absolute; + top: 0; + left: 16px; +} +.menu-popup { + position: absolute; + display: none; + width: 11em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 0px; + list-style: none; + border: 3px solid #364e59; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +.menu-popup a { + display: block; + color: #2d2d2d; + padding: 5px 10px; + text-decoration: none; +} +.menu-popup a:hover { + background-color: #bdcdd4; +} +.menu-popup .menu-sep { + border-top: 1px solid #9eabb0; +} +.menu-popup li { + float: none; + overflow: auto; + height: auto; + display: block; +} +.menu-popup li img { + float: left; + width: 16px; + height: 16px; + padding-right: 5px; +} +.menu-popup .empty { + padding: 5px; + text-align: center; + color: #9eabb0; +} +.notif-item { + font-size: small; +} +.notif-item a { + vertical-align: middle; +} +.notif-image { + width: 32px; + height: 32px; + padding: 7px 7px 0px 0px; +} +.notify-seen { + background: #ddd; +} + +/** sysmsg **/ +#sysmsg_info { + position:fixed; + bottom:0; + -moz-box-shadow:0 0 5px #888; + -webkit-box-shadow:0 0 5px #888; + box-shadow:0 0 5px #888; + padding: 10px; + background-color:#fcaf3e; + border:2px solid #f8911b; + border-bottom:0; + padding-bottom: 50px; + z-index: 1000; +} +#sysmsg { + position: fixed; + bottom: 0; + -moz-box-shadow: 0 0 5px #888; + -webkit-box-shadow: 0 0 5px #888; + box-shadow: 0 0 5px #888; + padding: 10px; + background-color: #fcaf3e; + border: 2px solid #f8911b; + border-bottom: 0; + padding-bottom: 50px; + z-index: 1000; +} +#sysmsg_info br, +#sysmsg br { + display: block; + margin: 2px 0px; + border-top: 1px solid #ccccce; +} + + +/** +* aside +**/ +aside { + position: absolute; + right: 15px; + width: 245px; + padding-top: 15px; + font-size: smaller; +} +.vcard .fn { + font-size: 1.7em; + font-weight: bold; + border-bottom: 1px solid #729fcf; + padding-bottom: 3px; +} +.vcard #profile-photo-wrapper { + margin: 20px; +} +/* http://css-tricks.com/snippets/css/css-box-shadow/ + * box-shadow: + * 1. The horizontal offset of the shadow, positive means + * the shadow will be on the right of the box, a negative + * offset will put the shadow on the left of the box. + * 2. The vertical offset of the shadow, a negative one + * means the box-shadow will be above the box, a + * positive one means the shadow will be below the box. + * 3. The blur radius (optional), if set to 0 the shadow + * will be sharp, the higher the number, the more blurred + * it will be. + * 4. The spread radius (optional), positive values increase + * the size of the shadow, negative values decrease the size. + * Default is 0 (the shadow is same size as blur). + * 5. Colo[u]r + */ +.vcard #profile-photo-wrapper img { + box-shadow: 3px 3px 10px 0 #000; +} +aside h4 { + font-size: 1.2em; +} +aside #viewcontacts { + text-align: right; +} +.aprofile dt { + box-shadow: 1px 1px 5px 0; + color: #666666; + margin: 15px 0 5px; + padding-left: 5px; +} +#profile-extra-links ul { + margin-left: 0px; + padding-left: 0px; + list-style: none; +} +#dfrn-request-link { + background:#3465A4 url(connect.png) no-repeat 95% center; + border-radius:5px 5px 5px 5px; + color:#fff; + display:block; + font-size:1.2em; + padding:.2em .5em; +} +#netsearch-box { + margin: 30px 0px; +} + + +/** +* contacts block +*/ +.contact-block-div { + width: 50px; + height: 50px; + float: left; +} +.contact-block-textdiv { + width: 150px; + height: 34px; + float: left; +} +#contact-block-end { + clear: both; +} + + +/** + * jot + **/ +#jot { + /*width: 785px;*/ + margin: 10px 0 20px 0px; + width: 100%; +} +#jot #jot-tools { + margin: 0px; + padding: 0px; + height: 35px; + overflow: none; + width: 100%; + /*background-color: #0e232e;*/ + /*border-bottom: 2px solid #9eabb0;*/ +} +#jot #jot-tools span { + float: left; + margin: 10px 20px 2px 0px; +} +#jot #jot-tools span a { + display: block; +} +#jot #jot-tools .perms { + float: right; + width: 40px; +} +#jot #jot-tools li.loading { + float: right; + background-color: #ffffff; + width: 20px; + vertical-align: center; + text-align: center; + border-top: 2px solid #9eabb0; + height: 38px; +} +#jot #jot-tools li.loading img { + margin-top: 10px; +} +#jot #jot-title { + border: 1px solid #ccc; + margin: 0 0 5px; + height: 20px; + width: 90%; + font-weight: bold; + border-radius: 5px; + vertical-align: middle; +} +#jot #character-counter { + width: 6%; + float: right; + text-align: right; + height: 15px; + line-height: 20px; + padding: 2px 20px 5px 0; +} +#profile-jot-text_tbl { + margin-bottom: 10px; +} +#profile-jot-text_ifr { + width:99.900002% !important; +} +#profile-attach-wrapper, +#profile-audio-wrapper, +#profile-link-wrapper, +#profile-location-wrapper, +#profile-nolocation-wrapper, +#profile-title-wrapper, +#profile-upload-wrapper, +#profile-video-wrapper { + float: left; + margin: 0 20px 0 0; +} +#profile-rotator-wrapper { + float: right; +} +#profile-jot-tools-end, +#profile-jot-banner-end { + clear: both; +} +#profile-jot-email-wrapper { + margin:10px 10% 0; + border:1px solid #555753; + border-bottom:0; +} +#profile-jot-email-label { + background-color:#555753; + color:#ccccce; + padding:5px; +} +#profile-jot-email { + width:90%; + margin:5px; +} +#profile-jot-networks { + margin: 0 10%; + border: 1px solid #555753; + border-top: 0; + border-bottom: 0; + padding: 5px; +} +#jot-preview-link { + margin: 0 0 0 10px; + border: 0; + text-decoration: none; + float: right; +} +.icon-text-preview { + margin: 0 0 -18px 0; + display: block; + width: 20px; + height: 20px; + background: url(icons.png) no-repeat -128px -40px; + border: 0; + text-decoration: none; + float: right; +} +#profile-jot-perms { + float: right; + background-color: #555753; + height: 22px; + width: 20px; + -webkit-border-radius: 5px 0px 0px 5px; + -moz-border-radius: 5px 0px 0px 5px; + border-radius: 5px 0px 0px 5px; + overflow: hidden; + border: 0px; + margin: 0 -4px 0 10px; +} +#profile-jot-plugin-wrapper { + width: 1px; + margin: 10px 0 0 0; + float: right; +} +#profile-jot-submit-wrapper { + float: right; + width: 100%; + list-style: none; + margin: 10px 0 0 0; + padding: 0; +} +#profile-jot-submit { + height: 22px; + background-color: #555753; + color: #eeeeec; + -webkit-border-radius: 0 5px 5px 0; + -moz-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; + border: 0; + margin: 0; + float: right; +} +#jot-perms-icons { + background-color: #555753; + height: 22px; + width: 20px; + -webkit-border-radius: 0 5px 5px 0; + -moz-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; + overflow: hidden; + border: 0; + margin: 0 0 0 94.4%; +} +#profile-jot-acl-wrapper { + margin: 0 10px; + border: 1px solid #555753; + border-top: 0; + display: block !important; +} +#group_allow_wrapper, +#group_deny_wrapper, +#acl-permit-outer-wrapper { + width:47%; + float:left; +} +#contact_allow_wrapper, +#contact_deny_wrapper, +#acl-deny-outer-wrapper { + width:47%; + float:right; +} +#acl-permit-text { + background-color: #555753; + color: #ccccce; + padding: 5px; + float: left; +} +#jot-public { + background-color: #555753; + color: #ff0000; + padding: 5px; + float: left; +} +#acl-deny-text { + background-color: #555753; + color: #ccccce; + padding: 5px; + float: left; +} +#acl-permit-text-end, +#acl-deny-text-end { + clear: both; +} +#jot-title-desc { + color: #cccccc; +} +#profile-jot-desc { + color: #a00; +} +#jot-title-wrapper { + margin-bottom: 5px; +} +#jot-title-display { + font-weight: bold; +} +.jothidden { + display: none; +} +#jot-preview-content { + background-color: #ffffe0; + border: 1px #aaaa00 solid; + border-radius: 3px; + padding: 3px 3px 6px 10px; +} + + +/** + * section + */ +section { + margin: 20px 6% 0 4%; + font-size: 0.8em; + padding-right: 230px; + min-width: 475px; +} + +/** tabs **/ +.tabs { + list-style: none; + margin: 10px 0 10px; + padding: 0; + border-bottom: 1px solid #729fcf; + font-size: 14px; +} +.tabs li { + display: inline; +} +.tab { + padding: 0 5px; +} +.tab:hover { + background-color: #88a9d2; + color: #111; + border: 0px; +} +.tab:active { + background-color: #88a9d2; + color: #111; + border: 0px; +} +.tab.active { + background-color: #88a9d2; + color: #111; +} + +/** + * items + */ +.wall-item-outside-wrapper { + border: 1px solid #aaa; + border-radius: 5px; +} +.wall-item-outside-wrapper.comment { + margin-top: 5px; +} +.wall-item-outside-wrapper-end { + clear: both; +} +.wall-item-content-wrapper { + position: relative; + padding: 10px; + width: auto; +} +.wall-item-outside-wrapper .wall-item-comment-wrapper { + /*margin-left: 90px;*/ +} +.shiny { + background: #2e3436; +} +.wall-item-content { + overflow-x: auto; +} +/* removing it from here, vs. putting it in .wall-item-content + * might break things for people. we shall see ;) */ +[id^="tread-wrapper"], [class^="tread-wrapper"] { + margin: 15px 0 0 0; + padding: 0px; + /*overflow-x: auto;*/ +} +.wall-item-photo-menu { + display: none; +} +.wall-item-photo-menu-button { + display:none; + text-indent:-99999px; + background:#555753 url(menu-user-pin.jpg) no-repeat 75px center; + position:absolute; + overflow:hidden; + height:20px; + width:90px; + top:85px; + left:0; + -webkit-border-radius:0 0 5px 5px; + -moz-border-radius:0 0 5px 5px; + border-radius:0 0 5px 5px; +} +.wall-item-info { + float: left; + width: 110px; +} +.wall-item-photo-wrapper { + width: 80px; + height: 80px; + position: relative; + padding: 5px; + background-color: #555753; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +[class^="wall-item-tools"] > *, [class^="wall-item-tools"] > * > * { + margin: 0 0 5px 0; +} +.wall-item-tools { + float: right; + filter: alpha(opacity=35); + opacity: 0.4; + -webkit-transition: all 1s ease-in-out; + -moz-transition: all 1s ease-in-out; + -o-transition: all 1s ease-in-out; + -ms-transition: all 1s ease-in-out; + transition: all 1s ease-in-out; +} +.wall-item-tools:hover { + filter: alpha(opacity=100); + opacity: 1; + -webkit-transition: all 1s ease-in-out; + -moz-transition: all 1s ease-in-out; + -o-transition: all 1s ease-in-out; + -ms-transition: all 1s ease-in-out; + transition: all 1s ease-in-out; +} +.wall-item-title { + font-size: 1.2em; + font-weight: bold; + margin-bottom: 1em; +} +.wall-item-body { + margin: 10px 10px 10px 0px; + text-align: left; +} +.wall-item-lock-wrapper { + float: right; +} +.wall-item-dislike, +.wall-item-like { + clear: left; + font-size: 0.8em; + color: #878883; + margin: 5px 0 5px 120px; +} +.wall-item-author, .wall-item-actions-author { + clear: left; + font-size: 0.8em; + color: #878883; + margin: 20px 0 0 110px; +} +.wall-item-ago { + display: inline; + padding-left: 10px; +} +.wall-item-wrapper-end { + clear:both; +} +.wall-item-location { + margin-top: 15px; + width: 100px; + overflow: hidden; + text-overflow: ellipsis; + -o-text-overflow: ellipsis; +} +.wall-item-location .icon { + float: left; +} +.wall-item-location > a { + margin-left: 25px; + font-size: 0.7em; + display: block; +} +.wall-item-location .smalltext { + margin-left: 25px; + font-size: 0.7em; + display: block; +} +.wall-item-location > br { + display: none; +} +.wallwall .wwto { + left: 5px; + margin: 0; + position: absolute; + top: 75px; + width: 30px; + z-index: 10001; + width: 30px; + height: 30px; +} +.wallwall .wwto img { + width: 30px !important; + height: 30px !important; +} +.wallwall .wall-item-photo-end { + clear: both; +} +.wall-item-arrowphoto-wrapper { + position: absolute; + left: 35px; + top: 80px; + z-index: 10002; +} +.wall-item-photo-menu { + min-width: 92px; + border: 2px solid #FFFFFF; + border-top: 0px; + background: #555753; + position: absolute; + left: -2px; top: 101px; + display: none; + z-index: 10003; + -webkit-border-radius: 0px 5px 5px 5px; + -moz-border-radius: 0px 5px 5px 5px; + border-radius: 0px 5px 5px 5px; +} +.wall-item-photo-menu ul { + margin:0px; + padding: 0px; + list-style: none; +} +.wall-item-photo-menu li a { + white-space: nowrap; + display: block; + padding: 5px 2px; + color: #eeeeec; +} +.wall-item-photo-menu li a:hover { + color: #555753; + background: #eeeeec; +} +#item-delete-selected { + overflow: auto; + width: 100%; +} + + +/** + * comment + */ +.ccollapse-wrapper { + font-size: 0.9em; + margin-left: 80px; +} + +.wall-item-outside-wrapper.comment { + margin-left: 80px; +} +.wall-item-outside-wrapper.comment .wall-item-photo { + width: 40px!important; + height: 40px!important; +} +.wall-item-outside-wrapper.comment .wall-item-photo-wrapper { + width: 40px; + height: 40px; +} +.wall-item-outside-wrapper.comment .wall-item-photo-menu-button { + width: 50px; + top: 45px; + background-position: 35px center; +} +.wall-item-outside-wrapper.comment .wall-item-info { + width: 60px; +} +.wall-item-outside-wrapper.comment .wall-item-body { + margin-left: 10px; +} +.wall-item-outside-wrapper.comment .wall-item-author { + margin-left: 50px; +} + +.wall-item-outside-wrapper.comment .wall-item-photo-menu { + min-width: 50px; + top: 60px; +} +.comment-wwedit-wrapper { + /*margin: 30px 0px 0px 80px;*/ +} +.comment-edit-wrapper { + border-top: 1px #aaa solid; +} +.comment-wwedit-wrapper img, +.comment-edit-wrapper img { + width: 20px; + height: 20px; +} +.comment-edit-photo-link, .comment-edit-photo { + float: left; + margin-left: 10px; +} +.my-comment-photo { + width: 40px; + height: 40px; + padding: 5px; +} +[class^="comment-edit-text"] { + margin: 5px 0 10px 20px; + width: 86.5%; +} +.comment-edit-text-empty { + height: 20px; + border: 2px #c8bebe solid; + border-radius: 5px; + color: #c8bebe; + -webkit-transition: all 0.5s ease-in-out; + -moz-transition: all 0.5s ease-in-out; + -o-transition: all 0.5s ease-in-out; + -ms-transition: all 0.5s ease-in-out; + transition: all 0.5s ease-in-out; +} +.comment-edit-text-empty:hover { + color: #999999; +} +.comment-edit-text-full { + height: 10em; + border-radius: 5px; + -webkit-transition: all 0.5s ease-in-out; + -moz-transition: all 0.5s ease-in-out; + -o-transition: all 0.5s ease-in-out; + -ms-transition: all 0.5s ease-in-out; + transition: all 0.5s ease-in-out; +} +.comment-edit-submit-wrapper { + width: 90%; + margin: 5px 5px 10px 50px; + text-align: right; +} +.comment-edit-submit { + height: 22px; + background-color: #555753; + color: #eeeeec; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + border: 0; +} + + +/** + * item text style + **/ +.wall-item-body code { + display: block; + padding: 0 0 10px 5px; + border-color: #ccc; + border-style: solid; + border-width: 1px 1px 1px 10px; + background: #eee; + width: 95%; +} + + +/** + * profile + **/ +div[id$="text"] { + font-weight: bold; + border-bottom: 1px solid #ccc; +} +div[id$="wrapper"] { + height: 100%; + margin-bottom: 1em; +} +div[id$="wrapper"] br { + clear: left; +} +#advanced-profile-with { + margin-left: 200px; +} + + +/** + * photos + **/ +.photos { + height: auto; + overflow: auto; +} +#photo-top-links { + margin-bottom: 30px; +} +.photo-album-image-wrapper, +.photo-top-image-wrapper { + float: left; + -moz-box-shadow: 0 0 5px #888; + -webkit-box-shadow: 0 0 5px #888; + box-shadow: 0 0 5px #888; + background-color: #eee; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding-bottom: 30px; + position: relative; + margin: 0 10px 10px 0; +} + +#photo-photo { + max-width: 100%; +} +#photo-photo img { + max-width: 100%; +} +.photo-top-image-wrapper a:hover, +#photo-photo a:hover, +.photo-album-image-wrapper a:hover { + border-bottom: 0; +} +.photo-top-photo,.photo-album-photo { + -webkit-border-radius:5px 5px 0 0; + -moz-border-radius:5px 5px 0 0; + border-radius:5px 5px 0 0; +} +.photo-top-album-name { + position: absolute; + bottom: 0; + padding: 0 5px; +} +.caption { + position: absolute; + bottom: 0; + margin: 0 5px; +} +#photo-photo { + position: relative; + float:left; +} +#photo-photo-end { + clear: both; +} +#photo-prev-link, +#photo-next-link { + position:absolute; + width:30%; + height:100%; + background-color:rgba(255,255,255,0.5); + opacity:0; + -webkit-transition:all .2s ease-in-out; + -moz-transition:all .2s ease-in-out; + -o-transition:all .2s ease-in-out; + -ms-transition:all .2s ease-in-out; + transition:all .2s ease-in-out; + background-position:center center; + background-repeat:no-repeat; +} +#photo-prev-link { + left:0; + top:0; + background-image:url(prev.png); +} +#photo-next-link { + right:0; + top:0; + background-image:url(next.png); +} + +#photo-prev-link a,#photo-next-link a { + display:block; + width:100%; + height:100%; + overflow:hidden; + text-indent:-900000px; +} +#photo-prev-link:hover, +#photo-next-link:hover { + opacity:1; + -webkit-transition:all .2s ease-in-out; + -moz-transition:all .2s ease-in-out; + -o-transition:all .2s ease-in-out; + -ms-transition:all .2s ease-in-out; + transition:all .2s ease-in-out; +} +#photo-next-link .icon, +#photo-prev-link .icon { + display: none; +} +#photos-upload-spacer, +#photos-upload-new-wrapper, +#photos-upload-exist-wrapper { + margin-bottom: 1em; +} +#photos-upload-existing-album-text, +#photos-upload-newalbum-div { + background-color:#555753; + color:#eeeeec; + padding:1px; +} +#photos-upload-album-select, +#photos-upload-newalbum { + width: 99%; +} +#photos-upload-perms-menu { + text-align: right; +} +#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname { + float: left; + margin-bottom: 25px; +} +#photo-edit-link-wrap { + margin-bottom: 15px; +} +#photo-edit-caption { + width: 100%; +} +#photo-edit-newtag { + width: 100%; +} +#photo-like-div { + margin-bottom: 25px; +} +#photo-edit-caption-end, #photo-edit-tags-end, #photo-edit-albumname-end { + clear: both; +} +#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; +} + +/** + * message + */ +.prvmail-text { + width: 100%; +} +#prvmail-subject { + width: 100%; +} +#prvmail-submit-wrapper { + margin-top: 10px; +} +#prvmail-submit { + float:right; + margin-top: 0; +} +#prvmail-submit-wrapper > div { + margin-right:5px; + float:left; +} +.mail-list-outside-wrapper { + margin-top: 20px; +} +.mail-list-sender { + float: left; +} +.mail-list-detail { + margin-left: 90px; +} +.mail-list-sender-name { + display: inline; +} +.mail-list-date { + display: inline; + font-size: 0.8em; + padding-left: 10px; +} +.mail-list-subject { + font-size: 1.5em; +} +.mail-list-delete-wrapper { + float: right; +} +.mail-list-outside-wrapper-end { + clear: both; +} +.mail-conv-sender { + float: left; + margin: 0px 5px 5px 0px; +} +.mail-conv-sender-photo { + width: 32px; + height: 32px; +} +.mail-conv-sender-name { + float: left; +} +.mail-conv-date { + float: right; +} +.mail-conv-subject { + clear: right; + font-weight: bold; + font-size: 1.2em; +} +.mail-conv-body { + clear: both; +} +.mail-conv-delete-wrapper { + margin-top: 5px; +} + + +/** + * contacts + */ +.view-contact-wrapper, +.contact-entry-wrapper { + float: left; + margin-right: 5px; + margin-bottom: 40px; + width: 120px; + height: 120px; + padding: 3px; + position: relative; +} +.contact-direction-wrapper { + position: absolute; + top: 20px; +} +.contact-edit-links { + position: absolute; + top: 60px; +} +.contact-entry-photo-wrapper { + +} +.contact-entry-photo { + margin-left: 20px; +} +.contact-entry-name { + width: 120px; + font-weight: bold; + /*overflow: hidden;*/ +} +.contact-entry-photo { + position: relative; +} +.contact-entry-edit-links .icon { + border: 1px solid #babdb6; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background-color: #fff; +} +#contact-entry-url, [id^="contact-entry-url"] { + font-size: smaller; + /*overflow: scroll;*/ +} +#contact-entry-network, [id^="contact-entry-network"] { + font-size: smaller; + font-style: italic; +} +#contact-edit-banner-name { + font-size: 1.5em; +} +#contact-edit-photo-wrapper { + position: relative; + float: left; + padding: 20px; +} +#contact-edit-direction-icon { + position:absolute; + top:60px; + left:0; +} +#contact-edit-nav-wrapper { + margin-left: 0px; +} +#contact-edit-links { + margin-top: 23px; +} +#contact-edit-links ul { + list-style-type: none; +} +#contact-drop-links { + margin-left:5px; +} +#contact-edit-nav-wrapper .icon { + border: 1px solid #babdb6; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +#contact-edit-poll-wrapper { + margin-left: 0px; +} +#contact-edit-last-update-text { + margin-bottom: 15px; +} +#contact-edit-last-updated { + font-weight: bold; +} +#contact-edit-poll-text { + display: inline; +} +#contact-edit-info_tbl, #contact-edit-info_parent { + width: 100%; +} +.mceLayout { + width: 100%; +} +#contact-edit-end { + clear: both; + margin-bottom: 65px; +} + +.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: #fff; + background: #3465A4; + text-decoration: none; +} + + + +/** + * register, settings & profile forms + */ +#id_openid_url, +.openid { + background:url(login-bg.gif) no-repeat; + background-position:0 50%; + padding-left:18px; +} + +#settings-nickname-desc { + background-color: #eec; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding: 5px; + color: #111; +} +#settings-default-perms { + margin-bottom: 20px; +} +#register-form div, +#profile-edit-form div { + clear: both; +} + +#register-form label, +#profile-edit-form label { + width: 300px; + float: left; +} + +#register-form span, +#profile-edit-form span { + color:#555753; + display:block; + margin-bottom:20px; +} +.settings-submit-wrapper, +.profile-edit-submit-wrapper { + margin: 30px 0px; +} +.profile-edit-side-div { + margin: 5px 2px 0 0; +} +.profile-edit-side-link { + margin: 0 20px -18px 0; + float: right; +} +.profile-listing { + float: left; + margin: 20px 20px 0px 0px; +} +#profile-edit-links ul { + margin: 20px 0; + padding: 0; + list-style: none; +} +#register-sitename { + display: inline; + font-weight: bold; +} +#advanced-expire-popup { + background: #2e2f2e; + color: #eec; +} + +/** + * contacts selector + */ +.group-delete-wrapper { + margin: -31px 122px 0 0; + float: right; +} + +#group-edit-submit-wrapper { + margin: 0 0 10px 0; + display: inline; +} +#group-edit-desc { + margin: 10px 0px; +} +#group-members, +#prof-members { + height:200px; + overflow:auto; + border:1px solid #555753; + -webkit-border-radius:5px 5px 0 0; + -moz-border-radius:5px 5px 0 0; + border-radius:5px 5px 0 0; +} +#group-all-contacts, +#prof-all-contacts { + height:200px; + overflow:auto; + border:1px solid #555753; + -webkit-border-radius:0 0 5px 5px; + -moz-border-radius:0 0 5px 5px; + border-radius:0 0 5px 5px; +} +#group-members h3, +#group-all-contacts h3, +#prof-members h3, +#prof-all-contacts h3 { + color:#eeeeec; + background-color:#555753; + margin:0; + padding:5px; +} +#group-separator, +#prof-separator { + display: none; +} + +/** + * profile + */ +#cropimage-wrapper { + float:left; +} +#crop-image-form { + clear:both; +} + +/** + * events + **/ +.clear { clear: both; } +.eventcal { + float:left; + font-size:20px; +} +.vevent { + border:1px solid #ccc; +} +.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; +} +.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: monospace; +} +.today { + font-weight: bold; + 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, +#event-share-checkbox { + float:left; +} +#event-datetime-break { + margin-bottom: 10px; +} +#event-nofinish-break, +#event-adjust-break, +#event-share-break { + clear: both; +} +#event-desc-text, +#event-location-text { + margin-top: 10px; + margin-bottom: 5px; +} +#event-submit { + margin-top: 10px; +} +.body-tag { + margin: 10px 0; + opacity: 0.5; + filter:alpha(opacity=50); +} +.body-tag: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; +} +/* was tired of having no way of moving it around, so + * here's a little 'hook' to do so */ +.delete-checked { + position: absolute; + left: 35px; + margin-top: 20px; +} +#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; +} + + +/** + * directory + */ +.directory-item { + float: left; + margin: 50px 50px 0px 0px; +} + + +/** + * sidebar + */ +#group-sidebar { + margin-bottom: 10px; +} +.group-selected, .nets-selected { + padding: 3px; + border: 1px solid #f8f8f8; + background: #2e302e; + font-weight: bold; +} +.groupsideedit { + margin-right: 10px; +} +#sidebar-group-ul { + padding-left: 0; +} +#sidebar-group-list { + margin: 0 0 5px 0; +} +#sidebar-group-list ul { + list-style-type: none; + list-style-position: inside; +} +#sidebar-group-list li { + margin-top: 10px; +} +#sidebar-group-list .icon { + display: inline-block; + height: 12px; + width: 12px; +} +#sidebar-new-group { + margin: auto; + display: inline-block; + color: #efefef; + text-decoration: none; + text-align: center; +} +#peoplefind-sidebar form { + margin-bottom: 10px; +} +#sidebar-new-group:hover { + /*background: -webkit-gradient( linear, left top, left bottom, color-stop(0.05, #b20202), color-stop(1, #d60808) );*/ + /*background: -moz-linear-gradient( center top, #b20202 5%, #d60808 100% );*/ + /*background-color: #b20202;*/ +} + +#sidebar-new-group:active { + position: relative; + top: 1px; +} +#side-peoplefind-url { + background-color: #2e2f2e; + color: #eec; + border: 1px 999 solid; + margin-right: 3px; + width: 75%; +} +#side-peoplefind-url:hover, #side-peoplefind-url:focus { + background-color: #efefef; + color: #222; + border: 1px 333 solid; +} +.nets-ul { + list-style-type: none; + padding-left: 0px; +} +.nets-ul li { + margin: 10px 0 0; +} + +.nets-link { + margin-left: 0px; +} +.nets-all { + margin-left: 0px; +} +#netsearch-box { + margin-top: 20px; + width: 150px; +} +#netsearch-box #search-submit { + margin: 5px 0px 0px 0px; +} + +/** + * ADMIN + */ +#pending-update { + float:right; + color: #fff; + font-weight: bold; + background-color: #ff0000; + padding: 0 .3em; +} +.admin.linklist { + border: 0; padding: 0; +} +.admin.link { + list-style-position: inside; +} +#adminpage dl { + clear:left; + margin-bottom: 2px; + padding-bottom: 2px; + border-bottom: 1px solid #000; +} +#adminpage dt { + width: 200px; + float: left; + font-weight: bold; +} +#adminpage dd { + margin-left: 200px; +} +#adminpage h3 { + border-bottom:1px solid #ccc; +} + +#adminpage .submit { + clear:left; +} + +#adminpage #pluginslist { + margin: 0; + padding: 0; +} +#adminpage .plugin { + list-style: none; + display: block; + border: 1px solid #888; + padding: 1em; + margin-bottom: 5px; + clear: left; +} +#adminpage .toggleplugin { + float:left; + margin-right: 1em; +} + +#adminpage table { + width: 100%; + border-bottom: 1px solid #000; + margin: 5px 0; +} +#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; +} + +/** + * Form fields + */ +.field { + /*margin-bottom: 10px;*/ + /*padding-bottom: 10px;*/ + overflow: auto; + width: 100%; +} +.field label, label { + float: left; + width: 275px; + display: block; + font-size: 1.077em; + /*font-weight: bold;*/ + margin: 0 10px 0.5em 0; + border: 1px #2e2f2e solid; + padding: 5px; + background: #eec; + vertical-align: middle; + color: #111; +} +.field input, input[type="text"] { + width: 250px; + height: 25px; + border: 1px #999 solid; +} +.field textarea { + width: 80%; + height: 100px; +} +.field_help { + display: block; + margin-left: 297px; + color: #aaa; +} +.field .onoff { + float: left; + width: 80px; +} +.field .onoff a { + display: block; + border: 1px solid #666; + padding: 3px 6px 4px 10px; + height: 16px; + text-decoration: none; +} +.field .onoff .on { + background: url("../../../images/onoff.jpg") no-repeat 42px 1px #999; + color: #111; + text-align: left; +} +.field .onoff .off { + background: url("../../../images/onoff.jpg") no-repeat 2px 1px #ccc; + color: #333; + text-align: right; +} +.hidden { + display:none !important; +} +.field.radio .field_help { + margin-left: 297px; +} + + +/* + * 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; +} +#panel { + z-index: 100; +} +.grey { + color: grey; +} +.orange { + color: orange; +} +.red { + color: red; +} +.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: 20px; + height: 20px; + background: url(icons.png) no-repeat; + border: 0; + text-decoration: none; + border-radius: 5px; +} +.icon:hover { + border: 0; + text-decoration: none; +} +.icon.drop, +.icon.drophide, .icon.delete { + float: left; +} +.icon.s22.delete { + display: block; + background-position: -110px 0; +} +.icon.s22.text { + padding: 10px 0px 0px 25px; + width: 200px; +} +.icon.text { + text-indent: 0px; +} +.icon.s16 { + min-width: 16px; + height: 16px; +} +.s16 .add { + background: url("../../../images/icons/16/add.png") no-repeat; +} +.add { + margin: 0px 5px; +} +.article { + background-position: -50px 0; +} +.audio { + background-position: -70px 0; +} +.block { + background-position: -90px 0px; +} +.drop, .delete { + background-position: -110px 0; +} +.drophide { + background-position: -130px 0; +} +.edit { + background-position: -150px 0; +} +.camera { + background-position: -170px 0; +} +.dislike { + background-position: -190px 0; +} +.like { + background-position: -211px 0; +} +.link { + background-position: -230px 0; +} +.globe, .location { + background-position: -50px -20px; +} +.noglobe, .nolocation { + background-position: -70px -20px; +} +.no { + background-position: -90px -20px; +} +.pause { + background-position: -110px -20px; +} +.play { + background-position: -130px -20px; +} +.pencil { + background-position: -151px -18px; +} +.small-pencil { + background-position: -170px -20px; +} +.recycle { + background-position: -190px -20px; +} +.remote-link { + background-position: -210px -20px; +} +.share { + background-position: -230px -20px; +} +.tools { + background-position: -50px -40px; +} +.lock { + background-position: -70px -40px; +} +.unlock { + background-position: -90px -40px; +} +.video { + background-position: -110px -40px; +} +.attach { + background-position: -190px -40px; +} +.language { + background-position: -210px -40px; +} +.starred { + background-position: -130px -60px; +} +.unstarred { + background-position: -150px -60px; +} +.tagged { + background-position: -170px -60px; +} +.on { + background-position: -50px -60px; +} +.off { + background-position: -70px -60px; +} +.prev { + background-position: -90px -60px; +} +.next { + background-position: -110px -60px; +} +.icon.dim { + opacity: 0.3; + filter: alpha(opacity=30); +} +#pause { + position: fixed; + bottom: 5px; + right: 5px; +} +.border, .border:hover { + border: 1px solid #babdb6; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.attachtype { + display: block; + width: 20px; + height: 23px; + background-image: url(../../../images/content-types.png); +} +.type-video { + background-position: 0px 0px; +} +.type-image { + background-position: -20px 0; +} +.type-audio { + background-position: -40px 0; +} +.type-text { + background-position: -60px 0px; +} +.type-unkn { + background-position: -80px 0; +} + + +/** + * footer + */ +.cc-license { + margin-top: 100px; + font-size: 0.7em; +} +footer { + display: block; + margin: 50px 20%; + clear: both; +} +#profile-jot-text { + height: 20px; + color: #666; + border: 1px solid #ccc; + border-radius: 5px; + width: 99.5%; +} + + +/** acl **/ +#photo-edit-perms-select, +#photos-upload-permissions-wrapper, +#profile-jot-acl-wrapper { + display: block !important; +} +#acl-wrapper { + width: 690px; + float: left; +} +#acl-search { + float: right; + background: #fff url("../../../images/search_18.png") no-repeat right center; + padding-right: 20px; +} +#acl-showall { + float:left; + display:block; + width:auto; + height:18px; + background-color:#CCC; + background-image:url("../../../images/show_all_off.png"); + background-position:7px 7px; + background-repeat:no-repeat; + padding:7px 10px 7px 30px; + -webkit-border-radius:5px; + -moz-border-radius:5px; + border-radius:5px; + color:#999; +} +#acl-showall.selected { + color:#000; + background-color:#F90; + background-image:url(../../../images/show_all_on.png); +} +#acl-list { + height:210px; + border:1px solid #ccc; + clear:both; + margin-top:30px; + overflow:auto; +} +#acl-list-content { +} +.acl-list-item { + display:block; + width:150px; + height:30px; + border:1px solid #ccc; + 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: 0; + padding: 2px 0 1px; +} +.acl-list-item a { + font-size:8px; + display:block; + width:40px; + height:10px; + float:left; + color:#999; + background-color:#CCC; + 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:#000; +} +.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:#000; + background-color:#9ade00; + background-image:url(../../../images/show_on.png); +} +.acl-button-hide.selected { + color:#000; + 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 **/ + + +/* autocomplete popup */ +.acpopup { + max-height: 150px; + background-color: #555753; + color: #fff; + overflow: auto; + z-index: 100000; + border: 1px solid #cccccc; +} +.acpopupitem { + background-color: #555753; + padding: 4px; + clear: left; +} +.acpopupitem img { + float: left; + margin-right: 4px; +} +.acpopupitem.selected { + color: #2e302e; + background-color: #eeeeec; +} +.qcomment-wrapper { + padding: 0px; + margin: 2px; + list-style-type: none; +} +.qcomment, .qcomment:hover { + display: inline; + padding: 5px; + margin: 5px; +} +.qcomment { + opacity: 0.5; + filter:alpha(opacity=50); +} +.qcomment:hover { + opacity: 1.0; + filter:alpha(opacity=100); +} +#network-star-link { + margin-top: 10px; +} +.network-star { + float: left; + margin-right: 5px; +} +.network-star.icon.starred { + display: inline-block; +} + diff --git a/view/theme/dispy-dark/tag.png b/view/theme/dispy-dark/tag.png new file mode 100644 index 000000000..9b5a7223e Binary files /dev/null and b/view/theme/dispy-dark/tag.png differ diff --git a/view/theme/dispy-dark/theme.php b/view/theme/dispy-dark/theme.php new file mode 100644 index 000000000..c72884f1a --- /dev/null +++ b/view/theme/dispy-dark/theme.php @@ -0,0 +1,74 @@ +theme_info = array(); + +$a->page['htmlhead'] .= <<< EOT + +EOT; diff --git a/view/theme/dispy-dark/wall_item.tpl b/view/theme/dispy-dark/wall_item.tpl new file mode 100644 index 000000000..b013cfeef --- /dev/null +++ b/view/theme/dispy-dark/wall_item.tpl @@ -0,0 +1,77 @@ +
    +
    +
    +
    + + $item.name + + menu +
    +
      + $item.item_photo_menu +
    +
    +
    +
    +
    {{ if $item.location }}$item.location {{ endif }}
    +
    +
    + {{ if $item.lock }}
    $item.lock
    + {{ else }}
    {{ endif }} +
    +
    + {{ if $item.star }} + + + {{ endif }} + {{ if $item.vote }} + + {{ endif }} + {{ if $item.plink }} + + {{ endif }} + {{ if $item.edpost }} + + {{ endif }} + +
    + {{ if $item.drop.dropping }}{{ endif }} +
    + {{ if $item.drop.dropping }}{{ endif }} +
    + +
    +
    +
    $item.title
    +
    +
    $item.body +
    + {{ for $item.tags as $tag }} + $tag + {{ endfor }} +
    +
    +
    +
    + $item.name +
    $item.ago
    + +
    +
    +
    + +
    $item.dislike
    +
    + $item.comment +
    +
    + +
    + diff --git a/view/theme/dispy-dark/wallwall_item.tpl b/view/theme/dispy-dark/wallwall_item.tpl new file mode 100644 index 000000000..86453fad2 --- /dev/null +++ b/view/theme/dispy-dark/wallwall_item.tpl @@ -0,0 +1,81 @@ +
    +
    +
    +
    + + $item.owner_name +
    +
    $item.wall
    +
    + + $item.name + menu +
    +
      + $item.item_photo_menu +
    +
    + +
    +
    +
    {{ if $item.location }}$item.location {{ endif }}
    +
    +
    + {{ if $item.lock }}
    $item.lock
    + {{ else }}
    {{ endif }} +
    +
    + {{ if $item.star }} + + + {{ endif }} + {{ if $item.vote }} + + {{ endif }} + {{ if $item.plink }} + + {{ endif }} + {{ if $item.edpost }} + + {{ endif }} + +
    + {{ if $item.drop.dropping }}{{ endif }} +
    + {{ if $item.drop.dropping }}{{ endif }} +
    + +
    +
    +
    $item.title
    +
    +
    $item.body +
    + {{ for $item.tags as $tag }} + $tag + {{ endfor }} +
    +
    +
    +
    + $item.name +
    $item.ago
    +
    +
    +
    + +
    $item.dislike
    +
    + $item.comment +
    +
    + +
    + diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 0977d5fcb..1bee0396c 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -57,6 +57,7 @@ select { } option { padding: 3px; + vertical-align: middle; } /* remember to define focus styles! */ :focus { @@ -75,17 +76,6 @@ mark { font-style: italic; font-weight: bold; } -ins { - background: #ff9; - color: #000; - text-decoration: none; -} -mark { - background: #ff0; - color: #000; - font-style: italic; - font-weight: bold; -} /* Redeclare monospace font family: h5bp.com/j */ pre, code, kbd, samp, .wall-item-body code { font-family: monospace, monospace; @@ -1302,7 +1292,7 @@ section { **/ .wall-item-body code { display: block; - padding-left: 10px; + padding: 0 0 10px 5px; border-color: #ccc; border-style: solid; border-width: 1px 1px 1px 10px; @@ -1768,9 +1758,10 @@ div[id$="wrapper"] br { * contacts selector */ .group-delete-wrapper { - margin: -28px 150px 0 0; + margin: -31px 122px 0 0; float: right; } + #group-edit-submit-wrapper { margin: 0 0 10px 0; display: inline; -- cgit v1.2.3 From 3c168503834651b56b9b5de61621e8fbe958c298 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 11 Mar 2012 12:00:32 +0100 Subject: OpenID: display error msg if ID URL used to register an account does not exist --- include/auth.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/include/auth.php b/include/auth.php index fc52684e6..6a3e31cb7 100755 --- a/include/auth.php +++ b/include/auth.php @@ -117,10 +117,15 @@ else { // NOTREACHED } // new account - $_SESSION['register'] = 1; - $openid->required = array('namePerson/friendly', 'contact/email', 'namePerson'); - $openid->optional = array('namePerson/first','media/image/aspect11','media/image/default'); - goaway($openid->authUrl()); + try { + $_SESSION['register'] = 1; + $openid->required = array('namePerson/friendly', 'contact/email', 'namePerson'); + $openid->optional = array('namePerson/first','media/image/aspect11','media/image/default'); + goaway($openid->authUrl()); + } catch (Exception $e) { + // if the OpenID is misspelled we land here + notice( t('We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID.

    The error message was: ').$e->getMessage() ); + } // NOTREACHED } } -- cgit v1.2.3 From 6cbd765e1ff77a1efb01b1f096a875c881c43905 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 11 Mar 2012 12:03:47 +0100 Subject: Revert "OpenID: display error msg if ID URL used to register an account does not exist" This reverts commit 3c168503834651b56b9b5de61621e8fbe958c298. --- include/auth.php | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/include/auth.php b/include/auth.php index 6a3e31cb7..fc52684e6 100755 --- a/include/auth.php +++ b/include/auth.php @@ -117,15 +117,10 @@ else { // NOTREACHED } // new account - try { - $_SESSION['register'] = 1; - $openid->required = array('namePerson/friendly', 'contact/email', 'namePerson'); - $openid->optional = array('namePerson/first','media/image/aspect11','media/image/default'); - goaway($openid->authUrl()); - } catch (Exception $e) { - // if the OpenID is misspelled we land here - notice( t('We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID.

    The error message was: ').$e->getMessage() ); - } + $_SESSION['register'] = 1; + $openid->required = array('namePerson/friendly', 'contact/email', 'namePerson'); + $openid->optional = array('namePerson/first','media/image/aspect11','media/image/default'); + goaway($openid->authUrl()); // NOTREACHED } } -- cgit v1.2.3 From 57d83703766a0e2071ef4b4ecdb6032091bf23cb Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 11 Mar 2012 09:12:31 -0400 Subject: fix some stuff right away Signed-off-by: Simon L'nu --- view/theme/dispy-dark/style.css | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index d5e6826a8..1e28a8740 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -928,11 +928,16 @@ aside #viewcontacts { display: none; } #jot-preview-content { - background-color: #ffffe0; - border: 1px #aaaa00 solid; + background-color: #3e3f3e; + color: #eec; + border: 1px #eec solid; border-radius: 3px; padding: 3px 3px 6px 10px; } +#jot-preview-content .wall-item-outside-wrapper { + border: 0; + border-radius: 0px; +} /** -- cgit v1.2.3 From eb3b211461906c405c7d016401cb3cd6d7d03b83 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 14:22:19 +0100 Subject: New plugin that shows community pages in the sidebar --- addon/pages/README | 3 +++ addon/pages/pages.php | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100755 addon/pages/README create mode 100755 addon/pages/pages.php diff --git a/addon/pages/README b/addon/pages/README new file mode 100755 index 000000000..6ec314b70 --- /dev/null +++ b/addon/pages/README @@ -0,0 +1,3 @@ +Pages + +Shows lists of community pages diff --git a/addon/pages/pages.php b/addon/pages/pages.php new file mode 100755 index 000000000..13e6c4b59 --- /dev/null +++ b/addon/pages/pages.php @@ -0,0 +1,39 @@ + + * + */ + +function pages_install() { + register_hook('page_end', 'addon/pages/pages.php', 'pages_page_end'); +} + +function pages_uninstall() { + unregister_hook('page_end', 'addon/pages/pages.php', 'pages_page_end'); +} + +function pages_page_end($a,&$b) { + if (($a->module != "network") OR ($a->user['uid'] == 0)) + return; + + $pages = '

    '.t("Community").'

      '; + $contacts = q("SELECT `contact`.`id`, `contact`.`url`, `contact`.`Name` FROM `contact`, `user` + WHERE `network`= 'dfrn' AND `duplex` + AND `contact`.`nick`=`user`.`nickname` + AND `user`.`page-flags`= %d + AND `contact`.`uid` = %d", + intval(PAGE_COMMUNITY), + intval($a->user['uid'])); + foreach($contacts as $contact) { + $pages .= '
    • '.$contact["Name"]."
    • "; + } + $pages .= "
    "; + if (sizeof($contacts) > 0) + $a->page['aside'] = $pages.$a->page['aside']; + +} + +?> -- cgit v1.2.3 From 62fe48f064127e39e705a1970e5715b7a0631f9f Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 11 Mar 2012 10:14:31 -0400 Subject: fix more stuff Signed-off-by: Simon L'nu --- view/theme/dispy-dark/style.css | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index 1e28a8740..5a07218bf 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -80,7 +80,7 @@ mark { /* Redeclare monospace font family: h5bp.com/j */ pre, code, kbd, samp, .wall-item-body code { font-family: monospace, monospace; - _font-family: 'courier new', monospace; + _font-family: monospace; font-size: 1em; } /* Improve readability of pre-formatted text in all browsers */ @@ -667,8 +667,10 @@ aside #viewcontacts { text-align: right; } .aprofile dt { - box-shadow: 1px 1px 5px 0; - color: #666666; + background: #eec; + color: #2e2f2e; + font-weight: bold; + box-shadow: 1px 1px 5px 0 #000; margin: 15px 0 5px; padding-left: 5px; } @@ -1289,6 +1291,7 @@ section { border-style: solid; border-width: 1px 1px 1px 10px; background: #eee; + color: #2e2f2e; width: 95%; } @@ -1658,8 +1661,9 @@ div[id$="wrapper"] br { } .contact-photo-menu { width: auto; - border: 2px solid #444444; - background: #FFFFFF; + border: 2px solid #444; + background: #2e2f2e; + color: #eec; position: absolute; left: 0px; top: 90px; display: none; -- cgit v1.2.3 From fa0cb8514da3935d7780a70a38cf33b3096a914c Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 11 Mar 2012 10:24:49 -0400 Subject: add some '@media handheld' types for dispys Signed-off-by: Simon L'nu --- view/theme/dispy-dark/style.css | 8 +++++++- view/theme/dispy/style.css | 7 +++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index 5a07218bf..8e59b151d 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -42,7 +42,7 @@ html { } body { margin: 0; - font-size: 16px; + font-size: 12pt; line-height: 1.1em; } body, button, input, select, textarea { @@ -2638,3 +2638,9 @@ footer { display: inline-block; } + +@media handheld { + body { + font-size: 15pt; + } +} diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 1bee0396c..8081bfc28 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -2643,3 +2643,10 @@ footer { display: inline-block; } + +@media handheld { + body { + font-size: 15pt; + } +} + -- cgit v1.2.3 -- cgit v1.2.3 From 258a8c0871083791eb5ec1d5f13b03e67248392d Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 11 Mar 2012 10:29:12 -0400 Subject: screwed up on the font-size for screen last push Signed-off-by: Simon L'nu --- view/theme/dispy-dark/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index 8e59b151d..805749b1c 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -42,7 +42,7 @@ html { } body { margin: 0; - font-size: 12pt; + font-size: 16px; line-height: 1.1em; } body, button, input, select, textarea { -- cgit v1.2.3 From b879a1ddf1575a3bd355edcee634be4a8d179c25 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 17:45:12 +0100 Subject: Pages: Show every community page - even from foreign servers (with caching) --- addon/pages/pages.php | 70 ++++++++++++++++++++++++++++++++++++-------- view/theme/diabook/style.css | 3 ++ 2 files changed, 61 insertions(+), 12 deletions(-) diff --git a/addon/pages/pages.php b/addon/pages/pages.php index 13e6c4b59..6b242be31 100755 --- a/addon/pages/pages.php +++ b/addon/pages/pages.php @@ -15,25 +15,71 @@ function pages_uninstall() { unregister_hook('page_end', 'addon/pages/pages.php', 'pages_page_end'); } +function pages_iscommunity($url, &$pagelist) { + // check every week for the status - should be enough + if ($pagelist[$url]["checked"]') != 0); + + $pagelist[$url] = array("community" => $iscommunity, "checked" => time()); + } else // Fetch from cache + $iscommunity = $pagelist[$url]["community"]; + return($iscommunity); +} + +function pages_getpages($uid) { + + // Fetch cached pagelist from configuration + $pagelist = get_pconfig($uid,'pages','pagelist'); + + if (sizeof($pagelist) == 0) + $pagelist = array(); + + $contacts = q("SELECT `id`, `url`, `Name` FROM `contact` + WHERE `network`= 'dfrn' AND `uid` = %d", + intval($uid)); + + $pages = array(); + + // Look if the profile is a community page + foreach($contacts as $contact) { + if (pages_iscommunity($contact["url"], $pagelist)) + $pages[] = array("url"=>$contact["url"], "Name"=>$contact["Name"]); + } + + // Write back cached pagelist + set_pconfig($uid,'pages','pagelist', $pagelist); + return($pages); +} + function pages_page_end($a,&$b) { + // Only move on if if it's the "network" module and there is a logged on user if (($a->module != "network") OR ($a->user['uid'] == 0)) return; - $pages = '

    '.t("Community").'

      '; - $contacts = q("SELECT `contact`.`id`, `contact`.`url`, `contact`.`Name` FROM `contact`, `user` - WHERE `network`= 'dfrn' AND `duplex` - AND `contact`.`nick`=`user`.`nickname` - AND `user`.`page-flags`= %d - AND `contact`.`uid` = %d", - intval(PAGE_COMMUNITY), - intval($a->user['uid'])); + $pages = '
      +
      +

      '.t("Community").'

      +
    "; if (sizeof($contacts) > 0) $a->page['aside'] = $pages.$a->page['aside']; - } - ?> diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 0504ce96a..ce3307645 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -484,6 +484,9 @@ code { #sidebar-group-list .tool:hover { background: #EEE; } +#sidebar-pages-list .tool:hover { + background: #EEE; +} .tool .label { float: left; } -- cgit v1.2.3 From 9f76d96d46356b18325ca49c383f94a1958fefd3 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 19:11:25 +0100 Subject: Cache: item cache now has an autodelete of old files. The pages plugin now sets a link via redirection. So posting works. --- addon/pages/pages.php | 5 +++-- include/poller.php | 13 +++++++++++++ include/text.php | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/addon/pages/pages.php b/addon/pages/pages.php index 6b242be31..9e90cc24d 100755 --- a/addon/pages/pages.php +++ b/addon/pages/pages.php @@ -55,7 +55,7 @@ function pages_getpages($uid) { // Look if the profile is a community page foreach($contacts as $contact) { if (pages_iscommunity($contact["url"], $pagelist)) - $pages[] = array("url"=>$contact["url"], "Name"=>$contact["Name"]); + $pages[] = array("url"=>$contact["url"], "Name"=>$contact["Name"], "id"=>$contact["id"]); } // Write back cached pagelist @@ -76,7 +76,8 @@ function pages_page_end($a,&$b) { $contacts = pages_getpages($a->user['uid']); foreach($contacts as $contact) { - $pages .= '
  • '.$contact["Name"]."
  • "; + $pages .= '
  • '. + $contact["Name"]."
  • "; } $pages .= "
    "; if (sizeof($contacts) > 0) diff --git a/include/poller.php b/include/poller.php index f165ad590..65fafda4c 100755 --- a/include/poller.php +++ b/include/poller.php @@ -69,6 +69,19 @@ function poller_run($argv, $argc){ // clear old cache Cache::clear(); + // clear item cache files if they are older than one day + $cache = get_config('system','itemcache'); + if (($cache != '') and is_dir($cache)) { + if ($dh = opendir($cache)) { + while (($file = readdir($dh)) !== false) { + $fullpath = $cache."/".$file; + if ((filetype($fullpath) == "file") and filectime($fullpath) < (time() - 1800)) + unlink($fullpath); + } + closedir($dh); + } + } + $manual_id = 0; $generation = 0; $hub_update = false; diff --git a/include/text.php b/include/text.php index 5bf815105..08c5a5424 100644 --- a/include/text.php +++ b/include/text.php @@ -879,7 +879,7 @@ function prepare_body($item,$attach = false) { $cache = get_config('system','itemcache'); if (($cache != '')) { - $cachefile = $cache."/".$item["guid"]."-".strtotime($item["edited"])."-".$attach."-".hash("crc32", $item['body']); + $cachefile = $cache."/".$item["guid"]."-".strtotime($item["edited"])."-".hash("crc32", $item['body']); if (file_exists($cachefile)) $s = file_get_contents($cachefile); -- cgit v1.2.3 From 739309abd0cb103fe5a4d5081a7252b5698ab787 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 19:41:29 +0100 Subject: Corrected some git problems --- addon/pages/README | 3 -- addon/pages/pages.php | 86 --------------------------------------------------- 2 files changed, 89 deletions(-) delete mode 100755 addon/pages/README delete mode 100755 addon/pages/pages.php diff --git a/addon/pages/README b/addon/pages/README deleted file mode 100755 index 6ec314b70..000000000 --- a/addon/pages/README +++ /dev/null @@ -1,3 +0,0 @@ -Pages - -Shows lists of community pages diff --git a/addon/pages/pages.php b/addon/pages/pages.php deleted file mode 100755 index 9e90cc24d..000000000 --- a/addon/pages/pages.php +++ /dev/null @@ -1,86 +0,0 @@ - - * - */ - -function pages_install() { - register_hook('page_end', 'addon/pages/pages.php', 'pages_page_end'); -} - -function pages_uninstall() { - unregister_hook('page_end', 'addon/pages/pages.php', 'pages_page_end'); -} - -function pages_iscommunity($url, &$pagelist) { - // check every week for the status - should be enough - if ($pagelist[$url]["checked"]') != 0); - - $pagelist[$url] = array("community" => $iscommunity, "checked" => time()); - } else // Fetch from cache - $iscommunity = $pagelist[$url]["community"]; - return($iscommunity); -} - -function pages_getpages($uid) { - - // Fetch cached pagelist from configuration - $pagelist = get_pconfig($uid,'pages','pagelist'); - - if (sizeof($pagelist) == 0) - $pagelist = array(); - - $contacts = q("SELECT `id`, `url`, `Name` FROM `contact` - WHERE `network`= 'dfrn' AND `uid` = %d", - intval($uid)); - - $pages = array(); - - // Look if the profile is a community page - foreach($contacts as $contact) { - if (pages_iscommunity($contact["url"], $pagelist)) - $pages[] = array("url"=>$contact["url"], "Name"=>$contact["Name"], "id"=>$contact["id"]); - } - - // Write back cached pagelist - set_pconfig($uid,'pages','pagelist', $pagelist); - return($pages); -} - -function pages_page_end($a,&$b) { - // Only move on if if it's the "network" module and there is a logged on user - if (($a->module != "network") OR ($a->user['uid'] == 0)) - return; - - $pages = '
    -
    -

    '.t("Community").'

    -
    "; - if (sizeof($contacts) > 0) - $a->page['aside'] = $pages.$a->page['aside']; -} -?> -- cgit v1.2.3 From 9ca5de8c281fa0a7b2323f33765bca25b64bc29d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 19:45:28 +0100 Subject: Item cache now is one day. --- include/poller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/poller.php b/include/poller.php index 65fafda4c..3bc98e36f 100755 --- a/include/poller.php +++ b/include/poller.php @@ -75,7 +75,7 @@ function poller_run($argv, $argc){ if ($dh = opendir($cache)) { while (($file = readdir($dh)) !== false) { $fullpath = $cache."/".$file; - if ((filetype($fullpath) == "file") and filectime($fullpath) < (time() - 1800)) + if ((filetype($fullpath) == "file") and filectime($fullpath) < (time() - 86400)) unlink($fullpath); } closedir($dh); -- cgit v1.2.3 From ebdf4842184cc8d0576abe99b29650c6b6512167 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 19:50:51 +0100 Subject: Added config options for the item cache and the ostatus priority --- htconfig.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/htconfig.php b/htconfig.php index f52aed2b1..9d9c8a2c7 100755 --- a/htconfig.php +++ b/htconfig.php @@ -79,3 +79,9 @@ $a->config['system']['theme'] = 'duepuntozero'; // By default allow pseudonyms $a->config['system']['no_regfullname'] = true; + +// If set to true the priority settings of ostatus contacts are used +$a->config['system']['ostatus_use_priority'] = false; + +// If enabled all items are cached in the given directory +$a->config['system']['itemcache'] = ""; -- cgit v1.2.3 From 7235d5466a4f54cd80d1b661b142ec99230afbf2 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 20:24:55 +0100 Subject: Removed changes --- view/theme/diabook/wall_item.tpl | 14 +++++--------- view/theme/diabook/wallwall_item.tpl | 16 ++++++---------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index 6cbab0a71..321bbbe9e 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -13,7 +13,8 @@ $item.name - menu + menu @@ -21,7 +22,8 @@
    - $item.name + $item.name - {{ if $item.plink }}$item.ago{{ else }} $item.ago {{ endif }} {{ if $item.lock }} - $item.lock {{ endif }} @@ -46,10 +48,7 @@
    -<<<<<<< HEAD:view/theme/diabook/wall_item.tpl -======= ->>>>>>> upstream/master:view/theme/diabook/wall_item.tpl
    @@ -85,11 +84,7 @@ {{ endif }}
    -<<<<<<< HEAD:view/theme/diabook/wall_item.tpl -
    $item.location 
    -=======
    $item.location 
    ->>>>>>> upstream/master:view/theme/diabook/wall_item.tpl
    @@ -102,3 +97,4 @@
    $item.comment
    + diff --git a/view/theme/diabook/wallwall_item.tpl b/view/theme/diabook/wallwall_item.tpl index 4f0a2e25f..05ed4cc82 100644 --- a/view/theme/diabook/wallwall_item.tpl +++ b/view/theme/diabook/wallwall_item.tpl @@ -18,7 +18,8 @@ $item.name - menu + menu @@ -26,8 +27,10 @@
    - $item.name - $item.to $item.owner_name + $item.name + $item.to $item.owner_name $item.vwall -   {{ if $item.plink }}$item.ago{{ else }} $item.ago {{ endif }} {{ if $item.lock }} - $item.lock {{ endif }} @@ -52,10 +55,7 @@
    -<<<<<<< HEAD:view/theme/diabook/wallwall_item.tpl -======= ->>>>>>> upstream/master:view/theme/diabook/wallwall_item.tpl
    @@ -92,10 +92,6 @@ {{ endif }}
    $item.location 
    -<<<<<<< HEAD:view/theme/diabook/wallwall_item.tpl - -======= ->>>>>>> upstream/master:view/theme/diabook/wallwall_item.tpl
    -- cgit v1.2.3 -- cgit v1.2.3 From 905ba5ba1d5d8e2d0caa5c0208357672ee527b7d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 22:39:40 +0100 Subject: Missing field in database.sql --- database.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/database.sql b/database.sql index 35c257f02..2add8bd85 100755 --- a/database.sql +++ b/database.sql @@ -636,6 +636,7 @@ CREATE TABLE IF NOT EXISTS `mailacct` ( `mailbox` CHAR( 255 ) NOT NULL, `user` CHAR( 255 ) NOT NULL , `pass` TEXT NOT NULL , +`reply_to` CHAR( 255 ) NOT NULL , `action` INT NOT NULL , `movetofolder` CHAR(255) NOT NULL , `pubmail` TINYINT(1) NOT NULL DEFAULT '0', -- cgit v1.2.3 From 2ed6b3531eb1a9b778dfd87614fd824480a135e2 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 23:29:59 +0100 Subject: Removing test exports --- include/delivery.php | 4 ++-- include/notifier.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/delivery.php b/include/delivery.php index c1ff07bd5..41869988d 100755 --- a/include/delivery.php +++ b/include/delivery.php @@ -435,8 +435,8 @@ function delivery_run($argv, $argc){ $headers .= 'Reply-to: ' . $reply_to . "\n"; // for testing purposes: Collect exported mails - $file = tempnam("/tmp/friendica/", "mail-out-"); - file_put_contents($file, json_encode($it)); + // $file = tempnam("/tmp/friendica/", "mail-out-"); + // file_put_contents($file, json_encode($it)); $headers .= 'Message-Id: <' . iri2msgid($it['uri']). '>' . "\n"; diff --git a/include/notifier.php b/include/notifier.php index 5b23406fc..c0a98c8eb 100755 --- a/include/notifier.php +++ b/include/notifier.php @@ -648,8 +648,8 @@ function notifier_run($argv, $argc){ $headers .= 'Reply-to: ' . $reply_to . "\n"; // for testing purposes: Collect exported mails - $file = tempnam("/tmp/friendica/", "mail-out2-"); - file_put_contents($file, json_encode($it)); + //$file = tempnam("/tmp/friendica/", "mail-out2-"); + //file_put_contents($file, json_encode($it)); $headers .= 'Message-Id: <' . iri2msgid($it['uri']) . '>' . "\n"; -- cgit v1.2.3 From d9bee73edfc4c73a25d3b674f6d5caf09f1a8e66 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 11 Mar 2012 15:50:23 -0700 Subject: community meta tag renamed from "ika" --- boot.php | 2 +- mod/hcard.php | 2 +- mod/profile.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/boot.php b/boot.php index 1414adb06..b30f02c9f 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1277' ); +define ( 'FRIENDICA_VERSION', '2.3.1278' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DB_UPDATE_VERSION', 1131 ); diff --git a/mod/hcard.php b/mod/hcard.php index 19e649dcb..6d2d9e2eb 100755 --- a/mod/hcard.php +++ b/mod/hcard.php @@ -21,7 +21,7 @@ function hcard_init(&$a) { profile_load($a,$which,$profile); if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) { - $a->page['htmlhead'] .= ''; + $a->page['htmlhead'] .= ''; } if(x($a->profile,'openidserver')) $a->page['htmlhead'] .= '' . "\r\n"; diff --git a/mod/profile.php b/mod/profile.php index 1a701f407..428679ffc 100755 --- a/mod/profile.php +++ b/mod/profile.php @@ -27,7 +27,7 @@ function profile_init(&$a) { profile_load($a,$which,$profile); if((x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY)) { - $a->page['htmlhead'] .= ''; + $a->page['htmlhead'] .= ''; } if(x($a->profile,'openidserver')) $a->page['htmlhead'] .= '' . "\r\n"; -- cgit v1.2.3 From 6e7a190e9197bcf4d00accc5d85ccca4a080bec8 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 12 Mar 2012 00:22:12 +0100 Subject: Mail: Subject are now with working "Re:" --- include/delivery.php | 28 +++++++--------------------- include/notifier.php | 29 +++++++---------------------- 2 files changed, 14 insertions(+), 43 deletions(-) diff --git a/include/delivery.php b/include/delivery.php index 41869988d..44a482ca2 100755 --- a/include/delivery.php +++ b/include/delivery.php @@ -446,30 +446,16 @@ function delivery_run($argv, $argc){ if($it['uri'] !== $it['parent-uri']) { $headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n"; - if(! strlen($it['title'])) { + if(!strlen($it['title'])) { $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1", - dbesc($it['parent-uri']) - ); - if(count($r)) { - $subtitle = $r[0]['title']; - if($subtitle) { - if(strncasecmp($subtitle,'RE:',3)) - $subject = $subtitle; - else - $subject = 'Re: ' . $subtitle; - } - } + dbesc($it['parent-uri'])); + + if(count($r) AND ($r[0]['title'] != '')) + $subject = $r[0]['title']; } + if(strncasecmp($subject,'RE:',3)) + $subject = 'Re: '.$subject; } - /*$headers .= 'MIME-Version: 1.0' . "\n"; - //$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n"; - $headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n"; - $headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n"; - $html = prepare_body($it); - //$message = '' . $html . ''; - $message = html2plain($html); - logger('notifier: email delivery to ' . $addr); - mail($addr, $subject, $message, $headers);*/ email_send($addr, $subject, $headers, $it); } break; diff --git a/include/notifier.php b/include/notifier.php index c0a98c8eb..07edc7046 100755 --- a/include/notifier.php +++ b/include/notifier.php @@ -655,31 +655,16 @@ function notifier_run($argv, $argc){ if($it['uri'] !== $it['parent-uri']) { $headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n"; - if(! strlen($it['title'])) { + if(!strlen($it['title'])) { $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1", - dbesc($it['parent-uri']) - ); - if(count($r)) { - $subtitle = $r[0]['title']; - if($subtitle) { - if(strncasecmp($subtitle,'RE:',3)) - $subject = $subtitle; - else - $subject = 'Re: ' . $subtitle; - } - } + dbesc($it['parent-uri'])); + + if(count($r) AND ($r[0]['title'] != '')) + $subject = $r[0]['title']; } + if(strncasecmp($subject,'RE:',3)) + $subject = 'Re: '.$subject; } - - /*$headers .= 'MIME-Version: 1.0' . "\n"; - //$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n"; - $headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n"; - $headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n"; - $html = prepare_body($it); - //$message = '' . $html . ''; - $message = html2plain($html); - logger('notifier: email delivery to ' . $addr); - mail($addr, $subject, $message, $headers);*/ email_send($addr, $subject, $headers, $it); } break; -- cgit v1.2.3 From e9b82bb5ee53040d6c1fe75949ec7785159be93d Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 11 Mar 2012 20:36:16 -0400 Subject: fix dispys' css and layout Signed-off-by: Simon L'nu --- view/theme/dispy-dark/icons.png | Bin 29039 -> 19513 bytes view/theme/dispy-dark/nav.tpl | 6 +- view/theme/dispy-dark/style.css | 85 +++++++++++--------- view/theme/dispy-dark/theme.php | 3 + view/theme/dispy/nav.tpl | 6 +- view/theme/dispy/style.css | 174 ++++++++++++++++++++-------------------- view/theme/dispy/theme.php | 3 + 7 files changed, 147 insertions(+), 130 deletions(-) diff --git a/view/theme/dispy-dark/icons.png b/view/theme/dispy-dark/icons.png index f99ec29ee..eb84b8d8e 100644 Binary files a/view/theme/dispy-dark/icons.png and b/view/theme/dispy-dark/icons.png differ diff --git a/view/theme/dispy-dark/nav.tpl b/view/theme/dispy-dark/nav.tpl index 4a030e7ae..f6e399ef5 100644 --- a/view/theme/dispy-dark/nav.tpl +++ b/view/theme/dispy-dark/nav.tpl @@ -1,5 +1,4 @@
    - +
    +$langselector +
    + diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index 805749b1c..7d7ff7f18 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -122,7 +122,6 @@ a { color: #88a9d2; text-decoration: none; margin-bottom: 1px; - text-decoration: none; } /*a:hover { */ /* text-decoration: none;*/ @@ -140,7 +139,6 @@ blockquote { } a:hover { color: #729fcf; - padding-bottom: 0; border-bottom: 1px dotted #729fcf; } .required { @@ -483,12 +481,12 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link height: 22px; overflow: hidden; margin: 0px; - background: transparent url(icons.png) -190px -60px no-repeat; + background: transparent url(icons.png) -190px -60px no-repeat; } .nav-ajax-update, .nav-ajax-left { width: 30px; height: 19px; - background: transparent url(notifications.svg) 0 0 no-repeat; + background: transparent url(notifications.png) 0 0 no-repeat; color: #222; font-weight: bold; font-size: 0.8em; @@ -519,14 +517,14 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link } #lang-select-icon { cursor: pointer; - position: absolute; - left: 0; - top: 0; + position: fixed; + left: 28px; + bottom: 6px; } #language-selector { - position: absolute; - top: 0; - left: 16px; + position: fixed; + bottom: 2px; + left: 52px; } .menu-popup { position: absolute; @@ -946,7 +944,7 @@ aside #viewcontacts { * section */ section { - margin: 20px 6% 0 4%; + margin: 20px 8% 0 4%; font-size: 0.8em; padding-right: 230px; min-width: 475px; @@ -955,30 +953,31 @@ section { /** tabs **/ .tabs { list-style: none; - margin: 10px 0 10px; + margin: 10px 0; padding: 0; - border-bottom: 1px solid #729fcf; - font-size: 14px; } .tabs li { display: inline; } .tab { - padding: 0 5px; + border: 1px solid #729fcf; + padding: 4px; } .tab:hover { - background-color: #88a9d2; - color: #111; - border: 0px; + background: #88a9d2; + color: #2e2f2e; } .tab:active { - background-color: #88a9d2; - color: #111; - border: 0px; + background: #88a9d2; + color: #2e2f2e; } .tab.active { - background-color: #88a9d2; - color: #111; + background: #88a9d2; + color: #2e2f2e; +} +.tab a { + border: 0; + text-decoration: none; } /** @@ -1005,6 +1004,9 @@ section { .shiny { background: #2e3436; } +.heart { + color: red; +} .wall-item-content { overflow-x: auto; } @@ -1548,8 +1550,7 @@ div[id$="wrapper"] br { .view-contact-wrapper, .contact-entry-wrapper { float: left; - margin-right: 5px; - margin-bottom: 40px; + margin: 0 5px 40px 0; width: 120px; height: 120px; padding: 3px; @@ -1712,17 +1713,20 @@ div[id$="wrapper"] br { clear: both; } -#register-form label, -#profile-edit-form label { - width: 300px; - float: left; -} +/*#register-form label, */ +/*#profile-edit-form label {*/ +/* width: 300px; */ +/* float: left; */ +/*} */ -#register-form span, -#profile-edit-form span { - color:#555753; - display:block; - margin-bottom:20px; +/*#register-form span, */ +/*#profile-edit-form span {*/ +/* color: #555753; */ +/* display: block; */ +/* margin-bottom: 20px; */ +/*} */ +#profile-edit-marital-label span { + margin: -4px; } .settings-submit-wrapper, .profile-edit-submit-wrapper { @@ -1944,7 +1948,12 @@ div[id$="wrapper"] br { */ .directory-item { float: left; - margin: 50px 50px 0px 0px; + /*margin: 50px 50px 0px 0px;*/ + margin: 0 5px 4px 0; + padding: 3px; + width: 180px; + height: 250px; + position: relative; } @@ -1956,8 +1965,8 @@ div[id$="wrapper"] br { } .group-selected, .nets-selected { padding: 3px; - border: 1px solid #f8f8f8; - background: #2e302e; + color: #2e2f2e; + background: #88a9d2; font-weight: bold; } .groupsideedit { diff --git a/view/theme/dispy-dark/theme.php b/view/theme/dispy-dark/theme.php index c72884f1a..a7aec1c1a 100644 --- a/view/theme/dispy-dark/theme.php +++ b/view/theme/dispy-dark/theme.php @@ -72,3 +72,6 @@ $(document).ready(function() { }); EOT; + +$a->page['footer'] .= << -$langselector @@ -112,11 +111,14 @@ works --> {{ endif }} - +
    +$langselector +
    + diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 8081bfc28..24fa39f77 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -79,7 +79,7 @@ mark { /* Redeclare monospace font family: h5bp.com/j */ pre, code, kbd, samp, .wall-item-body code { font-family: monospace, monospace; - _font-family: 'courier new', monospace; + _font-family: monospace; font-size: 1em; } /* Improve readability of pre-formatted text in all browsers */ @@ -127,6 +127,7 @@ a:hover img { } blockquote { background: #eee; + color: #111; text-indent: 5px; padding: 5px; border: 1px #aaa solid; @@ -134,7 +135,6 @@ blockquote { } a:hover { color: #729fcf; - padding-bottom: 0; border-bottom: 1px dotted #729fcf; } .required { @@ -462,6 +462,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link right: 1%; padding: 5px; background: #2e3436; + color: transparent; border-radius: 5px; z-index: 100; } @@ -511,14 +512,14 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link } #lang-select-icon { cursor: pointer; - position: absolute; - left: 0; - top: 0; + position: fixed; + left: 28px; + bottom: 6px; } #language-selector { - position: absolute; - top: 0; - left: 16px; + position: fixed; + bottom: 2px; + left: 52px; } .menu-popup { position: absolute; @@ -633,8 +634,24 @@ aside { .vcard #profile-photo-wrapper { margin: 20px; } +/* http://css-tricks.com/snippets/css/css-box-shadow/ + * box-shadow: + * 1. The horizontal offset of the shadow, positive means + * the shadow will be on the right of the box, a negative + * offset will put the shadow on the left of the box. + * 2. The vertical offset of the shadow, a negative one + * means the box-shadow will be above the box, a + * positive one means the shadow will be below the box. + * 3. The blur radius (optional), if set to 0 the shadow + * will be sharp, the higher the number, the more blurred + * it will be. + * 4. The spread radius (optional), positive values increase + * the size of the shadow, negative values decrease the size. + * Default is 0 (the shadow is same size as blur). + * 5. Colo[u]r + */ .vcard #profile-photo-wrapper img { - box-shadow: 3px 3px 10px 0; + box-shadow: 3px 3px 10px 0 #000; } aside h4 { font-size: 1.2em; @@ -643,8 +660,10 @@ aside #viewcontacts { text-align: right; } .aprofile dt { - box-shadow: 1px 1px 5px 0; color: #666666; + background: transparent; + font-weight: bold; + box-shadow: 1px 1px 5px 0 #000; margin: 15px 0 5px; padding-left: 5px; } @@ -707,51 +726,11 @@ aside #viewcontacts { } #jot #jot-tools span a { display: block; - /*color: #cccccc; */ - /*width: 100%; */ - /*height: 40px; */ - /*text-align: center;*/ - /*line-height: 40px; */ - /*overflow: hidden;*/ } -/*#jot #jot-tools li:hover {*/ - /*background-color: #364e59;*/ -/*}*/ #jot #jot-tools .perms { float: right; width: 40px; } -/*#jot #jot-tools .perms a.unlock {*/ -/* width: 30px; */ -/* border-left: 10px solid #cccccc;*/ -/* background-color: #cccccc; */ -/*}*/ -/*#jot #jot-tools .perms a.lock {*/ -/* width: 30px; */ -/* border-left: 10px solid #666666;*/ -/* background-color: #666666; */ -/*}*/ -/*#jot #jot-tools li.submit { */ -/* float: right; */ -/* background-color: #cccccc; */ -/* border-bottom: 2px solid #cccccc; */ -/* border-right: 1px solid #666666; */ -/* border-left: 1px solid #666666; */ -/*} */ -/*#jot #jot-tools li.submit input { */ -/* border: 0px; */ -/* margin: 0px; */ -/* padding: 0px; */ -/* background-color: #cccccc; */ -/* color: #666666; */ -/* width: 80px; */ -/* height: 40px; */ -/* line-height: 40px; */ -/*} */ -/*#jot #jot-tools li.submit input:hover {*/ -/* background-color: #bdcdd4; */ -/* color: #666666; */ -/*} */ #jot #jot-tools li.loading { float: right; background-color: #ffffff; @@ -945,17 +924,22 @@ aside #viewcontacts { } #jot-preview-content { background-color: #ffffe0; - border: 1px #aaaa00 solid; + color: #111; + border: 1px #aa0 solid; border-radius: 3px; padding: 3px 3px 6px 10px; } +#jot-preview-content .wall-item-outside-wrapper { + border: 0; + border-radius: 0px; +} /** * section */ section { - margin: 20px 6% 0 4%; + margin: 20px 8% 0 4%; font-size: 0.8em; padding-right: 230px; min-width: 475px; @@ -964,28 +948,32 @@ section { /** tabs **/ .tabs { list-style: none; - margin: 10px 0 10px; + margin: 10px 0; padding: 0; - border-bottom: 1px solid #729fcf; - font-size: 14px; } .tabs li { display: inline; } .tab { - padding: 0 5px; + border: 1px solid #729fcf; + padding: 4px; } .tab:hover { - background-color: #729fcf; + background: #729fcf; color: #eeeeec; - border: 0px; } .tab:active { - background-color: #729fcf; + background: #729fcf; color: #eeeeec; - border: 0px; } - +.tab.active { + background: #729fcf; + color: #eeeeec; +} +.tab a { + border: 0; + text-decoration: none; +} /** * items @@ -1011,6 +999,9 @@ section { .shiny { background: #efefdf; } +.heart { + color: red; +} .wall-item-content { overflow-x: auto; } @@ -1297,6 +1288,7 @@ section { border-style: solid; border-width: 1px 1px 1px 10px; background: #eee; + color: #444; width: 95%; } @@ -1553,8 +1545,7 @@ div[id$="wrapper"] br { .view-contact-wrapper, .contact-entry-wrapper { float: left; - margin-right: 5px; - margin-bottom: 40px; + margin: 0 5px 40px 0; width: 120px; height: 120px; padding: 3px; @@ -1666,8 +1657,9 @@ div[id$="wrapper"] br { } .contact-photo-menu { width: auto; - border: 2px solid #444444; - background: #FFFFFF; + border: 2px solid #444; + background: #eee; + color: #111; position: absolute; left: 0px; top: 90px; display: none; @@ -1706,6 +1698,7 @@ div[id$="wrapper"] br { -moz-border-radius: 5px; border-radius: 5px; padding: 5px; + color: #111; } #settings-default-perms { margin-bottom: 20px; @@ -1715,17 +1708,20 @@ div[id$="wrapper"] br { clear: both; } -#register-form label, -#profile-edit-form label { - width: 300px; - float: left; -} +/*#register-form label, */ +/*#profile-edit-form label {*/ +/* width: 300px; */ +/* float: left; */ +/*} */ -#register-form span, -#profile-edit-form span { - color:#555753; - display:block; - margin-bottom:20px; +/*#register-form span, */ +/*#profile-edit-form span {*/ +/* color: #555753; */ +/* display: block; */ +/* margin-bottom: 20px; */ +/*} */ +#profile-edit-marital-label span { + margin: -4px; } .settings-submit-wrapper, .profile-edit-submit-wrapper { @@ -1742,17 +1738,19 @@ div[id$="wrapper"] br { float: left; margin: 20px 20px 0px 0px; } - #profile-edit-links ul { margin: 20px 0; padding: 0; list-style: none; } - #register-sitename { display: inline; font-weight: bold; } +#advanced-expire-popup { +/* background: #2e2f2e; + color: #eec;*/ +} /** * contacts selector @@ -1945,7 +1943,12 @@ div[id$="wrapper"] br { */ .directory-item { float: left; - margin: 50px 50px 0px 0px; + /*margin: 50px 50px 0px 0px;*/ + margin: 0 5px 4px 0; + padding: 3px; + width: 180px; + height: 250px; + position: relative; } @@ -1957,6 +1960,7 @@ div[id$="wrapper"] br { } .group-selected, .nets-selected { padding: 3px; + color: #111; border: 1px solid #CCCCCC; background: #F8F8F8; font-weight: bold; @@ -2132,6 +2136,7 @@ div[id$="wrapper"] br { padding: 5px; background: #eee; vertical-align: middle; + color: #111; } .field input, input[type="text"] { width: 250px; @@ -2172,7 +2177,7 @@ div[id$="wrapper"] br { display:none !important; } .field.radio .field_help { - margin-left: 0; + margin-left: 297px; } @@ -2182,8 +2187,8 @@ div[id$="wrapper"] br { .popup { width: 100%; height: 100%; - top:0px; - left:0px; + top: 0px; + left: 0px; position: absolute; display: none; } @@ -2298,12 +2303,6 @@ div[id$="wrapper"] br { .icon.drophide, .icon.delete { float: left; } -/*.icon.s22 { - display: block; - background: url(icons.png) no-repeat; - width: 22px; - height: 22px; -}*/ .icon.s22.delete { display: block; background-position: -110px 0; @@ -2649,4 +2648,3 @@ footer { font-size: 15pt; } } - diff --git a/view/theme/dispy/theme.php b/view/theme/dispy/theme.php index c72884f1a..a7aec1c1a 100644 --- a/view/theme/dispy/theme.php +++ b/view/theme/dispy/theme.php @@ -72,3 +72,6 @@ $(document).ready(function() { }); EOT; + +$a->page['footer'] .= << Date: Sun, 11 Mar 2012 21:34:51 -0400 Subject: fix dispy-dark photo album stuff Signed-off-by: Simon L'nu --- view/theme/dispy-dark/style.css | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index 7d7ff7f18..7a57628b9 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -537,9 +537,9 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link list-style: none; border: 3px solid #364e59; z-index: 100000; - -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); - -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); - box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -webkit-box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7); + -moz-box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7); + box-shadow: 3px 3px 10px 0 rgba(0, 0, 0, 0.7); } .menu-popup a { display: block; @@ -587,24 +587,24 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link /** sysmsg **/ #sysmsg_info { - position:fixed; - bottom:0; - -moz-box-shadow:0 0 5px #888; - -webkit-box-shadow:0 0 5px #888; - box-shadow:0 0 5px #888; + position: fixed; + bottom: 0; + -moz-box-shadow: 3px 3px 3px 10px 0 #000; + -webkit-box-shadow: 3px 3px 10px 0 #000; + box-shadow: 3px 3px 10px 0 #000; padding: 10px; - background-color:#fcaf3e; + background-color: #fcaf3e; border:2px solid #f8911b; - border-bottom:0; + border-bottom: 0; padding-bottom: 50px; z-index: 1000; } #sysmsg { position: fixed; bottom: 0; - -moz-box-shadow: 0 0 5px #888; - -webkit-box-shadow: 0 0 5px #888; - box-shadow: 0 0 5px #888; + -moz-box-shadow: 3px 3px 10px 0 #000; + -webkit-box-shadow: 3px 3px 10px 0 #000; + box-shadow: 3px 3px 10px 0 #000; padding: 10px; background-color: #fcaf3e; border: 2px solid #f8911b; @@ -1330,10 +1330,11 @@ div[id$="wrapper"] br { .photo-album-image-wrapper, .photo-top-image-wrapper { float: left; - -moz-box-shadow: 0 0 5px #888; - -webkit-box-shadow: 0 0 5px #888; - box-shadow: 0 0 5px #888; - background-color: #eee; + -moz-box-shadow: 3px 3px 10px 0 #000; + -webkit-box-shadow: 3px 3px 10px 0 #000; + box-shadow: 3px 3px 10px 0 #000; + background-color: #222; + color: #2e2f2e; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; -- cgit v1.2.3 From 93058af4fcfa0c1dbe8398271c60513dea16338c Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 11 Mar 2012 20:19:56 -0700 Subject: backend for "save to file" feature --- include/text.php | 19 +++++++++++++++++++ mod/network.php | 21 ++++++++++++++------- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/include/text.php b/include/text.php index 5ad0154d7..08b2b8487 100644 --- a/include/text.php +++ b/include/text.php @@ -1235,4 +1235,23 @@ function item_post_type($item) { return t('post'); } +// post categories and "save to file" use the same item.file table for storage. +// We will differentiate the different uses by wrapping categories in angle brackets +// and save to file categories in square brackets. +// To do this we need to escape these characters if they appear in our tag. +function file_tag_encode($s) { + return str_replace(array('<','>','[',']'),array('%3c','%3e','%5b','%5d'),$s); +} + +function file_tag_decode($s) { + return str_replace(array('%3c','%3e','%5b','%5d'),array('<','>','[',']'),$s); +} + +function file_tag_file_query($table,$s,$type = 'file') { + if($type == 'file') + $str = preg_quote( '[' . file_tag_encode($s) . ']' ); + else + $str = preg_quote( '<' . file_tag_encode($s) . '>' ); + return " AND " . (($table) ? dbesc($table) . '.' : '') . "file regexp '" . dbesc($str) . "' "; +} \ No newline at end of file diff --git a/mod/network.php b/mod/network.php index b04a7b489..861b5ab73 100755 --- a/mod/network.php +++ b/mod/network.php @@ -52,13 +52,15 @@ function network_init(&$a) { function saved_searches($search) { $srchurl = '/network?f=' - . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') - . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '') + . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') + . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '') . ((x($_GET,'bmark')) ? '&bmark=' . $_GET['bmark'] : '') - . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '') - . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') - . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') - . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : ''); + . ((x($_GET,'conv')) ? '&conv=' . $_GET['conv'] : '') + . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') + . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') + . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '') + . ((x($_GET,'file')) ? '&file=' . $_GET['file'] : ''); + ; $o = ''; @@ -226,6 +228,7 @@ function network_content(&$a, $update = 0) { $nets = ((x($_GET,'nets')) ? $_GET['nets'] : ''); $cmin = ((x($_GET,'cmin')) ? intval($_GET['cmin']) : 0); $cmax = ((x($_GET,'cmax')) ? intval($_GET['cmax']) : 99); + $file = ((x($_GET,'file')) ? $_GET['file'] : ''); if(($a->argc > 2) && $a->argv[2] === 'new') $nouveau = true; @@ -239,7 +242,7 @@ function network_content(&$a, $update = 0) { } } - if(x($_GET,'search')) + if(x($_GET,'search') || x($_GET,'file')) $nouveau = true; if($cid) $def_acl = array('allow_cid' => '<' . intval($cid) . '>'); @@ -358,6 +361,7 @@ function network_content(&$a, $update = 0) { . ((x($_GET,'nets')) ? '&nets=' . $_GET['nets'] : '') . ((x($_GET,'cmin')) ? '&cmin=' . $_GET['cmin'] : '') . ((x($_GET,'cmax')) ? '&cmax=' . $_GET['cmax'] : '') + . ((x($_GET,'file')) ? '&file=' . $_GET['file'] : '') . "'; var profile_page = " . $a->pager['page'] . "; \r\n"; } @@ -371,6 +375,9 @@ function network_content(&$a, $update = 0) { dbesc('\\]' . preg_quote($search) . '\\[') ); } + if(strlen($file)) { + $sql_extra .= file_tag_file_query('item',$file); + } if($conv) { $myurl = $a->get_baseurl() . '/profile/'. $a->user['nickname']; -- cgit v1.2.3 From 3bc990f7186af620e7e85bbf5c70bf5795c04a6d Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 11 Mar 2012 21:32:11 -0700 Subject: more save to file backend --- include/text.php | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/include/text.php b/include/text.php index 08b2b8487..011006b76 100644 --- a/include/text.php +++ b/include/text.php @@ -1254,4 +1254,58 @@ function file_tag_file_query($table,$s,$type = 'file') { else $str = preg_quote( '<' . file_tag_encode($s) . '>' ); return " AND " . (($table) ? dbesc($table) . '.' : '') . "file regexp '" . dbesc($str) . "' "; -} \ No newline at end of file +} + +function file_tag_save_file($uid,$item,$file) { + $result = false; + if(! intval($uid)) + return false; + $r = q("select file from item where id = %d and uid = %d limit 1", + intval($item), + intval($uid) + ); + if(count($r)) { + if(! stristr($r[0]['file'],'[' . file_tag_encode($file) . ']')) + q("update item set file = '%s' where id = %d and uid = %d limit 1", + dbesc($r[0]['file'] . '[' . $file_tag_encode($file) . ']'), + intval($item), + intval($uid) + ); + $saved = get_pconfig($uid,'system','filetags'); + if((! strlen($saved)) || (! stristr($saved,'[' . file_tag_encode($file) . ']'))) + set_pconfig($uid,'system','filetags',$saved . '[' . file_tag_encode($file) . ']'); + } + return true; +} + +function file_tag_unsave_file($uid,$item,$file) { + $result = false; + if(! intval($uid)) + return false; + + $pattern = '[' . file_tag_encode($file) . ']' ; + + $r = q("select file from item where id = %d and uid = %d limit 1", + intval($item), + intval($uid) + ); + if(! count($r)) + return false; + + q("update item set file = '%s' where id = %d and uid = %d limit 1", + dbesc(str_replace($pattern,'',$r[0]['file'])), + intval($item), + intval($uid) + ); + + $r = q("select file from item where uid = %d " . file_tag_file_query('item',$file), + intval($uid) + ); + + if(! count($r)) { + $saved = get_pconfig($uid,'system','filetags'); + set_pconfig($uid,'system','filetags',str_replace($pattern,'',$saved)); + } + return true; +} + -- cgit v1.2.3 From bce3bfff38ad6f540dca39f6ed5b1d8cae19edb1 Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Mon, 12 Mar 2012 13:59:00 +0100 Subject: get tags test improved --- mod/item.php | 79 ++++++++++++++++++++++++++++++++++--------------- tests/get_tags_test.php | 40 +++++++++++++++++++++++-- 2 files changed, 92 insertions(+), 27 deletions(-) diff --git a/mod/item.php b/mod/item.php index a9edf0da6..0ff7f6a7c 100755 --- a/mod/item.php +++ b/mod/item.php @@ -820,33 +820,54 @@ function item_content(&$a) { } } +/** + * This function removes the tag $tag from the text $body and replaces it with + * the appropiate link. + * + * @param unknown_type $body the text to replace the tag in + * @param unknown_type $inform a comma-seperated string containing everybody to inform + * @param unknown_type $str_tags string to add the tag to + * @param unknown_type $profile_uid + * @param unknown_type $tag the tag to replace + */ function handle_body(&$body, &$inform, &$str_tags, $profile_uid, $tag) { - $profile=null; - if(isset($profile)) - unset($profile); + //is it a hash tag? if(strpos($tag,'#') === 0) { - if(strpos($tag,'[url=')) - continue; + //if the tag is replaced... + if(strpos($tag,'[url=')) + //...do nothing + continue; + //base tag has the tags name only $basetag = str_replace('_',' ',substr($tag,1)); - $body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body); - - $newtag = '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]'; + //create text for link + $newtag = '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]'; + //replace tag by the link + $body = str_replace($tag, $newtag, $body); + + //is the link already in str_tags? if(! stristr($str_tags,$newtag)) { + //append or set str_tags if(strlen($str_tags)) $str_tags .= ','; $str_tags .= $newtag; } continue; - } + } + //is it a person tag? if(strpos($tag,'@') === 0) { + //is it already replaced? if(strpos($tag,'[url=')) continue; $stat = false; - $name = substr($tag,1); + //get the person's name + $name = substr($tag,1); + //is it a link or a full dfrn address? if((strpos($name,'@')) || (strpos($name,'http://'))) { $newname = $name; + //get the profile links $links = @lrdd($name); if(count($links)) { + //for all links, collect how is to inform and how's profile is to link foreach($links as $link) { if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page') $profile = $link['@attributes']['href']; @@ -857,38 +878,44 @@ function handle_body(&$body, &$inform, &$str_tags, $profile_uid, $tag) { } } } - } - else { + } else { //if it is a name rather than an address $newname = $name; $alias = ''; - $tagcid = 0; + $tagcid = 0; + //is it some generated name? if(strrpos($newname,'+')) { + //get the id $tagcid = intval(substr($newname,strrpos($newname,'+') + 1)); + //remove the next word from tag's name if(strpos($name,' ')) $name = substr($name,0,strpos($name,' ')); - } - if($tagcid) { + } + if($tagcid) { //if there was an id + //select contact with that id from the logged in user's contact list $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($tagcid), intval($profile_uid) ); - } - elseif(strstr($name,'_') || strstr($name,' ')) { + } elseif(strstr($name,'_') || strstr($name,' ')) { //no id + //get the real name $newname = str_replace('_',' ',$name); + //select someone from this user's contacts by name $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1", dbesc($newname), intval($profile_uid) ); - } - else { + } else { + //select someone by attag or nick and the name passed in $r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1", dbesc($name), dbesc($name), intval($profile_uid) ); - } + } + //$r is set, if someone could be selected if(count($r)) { - $profile = $r[0]['url']; + $profile = $r[0]['url']; + //set newname to nick, find alias if($r[0]['network'] === 'stat') { $newname = $r[0]['nick']; $stat = true; @@ -897,15 +924,19 @@ function handle_body(&$body, &$inform, &$str_tags, $profile_uid, $tag) { } else $newname = $r[0]['name']; + //add person's id to $inform if(strlen($inform)) $inform .= ','; $inform .= 'cid:' . $r[0]['id']; } - } - if($profile) { - $body = str_replace('@' . $name, '@' . '[url=' . $profile . ']' . $newname . '[/url]', $body); + } + //if there is an url for this persons profile + if(isset($profile)) { + //create profile link $profile = str_replace(',','%2c',$profile); $newtag = '@[url=' . $profile . ']' . $newname . '[/url]'; + $body = str_replace('@' . $name, $newtag, $body); + //append tag to str_tags if(! stristr($str_tags,$newtag)) { if(strlen($str_tags)) $str_tags .= ','; diff --git a/tests/get_tags_test.php b/tests/get_tags_test.php index a458f0fbc..ee2daced1 100644 --- a/tests/get_tags_test.php +++ b/tests/get_tags_test.php @@ -8,11 +8,45 @@ require_once 'include/text.php'; require_once 'mod/item.php'; function q($sql) { - return array(array('id'=>15, 'network'=>'stat', 'alias'=>'Mike', 'nick'=>'Mike', 'url'=>"http://justatest.de")); + + $result=array(array('id'=>15, + 'attag'=>'', 'network'=>'dfrn', + 'name'=>'Mike Lastname', 'alias'=>'Mike', + 'nick'=>'Mike', 'url'=>"http://justatest.de")); + + $args=func_get_args(); + $str=""; + foreach($args as $arg) { + $str.=", ".$arg; + } + + //last parameter is always (in this test) uid, so, it should be 11 + if($args[count($args)-1]!=11) { + throw new Exception("q from get_tags_test was used and uid was not 11. "); + } + + if(2==count($args)) { + //first call in handle_body, id only + if($result[0]['id']===$args[1]) { + return $result; + } + throw new Exception($str); + //second call in handle_body, name + if($result[0]['name']===$args[1]) { + return $result; + } + } + throw new Exception($str); + //third call in handle_body, nick or attag + if($result[0]['nick']===$args[2] || $result[0]['attag']===$args[1]) { + return $result; + } +// throw new Exception("Nothing fitted: ".$args[1].", ".$args[2]); } + function dbesc($str) { - echo $str; + return $str; } class GetTagsTest extends PHPUnit_Framework_TestCase { @@ -39,7 +73,7 @@ class GetTagsTest extends PHPUnit_Framework_TestCase { handle_body($text, $inform, $str_tags, 11, $tags[0]); $this->assertEquals("@Mike", $tags[0]); - $this->assertEquals($text, "hi @[url=http://justatest.de]Mike[/url]"); + $this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url]", $text); } /** -- cgit v1.2.3 From c30342e2f7bde6fda899193f97ce3051cd8b2fdd Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 12 Mar 2012 15:58:59 +0100 Subject: add 'loggin_out' hook --- include/auth.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/auth.php b/include/auth.php index fc52684e6..f2975c4c6 100755 --- a/include/auth.php +++ b/include/auth.php @@ -24,7 +24,7 @@ if((isset($_SESSION)) && (x($_SESSION,'authenticated')) && ((! (x($_POST,'auth-p if(((x($_POST,'auth-params')) && ($_POST['auth-params'] === 'logout')) || ($a->module === 'logout')) { // process logout request - + call_hooks("logging_out"); nuke_session(); info( t('Logged out.') . EOL); goaway(z_root()); -- cgit v1.2.3 From 943617574699efe41ef1bfb2527cada847497495 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Mon, 12 Mar 2012 21:09:16 +0100 Subject: add lightbox, fixex in css --- view/theme/diabook-blue/experimental | 0 view/theme/diabook-blue/icons/isstar.png | Bin 1277 -> 0 bytes view/theme/diabook-blue/icons/next.png | Bin 0 -> 300 bytes view/theme/diabook-blue/icons/notifications.png | Bin 727 -> 795 bytes view/theme/diabook-blue/icons/prev.png | Bin 0 -> 336 bytes view/theme/diabook-blue/icons/unglobe.png | Bin 798 -> 0 bytes .../lightbox/css/jquery.lightbox-0.5.css | 101 +++++ .../lightbox/images/lightbox-blank.gif | Bin 0 -> 43 bytes .../lightbox/images/lightbox-btn-close.gif | Bin 0 -> 700 bytes .../lightbox/images/lightbox-btn-next.gif | Bin 0 -> 812 bytes .../lightbox/images/lightbox-btn-prev.gif | Bin 0 -> 832 bytes .../lightbox/images/lightbox-ico-loading.gif | Bin 0 -> 3990 bytes view/theme/diabook-blue/lightbox/index.htm | 78 ++++ view/theme/diabook-blue/lightbox/js/jquery.js | 32 ++ .../lightbox/js/jquery.lightbox-0.5.js | 472 +++++++++++++++++++++ .../lightbox/js/jquery.lightbox-0.5.min.js | 42 ++ .../lightbox/js/jquery.lightbox-0.5.pack.js | 14 + view/theme/diabook-blue/lightbox/photos/image1.jpg | Bin 0 -> 19983 bytes view/theme/diabook-blue/lightbox/photos/image2.jpg | Bin 0 -> 45539 bytes view/theme/diabook-blue/lightbox/photos/image3.jpg | Bin 0 -> 39361 bytes view/theme/diabook-blue/lightbox/photos/image4.jpg | Bin 0 -> 18746 bytes view/theme/diabook-blue/lightbox/photos/image5.jpg | Bin 0 -> 30903 bytes .../diabook-blue/lightbox/photos/thumb_image1.jpg | Bin 0 -> 2092 bytes .../diabook-blue/lightbox/photos/thumb_image2.jpg | Bin 0 -> 2541 bytes .../diabook-blue/lightbox/photos/thumb_image3.jpg | Bin 0 -> 2237 bytes .../diabook-blue/lightbox/photos/thumb_image4.jpg | Bin 0 -> 1993 bytes .../diabook-blue/lightbox/photos/thumb_image5.jpg | Bin 0 -> 2045 bytes view/theme/diabook-blue/photo_view.tpl | 27 ++ view/theme/diabook-blue/style.css | 62 ++- view/theme/diabook-blue/theme.php | 24 +- view/theme/diabook/experimental | 0 view/theme/diabook/icons/isstar.png | Bin 1277 -> 0 bytes view/theme/diabook/icons/next.png | Bin 0 -> 300 bytes view/theme/diabook/icons/prev.png | Bin 0 -> 336 bytes view/theme/diabook/icons/unglobe.png | Bin 798 -> 0 bytes .../diabook/lightbox/css/jquery.lightbox-0.5.css | 101 +++++ .../diabook/lightbox/images/lightbox-blank.gif | Bin 0 -> 43 bytes .../diabook/lightbox/images/lightbox-btn-close.gif | Bin 0 -> 700 bytes .../diabook/lightbox/images/lightbox-btn-next.gif | Bin 0 -> 812 bytes .../diabook/lightbox/images/lightbox-btn-prev.gif | Bin 0 -> 832 bytes .../lightbox/images/lightbox-ico-loading.gif | Bin 0 -> 3990 bytes view/theme/diabook/lightbox/index.htm | 78 ++++ view/theme/diabook/lightbox/js/jquery.js | 32 ++ .../diabook/lightbox/js/jquery.lightbox-0.5.js | 472 +++++++++++++++++++++ .../diabook/lightbox/js/jquery.lightbox-0.5.min.js | 42 ++ .../lightbox/js/jquery.lightbox-0.5.pack.js | 14 + view/theme/diabook/lightbox/photos/image1.jpg | Bin 0 -> 19983 bytes view/theme/diabook/lightbox/photos/image2.jpg | Bin 0 -> 45539 bytes view/theme/diabook/lightbox/photos/image3.jpg | Bin 0 -> 39361 bytes view/theme/diabook/lightbox/photos/image4.jpg | Bin 0 -> 18746 bytes view/theme/diabook/lightbox/photos/image5.jpg | Bin 0 -> 30903 bytes .../theme/diabook/lightbox/photos/thumb_image1.jpg | Bin 0 -> 2092 bytes .../theme/diabook/lightbox/photos/thumb_image2.jpg | Bin 0 -> 2541 bytes .../theme/diabook/lightbox/photos/thumb_image3.jpg | Bin 0 -> 2237 bytes .../theme/diabook/lightbox/photos/thumb_image4.jpg | Bin 0 -> 1993 bytes .../theme/diabook/lightbox/photos/thumb_image5.jpg | Bin 0 -> 2045 bytes view/theme/diabook/photo_view.tpl | 27 ++ view/theme/diabook/style.css | 71 +++- view/theme/diabook/theme.php | 23 +- 59 files changed, 1667 insertions(+), 45 deletions(-) delete mode 100755 view/theme/diabook-blue/experimental delete mode 100644 view/theme/diabook-blue/icons/isstar.png create mode 100755 view/theme/diabook-blue/icons/next.png create mode 100755 view/theme/diabook-blue/icons/prev.png delete mode 100755 view/theme/diabook-blue/icons/unglobe.png create mode 100644 view/theme/diabook-blue/lightbox/css/jquery.lightbox-0.5.css create mode 100644 view/theme/diabook-blue/lightbox/images/lightbox-blank.gif create mode 100644 view/theme/diabook-blue/lightbox/images/lightbox-btn-close.gif create mode 100644 view/theme/diabook-blue/lightbox/images/lightbox-btn-next.gif create mode 100644 view/theme/diabook-blue/lightbox/images/lightbox-btn-prev.gif create mode 100644 view/theme/diabook-blue/lightbox/images/lightbox-ico-loading.gif create mode 100644 view/theme/diabook-blue/lightbox/index.htm create mode 100644 view/theme/diabook-blue/lightbox/js/jquery.js create mode 100644 view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.js create mode 100644 view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.min.js create mode 100644 view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.pack.js create mode 100644 view/theme/diabook-blue/lightbox/photos/image1.jpg create mode 100644 view/theme/diabook-blue/lightbox/photos/image2.jpg create mode 100644 view/theme/diabook-blue/lightbox/photos/image3.jpg create mode 100644 view/theme/diabook-blue/lightbox/photos/image4.jpg create mode 100644 view/theme/diabook-blue/lightbox/photos/image5.jpg create mode 100644 view/theme/diabook-blue/lightbox/photos/thumb_image1.jpg create mode 100644 view/theme/diabook-blue/lightbox/photos/thumb_image2.jpg create mode 100644 view/theme/diabook-blue/lightbox/photos/thumb_image3.jpg create mode 100644 view/theme/diabook-blue/lightbox/photos/thumb_image4.jpg create mode 100644 view/theme/diabook-blue/lightbox/photos/thumb_image5.jpg create mode 100755 view/theme/diabook-blue/photo_view.tpl delete mode 100755 view/theme/diabook/experimental delete mode 100644 view/theme/diabook/icons/isstar.png create mode 100755 view/theme/diabook/icons/next.png create mode 100755 view/theme/diabook/icons/prev.png delete mode 100755 view/theme/diabook/icons/unglobe.png create mode 100644 view/theme/diabook/lightbox/css/jquery.lightbox-0.5.css create mode 100644 view/theme/diabook/lightbox/images/lightbox-blank.gif create mode 100644 view/theme/diabook/lightbox/images/lightbox-btn-close.gif create mode 100644 view/theme/diabook/lightbox/images/lightbox-btn-next.gif create mode 100644 view/theme/diabook/lightbox/images/lightbox-btn-prev.gif create mode 100644 view/theme/diabook/lightbox/images/lightbox-ico-loading.gif create mode 100644 view/theme/diabook/lightbox/index.htm create mode 100644 view/theme/diabook/lightbox/js/jquery.js create mode 100644 view/theme/diabook/lightbox/js/jquery.lightbox-0.5.js create mode 100644 view/theme/diabook/lightbox/js/jquery.lightbox-0.5.min.js create mode 100644 view/theme/diabook/lightbox/js/jquery.lightbox-0.5.pack.js create mode 100644 view/theme/diabook/lightbox/photos/image1.jpg create mode 100644 view/theme/diabook/lightbox/photos/image2.jpg create mode 100644 view/theme/diabook/lightbox/photos/image3.jpg create mode 100644 view/theme/diabook/lightbox/photos/image4.jpg create mode 100644 view/theme/diabook/lightbox/photos/image5.jpg create mode 100644 view/theme/diabook/lightbox/photos/thumb_image1.jpg create mode 100644 view/theme/diabook/lightbox/photos/thumb_image2.jpg create mode 100644 view/theme/diabook/lightbox/photos/thumb_image3.jpg create mode 100644 view/theme/diabook/lightbox/photos/thumb_image4.jpg create mode 100644 view/theme/diabook/lightbox/photos/thumb_image5.jpg create mode 100755 view/theme/diabook/photo_view.tpl diff --git a/view/theme/diabook-blue/experimental b/view/theme/diabook-blue/experimental deleted file mode 100755 index e69de29bb..000000000 diff --git a/view/theme/diabook-blue/icons/isstar.png b/view/theme/diabook-blue/icons/isstar.png deleted file mode 100644 index c955b25b5..000000000 Binary files a/view/theme/diabook-blue/icons/isstar.png and /dev/null differ diff --git a/view/theme/diabook-blue/icons/next.png b/view/theme/diabook-blue/icons/next.png new file mode 100755 index 000000000..7b5e25b90 Binary files /dev/null and b/view/theme/diabook-blue/icons/next.png differ diff --git a/view/theme/diabook-blue/icons/notifications.png b/view/theme/diabook-blue/icons/notifications.png index c23673dbd..33ae95c6a 100755 Binary files a/view/theme/diabook-blue/icons/notifications.png and b/view/theme/diabook-blue/icons/notifications.png differ diff --git a/view/theme/diabook-blue/icons/prev.png b/view/theme/diabook-blue/icons/prev.png new file mode 100755 index 000000000..55c1464ba Binary files /dev/null and b/view/theme/diabook-blue/icons/prev.png differ diff --git a/view/theme/diabook-blue/icons/unglobe.png b/view/theme/diabook-blue/icons/unglobe.png deleted file mode 100755 index aa9b0e189..000000000 Binary files a/view/theme/diabook-blue/icons/unglobe.png and /dev/null differ diff --git a/view/theme/diabook-blue/lightbox/css/jquery.lightbox-0.5.css b/view/theme/diabook-blue/lightbox/css/jquery.lightbox-0.5.css new file mode 100644 index 000000000..c7c3d1cb1 --- /dev/null +++ b/view/theme/diabook-blue/lightbox/css/jquery.lightbox-0.5.css @@ -0,0 +1,101 @@ +/** + * jQuery lightBox plugin + * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) + * and adapted to me for use like a plugin from jQuery. + * @name jquery-lightbox-0.5.css + * @author Leandro Vieira Pinho - http://leandrovieira.com + * @version 0.5 + * @date April 11, 2008 + * @category jQuery plugin + * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com) + * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US + * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin + */ +#jquery-overlay { + position: absolute; + top: 0; + left: 0; + z-index: 90; + width: 100%; + height: 500px; +} +#jquery-lightbox { + position: absolute; + top: 0; + left: 0; + width: 100%; + z-index: 100; + text-align: center; + line-height: 0; +} +#jquery-lightbox a img { border: none; } +#lightbox-container-image-box { + position: relative; + background-color: #fff; + width: 250px; + height: 250px; + margin: 0 auto; +} +#lightbox-container-image { padding: 10px; } +#lightbox-loading { + position: absolute; + top: 40%; + left: 0%; + height: 25%; + width: 100%; + text-align: center; + line-height: 0; +} +#lightbox-nav { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 10; +} +#lightbox-container-image-box > #lightbox-nav { left: 0; } +#lightbox-nav a { outline: none;} +#lightbox-nav-btnPrev, #lightbox-nav-btnNext { + width: 49%; + height: 100%; + zoom: 1; + display: block; +} +#lightbox-nav-btnPrev { + left: 0; + float: left; +} +#lightbox-nav-btnNext { + right: 0; + float: right; +} +#lightbox-container-image-data-box { + font: 10px Verdana, Helvetica, sans-serif; + background-color: #fff; + margin: 0 auto; + line-height: 1.4em; + overflow: auto; + width: 100%; + padding: 0 10px 0; +} +#lightbox-container-image-data { + padding: 0 10px; + color: #666; +} +#lightbox-container-image-data #lightbox-image-details { + width: 70%; + float: left; + text-align: left; +} +#lightbox-image-details-caption { font-weight: bold; } +#lightbox-image-details-currentNumber { + display: block; + clear: left; + padding-bottom: 1.0em; +} +#lightbox-secNav-btnClose { + width: 66px; + float: right; + padding-bottom: 0.7em; +} \ No newline at end of file diff --git a/view/theme/diabook-blue/lightbox/images/lightbox-blank.gif b/view/theme/diabook-blue/lightbox/images/lightbox-blank.gif new file mode 100644 index 000000000..1d11fa9ad Binary files /dev/null and b/view/theme/diabook-blue/lightbox/images/lightbox-blank.gif differ diff --git a/view/theme/diabook-blue/lightbox/images/lightbox-btn-close.gif b/view/theme/diabook-blue/lightbox/images/lightbox-btn-close.gif new file mode 100644 index 000000000..33bcf517a Binary files /dev/null and b/view/theme/diabook-blue/lightbox/images/lightbox-btn-close.gif differ diff --git a/view/theme/diabook-blue/lightbox/images/lightbox-btn-next.gif b/view/theme/diabook-blue/lightbox/images/lightbox-btn-next.gif new file mode 100644 index 000000000..a0d4fcf84 Binary files /dev/null and b/view/theme/diabook-blue/lightbox/images/lightbox-btn-next.gif differ diff --git a/view/theme/diabook-blue/lightbox/images/lightbox-btn-prev.gif b/view/theme/diabook-blue/lightbox/images/lightbox-btn-prev.gif new file mode 100644 index 000000000..040ee5992 Binary files /dev/null and b/view/theme/diabook-blue/lightbox/images/lightbox-btn-prev.gif differ diff --git a/view/theme/diabook-blue/lightbox/images/lightbox-ico-loading.gif b/view/theme/diabook-blue/lightbox/images/lightbox-ico-loading.gif new file mode 100644 index 000000000..4f1429c06 Binary files /dev/null and b/view/theme/diabook-blue/lightbox/images/lightbox-ico-loading.gif differ diff --git a/view/theme/diabook-blue/lightbox/index.htm b/view/theme/diabook-blue/lightbox/index.htm new file mode 100644 index 000000000..5daa72a0f --- /dev/null +++ b/view/theme/diabook-blue/lightbox/index.htm @@ -0,0 +1,78 @@ + + + + + jQuery lightBox plugin + + + + + + + + + + + + + + + + +

    Example

    +

    Click in the image and see the jQuery lightBox plugin in action.

    + + + + \ No newline at end of file diff --git a/view/theme/diabook-blue/lightbox/js/jquery.js b/view/theme/diabook-blue/lightbox/js/jquery.js new file mode 100644 index 000000000..3747929d8 --- /dev/null +++ b/view/theme/diabook-blue/lightbox/js/jquery.js @@ -0,0 +1,32 @@ +/* + * jQuery 1.2.3 - New Wave Javascript + * + * Copyright (c) 2008 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $ + * $Rev: 4663 $ + */ +(function(){if(window.jQuery)var _jQuery=window.jQuery;var jQuery=window.jQuery=function(selector,context){return new jQuery.prototype.init(selector,context);};if(window.$)var _$=window.$;window.$=jQuery;var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;var isSimple=/^.[^:#\[\.]*$/;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}else if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem)if(elem.id!=match[3])return jQuery().find(selector);else{this[0]=elem;this.length=1;return this;}else +selector=[];}}else +return new jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return new jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(selector.constructor==Array&&selector||(selector.jquery||selector.length&&selector!=window&&!selector.nodeType&&selector[0]!=undefined&&selector[0].nodeType)&&jQuery.makeArray(selector)||[selector]);},jquery:"1.2.3",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;this.each(function(i){if(this==elem)ret=i;});return ret;},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value==undefined)return this.length&&jQuery[type||"attr"](this[0],name)||undefined;else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else +return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else +selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return!selector?this:this.pushStack(jQuery.merge(this.get(),selector.constructor==String?jQuery(selector).get():selector.length!=undefined&&(!selector.nodeName||jQuery.nodeName(selector,"form"))?selector:[selector]));},is:function(selector){return selector?jQuery.multiFilter(selector,this).length>0:false;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=value.constructor==Array?value:[value];jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else +this.value=value;});},html:function(value){return value==undefined?(this.length?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value==null){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data==undefined&&this.length)data=jQuery.data(this[0],key);return data==null&&parts[1]?this.data(parts[0]):data;}else +return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script")){scripts=scripts.add(elem);}else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.prototype.init.prototype=jQuery.prototype;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else +jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==1){target=this;i=0;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else +jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret;function color(elem){if(!jQuery.browser.safari)return false;var ret=document.defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(elem.style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=elem.style.outline;elem.style.outline="0 solid black";elem.style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&elem.style&&elem.style[name])ret=elem.style[name];else if(document.defaultView&&document.defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var getComputedStyle=document.defaultView.getComputedStyle(elem,null);if(getComputedStyle&&!color(elem))ret=getComputedStyle.getPropertyValue(name);else{var swap=[],stack=[];for(var a=elem;a&&color(a);a=a.parentNode)stack.unshift(a);for(var i=0;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
    "]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
    ","
    "]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else +ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var fix=jQuery.isXMLDoc(elem)?{}:jQuery.props;if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(fix[name]){if(value!=undefined)elem[fix[name]]=value;return elem[fix[name]];}else if(jQuery.browser.msie&&name=="style")return jQuery.attr(elem.style,"cssText",value);else if(value==undefined&&jQuery.browser.msie&&jQuery.nodeName(elem,"form")&&(name=="action"||name=="method"))return elem.getAttributeNode(name).nodeValue;else if(elem.tagName){if(value!=undefined){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem.setAttribute(name,""+value);}if(jQuery.browser.msie&&/href|src/.test(name)&&!jQuery.isXMLDoc(elem))return elem.getAttribute(name,2);return elem.getAttribute(name);}else{if(name=="opacity"&&jQuery.browser.msie){if(value!=undefined){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseFloat(value).toString()=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100).toString():"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(value!=undefined)elem[name]=value;return elem[name];}},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(typeof array!="array")for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false;var re=quickChild;var m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[];var cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&(!elem||n!=elem))r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval!=undefined)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=function(){return fn.apply(this,arguments);};handler.data=data;handler.guid=fn.guid;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){var val;if(typeof jQuery=="undefined"||jQuery.event.triggered)return val;val=jQuery.event.handle.apply(arguments.callee.elem,arguments);return val;});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else +for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data||[]);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event)data.unshift(this.fix({type:type,target:elem}));data[0].type=type;if(exclusive)data[0].exclusive=true;if(jQuery.isFunction(jQuery.data(elem,"handle")))val=jQuery.data(elem,"handle").apply(elem,data);if(!fn&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val;event=jQuery.event.fix(event||window.event||{});var parts=event.type.split(".");event.type=parts[0];var handlers=jQuery.data(this,"events")&&jQuery.data(this,"events")[event.type],args=Array.prototype.slice.call(arguments,1);args.unshift(event);for(var j in handlers){var handler=handlers[j];args[0].handler=handler;args[0].data=handler.data;if(!parts[1]&&!event.exclusive||handler.type==parts[1]){var ret=handler.apply(this,args);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}if(jQuery.browser.msie)event.target=event.preventDefault=event.stopPropagation=event.handler=event.data=null;return val;},fix:function(event){var originalEvent=event;event=jQuery.extend({},originalEvent);event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=originalEvent.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;arguments[0].type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;arguments[0].type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){return this.each(function(){jQuery.event.add(this,type,function(event){jQuery(this).unbind(event);return(fn||data).apply(this,arguments);},fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){if(this[0])return jQuery.event.trigger(type,data,this[0],false,fn);return undefined;},toggle:function(){var args=arguments;return this.click(function(event){this.lastToggle=0==this.lastToggle?1:0;event.preventDefault();return args[this.lastToggle].apply(this,arguments)||false;});},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else +jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.apply(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
    ").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=(new Date).getTime();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){var jsonp,jsre=/=\?(&|$)/g,status,data;s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(s.type.toLowerCase()=="get"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&s.type.toLowerCase()=="get"){var ts=(new Date()).getTime();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&s.type.toLowerCase()=="get"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");if((!s.url.indexOf("http")||!s.url.indexOf("//"))&&s.dataType=="script"&&s.type.toLowerCase()=="get"){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xml=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();xml.open(s.type,s.url,s.async,s.username,s.password);try{if(s.data)xml.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xml.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xml.setRequestHeader("X-Requested-With","XMLHttpRequest");xml.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend)s.beforeSend(xml);if(s.global)jQuery.event.trigger("ajaxSend",[xml,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xml&&(xml.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xml)&&"error"||s.ifModified&&jQuery.httpNotModified(xml,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xml,s.dataType);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xml.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else +jQuery.handleError(s,xml,status);complete();if(s.async)xml=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xml){xml.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xml.send(s.data);}catch(e){jQuery.handleError(s,xml,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xml,s]);}function complete(){if(s.complete)s.complete(xml,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xml,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xml;},handleError:function(s,xml,status,e){if(s.error)s.error(xml,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xml,s,e]);},active:0,httpSuccess:function(r){try{return!r.status&&location.protocol=="file:"||(r.status>=200&&r.status<300)||r.status==304||r.status==1223||jQuery.browser.safari&&r.status==undefined;}catch(e){}return false;},httpNotModified:function(xml,url){try{var xmlRes=xml.getResponseHeader("Last-Modified");return xml.status==304||xmlRes==jQuery.lastModified[url]||jQuery.browser.safari&&xml.status==undefined;}catch(e){}return false;},httpData:function(r,type){var ct=r.getResponseHeader("content-type");var xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0;var data=xml?r.responseXML:r.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else +for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else +s.push(encodeURIComponent(j)+"="+encodeURIComponent(a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle(fn,fn2):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall);var hidden=jQuery(this).is(":hidden"),self=this;for(var p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return jQuery.isFunction(opt.complete)&&opt.complete.apply(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else +e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.apply(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(!elem)return undefined;type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",array?jQuery.makeArray(array):[]);return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].apply(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:{slow:600,fast:200}[opt.duration])||400;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.apply(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.apply(this.elem,[this.now,this]);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=(new Date()).getTime();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done&&jQuery.isFunction(this.options.complete))this.options.complete.apply(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.fx.step={scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}};jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),fixed=jQuery.css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&jQuery.css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(jQuery.css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&jQuery.css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||jQuery.css(offsetChild,"position")=="absolute"))||(mozilla&&jQuery.css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l)||0;top+=parseInt(t)||0;}return results;};})(); \ No newline at end of file diff --git a/view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.js b/view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.js new file mode 100644 index 000000000..eef6425e0 --- /dev/null +++ b/view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.js @@ -0,0 +1,472 @@ +/** + * jQuery lightBox plugin + * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) + * and adapted to me for use like a plugin from jQuery. + * @name jquery-lightbox-0.5.js + * @author Leandro Vieira Pinho - http://leandrovieira.com + * @version 0.5 + * @date April 11, 2008 + * @category jQuery plugin + * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com) + * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US + * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin + */ + +// Offering a Custom Alias suport - More info: http://docs.jquery.com/Plugins/Authoring#Custom_Alias +(function($) { + /** + * $ is an alias to jQuery object + * + */ + $.fn.lightBox = function(settings) { + // Settings to configure the jQuery lightBox plugin how you like + settings = jQuery.extend({ + // Configuration related to overlay + overlayBgColor: '#000', // (string) Background color to overlay; inform a hexadecimal value like: #RRGGBB. Where RR, GG, and BB are the hexadecimal values for the red, green, and blue values of the color. + overlayOpacity: 0.8, // (integer) Opacity value to overlay; inform: 0.X. Where X are number from 0 to 9 + // Configuration related to navigation + fixedNavigation: false, // (boolean) Boolean that informs if the navigation (next and prev button) will be fixed or not in the interface. + // Configuration related to images + imageLoading: 'images/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon + imageBtnPrev: 'images/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image + imageBtnNext: 'images/lightbox-btn-next.gif', // (string) Path and the name of the next button image + imageBtnClose: 'images/lightbox-btn-close.gif', // (string) Path and the name of the close btn + imageBlank: 'images/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel) + // Configuration related to container image box + containerBorderSize: 10, // (integer) If you adjust the padding in the CSS for the container, #lightbox-container-image-box, you will need to update this value + containerResizeSpeed: 400, // (integer) Specify the resize duration of container image. These number are miliseconds. 400 is default. + // Configuration related to texts in caption. For example: Image 2 of 8. You can alter either "Image" and "of" texts. + txtImage: 'Image', // (string) Specify text "Image" + txtOf: 'of', // (string) Specify text "of" + // Configuration related to keyboard navigation + keyToClose: 'c', // (string) (c = close) Letter to close the jQuery lightBox interface. Beyond this letter, the letter X and the SCAPE key is used to. + keyToPrev: 'p', // (string) (p = previous) Letter to show the previous image + keyToNext: 'n', // (string) (n = next) Letter to show the next image. + // Don´t alter these variables in any way + imageArray: [], + activeImage: 0 + },settings); + // Caching the jQuery object with all elements matched + var jQueryMatchedObj = this; // This, in this context, refer to jQuery object + /** + * Initializing the plugin calling the start function + * + * @return boolean false + */ + function _initialize() { + _start(this,jQueryMatchedObj); // This, in this context, refer to object (link) which the user have clicked + return false; // Avoid the browser following the link + } + /** + * Start the jQuery lightBox plugin + * + * @param object objClicked The object (link) whick the user have clicked + * @param object jQueryMatchedObj The jQuery object with all elements matched + */ + function _start(objClicked,jQueryMatchedObj) { + // Hime some elements to avoid conflict with overlay in IE. These elements appear above the overlay. + $('embed, object, select').css({ 'visibility' : 'hidden' }); + // Call the function to create the markup structure; style some elements; assign events in some elements. + _set_interface(); + // Unset total images in imageArray + settings.imageArray.length = 0; + // Unset image active information + settings.activeImage = 0; + // We have an image set? Or just an image? Let´s see it. + if ( jQueryMatchedObj.length == 1 ) { + settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title'))); + } else { + // Add an Array (as many as we have), with href and title atributes, inside the Array that storage the images references + for ( var i = 0; i < jQueryMatchedObj.length; i++ ) { + settings.imageArray.push(new Array(jQueryMatchedObj[i].getAttribute('href'),jQueryMatchedObj[i].getAttribute('title'))); + } + } + while ( settings.imageArray[settings.activeImage][0] != objClicked.getAttribute('href') ) { + settings.activeImage++; + } + // Call the function that prepares image exibition + _set_image_to_view(); + } + /** + * Create the jQuery lightBox plugin interface + * + * The HTML markup will be like that: +
    +
    + + +
    + * + */ + function _set_interface() { + // Apply the HTML markup into body tag + $('body').append('
    '); + // Get page sizes + var arrPageSizes = ___getPageSize(); + // Style overlay and show it + $('#jquery-overlay').css({ + backgroundColor: settings.overlayBgColor, + opacity: settings.overlayOpacity, + width: arrPageSizes[0], + height: arrPageSizes[1] + }).fadeIn(); + // Get page scroll + var arrPageScroll = ___getPageScroll(); + // Calculate top and left offset for the jquery-lightbox div object and show it + $('#jquery-lightbox').css({ + top: arrPageScroll[1] + (arrPageSizes[3] / 10), + left: arrPageScroll[0] + }).show(); + // Assigning click events in elements to close overlay + $('#jquery-overlay,#jquery-lightbox').click(function() { + _finish(); + }); + // Assign the _finish function to lightbox-loading-link and lightbox-secNav-btnClose objects + $('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function() { + _finish(); + return false; + }); + // If window was resized, calculate the new overlay dimensions + $(window).resize(function() { + // Get page sizes + var arrPageSizes = ___getPageSize(); + // Style overlay and show it + $('#jquery-overlay').css({ + width: arrPageSizes[0], + height: arrPageSizes[1] + }); + // Get page scroll + var arrPageScroll = ___getPageScroll(); + // Calculate top and left offset for the jquery-lightbox div object and show it + $('#jquery-lightbox').css({ + top: arrPageScroll[1] + (arrPageSizes[3] / 10), + left: arrPageScroll[0] + }); + }); + } + /** + * Prepares image exibition; doing a image´s preloader to calculate it´s size + * + */ + function _set_image_to_view() { // show the loading + // Show the loading + $('#lightbox-loading').show(); + if ( settings.fixedNavigation ) { + $('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide(); + } else { + // Hide some elements + $('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide(); + } + // Image preload process + var objImagePreloader = new Image(); + objImagePreloader.onload = function() { + $('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]); + // Perfomance an effect in the image container resizing it + _resize_container_image_box(objImagePreloader.width,objImagePreloader.height); + // clear onLoad, IE behaves irratically with animated gifs otherwise + objImagePreloader.onload=function(){}; + }; + objImagePreloader.src = settings.imageArray[settings.activeImage][0]; + }; + /** + * Perfomance an effect in the image container resizing it + * + * @param integer intImageWidth The image´s width that will be showed + * @param integer intImageHeight The image´s height that will be showed + */ + function _resize_container_image_box(intImageWidth,intImageHeight) { + // Get current width and height + var intCurrentWidth = $('#lightbox-container-image-box').width(); + var intCurrentHeight = $('#lightbox-container-image-box').height(); + // Get the width and height of the selected image plus the padding + var intWidth = (intImageWidth + (settings.containerBorderSize * 2)); // Plus the image´s width and the left and right padding value + var intHeight = (intImageHeight + (settings.containerBorderSize * 2)); // Plus the image´s height and the left and right padding value + // Diferences + var intDiffW = intCurrentWidth - intWidth; + var intDiffH = intCurrentHeight - intHeight; + // Perfomance the effect + $('#lightbox-container-image-box').animate({ width: intWidth, height: intHeight },settings.containerResizeSpeed,function() { _show_image(); }); + if ( ( intDiffW == 0 ) && ( intDiffH == 0 ) ) { + if ( $.browser.msie ) { + ___pause(250); + } else { + ___pause(100); + } + } + $('#lightbox-container-image-data-box').css({ width: intImageWidth }); + $('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ height: intImageHeight + (settings.containerBorderSize * 2) }); + }; + /** + * Show the prepared image + * + */ + function _show_image() { + $('#lightbox-loading').hide(); + $('#lightbox-image').fadeIn(function() { + _show_image_data(); + _set_navigation(); + }); + _preload_neighbor_images(); + }; + /** + * Show the image information + * + */ + function _show_image_data() { + $('#lightbox-container-image-data-box').slideDown('fast'); + $('#lightbox-image-details-caption').hide(); + if ( settings.imageArray[settings.activeImage][1] ) { + $('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show(); + } + // If we have a image set, display 'Image X of X' + if ( settings.imageArray.length > 1 ) { + $('#lightbox-image-details-currentNumber').html(settings.txtImage + ' ' + ( settings.activeImage + 1 ) + ' ' + settings.txtOf + ' ' + settings.imageArray.length).show(); + } + } + /** + * Display the button navigations + * + */ + function _set_navigation() { + $('#lightbox-nav').show(); + + // Instead to define this configuration in CSS file, we define here. And it´s need to IE. Just. + $('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' }); + + // Show the prev button, if not the first image in set + if ( settings.activeImage != 0 ) { + if ( settings.fixedNavigation ) { + $('#lightbox-nav-btnPrev').css({ 'background' : 'url(' + settings.imageBtnPrev + ') left 15% no-repeat' }) + .unbind() + .bind('click',function() { + settings.activeImage = settings.activeImage - 1; + _set_image_to_view(); + return false; + }); + } else { + // Show the images button for Next buttons + $('#lightbox-nav-btnPrev').unbind().hover(function() { + $(this).css({ 'background' : 'url(' + settings.imageBtnPrev + ') left 15% no-repeat' }); + },function() { + $(this).css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' }); + }).show().bind('click',function() { + settings.activeImage = settings.activeImage - 1; + _set_image_to_view(); + return false; + }); + } + } + + // Show the next button, if not the last image in set + if ( settings.activeImage != ( settings.imageArray.length -1 ) ) { + if ( settings.fixedNavigation ) { + $('#lightbox-nav-btnNext').css({ 'background' : 'url(' + settings.imageBtnNext + ') right 15% no-repeat' }) + .unbind() + .bind('click',function() { + settings.activeImage = settings.activeImage + 1; + _set_image_to_view(); + return false; + }); + } else { + // Show the images button for Next buttons + $('#lightbox-nav-btnNext').unbind().hover(function() { + $(this).css({ 'background' : 'url(' + settings.imageBtnNext + ') right 15% no-repeat' }); + },function() { + $(this).css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' }); + }).show().bind('click',function() { + settings.activeImage = settings.activeImage + 1; + _set_image_to_view(); + return false; + }); + } + } + // Enable keyboard navigation + _enable_keyboard_navigation(); + } + /** + * Enable a support to keyboard navigation + * + */ + function _enable_keyboard_navigation() { + $(document).keydown(function(objEvent) { + _keyboard_action(objEvent); + }); + } + /** + * Disable the support to keyboard navigation + * + */ + function _disable_keyboard_navigation() { + $(document).unbind(); + } + /** + * Perform the keyboard actions + * + */ + function _keyboard_action(objEvent) { + // To ie + if ( objEvent == null ) { + keycode = event.keyCode; + escapeKey = 27; + // To Mozilla + } else { + keycode = objEvent.keyCode; + escapeKey = objEvent.DOM_VK_ESCAPE; + } + // Get the key in lower case form + key = String.fromCharCode(keycode).toLowerCase(); + // Verify the keys to close the ligthBox + if ( ( key == settings.keyToClose ) || ( key == 'x' ) || ( keycode == escapeKey ) ) { + _finish(); + } + // Verify the key to show the previous image + if ( ( key == settings.keyToPrev ) || ( keycode == 37 ) ) { + // If we´re not showing the first image, call the previous + if ( settings.activeImage != 0 ) { + settings.activeImage = settings.activeImage - 1; + _set_image_to_view(); + _disable_keyboard_navigation(); + } + } + // Verify the key to show the next image + if ( ( key == settings.keyToNext ) || ( keycode == 39 ) ) { + // If we´re not showing the last image, call the next + if ( settings.activeImage != ( settings.imageArray.length - 1 ) ) { + settings.activeImage = settings.activeImage + 1; + _set_image_to_view(); + _disable_keyboard_navigation(); + } + } + } + /** + * Preload prev and next images being showed + * + */ + function _preload_neighbor_images() { + if ( (settings.imageArray.length -1) > settings.activeImage ) { + objNext = new Image(); + objNext.src = settings.imageArray[settings.activeImage + 1][0]; + } + if ( settings.activeImage > 0 ) { + objPrev = new Image(); + objPrev.src = settings.imageArray[settings.activeImage -1][0]; + } + } + /** + * Remove jQuery lightBox plugin HTML markup + * + */ + function _finish() { + $('#jquery-lightbox').remove(); + $('#jquery-overlay').fadeOut(function() { $('#jquery-overlay').remove(); }); + // Show some elements to avoid conflict with overlay in IE. These elements appear above the overlay. + $('embed, object, select').css({ 'visibility' : 'visible' }); + } + /** + / THIRD FUNCTION + * getPageSize() by quirksmode.com + * + * @return Array Return an array with page width, height and window width, height + */ + function ___getPageSize() { + var xScroll, yScroll; + if (window.innerHeight && window.scrollMaxY) { + xScroll = window.innerWidth + window.scrollMaxX; + yScroll = window.innerHeight + window.scrollMaxY; + } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac + xScroll = document.body.scrollWidth; + yScroll = document.body.scrollHeight; + } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari + xScroll = document.body.offsetWidth; + yScroll = document.body.offsetHeight; + } + var windowWidth, windowHeight; + if (self.innerHeight) { // all except Explorer + if(document.documentElement.clientWidth){ + windowWidth = document.documentElement.clientWidth; + } else { + windowWidth = self.innerWidth; + } + windowHeight = self.innerHeight; + } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode + windowWidth = document.documentElement.clientWidth; + windowHeight = document.documentElement.clientHeight; + } else if (document.body) { // other Explorers + windowWidth = document.body.clientWidth; + windowHeight = document.body.clientHeight; + } + // for small pages with total height less then height of the viewport + if(yScroll < windowHeight){ + pageHeight = windowHeight; + } else { + pageHeight = yScroll; + } + // for small pages with total width less then width of the viewport + if(xScroll < windowWidth){ + pageWidth = xScroll; + } else { + pageWidth = windowWidth; + } + arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight); + return arrayPageSize; + }; + /** + / THIRD FUNCTION + * getPageScroll() by quirksmode.com + * + * @return Array Return an array with x,y page scroll values. + */ + function ___getPageScroll() { + var xScroll, yScroll; + if (self.pageYOffset) { + yScroll = self.pageYOffset; + xScroll = self.pageXOffset; + } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict + yScroll = document.documentElement.scrollTop; + xScroll = document.documentElement.scrollLeft; + } else if (document.body) {// all other Explorers + yScroll = document.body.scrollTop; + xScroll = document.body.scrollLeft; + } + arrayPageScroll = new Array(xScroll,yScroll); + return arrayPageScroll; + }; + /** + * Stop the code execution from a escified time in milisecond + * + */ + function ___pause(ms) { + var date = new Date(); + curDate = null; + do { var curDate = new Date(); } + while ( curDate - date < ms); + }; + // Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once + return this.unbind('click').click(_initialize); + }; +})(jQuery); // Call and execute the function immediately passing the jQuery object \ No newline at end of file diff --git a/view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.min.js b/view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.min.js new file mode 100644 index 000000000..5f13b0bf6 --- /dev/null +++ b/view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.min.js @@ -0,0 +1,42 @@ +/** + * jQuery lightBox plugin + * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) + * and adapted to me for use like a plugin from jQuery. + * @name jquery-lightbox-0.5.js + * @author Leandro Vieira Pinho - http://leandrovieira.com + * @version 0.5 + * @date April 11, 2008 + * @category jQuery plugin + * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com) + * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US + * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin + */ +(function($){$.fn.lightBox=function(settings){settings=jQuery.extend({overlayBgColor:'#000',overlayOpacity:0.8,fixedNavigation:false,imageLoading:'images/lightbox-ico-loading.gif',imageBtnPrev:'images/lightbox-btn-prev.gif',imageBtnNext:'images/lightbox-btn-next.gif',imageBtnClose:'images/lightbox-btn-close.gif',imageBlank:'images/lightbox-blank.gif',containerBorderSize:10,containerResizeSpeed:400,txtImage:'Image',txtOf:'of',keyToClose:'c',keyToPrev:'p',keyToNext:'n',imageArray:[],activeImage:0},settings);var jQueryMatchedObj=this;function _initialize(){_start(this,jQueryMatchedObj);return false;} +function _start(objClicked,jQueryMatchedObj){$('embed, object, select').css({'visibility':'hidden'});_set_interface();settings.imageArray.length=0;settings.activeImage=0;if(jQueryMatchedObj.length==1){settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title')));}else{for(var i=0;i
    ');var arrPageSizes=___getPageSize();$('#jquery-overlay').css({backgroundColor:settings.overlayBgColor,opacity:settings.overlayOpacity,width:arrPageSizes[0],height:arrPageSizes[1]}).fadeIn();var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]}).show();$('#jquery-overlay,#jquery-lightbox').click(function(){_finish();});$('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function(){_finish();return false;});$(window).resize(function(){var arrPageSizes=___getPageSize();$('#jquery-overlay').css({width:arrPageSizes[0],height:arrPageSizes[1]});var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]});});} +function _set_image_to_view(){$('#lightbox-loading').show();if(settings.fixedNavigation){$('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}else{$('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();} +var objImagePreloader=new Image();objImagePreloader.onload=function(){$('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);_resize_container_image_box(objImagePreloader.width,objImagePreloader.height);objImagePreloader.onload=function(){};};objImagePreloader.src=settings.imageArray[settings.activeImage][0];};function _resize_container_image_box(intImageWidth,intImageHeight){var intCurrentWidth=$('#lightbox-container-image-box').width();var intCurrentHeight=$('#lightbox-container-image-box').height();var intWidth=(intImageWidth+(settings.containerBorderSize*2));var intHeight=(intImageHeight+(settings.containerBorderSize*2));var intDiffW=intCurrentWidth-intWidth;var intDiffH=intCurrentHeight-intHeight;$('#lightbox-container-image-box').animate({width:intWidth,height:intHeight},settings.containerResizeSpeed,function(){_show_image();});if((intDiffW==0)&&(intDiffH==0)){if($.browser.msie){___pause(250);}else{___pause(100);}} +$('#lightbox-container-image-data-box').css({width:intImageWidth});$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({height:intImageHeight+(settings.containerBorderSize*2)});};function _show_image(){$('#lightbox-loading').hide();$('#lightbox-image').fadeIn(function(){_show_image_data();_set_navigation();});_preload_neighbor_images();};function _show_image_data(){$('#lightbox-container-image-data-box').slideDown('fast');$('#lightbox-image-details-caption').hide();if(settings.imageArray[settings.activeImage][1]){$('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show();} +if(settings.imageArray.length>1){$('#lightbox-image-details-currentNumber').html(settings.txtImage+' '+(settings.activeImage+1)+' '+settings.txtOf+' '+settings.imageArray.length).show();}} +function _set_navigation(){$('#lightbox-nav').show();$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({'background':'transparent url('+settings.imageBlank+') no-repeat'});if(settings.activeImage!=0){if(settings.fixedNavigation){$('#lightbox-nav-btnPrev').css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnPrev').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}} +if(settings.activeImage!=(settings.imageArray.length-1)){if(settings.fixedNavigation){$('#lightbox-nav-btnNext').css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnNext').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}} +_enable_keyboard_navigation();} +function _enable_keyboard_navigation(){$(document).keydown(function(objEvent){_keyboard_action(objEvent);});} +function _disable_keyboard_navigation(){$(document).unbind();} +function _keyboard_action(objEvent){if(objEvent==null){keycode=event.keyCode;escapeKey=27;}else{keycode=objEvent.keyCode;escapeKey=objEvent.DOM_VK_ESCAPE;} +key=String.fromCharCode(keycode).toLowerCase();if((key==settings.keyToClose)||(key=='x')||(keycode==escapeKey)){_finish();} +if((key==settings.keyToPrev)||(keycode==37)){if(settings.activeImage!=0){settings.activeImage=settings.activeImage-1;_set_image_to_view();_disable_keyboard_navigation();}} +if((key==settings.keyToNext)||(keycode==39)){if(settings.activeImage!=(settings.imageArray.length-1)){settings.activeImage=settings.activeImage+1;_set_image_to_view();_disable_keyboard_navigation();}}} +function _preload_neighbor_images(){if((settings.imageArray.length-1)>settings.activeImage){objNext=new Image();objNext.src=settings.imageArray[settings.activeImage+1][0];} +if(settings.activeImage>0){objPrev=new Image();objPrev.src=settings.imageArray[settings.activeImage-1][0];}} +function _finish(){$('#jquery-lightbox').remove();$('#jquery-overlay').fadeOut(function(){$('#jquery-overlay').remove();});$('embed, object, select').css({'visibility':'visible'});} +function ___getPageSize(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=window.innerWidth+window.scrollMaxX;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;} +var windowWidth,windowHeight;if(self.innerHeight){if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;}else{windowWidth=self.innerWidth;} +windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;} +if(yScroll35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(6($){$.2N.3g=6(4){4=23.2H({2B:\'#34\',2g:0.8,1d:F,1M:\'18/5-33-Y.16\',1v:\'18/5-1u-2Q.16\',1E:\'18/5-1u-2L.16\',1W:\'18/5-1u-2I.16\',19:\'18/5-2F.16\',1f:10,2A:3d,2s:\'1j\',2o:\'32\',2j:\'c\',2f:\'p\',2d:\'n\',h:[],9:0},4);f I=N;6 20(){1X(N,I);u F}6 1X(1e,I){$(\'1U, 1S, 1R\').l({\'1Q\':\'2E\'});1O();4.h.B=0;4.9=0;7(I.B==1){4.h.1J(v 1m(1e.17(\'J\'),1e.17(\'2v\')))}j{36(f i=0;i<1w g="5-b"><1w W="\'+4.1M+\'"><1i g="5-b-A-1t"><1i g="5-b-A-1g"><1w W="\'+4.1W+\'">\');f z=1D();$(\'#q-13\').l({2K:4.2B,2J:4.2g,S:z[0],P:z[1]}).1V();f R=1p();$(\'#q-5\').l({1T:R[1]+(z[3]/10),1c:R[0]}).E();$(\'#q-13,#q-5\').C(6(){1a()});$(\'#5-Y-29,#5-1s-22\').C(6(){1a();u F});$(G).2G(6(){f z=1D();$(\'#q-13\').l({S:z[0],P:z[1]});f R=1p();$(\'#q-5\').l({1T:R[1]+(z[3]/10),1c:R[0]})})}6 D(){$(\'#5-Y\').E();7(4.1d){$(\'#5-b,#5-s-b-T-w,#5-b-A-1g\').1b()}j{$(\'#5-b,#5-k,#5-k-V,#5-k-X,#5-s-b-T-w,#5-b-A-1g\').1b()}f Q=v 1j();Q.1P=6(){$(\'#5-b\').2D(\'W\',4.h[4.9][0]);1N(Q.S,Q.P);Q.1P=6(){}};Q.W=4.h[4.9][0]};6 1N(1o,1r){f 1L=$(\'#5-s-b-w\').S();f 1K=$(\'#5-s-b-w\').P();f 1n=(1o+(4.1f*2));f 1y=(1r+(4.1f*2));f 1I=1L-1n;f 2z=1K-1y;$(\'#5-s-b-w\').3f({S:1n,P:1y},4.2A,6(){2y()});7((1I==0)&&(2z==0)){7($.3e.3c){1H(3b)}j{1H(3a)}}$(\'#5-s-b-T-w\').l({S:1o});$(\'#5-k-V,#5-k-X\').l({P:1r+(4.1f*2)})};6 2y(){$(\'#5-Y\').1b();$(\'#5-b\').1V(6(){2u();2t()});2r()};6 2u(){$(\'#5-s-b-T-w\').38(\'35\');$(\'#5-b-A-1t\').1b();7(4.h[4.9][1]){$(\'#5-b-A-1t\').2p(4.h[4.9][1]).E()}7(4.h.B>1){$(\'#5-b-A-1g\').2p(4.2s+\' \'+(4.9+1)+\' \'+4.2o+\' \'+4.h.B).E()}}6 2t(){$(\'#5-k\').E();$(\'#5-k-V,#5-k-X\').l({\'K\':\'1C M(\'+4.19+\') L-O\'});7(4.9!=0){7(4.1d){$(\'#5-k-V\').l({\'K\':\'M(\'+4.1v+\') 1c 15% L-O\'}).11().1k(\'C\',6(){4.9=4.9-1;D();u F})}j{$(\'#5-k-V\').11().2m(6(){$(N).l({\'K\':\'M(\'+4.1v+\') 1c 15% L-O\'})},6(){$(N).l({\'K\':\'1C M(\'+4.19+\') L-O\'})}).E().1k(\'C\',6(){4.9=4.9-1;D();u F})}}7(4.9!=(4.h.B-1)){7(4.1d){$(\'#5-k-X\').l({\'K\':\'M(\'+4.1E+\') 2l 15% L-O\'}).11().1k(\'C\',6(){4.9=4.9+1;D();u F})}j{$(\'#5-k-X\').11().2m(6(){$(N).l({\'K\':\'M(\'+4.1E+\') 2l 15% L-O\'})},6(){$(N).l({\'K\':\'1C M(\'+4.19+\') L-O\'})}).E().1k(\'C\',6(){4.9=4.9+1;D();u F})}}2k()}6 2k(){$(d).30(6(12){2i(12)})}6 1G(){$(d).11()}6 2i(12){7(12==2h){U=2Z.2e;1x=27}j{U=12.2e;1x=12.2Y}14=2X.2W(U).2U();7((14==4.2j)||(14==\'x\')||(U==1x)){1a()}7((14==4.2f)||(U==37)){7(4.9!=0){4.9=4.9-1;D();1G()}}7((14==4.2d)||(U==39)){7(4.9!=(4.h.B-1)){4.9=4.9+1;D();1G()}}}6 2r(){7((4.h.B-1)>4.9){2c=v 1j();2c.W=4.h[4.9+1][0]}7(4.9>0){2b=v 1j();2b.W=4.h[4.9-1][0]}}6 1a(){$(\'#q-5\').2a();$(\'#q-13\').2T(6(){$(\'#q-13\').2a()});$(\'1U, 1S, 1R\').l({\'1Q\':\'2S\'})}6 1D(){f o,r;7(G.1h&&G.28){o=G.26+G.2R;r=G.1h+G.28}j 7(d.m.25>d.m.24){o=d.m.2P;r=d.m.25}j{o=d.m.2O;r=d.m.24}f y,H;7(Z.1h){7(d.t.1l){y=d.t.1l}j{y=Z.26}H=Z.1h}j 7(d.t&&d.t.1A){y=d.t.1l;H=d.t.1A}j 7(d.m){y=d.m.1l;H=d.m.1A}7(r +

    $album.1

    + + + +
    + {{ if $prevlink }}{{ endif }} + + {{ if $nextlink }}{{ endif }} +
    + +
    +
    $desc
    +{{ if $tags }} +
    $tags.0
    +
    $tags.1
    +{{ endif }} +{{ if $tags.2 }}{{ endif }} + +{{ if $edit }}$edit{{ endif }} \ No newline at end of file diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index 51b173f2a..81c056bf3 100644 --- a/view/theme/diabook-blue/style.css +++ b/view/theme/diabook-blue/style.css @@ -247,7 +247,7 @@ background-image: url("../../../images/icons/10/edit.png"); } .icon.s10.star { - background-image: url("../../../images/icons/10/star.png"); + background-image: url("../../../images/star_dummy.png"); } .icon.s10.menu { background-image: url("../../../images/icons/10/menu.png"); @@ -285,7 +285,7 @@ background-image: url("../../../images/icons/16/edit.png"); }*/ .icon.s16.star { - background-image: url("../../../images/icons/16/star.png"); + background-image: url("../../../images/star_dummy.png"); } .icon.s16.menu { background-image: url("../../../images/icons/16/menu.png"); @@ -323,7 +323,7 @@ background-image: url("../../../images/icons/22/edit.png"); } .icon.s22.star { - background-image: url("../../../images/icons/22/star.png"); + background-image: url("../../../images/star_dummy.png"); } .icon.s22.menu { background-image: url("../../../images/icons/22/menu.png"); @@ -361,7 +361,7 @@ background-image: url("../../../images/icons/48/edit.png"); } .icon.s48.star { - background-image: url("../../../images/icons/48/star.png"); + background-image: url("../../../images/star_dummy.png"); } .icon.s48.menu { background-image: url("../../../images/icons/48/menu.png"); @@ -438,7 +438,7 @@ a:hover { clear: both; } .fakelink { - color: #3465A4; + color: #1872A2; /* color: #3e3e8c; */ text-decoration: none; cursor: pointer; @@ -647,7 +647,7 @@ nav .nav-menu-icon { position: relative; height: 22px; padding: 5px; - margin: 0px 7px; + margin: 0px 5px; -moz-border-radius: 5px 5px 0 0; -webkit-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; @@ -657,7 +657,7 @@ nav .nav-menu-icon:hover { position: relative; height: 22px; padding: 5px; - margin: 0px 7px; + margin: 0px 5px; -moz-border-radius: 5px 5px 0 0; -webkit-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; @@ -716,21 +716,17 @@ nav #nav-user-linkmenu nav #nav-user-linkmenu{ margin-right: 0px; } -nav #nav-home-link{ +nav #nav-home-link, #nav-directory-link, #nav-apps-link{ margin-left: 0px; + margin-right: 0px; font-weight: bold; + margin: 3px 5px; } nav #nav-directory-link{ - margin-left: 0px; - margin-right: 0px; - font-weight: bold; - margin: 3px 15px; + margin-right: 0px; } -nav #nav-apps-link{ - margin-left: 0px; - margin-right: 0px; - font-weight: bold; - margin: 3px 15px; +nav #nav-home-link{ + margin-left: 0px; } nav #nav-help-link .menu-popup, nav #nav-search-link .menu-popup, @@ -1048,6 +1044,12 @@ section { width: 800px; padding: 0px 0px 0px 12px; } +body .pageheader{ + text-align: center; + margin-top: 25px; + font-size: 0px; + } + #id_username { width: 173px; } @@ -1306,14 +1308,14 @@ section { } .tag { /*background: url("../../../images/tag_b.png") repeat-x center left;*/ - color: #3465A4; + color: #999; padding-left: 3px; font-size: 12px; } .tag a { padding-right: 5px; /*background: url("../../../images/tag.png") no-repeat center right;*/ - color: #3465A4; + color: #999; } .wwto { position: absolute !important; @@ -1988,10 +1990,24 @@ box-shadow: 1px 1px 5px 0; } #prvmail-submit { - float: left; + float: right; margin-top: 10px; - margin-right: 30px; } + +#prvmail-subject +{ +background: none repeat scroll 0 0 #FFFFFF; +border: 1px solid #CCCCCC; +border-radius: 5px 5px 5px 5px; +font-weight: bold; +height: 20px; +margin: 0 0 5px; +vertical-align: middle; +} +#prvmail-form{ + width: 597px; + } + #prvmail-upload-wrapper, #prvmail-link-wrapper, #prvmail-rotator-wrapper { @@ -2179,7 +2195,9 @@ a.mail-list-link { padding: 10px; float: left; } - +.lightbox{ + float: left; + } #photo-photo { float: left; } diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php index 0a20c9fbc..1617dd7f0 100755 --- a/view/theme/diabook-blue/theme.php +++ b/view/theme/diabook-blue/theme.php @@ -12,7 +12,14 @@ $a->theme_info = array( ); $a->page['htmlhead'] .= <<< EOT + + + + + + + //appsmenu + $('html').click(function() { + $('#nav-apps-link').removeClass('selected'); + document.getElementById( "nav-apps-menu" ).style.display = "none"; + }); + + $('#nav-apps-link').click(function(event){ + event.stopPropagation(); + }); + + $(function() { + $('a.lightbox').lightBox(); // Select all links with lightbox class +}); + + + EOT; diff --git a/view/theme/diabook/experimental b/view/theme/diabook/experimental deleted file mode 100755 index e69de29bb..000000000 diff --git a/view/theme/diabook/icons/isstar.png b/view/theme/diabook/icons/isstar.png deleted file mode 100644 index c955b25b5..000000000 Binary files a/view/theme/diabook/icons/isstar.png and /dev/null differ diff --git a/view/theme/diabook/icons/next.png b/view/theme/diabook/icons/next.png new file mode 100755 index 000000000..7b5e25b90 Binary files /dev/null and b/view/theme/diabook/icons/next.png differ diff --git a/view/theme/diabook/icons/prev.png b/view/theme/diabook/icons/prev.png new file mode 100755 index 000000000..55c1464ba Binary files /dev/null and b/view/theme/diabook/icons/prev.png differ diff --git a/view/theme/diabook/icons/unglobe.png b/view/theme/diabook/icons/unglobe.png deleted file mode 100755 index aa9b0e189..000000000 Binary files a/view/theme/diabook/icons/unglobe.png and /dev/null differ diff --git a/view/theme/diabook/lightbox/css/jquery.lightbox-0.5.css b/view/theme/diabook/lightbox/css/jquery.lightbox-0.5.css new file mode 100644 index 000000000..c7c3d1cb1 --- /dev/null +++ b/view/theme/diabook/lightbox/css/jquery.lightbox-0.5.css @@ -0,0 +1,101 @@ +/** + * jQuery lightBox plugin + * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) + * and adapted to me for use like a plugin from jQuery. + * @name jquery-lightbox-0.5.css + * @author Leandro Vieira Pinho - http://leandrovieira.com + * @version 0.5 + * @date April 11, 2008 + * @category jQuery plugin + * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com) + * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US + * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin + */ +#jquery-overlay { + position: absolute; + top: 0; + left: 0; + z-index: 90; + width: 100%; + height: 500px; +} +#jquery-lightbox { + position: absolute; + top: 0; + left: 0; + width: 100%; + z-index: 100; + text-align: center; + line-height: 0; +} +#jquery-lightbox a img { border: none; } +#lightbox-container-image-box { + position: relative; + background-color: #fff; + width: 250px; + height: 250px; + margin: 0 auto; +} +#lightbox-container-image { padding: 10px; } +#lightbox-loading { + position: absolute; + top: 40%; + left: 0%; + height: 25%; + width: 100%; + text-align: center; + line-height: 0; +} +#lightbox-nav { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 10; +} +#lightbox-container-image-box > #lightbox-nav { left: 0; } +#lightbox-nav a { outline: none;} +#lightbox-nav-btnPrev, #lightbox-nav-btnNext { + width: 49%; + height: 100%; + zoom: 1; + display: block; +} +#lightbox-nav-btnPrev { + left: 0; + float: left; +} +#lightbox-nav-btnNext { + right: 0; + float: right; +} +#lightbox-container-image-data-box { + font: 10px Verdana, Helvetica, sans-serif; + background-color: #fff; + margin: 0 auto; + line-height: 1.4em; + overflow: auto; + width: 100%; + padding: 0 10px 0; +} +#lightbox-container-image-data { + padding: 0 10px; + color: #666; +} +#lightbox-container-image-data #lightbox-image-details { + width: 70%; + float: left; + text-align: left; +} +#lightbox-image-details-caption { font-weight: bold; } +#lightbox-image-details-currentNumber { + display: block; + clear: left; + padding-bottom: 1.0em; +} +#lightbox-secNav-btnClose { + width: 66px; + float: right; + padding-bottom: 0.7em; +} \ No newline at end of file diff --git a/view/theme/diabook/lightbox/images/lightbox-blank.gif b/view/theme/diabook/lightbox/images/lightbox-blank.gif new file mode 100644 index 000000000..1d11fa9ad Binary files /dev/null and b/view/theme/diabook/lightbox/images/lightbox-blank.gif differ diff --git a/view/theme/diabook/lightbox/images/lightbox-btn-close.gif b/view/theme/diabook/lightbox/images/lightbox-btn-close.gif new file mode 100644 index 000000000..33bcf517a Binary files /dev/null and b/view/theme/diabook/lightbox/images/lightbox-btn-close.gif differ diff --git a/view/theme/diabook/lightbox/images/lightbox-btn-next.gif b/view/theme/diabook/lightbox/images/lightbox-btn-next.gif new file mode 100644 index 000000000..a0d4fcf84 Binary files /dev/null and b/view/theme/diabook/lightbox/images/lightbox-btn-next.gif differ diff --git a/view/theme/diabook/lightbox/images/lightbox-btn-prev.gif b/view/theme/diabook/lightbox/images/lightbox-btn-prev.gif new file mode 100644 index 000000000..040ee5992 Binary files /dev/null and b/view/theme/diabook/lightbox/images/lightbox-btn-prev.gif differ diff --git a/view/theme/diabook/lightbox/images/lightbox-ico-loading.gif b/view/theme/diabook/lightbox/images/lightbox-ico-loading.gif new file mode 100644 index 000000000..4f1429c06 Binary files /dev/null and b/view/theme/diabook/lightbox/images/lightbox-ico-loading.gif differ diff --git a/view/theme/diabook/lightbox/index.htm b/view/theme/diabook/lightbox/index.htm new file mode 100644 index 000000000..5daa72a0f --- /dev/null +++ b/view/theme/diabook/lightbox/index.htm @@ -0,0 +1,78 @@ + + + + + jQuery lightBox plugin + + + + + + + + + + + + + + + + +

    Example

    +

    Click in the image and see the jQuery lightBox plugin in action.

    + + + + \ No newline at end of file diff --git a/view/theme/diabook/lightbox/js/jquery.js b/view/theme/diabook/lightbox/js/jquery.js new file mode 100644 index 000000000..3747929d8 --- /dev/null +++ b/view/theme/diabook/lightbox/js/jquery.js @@ -0,0 +1,32 @@ +/* + * jQuery 1.2.3 - New Wave Javascript + * + * Copyright (c) 2008 John Resig (jquery.com) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $ + * $Rev: 4663 $ + */ +(function(){if(window.jQuery)var _jQuery=window.jQuery;var jQuery=window.jQuery=function(selector,context){return new jQuery.prototype.init(selector,context);};if(window.$)var _$=window.$;window.$=jQuery;var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;var isSimple=/^.[^:#\[\.]*$/;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}else if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem)if(elem.id!=match[3])return jQuery().find(selector);else{this[0]=elem;this.length=1;return this;}else +selector=[];}}else +return new jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return new jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(selector.constructor==Array&&selector||(selector.jquery||selector.length&&selector!=window&&!selector.nodeType&&selector[0]!=undefined&&selector[0].nodeType)&&jQuery.makeArray(selector)||[selector]);},jquery:"1.2.3",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;this.each(function(i){if(this==elem)ret=i;});return ret;},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value==undefined)return this.length&&jQuery[type||"attr"](this[0],name)||undefined;else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else +return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else +selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return!selector?this:this.pushStack(jQuery.merge(this.get(),selector.constructor==String?jQuery(selector).get():selector.length!=undefined&&(!selector.nodeName||jQuery.nodeName(selector,"form"))?selector:[selector]));},is:function(selector){return selector?jQuery.multiFilter(selector,this).length>0:false;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=value.constructor==Array?value:[value];jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else +this.value=value;});},html:function(value){return value==undefined?(this.length?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value==null){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data==undefined&&this.length)data=jQuery.data(this[0],key);return data==null&&parts[1]?this.data(parts[0]):data;}else +return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script")){scripts=scripts.add(elem);}else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.prototype.init.prototype=jQuery.prototype;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else +jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==1){target=this;i=0;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else +jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret;function color(elem){if(!jQuery.browser.safari)return false;var ret=document.defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(elem.style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=elem.style.outline;elem.style.outline="0 solid black";elem.style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&elem.style&&elem.style[name])ret=elem.style[name];else if(document.defaultView&&document.defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var getComputedStyle=document.defaultView.getComputedStyle(elem,null);if(getComputedStyle&&!color(elem))ret=getComputedStyle.getPropertyValue(name);else{var swap=[],stack=[];for(var a=elem;a&&color(a);a=a.parentNode)stack.unshift(a);for(var i=0;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
    "]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
    ","
    "]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else +ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var fix=jQuery.isXMLDoc(elem)?{}:jQuery.props;if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(fix[name]){if(value!=undefined)elem[fix[name]]=value;return elem[fix[name]];}else if(jQuery.browser.msie&&name=="style")return jQuery.attr(elem.style,"cssText",value);else if(value==undefined&&jQuery.browser.msie&&jQuery.nodeName(elem,"form")&&(name=="action"||name=="method"))return elem.getAttributeNode(name).nodeValue;else if(elem.tagName){if(value!=undefined){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem.setAttribute(name,""+value);}if(jQuery.browser.msie&&/href|src/.test(name)&&!jQuery.isXMLDoc(elem))return elem.getAttribute(name,2);return elem.getAttribute(name);}else{if(name=="opacity"&&jQuery.browser.msie){if(value!=undefined){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseFloat(value).toString()=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100).toString():"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(value!=undefined)elem[name]=value;return elem[name];}},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(typeof array!="array")for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false;var re=quickChild;var m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[];var cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&(!elem||n!=elem))r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval!=undefined)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=function(){return fn.apply(this,arguments);};handler.data=data;handler.guid=fn.guid;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){var val;if(typeof jQuery=="undefined"||jQuery.event.triggered)return val;val=jQuery.event.handle.apply(arguments.callee.elem,arguments);return val;});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else +for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data||[]);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event)data.unshift(this.fix({type:type,target:elem}));data[0].type=type;if(exclusive)data[0].exclusive=true;if(jQuery.isFunction(jQuery.data(elem,"handle")))val=jQuery.data(elem,"handle").apply(elem,data);if(!fn&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val;event=jQuery.event.fix(event||window.event||{});var parts=event.type.split(".");event.type=parts[0];var handlers=jQuery.data(this,"events")&&jQuery.data(this,"events")[event.type],args=Array.prototype.slice.call(arguments,1);args.unshift(event);for(var j in handlers){var handler=handlers[j];args[0].handler=handler;args[0].data=handler.data;if(!parts[1]&&!event.exclusive||handler.type==parts[1]){var ret=handler.apply(this,args);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}if(jQuery.browser.msie)event.target=event.preventDefault=event.stopPropagation=event.handler=event.data=null;return val;},fix:function(event){var originalEvent=event;event=jQuery.extend({},originalEvent);event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=originalEvent.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;arguments[0].type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;arguments[0].type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){return this.each(function(){jQuery.event.add(this,type,function(event){jQuery(this).unbind(event);return(fn||data).apply(this,arguments);},fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){if(this[0])return jQuery.event.trigger(type,data,this[0],false,fn);return undefined;},toggle:function(){var args=arguments;return this.click(function(event){this.lastToggle=0==this.lastToggle?1:0;event.preventDefault();return args[this.lastToggle].apply(this,arguments)||false;});},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else +jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.apply(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
    ").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=(new Date).getTime();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){var jsonp,jsre=/=\?(&|$)/g,status,data;s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(s.type.toLowerCase()=="get"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&s.type.toLowerCase()=="get"){var ts=(new Date()).getTime();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&s.type.toLowerCase()=="get"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");if((!s.url.indexOf("http")||!s.url.indexOf("//"))&&s.dataType=="script"&&s.type.toLowerCase()=="get"){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xml=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();xml.open(s.type,s.url,s.async,s.username,s.password);try{if(s.data)xml.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xml.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xml.setRequestHeader("X-Requested-With","XMLHttpRequest");xml.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend)s.beforeSend(xml);if(s.global)jQuery.event.trigger("ajaxSend",[xml,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xml&&(xml.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xml)&&"error"||s.ifModified&&jQuery.httpNotModified(xml,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xml,s.dataType);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xml.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else +jQuery.handleError(s,xml,status);complete();if(s.async)xml=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xml){xml.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xml.send(s.data);}catch(e){jQuery.handleError(s,xml,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xml,s]);}function complete(){if(s.complete)s.complete(xml,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xml,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xml;},handleError:function(s,xml,status,e){if(s.error)s.error(xml,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xml,s,e]);},active:0,httpSuccess:function(r){try{return!r.status&&location.protocol=="file:"||(r.status>=200&&r.status<300)||r.status==304||r.status==1223||jQuery.browser.safari&&r.status==undefined;}catch(e){}return false;},httpNotModified:function(xml,url){try{var xmlRes=xml.getResponseHeader("Last-Modified");return xml.status==304||xmlRes==jQuery.lastModified[url]||jQuery.browser.safari&&xml.status==undefined;}catch(e){}return false;},httpData:function(r,type){var ct=r.getResponseHeader("content-type");var xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0;var data=xml?r.responseXML:r.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else +for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else +s.push(encodeURIComponent(j)+"="+encodeURIComponent(a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle(fn,fn2):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall);var hidden=jQuery(this).is(":hidden"),self=this;for(var p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return jQuery.isFunction(opt.complete)&&opt.complete.apply(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else +e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.apply(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(!elem)return undefined;type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",array?jQuery.makeArray(array):[]);return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].apply(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:{slow:600,fast:200}[opt.duration])||400;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.apply(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.apply(this.elem,[this.now,this]);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=(new Date()).getTime();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done&&jQuery.isFunction(this.options.complete))this.options.complete.apply(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.fx.step={scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}};jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),fixed=jQuery.css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&jQuery.css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(jQuery.css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&jQuery.css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||jQuery.css(offsetChild,"position")=="absolute"))||(mozilla&&jQuery.css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l)||0;top+=parseInt(t)||0;}return results;};})(); \ No newline at end of file diff --git a/view/theme/diabook/lightbox/js/jquery.lightbox-0.5.js b/view/theme/diabook/lightbox/js/jquery.lightbox-0.5.js new file mode 100644 index 000000000..eef6425e0 --- /dev/null +++ b/view/theme/diabook/lightbox/js/jquery.lightbox-0.5.js @@ -0,0 +1,472 @@ +/** + * jQuery lightBox plugin + * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) + * and adapted to me for use like a plugin from jQuery. + * @name jquery-lightbox-0.5.js + * @author Leandro Vieira Pinho - http://leandrovieira.com + * @version 0.5 + * @date April 11, 2008 + * @category jQuery plugin + * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com) + * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US + * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin + */ + +// Offering a Custom Alias suport - More info: http://docs.jquery.com/Plugins/Authoring#Custom_Alias +(function($) { + /** + * $ is an alias to jQuery object + * + */ + $.fn.lightBox = function(settings) { + // Settings to configure the jQuery lightBox plugin how you like + settings = jQuery.extend({ + // Configuration related to overlay + overlayBgColor: '#000', // (string) Background color to overlay; inform a hexadecimal value like: #RRGGBB. Where RR, GG, and BB are the hexadecimal values for the red, green, and blue values of the color. + overlayOpacity: 0.8, // (integer) Opacity value to overlay; inform: 0.X. Where X are number from 0 to 9 + // Configuration related to navigation + fixedNavigation: false, // (boolean) Boolean that informs if the navigation (next and prev button) will be fixed or not in the interface. + // Configuration related to images + imageLoading: 'images/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon + imageBtnPrev: 'images/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image + imageBtnNext: 'images/lightbox-btn-next.gif', // (string) Path and the name of the next button image + imageBtnClose: 'images/lightbox-btn-close.gif', // (string) Path and the name of the close btn + imageBlank: 'images/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel) + // Configuration related to container image box + containerBorderSize: 10, // (integer) If you adjust the padding in the CSS for the container, #lightbox-container-image-box, you will need to update this value + containerResizeSpeed: 400, // (integer) Specify the resize duration of container image. These number are miliseconds. 400 is default. + // Configuration related to texts in caption. For example: Image 2 of 8. You can alter either "Image" and "of" texts. + txtImage: 'Image', // (string) Specify text "Image" + txtOf: 'of', // (string) Specify text "of" + // Configuration related to keyboard navigation + keyToClose: 'c', // (string) (c = close) Letter to close the jQuery lightBox interface. Beyond this letter, the letter X and the SCAPE key is used to. + keyToPrev: 'p', // (string) (p = previous) Letter to show the previous image + keyToNext: 'n', // (string) (n = next) Letter to show the next image. + // Don´t alter these variables in any way + imageArray: [], + activeImage: 0 + },settings); + // Caching the jQuery object with all elements matched + var jQueryMatchedObj = this; // This, in this context, refer to jQuery object + /** + * Initializing the plugin calling the start function + * + * @return boolean false + */ + function _initialize() { + _start(this,jQueryMatchedObj); // This, in this context, refer to object (link) which the user have clicked + return false; // Avoid the browser following the link + } + /** + * Start the jQuery lightBox plugin + * + * @param object objClicked The object (link) whick the user have clicked + * @param object jQueryMatchedObj The jQuery object with all elements matched + */ + function _start(objClicked,jQueryMatchedObj) { + // Hime some elements to avoid conflict with overlay in IE. These elements appear above the overlay. + $('embed, object, select').css({ 'visibility' : 'hidden' }); + // Call the function to create the markup structure; style some elements; assign events in some elements. + _set_interface(); + // Unset total images in imageArray + settings.imageArray.length = 0; + // Unset image active information + settings.activeImage = 0; + // We have an image set? Or just an image? Let´s see it. + if ( jQueryMatchedObj.length == 1 ) { + settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title'))); + } else { + // Add an Array (as many as we have), with href and title atributes, inside the Array that storage the images references + for ( var i = 0; i < jQueryMatchedObj.length; i++ ) { + settings.imageArray.push(new Array(jQueryMatchedObj[i].getAttribute('href'),jQueryMatchedObj[i].getAttribute('title'))); + } + } + while ( settings.imageArray[settings.activeImage][0] != objClicked.getAttribute('href') ) { + settings.activeImage++; + } + // Call the function that prepares image exibition + _set_image_to_view(); + } + /** + * Create the jQuery lightBox plugin interface + * + * The HTML markup will be like that: +
    +
    + + +
    + * + */ + function _set_interface() { + // Apply the HTML markup into body tag + $('body').append('
    '); + // Get page sizes + var arrPageSizes = ___getPageSize(); + // Style overlay and show it + $('#jquery-overlay').css({ + backgroundColor: settings.overlayBgColor, + opacity: settings.overlayOpacity, + width: arrPageSizes[0], + height: arrPageSizes[1] + }).fadeIn(); + // Get page scroll + var arrPageScroll = ___getPageScroll(); + // Calculate top and left offset for the jquery-lightbox div object and show it + $('#jquery-lightbox').css({ + top: arrPageScroll[1] + (arrPageSizes[3] / 10), + left: arrPageScroll[0] + }).show(); + // Assigning click events in elements to close overlay + $('#jquery-overlay,#jquery-lightbox').click(function() { + _finish(); + }); + // Assign the _finish function to lightbox-loading-link and lightbox-secNav-btnClose objects + $('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function() { + _finish(); + return false; + }); + // If window was resized, calculate the new overlay dimensions + $(window).resize(function() { + // Get page sizes + var arrPageSizes = ___getPageSize(); + // Style overlay and show it + $('#jquery-overlay').css({ + width: arrPageSizes[0], + height: arrPageSizes[1] + }); + // Get page scroll + var arrPageScroll = ___getPageScroll(); + // Calculate top and left offset for the jquery-lightbox div object and show it + $('#jquery-lightbox').css({ + top: arrPageScroll[1] + (arrPageSizes[3] / 10), + left: arrPageScroll[0] + }); + }); + } + /** + * Prepares image exibition; doing a image´s preloader to calculate it´s size + * + */ + function _set_image_to_view() { // show the loading + // Show the loading + $('#lightbox-loading').show(); + if ( settings.fixedNavigation ) { + $('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide(); + } else { + // Hide some elements + $('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide(); + } + // Image preload process + var objImagePreloader = new Image(); + objImagePreloader.onload = function() { + $('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]); + // Perfomance an effect in the image container resizing it + _resize_container_image_box(objImagePreloader.width,objImagePreloader.height); + // clear onLoad, IE behaves irratically with animated gifs otherwise + objImagePreloader.onload=function(){}; + }; + objImagePreloader.src = settings.imageArray[settings.activeImage][0]; + }; + /** + * Perfomance an effect in the image container resizing it + * + * @param integer intImageWidth The image´s width that will be showed + * @param integer intImageHeight The image´s height that will be showed + */ + function _resize_container_image_box(intImageWidth,intImageHeight) { + // Get current width and height + var intCurrentWidth = $('#lightbox-container-image-box').width(); + var intCurrentHeight = $('#lightbox-container-image-box').height(); + // Get the width and height of the selected image plus the padding + var intWidth = (intImageWidth + (settings.containerBorderSize * 2)); // Plus the image´s width and the left and right padding value + var intHeight = (intImageHeight + (settings.containerBorderSize * 2)); // Plus the image´s height and the left and right padding value + // Diferences + var intDiffW = intCurrentWidth - intWidth; + var intDiffH = intCurrentHeight - intHeight; + // Perfomance the effect + $('#lightbox-container-image-box').animate({ width: intWidth, height: intHeight },settings.containerResizeSpeed,function() { _show_image(); }); + if ( ( intDiffW == 0 ) && ( intDiffH == 0 ) ) { + if ( $.browser.msie ) { + ___pause(250); + } else { + ___pause(100); + } + } + $('#lightbox-container-image-data-box').css({ width: intImageWidth }); + $('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ height: intImageHeight + (settings.containerBorderSize * 2) }); + }; + /** + * Show the prepared image + * + */ + function _show_image() { + $('#lightbox-loading').hide(); + $('#lightbox-image').fadeIn(function() { + _show_image_data(); + _set_navigation(); + }); + _preload_neighbor_images(); + }; + /** + * Show the image information + * + */ + function _show_image_data() { + $('#lightbox-container-image-data-box').slideDown('fast'); + $('#lightbox-image-details-caption').hide(); + if ( settings.imageArray[settings.activeImage][1] ) { + $('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show(); + } + // If we have a image set, display 'Image X of X' + if ( settings.imageArray.length > 1 ) { + $('#lightbox-image-details-currentNumber').html(settings.txtImage + ' ' + ( settings.activeImage + 1 ) + ' ' + settings.txtOf + ' ' + settings.imageArray.length).show(); + } + } + /** + * Display the button navigations + * + */ + function _set_navigation() { + $('#lightbox-nav').show(); + + // Instead to define this configuration in CSS file, we define here. And it´s need to IE. Just. + $('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' }); + + // Show the prev button, if not the first image in set + if ( settings.activeImage != 0 ) { + if ( settings.fixedNavigation ) { + $('#lightbox-nav-btnPrev').css({ 'background' : 'url(' + settings.imageBtnPrev + ') left 15% no-repeat' }) + .unbind() + .bind('click',function() { + settings.activeImage = settings.activeImage - 1; + _set_image_to_view(); + return false; + }); + } else { + // Show the images button for Next buttons + $('#lightbox-nav-btnPrev').unbind().hover(function() { + $(this).css({ 'background' : 'url(' + settings.imageBtnPrev + ') left 15% no-repeat' }); + },function() { + $(this).css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' }); + }).show().bind('click',function() { + settings.activeImage = settings.activeImage - 1; + _set_image_to_view(); + return false; + }); + } + } + + // Show the next button, if not the last image in set + if ( settings.activeImage != ( settings.imageArray.length -1 ) ) { + if ( settings.fixedNavigation ) { + $('#lightbox-nav-btnNext').css({ 'background' : 'url(' + settings.imageBtnNext + ') right 15% no-repeat' }) + .unbind() + .bind('click',function() { + settings.activeImage = settings.activeImage + 1; + _set_image_to_view(); + return false; + }); + } else { + // Show the images button for Next buttons + $('#lightbox-nav-btnNext').unbind().hover(function() { + $(this).css({ 'background' : 'url(' + settings.imageBtnNext + ') right 15% no-repeat' }); + },function() { + $(this).css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' }); + }).show().bind('click',function() { + settings.activeImage = settings.activeImage + 1; + _set_image_to_view(); + return false; + }); + } + } + // Enable keyboard navigation + _enable_keyboard_navigation(); + } + /** + * Enable a support to keyboard navigation + * + */ + function _enable_keyboard_navigation() { + $(document).keydown(function(objEvent) { + _keyboard_action(objEvent); + }); + } + /** + * Disable the support to keyboard navigation + * + */ + function _disable_keyboard_navigation() { + $(document).unbind(); + } + /** + * Perform the keyboard actions + * + */ + function _keyboard_action(objEvent) { + // To ie + if ( objEvent == null ) { + keycode = event.keyCode; + escapeKey = 27; + // To Mozilla + } else { + keycode = objEvent.keyCode; + escapeKey = objEvent.DOM_VK_ESCAPE; + } + // Get the key in lower case form + key = String.fromCharCode(keycode).toLowerCase(); + // Verify the keys to close the ligthBox + if ( ( key == settings.keyToClose ) || ( key == 'x' ) || ( keycode == escapeKey ) ) { + _finish(); + } + // Verify the key to show the previous image + if ( ( key == settings.keyToPrev ) || ( keycode == 37 ) ) { + // If we´re not showing the first image, call the previous + if ( settings.activeImage != 0 ) { + settings.activeImage = settings.activeImage - 1; + _set_image_to_view(); + _disable_keyboard_navigation(); + } + } + // Verify the key to show the next image + if ( ( key == settings.keyToNext ) || ( keycode == 39 ) ) { + // If we´re not showing the last image, call the next + if ( settings.activeImage != ( settings.imageArray.length - 1 ) ) { + settings.activeImage = settings.activeImage + 1; + _set_image_to_view(); + _disable_keyboard_navigation(); + } + } + } + /** + * Preload prev and next images being showed + * + */ + function _preload_neighbor_images() { + if ( (settings.imageArray.length -1) > settings.activeImage ) { + objNext = new Image(); + objNext.src = settings.imageArray[settings.activeImage + 1][0]; + } + if ( settings.activeImage > 0 ) { + objPrev = new Image(); + objPrev.src = settings.imageArray[settings.activeImage -1][0]; + } + } + /** + * Remove jQuery lightBox plugin HTML markup + * + */ + function _finish() { + $('#jquery-lightbox').remove(); + $('#jquery-overlay').fadeOut(function() { $('#jquery-overlay').remove(); }); + // Show some elements to avoid conflict with overlay in IE. These elements appear above the overlay. + $('embed, object, select').css({ 'visibility' : 'visible' }); + } + /** + / THIRD FUNCTION + * getPageSize() by quirksmode.com + * + * @return Array Return an array with page width, height and window width, height + */ + function ___getPageSize() { + var xScroll, yScroll; + if (window.innerHeight && window.scrollMaxY) { + xScroll = window.innerWidth + window.scrollMaxX; + yScroll = window.innerHeight + window.scrollMaxY; + } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac + xScroll = document.body.scrollWidth; + yScroll = document.body.scrollHeight; + } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari + xScroll = document.body.offsetWidth; + yScroll = document.body.offsetHeight; + } + var windowWidth, windowHeight; + if (self.innerHeight) { // all except Explorer + if(document.documentElement.clientWidth){ + windowWidth = document.documentElement.clientWidth; + } else { + windowWidth = self.innerWidth; + } + windowHeight = self.innerHeight; + } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode + windowWidth = document.documentElement.clientWidth; + windowHeight = document.documentElement.clientHeight; + } else if (document.body) { // other Explorers + windowWidth = document.body.clientWidth; + windowHeight = document.body.clientHeight; + } + // for small pages with total height less then height of the viewport + if(yScroll < windowHeight){ + pageHeight = windowHeight; + } else { + pageHeight = yScroll; + } + // for small pages with total width less then width of the viewport + if(xScroll < windowWidth){ + pageWidth = xScroll; + } else { + pageWidth = windowWidth; + } + arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight); + return arrayPageSize; + }; + /** + / THIRD FUNCTION + * getPageScroll() by quirksmode.com + * + * @return Array Return an array with x,y page scroll values. + */ + function ___getPageScroll() { + var xScroll, yScroll; + if (self.pageYOffset) { + yScroll = self.pageYOffset; + xScroll = self.pageXOffset; + } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict + yScroll = document.documentElement.scrollTop; + xScroll = document.documentElement.scrollLeft; + } else if (document.body) {// all other Explorers + yScroll = document.body.scrollTop; + xScroll = document.body.scrollLeft; + } + arrayPageScroll = new Array(xScroll,yScroll); + return arrayPageScroll; + }; + /** + * Stop the code execution from a escified time in milisecond + * + */ + function ___pause(ms) { + var date = new Date(); + curDate = null; + do { var curDate = new Date(); } + while ( curDate - date < ms); + }; + // Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once + return this.unbind('click').click(_initialize); + }; +})(jQuery); // Call and execute the function immediately passing the jQuery object \ No newline at end of file diff --git a/view/theme/diabook/lightbox/js/jquery.lightbox-0.5.min.js b/view/theme/diabook/lightbox/js/jquery.lightbox-0.5.min.js new file mode 100644 index 000000000..5f13b0bf6 --- /dev/null +++ b/view/theme/diabook/lightbox/js/jquery.lightbox-0.5.min.js @@ -0,0 +1,42 @@ +/** + * jQuery lightBox plugin + * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) + * and adapted to me for use like a plugin from jQuery. + * @name jquery-lightbox-0.5.js + * @author Leandro Vieira Pinho - http://leandrovieira.com + * @version 0.5 + * @date April 11, 2008 + * @category jQuery plugin + * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com) + * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US + * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin + */ +(function($){$.fn.lightBox=function(settings){settings=jQuery.extend({overlayBgColor:'#000',overlayOpacity:0.8,fixedNavigation:false,imageLoading:'images/lightbox-ico-loading.gif',imageBtnPrev:'images/lightbox-btn-prev.gif',imageBtnNext:'images/lightbox-btn-next.gif',imageBtnClose:'images/lightbox-btn-close.gif',imageBlank:'images/lightbox-blank.gif',containerBorderSize:10,containerResizeSpeed:400,txtImage:'Image',txtOf:'of',keyToClose:'c',keyToPrev:'p',keyToNext:'n',imageArray:[],activeImage:0},settings);var jQueryMatchedObj=this;function _initialize(){_start(this,jQueryMatchedObj);return false;} +function _start(objClicked,jQueryMatchedObj){$('embed, object, select').css({'visibility':'hidden'});_set_interface();settings.imageArray.length=0;settings.activeImage=0;if(jQueryMatchedObj.length==1){settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title')));}else{for(var i=0;i
    ');var arrPageSizes=___getPageSize();$('#jquery-overlay').css({backgroundColor:settings.overlayBgColor,opacity:settings.overlayOpacity,width:arrPageSizes[0],height:arrPageSizes[1]}).fadeIn();var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]}).show();$('#jquery-overlay,#jquery-lightbox').click(function(){_finish();});$('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function(){_finish();return false;});$(window).resize(function(){var arrPageSizes=___getPageSize();$('#jquery-overlay').css({width:arrPageSizes[0],height:arrPageSizes[1]});var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]});});} +function _set_image_to_view(){$('#lightbox-loading').show();if(settings.fixedNavigation){$('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}else{$('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();} +var objImagePreloader=new Image();objImagePreloader.onload=function(){$('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);_resize_container_image_box(objImagePreloader.width,objImagePreloader.height);objImagePreloader.onload=function(){};};objImagePreloader.src=settings.imageArray[settings.activeImage][0];};function _resize_container_image_box(intImageWidth,intImageHeight){var intCurrentWidth=$('#lightbox-container-image-box').width();var intCurrentHeight=$('#lightbox-container-image-box').height();var intWidth=(intImageWidth+(settings.containerBorderSize*2));var intHeight=(intImageHeight+(settings.containerBorderSize*2));var intDiffW=intCurrentWidth-intWidth;var intDiffH=intCurrentHeight-intHeight;$('#lightbox-container-image-box').animate({width:intWidth,height:intHeight},settings.containerResizeSpeed,function(){_show_image();});if((intDiffW==0)&&(intDiffH==0)){if($.browser.msie){___pause(250);}else{___pause(100);}} +$('#lightbox-container-image-data-box').css({width:intImageWidth});$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({height:intImageHeight+(settings.containerBorderSize*2)});};function _show_image(){$('#lightbox-loading').hide();$('#lightbox-image').fadeIn(function(){_show_image_data();_set_navigation();});_preload_neighbor_images();};function _show_image_data(){$('#lightbox-container-image-data-box').slideDown('fast');$('#lightbox-image-details-caption').hide();if(settings.imageArray[settings.activeImage][1]){$('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show();} +if(settings.imageArray.length>1){$('#lightbox-image-details-currentNumber').html(settings.txtImage+' '+(settings.activeImage+1)+' '+settings.txtOf+' '+settings.imageArray.length).show();}} +function _set_navigation(){$('#lightbox-nav').show();$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({'background':'transparent url('+settings.imageBlank+') no-repeat'});if(settings.activeImage!=0){if(settings.fixedNavigation){$('#lightbox-nav-btnPrev').css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnPrev').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}} +if(settings.activeImage!=(settings.imageArray.length-1)){if(settings.fixedNavigation){$('#lightbox-nav-btnNext').css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnNext').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}} +_enable_keyboard_navigation();} +function _enable_keyboard_navigation(){$(document).keydown(function(objEvent){_keyboard_action(objEvent);});} +function _disable_keyboard_navigation(){$(document).unbind();} +function _keyboard_action(objEvent){if(objEvent==null){keycode=event.keyCode;escapeKey=27;}else{keycode=objEvent.keyCode;escapeKey=objEvent.DOM_VK_ESCAPE;} +key=String.fromCharCode(keycode).toLowerCase();if((key==settings.keyToClose)||(key=='x')||(keycode==escapeKey)){_finish();} +if((key==settings.keyToPrev)||(keycode==37)){if(settings.activeImage!=0){settings.activeImage=settings.activeImage-1;_set_image_to_view();_disable_keyboard_navigation();}} +if((key==settings.keyToNext)||(keycode==39)){if(settings.activeImage!=(settings.imageArray.length-1)){settings.activeImage=settings.activeImage+1;_set_image_to_view();_disable_keyboard_navigation();}}} +function _preload_neighbor_images(){if((settings.imageArray.length-1)>settings.activeImage){objNext=new Image();objNext.src=settings.imageArray[settings.activeImage+1][0];} +if(settings.activeImage>0){objPrev=new Image();objPrev.src=settings.imageArray[settings.activeImage-1][0];}} +function _finish(){$('#jquery-lightbox').remove();$('#jquery-overlay').fadeOut(function(){$('#jquery-overlay').remove();});$('embed, object, select').css({'visibility':'visible'});} +function ___getPageSize(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=window.innerWidth+window.scrollMaxX;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;} +var windowWidth,windowHeight;if(self.innerHeight){if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;}else{windowWidth=self.innerWidth;} +windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;} +if(yScroll35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(6($){$.2N.3g=6(4){4=23.2H({2B:\'#34\',2g:0.8,1d:F,1M:\'18/5-33-Y.16\',1v:\'18/5-1u-2Q.16\',1E:\'18/5-1u-2L.16\',1W:\'18/5-1u-2I.16\',19:\'18/5-2F.16\',1f:10,2A:3d,2s:\'1j\',2o:\'32\',2j:\'c\',2f:\'p\',2d:\'n\',h:[],9:0},4);f I=N;6 20(){1X(N,I);u F}6 1X(1e,I){$(\'1U, 1S, 1R\').l({\'1Q\':\'2E\'});1O();4.h.B=0;4.9=0;7(I.B==1){4.h.1J(v 1m(1e.17(\'J\'),1e.17(\'2v\')))}j{36(f i=0;i<1w g="5-b"><1w W="\'+4.1M+\'"><1i g="5-b-A-1t"><1i g="5-b-A-1g"><1w W="\'+4.1W+\'">\');f z=1D();$(\'#q-13\').l({2K:4.2B,2J:4.2g,S:z[0],P:z[1]}).1V();f R=1p();$(\'#q-5\').l({1T:R[1]+(z[3]/10),1c:R[0]}).E();$(\'#q-13,#q-5\').C(6(){1a()});$(\'#5-Y-29,#5-1s-22\').C(6(){1a();u F});$(G).2G(6(){f z=1D();$(\'#q-13\').l({S:z[0],P:z[1]});f R=1p();$(\'#q-5\').l({1T:R[1]+(z[3]/10),1c:R[0]})})}6 D(){$(\'#5-Y\').E();7(4.1d){$(\'#5-b,#5-s-b-T-w,#5-b-A-1g\').1b()}j{$(\'#5-b,#5-k,#5-k-V,#5-k-X,#5-s-b-T-w,#5-b-A-1g\').1b()}f Q=v 1j();Q.1P=6(){$(\'#5-b\').2D(\'W\',4.h[4.9][0]);1N(Q.S,Q.P);Q.1P=6(){}};Q.W=4.h[4.9][0]};6 1N(1o,1r){f 1L=$(\'#5-s-b-w\').S();f 1K=$(\'#5-s-b-w\').P();f 1n=(1o+(4.1f*2));f 1y=(1r+(4.1f*2));f 1I=1L-1n;f 2z=1K-1y;$(\'#5-s-b-w\').3f({S:1n,P:1y},4.2A,6(){2y()});7((1I==0)&&(2z==0)){7($.3e.3c){1H(3b)}j{1H(3a)}}$(\'#5-s-b-T-w\').l({S:1o});$(\'#5-k-V,#5-k-X\').l({P:1r+(4.1f*2)})};6 2y(){$(\'#5-Y\').1b();$(\'#5-b\').1V(6(){2u();2t()});2r()};6 2u(){$(\'#5-s-b-T-w\').38(\'35\');$(\'#5-b-A-1t\').1b();7(4.h[4.9][1]){$(\'#5-b-A-1t\').2p(4.h[4.9][1]).E()}7(4.h.B>1){$(\'#5-b-A-1g\').2p(4.2s+\' \'+(4.9+1)+\' \'+4.2o+\' \'+4.h.B).E()}}6 2t(){$(\'#5-k\').E();$(\'#5-k-V,#5-k-X\').l({\'K\':\'1C M(\'+4.19+\') L-O\'});7(4.9!=0){7(4.1d){$(\'#5-k-V\').l({\'K\':\'M(\'+4.1v+\') 1c 15% L-O\'}).11().1k(\'C\',6(){4.9=4.9-1;D();u F})}j{$(\'#5-k-V\').11().2m(6(){$(N).l({\'K\':\'M(\'+4.1v+\') 1c 15% L-O\'})},6(){$(N).l({\'K\':\'1C M(\'+4.19+\') L-O\'})}).E().1k(\'C\',6(){4.9=4.9-1;D();u F})}}7(4.9!=(4.h.B-1)){7(4.1d){$(\'#5-k-X\').l({\'K\':\'M(\'+4.1E+\') 2l 15% L-O\'}).11().1k(\'C\',6(){4.9=4.9+1;D();u F})}j{$(\'#5-k-X\').11().2m(6(){$(N).l({\'K\':\'M(\'+4.1E+\') 2l 15% L-O\'})},6(){$(N).l({\'K\':\'1C M(\'+4.19+\') L-O\'})}).E().1k(\'C\',6(){4.9=4.9+1;D();u F})}}2k()}6 2k(){$(d).30(6(12){2i(12)})}6 1G(){$(d).11()}6 2i(12){7(12==2h){U=2Z.2e;1x=27}j{U=12.2e;1x=12.2Y}14=2X.2W(U).2U();7((14==4.2j)||(14==\'x\')||(U==1x)){1a()}7((14==4.2f)||(U==37)){7(4.9!=0){4.9=4.9-1;D();1G()}}7((14==4.2d)||(U==39)){7(4.9!=(4.h.B-1)){4.9=4.9+1;D();1G()}}}6 2r(){7((4.h.B-1)>4.9){2c=v 1j();2c.W=4.h[4.9+1][0]}7(4.9>0){2b=v 1j();2b.W=4.h[4.9-1][0]}}6 1a(){$(\'#q-5\').2a();$(\'#q-13\').2T(6(){$(\'#q-13\').2a()});$(\'1U, 1S, 1R\').l({\'1Q\':\'2S\'})}6 1D(){f o,r;7(G.1h&&G.28){o=G.26+G.2R;r=G.1h+G.28}j 7(d.m.25>d.m.24){o=d.m.2P;r=d.m.25}j{o=d.m.2O;r=d.m.24}f y,H;7(Z.1h){7(d.t.1l){y=d.t.1l}j{y=Z.26}H=Z.1h}j 7(d.t&&d.t.1A){y=d.t.1l;H=d.t.1A}j 7(d.m){y=d.m.1l;H=d.m.1A}7(r +

    $album.1

    + + + +
    + {{ if $prevlink }}{{ endif }} + + {{ if $nextlink }}{{ endif }} +
    + +
    +
    $desc
    +{{ if $tags }} +
    $tags.0
    +
    $tags.1
    +{{ endif }} +{{ if $tags.2 }}{{ endif }} + +{{ if $edit }}$edit{{ endif }} \ No newline at end of file diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index ad7119c2a..badedb02f 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -177,8 +177,8 @@ .icon.on { background-image: url("../../../view/theme/diabook/icons/toogle_on.png"); background-repeat: no-repeat;} .icon.off { background-image: url("../../../view/theme/diabook/icons/toogle_off.png"); background-repeat: no-repeat;} -.prev { background-position: -90px -60px;} -.next { background-position: -110px -60px;} +.icon.prev { background-image: url("../../../view/theme/diabook/icons/prev.png"); background-repeat: no-repeat;} +.icon.next { background-image: url("../../../view/theme/diabook/icons/next.png"); background-repeat: no-repeat;} /*.tagged { background-position: -130px -60px;}*/ .attachtype { @@ -247,7 +247,7 @@ background-image: url("../../../images/icons/10/edit.png"); } .icon.s10.star { - background-image: url("../../../images/icons/10/star.png"); + background-image: url("../../../images/star_dummy.png"); } .icon.s10.menu { background-image: url("../../../images/icons/10/menu.png"); @@ -285,7 +285,7 @@ background-image: url("../../../images/icons/16/edit.png"); }*/ .icon.s16.star { - background-image: url("../../../images/icons/16/star.png"); + background-image: url("../../../images/star_dummy.png"); } .icon.s16.menu { background-image: url("../../../images/icons/16/menu.png"); @@ -323,7 +323,7 @@ background-image: url("../../../images/icons/22/edit.png"); } .icon.s22.star { - background-image: url("../../../images/icons/22/star.png"); + background-image: url("../../../images/star_dummy.png"); } .icon.s22.menu { background-image: url("../../../images/icons/22/menu.png"); @@ -361,7 +361,7 @@ background-image: url("../../../images/icons/48/edit.png"); } .icon.s48.star { - background-image: url("../../../images/icons/48/star.png"); + background-image: url("../../../images/star_dummy.png"); } .icon.s48.menu { background-image: url("../../../images/icons/48/menu.png"); @@ -400,6 +400,7 @@ body { margin: 50px auto auto; display: table; } + h4 { font-size: 1.1em; } @@ -704,21 +705,17 @@ nav #nav-user-linkmenu nav #nav-user-linkmenu{ margin-right: 0px; } -nav #nav-home-link{ +nav #nav-home-link, #nav-directory-link, #nav-apps-link{ margin-left: 0px; + margin-right: 0px; font-weight: bold; + margin: 3px 5px; } nav #nav-directory-link{ - margin-left: 0px; - margin-right: 0px; - font-weight: bold; - margin: 3px 15px; + margin-right: 0px; } -nav #nav-apps-link{ - margin-left: 0px; - margin-right: 0px; - font-weight: bold; - margin: 3px 15px; +nav #nav-home-link{ + margin-left: 0px; } nav #nav-help-link .menu-popup, nav #nav-search-link .menu-popup, @@ -866,6 +863,8 @@ ul.menu-popup .empty { padding: 7px 7px 0px 0px; } + + /* aside */ aside { display: table-cell; @@ -876,6 +875,7 @@ aside { float: left; /* background: #F1F1F1; */ } + aside .vcard .fn { font-size: 18px; font-weight: bold; @@ -1036,6 +1036,13 @@ section { width: 800px; padding: 0px 0px 0px 12px; } + +body .pageheader{ + text-align: center; + margin-top: 25px; + font-size: 0px; + } + #id_username { width: 173px; } @@ -1046,7 +1053,6 @@ section { width: 173px; } #contact-edit-end { - } .pager { padding: 10px; @@ -1972,10 +1978,22 @@ box-shadow: 1px 1px 5px 0; } #prvmail-submit { - float: left; + float: right; margin-top: 10px; - margin-right: 30px; } +#prvmail-subject +{ +background: none repeat scroll 0 0 #FFFFFF; +border: 1px solid #CCCCCC; +border-radius: 5px 5px 5px 5px; +font-weight: bold; +height: 20px; +margin: 0 0 5px; +vertical-align: middle; +} +#prvmail-form{ + width: 597px; + } #prvmail-upload-wrapper, #prvmail-link-wrapper, #prvmail-rotator-wrapper { @@ -2163,14 +2181,25 @@ a.mail-list-link { padding: 10px; float: left; } +.lightbox{ + float: left; + } #photo-photo { float: left; } #photo-like-div .wall-item-like-buttons { - float: left; - margin-right: 10px; + float: left; + margin-right: 5px; + margin-top: 30px; } +.comment-edit-text-empty { + margin: 10px 0 0; + width: 85%; +} +.comment-edit-photo { + margin: 10px 0 0; +} .wall-item-like-buttons .icon.like { float: left; } diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php index 5a1828ad7..1617dd7f0 100755 --- a/view/theme/diabook/theme.php +++ b/view/theme/diabook/theme.php @@ -12,6 +12,12 @@ $a->theme_info = array( ); $a->page['htmlhead'] .= <<< EOT + + + + + + + //appsmenu + $('html').click(function() { + $('#nav-apps-link').removeClass('selected'); + document.getElementById( "nav-apps-menu" ).style.display = "none"; + }); + + $('#nav-apps-link').click(function(event){ + event.stopPropagation(); + }); + + $(function() { + $('a.lightbox').lightBox(); // Select all links with lightbox class +}); + + + EOT; -- cgit v1.2.3 From 59766b944c9ea3a45b1d7e8593f7bb5d4a0b8445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Mon, 12 Mar 2012 20:17:37 +0000 Subject: Some security against XSRF-attacks --- include/security.php | 46 +++++++++++++++++++++++++++++++ mod/profile_photo.php | 18 ++++++++---- mod/profiles.php | 26 ++++++++++++++---- mod/settings.php | 61 ++++++++++++++++++++++++++--------------- view/cropbody.tpl | 1 + view/profile_edit.tpl | 5 ++-- view/profile_listing_header.tpl | 2 +- view/profile_photo.tpl | 1 + view/settings.tpl | 2 +- view/settings_addons.tpl | 1 + view/settings_connectors.tpl | 1 + view/settings_oauth.tpl | 5 ++-- view/settings_oauth_edit.tpl | 2 ++ 13 files changed, 132 insertions(+), 39 deletions(-) diff --git a/include/security.php b/include/security.php index 8c536b656..6ea515bff 100755 --- a/include/security.php +++ b/include/security.php @@ -288,3 +288,49 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null) } +/* + * Functions used to protect against Cross-Site Request Forgery + * The security token has to base on at least one value that an attacker can't know - here it's the session ID and the private key. + * In this implementation, a security token is reusable (if the user submits a form, goes back and resubmits the form, maybe with small changes; + * or if the security token is used for ajax-calls that happen several times), but only valid for a certain amout of time (3hours). + * The "typename" seperates the security tokens of different types of forms. This could be relevant in the following case: + * A security token is used to protekt a link from CSRF (e.g. the "delete this profile"-link). + * If the new page contains by any chance external elements, then the used security token is exposed by the referrer. + * Actually, important actions should not be triggered by Links / GET-Requests at all, but somethimes they still are, + * so this mechanism brings in some damage control (the attacker would be able to forge a request to a form of this type, but not to forms of other types). + */ +function get_form_security_token($typename = "") { + $a = get_app(); + + $timestamp = time(); + $sec_hash = hash('whirlpool', $a->user["guid"] . $a->user["prvkey"] . session_id() . $timestamp . $typename); + + return $timestamp . "." . $sec_hash; +} + +function check_form_security_token($typename = "", $formname = 'form_security_token') { + if (!x($_REQUEST, $formname)) return false; + $hash = $_REQUEST[$formname]; + + $max_livetime = 10800; // 3 hours + + $a = get_app(); + + $x = explode(".", $hash); + if (time() > (IntVal($x[0]) + $max_livetime)) return false; + + $sec_hash = hash('whirlpool', $a->user["guid"] . $a->user["prvkey"] . session_id() . $x[0] . $typename); + + return ($sec_hash == $x[1]); +} + +function check_form_security_std_err_msg() { + return t('The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before subitting it.') . EOL; +} +function check_form_security_token_redirectOnErr($err_redirect, $typename = "", $formname = 'form_security_token') { + if (!check_form_security_token($typename, $formname)) { + $a = get_app(); + notice( check_form_security_std_err_msg() ); + goaway($a->get_baseurl() . $err_redirect ); + } +} diff --git a/mod/profile_photo.php b/mod/profile_photo.php index e3dbdaf39..d1fd08eba 100755 --- a/mod/profile_photo.php +++ b/mod/profile_photo.php @@ -15,11 +15,13 @@ function profile_photo_init(&$a) { function profile_photo_post(&$a) { - if(! local_user()) { - notice ( t('Permission denied.') . EOL ); - return; - } - + if(! local_user()) { + notice ( t('Permission denied.') . EOL ); + return; + } + + check_form_security_token_redirectOnErr('/profile_photo', 'profile_photo'); + if((x($_POST,'cropfinal')) && ($_POST['cropfinal'] == 1)) { // phase 2 - we have finished cropping @@ -148,7 +150,9 @@ function profile_photo_content(&$a) { notice( t('Permission denied.') . EOL ); return; }; - + + check_form_security_token_redirectOnErr('/profile_photo', 'profile_photo'); + $resource_id = $a->argv[2]; //die(":".local_user()); $r=q("SELECT * FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' ORDER BY `scale` ASC", @@ -203,6 +207,7 @@ function profile_photo_content(&$a) { '$lbl_upfile' => t('Upload File:'), '$title' => t('Upload Profile Photo'), '$submit' => t('Upload'), + '$form_security_token' => get_form_security_token("profile_photo"), '$select' => sprintf('%s %s', t('or'), ($newuser) ? '' . t('skip this step') . '' : '' . t('select a photo from your photo albums') . '') )); @@ -218,6 +223,7 @@ function profile_photo_content(&$a) { '$image_url' => $a->get_baseurl() . '/photo/' . $filename, '$title' => t('Crop Image'), '$desc' => t('Please adjust the image cropping for optimum viewing.'), + '$form_security_token' => get_form_security_token("profile_photo"), '$done' => t('Done Editing') )); return $o; diff --git a/mod/profiles.php b/mod/profiles.php index ccd7d5474..b307a2d43 100755 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -21,6 +21,9 @@ function profiles_post(&$a) { notice( t('Profile not found.') . EOL); return; } + + check_form_security_token_redirectOnErr('/profiles', 'profile_edit'); + $is_default = (($orig[0]['is-default']) ? 1 : 0); $profile_name = notags(trim($_POST['profile_name'])); @@ -240,6 +243,8 @@ function profiles_content(&$a) { goaway($a->get_baseurl() . '/profiles'); return; // NOTREACHED } + + check_form_security_token_redirectOnErr('/profiles', 'profile_drop', 't'); // move every contact using this profile as their default to the user default @@ -264,6 +269,8 @@ function profiles_content(&$a) { if(($a->argc > 1) && ($a->argv[1] === 'new')) { + + check_form_security_token_redirectOnErr('/profiles', 'profile_new', 't'); $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d", intval(local_user())); @@ -291,10 +298,13 @@ function profiles_content(&$a) { info( t('New profile created.') . EOL); if(count($r3) == 1) goaway($a->get_baseurl() . '/profiles/' . $r3[0]['id']); + goaway($a->get_baseurl() . '/profiles'); - } + } if(($a->argc > 2) && ($a->argv[1] === 'clone')) { + + check_form_security_token_redirectOnErr('/profiles', 'profile_clone', 't'); $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d", intval(local_user())); @@ -330,9 +340,11 @@ function profiles_content(&$a) { info( t('New profile created.') . EOL); if(count($r3) == 1) goaway($a->get_baseurl() . '/profiles/' . $r3[0]['id']); - goaway($a->get_baseurl() . '/profiles'); - return; // NOTREACHED - } + + goaway($a->get_baseurl() . '/profiles'); + + return; // NOTREACHED + } if(($a->argc > 1) && (intval($a->argv[1]))) { @@ -371,6 +383,9 @@ function profiles_content(&$a) { $is_default = (($r[0]['is-default']) ? 1 : 0); $tpl = get_markup_template("profile_edit.tpl"); $o .= replace_macros($tpl,array( + '$form_security_token' => get_form_security_token("profile_edit"), + '$profile_clone_link' => 'profiles/clone/' . $r[0]['id'] . '?t=' . get_form_security_token("profile_clone"), + '$profile_drop_link' => 'profiles/drop/' . $r[0]['id'] . '?t=' . get_form_security_token("profile_drop"), '$banner' => t('Edit Profile Details'), '$submit' => t('Submit'), '$viewprof' => t('View this profile'), @@ -460,7 +475,8 @@ function profiles_content(&$a) { $o .= replace_macros($tpl_header,array( '$header' => t('Edit/Manage Profiles'), '$chg_photo' => t('Change profile photo'), - '$cr_new' => t('Create New Profile') + '$cr_new' => t('Create New Profile'), + '$cr_new_link' => 'profiles/new?t=' . get_form_security_token("profile_new") )); diff --git a/mod/settings.php b/mod/settings.php index 2ef582fdf..f42fdb397 100755 --- a/mod/settings.php +++ b/mod/settings.php @@ -53,6 +53,8 @@ function settings_post(&$a) { $old_page_flags = $a->user['page-flags']; if(($a->argc > 1) && ($a->argv[1] === 'oauth') && x($_POST,'remove')){ + check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth'); + $key = $_POST['remove']; q("DELETE FROM tokens WHERE id='%s' AND uid=%d", dbesc($key), @@ -63,6 +65,8 @@ function settings_post(&$a) { if(($a->argc > 2) && ($a->argv[1] === 'oauth') && ($a->argv[2] === 'edit'||($a->argv[2] === 'add')) && x($_POST,'submit')) { + check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth'); + $name = ((x($_POST,'name')) ? $_POST['name'] : ''); $key = ((x($_POST,'key')) ? $_POST['key'] : ''); $secret = ((x($_POST,'secret')) ? $_POST['secret'] : ''); @@ -105,13 +109,18 @@ function settings_post(&$a) { } if(($a->argc > 1) && ($a->argv[1] == 'addon')) { + check_form_security_token_redirectOnErr('/settings/addon', 'settings_addon'); + call_hooks('plugin_settings_post', $_POST); return; } if(($a->argc > 1) && ($a->argv[1] == 'connectors')) { - - if(x($_POST['imap-submit'])) { + + check_form_security_token_redirectOnErr('/settings/connectors', 'settings_connectors'); + + if(x($_POST, 'imap-submit')) { + $mail_server = ((x($_POST,'mail_server')) ? $_POST['mail_server'] : ''); $mail_port = ((x($_POST,'mail_port')) ? $_POST['mail_port'] : ''); $mail_ssl = ((x($_POST,'mail_ssl')) ? strtolower(trim($_POST['mail_ssl'])) : ''); @@ -185,7 +194,8 @@ function settings_post(&$a) { return; } - + check_form_security_token_redirectOnErr('/settings', 'settings'); + call_hooks('settings_post', $_POST); if((x($_POST,'npassword')) || (x($_POST,'confirm'))) { @@ -460,6 +470,7 @@ function settings_content(&$a) { if(($a->argc > 2) && ($a->argv[2] === 'add')) { $tpl = get_markup_template("settings_oauth_edit.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_oauth"), '$tabs' => $tabs, '$title' => t('Add application'), '$submit' => t('Submit'), @@ -486,6 +497,7 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_oauth_edit.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_oauth"), '$tabs' => $tabs, '$title' => t('Add application'), '$submit' => t('Update'), @@ -500,6 +512,8 @@ function settings_content(&$a) { } if(($a->argc > 3) && ($a->argv[2] === 'delete')) { + check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth', 't'); + $r = q("DELETE FROM clients WHERE client_id='%s' AND uid=%d", dbesc($a->argv[3]), local_user()); @@ -518,6 +532,7 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_oauth.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_oauth"), '$baseurl' => $a->get_baseurl(), '$title' => t('Connected Apps'), '$add' => t('Add application'), @@ -544,6 +559,7 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_addons.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_addons"), '$title' => t('Plugin Settings'), '$tabs' => $tabs, '$settings_addons' => $settings_addons @@ -586,28 +602,28 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_connectors.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_connectors"), + '$title' => t('Connector Settings'), '$tabs' => $tabs, - '$diasp_enabled' => $diasp_enabled, - '$ostat_enabled' => $ostat_enabled, - - '$h_imap' => t('Email/Mailbox Setup'), - '$imap_desc' => t("If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."), - '$imap_lastcheck' => array('imap_lastcheck', t('Last successful email check:'), $mail_chk,''), - '$mail_disabled' => (($mail_disabled) ? t('Email access is disabled on this site.') : ''), - '$mail_server' => array('mail_server', t('IMAP server name:'), $mail_server, ''), - '$mail_port' => array('mail_port', t('IMAP port:'), $mail_port, ''), - '$mail_ssl' => array('mail_ssl', t('Security:'), strtoupper($mail_ssl), '', array( ''=>t('None'), 'TLS'=>'TLS', 'SSL'=>'SSL')), - '$mail_user' => array('mail_user', t('Email login name:'), $mail_user, ''), - '$mail_pass' => array('mail_pass', t('Email password:'), '', ''), - '$mail_replyto' => array('mail_replyto', t('Reply-to address:'), '', 'Optional'), - '$mail_pubmail' => array('mail_pubmail', t('Send public posts to all email contacts:'), $mail_pubmail, ''), - '$mail_action' => array('mail_action', t('Action after import:'), $mail_action, '', array(0=>t('None'), 1=>t('Delete'), 2=>t('Mark as seen'), 3=>t('Move to folder'))), - '$mail_movetofolder' => array('mail_movetofolder', t('Move to folder:'), $mail_movetofolder, ''), - '$submit' => t('Submit'), - - + '$diasp_enabled' => $diasp_enabled, + '$ostat_enabled' => $ostat_enabled, + + '$h_imap' => t('Email/Mailbox Setup'), + '$imap_desc' => t("If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."), + '$imap_lastcheck' => array('imap_lastcheck', t('Last successful email check:'), $mail_chk,''), + '$mail_disabled' => (($mail_disabled) ? t('Email access is disabled on this site.') : ''), + '$mail_server' => array('mail_server', t('IMAP server name:'), $mail_server, ''), + '$mail_port' => array('mail_port', t('IMAP port:'), $mail_port, ''), + '$mail_ssl' => array('mail_ssl', t('Security:'), strtoupper($mail_ssl), '', array( ''=>t('None'), 'TLS'=>'TLS', 'SSL'=>'SSL')), + '$mail_user' => array('mail_user', t('Email login name:'), $mail_user, ''), + '$mail_pass' => array('mail_pass', t('Email password:'), '', ''), + '$mail_replyto' => array('mail_replyto', t('Reply-to address:'), '', 'Optional'), + '$mail_pubmail' => array('mail_pubmail', t('Send public posts to all email contacts:'), $mail_pubmail, ''), + '$mail_action' => array('mail_action', t('Action after import:'), $mail_action, '', array(0=>t('None'), 1=>t('Delete'), 2=>t('Mark as seen'), 3=>t('Move to folder'))), + '$mail_movetofolder' => array('mail_movetofolder', t('Move to folder:'), $mail_movetofolder, ''), + '$submit' => t('Submit'), '$settings_connectors' => $settings_connectors )); @@ -805,6 +821,7 @@ function settings_content(&$a) { '$submit' => t('Submit'), '$baseurl' => $a->get_baseurl(), '$uid' => local_user(), + '$form_security_token' => get_form_security_token("settings"), '$nickname_block' => $prof_addr, diff --git a/view/cropbody.tpl b/view/cropbody.tpl index c9c0f84de..b484d15bf 100755 --- a/view/cropbody.tpl +++ b/view/cropbody.tpl @@ -40,6 +40,7 @@ $desc
    + diff --git a/view/profile_edit.tpl b/view/profile_edit.tpl index 8dab72649..e5c7162d0 100755 --- a/view/profile_edit.tpl +++ b/view/profile_edit.tpl @@ -5,9 +5,9 @@ $default @@ -17,6 +17,7 @@ $default
    +
    diff --git a/view/profile_listing_header.tpl b/view/profile_listing_header.tpl index 09e4fc9b2..61a273792 100755 --- a/view/profile_listing_header.tpl +++ b/view/profile_listing_header.tpl @@ -3,6 +3,6 @@ $chg_photo

    diff --git a/view/profile_photo.tpl b/view/profile_photo.tpl index f258b5b86..0b3a1cac1 100755 --- a/view/profile_photo.tpl +++ b/view/profile_photo.tpl @@ -1,6 +1,7 @@

    $title

    +
    diff --git a/view/settings.tpl b/view/settings.tpl index 46c737b23..25479b5bf 100755 --- a/view/settings.tpl +++ b/view/settings.tpl @@ -5,7 +5,7 @@ $tabs $nickname_block - +

    $h_pass

    diff --git a/view/settings_addons.tpl b/view/settings_addons.tpl index 2cbfd17e9..28fca5362 100755 --- a/view/settings_addons.tpl +++ b/view/settings_addons.tpl @@ -4,6 +4,7 @@ $tabs + $settings_addons diff --git a/view/settings_connectors.tpl b/view/settings_connectors.tpl index 9493c8bf7..43c0346bb 100755 --- a/view/settings_connectors.tpl +++ b/view/settings_connectors.tpl @@ -6,6 +6,7 @@ $tabs
    $ostat_enabled
    + $settings_connectors diff --git a/view/settings_oauth.tpl b/view/settings_oauth.tpl index 0de0dbe98..da1398ab9 100755 --- a/view/settings_oauth.tpl +++ b/view/settings_oauth.tpl @@ -4,7 +4,8 @@ $tabs - + + {{ endfor }} diff --git a/view/settings_oauth_edit.tpl b/view/settings_oauth_edit.tpl index 98b7457aa..d29341386 100755 --- a/view/settings_oauth_edit.tpl +++ b/view/settings_oauth_edit.tpl @@ -3,6 +3,8 @@ $tabs

    $title

    + + {{ inc field_input.tpl with $field=$name }}{{ endinc }} {{ inc field_input.tpl with $field=$key }}{{ endinc }} {{ inc field_input.tpl with $field=$secret }}{{ endinc }} -- cgit v1.2.3 -- cgit v1.2.3 From caffb217c1e7227137ac1575af369b34d10519fe Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Mon, 12 Mar 2012 23:31:54 +0100 Subject: fixes --- view/theme/diabook-blue/group_side.tpl | 29 ++++++++++++++++++++++++ view/theme/diabook-blue/icons/notifications.png | Bin 795 -> 727 bytes view/theme/diabook-blue/style.css | 7 +++++- view/theme/diabook-blue/theme.php | 4 ++-- view/theme/diabook/group_side.tpl | 29 ++++++++++++++++++++++++ view/theme/diabook/style.css | 7 +++++- 6 files changed, 72 insertions(+), 4 deletions(-) create mode 100755 view/theme/diabook-blue/group_side.tpl create mode 100755 view/theme/diabook/group_side.tpl diff --git a/view/theme/diabook-blue/group_side.tpl b/view/theme/diabook-blue/group_side.tpl new file mode 100755 index 000000000..af183d04d --- /dev/null +++ b/view/theme/diabook-blue/group_side.tpl @@ -0,0 +1,29 @@ +
    +
    +

    $title

    + +
    + + +
    + diff --git a/view/theme/diabook-blue/icons/notifications.png b/view/theme/diabook-blue/icons/notifications.png index 33ae95c6a..c23673dbd 100755 Binary files a/view/theme/diabook-blue/icons/notifications.png and b/view/theme/diabook-blue/icons/notifications.png differ diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index 81c056bf3..67ee11769 100644 --- a/view/theme/diabook-blue/style.css +++ b/view/theme/diabook-blue/style.css @@ -970,6 +970,10 @@ aside #side-peoplefind-url { widht: 55px; height: 55px; } +#lost-password-link { + float: left; + margin-right: 20px; + } /* widget */ .widget { margin-bottom: 2em; @@ -1065,7 +1069,8 @@ body .pageheader{ padding: 10px; text-align: center; font-size: 1.0em; - margin-top: 140%; + clear: both; + display: block; } .tabs { diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php index 1617dd7f0..38a282d3b 100755 --- a/view/theme/diabook-blue/theme.php +++ b/view/theme/diabook-blue/theme.php @@ -1,8 +1,8 @@ +
    +

    $title

    + +
    + + +
    + diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index badedb02f..9edd989b0 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -962,6 +962,10 @@ aside #side-peoplefind-url { widht: 55px; height: 55px; } +#lost-password-link { + float: left; + margin-right: 20px; + } /* widget */ .widget { margin-bottom: 2em; @@ -1058,7 +1062,8 @@ body .pageheader{ padding: 10px; text-align: center; font-size: 1.0em; - margin-top: 140%; + clear: both; + display: block; } .tabs { -- cgit v1.2.3 From 27bc8052d06c516fec2b6f1df09c0c46c4bad906 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Tue, 13 Mar 2012 00:04:19 +0100 Subject: use fancybox instead of lightbox --- .../lightbox/css/jquery.lightbox-0.5.css | 101 ----- .../lightbox/images/lightbox-blank.gif | Bin 43 -> 0 bytes .../lightbox/images/lightbox-btn-close.gif | Bin 700 -> 0 bytes .../lightbox/images/lightbox-btn-next.gif | Bin 812 -> 0 bytes .../lightbox/images/lightbox-btn-prev.gif | Bin 832 -> 0 bytes .../lightbox/images/lightbox-ico-loading.gif | Bin 3990 -> 0 bytes view/theme/diabook-blue/lightbox/index.htm | 78 ---- view/theme/diabook-blue/lightbox/js/jquery.js | 32 -- .../lightbox/js/jquery.lightbox-0.5.js | 472 --------------------- .../lightbox/js/jquery.lightbox-0.5.min.js | 42 -- .../lightbox/js/jquery.lightbox-0.5.pack.js | 14 - view/theme/diabook-blue/lightbox/photos/image1.jpg | Bin 19983 -> 0 bytes view/theme/diabook-blue/lightbox/photos/image2.jpg | Bin 45539 -> 0 bytes view/theme/diabook-blue/lightbox/photos/image3.jpg | Bin 39361 -> 0 bytes view/theme/diabook-blue/lightbox/photos/image4.jpg | Bin 18746 -> 0 bytes view/theme/diabook-blue/lightbox/photos/image5.jpg | Bin 30903 -> 0 bytes .../diabook-blue/lightbox/photos/thumb_image1.jpg | Bin 2092 -> 0 bytes .../diabook-blue/lightbox/photos/thumb_image2.jpg | Bin 2541 -> 0 bytes .../diabook-blue/lightbox/photos/thumb_image3.jpg | Bin 2237 -> 0 bytes .../diabook-blue/lightbox/photos/thumb_image4.jpg | Bin 1993 -> 0 bytes .../diabook-blue/lightbox/photos/thumb_image5.jpg | Bin 2045 -> 0 bytes view/theme/diabook-blue/theme.php | 7 +- .../diabook/lightbox/css/jquery.lightbox-0.5.css | 101 ----- .../diabook/lightbox/images/lightbox-blank.gif | Bin 43 -> 0 bytes .../diabook/lightbox/images/lightbox-btn-close.gif | Bin 700 -> 0 bytes .../diabook/lightbox/images/lightbox-btn-next.gif | Bin 812 -> 0 bytes .../diabook/lightbox/images/lightbox-btn-prev.gif | Bin 832 -> 0 bytes .../lightbox/images/lightbox-ico-loading.gif | Bin 3990 -> 0 bytes view/theme/diabook/lightbox/index.htm | 78 ---- view/theme/diabook/lightbox/js/jquery.js | 32 -- .../diabook/lightbox/js/jquery.lightbox-0.5.js | 472 --------------------- .../diabook/lightbox/js/jquery.lightbox-0.5.min.js | 42 -- .../lightbox/js/jquery.lightbox-0.5.pack.js | 14 - view/theme/diabook/lightbox/photos/image1.jpg | Bin 19983 -> 0 bytes view/theme/diabook/lightbox/photos/image2.jpg | Bin 45539 -> 0 bytes view/theme/diabook/lightbox/photos/image3.jpg | Bin 39361 -> 0 bytes view/theme/diabook/lightbox/photos/image4.jpg | Bin 18746 -> 0 bytes view/theme/diabook/lightbox/photos/image5.jpg | Bin 30903 -> 0 bytes .../theme/diabook/lightbox/photos/thumb_image1.jpg | Bin 2092 -> 0 bytes .../theme/diabook/lightbox/photos/thumb_image2.jpg | Bin 2541 -> 0 bytes .../theme/diabook/lightbox/photos/thumb_image3.jpg | Bin 2237 -> 0 bytes .../theme/diabook/lightbox/photos/thumb_image4.jpg | Bin 1993 -> 0 bytes .../theme/diabook/lightbox/photos/thumb_image5.jpg | Bin 2045 -> 0 bytes view/theme/diabook/theme.php | 7 +- 44 files changed, 2 insertions(+), 1490 deletions(-) delete mode 100644 view/theme/diabook-blue/lightbox/css/jquery.lightbox-0.5.css delete mode 100644 view/theme/diabook-blue/lightbox/images/lightbox-blank.gif delete mode 100644 view/theme/diabook-blue/lightbox/images/lightbox-btn-close.gif delete mode 100644 view/theme/diabook-blue/lightbox/images/lightbox-btn-next.gif delete mode 100644 view/theme/diabook-blue/lightbox/images/lightbox-btn-prev.gif delete mode 100644 view/theme/diabook-blue/lightbox/images/lightbox-ico-loading.gif delete mode 100644 view/theme/diabook-blue/lightbox/index.htm delete mode 100644 view/theme/diabook-blue/lightbox/js/jquery.js delete mode 100644 view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.js delete mode 100644 view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.min.js delete mode 100644 view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.pack.js delete mode 100644 view/theme/diabook-blue/lightbox/photos/image1.jpg delete mode 100644 view/theme/diabook-blue/lightbox/photos/image2.jpg delete mode 100644 view/theme/diabook-blue/lightbox/photos/image3.jpg delete mode 100644 view/theme/diabook-blue/lightbox/photos/image4.jpg delete mode 100644 view/theme/diabook-blue/lightbox/photos/image5.jpg delete mode 100644 view/theme/diabook-blue/lightbox/photos/thumb_image1.jpg delete mode 100644 view/theme/diabook-blue/lightbox/photos/thumb_image2.jpg delete mode 100644 view/theme/diabook-blue/lightbox/photos/thumb_image3.jpg delete mode 100644 view/theme/diabook-blue/lightbox/photos/thumb_image4.jpg delete mode 100644 view/theme/diabook-blue/lightbox/photos/thumb_image5.jpg delete mode 100644 view/theme/diabook/lightbox/css/jquery.lightbox-0.5.css delete mode 100644 view/theme/diabook/lightbox/images/lightbox-blank.gif delete mode 100644 view/theme/diabook/lightbox/images/lightbox-btn-close.gif delete mode 100644 view/theme/diabook/lightbox/images/lightbox-btn-next.gif delete mode 100644 view/theme/diabook/lightbox/images/lightbox-btn-prev.gif delete mode 100644 view/theme/diabook/lightbox/images/lightbox-ico-loading.gif delete mode 100644 view/theme/diabook/lightbox/index.htm delete mode 100644 view/theme/diabook/lightbox/js/jquery.js delete mode 100644 view/theme/diabook/lightbox/js/jquery.lightbox-0.5.js delete mode 100644 view/theme/diabook/lightbox/js/jquery.lightbox-0.5.min.js delete mode 100644 view/theme/diabook/lightbox/js/jquery.lightbox-0.5.pack.js delete mode 100644 view/theme/diabook/lightbox/photos/image1.jpg delete mode 100644 view/theme/diabook/lightbox/photos/image2.jpg delete mode 100644 view/theme/diabook/lightbox/photos/image3.jpg delete mode 100644 view/theme/diabook/lightbox/photos/image4.jpg delete mode 100644 view/theme/diabook/lightbox/photos/image5.jpg delete mode 100644 view/theme/diabook/lightbox/photos/thumb_image1.jpg delete mode 100644 view/theme/diabook/lightbox/photos/thumb_image2.jpg delete mode 100644 view/theme/diabook/lightbox/photos/thumb_image3.jpg delete mode 100644 view/theme/diabook/lightbox/photos/thumb_image4.jpg delete mode 100644 view/theme/diabook/lightbox/photos/thumb_image5.jpg diff --git a/view/theme/diabook-blue/lightbox/css/jquery.lightbox-0.5.css b/view/theme/diabook-blue/lightbox/css/jquery.lightbox-0.5.css deleted file mode 100644 index c7c3d1cb1..000000000 --- a/view/theme/diabook-blue/lightbox/css/jquery.lightbox-0.5.css +++ /dev/null @@ -1,101 +0,0 @@ -/** - * jQuery lightBox plugin - * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) - * and adapted to me for use like a plugin from jQuery. - * @name jquery-lightbox-0.5.css - * @author Leandro Vieira Pinho - http://leandrovieira.com - * @version 0.5 - * @date April 11, 2008 - * @category jQuery plugin - * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com) - * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US - * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin - */ -#jquery-overlay { - position: absolute; - top: 0; - left: 0; - z-index: 90; - width: 100%; - height: 500px; -} -#jquery-lightbox { - position: absolute; - top: 0; - left: 0; - width: 100%; - z-index: 100; - text-align: center; - line-height: 0; -} -#jquery-lightbox a img { border: none; } -#lightbox-container-image-box { - position: relative; - background-color: #fff; - width: 250px; - height: 250px; - margin: 0 auto; -} -#lightbox-container-image { padding: 10px; } -#lightbox-loading { - position: absolute; - top: 40%; - left: 0%; - height: 25%; - width: 100%; - text-align: center; - line-height: 0; -} -#lightbox-nav { - position: absolute; - top: 0; - left: 0; - height: 100%; - width: 100%; - z-index: 10; -} -#lightbox-container-image-box > #lightbox-nav { left: 0; } -#lightbox-nav a { outline: none;} -#lightbox-nav-btnPrev, #lightbox-nav-btnNext { - width: 49%; - height: 100%; - zoom: 1; - display: block; -} -#lightbox-nav-btnPrev { - left: 0; - float: left; -} -#lightbox-nav-btnNext { - right: 0; - float: right; -} -#lightbox-container-image-data-box { - font: 10px Verdana, Helvetica, sans-serif; - background-color: #fff; - margin: 0 auto; - line-height: 1.4em; - overflow: auto; - width: 100%; - padding: 0 10px 0; -} -#lightbox-container-image-data { - padding: 0 10px; - color: #666; -} -#lightbox-container-image-data #lightbox-image-details { - width: 70%; - float: left; - text-align: left; -} -#lightbox-image-details-caption { font-weight: bold; } -#lightbox-image-details-currentNumber { - display: block; - clear: left; - padding-bottom: 1.0em; -} -#lightbox-secNav-btnClose { - width: 66px; - float: right; - padding-bottom: 0.7em; -} \ No newline at end of file diff --git a/view/theme/diabook-blue/lightbox/images/lightbox-blank.gif b/view/theme/diabook-blue/lightbox/images/lightbox-blank.gif deleted file mode 100644 index 1d11fa9ad..000000000 Binary files a/view/theme/diabook-blue/lightbox/images/lightbox-blank.gif and /dev/null differ diff --git a/view/theme/diabook-blue/lightbox/images/lightbox-btn-close.gif b/view/theme/diabook-blue/lightbox/images/lightbox-btn-close.gif deleted file mode 100644 index 33bcf517a..000000000 Binary files a/view/theme/diabook-blue/lightbox/images/lightbox-btn-close.gif and /dev/null differ diff --git a/view/theme/diabook-blue/lightbox/images/lightbox-btn-next.gif b/view/theme/diabook-blue/lightbox/images/lightbox-btn-next.gif deleted file mode 100644 index a0d4fcf84..000000000 Binary files a/view/theme/diabook-blue/lightbox/images/lightbox-btn-next.gif and /dev/null differ diff --git a/view/theme/diabook-blue/lightbox/images/lightbox-btn-prev.gif b/view/theme/diabook-blue/lightbox/images/lightbox-btn-prev.gif deleted file mode 100644 index 040ee5992..000000000 Binary files a/view/theme/diabook-blue/lightbox/images/lightbox-btn-prev.gif and /dev/null differ diff --git a/view/theme/diabook-blue/lightbox/images/lightbox-ico-loading.gif b/view/theme/diabook-blue/lightbox/images/lightbox-ico-loading.gif deleted file mode 100644 index 4f1429c06..000000000 Binary files a/view/theme/diabook-blue/lightbox/images/lightbox-ico-loading.gif and /dev/null differ diff --git a/view/theme/diabook-blue/lightbox/index.htm b/view/theme/diabook-blue/lightbox/index.htm deleted file mode 100644 index 5daa72a0f..000000000 --- a/view/theme/diabook-blue/lightbox/index.htm +++ /dev/null @@ -1,78 +0,0 @@ - - - - - jQuery lightBox plugin - - - - - - - - - - - - - - - - -

    Example

    -

    Click in the image and see the jQuery lightBox plugin in action.

    - - - - \ No newline at end of file diff --git a/view/theme/diabook-blue/lightbox/js/jquery.js b/view/theme/diabook-blue/lightbox/js/jquery.js deleted file mode 100644 index 3747929d8..000000000 --- a/view/theme/diabook-blue/lightbox/js/jquery.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * jQuery 1.2.3 - New Wave Javascript - * - * Copyright (c) 2008 John Resig (jquery.com) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $ - * $Rev: 4663 $ - */ -(function(){if(window.jQuery)var _jQuery=window.jQuery;var jQuery=window.jQuery=function(selector,context){return new jQuery.prototype.init(selector,context);};if(window.$)var _$=window.$;window.$=jQuery;var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;var isSimple=/^.[^:#\[\.]*$/;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}else if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem)if(elem.id!=match[3])return jQuery().find(selector);else{this[0]=elem;this.length=1;return this;}else -selector=[];}}else -return new jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return new jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(selector.constructor==Array&&selector||(selector.jquery||selector.length&&selector!=window&&!selector.nodeType&&selector[0]!=undefined&&selector[0].nodeType)&&jQuery.makeArray(selector)||[selector]);},jquery:"1.2.3",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;this.each(function(i){if(this==elem)ret=i;});return ret;},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value==undefined)return this.length&&jQuery[type||"attr"](this[0],name)||undefined;else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else -return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else -selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return!selector?this:this.pushStack(jQuery.merge(this.get(),selector.constructor==String?jQuery(selector).get():selector.length!=undefined&&(!selector.nodeName||jQuery.nodeName(selector,"form"))?selector:[selector]));},is:function(selector){return selector?jQuery.multiFilter(selector,this).length>0:false;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=value.constructor==Array?value:[value];jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else -this.value=value;});},html:function(value){return value==undefined?(this.length?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value==null){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data==undefined&&this.length)data=jQuery.data(this[0],key);return data==null&&parts[1]?this.data(parts[0]):data;}else -return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script")){scripts=scripts.add(elem);}else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.prototype.init.prototype=jQuery.prototype;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else -jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==1){target=this;i=0;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else -jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret;function color(elem){if(!jQuery.browser.safari)return false;var ret=document.defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(elem.style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=elem.style.outline;elem.style.outline="0 solid black";elem.style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&elem.style&&elem.style[name])ret=elem.style[name];else if(document.defaultView&&document.defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var getComputedStyle=document.defaultView.getComputedStyle(elem,null);if(getComputedStyle&&!color(elem))ret=getComputedStyle.getPropertyValue(name);else{var swap=[],stack=[];for(var a=elem;a&&color(a);a=a.parentNode)stack.unshift(a);for(var i=0;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
    "]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
    ","
    "]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else -ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var fix=jQuery.isXMLDoc(elem)?{}:jQuery.props;if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(fix[name]){if(value!=undefined)elem[fix[name]]=value;return elem[fix[name]];}else if(jQuery.browser.msie&&name=="style")return jQuery.attr(elem.style,"cssText",value);else if(value==undefined&&jQuery.browser.msie&&jQuery.nodeName(elem,"form")&&(name=="action"||name=="method"))return elem.getAttributeNode(name).nodeValue;else if(elem.tagName){if(value!=undefined){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem.setAttribute(name,""+value);}if(jQuery.browser.msie&&/href|src/.test(name)&&!jQuery.isXMLDoc(elem))return elem.getAttribute(name,2);return elem.getAttribute(name);}else{if(name=="opacity"&&jQuery.browser.msie){if(value!=undefined){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseFloat(value).toString()=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100).toString():"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(value!=undefined)elem[name]=value;return elem[name];}},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(typeof array!="array")for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false;var re=quickChild;var m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[];var cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&(!elem||n!=elem))r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval!=undefined)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=function(){return fn.apply(this,arguments);};handler.data=data;handler.guid=fn.guid;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){var val;if(typeof jQuery=="undefined"||jQuery.event.triggered)return val;val=jQuery.event.handle.apply(arguments.callee.elem,arguments);return val;});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else -for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data||[]);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event)data.unshift(this.fix({type:type,target:elem}));data[0].type=type;if(exclusive)data[0].exclusive=true;if(jQuery.isFunction(jQuery.data(elem,"handle")))val=jQuery.data(elem,"handle").apply(elem,data);if(!fn&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val;event=jQuery.event.fix(event||window.event||{});var parts=event.type.split(".");event.type=parts[0];var handlers=jQuery.data(this,"events")&&jQuery.data(this,"events")[event.type],args=Array.prototype.slice.call(arguments,1);args.unshift(event);for(var j in handlers){var handler=handlers[j];args[0].handler=handler;args[0].data=handler.data;if(!parts[1]&&!event.exclusive||handler.type==parts[1]){var ret=handler.apply(this,args);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}if(jQuery.browser.msie)event.target=event.preventDefault=event.stopPropagation=event.handler=event.data=null;return val;},fix:function(event){var originalEvent=event;event=jQuery.extend({},originalEvent);event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=originalEvent.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;arguments[0].type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;arguments[0].type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){return this.each(function(){jQuery.event.add(this,type,function(event){jQuery(this).unbind(event);return(fn||data).apply(this,arguments);},fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){if(this[0])return jQuery.event.trigger(type,data,this[0],false,fn);return undefined;},toggle:function(){var args=arguments;return this.click(function(event){this.lastToggle=0==this.lastToggle?1:0;event.preventDefault();return args[this.lastToggle].apply(this,arguments)||false;});},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else -jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.apply(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
    ").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=(new Date).getTime();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){var jsonp,jsre=/=\?(&|$)/g,status,data;s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(s.type.toLowerCase()=="get"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&s.type.toLowerCase()=="get"){var ts=(new Date()).getTime();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&s.type.toLowerCase()=="get"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");if((!s.url.indexOf("http")||!s.url.indexOf("//"))&&s.dataType=="script"&&s.type.toLowerCase()=="get"){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xml=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();xml.open(s.type,s.url,s.async,s.username,s.password);try{if(s.data)xml.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xml.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xml.setRequestHeader("X-Requested-With","XMLHttpRequest");xml.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend)s.beforeSend(xml);if(s.global)jQuery.event.trigger("ajaxSend",[xml,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xml&&(xml.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xml)&&"error"||s.ifModified&&jQuery.httpNotModified(xml,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xml,s.dataType);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xml.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else -jQuery.handleError(s,xml,status);complete();if(s.async)xml=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xml){xml.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xml.send(s.data);}catch(e){jQuery.handleError(s,xml,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xml,s]);}function complete(){if(s.complete)s.complete(xml,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xml,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xml;},handleError:function(s,xml,status,e){if(s.error)s.error(xml,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xml,s,e]);},active:0,httpSuccess:function(r){try{return!r.status&&location.protocol=="file:"||(r.status>=200&&r.status<300)||r.status==304||r.status==1223||jQuery.browser.safari&&r.status==undefined;}catch(e){}return false;},httpNotModified:function(xml,url){try{var xmlRes=xml.getResponseHeader("Last-Modified");return xml.status==304||xmlRes==jQuery.lastModified[url]||jQuery.browser.safari&&xml.status==undefined;}catch(e){}return false;},httpData:function(r,type){var ct=r.getResponseHeader("content-type");var xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0;var data=xml?r.responseXML:r.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else -for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else -s.push(encodeURIComponent(j)+"="+encodeURIComponent(a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle(fn,fn2):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall);var hidden=jQuery(this).is(":hidden"),self=this;for(var p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return jQuery.isFunction(opt.complete)&&opt.complete.apply(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else -e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.apply(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(!elem)return undefined;type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",array?jQuery.makeArray(array):[]);return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].apply(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:{slow:600,fast:200}[opt.duration])||400;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.apply(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.apply(this.elem,[this.now,this]);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=(new Date()).getTime();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done&&jQuery.isFunction(this.options.complete))this.options.complete.apply(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.fx.step={scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}};jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),fixed=jQuery.css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&jQuery.css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(jQuery.css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&jQuery.css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||jQuery.css(offsetChild,"position")=="absolute"))||(mozilla&&jQuery.css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l)||0;top+=parseInt(t)||0;}return results;};})(); \ No newline at end of file diff --git a/view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.js b/view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.js deleted file mode 100644 index eef6425e0..000000000 --- a/view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.js +++ /dev/null @@ -1,472 +0,0 @@ -/** - * jQuery lightBox plugin - * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) - * and adapted to me for use like a plugin from jQuery. - * @name jquery-lightbox-0.5.js - * @author Leandro Vieira Pinho - http://leandrovieira.com - * @version 0.5 - * @date April 11, 2008 - * @category jQuery plugin - * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com) - * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US - * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin - */ - -// Offering a Custom Alias suport - More info: http://docs.jquery.com/Plugins/Authoring#Custom_Alias -(function($) { - /** - * $ is an alias to jQuery object - * - */ - $.fn.lightBox = function(settings) { - // Settings to configure the jQuery lightBox plugin how you like - settings = jQuery.extend({ - // Configuration related to overlay - overlayBgColor: '#000', // (string) Background color to overlay; inform a hexadecimal value like: #RRGGBB. Where RR, GG, and BB are the hexadecimal values for the red, green, and blue values of the color. - overlayOpacity: 0.8, // (integer) Opacity value to overlay; inform: 0.X. Where X are number from 0 to 9 - // Configuration related to navigation - fixedNavigation: false, // (boolean) Boolean that informs if the navigation (next and prev button) will be fixed or not in the interface. - // Configuration related to images - imageLoading: 'images/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon - imageBtnPrev: 'images/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image - imageBtnNext: 'images/lightbox-btn-next.gif', // (string) Path and the name of the next button image - imageBtnClose: 'images/lightbox-btn-close.gif', // (string) Path and the name of the close btn - imageBlank: 'images/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel) - // Configuration related to container image box - containerBorderSize: 10, // (integer) If you adjust the padding in the CSS for the container, #lightbox-container-image-box, you will need to update this value - containerResizeSpeed: 400, // (integer) Specify the resize duration of container image. These number are miliseconds. 400 is default. - // Configuration related to texts in caption. For example: Image 2 of 8. You can alter either "Image" and "of" texts. - txtImage: 'Image', // (string) Specify text "Image" - txtOf: 'of', // (string) Specify text "of" - // Configuration related to keyboard navigation - keyToClose: 'c', // (string) (c = close) Letter to close the jQuery lightBox interface. Beyond this letter, the letter X and the SCAPE key is used to. - keyToPrev: 'p', // (string) (p = previous) Letter to show the previous image - keyToNext: 'n', // (string) (n = next) Letter to show the next image. - // Don´t alter these variables in any way - imageArray: [], - activeImage: 0 - },settings); - // Caching the jQuery object with all elements matched - var jQueryMatchedObj = this; // This, in this context, refer to jQuery object - /** - * Initializing the plugin calling the start function - * - * @return boolean false - */ - function _initialize() { - _start(this,jQueryMatchedObj); // This, in this context, refer to object (link) which the user have clicked - return false; // Avoid the browser following the link - } - /** - * Start the jQuery lightBox plugin - * - * @param object objClicked The object (link) whick the user have clicked - * @param object jQueryMatchedObj The jQuery object with all elements matched - */ - function _start(objClicked,jQueryMatchedObj) { - // Hime some elements to avoid conflict with overlay in IE. These elements appear above the overlay. - $('embed, object, select').css({ 'visibility' : 'hidden' }); - // Call the function to create the markup structure; style some elements; assign events in some elements. - _set_interface(); - // Unset total images in imageArray - settings.imageArray.length = 0; - // Unset image active information - settings.activeImage = 0; - // We have an image set? Or just an image? Let´s see it. - if ( jQueryMatchedObj.length == 1 ) { - settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title'))); - } else { - // Add an Array (as many as we have), with href and title atributes, inside the Array that storage the images references - for ( var i = 0; i < jQueryMatchedObj.length; i++ ) { - settings.imageArray.push(new Array(jQueryMatchedObj[i].getAttribute('href'),jQueryMatchedObj[i].getAttribute('title'))); - } - } - while ( settings.imageArray[settings.activeImage][0] != objClicked.getAttribute('href') ) { - settings.activeImage++; - } - // Call the function that prepares image exibition - _set_image_to_view(); - } - /** - * Create the jQuery lightBox plugin interface - * - * The HTML markup will be like that: -
    -
    - - -
    - * - */ - function _set_interface() { - // Apply the HTML markup into body tag - $('body').append('
    '); - // Get page sizes - var arrPageSizes = ___getPageSize(); - // Style overlay and show it - $('#jquery-overlay').css({ - backgroundColor: settings.overlayBgColor, - opacity: settings.overlayOpacity, - width: arrPageSizes[0], - height: arrPageSizes[1] - }).fadeIn(); - // Get page scroll - var arrPageScroll = ___getPageScroll(); - // Calculate top and left offset for the jquery-lightbox div object and show it - $('#jquery-lightbox').css({ - top: arrPageScroll[1] + (arrPageSizes[3] / 10), - left: arrPageScroll[0] - }).show(); - // Assigning click events in elements to close overlay - $('#jquery-overlay,#jquery-lightbox').click(function() { - _finish(); - }); - // Assign the _finish function to lightbox-loading-link and lightbox-secNav-btnClose objects - $('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function() { - _finish(); - return false; - }); - // If window was resized, calculate the new overlay dimensions - $(window).resize(function() { - // Get page sizes - var arrPageSizes = ___getPageSize(); - // Style overlay and show it - $('#jquery-overlay').css({ - width: arrPageSizes[0], - height: arrPageSizes[1] - }); - // Get page scroll - var arrPageScroll = ___getPageScroll(); - // Calculate top and left offset for the jquery-lightbox div object and show it - $('#jquery-lightbox').css({ - top: arrPageScroll[1] + (arrPageSizes[3] / 10), - left: arrPageScroll[0] - }); - }); - } - /** - * Prepares image exibition; doing a image´s preloader to calculate it´s size - * - */ - function _set_image_to_view() { // show the loading - // Show the loading - $('#lightbox-loading').show(); - if ( settings.fixedNavigation ) { - $('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide(); - } else { - // Hide some elements - $('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide(); - } - // Image preload process - var objImagePreloader = new Image(); - objImagePreloader.onload = function() { - $('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]); - // Perfomance an effect in the image container resizing it - _resize_container_image_box(objImagePreloader.width,objImagePreloader.height); - // clear onLoad, IE behaves irratically with animated gifs otherwise - objImagePreloader.onload=function(){}; - }; - objImagePreloader.src = settings.imageArray[settings.activeImage][0]; - }; - /** - * Perfomance an effect in the image container resizing it - * - * @param integer intImageWidth The image´s width that will be showed - * @param integer intImageHeight The image´s height that will be showed - */ - function _resize_container_image_box(intImageWidth,intImageHeight) { - // Get current width and height - var intCurrentWidth = $('#lightbox-container-image-box').width(); - var intCurrentHeight = $('#lightbox-container-image-box').height(); - // Get the width and height of the selected image plus the padding - var intWidth = (intImageWidth + (settings.containerBorderSize * 2)); // Plus the image´s width and the left and right padding value - var intHeight = (intImageHeight + (settings.containerBorderSize * 2)); // Plus the image´s height and the left and right padding value - // Diferences - var intDiffW = intCurrentWidth - intWidth; - var intDiffH = intCurrentHeight - intHeight; - // Perfomance the effect - $('#lightbox-container-image-box').animate({ width: intWidth, height: intHeight },settings.containerResizeSpeed,function() { _show_image(); }); - if ( ( intDiffW == 0 ) && ( intDiffH == 0 ) ) { - if ( $.browser.msie ) { - ___pause(250); - } else { - ___pause(100); - } - } - $('#lightbox-container-image-data-box').css({ width: intImageWidth }); - $('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ height: intImageHeight + (settings.containerBorderSize * 2) }); - }; - /** - * Show the prepared image - * - */ - function _show_image() { - $('#lightbox-loading').hide(); - $('#lightbox-image').fadeIn(function() { - _show_image_data(); - _set_navigation(); - }); - _preload_neighbor_images(); - }; - /** - * Show the image information - * - */ - function _show_image_data() { - $('#lightbox-container-image-data-box').slideDown('fast'); - $('#lightbox-image-details-caption').hide(); - if ( settings.imageArray[settings.activeImage][1] ) { - $('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show(); - } - // If we have a image set, display 'Image X of X' - if ( settings.imageArray.length > 1 ) { - $('#lightbox-image-details-currentNumber').html(settings.txtImage + ' ' + ( settings.activeImage + 1 ) + ' ' + settings.txtOf + ' ' + settings.imageArray.length).show(); - } - } - /** - * Display the button navigations - * - */ - function _set_navigation() { - $('#lightbox-nav').show(); - - // Instead to define this configuration in CSS file, we define here. And it´s need to IE. Just. - $('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' }); - - // Show the prev button, if not the first image in set - if ( settings.activeImage != 0 ) { - if ( settings.fixedNavigation ) { - $('#lightbox-nav-btnPrev').css({ 'background' : 'url(' + settings.imageBtnPrev + ') left 15% no-repeat' }) - .unbind() - .bind('click',function() { - settings.activeImage = settings.activeImage - 1; - _set_image_to_view(); - return false; - }); - } else { - // Show the images button for Next buttons - $('#lightbox-nav-btnPrev').unbind().hover(function() { - $(this).css({ 'background' : 'url(' + settings.imageBtnPrev + ') left 15% no-repeat' }); - },function() { - $(this).css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' }); - }).show().bind('click',function() { - settings.activeImage = settings.activeImage - 1; - _set_image_to_view(); - return false; - }); - } - } - - // Show the next button, if not the last image in set - if ( settings.activeImage != ( settings.imageArray.length -1 ) ) { - if ( settings.fixedNavigation ) { - $('#lightbox-nav-btnNext').css({ 'background' : 'url(' + settings.imageBtnNext + ') right 15% no-repeat' }) - .unbind() - .bind('click',function() { - settings.activeImage = settings.activeImage + 1; - _set_image_to_view(); - return false; - }); - } else { - // Show the images button for Next buttons - $('#lightbox-nav-btnNext').unbind().hover(function() { - $(this).css({ 'background' : 'url(' + settings.imageBtnNext + ') right 15% no-repeat' }); - },function() { - $(this).css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' }); - }).show().bind('click',function() { - settings.activeImage = settings.activeImage + 1; - _set_image_to_view(); - return false; - }); - } - } - // Enable keyboard navigation - _enable_keyboard_navigation(); - } - /** - * Enable a support to keyboard navigation - * - */ - function _enable_keyboard_navigation() { - $(document).keydown(function(objEvent) { - _keyboard_action(objEvent); - }); - } - /** - * Disable the support to keyboard navigation - * - */ - function _disable_keyboard_navigation() { - $(document).unbind(); - } - /** - * Perform the keyboard actions - * - */ - function _keyboard_action(objEvent) { - // To ie - if ( objEvent == null ) { - keycode = event.keyCode; - escapeKey = 27; - // To Mozilla - } else { - keycode = objEvent.keyCode; - escapeKey = objEvent.DOM_VK_ESCAPE; - } - // Get the key in lower case form - key = String.fromCharCode(keycode).toLowerCase(); - // Verify the keys to close the ligthBox - if ( ( key == settings.keyToClose ) || ( key == 'x' ) || ( keycode == escapeKey ) ) { - _finish(); - } - // Verify the key to show the previous image - if ( ( key == settings.keyToPrev ) || ( keycode == 37 ) ) { - // If we´re not showing the first image, call the previous - if ( settings.activeImage != 0 ) { - settings.activeImage = settings.activeImage - 1; - _set_image_to_view(); - _disable_keyboard_navigation(); - } - } - // Verify the key to show the next image - if ( ( key == settings.keyToNext ) || ( keycode == 39 ) ) { - // If we´re not showing the last image, call the next - if ( settings.activeImage != ( settings.imageArray.length - 1 ) ) { - settings.activeImage = settings.activeImage + 1; - _set_image_to_view(); - _disable_keyboard_navigation(); - } - } - } - /** - * Preload prev and next images being showed - * - */ - function _preload_neighbor_images() { - if ( (settings.imageArray.length -1) > settings.activeImage ) { - objNext = new Image(); - objNext.src = settings.imageArray[settings.activeImage + 1][0]; - } - if ( settings.activeImage > 0 ) { - objPrev = new Image(); - objPrev.src = settings.imageArray[settings.activeImage -1][0]; - } - } - /** - * Remove jQuery lightBox plugin HTML markup - * - */ - function _finish() { - $('#jquery-lightbox').remove(); - $('#jquery-overlay').fadeOut(function() { $('#jquery-overlay').remove(); }); - // Show some elements to avoid conflict with overlay in IE. These elements appear above the overlay. - $('embed, object, select').css({ 'visibility' : 'visible' }); - } - /** - / THIRD FUNCTION - * getPageSize() by quirksmode.com - * - * @return Array Return an array with page width, height and window width, height - */ - function ___getPageSize() { - var xScroll, yScroll; - if (window.innerHeight && window.scrollMaxY) { - xScroll = window.innerWidth + window.scrollMaxX; - yScroll = window.innerHeight + window.scrollMaxY; - } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac - xScroll = document.body.scrollWidth; - yScroll = document.body.scrollHeight; - } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari - xScroll = document.body.offsetWidth; - yScroll = document.body.offsetHeight; - } - var windowWidth, windowHeight; - if (self.innerHeight) { // all except Explorer - if(document.documentElement.clientWidth){ - windowWidth = document.documentElement.clientWidth; - } else { - windowWidth = self.innerWidth; - } - windowHeight = self.innerHeight; - } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode - windowWidth = document.documentElement.clientWidth; - windowHeight = document.documentElement.clientHeight; - } else if (document.body) { // other Explorers - windowWidth = document.body.clientWidth; - windowHeight = document.body.clientHeight; - } - // for small pages with total height less then height of the viewport - if(yScroll < windowHeight){ - pageHeight = windowHeight; - } else { - pageHeight = yScroll; - } - // for small pages with total width less then width of the viewport - if(xScroll < windowWidth){ - pageWidth = xScroll; - } else { - pageWidth = windowWidth; - } - arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight); - return arrayPageSize; - }; - /** - / THIRD FUNCTION - * getPageScroll() by quirksmode.com - * - * @return Array Return an array with x,y page scroll values. - */ - function ___getPageScroll() { - var xScroll, yScroll; - if (self.pageYOffset) { - yScroll = self.pageYOffset; - xScroll = self.pageXOffset; - } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict - yScroll = document.documentElement.scrollTop; - xScroll = document.documentElement.scrollLeft; - } else if (document.body) {// all other Explorers - yScroll = document.body.scrollTop; - xScroll = document.body.scrollLeft; - } - arrayPageScroll = new Array(xScroll,yScroll); - return arrayPageScroll; - }; - /** - * Stop the code execution from a escified time in milisecond - * - */ - function ___pause(ms) { - var date = new Date(); - curDate = null; - do { var curDate = new Date(); } - while ( curDate - date < ms); - }; - // Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once - return this.unbind('click').click(_initialize); - }; -})(jQuery); // Call and execute the function immediately passing the jQuery object \ No newline at end of file diff --git a/view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.min.js b/view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.min.js deleted file mode 100644 index 5f13b0bf6..000000000 --- a/view/theme/diabook-blue/lightbox/js/jquery.lightbox-0.5.min.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * jQuery lightBox plugin - * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) - * and adapted to me for use like a plugin from jQuery. - * @name jquery-lightbox-0.5.js - * @author Leandro Vieira Pinho - http://leandrovieira.com - * @version 0.5 - * @date April 11, 2008 - * @category jQuery plugin - * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com) - * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US - * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin - */ -(function($){$.fn.lightBox=function(settings){settings=jQuery.extend({overlayBgColor:'#000',overlayOpacity:0.8,fixedNavigation:false,imageLoading:'images/lightbox-ico-loading.gif',imageBtnPrev:'images/lightbox-btn-prev.gif',imageBtnNext:'images/lightbox-btn-next.gif',imageBtnClose:'images/lightbox-btn-close.gif',imageBlank:'images/lightbox-blank.gif',containerBorderSize:10,containerResizeSpeed:400,txtImage:'Image',txtOf:'of',keyToClose:'c',keyToPrev:'p',keyToNext:'n',imageArray:[],activeImage:0},settings);var jQueryMatchedObj=this;function _initialize(){_start(this,jQueryMatchedObj);return false;} -function _start(objClicked,jQueryMatchedObj){$('embed, object, select').css({'visibility':'hidden'});_set_interface();settings.imageArray.length=0;settings.activeImage=0;if(jQueryMatchedObj.length==1){settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title')));}else{for(var i=0;i
    ');var arrPageSizes=___getPageSize();$('#jquery-overlay').css({backgroundColor:settings.overlayBgColor,opacity:settings.overlayOpacity,width:arrPageSizes[0],height:arrPageSizes[1]}).fadeIn();var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]}).show();$('#jquery-overlay,#jquery-lightbox').click(function(){_finish();});$('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function(){_finish();return false;});$(window).resize(function(){var arrPageSizes=___getPageSize();$('#jquery-overlay').css({width:arrPageSizes[0],height:arrPageSizes[1]});var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]});});} -function _set_image_to_view(){$('#lightbox-loading').show();if(settings.fixedNavigation){$('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}else{$('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();} -var objImagePreloader=new Image();objImagePreloader.onload=function(){$('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);_resize_container_image_box(objImagePreloader.width,objImagePreloader.height);objImagePreloader.onload=function(){};};objImagePreloader.src=settings.imageArray[settings.activeImage][0];};function _resize_container_image_box(intImageWidth,intImageHeight){var intCurrentWidth=$('#lightbox-container-image-box').width();var intCurrentHeight=$('#lightbox-container-image-box').height();var intWidth=(intImageWidth+(settings.containerBorderSize*2));var intHeight=(intImageHeight+(settings.containerBorderSize*2));var intDiffW=intCurrentWidth-intWidth;var intDiffH=intCurrentHeight-intHeight;$('#lightbox-container-image-box').animate({width:intWidth,height:intHeight},settings.containerResizeSpeed,function(){_show_image();});if((intDiffW==0)&&(intDiffH==0)){if($.browser.msie){___pause(250);}else{___pause(100);}} -$('#lightbox-container-image-data-box').css({width:intImageWidth});$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({height:intImageHeight+(settings.containerBorderSize*2)});};function _show_image(){$('#lightbox-loading').hide();$('#lightbox-image').fadeIn(function(){_show_image_data();_set_navigation();});_preload_neighbor_images();};function _show_image_data(){$('#lightbox-container-image-data-box').slideDown('fast');$('#lightbox-image-details-caption').hide();if(settings.imageArray[settings.activeImage][1]){$('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show();} -if(settings.imageArray.length>1){$('#lightbox-image-details-currentNumber').html(settings.txtImage+' '+(settings.activeImage+1)+' '+settings.txtOf+' '+settings.imageArray.length).show();}} -function _set_navigation(){$('#lightbox-nav').show();$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({'background':'transparent url('+settings.imageBlank+') no-repeat'});if(settings.activeImage!=0){if(settings.fixedNavigation){$('#lightbox-nav-btnPrev').css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnPrev').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}} -if(settings.activeImage!=(settings.imageArray.length-1)){if(settings.fixedNavigation){$('#lightbox-nav-btnNext').css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnNext').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}} -_enable_keyboard_navigation();} -function _enable_keyboard_navigation(){$(document).keydown(function(objEvent){_keyboard_action(objEvent);});} -function _disable_keyboard_navigation(){$(document).unbind();} -function _keyboard_action(objEvent){if(objEvent==null){keycode=event.keyCode;escapeKey=27;}else{keycode=objEvent.keyCode;escapeKey=objEvent.DOM_VK_ESCAPE;} -key=String.fromCharCode(keycode).toLowerCase();if((key==settings.keyToClose)||(key=='x')||(keycode==escapeKey)){_finish();} -if((key==settings.keyToPrev)||(keycode==37)){if(settings.activeImage!=0){settings.activeImage=settings.activeImage-1;_set_image_to_view();_disable_keyboard_navigation();}} -if((key==settings.keyToNext)||(keycode==39)){if(settings.activeImage!=(settings.imageArray.length-1)){settings.activeImage=settings.activeImage+1;_set_image_to_view();_disable_keyboard_navigation();}}} -function _preload_neighbor_images(){if((settings.imageArray.length-1)>settings.activeImage){objNext=new Image();objNext.src=settings.imageArray[settings.activeImage+1][0];} -if(settings.activeImage>0){objPrev=new Image();objPrev.src=settings.imageArray[settings.activeImage-1][0];}} -function _finish(){$('#jquery-lightbox').remove();$('#jquery-overlay').fadeOut(function(){$('#jquery-overlay').remove();});$('embed, object, select').css({'visibility':'visible'});} -function ___getPageSize(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=window.innerWidth+window.scrollMaxX;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;} -var windowWidth,windowHeight;if(self.innerHeight){if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;}else{windowWidth=self.innerWidth;} -windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;} -if(yScroll35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(6($){$.2N.3g=6(4){4=23.2H({2B:\'#34\',2g:0.8,1d:F,1M:\'18/5-33-Y.16\',1v:\'18/5-1u-2Q.16\',1E:\'18/5-1u-2L.16\',1W:\'18/5-1u-2I.16\',19:\'18/5-2F.16\',1f:10,2A:3d,2s:\'1j\',2o:\'32\',2j:\'c\',2f:\'p\',2d:\'n\',h:[],9:0},4);f I=N;6 20(){1X(N,I);u F}6 1X(1e,I){$(\'1U, 1S, 1R\').l({\'1Q\':\'2E\'});1O();4.h.B=0;4.9=0;7(I.B==1){4.h.1J(v 1m(1e.17(\'J\'),1e.17(\'2v\')))}j{36(f i=0;i<1w g="5-b"><1w W="\'+4.1M+\'"><1i g="5-b-A-1t"><1i g="5-b-A-1g"><1w W="\'+4.1W+\'">\');f z=1D();$(\'#q-13\').l({2K:4.2B,2J:4.2g,S:z[0],P:z[1]}).1V();f R=1p();$(\'#q-5\').l({1T:R[1]+(z[3]/10),1c:R[0]}).E();$(\'#q-13,#q-5\').C(6(){1a()});$(\'#5-Y-29,#5-1s-22\').C(6(){1a();u F});$(G).2G(6(){f z=1D();$(\'#q-13\').l({S:z[0],P:z[1]});f R=1p();$(\'#q-5\').l({1T:R[1]+(z[3]/10),1c:R[0]})})}6 D(){$(\'#5-Y\').E();7(4.1d){$(\'#5-b,#5-s-b-T-w,#5-b-A-1g\').1b()}j{$(\'#5-b,#5-k,#5-k-V,#5-k-X,#5-s-b-T-w,#5-b-A-1g\').1b()}f Q=v 1j();Q.1P=6(){$(\'#5-b\').2D(\'W\',4.h[4.9][0]);1N(Q.S,Q.P);Q.1P=6(){}};Q.W=4.h[4.9][0]};6 1N(1o,1r){f 1L=$(\'#5-s-b-w\').S();f 1K=$(\'#5-s-b-w\').P();f 1n=(1o+(4.1f*2));f 1y=(1r+(4.1f*2));f 1I=1L-1n;f 2z=1K-1y;$(\'#5-s-b-w\').3f({S:1n,P:1y},4.2A,6(){2y()});7((1I==0)&&(2z==0)){7($.3e.3c){1H(3b)}j{1H(3a)}}$(\'#5-s-b-T-w\').l({S:1o});$(\'#5-k-V,#5-k-X\').l({P:1r+(4.1f*2)})};6 2y(){$(\'#5-Y\').1b();$(\'#5-b\').1V(6(){2u();2t()});2r()};6 2u(){$(\'#5-s-b-T-w\').38(\'35\');$(\'#5-b-A-1t\').1b();7(4.h[4.9][1]){$(\'#5-b-A-1t\').2p(4.h[4.9][1]).E()}7(4.h.B>1){$(\'#5-b-A-1g\').2p(4.2s+\' \'+(4.9+1)+\' \'+4.2o+\' \'+4.h.B).E()}}6 2t(){$(\'#5-k\').E();$(\'#5-k-V,#5-k-X\').l({\'K\':\'1C M(\'+4.19+\') L-O\'});7(4.9!=0){7(4.1d){$(\'#5-k-V\').l({\'K\':\'M(\'+4.1v+\') 1c 15% L-O\'}).11().1k(\'C\',6(){4.9=4.9-1;D();u F})}j{$(\'#5-k-V\').11().2m(6(){$(N).l({\'K\':\'M(\'+4.1v+\') 1c 15% L-O\'})},6(){$(N).l({\'K\':\'1C M(\'+4.19+\') L-O\'})}).E().1k(\'C\',6(){4.9=4.9-1;D();u F})}}7(4.9!=(4.h.B-1)){7(4.1d){$(\'#5-k-X\').l({\'K\':\'M(\'+4.1E+\') 2l 15% L-O\'}).11().1k(\'C\',6(){4.9=4.9+1;D();u F})}j{$(\'#5-k-X\').11().2m(6(){$(N).l({\'K\':\'M(\'+4.1E+\') 2l 15% L-O\'})},6(){$(N).l({\'K\':\'1C M(\'+4.19+\') L-O\'})}).E().1k(\'C\',6(){4.9=4.9+1;D();u F})}}2k()}6 2k(){$(d).30(6(12){2i(12)})}6 1G(){$(d).11()}6 2i(12){7(12==2h){U=2Z.2e;1x=27}j{U=12.2e;1x=12.2Y}14=2X.2W(U).2U();7((14==4.2j)||(14==\'x\')||(U==1x)){1a()}7((14==4.2f)||(U==37)){7(4.9!=0){4.9=4.9-1;D();1G()}}7((14==4.2d)||(U==39)){7(4.9!=(4.h.B-1)){4.9=4.9+1;D();1G()}}}6 2r(){7((4.h.B-1)>4.9){2c=v 1j();2c.W=4.h[4.9+1][0]}7(4.9>0){2b=v 1j();2b.W=4.h[4.9-1][0]}}6 1a(){$(\'#q-5\').2a();$(\'#q-13\').2T(6(){$(\'#q-13\').2a()});$(\'1U, 1S, 1R\').l({\'1Q\':\'2S\'})}6 1D(){f o,r;7(G.1h&&G.28){o=G.26+G.2R;r=G.1h+G.28}j 7(d.m.25>d.m.24){o=d.m.2P;r=d.m.25}j{o=d.m.2O;r=d.m.24}f y,H;7(Z.1h){7(d.t.1l){y=d.t.1l}j{y=Z.26}H=Z.1h}j 7(d.t&&d.t.1A){y=d.t.1l;H=d.t.1A}j 7(d.m){y=d.m.1l;H=d.m.1A}7(rtheme_info = array( $a->page['htmlhead'] .= <<< EOT - - - - - - - - - - - - - - - - -

    Example

    -

    Click in the image and see the jQuery lightBox plugin in action.

    - - - - \ No newline at end of file diff --git a/view/theme/diabook/lightbox/js/jquery.js b/view/theme/diabook/lightbox/js/jquery.js deleted file mode 100644 index 3747929d8..000000000 --- a/view/theme/diabook/lightbox/js/jquery.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * jQuery 1.2.3 - New Wave Javascript - * - * Copyright (c) 2008 John Resig (jquery.com) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * $Date: 2008-02-06 00:21:25 -0500 (Wed, 06 Feb 2008) $ - * $Rev: 4663 $ - */ -(function(){if(window.jQuery)var _jQuery=window.jQuery;var jQuery=window.jQuery=function(selector,context){return new jQuery.prototype.init(selector,context);};if(window.$)var _$=window.$;window.$=jQuery;var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;var isSimple=/^.[^:#\[\.]*$/;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}else if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem)if(elem.id!=match[3])return jQuery().find(selector);else{this[0]=elem;this.length=1;return this;}else -selector=[];}}else -return new jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return new jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(selector.constructor==Array&&selector||(selector.jquery||selector.length&&selector!=window&&!selector.nodeType&&selector[0]!=undefined&&selector[0].nodeType)&&jQuery.makeArray(selector)||[selector]);},jquery:"1.2.3",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;this.each(function(i){if(this==elem)ret=i;});return ret;},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value==undefined)return this.length&&jQuery[type||"attr"](this[0],name)||undefined;else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else -return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else -selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return!selector?this:this.pushStack(jQuery.merge(this.get(),selector.constructor==String?jQuery(selector).get():selector.length!=undefined&&(!selector.nodeName||jQuery.nodeName(selector,"form"))?selector:[selector]));},is:function(selector){return selector?jQuery.multiFilter(selector,this).length>0:false;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=value.constructor==Array?value:[value];jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else -this.value=value;});},html:function(value){return value==undefined?(this.length?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value==null){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data==undefined&&this.length)data=jQuery.data(this[0],key);return data==null&&parts[1]?this.data(parts[0]):data;}else -return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script")){scripts=scripts.add(elem);}else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.prototype.init.prototype=jQuery.prototype;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else -jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==1){target=this;i=0;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else -jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret;function color(elem){if(!jQuery.browser.safari)return false;var ret=document.defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(elem.style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=elem.style.outline;elem.style.outline="0 solid black";elem.style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&elem.style&&elem.style[name])ret=elem.style[name];else if(document.defaultView&&document.defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var getComputedStyle=document.defaultView.getComputedStyle(elem,null);if(getComputedStyle&&!color(elem))ret=getComputedStyle.getPropertyValue(name);else{var swap=[],stack=[];for(var a=elem;a&&color(a);a=a.parentNode)stack.unshift(a);for(var i=0;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
    "]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
    ","
    "]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else -ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var fix=jQuery.isXMLDoc(elem)?{}:jQuery.props;if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(fix[name]){if(value!=undefined)elem[fix[name]]=value;return elem[fix[name]];}else if(jQuery.browser.msie&&name=="style")return jQuery.attr(elem.style,"cssText",value);else if(value==undefined&&jQuery.browser.msie&&jQuery.nodeName(elem,"form")&&(name=="action"||name=="method"))return elem.getAttributeNode(name).nodeValue;else if(elem.tagName){if(value!=undefined){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem.setAttribute(name,""+value);}if(jQuery.browser.msie&&/href|src/.test(name)&&!jQuery.isXMLDoc(elem))return elem.getAttribute(name,2);return elem.getAttribute(name);}else{if(name=="opacity"&&jQuery.browser.msie){if(value!=undefined){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseFloat(value).toString()=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100).toString():"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(value!=undefined)elem[name]=value;return elem[name];}},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(typeof array!="array")for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false;var re=quickChild;var m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[];var cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&(!elem||n!=elem))r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval!=undefined)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=function(){return fn.apply(this,arguments);};handler.data=data;handler.guid=fn.guid;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){var val;if(typeof jQuery=="undefined"||jQuery.event.triggered)return val;val=jQuery.event.handle.apply(arguments.callee.elem,arguments);return val;});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else -for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data||[]);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event)data.unshift(this.fix({type:type,target:elem}));data[0].type=type;if(exclusive)data[0].exclusive=true;if(jQuery.isFunction(jQuery.data(elem,"handle")))val=jQuery.data(elem,"handle").apply(elem,data);if(!fn&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val;event=jQuery.event.fix(event||window.event||{});var parts=event.type.split(".");event.type=parts[0];var handlers=jQuery.data(this,"events")&&jQuery.data(this,"events")[event.type],args=Array.prototype.slice.call(arguments,1);args.unshift(event);for(var j in handlers){var handler=handlers[j];args[0].handler=handler;args[0].data=handler.data;if(!parts[1]&&!event.exclusive||handler.type==parts[1]){var ret=handler.apply(this,args);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}if(jQuery.browser.msie)event.target=event.preventDefault=event.stopPropagation=event.handler=event.data=null;return val;},fix:function(event){var originalEvent=event;event=jQuery.extend({},originalEvent);event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=originalEvent.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;arguments[0].type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;arguments[0].type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){return this.each(function(){jQuery.event.add(this,type,function(event){jQuery(this).unbind(event);return(fn||data).apply(this,arguments);},fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){if(this[0])return jQuery.event.trigger(type,data,this[0],false,fn);return undefined;},toggle:function(){var args=arguments;return this.click(function(event){this.lastToggle=0==this.lastToggle?1:0;event.preventDefault();return args[this.lastToggle].apply(this,arguments)||false;});},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else -jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.apply(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
    ").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=(new Date).getTime();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){var jsonp,jsre=/=\?(&|$)/g,status,data;s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(s.type.toLowerCase()=="get"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&s.type.toLowerCase()=="get"){var ts=(new Date()).getTime();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&s.type.toLowerCase()=="get"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");if((!s.url.indexOf("http")||!s.url.indexOf("//"))&&s.dataType=="script"&&s.type.toLowerCase()=="get"){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xml=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();xml.open(s.type,s.url,s.async,s.username,s.password);try{if(s.data)xml.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xml.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xml.setRequestHeader("X-Requested-With","XMLHttpRequest");xml.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend)s.beforeSend(xml);if(s.global)jQuery.event.trigger("ajaxSend",[xml,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xml&&(xml.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xml)&&"error"||s.ifModified&&jQuery.httpNotModified(xml,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xml,s.dataType);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xml.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else -jQuery.handleError(s,xml,status);complete();if(s.async)xml=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xml){xml.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xml.send(s.data);}catch(e){jQuery.handleError(s,xml,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xml,s]);}function complete(){if(s.complete)s.complete(xml,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xml,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xml;},handleError:function(s,xml,status,e){if(s.error)s.error(xml,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xml,s,e]);},active:0,httpSuccess:function(r){try{return!r.status&&location.protocol=="file:"||(r.status>=200&&r.status<300)||r.status==304||r.status==1223||jQuery.browser.safari&&r.status==undefined;}catch(e){}return false;},httpNotModified:function(xml,url){try{var xmlRes=xml.getResponseHeader("Last-Modified");return xml.status==304||xmlRes==jQuery.lastModified[url]||jQuery.browser.safari&&xml.status==undefined;}catch(e){}return false;},httpData:function(r,type){var ct=r.getResponseHeader("content-type");var xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0;var data=xml?r.responseXML:r.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else -for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else -s.push(encodeURIComponent(j)+"="+encodeURIComponent(a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle(fn,fn2):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall);var hidden=jQuery(this).is(":hidden"),self=this;for(var p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return jQuery.isFunction(opt.complete)&&opt.complete.apply(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else -e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.apply(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(!elem)return undefined;type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",array?jQuery.makeArray(array):[]);return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].apply(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:{slow:600,fast:200}[opt.duration])||400;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.apply(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.apply(this.elem,[this.now,this]);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=(new Date()).getTime();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done&&jQuery.isFunction(this.options.complete))this.options.complete.apply(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.fx.step={scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}};jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),fixed=jQuery.css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&jQuery.css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(jQuery.css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&jQuery.css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||jQuery.css(offsetChild,"position")=="absolute"))||(mozilla&&jQuery.css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l)||0;top+=parseInt(t)||0;}return results;};})(); \ No newline at end of file diff --git a/view/theme/diabook/lightbox/js/jquery.lightbox-0.5.js b/view/theme/diabook/lightbox/js/jquery.lightbox-0.5.js deleted file mode 100644 index eef6425e0..000000000 --- a/view/theme/diabook/lightbox/js/jquery.lightbox-0.5.js +++ /dev/null @@ -1,472 +0,0 @@ -/** - * jQuery lightBox plugin - * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) - * and adapted to me for use like a plugin from jQuery. - * @name jquery-lightbox-0.5.js - * @author Leandro Vieira Pinho - http://leandrovieira.com - * @version 0.5 - * @date April 11, 2008 - * @category jQuery plugin - * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com) - * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US - * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin - */ - -// Offering a Custom Alias suport - More info: http://docs.jquery.com/Plugins/Authoring#Custom_Alias -(function($) { - /** - * $ is an alias to jQuery object - * - */ - $.fn.lightBox = function(settings) { - // Settings to configure the jQuery lightBox plugin how you like - settings = jQuery.extend({ - // Configuration related to overlay - overlayBgColor: '#000', // (string) Background color to overlay; inform a hexadecimal value like: #RRGGBB. Where RR, GG, and BB are the hexadecimal values for the red, green, and blue values of the color. - overlayOpacity: 0.8, // (integer) Opacity value to overlay; inform: 0.X. Where X are number from 0 to 9 - // Configuration related to navigation - fixedNavigation: false, // (boolean) Boolean that informs if the navigation (next and prev button) will be fixed or not in the interface. - // Configuration related to images - imageLoading: 'images/lightbox-ico-loading.gif', // (string) Path and the name of the loading icon - imageBtnPrev: 'images/lightbox-btn-prev.gif', // (string) Path and the name of the prev button image - imageBtnNext: 'images/lightbox-btn-next.gif', // (string) Path and the name of the next button image - imageBtnClose: 'images/lightbox-btn-close.gif', // (string) Path and the name of the close btn - imageBlank: 'images/lightbox-blank.gif', // (string) Path and the name of a blank image (one pixel) - // Configuration related to container image box - containerBorderSize: 10, // (integer) If you adjust the padding in the CSS for the container, #lightbox-container-image-box, you will need to update this value - containerResizeSpeed: 400, // (integer) Specify the resize duration of container image. These number are miliseconds. 400 is default. - // Configuration related to texts in caption. For example: Image 2 of 8. You can alter either "Image" and "of" texts. - txtImage: 'Image', // (string) Specify text "Image" - txtOf: 'of', // (string) Specify text "of" - // Configuration related to keyboard navigation - keyToClose: 'c', // (string) (c = close) Letter to close the jQuery lightBox interface. Beyond this letter, the letter X and the SCAPE key is used to. - keyToPrev: 'p', // (string) (p = previous) Letter to show the previous image - keyToNext: 'n', // (string) (n = next) Letter to show the next image. - // Don´t alter these variables in any way - imageArray: [], - activeImage: 0 - },settings); - // Caching the jQuery object with all elements matched - var jQueryMatchedObj = this; // This, in this context, refer to jQuery object - /** - * Initializing the plugin calling the start function - * - * @return boolean false - */ - function _initialize() { - _start(this,jQueryMatchedObj); // This, in this context, refer to object (link) which the user have clicked - return false; // Avoid the browser following the link - } - /** - * Start the jQuery lightBox plugin - * - * @param object objClicked The object (link) whick the user have clicked - * @param object jQueryMatchedObj The jQuery object with all elements matched - */ - function _start(objClicked,jQueryMatchedObj) { - // Hime some elements to avoid conflict with overlay in IE. These elements appear above the overlay. - $('embed, object, select').css({ 'visibility' : 'hidden' }); - // Call the function to create the markup structure; style some elements; assign events in some elements. - _set_interface(); - // Unset total images in imageArray - settings.imageArray.length = 0; - // Unset image active information - settings.activeImage = 0; - // We have an image set? Or just an image? Let´s see it. - if ( jQueryMatchedObj.length == 1 ) { - settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title'))); - } else { - // Add an Array (as many as we have), with href and title atributes, inside the Array that storage the images references - for ( var i = 0; i < jQueryMatchedObj.length; i++ ) { - settings.imageArray.push(new Array(jQueryMatchedObj[i].getAttribute('href'),jQueryMatchedObj[i].getAttribute('title'))); - } - } - while ( settings.imageArray[settings.activeImage][0] != objClicked.getAttribute('href') ) { - settings.activeImage++; - } - // Call the function that prepares image exibition - _set_image_to_view(); - } - /** - * Create the jQuery lightBox plugin interface - * - * The HTML markup will be like that: -
    -
    - - -
    - * - */ - function _set_interface() { - // Apply the HTML markup into body tag - $('body').append('
    '); - // Get page sizes - var arrPageSizes = ___getPageSize(); - // Style overlay and show it - $('#jquery-overlay').css({ - backgroundColor: settings.overlayBgColor, - opacity: settings.overlayOpacity, - width: arrPageSizes[0], - height: arrPageSizes[1] - }).fadeIn(); - // Get page scroll - var arrPageScroll = ___getPageScroll(); - // Calculate top and left offset for the jquery-lightbox div object and show it - $('#jquery-lightbox').css({ - top: arrPageScroll[1] + (arrPageSizes[3] / 10), - left: arrPageScroll[0] - }).show(); - // Assigning click events in elements to close overlay - $('#jquery-overlay,#jquery-lightbox').click(function() { - _finish(); - }); - // Assign the _finish function to lightbox-loading-link and lightbox-secNav-btnClose objects - $('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function() { - _finish(); - return false; - }); - // If window was resized, calculate the new overlay dimensions - $(window).resize(function() { - // Get page sizes - var arrPageSizes = ___getPageSize(); - // Style overlay and show it - $('#jquery-overlay').css({ - width: arrPageSizes[0], - height: arrPageSizes[1] - }); - // Get page scroll - var arrPageScroll = ___getPageScroll(); - // Calculate top and left offset for the jquery-lightbox div object and show it - $('#jquery-lightbox').css({ - top: arrPageScroll[1] + (arrPageSizes[3] / 10), - left: arrPageScroll[0] - }); - }); - } - /** - * Prepares image exibition; doing a image´s preloader to calculate it´s size - * - */ - function _set_image_to_view() { // show the loading - // Show the loading - $('#lightbox-loading').show(); - if ( settings.fixedNavigation ) { - $('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide(); - } else { - // Hide some elements - $('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide(); - } - // Image preload process - var objImagePreloader = new Image(); - objImagePreloader.onload = function() { - $('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]); - // Perfomance an effect in the image container resizing it - _resize_container_image_box(objImagePreloader.width,objImagePreloader.height); - // clear onLoad, IE behaves irratically with animated gifs otherwise - objImagePreloader.onload=function(){}; - }; - objImagePreloader.src = settings.imageArray[settings.activeImage][0]; - }; - /** - * Perfomance an effect in the image container resizing it - * - * @param integer intImageWidth The image´s width that will be showed - * @param integer intImageHeight The image´s height that will be showed - */ - function _resize_container_image_box(intImageWidth,intImageHeight) { - // Get current width and height - var intCurrentWidth = $('#lightbox-container-image-box').width(); - var intCurrentHeight = $('#lightbox-container-image-box').height(); - // Get the width and height of the selected image plus the padding - var intWidth = (intImageWidth + (settings.containerBorderSize * 2)); // Plus the image´s width and the left and right padding value - var intHeight = (intImageHeight + (settings.containerBorderSize * 2)); // Plus the image´s height and the left and right padding value - // Diferences - var intDiffW = intCurrentWidth - intWidth; - var intDiffH = intCurrentHeight - intHeight; - // Perfomance the effect - $('#lightbox-container-image-box').animate({ width: intWidth, height: intHeight },settings.containerResizeSpeed,function() { _show_image(); }); - if ( ( intDiffW == 0 ) && ( intDiffH == 0 ) ) { - if ( $.browser.msie ) { - ___pause(250); - } else { - ___pause(100); - } - } - $('#lightbox-container-image-data-box').css({ width: intImageWidth }); - $('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ height: intImageHeight + (settings.containerBorderSize * 2) }); - }; - /** - * Show the prepared image - * - */ - function _show_image() { - $('#lightbox-loading').hide(); - $('#lightbox-image').fadeIn(function() { - _show_image_data(); - _set_navigation(); - }); - _preload_neighbor_images(); - }; - /** - * Show the image information - * - */ - function _show_image_data() { - $('#lightbox-container-image-data-box').slideDown('fast'); - $('#lightbox-image-details-caption').hide(); - if ( settings.imageArray[settings.activeImage][1] ) { - $('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show(); - } - // If we have a image set, display 'Image X of X' - if ( settings.imageArray.length > 1 ) { - $('#lightbox-image-details-currentNumber').html(settings.txtImage + ' ' + ( settings.activeImage + 1 ) + ' ' + settings.txtOf + ' ' + settings.imageArray.length).show(); - } - } - /** - * Display the button navigations - * - */ - function _set_navigation() { - $('#lightbox-nav').show(); - - // Instead to define this configuration in CSS file, we define here. And it´s need to IE. Just. - $('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' }); - - // Show the prev button, if not the first image in set - if ( settings.activeImage != 0 ) { - if ( settings.fixedNavigation ) { - $('#lightbox-nav-btnPrev').css({ 'background' : 'url(' + settings.imageBtnPrev + ') left 15% no-repeat' }) - .unbind() - .bind('click',function() { - settings.activeImage = settings.activeImage - 1; - _set_image_to_view(); - return false; - }); - } else { - // Show the images button for Next buttons - $('#lightbox-nav-btnPrev').unbind().hover(function() { - $(this).css({ 'background' : 'url(' + settings.imageBtnPrev + ') left 15% no-repeat' }); - },function() { - $(this).css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' }); - }).show().bind('click',function() { - settings.activeImage = settings.activeImage - 1; - _set_image_to_view(); - return false; - }); - } - } - - // Show the next button, if not the last image in set - if ( settings.activeImage != ( settings.imageArray.length -1 ) ) { - if ( settings.fixedNavigation ) { - $('#lightbox-nav-btnNext').css({ 'background' : 'url(' + settings.imageBtnNext + ') right 15% no-repeat' }) - .unbind() - .bind('click',function() { - settings.activeImage = settings.activeImage + 1; - _set_image_to_view(); - return false; - }); - } else { - // Show the images button for Next buttons - $('#lightbox-nav-btnNext').unbind().hover(function() { - $(this).css({ 'background' : 'url(' + settings.imageBtnNext + ') right 15% no-repeat' }); - },function() { - $(this).css({ 'background' : 'transparent url(' + settings.imageBlank + ') no-repeat' }); - }).show().bind('click',function() { - settings.activeImage = settings.activeImage + 1; - _set_image_to_view(); - return false; - }); - } - } - // Enable keyboard navigation - _enable_keyboard_navigation(); - } - /** - * Enable a support to keyboard navigation - * - */ - function _enable_keyboard_navigation() { - $(document).keydown(function(objEvent) { - _keyboard_action(objEvent); - }); - } - /** - * Disable the support to keyboard navigation - * - */ - function _disable_keyboard_navigation() { - $(document).unbind(); - } - /** - * Perform the keyboard actions - * - */ - function _keyboard_action(objEvent) { - // To ie - if ( objEvent == null ) { - keycode = event.keyCode; - escapeKey = 27; - // To Mozilla - } else { - keycode = objEvent.keyCode; - escapeKey = objEvent.DOM_VK_ESCAPE; - } - // Get the key in lower case form - key = String.fromCharCode(keycode).toLowerCase(); - // Verify the keys to close the ligthBox - if ( ( key == settings.keyToClose ) || ( key == 'x' ) || ( keycode == escapeKey ) ) { - _finish(); - } - // Verify the key to show the previous image - if ( ( key == settings.keyToPrev ) || ( keycode == 37 ) ) { - // If we´re not showing the first image, call the previous - if ( settings.activeImage != 0 ) { - settings.activeImage = settings.activeImage - 1; - _set_image_to_view(); - _disable_keyboard_navigation(); - } - } - // Verify the key to show the next image - if ( ( key == settings.keyToNext ) || ( keycode == 39 ) ) { - // If we´re not showing the last image, call the next - if ( settings.activeImage != ( settings.imageArray.length - 1 ) ) { - settings.activeImage = settings.activeImage + 1; - _set_image_to_view(); - _disable_keyboard_navigation(); - } - } - } - /** - * Preload prev and next images being showed - * - */ - function _preload_neighbor_images() { - if ( (settings.imageArray.length -1) > settings.activeImage ) { - objNext = new Image(); - objNext.src = settings.imageArray[settings.activeImage + 1][0]; - } - if ( settings.activeImage > 0 ) { - objPrev = new Image(); - objPrev.src = settings.imageArray[settings.activeImage -1][0]; - } - } - /** - * Remove jQuery lightBox plugin HTML markup - * - */ - function _finish() { - $('#jquery-lightbox').remove(); - $('#jquery-overlay').fadeOut(function() { $('#jquery-overlay').remove(); }); - // Show some elements to avoid conflict with overlay in IE. These elements appear above the overlay. - $('embed, object, select').css({ 'visibility' : 'visible' }); - } - /** - / THIRD FUNCTION - * getPageSize() by quirksmode.com - * - * @return Array Return an array with page width, height and window width, height - */ - function ___getPageSize() { - var xScroll, yScroll; - if (window.innerHeight && window.scrollMaxY) { - xScroll = window.innerWidth + window.scrollMaxX; - yScroll = window.innerHeight + window.scrollMaxY; - } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac - xScroll = document.body.scrollWidth; - yScroll = document.body.scrollHeight; - } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari - xScroll = document.body.offsetWidth; - yScroll = document.body.offsetHeight; - } - var windowWidth, windowHeight; - if (self.innerHeight) { // all except Explorer - if(document.documentElement.clientWidth){ - windowWidth = document.documentElement.clientWidth; - } else { - windowWidth = self.innerWidth; - } - windowHeight = self.innerHeight; - } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode - windowWidth = document.documentElement.clientWidth; - windowHeight = document.documentElement.clientHeight; - } else if (document.body) { // other Explorers - windowWidth = document.body.clientWidth; - windowHeight = document.body.clientHeight; - } - // for small pages with total height less then height of the viewport - if(yScroll < windowHeight){ - pageHeight = windowHeight; - } else { - pageHeight = yScroll; - } - // for small pages with total width less then width of the viewport - if(xScroll < windowWidth){ - pageWidth = xScroll; - } else { - pageWidth = windowWidth; - } - arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight); - return arrayPageSize; - }; - /** - / THIRD FUNCTION - * getPageScroll() by quirksmode.com - * - * @return Array Return an array with x,y page scroll values. - */ - function ___getPageScroll() { - var xScroll, yScroll; - if (self.pageYOffset) { - yScroll = self.pageYOffset; - xScroll = self.pageXOffset; - } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict - yScroll = document.documentElement.scrollTop; - xScroll = document.documentElement.scrollLeft; - } else if (document.body) {// all other Explorers - yScroll = document.body.scrollTop; - xScroll = document.body.scrollLeft; - } - arrayPageScroll = new Array(xScroll,yScroll); - return arrayPageScroll; - }; - /** - * Stop the code execution from a escified time in milisecond - * - */ - function ___pause(ms) { - var date = new Date(); - curDate = null; - do { var curDate = new Date(); } - while ( curDate - date < ms); - }; - // Return the jQuery object for chaining. The unbind method is used to avoid click conflict when the plugin is called more than once - return this.unbind('click').click(_initialize); - }; -})(jQuery); // Call and execute the function immediately passing the jQuery object \ No newline at end of file diff --git a/view/theme/diabook/lightbox/js/jquery.lightbox-0.5.min.js b/view/theme/diabook/lightbox/js/jquery.lightbox-0.5.min.js deleted file mode 100644 index 5f13b0bf6..000000000 --- a/view/theme/diabook/lightbox/js/jquery.lightbox-0.5.min.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * jQuery lightBox plugin - * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/) - * and adapted to me for use like a plugin from jQuery. - * @name jquery-lightbox-0.5.js - * @author Leandro Vieira Pinho - http://leandrovieira.com - * @version 0.5 - * @date April 11, 2008 - * @category jQuery plugin - * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com) - * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US - * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin - */ -(function($){$.fn.lightBox=function(settings){settings=jQuery.extend({overlayBgColor:'#000',overlayOpacity:0.8,fixedNavigation:false,imageLoading:'images/lightbox-ico-loading.gif',imageBtnPrev:'images/lightbox-btn-prev.gif',imageBtnNext:'images/lightbox-btn-next.gif',imageBtnClose:'images/lightbox-btn-close.gif',imageBlank:'images/lightbox-blank.gif',containerBorderSize:10,containerResizeSpeed:400,txtImage:'Image',txtOf:'of',keyToClose:'c',keyToPrev:'p',keyToNext:'n',imageArray:[],activeImage:0},settings);var jQueryMatchedObj=this;function _initialize(){_start(this,jQueryMatchedObj);return false;} -function _start(objClicked,jQueryMatchedObj){$('embed, object, select').css({'visibility':'hidden'});_set_interface();settings.imageArray.length=0;settings.activeImage=0;if(jQueryMatchedObj.length==1){settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title')));}else{for(var i=0;i
    ');var arrPageSizes=___getPageSize();$('#jquery-overlay').css({backgroundColor:settings.overlayBgColor,opacity:settings.overlayOpacity,width:arrPageSizes[0],height:arrPageSizes[1]}).fadeIn();var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]}).show();$('#jquery-overlay,#jquery-lightbox').click(function(){_finish();});$('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function(){_finish();return false;});$(window).resize(function(){var arrPageSizes=___getPageSize();$('#jquery-overlay').css({width:arrPageSizes[0],height:arrPageSizes[1]});var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]});});} -function _set_image_to_view(){$('#lightbox-loading').show();if(settings.fixedNavigation){$('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}else{$('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();} -var objImagePreloader=new Image();objImagePreloader.onload=function(){$('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);_resize_container_image_box(objImagePreloader.width,objImagePreloader.height);objImagePreloader.onload=function(){};};objImagePreloader.src=settings.imageArray[settings.activeImage][0];};function _resize_container_image_box(intImageWidth,intImageHeight){var intCurrentWidth=$('#lightbox-container-image-box').width();var intCurrentHeight=$('#lightbox-container-image-box').height();var intWidth=(intImageWidth+(settings.containerBorderSize*2));var intHeight=(intImageHeight+(settings.containerBorderSize*2));var intDiffW=intCurrentWidth-intWidth;var intDiffH=intCurrentHeight-intHeight;$('#lightbox-container-image-box').animate({width:intWidth,height:intHeight},settings.containerResizeSpeed,function(){_show_image();});if((intDiffW==0)&&(intDiffH==0)){if($.browser.msie){___pause(250);}else{___pause(100);}} -$('#lightbox-container-image-data-box').css({width:intImageWidth});$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({height:intImageHeight+(settings.containerBorderSize*2)});};function _show_image(){$('#lightbox-loading').hide();$('#lightbox-image').fadeIn(function(){_show_image_data();_set_navigation();});_preload_neighbor_images();};function _show_image_data(){$('#lightbox-container-image-data-box').slideDown('fast');$('#lightbox-image-details-caption').hide();if(settings.imageArray[settings.activeImage][1]){$('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show();} -if(settings.imageArray.length>1){$('#lightbox-image-details-currentNumber').html(settings.txtImage+' '+(settings.activeImage+1)+' '+settings.txtOf+' '+settings.imageArray.length).show();}} -function _set_navigation(){$('#lightbox-nav').show();$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({'background':'transparent url('+settings.imageBlank+') no-repeat'});if(settings.activeImage!=0){if(settings.fixedNavigation){$('#lightbox-nav-btnPrev').css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnPrev').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}} -if(settings.activeImage!=(settings.imageArray.length-1)){if(settings.fixedNavigation){$('#lightbox-nav-btnNext').css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnNext').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}} -_enable_keyboard_navigation();} -function _enable_keyboard_navigation(){$(document).keydown(function(objEvent){_keyboard_action(objEvent);});} -function _disable_keyboard_navigation(){$(document).unbind();} -function _keyboard_action(objEvent){if(objEvent==null){keycode=event.keyCode;escapeKey=27;}else{keycode=objEvent.keyCode;escapeKey=objEvent.DOM_VK_ESCAPE;} -key=String.fromCharCode(keycode).toLowerCase();if((key==settings.keyToClose)||(key=='x')||(keycode==escapeKey)){_finish();} -if((key==settings.keyToPrev)||(keycode==37)){if(settings.activeImage!=0){settings.activeImage=settings.activeImage-1;_set_image_to_view();_disable_keyboard_navigation();}} -if((key==settings.keyToNext)||(keycode==39)){if(settings.activeImage!=(settings.imageArray.length-1)){settings.activeImage=settings.activeImage+1;_set_image_to_view();_disable_keyboard_navigation();}}} -function _preload_neighbor_images(){if((settings.imageArray.length-1)>settings.activeImage){objNext=new Image();objNext.src=settings.imageArray[settings.activeImage+1][0];} -if(settings.activeImage>0){objPrev=new Image();objPrev.src=settings.imageArray[settings.activeImage-1][0];}} -function _finish(){$('#jquery-lightbox').remove();$('#jquery-overlay').fadeOut(function(){$('#jquery-overlay').remove();});$('embed, object, select').css({'visibility':'visible'});} -function ___getPageSize(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=window.innerWidth+window.scrollMaxX;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;} -var windowWidth,windowHeight;if(self.innerHeight){if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;}else{windowWidth=self.innerWidth;} -windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;} -if(yScroll35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(6($){$.2N.3g=6(4){4=23.2H({2B:\'#34\',2g:0.8,1d:F,1M:\'18/5-33-Y.16\',1v:\'18/5-1u-2Q.16\',1E:\'18/5-1u-2L.16\',1W:\'18/5-1u-2I.16\',19:\'18/5-2F.16\',1f:10,2A:3d,2s:\'1j\',2o:\'32\',2j:\'c\',2f:\'p\',2d:\'n\',h:[],9:0},4);f I=N;6 20(){1X(N,I);u F}6 1X(1e,I){$(\'1U, 1S, 1R\').l({\'1Q\':\'2E\'});1O();4.h.B=0;4.9=0;7(I.B==1){4.h.1J(v 1m(1e.17(\'J\'),1e.17(\'2v\')))}j{36(f i=0;i<1w g="5-b"><1w W="\'+4.1M+\'"><1i g="5-b-A-1t"><1i g="5-b-A-1g"><1w W="\'+4.1W+\'">\');f z=1D();$(\'#q-13\').l({2K:4.2B,2J:4.2g,S:z[0],P:z[1]}).1V();f R=1p();$(\'#q-5\').l({1T:R[1]+(z[3]/10),1c:R[0]}).E();$(\'#q-13,#q-5\').C(6(){1a()});$(\'#5-Y-29,#5-1s-22\').C(6(){1a();u F});$(G).2G(6(){f z=1D();$(\'#q-13\').l({S:z[0],P:z[1]});f R=1p();$(\'#q-5\').l({1T:R[1]+(z[3]/10),1c:R[0]})})}6 D(){$(\'#5-Y\').E();7(4.1d){$(\'#5-b,#5-s-b-T-w,#5-b-A-1g\').1b()}j{$(\'#5-b,#5-k,#5-k-V,#5-k-X,#5-s-b-T-w,#5-b-A-1g\').1b()}f Q=v 1j();Q.1P=6(){$(\'#5-b\').2D(\'W\',4.h[4.9][0]);1N(Q.S,Q.P);Q.1P=6(){}};Q.W=4.h[4.9][0]};6 1N(1o,1r){f 1L=$(\'#5-s-b-w\').S();f 1K=$(\'#5-s-b-w\').P();f 1n=(1o+(4.1f*2));f 1y=(1r+(4.1f*2));f 1I=1L-1n;f 2z=1K-1y;$(\'#5-s-b-w\').3f({S:1n,P:1y},4.2A,6(){2y()});7((1I==0)&&(2z==0)){7($.3e.3c){1H(3b)}j{1H(3a)}}$(\'#5-s-b-T-w\').l({S:1o});$(\'#5-k-V,#5-k-X\').l({P:1r+(4.1f*2)})};6 2y(){$(\'#5-Y\').1b();$(\'#5-b\').1V(6(){2u();2t()});2r()};6 2u(){$(\'#5-s-b-T-w\').38(\'35\');$(\'#5-b-A-1t\').1b();7(4.h[4.9][1]){$(\'#5-b-A-1t\').2p(4.h[4.9][1]).E()}7(4.h.B>1){$(\'#5-b-A-1g\').2p(4.2s+\' \'+(4.9+1)+\' \'+4.2o+\' \'+4.h.B).E()}}6 2t(){$(\'#5-k\').E();$(\'#5-k-V,#5-k-X\').l({\'K\':\'1C M(\'+4.19+\') L-O\'});7(4.9!=0){7(4.1d){$(\'#5-k-V\').l({\'K\':\'M(\'+4.1v+\') 1c 15% L-O\'}).11().1k(\'C\',6(){4.9=4.9-1;D();u F})}j{$(\'#5-k-V\').11().2m(6(){$(N).l({\'K\':\'M(\'+4.1v+\') 1c 15% L-O\'})},6(){$(N).l({\'K\':\'1C M(\'+4.19+\') L-O\'})}).E().1k(\'C\',6(){4.9=4.9-1;D();u F})}}7(4.9!=(4.h.B-1)){7(4.1d){$(\'#5-k-X\').l({\'K\':\'M(\'+4.1E+\') 2l 15% L-O\'}).11().1k(\'C\',6(){4.9=4.9+1;D();u F})}j{$(\'#5-k-X\').11().2m(6(){$(N).l({\'K\':\'M(\'+4.1E+\') 2l 15% L-O\'})},6(){$(N).l({\'K\':\'1C M(\'+4.19+\') L-O\'})}).E().1k(\'C\',6(){4.9=4.9+1;D();u F})}}2k()}6 2k(){$(d).30(6(12){2i(12)})}6 1G(){$(d).11()}6 2i(12){7(12==2h){U=2Z.2e;1x=27}j{U=12.2e;1x=12.2Y}14=2X.2W(U).2U();7((14==4.2j)||(14==\'x\')||(U==1x)){1a()}7((14==4.2f)||(U==37)){7(4.9!=0){4.9=4.9-1;D();1G()}}7((14==4.2d)||(U==39)){7(4.9!=(4.h.B-1)){4.9=4.9+1;D();1G()}}}6 2r(){7((4.h.B-1)>4.9){2c=v 1j();2c.W=4.h[4.9+1][0]}7(4.9>0){2b=v 1j();2b.W=4.h[4.9-1][0]}}6 1a(){$(\'#q-5\').2a();$(\'#q-13\').2T(6(){$(\'#q-13\').2a()});$(\'1U, 1S, 1R\').l({\'1Q\':\'2S\'})}6 1D(){f o,r;7(G.1h&&G.28){o=G.26+G.2R;r=G.1h+G.28}j 7(d.m.25>d.m.24){o=d.m.2P;r=d.m.25}j{o=d.m.2O;r=d.m.24}f y,H;7(Z.1h){7(d.t.1l){y=d.t.1l}j{y=Z.26}H=Z.1h}j 7(d.t&&d.t.1A){y=d.t.1l;H=d.t.1A}j 7(d.m){y=d.m.1l;H=d.m.1A}7(rtheme_info = array( $a->page['htmlhead'] .= <<< EOT - - - - - +EOT; diff --git a/view/theme/darkzero-NS/theme.php b/view/theme/darkzero-NS/theme.php index 521b1859e..2d3e4fd56 100755 --- a/view/theme/darkzero-NS/theme.php +++ b/view/theme/darkzero-NS/theme.php @@ -15,6 +15,8 @@ $a->page['htmlhead'] .= <<< EOT +EOT; -- cgit v1.2.3 From 5a4167646553e589cf9647c0e0d0446e3f5fd672 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 13 Mar 2012 04:04:26 -0700 Subject: initial tag display for categories and save-to-file - suitable for testing but needs cleanup, links to delete term, and theming. --- include/text.php | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/include/text.php b/include/text.php index 011006b76..2663bdeba 100644 --- a/include/text.php +++ b/include/text.php @@ -913,6 +913,33 @@ function prepare_body($item,$attach = false) { } $s .= '
    '; } + $matches = false; + $cnt = preg_match_all('/<(.*?)>/',$item['file'],$matches,PREG_SET_ORDER); + if($cnt) { + logger('prepare_text: categories: ' . print_r($matches,true), LOGGER_DEBUG); + foreach($matches as $mtch) { + if(strlen($x)) + $x .= ','; + $x .= file_tag_decode($mtch[1]); + } + if(strlen($x)) + $s .= '
    ' . t('Categories:') . ' ' . $x . '
    '; + + + } + $matches = false; + $x = ''; + $cnt = preg_match_all('/\[(.*?)\]/',$item['file'],$matches,PREG_SET_ORDER); + if($cnt) { + logger('prepare_text: filed_under: ' . print_r($matches,true), LOGGER_DEBUG); + foreach($matches as $mtch) { + if(strlen($x)) + $x .= ','; + $x .= file_tag_decode($mtch[1]); + } + if(strlen($x) && (local_user() == $item['uid'])) + $s .= '
    ' . t('Filed under:') . ' ' . $x . '
    '; + } $prep_arr = array('item' => $item, 'html' => $s); -- cgit v1.2.3 From 7868e3897b0f282611f1ccb1715a30a93404ddc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Tue, 13 Mar 2012 21:46:57 +0000 Subject: In HTML2BBCode: fetch the URL of [EMBED] using JavaScript instead of an ajax-call to a php-script. Once there actually is embedded Code in the HTML, this function is called after every single keypress. Not only is making an ajax-call every keypress bandith intensive - it also made typing hard / slow. Making a lot of JavaScript-RegExp-Computation every keypress isn't exactly great either, but still performs better. --- .../tiny_mce/plugins/bbcode/editor_plugin_src.js | 262 +++++++++++---------- 1 file changed, 140 insertions(+), 122 deletions(-) diff --git a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js index 44d1473a9..183f2bc68 100755 --- a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js @@ -44,61 +44,79 @@ _dfrn_html2bbcode : function(s) { s = tinymce.trim(s); - function rep(re, str) { - - //modify code to keep stuff intact within [code][/code] blocks - //Waitman Gobble NO WARRANTY - - - var o = new Array(); - var x = s.split("[code]"); - var i = 0; - - var si = ""; - si = x.shift(); - si = si.replace(re,str); - o.push(si); - - for (i = 0; i < x.length; i++) { - var no = new Array(); - var j = x.shift(); - var g = j.split("[/code]"); - no.push(g.shift()); - si = g.shift(); - si = si.replace(re,str); - no.push(si); - o.push(no.join("[/code]")); - } - - s = o.join("[code]"); - - }; - - - - - /* oembed */ - function _h2b_cb(match) { - function s_h2b(data) { - match = data; + function rep(re, str) { + + //modify code to keep stuff intact within [code][/code] blocks + //Waitman Gobble NO WARRANTY + + + var o = new Array(); + var x = s.split("[code]"); + var i = 0; + + var si = ""; + si = x.shift(); + si = si.replace(re,str); + o.push(si); + + for (i = 0; i < x.length; i++) { + var no = new Array(); + var j = x.shift(); + var g = j.split("[/code]"); + no.push(g.shift()); + si = g.shift(); + si = si.replace(re,str); + no.push(si); + o.push(no.join("[/code]")); + } + + s = o.join("[code]"); + + }; + + + + + /* oembed */ + function _h2b_cb(match) { + /* + function s_h2b(data) { + match = data; } $.ajax({ - type:"POST", + type:"POST", url: 'oembed/h2b', - data: {text: match}, - async: false, - success: s_h2b, - dataType: 'html' - }); - return match; - } + data: {text: match}, + async: false, + success: s_h2b, + dataType: 'html' + }); + */ + + var f, g, tof = [], tor = []; + var find_spanc = /]*class *= *[\"'](?:[^\"']* )*oembed(?: [^\"']*)*[\"'][^>]*>(.*?(?:]*>(.*?)<\/span *>)*.*?)<\/span *>/ig; + while (f = find_spanc.exec(match)) { + var find_a = /]* rel=[\"']oembed[\"'][^>]*)>.*?<\/a *>/ig; + if (g = find_a.exec(f[1])) { + var find_href = /href=[\"']([^\"']*)[\"']/ig; + var m2 = find_href.exec(g[1]); + if (m2[1]) { + tof.push(f[0]); + tor.push("[EMBED]" + m2[1] + "[/EMBED]"); + } + } + } + for (var i = 0; i < tof.length; i++) match = match.replace(tof[i], tor[i]); + + return match; + } if (s.indexOf('class="oembed')>=0){ //alert("request oembed html2bbcode"); s = _h2b_cb(s); } - - /* /oembed */ - + + /* /oembed */ + // example: to [b] rep(/(.*?)<\/a>/gi,"[bookmark=$1]$2[/bookmark]"); @@ -111,16 +129,16 @@ rep(//gi,"[img=$3x$2]$1[/img]"); rep(//gi,"[img=$2x$3]$1[/img]"); rep(//gi,"[img]$1[/img]"); - - rep(/
      (.*?)<\/ul>/gi,"[list]$1[/list]"); - rep(/
        (.*?)<\/ul>/gi,"[list=]$1[/list]"); - rep(/
          (.*?)<\/ul>/gi,"[list=1]$1[/list]"); - rep(/
            (.*?)<\/ul>/gi,"[list=i]$1[/list]"); - rep(/
              (.*?)<\/ul>/gi,"[list=I]$1[/list]"); - rep(/
                (.*?)<\/ul>/gi,"[list=a]$1[/list]"); - rep(/
                  (.*?)<\/ul>/gi,"[list=A]$1[/list]"); - rep(/
                • (.*?)<\/li>/gi,'[li]$1[/li]'); - + + rep(/
                    (.*?)<\/ul>/gi,"[list]$1[/list]"); + rep(/
                      (.*?)<\/ul>/gi,"[list=]$1[/list]"); + rep(/
                        (.*?)<\/ul>/gi,"[list=1]$1[/list]"); + rep(/
                          (.*?)<\/ul>/gi,"[list=i]$1[/list]"); + rep(/
                            (.*?)<\/ul>/gi,"[list=I]$1[/list]"); + rep(/ +$invite_desc +

                            +

                            $desc

                            -- cgit v1.2.3 From db80ffa0ff0cf796eddede0ab439ffbd0c4e66a3 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 13 Mar 2012 16:02:20 -0700 Subject: don't count self in number of contatcs --- mod/contacts.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/mod/contacts.php b/mod/contacts.php index 001bf12af..38ca570dd 100755 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -445,7 +445,7 @@ function contacts_content(&$a) { $r = q("SELECT COUNT(*) AS `total` FROM `contact` - WHERE `uid` = %d AND `pending` = 0 $sql_extra $sql_extra2 ", + WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 ", intval($_SESSION['uid'])); if(count($r)) { $a->set_pager_total($r[0]['total']); @@ -454,7 +454,7 @@ function contacts_content(&$a) { - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `pending` = 0 $sql_extra $sql_extra2 ORDER BY `name` ASC LIMIT %d , %d ", + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 ORDER BY `name` ASC LIMIT %d , %d ", intval($_SESSION['uid']), intval($a->pager['start']), intval($a->pager['itemspage']) @@ -465,8 +465,6 @@ function contacts_content(&$a) { if(count($r)) { foreach($r as $rr) { - if($rr['self']) - continue; switch($rr['rel']) { case CONTACT_IS_FRIEND: -- cgit v1.2.3 From be48fff1570aa1d04e049a6fd1665f4fc9634a62 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 13 Mar 2012 18:13:03 -0700 Subject: file as widget and basic filing implementation for duepuntozero,slackr much more work needed - this is just for test/evaluation currently --- include/contact_widgets.php | 29 +++++++++++++++++++++++++++++ include/conversation.php | 2 ++ include/text.php | 2 +- mod/filer.php | 23 +++++++++++++++++++++++ mod/network.php | 1 + view/fileas_widget.tpl | 12 ++++++++++++ view/jot-header.tpl | 12 ++++++++++++ view/theme/duepuntozero/file.gif | Bin 0 -> 615 bytes view/theme/duepuntozero/style.css | 23 ++++++++++++++++++++--- view/theme/duepuntozero/wall_item.tpl | 1 + view/theme/greenzero/file.gif | Bin 0 -> 614 bytes 11 files changed, 101 insertions(+), 4 deletions(-) create mode 100755 mod/filer.php create mode 100755 view/fileas_widget.tpl create mode 100644 view/theme/duepuntozero/file.gif create mode 100644 view/theme/greenzero/file.gif diff --git a/include/contact_widgets.php b/include/contact_widgets.php index caa0572d2..605a3eb78 100755 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -75,4 +75,33 @@ function networks_widget($baseurl,$selected = '') { )); } +function fileas_widget($baseurl,$selected = '') { + $a = get_app(); + if(! local_user()) + return ''; + + $saved = get_pconfig(local_user(),'system','filetags'); + if(! strlen($saved)) + return; + + $matches = false; + $terms = array(); + $cnt = preg_match_all('/\[(.*?)\]/',$saved,$matches,PREG_SET_ORDER); + if($cnt) { + foreach($matches as $mtch) { + $unescaped = file_tag_decode($mtch[1]); + $terms[] = array('name' => $unescaped,'selected' => (($selected == $unescaped) ? 'selected' : '')); + } + } + + return replace_macros(get_markup_template('fileas_widget.tpl'),array( + '$title' => t('File Selections'), + '$desc' => '', + '$sel_all' => (($selected == '') ? 'selected' : ''), + '$all' => t('Everything'), + '$terms' => $terms, + '$base' => $baseurl, + + )); +} diff --git a/include/conversation.php b/include/conversation.php index 4b2ca316b..a420e9923 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -572,6 +572,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'classundo' => (($item['starred']) ? "" : "hidden"), 'starred' => t('starred'), 'tagger' => t("add tag"), + 'filer' => t("file as"), 'classtagger' => "", ); } @@ -874,6 +875,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { '$vidurl' => t("Please enter a video link/URL:"), '$audurl' => t("Please enter an audio link/URL:"), '$term' => t('Tag term:'), + '$fileas' => t('File as:'), '$whereareu' => t('Where are you right now?'), '$title' => t('Enter a title for this item') )); diff --git a/include/text.php b/include/text.php index 2663bdeba..c44b4d178 100644 --- a/include/text.php +++ b/include/text.php @@ -1294,7 +1294,7 @@ function file_tag_save_file($uid,$item,$file) { if(count($r)) { if(! stristr($r[0]['file'],'[' . file_tag_encode($file) . ']')) q("update item set file = '%s' where id = %d and uid = %d limit 1", - dbesc($r[0]['file'] . '[' . $file_tag_encode($file) . ']'), + dbesc($r[0]['file'] . '[' . file_tag_encode($file) . ']'), intval($item), intval($uid) ); diff --git a/mod/filer.php b/mod/filer.php new file mode 100755 index 000000000..a9e213536 --- /dev/null +++ b/mod/filer.php @@ -0,0 +1,23 @@ +argc > 1) ? notags(trim($a->argv[1])) : 0); + + logger('filer: tag ' . $term . ' item ' . $item_id); + + if($item_id && strlen($term)) + file_tag_save_file(local_user(),$item_id,$term); + + killme(); +} diff --git a/mod/network.php b/mod/network.php index 7e7a95841..4f58fc4fb 100755 --- a/mod/network.php +++ b/mod/network.php @@ -46,6 +46,7 @@ function network_init(&$a) { $a->page['aside'] .= group_side('network','network',true,$group_id); $a->page['aside'] .= networks_widget($a->get_baseurl() . '/network',(x($_GET, 'nets') ? $_GET['nets'] : '')); $a->page['aside'] .= saved_searches($search); + $a->page['aside'] .= fileas_widget($a->get_baseurl() . '/network',(x($_GET, 'file') ? $_GET['file'] : '')); } diff --git a/view/fileas_widget.tpl b/view/fileas_widget.tpl new file mode 100755 index 000000000..54fba7435 --- /dev/null +++ b/view/fileas_widget.tpl @@ -0,0 +1,12 @@ +
                            +

                            $title

                            +
                            $desc
                            + + + +
                            diff --git a/view/jot-header.tpl b/view/jot-header.tpl index d6b172b6a..88df73494 100755 --- a/view/jot-header.tpl +++ b/view/jot-header.tpl @@ -262,6 +262,18 @@ function enableOnUser(){ } } + function itemFiler(id) { + reply = prompt("$fileas"); + if(reply && reply.length) { + commentBusy = true; + $('body').css('cursor', 'wait'); + $.get('filer/' + id + '?term=' + reply); + if(timer) clearTimeout(timer); + timer = setTimeout(NavUpdate,3000); + liking = 1; + } + } + function jotClearLocation() { $('#jot-coord').val(''); $('#profile-nolocation-wrapper').hide(); diff --git a/view/theme/duepuntozero/file.gif b/view/theme/duepuntozero/file.gif new file mode 100644 index 000000000..7885b998d Binary files /dev/null and b/view/theme/duepuntozero/file.gif differ diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index acd97eb94..10ddb0090 100755 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -309,7 +309,7 @@ div.wall-item-content-wrapper.shiny { margin-bottom: 10px; } -.group-selected, .nets-selected { +.group-selected, .nets-selected, .fileas-selected { padding: 3px; -moz-border-radius: 3px; border-radius: 3px; @@ -1024,6 +1024,10 @@ input#dfrn-url { float: left; } +.filer-item { + margin-left: 10px; + float: left; +} .wall-item-links-wrapper { float: left; @@ -1864,11 +1868,11 @@ a.mail-list-link { margin-top: 10px; } -.nets-ul { +.nets-ul, .fileas-ul { list-style-type: none; } -.nets-ul li { +.nets-ul li, .fileas-ul li { margin-top: 10px; } @@ -1879,6 +1883,14 @@ a.mail-list-link { margin-left: 42px; } +.fileas-link { + margin-left: 24px; +} + +.fileas-all { + margin-left: 0px; +} + #search-save { margin-left: 5px; } @@ -2902,6 +2914,11 @@ aside input[type='text'] { .tagged { background-position: -48px -48px; } +.filer-icon { + display: block; width: 16px; height: 16px; + background-image: url('file.gif'); +} + .icon.dim { opacity: 0.3;filter:alpha(opacity=30); } .attachtype { diff --git a/view/theme/duepuntozero/wall_item.tpl b/view/theme/duepuntozero/wall_item.tpl index 51e36b6f4..2c88fc598 100755 --- a/view/theme/duepuntozero/wall_item.tpl +++ b/view/theme/duepuntozero/wall_item.tpl @@ -56,6 +56,7 @@ {{ if $item.star }} + {{ endif }}
                            diff --git a/view/theme/greenzero/file.gif b/view/theme/greenzero/file.gif new file mode 100644 index 000000000..e388a13c0 Binary files /dev/null and b/view/theme/greenzero/file.gif differ -- cgit v1.2.3 From de017d1ed76500c01fd11c8e1d36cf4ebd70172d Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 13 Mar 2012 19:27:52 -0700 Subject: sort inbox by recently replied conversations first --- mod/message.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/message.php b/mod/message.php index 37f92e8d9..65f692f3d 100755 --- a/mod/message.php +++ b/mod/message.php @@ -194,7 +194,7 @@ function message_content(&$a) { $r = q("SELECT max(`mail`.`created`) AS `mailcreated`, min(`mail`.`seen`) AS `mailseen`, `mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` , `contact`.`network` FROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` - WHERE `mail`.`uid` = %d AND `from-url` $eq '%s' GROUP BY `parent-uri` ORDER BY `created` DESC LIMIT %d , %d ", + WHERE `mail`.`uid` = %d AND `from-url` $eq '%s' GROUP BY `parent-uri` ORDER BY `mailcreated` DESC LIMIT %d , %d ", intval(local_user()), dbesc($myprofile), intval($a->pager['start']), -- cgit v1.2.3 From 1ae740535d8a5b455395d51c01adef74e9dbb1ae Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Tue, 13 Mar 2012 23:05:04 -0400 Subject: added slack-NS, non-scrolly, slackr-based theme. --- view/theme/slack-NS/style.css | 51 +++++++++++++++++++++++++++++++++++++++++++ view/theme/slack-NS/theme.php | 51 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100755 view/theme/slack-NS/style.css create mode 100755 view/theme/slack-NS/theme.php diff --git a/view/theme/slack-NS/style.css b/view/theme/slack-NS/style.css new file mode 100755 index 000000000..82bceeac8 --- /dev/null +++ b/view/theme/slack-NS/style.css @@ -0,0 +1,51 @@ +@import url('../duepuntozero/style.css'); + +.wall-item-content-wrapper { + border: none; +} + +.wall-item-content-wrapper.comment { + background: #ffffff !important; + border-left: 1px solid #EEE; +} + +.wall-item-tools { + background: none; +} + +.wall-item-content { + max-height: 20000px; + overflow: none; +} + +.comment-edit-text-empty, .comment-edit-text-full { + border: none; + border-left: 1px solid #EEE; + background: #EEEEEE; +} + +.comment-edit-wrapper, .comment-wwedit-wrapper { + background: #ffffff !important; +} + +section { + margin: 0px 32px; +} + +aside { + margin-left: 32px; +} +nav { + margin-left: 32px; + margin-right: 32px; +} + +nav #site-location { + top: 80px; + right: 36px; +} + +.wall-item-photo, .photo, .contact-block-img, .my-comment-photo { + border-radius: 3px; + -moz-border-radius: 3px; +} diff --git a/view/theme/slack-NS/theme.php b/view/theme/slack-NS/theme.php new file mode 100755 index 000000000..ceec4dd97 --- /dev/null +++ b/view/theme/slack-NS/theme.php @@ -0,0 +1,51 @@ +theme_info = array( + 'extends' => 'duepuntozero', +); + +$a->page['htmlhead'] .= <<< EOT + +EOT; -- cgit v1.2.3 From 4972d7ef6ee740f6eb09d8c7efa9a76ee40973c1 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 13 Mar 2012 20:46:37 -0700 Subject: more work on filer, comment level and file tag removal --- include/conversation.php | 34 +++++++++++++++++-------------- include/oembed.php | 5 ++++- include/text.php | 9 ++++---- mod/filerm.php | 21 +++++++++++++++++++ view/theme/duepuntozero/style.css | 4 ++-- view/theme/duepuntozero/wall_item.tpl | 6 ++++-- view/theme/duepuntozero/wallwall_item.tpl | 3 +++ 7 files changed, 58 insertions(+), 24 deletions(-) create mode 100644 mod/filerm.php diff --git a/include/conversation.php b/include/conversation.php index a420e9923..117127a28 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -560,25 +560,28 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { ); $star = false; + $filer = false; + $isstarred = "unstarred"; - if ($profile_owner == local_user() && $toplevelpost) { - $isstarred = (($item['starred']) ? "starred" : "unstarred"); - - $star = array( - 'do' => t("add star"), - 'undo' => t("remove star"), - 'toggle' => t("toggle star status"), - 'classdo' => (($item['starred']) ? "hidden" : ""), - 'classundo' => (($item['starred']) ? "" : "hidden"), - 'starred' => t('starred'), - 'tagger' => t("add tag"), - 'filer' => t("file as"), - 'classtagger' => "", - ); + if ($profile_owner == local_user()) { + if($toplevelpost) { + $isstarred = (($item['starred']) ? "starred" : "unstarred"); + + $star = array( + 'do' => t("add star"), + 'undo' => t("remove star"), + 'toggle' => t("toggle star status"), + 'classdo' => (($item['starred']) ? "hidden" : ""), + 'classundo' => (($item['starred']) ? "" : "hidden"), + 'starred' => t('starred'), + 'tagger' => t("add tag"), + 'classtagger' => "", + ); + } + $filer = t("file as"); } - $photo = $item['photo']; $thumb = $item['thumb']; @@ -672,6 +675,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'edpost' => $edpost, 'isstarred' => $isstarred, 'star' => $star, + 'filer' => $filer, 'drop' => $drop, 'vote' => $likebuttons, 'like' => $like, diff --git a/include/oembed.php b/include/oembed.php index 52068efc7..cc71f9757 100755 --- a/include/oembed.php +++ b/include/oembed.php @@ -1,6 +1,6 @@ /',$item['file'],$matches,PREG_SET_ORDER); if($cnt) { - logger('prepare_text: categories: ' . print_r($matches,true), LOGGER_DEBUG); +// logger('prepare_text: categories: ' . print_r($matches,true), LOGGER_DEBUG); foreach($matches as $mtch) { if(strlen($x)) $x .= ','; @@ -931,11 +932,11 @@ function prepare_body($item,$attach = false) { $x = ''; $cnt = preg_match_all('/\[(.*?)\]/',$item['file'],$matches,PREG_SET_ORDER); if($cnt) { - logger('prepare_text: filed_under: ' . print_r($matches,true), LOGGER_DEBUG); +// logger('prepare_text: filed_under: ' . print_r($matches,true), LOGGER_DEBUG); foreach($matches as $mtch) { if(strlen($x)) - $x .= ','; - $x .= file_tag_decode($mtch[1]); + $x .= '   '; + $x .= file_tag_decode($mtch[1]). ' ' . t('[remove]') . ''; } if(strlen($x) && (local_user() == $item['uid'])) $s .= '
                            ' . t('Filed under:') . ' ' . $x . '
                            '; diff --git a/mod/filerm.php b/mod/filerm.php new file mode 100644 index 000000000..66b684dc9 --- /dev/null +++ b/mod/filerm.php @@ -0,0 +1,21 @@ +argc > 1) ? notags(trim($a->argv[1])) : 0); + + logger('filerm: tag ' . $term . ' item ' . $item_id); + + if($item_id && strlen($term)) + file_tag_unsave_file(local_user(),$item_id,$term); + + if(x($_SESSION,'return_url')) + goaway($a->get_baseurl() . '/' . $_SESSION['return_url']); + + killme(); +} diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index 10ddb0090..b79b00ef4 100755 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -2615,12 +2615,12 @@ aside input[type='text'] { margin-top: 10px; } -.body-tag { +.body-tag, .filesavetags { opacity: 0.5; filter:alpha(opacity=50); } -.body-tag:hover { +.body-tag:hover, .filesavetags:hover { opacity: 1.0 !important; filter:alpha(opacity=100) !important; } diff --git a/view/theme/duepuntozero/wall_item.tpl b/view/theme/duepuntozero/wall_item.tpl index 2c88fc598..6cb018b7b 100755 --- a/view/theme/duepuntozero/wall_item.tpl +++ b/view/theme/duepuntozero/wall_item.tpl @@ -56,9 +56,11 @@ {{ if $item.star }} - {{ endif }} - + {{ if $item.filer }} + + {{ endif }} +
                            {{ if $item.drop.dropping }}{{ endif }}
                            diff --git a/view/theme/duepuntozero/wallwall_item.tpl b/view/theme/duepuntozero/wallwall_item.tpl index 211906c93..c37bcb4a2 100755 --- a/view/theme/duepuntozero/wallwall_item.tpl +++ b/view/theme/duepuntozero/wallwall_item.tpl @@ -61,6 +61,9 @@ {{ endif }} + {{ if $item.filer }} + + {{ endif }}
                            {{ if $item.drop.dropping }}{{ endif }} -- cgit v1.2.3 From 975781d3e23e6beb2ac86b191c7c12b7347c1705 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Wed, 14 Mar 2012 01:05:08 -0400 Subject: massive work done to both dispys, mostly -dark Signed-off-by: Simon L'nu --- view/theme/dispy-dark/icons.png | Bin 19513 -> 29024 bytes view/theme/dispy-dark/icons.svg | 50 ++++---- view/theme/dispy-dark/nav.tpl | 16 +-- view/theme/dispy-dark/photo_view.tpl | 2 +- view/theme/dispy-dark/profile_vcard.tpl | 10 +- view/theme/dispy-dark/style.css | 207 +++++++++++++++++++------------- view/theme/dispy-dark/theme.php | 46 ++++++- view/theme/dispy/style.css | 3 +- view/theme/dispy/theme.php | 41 ++++++- 9 files changed, 247 insertions(+), 128 deletions(-) diff --git a/view/theme/dispy-dark/icons.png b/view/theme/dispy-dark/icons.png index eb84b8d8e..648811373 100644 Binary files a/view/theme/dispy-dark/icons.png and b/view/theme/dispy-dark/icons.png differ diff --git a/view/theme/dispy-dark/icons.svg b/view/theme/dispy-dark/icons.svg index 05a00d93c..10f8cc667 100644 --- a/view/theme/dispy-dark/icons.svg +++ b/view/theme/dispy-dark/icons.svg @@ -51,9 +51,9 @@ borderopacity="1.0" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:zoom="1.9403009" - inkscape:cx="100.08061" - inkscape:cy="113.21269" + inkscape:zoom="1.3859292" + inkscape:cx="105.02551" + inkscape:cy="107.90767" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" @@ -107,7 +107,7 @@ image/svg+xml - + @@ -572,7 +572,7 @@ inkscape:connector-curvature="0" id="rect4428-4" d="m 118.03127,895.15627 0,0.3125 c 0,1.2601 -0.0643,3.4345 -0.35937,5.75 l -1.5625,1e-4 c -0.80183,0.011 -1.64766,4.0737 -1.60938,8.0625 l 8.25,0 c -0.057,-5.5479 1.56902,-11.5211 1.75,-5.6563 0.21453,6.9525 1.74237,-5.1823 1.75,-8.4687 z" - style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> {{ endif }} -{{ if $userinfo }} - -{{ endif }} - {{ if $nav.contacts }}
                          • $nav.contacts.1
                          • {{ endif }} @@ -94,6 +86,14 @@ works -->
    +{{ if $userinfo }} + +{{ endif }} +
    {{ if $nav.home }} diff --git a/view/theme/dispy-dark/photo_view.tpl b/view/theme/dispy-dark/photo_view.tpl index 4582751c6..f1209ec58 100644 --- a/view/theme/dispy-dark/photo_view.tpl +++ b/view/theme/dispy-dark/photo_view.tpl @@ -17,7 +17,7 @@
    -
    $desc
    +
    $desc
    {{ if $tags }}
    $tags.0
    $tags.1
    diff --git a/view/theme/dispy-dark/profile_vcard.tpl b/view/theme/dispy-dark/profile_vcard.tpl index 0c289d982..5cb567f5a 100644 --- a/view/theme/dispy-dark/profile_vcard.tpl +++ b/view/theme/dispy-dark/profile_vcard.tpl @@ -6,13 +6,17 @@
    $profile.pdesc
    {{ endif }}
    - $profile.name + $profile.name +
    + +
    +
    {{ if $location }}
    $location -
    +
    {{ if $profile.address }}
    $profile.address
    {{ endif }} $profile.zip @@ -20,7 +24,7 @@ $profile.region $profile.postal-code {{ if $profile.country-name }}$profile.country-name{{ endif }} -
    +
    {{ endif }} diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index 7a57628b9..c590042f1 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -520,11 +520,13 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link position: fixed; left: 28px; bottom: 6px; + z-index: 10; } #language-selector { position: fixed; bottom: 2px; left: 52px; + z-index: 10; } .menu-popup { position: absolute; @@ -810,6 +812,9 @@ aside #viewcontacts { border-bottom: 0; padding: 5px; } +#profile-jot-net { + margin: 5px 0; +} #jot-preview-link { margin: 0 0 0 10px; border: 0; @@ -831,12 +836,12 @@ aside #viewcontacts { background-color: #555753; height: 22px; width: 20px; - -webkit-border-radius: 5px 0px 0px 5px; - -moz-border-radius: 5px 0px 0px 5px; - border-radius: 5px 0px 0px 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; overflow: hidden; border: 0px; - margin: 0 -4px 0 10px; + margin: 0 10px 0 10px; } #profile-jot-plugin-wrapper { width: 1px; @@ -854,23 +859,21 @@ aside #viewcontacts { height: 22px; background-color: #555753; color: #eeeeec; - -webkit-border-radius: 0 5px 5px 0; - -moz-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; border: 0; margin: 0; float: right; } -#jot-perms-icons { - background-color: #555753; +#jot-perms-icon { height: 22px; width: 20px; - -webkit-border-radius: 0 5px 5px 0; - -moz-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; overflow: hidden; border: 0; - margin: 0 0 0 94.4%; } #profile-jot-acl-wrapper { margin: 0 10px; @@ -916,7 +919,8 @@ aside #viewcontacts { color: #cccccc; } #profile-jot-desc { - color: #a00; + color: #ff2000; + margin: 5px 0; } #jot-title-wrapper { margin-bottom: 5px; @@ -1503,20 +1507,26 @@ div[id$="wrapper"] br { } .mail-list-sender-name { display: inline; + font-size: 1.1em; } .mail-list-date { display: inline; - font-size: 0.8em; + font-size: 0.9em; padding-left: 10px; } +.mail-list-sender-name, .mail-list-date { + font-style: italic; +} .mail-list-subject { - font-size: 1.5em; + font-size: 1.2em; + font-weight: bold; } .mail-list-delete-wrapper { float: right; } .mail-list-outside-wrapper-end { clear: both; + border-bottom: 1px #eec dotted; } .mail-conv-sender { float: left; @@ -1734,11 +1744,21 @@ div[id$="wrapper"] br { margin: 30px 0px; } .profile-edit-side-div { - margin: 5px 2px 0 0; + background: #2e2f2e; + border-radius: 5px 5px 0 0; + width: 175px; + height: 20px; + position: relative; + margin: -25px -30px 0px 0px; + display: none; +} +.profile-edit-side-div:hover { + /*margin: 0px 0px 0px 0px;*/ + display: inline; } .profile-edit-side-link { - margin: 0 20px -18px 0; - float: right; + margin: 0 0px 0px 155px; + /*float: right;*/ } .profile-listing { float: left; @@ -1749,6 +1769,9 @@ div[id$="wrapper"] br { padding: 0; list-style: none; } +.marital { + margin-top: 5px; +} #register-sitename { display: inline; font-weight: bold; @@ -1970,6 +1993,9 @@ div[id$="wrapper"] br { background: #88a9d2; font-weight: bold; } +.group-selected:hover, .nets-selected:hover { + color: #2e2f2e; +} .groupsideedit { margin-right: 10px; } @@ -2115,11 +2141,16 @@ div[id$="wrapper"] br { width: 16px; height: 16px; } #adminpage table tr:hover { - background-color:#bbc7d7; + color: #2e2f2e; + background-color: #eec; } #adminpage .selectall { text-align: right; } +#adminpage #users a { + color: #2e2f2e; + text-decoration: underline; +} /** * Form fields @@ -2397,7 +2428,7 @@ div[id$="wrapper"] br { background-position: -70px -40px; } .unlock { - background-position: -90px -40px; + background-position: -88px -40px; } .video { background-position: -110px -40px; @@ -2481,8 +2512,8 @@ footer { } #profile-jot-text { height: 20px; - color: #666; - border: 1px solid #ccc; + color: #eec; + border: 1px solid #eec; border-radius: 5px; width: 99.5%; } @@ -2493,113 +2524,117 @@ footer { #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper { display: block !important; + background: #2e2f2e; + color: #eec; } #acl-wrapper { - width: 690px; - float: left; + width: 660px; + margin: 0 auto; } #acl-search { float: right; background: #fff url("../../../images/search_18.png") no-repeat right center; padding-right: 20px; + margin: 6px; } #acl-showall { - float:left; - display:block; - width:auto; - height:18px; - background-color:#CCC; - background-image:url("../../../images/show_all_off.png"); - background-position:7px 7px; - background-repeat:no-repeat; - padding:7px 10px 7px 30px; - -webkit-border-radius:5px; - -moz-border-radius:5px; - border-radius:5px; - color:#999; + float: left; + display: block; + width: auto; + height: 18px; + background: #eec url("../../../images/show_all_off.png") 8px 8px no-repeat; + padding: 7px 10px 7px 30px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + color: #999; + margin: 5px 0; } #acl-showall.selected { - color:#000; - background-color:#F90; - background-image:url(../../../images/show_all_on.png); + color: #000; + background: #f90 url(../../../images/show_all_on.png) 8px 8px no-repeat; } #acl-list { - height:210px; - border:1px solid #ccc; - clear:both; - margin-top:30px; - overflow:auto; -} -#acl-list-content { + height: 210px; + border: 1px solid #ccc; + clear: both; + margin-top: 30px; + overflow: auto; } +/*#acl-list-content {*/ +/*}*/ .acl-list-item { - display:block; - width:150px; - height:30px; - border:1px solid #ccc; - margin:5px; - float:left; + border: 1px solid #eec; + display: block; + float: left; + height: 110px; + margin: 3px 0 5px 5px; + width: 120px; } .acl-list-item img { - width:22px; - height:22px; - float:left; - margin:4px; + width: 22px; + height: 22px; + float: left; + margin: 5px 5px 20px; } .acl-list-item p { height: 12px; font-size: 10px; - margin: 0; + margin: 0 0 22px; padding: 2px 0 1px; } .acl-list-item a { - font-size:8px; - display:block; - width:40px; - height:10px; - float:left; - color:#999; - background-color:#CCC; - 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; + background: #eec 3px 3px no-repeat; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + clear: both; + font-size: 10px; + display: block; + width: 55px; + height: 20px; + color: #2e2f2e; + margin: 5px auto 0; + padding: 0 3px; + text-align: center; + vertical-align: middle; } #acl-wrapper a:hover { - text-decoration:none; - color:#000; + text-decoration: none; + color: #2e2f2e; + border: 0; } .acl-button-show { - background-image:url('../../../images/show_off.png'); + background-image: url('../../../images/show_off.png'); + margin: 0 auto; } .acl-button-hide { - background-image:url('../../../images/hide_off.png'); + background-image: url('../../../images/hide_off.png'); + margin: 0 auto; } .acl-button-show.selected { - color:#000; - background-color:#9ade00; - background-image:url(../../../images/show_on.png); + color: #2e2f2e; + background-color: #9ade00; + background-image: url(../../../images/show_on.png); } .acl-button-hide.selected { - color:#000; - background-color:#ff4141; - background-image:url(../../../images/hide_on.png); + color: #2e2f2e; + background-color: #ff4141; + background-image: url(../../../images/hide_on.png); } .acl-list-item.groupshow { - border-color:#9ade00; + border-color: #9ade00; } .acl-list-item.grouphide { - border-color:#ff4141; + border-color: #ff4141; } /** /acl **/ /* autocomplete popup */ .acpopup { - max-height: 150px; + max-height: 175px; + max-width: 42%; background-color: #555753; color: #fff; overflow: auto; diff --git a/view/theme/dispy-dark/theme.php b/view/theme/dispy-dark/theme.php index a7aec1c1a..6f8243058 100644 --- a/view/theme/dispy-dark/theme.php +++ b/view/theme/dispy-dark/theme.php @@ -1,5 +1,17 @@ theme_info = array(); + +/* + * Name: Dispy Dark + * Description: Dispy Dark, Friendica theme + * Version: 0.9 + * Author: Simon + * Maintainer: Simon + */ + + +$a->theme_info = array( + 'extends' => 'dispy-dark' +); $a->page['htmlhead'] .= <<< EOT EOT; -$a->page['footer'] .= <<theme_info = array(); + +/* + * Name: Dispy + * Description: Dispy, Friendica theme + * Version: 0.9 + * Author: unknown + * Maintainer: Simon + */ + + +$a->theme_info = array( + 'extends' => 'dispy' +); $a->page['htmlhead'] .= <<< EOT + EOT; $a->page['footer'] .= << Date: Tue, 13 Mar 2012 23:52:13 -0700 Subject: addon settings form error --- mod/network.php | 2 +- mod/settings.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mod/network.php b/mod/network.php index 4f58fc4fb..e9f3913ff 100755 --- a/mod/network.php +++ b/mod/network.php @@ -192,7 +192,7 @@ function network_content(&$a, $update = 0) { 'sel'=>$starred_active, ), array( - 'label' => t('Bookmarks'), + 'label' => t('Shared Links'), 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1', 'sel'=>$bookmarked_active, ), diff --git a/mod/settings.php b/mod/settings.php index f42fdb397..15fd0c352 100755 --- a/mod/settings.php +++ b/mod/settings.php @@ -559,7 +559,7 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_addons.tpl"); $o .= replace_macros($tpl, array( - '$form_security_token' => get_form_security_token("settings_addons"), + '$form_security_token' => get_form_security_token("settings_addon"), '$title' => t('Plugin Settings'), '$tabs' => $tabs, '$settings_addons' => $settings_addons -- cgit v1.2.3 From 509532d168bf716eb24e030ab59476a88ab91571 Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Wed, 14 Mar 2012 12:30:52 +0100 Subject: get_tags tests corrected. They test for the right things now. --- mod/item.php | 13 +-- tests/get_tags_test.php | 243 +++++++++++++++++++++++++++++++++++++----------- 2 files changed, 195 insertions(+), 61 deletions(-) diff --git a/mod/item.php b/mod/item.php index 0ff7f6a7c..e4336b974 100755 --- a/mod/item.php +++ b/mod/item.php @@ -425,7 +425,7 @@ function item_post(&$a) { if(count($tags)) { foreach($tags as $tag) { - handle_tag($body, $inform, $str_tags, $profile_uid, $tag); + handle_tag($a, $body, $inform, $str_tags, $profile_uid, $tag); } } @@ -830,7 +830,7 @@ function item_content(&$a) { * @param unknown_type $profile_uid * @param unknown_type $tag the tag to replace */ -function handle_body(&$body, &$inform, &$str_tags, $profile_uid, $tag) { +function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) { //is it a hash tag? if(strpos($tag,'#') === 0) { //if the tag is replaced... @@ -851,7 +851,7 @@ function handle_body(&$body, &$inform, &$str_tags, $profile_uid, $tag) { $str_tags .= ','; $str_tags .= $newtag; } - continue; + return; } //is it a person tag? if(strpos($tag,'@') === 0) { @@ -887,14 +887,15 @@ function handle_body(&$body, &$inform, &$str_tags, $profile_uid, $tag) { //get the id $tagcid = intval(substr($newname,strrpos($newname,'+') + 1)); //remove the next word from tag's name - if(strpos($name,' ')) - $name = substr($name,0,strpos($name,' ')); + if(strpos($name,' ')) { + $name = substr($name,0,strpos($name,' ')); + } } if($tagcid) { //if there was an id //select contact with that id from the logged in user's contact list $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($tagcid), - intval($profile_uid) + intval($profile_uid) ); } elseif(strstr($name,'_') || strstr($name,' ')) { //no id //get the real name diff --git a/tests/get_tags_test.php b/tests/get_tags_test.php index ee2daced1..bde2db7d0 100644 --- a/tests/get_tags_test.php +++ b/tests/get_tags_test.php @@ -1,14 +1,41 @@ 15, 'attag'=>'', 'network'=>'dfrn', 'name'=>'Mike Lastname', 'alias'=>'Mike', @@ -16,48 +43,59 @@ function q($sql) { $args=func_get_args(); - $str=""; - foreach($args as $arg) { - $str.=", ".$arg; - } - //last parameter is always (in this test) uid, so, it should be 11 if($args[count($args)-1]!=11) { - throw new Exception("q from get_tags_test was used and uid was not 11. "); + return; } - if(2==count($args)) { + + if(3==count($args)) { //first call in handle_body, id only - if($result[0]['id']===$args[1]) { + if($result[0]['id']==$args[1]) { return $result; } - throw new Exception($str); //second call in handle_body, name if($result[0]['name']===$args[1]) { return $result; } } - throw new Exception($str); //third call in handle_body, nick or attag if($result[0]['nick']===$args[2] || $result[0]['attag']===$args[1]) { return $result; } -// throw new Exception("Nothing fitted: ".$args[1].", ".$args[2]); } +/** + * replacement for dbesc. + * I don't want to test dbesc here, so + * I just return the input. It won't be a problem, because + * the test does not use a real database. + * + * DON'T USE HAT FUNCTION OUTSIDE A TEST! + * + * @param string $str + * @return input + */ function dbesc($str) { return $str; } -class GetTagsTest extends PHPUnit_Framework_TestCase { - +/** + * TestCase for tag handling. + * + * @author alexander + * @package test.util + */ +class GetTagsTest extends PHPUnit_Framework_TestCase { + /** the mock to use as app */ + private $a; + + /** + * initialize the test. That's a phpUnit function, + * don't change its name. + */ public function setUp() { - set_include_path( - get_include_path() . PATH_SEPARATOR - . 'include' . PATH_SEPARATOR - . 'library' . PATH_SEPARATOR - . 'library/phpsec' . PATH_SEPARATOR - . '.' ); + $this->a=new MockApp(); } /** @@ -70,10 +108,54 @@ class GetTagsTest extends PHPUnit_Framework_TestCase { $inform=''; $str_tags=''; - handle_body($text, $inform, $str_tags, 11, $tags[0]); - - $this->assertEquals("@Mike", $tags[0]); + foreach($tags as $tag) { + handle_tag($this->a, $text, $inform, $str_tags, 11, $tag); + } + + //correct tags found? + $this->assertEquals(1, count($tags)); + $this->assertTrue(in_array("@Mike", $tags)); + + //correct output from handle_tag? + $this->assertEquals("cid:15", $inform); + $this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags); $this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url]", $text); + } + + /** + * test with one Person tag. + * There's a minor spelling mistake... + */ + public function testGetTagsShortPersonSpelling() { + $text="hi @Mike.because"; + + $tags=get_tags($text); + + //correct tags found? + $this->assertEquals(1, count($tags)); + $this->assertTrue(in_array("@Mike.because", $tags)); + + $inform=''; + $str_tags=''; + handle_tag($this->a, $text, $inform, $str_tags, 11, $tags[0]); + + $this->assertEquals("cid:15", $inform); + $this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags); + $this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url].because", $text); + } + + /** + * test with two Person tags. + * There's a minor spelling mistake... + */ + public function testGetTagsPerson2Spelling() { + $text="hi @Mike@campino@friendica.eu"; + + $tags=get_tags($text); + + $this->assertEquals(2, count($tags)); + $this->assertTrue(in_array("@Mike", $tags)); + $this->assertTrue(in_array("@campino@friendica.eu", $tags)); } /** @@ -83,8 +165,9 @@ class GetTagsTest extends PHPUnit_Framework_TestCase { $text="This is a #test_case"; $tags=get_tags($text); - - $this->assertEquals("#test_case", $tags[0]); + + $this->assertEquals(1, count($tags)); + $this->assertTrue(in_array("#test_case", $tags)); } /** @@ -95,13 +178,21 @@ class GetTagsTest extends PHPUnit_Framework_TestCase { $tags=get_tags($text); - $inform=''; - $str_tags=''; - handle_body($text, $inform, $str_tags, 11, $tags[0]); - - $this->assertEquals("hi @[url=http://justatest.de]Mike[/url] This is a #test_case", $text); - $this->assertEquals("@Mike", $tags[0]); - $this->assertEquals("#test_case", $tags[1]); + $this->assertEquals(3, count($tags)); + $this->assertTrue(in_array("@Mike", $tags)); + $this->assertTrue(in_array("@Mike This", $tags)); + $this->assertTrue(in_array("#test_case", $tags)); + + $inform=''; + $str_tags=''; + foreach($tags as $tag) { + handle_tag($this->a, $text, $inform, $str_tags, 11, $tag); + } + + $this->assertEquals("cid:15", $inform); + $this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url],#[url=baseurl/search?search=test%20case]test case[/url]", $str_tags); + $this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url] This is a #[url=baseurl/search?search=test%20case]test case[/url]", $text); + } /** @@ -112,8 +203,9 @@ class GetTagsTest extends PHPUnit_Framework_TestCase { $tags=get_tags($text); - $this->assertEquals("@Mike", $tags[0]); - $this->assertEquals("#test_case", $tags[1]); + $this->assertEquals(2, count($tags)); + $this->assertTrue(in_array("@Mike", $tags)); + $this->assertTrue(in_array("#test_case", $tags)); } /** @@ -123,10 +215,45 @@ class GetTagsTest extends PHPUnit_Framework_TestCase { $text="@Test I saw the Theme Dev group was created."; $tags=get_tags($text); - - $this->assertEquals("@Test", $tags[0]); + + $this->assertEquals(2, count($tags)); + $this->assertTrue(in_array("@Test I", $tags)); + $this->assertTrue(in_array("@Test", $tags)); } + /** + * this test demonstrates strange behaviour by intval. + * It makes the next test fail. + */ + public function testIntval() { + $this->assertEquals(15, intval("15 it")); + } + + /** + * test a tag with an id in it + */ + public function testIdTag() { + $text="Test with @mike+15 id tag"; + + $tags=get_tags($text); + + $this->assertEquals(2, count($tags)); + $this->assertTrue(in_array("@mike+15", $tags)); + + //happens right now, but it shouldn't be necessary + $this->assertTrue(in_array("@mike+15 id", $tags)); + + $inform=''; + $str_tags=''; + foreach($tags as $tag) { + handle_tag($this->a, $text, $inform, $str_tags, 11, $tag); + } + + $this->assertEquals("Test with @[url=http://justatest.de]Mike Lastname[/url] id tag", $text); + $this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags); + $this->assertEquals("cid:15", $inform); + } + /** * test with two persons and one special tag. */ @@ -135,11 +262,13 @@ class GetTagsTest extends PHPUnit_Framework_TestCase { ." so @somebody@friendica.com may change #things."; $tags=get_tags($text); - - $this->assertEquals("@Mike", $tags[0]); - $this->assertEquals("#test_cases", $tags[1]); - $this->assertEquals("@somebody@friendica.com", $tags[2]); - $this->assertEquals("#things", $tags[3]); + + $this->assertEquals(5, count($tags)); + $this->assertTrue(in_array("@Mike", $tags)); + $this->assertTrue(in_array("#test_cases", $tags)); + $this->assertTrue(in_array("@somebody@friendica.com", $tags)); + $this->assertTrue(in_array("@somebody@friendica.com may", $tags)); + $this->assertTrue(in_array("#things", $tags)); } /** @@ -156,19 +285,23 @@ class GetTagsTest extends PHPUnit_Framework_TestCase { $tags=get_tags($text); - $this->assertEquals("@Mike", $tags[0]); - $this->assertEquals("#test_cases", $tags[1]); - $this->assertEquals("@somebody@friendica.com", $tags[2]); - $this->assertEquals("#things", $tags[3]); - $this->assertEquals("#pitfalls", $tags[4]); - $this->assertEquals("#tags", $tags[5]); - $this->assertEquals("@comment", $tags[6]); - $this->assertEquals("@fullstops", $tags[7]); - $this->assertEquals("#things", $tags[8]); - $this->assertEquals("@Mike", $tags[9]); - $this->assertEquals("@campino@friendica.eu", $tags[10]); - $this->assertEquals("#nice", $tags[11]); - $this->assertEquals("@first_last", $tags[12]); + $this->assertTrue(in_array("@Mike", $tags)); + $this->assertTrue(in_array("#test_cases", $tags)); + $this->assertTrue(in_array("@somebody@friendica.com", $tags)); + $this->assertTrue(in_array("#things", $tags)); + $this->assertTrue(in_array("#pitfalls", $tags)); + $this->assertTrue(in_array("#tags", $tags)); + $this->assertTrue(in_array("@comment", $tags)); + $this->assertTrue(in_array("@fullstops.because", $tags)); + $this->assertTrue(in_array("#things", $tags)); + $this->assertTrue(in_array("@Mike", $tags)); + $this->assertTrue(in_array("#nice", $tags)); + $this->assertTrue(in_array("@first_last", $tags)); + + //right now, none of the is matched + $this->assertFalse(in_array("@Mike@campino@friendica.eu", $tags)); + $this->assertTrue(in_array("@campino@friendica.eu", $tags)); + $this->assertTrue(in_array("@campino@friendica.eu is", $tags)); } /** -- cgit v1.2.3 From c0c98206ef322b3d175d5348d37e8d0b5fca140b Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Wed, 14 Mar 2012 12:31:25 +0100 Subject: removed done TODO --- tests/get_tags_test.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/get_tags_test.php b/tests/get_tags_test.php index bde2db7d0..9051923be 100644 --- a/tests/get_tags_test.php +++ b/tests/get_tags_test.php @@ -281,8 +281,7 @@ class GetTagsTest extends PHPUnit_Framework_TestCase { ."@comment. I hope noone forgets about @fullstops.because that might" ." break #things. @Mike@campino@friendica.eu is also #nice, isn't it? " ."Now, add a @first_last tag. "; - //TODO check whether this are all variants (no, auto-stuff is missing). - + $tags=get_tags($text); $this->assertTrue(in_array("@Mike", $tags)); -- cgit v1.2.3 From 42462cc1f00cd0d2e637ff3ddb62b30ae4a645c6 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Wed, 14 Mar 2012 12:50:11 +0100 Subject: add links to home, profile, photos, events, notes to aside in network-stream --- view/theme/diabook-blue/profile_side.tpl | 19 +++++++++++++++ view/theme/diabook-blue/style.css | 41 ++++++++++++++++++++++++++++++++ view/theme/diabook-blue/theme.php | 36 ++++++++++++++++++++++++++++ view/theme/diabook/profile_side.tpl | 19 +++++++++++++++ view/theme/diabook/style.css | 40 ++++++++++++++++++++++++++++--- view/theme/diabook/theme.php | 37 ++++++++++++++++++++++++++++ 6 files changed, 189 insertions(+), 3 deletions(-) create mode 100644 view/theme/diabook-blue/profile_side.tpl create mode 100644 view/theme/diabook/profile_side.tpl diff --git a/view/theme/diabook-blue/profile_side.tpl b/view/theme/diabook-blue/profile_side.tpl new file mode 100644 index 000000000..595684bf5 --- /dev/null +++ b/view/theme/diabook-blue/profile_side.tpl @@ -0,0 +1,19 @@ + + + \ No newline at end of file diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index 93307153f..514314049 100644 --- a/view/theme/diabook-blue/style.css +++ b/view/theme/diabook-blue/style.css @@ -874,6 +874,41 @@ ul.menu-popup .empty { padding: 7px 7px 0px 0px; } +/*profile_side*/ +#profile_side { + margin-bottom: 30px; +} +#ps-usericon{ + height: 25px + } +#ps-username{ + font-size: 1.17em; + font-weight: bold; + vertical-align: top; + position: absolute; + padding-top: 4px; + padding-left: 5px; + } +#ps-username:hover{ + text-decoration: none; + } +.menu-profile-side{ + list-style: none; + padding-left: 16px; + min-height: 16px; + } +.menu-profile-list{ + height: auto; + overflow: auto; + padding-top: 3px; + padding-bottom: 3px; + } +.menu-profile-list:hover{ + background: #EEE; + } +.menu-profile-list-item:hover{ + text-decoration: none; + } /* aside */ aside { display: table-cell; @@ -1879,6 +1914,12 @@ ul.tabs li .active { float: left; } /* photo */ +.photo { +box-shadow: 2px 2px 5px 0px #000000; +margin: 2px 5px 2px 5px; +max-height: 85%; +max-width: 85%; +} .lframe { float: left; margin: 0px 10px 10px 0px; diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php index e5aa710c7..75abb2fdf 100755 --- a/view/theme/diabook-blue/theme.php +++ b/view/theme/diabook-blue/theme.php @@ -11,6 +11,42 @@ $a->theme_info = array( 'extends' => 'diabook', ); +//profile_side + + + +$nav['usermenu']=array(); +$userinfo = null; + +if(local_user()) { + + + +$r = q("SELECT micro FROM contact WHERE uid=%d AND self=1", intval($a->user['uid'])); + +$userinfo = array( + 'icon' => (count($r) ? $r[0]['micro']: $a->get_baseurl()."/images/default-profile-mm.jpg"), + 'name' => $a->user['username'], + ); + +$ps['usermenu'][status] = Array('profile/' . $a->user['nickname'], t('Home'), "", t('Your posts and conversations')); +$ps['usermenu'][profile] = Array('profile/' . $a->user['nickname']. '?tab=profile', t('Profile'), "", t('Your profile page')); +$ps['usermenu'][photos] = Array('photos/' . $a->user['nickname'], t('Photos'), "", t('Your photos')); +$ps['usermenu'][events] = Array('events/', t('Events'), "", t('Your events')); +$ps['usermenu'][notes] = Array('notes/', t('Personal notes'), "", t('Your personal photos')); + + +if($is_url = preg_match ("/\bnetwork\b/i", $_SERVER['REQUEST_URI'])) { +$tpl = get_markup_template('profile_side.tpl'); + +$a->page['aside'] .= replace_macros($tpl, array( + '$userinfo' => $userinfo, + '$ps' => $ps, + )); +} +} + +//js scripts $a->page['htmlhead'] .= <<< EOT "; $f = get_config('system','birthday_input_format'); @@ -425,7 +425,7 @@ function profiles_content(&$a) { '$lbl_work' => t('Work/employment'), '$lbl_school' => t('School/education'), '$disabled' => (($is_default) ? 'onclick="return false;" style="color: #BBBBFF;"' : ''), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$profile_id' => $r[0]['id'], '$profile_name' => $r[0]['profile-name'], '$default' => (($is_default) ? '

    ' . t('This is your public profile.
    It may be visible to anybody using the internet.') . '

    ' : ""), @@ -489,7 +489,7 @@ function profiles_content(&$a) { '$alt' => t('Profile Image'), '$profile_name' => $rr['profile-name'], '$visible' => (($rr['is-default']) ? '' . t('visible to everybody') . '' - : '' . t('Edit visibility') . '') + : '' . t('Edit visibility') . '') )); } } diff --git a/mod/settings.php b/mod/settings.php index 15fd0c352..f694b5840 100755 --- a/mod/settings.php +++ b/mod/settings.php @@ -59,7 +59,7 @@ function settings_post(&$a) { q("DELETE FROM tokens WHERE id='%s' AND uid=%d", dbesc($key), local_user()); - goaway($a->get_baseurl()."/settings/oauth/"); + goaway($a->get_baseurl(true)."/settings/oauth/"); return; } @@ -104,7 +104,7 @@ function settings_post(&$a) { local_user()); } } - goaway($a->get_baseurl()."/settings/oauth/"); + goaway($a->get_baseurl(true)."/settings/oauth/"); return; } @@ -411,7 +411,7 @@ function settings_post(&$a) { } - goaway($a->get_baseurl() . '/settings' ); + goaway($a->get_baseurl(true) . '/settings' ); return; // NOTREACHED } @@ -435,27 +435,27 @@ function settings_content(&$a) { $tabs = array( array( 'label' => t('Account settings'), - 'url' => $a->get_baseurl().'/settings', + 'url' => $a->get_baseurl(true).'/settings', 'sel' => (($a->argc == 1)?'active':''), ), array( 'label' => t('Connector settings'), - 'url' => $a->get_baseurl().'/settings/connectors', + 'url' => $a->get_baseurl(true).'/settings/connectors', 'sel' => (($a->argc > 1) && ($a->argv[1] === 'connectors')?'active':''), ), array( 'label' => t('Plugin settings'), - 'url' => $a->get_baseurl().'/settings/addon', + 'url' => $a->get_baseurl(true).'/settings/addon', 'sel' => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''), ), array( 'label' => t('Connections'), - 'url' => $a->get_baseurl() . '/settings/oauth', + 'url' => $a->get_baseurl(true) . '/settings/oauth', 'sel' => (($a->argc > 1) && ($a->argv[1] === 'oauth')?'active':''), ), array( 'label' => t('Export personal data'), - 'url' => $a->get_baseurl() . '/uexport', + 'url' => $a->get_baseurl(true) . '/uexport', 'sel' => '' ) ); @@ -517,7 +517,7 @@ function settings_content(&$a) { $r = q("DELETE FROM clients WHERE client_id='%s' AND uid=%d", dbesc($a->argv[3]), local_user()); - goaway($a->get_baseurl()."/settings/oauth/"); + goaway($a->get_baseurl(true)."/settings/oauth/"); return; } @@ -533,7 +533,7 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_oauth.tpl"); $o .= replace_macros($tpl, array( '$form_security_token' => get_form_security_token("settings_oauth"), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$title' => t('Connected Apps'), '$add' => t('Add application'), '$edit' => t('Edit'), @@ -789,7 +789,7 @@ function settings_content(&$a) { $theme_selected = (!x($_SESSION,'theme')? $default_theme : $_SESSION['theme']); - $subdir = ((strlen($a->get_path())) ? '
    ' . t('or') . ' ' . $a->get_baseurl() . '/profile/' . $nickname : ''); + $subdir = ((strlen($a->get_path())) ? '
    ' . t('or') . ' ' . $a->get_baseurl(true) . '/profile/' . $nickname : ''); $tpl_addr = get_markup_template("settings_nick_set.tpl"); @@ -819,7 +819,7 @@ function settings_content(&$a) { '$ptitle' => t('Account Settings'), '$submit' => t('Submit'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$uid' => local_user(), '$form_security_token' => get_form_security_token("settings"), -- cgit v1.2.3 From 93a8907f435e1b6ca55fa816ffb81b47a018db03 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 14 Mar 2012 21:29:44 -0700 Subject: force login to ssl on SSL_POLICY_SELFSIGN --- boot.php | 18 +++++++++++------- view/login.tpl | 2 +- view/logout.tpl | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/boot.php b/boot.php index 22a4e39be..c4cfbe5bf 100755 --- a/boot.php +++ b/boot.php @@ -696,6 +696,7 @@ function get_guid($size=16) { if(! function_exists('login')) { function login($register = false, $hiddens=false) { + $a = get_app(); $o = ""; $reg = false; if ($register) { @@ -715,23 +716,26 @@ function login($register = false, $hiddens=false) { } + $dest_url = $a->get_baseurl(true) . '/' . $a->query_string; $o .= replace_macros($tpl,array( - '$logout' => t('Logout'), - '$login' => t('Login'), + + '$dest_url' => $dest_url, + '$logout' => t('Logout'), + '$login' => t('Login'), '$lname' => array('username', t('Nickname or Email address: ') , '', ''), '$lpassword' => array('password', t('Password: '), '', ''), '$openid' => !$noid, - '$lopenid' => array('openid_url', t('Or login using OpenID: '),'',''), + '$lopenid' => array('openid_url', t('Or login using OpenID: '),'',''), - '$hiddens' => $hiddens, + '$hiddens' => $hiddens, - '$register' => $reg, + '$register' => $reg, - '$lostpass' => t('Forgot your password?'), - '$lostlink' => t('Password Reset'), + '$lostpass' => t('Forgot your password?'), + '$lostlink' => t('Password Reset'), )); call_hooks('login_hook',$o); diff --git a/view/login.tpl b/view/login.tpl index 5349fa3d8..4cbbb1624 100755 --- a/view/login.tpl +++ b/view/login.tpl @@ -1,5 +1,5 @@ - +
    diff --git a/view/logout.tpl b/view/logout.tpl index 6a84a5bbc..efc971df8 100755 --- a/view/logout.tpl +++ b/view/logout.tpl @@ -1,4 +1,4 @@ - +
    -- cgit v1.2.3 From b44533e9fb685bb4b38073a90003d61911e1e24e Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 14 Mar 2012 21:40:36 -0700 Subject: roll protocol version due to ssl_policy settings --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index c4cfbe5bf..04f36093b 100755 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_VERSION', '2.3.1281' ); -define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); +define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1131 ); define ( 'EOL', "
    \r\n" ); -- cgit v1.2.3 From b06c5983a4dae26dd24aecd7473bad98558cd6fc Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 14 Mar 2012 21:58:54 -0700 Subject: don't allow multiple friends with http/https same person, don't show mail2 coming soon unless person is allowed to have email contacts --- mod/dfrn_request.php | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index 4acb5c9bb..c2d37dac7 100755 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -77,9 +77,10 @@ function dfrn_request_post(&$a) { * Lookup the contact based on their URL (which is the only unique thing we have at the moment) */ - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `self` = 0 LIMIT 1", + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND (`url` = '%s' OR `nurl` = '%s') AND `self` = 0 LIMIT 1", intval(local_user()), - dbesc($dfrn_url) + dbesc($dfrn_url), + dbesc(normalise_link($dfrn_url)) ); if(count($r)) { @@ -668,7 +669,21 @@ function dfrn_request_content(&$a) { $page_desc .= t("Please enter your 'Identity Address' from one of the following supported communications networks:"); - $emailnet = t("Connect as an email follower \x28Coming soon\x29"); + // see if we are allowed to have NETWORK_MAIL2 contacts + + $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1); + if(get_config('system','dfrn_only')) + $mail_disabled = 1; + + if(! $mail_disabled) { + $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1", + intval($a->profile['uid']) + ); + if(! count($r)) + $mail_disabled = 1; + } + + $emailnet = (($mail_disabled) ? '' : t("Connect as an email follower \x28Coming soon\x29")); $invite_desc = t('If you are not yet a member of the free social web, follow this link to find a public Friendica site and join us today.'); -- cgit v1.2.3 From 6dbee45d92450131bad7a8381a0339a880dacfd9 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Thu, 15 Mar 2012 08:29:39 +0100 Subject: add links to wall, photos, events, etc to aside on networkpage, fixes in css --- view/theme/diabook-blue/icons/toogle_off.png | Bin 391 -> 834 bytes view/theme/diabook-blue/icons/toogle_on.png | Bin 429 -> 715 bytes view/theme/diabook-blue/profile_side.tpl | 3 +- view/theme/diabook-blue/style.css | 40 ++++++++++++++++++++++----- view/theme/diabook-blue/theme.php | 2 +- view/theme/diabook/icons/toogle_off.png | Bin 391 -> 834 bytes view/theme/diabook/icons/toogle_on.png | Bin 429 -> 715 bytes view/theme/diabook/profile_side.tpl | 3 +- view/theme/diabook/style.css | 38 +++++++++++++++++++++---- view/theme/diabook/theme.php | 9 +++--- 10 files changed, 74 insertions(+), 21 deletions(-) mode change 100755 => 100644 view/theme/diabook-blue/icons/toogle_off.png mode change 100755 => 100644 view/theme/diabook-blue/icons/toogle_on.png mode change 100755 => 100644 view/theme/diabook/icons/toogle_off.png mode change 100755 => 100644 view/theme/diabook/icons/toogle_on.png diff --git a/view/theme/diabook-blue/icons/toogle_off.png b/view/theme/diabook-blue/icons/toogle_off.png old mode 100755 new mode 100644 index 99490bcd9..0fcce4d5a Binary files a/view/theme/diabook-blue/icons/toogle_off.png and b/view/theme/diabook-blue/icons/toogle_off.png differ diff --git a/view/theme/diabook-blue/icons/toogle_on.png b/view/theme/diabook-blue/icons/toogle_on.png old mode 100755 new mode 100644 index 81e8f9120..79ce07f0e Binary files a/view/theme/diabook-blue/icons/toogle_on.png and b/view/theme/diabook-blue/icons/toogle_on.png differ diff --git a/view/theme/diabook-blue/profile_side.tpl b/view/theme/diabook-blue/profile_side.tpl index 595684bf5..01da55ce1 100644 --- a/view/theme/diabook-blue/profile_side.tpl +++ b/view/theme/diabook-blue/profile_side.tpl @@ -8,10 +8,11 @@
    diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index 514314049..bdc79a350 100644 --- a/view/theme/diabook-blue/style.css +++ b/view/theme/diabook-blue/style.css @@ -461,7 +461,7 @@ code { } #panel { position: absolute; - width: 10em; + width: 12em; background: #ffffff; color: #2d2d2d; margin: 0px; @@ -780,8 +780,6 @@ ul.menu-popup { margin: 0px; padding: 0px; list-style: none; - border: 1px solid #364e59; - border-top-color: transparent; z-index: 100000; -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); @@ -1922,7 +1920,7 @@ max-width: 85%; } .lframe { float: left; - margin: 0px 10px 10px 0px; + /*margin: 0px 10px 10px 0px;*/ } /* profile match wrapper */ .profile-match-wrapper { @@ -2362,8 +2360,36 @@ float: left; .contact-details { color: #999999; } - -.photo-top-image-wrapper { +#side-bar-photos-albums{ + margin-top: 15px; + } +.photo-top-photo, .photo-album-photo { + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.photo-album-image-wrapper, .photo-top-image-wrapper { + float: left; + -moz-box-shadow: 0 0 5px #888; + -webkit-box-shadow: 0 0 5px #888; + box-shadow: 0 0 5px #888; + background-color: #EEE; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding-bottom: 20px; + position: relative; + margin: 0 10px 10px 0; +} +.photo-top-album-name { + position: absolute; + bottom: 0; + padding: 0 5px; +} +.photo-top-album-link{ + color: #1872A2; + } +/*.photo-top-image-wrapper { position: relative; float: left; margin-top: 15px; @@ -2379,7 +2405,7 @@ float: left; padding: 0px 3px; padding-top: 0.5em; background-color: rgb(255, 255, 255); -} +}*/ #photo-top-end { clear: both; } diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php index 75abb2fdf..9093ac2ca 100755 --- a/view/theme/diabook-blue/theme.php +++ b/view/theme/diabook-blue/theme.php @@ -34,7 +34,7 @@ $ps['usermenu'][profile] = Array('profile/' . $a->user['nickname']. '?tab=profil $ps['usermenu'][photos] = Array('photos/' . $a->user['nickname'], t('Photos'), "", t('Your photos')); $ps['usermenu'][events] = Array('events/', t('Events'), "", t('Your events')); $ps['usermenu'][notes] = Array('notes/', t('Personal notes'), "", t('Your personal photos')); - +$ps['usermenu'][community] = Array('community/', t('Community'), "", ""); if($is_url = preg_match ("/\bnetwork\b/i", $_SERVER['REQUEST_URI'])) { $tpl = get_markup_template('profile_side.tpl'); diff --git a/view/theme/diabook/icons/toogle_off.png b/view/theme/diabook/icons/toogle_off.png old mode 100755 new mode 100644 index 99490bcd9..0fcce4d5a Binary files a/view/theme/diabook/icons/toogle_off.png and b/view/theme/diabook/icons/toogle_off.png differ diff --git a/view/theme/diabook/icons/toogle_on.png b/view/theme/diabook/icons/toogle_on.png old mode 100755 new mode 100644 index 81e8f9120..79ce07f0e Binary files a/view/theme/diabook/icons/toogle_on.png and b/view/theme/diabook/icons/toogle_on.png differ diff --git a/view/theme/diabook/profile_side.tpl b/view/theme/diabook/profile_side.tpl index 595684bf5..01da55ce1 100644 --- a/view/theme/diabook/profile_side.tpl +++ b/view/theme/diabook/profile_side.tpl @@ -8,10 +8,11 @@
    diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index df692cbc6..437f323fa 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -462,7 +462,7 @@ code { } #panel { position: absolute; - width: 10em; + width: 12em; background: #ffffff; color: #2d2d2d; margin: 0px; @@ -769,8 +769,6 @@ ul.menu-popup { margin: 0px; padding: 0px; list-style: none; - border: 1px solid #364e59; - border-top-color: transparent; z-index: 100000; -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); @@ -1904,7 +1902,6 @@ ul.tabs li .active { /* photo */ .lframe { float: left; - margin: 0px 10px 10px 0px; } /* profile match wrapper */ .profile-match-wrapper { @@ -2352,7 +2349,36 @@ float: left; color: #999999; } -.photo-top-image-wrapper { +#side-bar-photos-albums{ + margin-top: 15px; + } +.photo-top-photo, .photo-album-photo { + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.photo-album-image-wrapper, .photo-top-image-wrapper { + float: left; + -moz-box-shadow: 0 0 5px #888; + -webkit-box-shadow: 0 0 5px #888; + box-shadow: 0 0 5px #888; + background-color: #EEE; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding-bottom: 20px; + position: relative; + margin: 0 10px 10px 0; +} +.photo-top-album-name { + position: absolute; + bottom: 0; + padding: 0 5px; +} +.photo-top-album-link{ + color: #1872A2; + } +/*.photo-top-image-wrapper { position: relative; float: left; margin-top: 15px; @@ -2368,7 +2394,7 @@ float: left; padding: 0px 3px; padding-top: 0.5em; background-color: rgb(255, 255, 255); -} +}*/ #photo-top-end { clear: both; } diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php index 9b3ed30b0..9093ac2ca 100755 --- a/view/theme/diabook/theme.php +++ b/view/theme/diabook/theme.php @@ -1,8 +1,8 @@ user['nickname']. '?tab=profil $ps['usermenu'][photos] = Array('photos/' . $a->user['nickname'], t('Photos'), "", t('Your photos')); $ps['usermenu'][events] = Array('events/', t('Events'), "", t('Your events')); $ps['usermenu'][notes] = Array('notes/', t('Personal notes'), "", t('Your personal photos')); - +$ps['usermenu'][community] = Array('community/', t('Community'), "", ""); if($is_url = preg_match ("/\bnetwork\b/i", $_SERVER['REQUEST_URI'])) { $tpl = get_markup_template('profile_side.tpl'); @@ -46,8 +46,7 @@ $a->page['aside'] .= replace_macros($tpl, array( } } -//js script - +//js scripts $a->page['htmlhead'] .= <<< EOT diff --git a/view/theme/dispy-dark/jot-header.tpl b/view/theme/dispy-dark/jot-header.tpl index 43dcdbb84..4c8f59d79 100644 --- a/view/theme/dispy-dark/jot-header.tpl +++ b/view/theme/dispy-dark/jot-header.tpl @@ -114,6 +114,7 @@ function enableOnUser(){ $(this).val(""); initEditor(); } + EOT; diff --git a/view/theme/dispy-dark/wall_item.tpl b/view/theme/dispy-dark/wall_item.tpl index b013cfeef..c67a88635 100644 --- a/view/theme/dispy-dark/wall_item.tpl +++ b/view/theme/dispy-dark/wall_item.tpl @@ -26,11 +26,14 @@ {{ endif }} + {{ if $item.vote }} {{ endif }} diff --git a/view/theme/dispy-dark/wallwall_item.tpl b/view/theme/dispy-dark/wallwall_item.tpl index 86453fad2..f251d7352 100644 --- a/view/theme/dispy-dark/wallwall_item.tpl +++ b/view/theme/dispy-dark/wallwall_item.tpl @@ -31,11 +31,15 @@ {{ endif }} + {{ if $item.vote }} {{ endif }} @@ -63,6 +67,7 @@ {{ endfor }} +
    $item.name diff --git a/view/theme/dispy/theme.php b/view/theme/dispy/theme.php index 75297290c..cbfcb09e6 100644 --- a/view/theme/dispy/theme.php +++ b/view/theme/dispy/theme.php @@ -111,6 +111,3 @@ $(document).ready(function() { }); EOT; - -$a->page['footer'] .= << + {{ endif }} - {{ if $item.filer }} - - {{ endif }} - +
    {{ if $item.drop.dropping }}{{ endif }}
    diff --git a/view/theme/duepuntozero/wallwall_item.tpl b/view/theme/duepuntozero/wallwall_item.tpl index c37bcb4a2..211906c93 100755 --- a/view/theme/duepuntozero/wallwall_item.tpl +++ b/view/theme/duepuntozero/wallwall_item.tpl @@ -61,9 +61,6 @@ {{ endif }} - {{ if $item.filer }} - - {{ endif }}
    {{ if $item.drop.dropping }}{{ endif }} -- cgit v1.2.3 From b5120888cf6e3aac29aa2a8d80bddcab73822e1e Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 15 Mar 2012 21:17:51 +0100 Subject: html2bbcode: Disabled size conversion --- include/html2bbcode.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/html2bbcode.php b/include/html2bbcode.php index 0dafecc71..69ccf41b7 100755 --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -142,14 +142,14 @@ function html2bbcode($message) node2bbcode($doc, 'span', array('style'=>'font-style: italic;'), '[i]', '[/i]'); node2bbcode($doc, 'span', array('style'=>'font-weight: bold;'), '[b]', '[/b]'); - node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/', 'size'=>'/(\d+)/', 'color'=>'/(.+)/'), '[font=$1][size=$2][color=$3]', '[/color][/size][/font]'); + /*node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/', 'size'=>'/(\d+)/', 'color'=>'/(.+)/'), '[font=$1][size=$2][color=$3]', '[/color][/size][/font]'); node2bbcode($doc, 'font', array('size'=>'/(\d+)/', 'color'=>'/(.+)/'), '[size=$1][color=$2]', '[/color][/size]'); node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/', 'size'=>'/(.+)/'), '[font=$1][size=$2]', '[/size][/font]'); node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/', 'color'=>'/(.+)/'), '[font=$1][color=$3]', '[/color][/font]'); node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/'), '[font=$1]', '[/font]'); node2bbcode($doc, 'font', array('size'=>'/(\d+)/'), '[size=$1]', '[/size]'); node2bbcode($doc, 'font', array('color'=>'/(.+)/'), '[color=$1]', '[/color]'); - +*/ // Untested //node2bbcode($doc, 'span', array('style'=>'/.*font-size:\s*(.+?)[,;].*font-family:\s*(.+?)[,;].*color:\s*(.+?)[,;].*/'), '[size=$1][font=$2][color=$3]', '[/color][/font][/size]'); //node2bbcode($doc, 'span', array('style'=>'/.*font-size:\s*(\d+)[,;].*/'), '[size=$1]', '[/size]'); @@ -191,13 +191,13 @@ function html2bbcode($message) node2bbcode($doc, 'hr', array(), "[hr]", ""); - //node2bbcode($doc, 'table', array(), "", ""); - //node2bbcode($doc, 'tr', array(), "\n", ""); - //node2bbcode($doc, 'td', array(), "\t", ""); - node2bbcode($doc, 'table', array(), "[table]", "[/table]"); - node2bbcode($doc, 'th', array(), "[th]", "[/th]"); - node2bbcode($doc, 'tr', array(), "[tr]", "[/tr]"); - node2bbcode($doc, 'td', array(), "[td]", "[/td]"); + node2bbcode($doc, 'table', array(), "", ""); + node2bbcode($doc, 'tr', array(), "\n", ""); + node2bbcode($doc, 'td', array(), "\t", ""); + //node2bbcode($doc, 'table', array(), "[table]", "[/table]"); + //node2bbcode($doc, 'th', array(), "[th]", "[/th]"); + //node2bbcode($doc, 'tr', array(), "[tr]", "[/tr]"); + //node2bbcode($doc, 'td', array(), "[td]", "[/td]"); node2bbcode($doc, 'h1', array(), "\n\n[size=xx-large][b]", "[/b][/size]\n"); node2bbcode($doc, 'h2', array(), "\n\n[size=x-large][b]", "[/b][/size]\n"); -- cgit v1.2.3 -- cgit v1.2.3 From 5c75d40c0b6bee04d8c58a6f88ecbbe34684874a Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Thu, 15 Mar 2012 17:27:06 -0400 Subject: fixed the sidebar edit thingy. haven't synced dispy yet. Signed-off-by: Simon L'nu --- view/theme/dispy-dark/profile_vcard.tpl | 35 ++++++++++++++++----------------- view/theme/dispy-dark/style.css | 16 +++++++++------ 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/view/theme/dispy-dark/profile_vcard.tpl b/view/theme/dispy-dark/profile_vcard.tpl index 6228e4f28..350a6ce4a 100644 --- a/view/theme/dispy-dark/profile_vcard.tpl +++ b/view/theme/dispy-dark/profile_vcard.tpl @@ -1,24 +1,23 @@
    -
    $profile.name
    - - {{ if $profile.edit }} -
    - - $profile.edit.1 - -
    - {{ endif }} + {{ if $profile.edit }} +
    + + $profile.edit.1 +
    + {{ endif }} + +
    $profile.name
    {{ if $pdesc }}
    $profile.pdesc
    diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index 2dc21817a..6ab0c7921 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -694,7 +694,7 @@ aside #viewcontacts { margin: 30px 0px; } .ttright { - margin: 0px 0px 0px 5px; + margin: 0px 0px 0px 0px; } /** @@ -835,6 +835,7 @@ aside #viewcontacts { border: 0; text-decoration: none; float: right; + cursor: pointer; } #profile-jot-perms { float: right; @@ -1702,7 +1703,6 @@ div[id$="wrapper"] br { } - /** * register, settings & profile forms */ @@ -1767,21 +1767,25 @@ div[id$="wrapper"] br { /*margin: 3px 0px 0px 70px;*/ /*}*/ #profiles-menu-trigger { - width: 100px; + margin: 0px 0px 0px 25px; } .profile-listing { float: left; margin: 20px 20px 0px 0px; } .icon-profile-edit { - background: url("icons.png") no-repeat scroll -150px 0px transparent; - border: 0 none; + background: url("icons.png") -150px 0px no-repeat; + border: 0; + cursor: pointer; display: block; float: right; + width: 20px; height: 20px; margin: 0 0 -18px; + position: absolute; text-decoration: none; - cursor: pointer; + top: 18px; + right: 226px; } #profile-edit-links ul { margin: 20px 0; -- cgit v1.2.3 From 7684f63ecdfce560f24475630144f6058df15ca9 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 15 Mar 2012 16:38:26 -0700 Subject: track whether contact is a community page or not --- boot.php | 4 ++-- database.sql | 2 ++ include/items.php | 5 +++++ mod/dfrn_confirm.php | 6 ++++++ mod/dfrn_notify.php | 12 ++++++++---- update.php | 7 ++++++- 6 files changed, 29 insertions(+), 7 deletions(-) diff --git a/boot.php b/boot.php index 04f36093b..86da3cd2e 100755 --- a/boot.php +++ b/boot.php @@ -9,9 +9,9 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1281' ); +define ( 'FRIENDICA_VERSION', '2.3.1282' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1131 ); +define ( 'DB_UPDATE_VERSION', 1132 ); define ( 'EOL', "
    \r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index 35c257f02..5f69a1d00 100755 --- a/database.sql +++ b/database.sql @@ -92,6 +92,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( `blocked` tinyint(1) NOT NULL DEFAULT '1', `readonly` tinyint(1) NOT NULL DEFAULT '0', `writable` tinyint(1) NOT NULL DEFAULT '0', + `forum` tinyint(1) NOT NULL DEFAULT '0', `hidden` tinyint(1) NOT NULL DEFAULT '0', `pending` tinyint(1) NOT NULL DEFAULT '1', `rating` tinyint(1) NOT NULL DEFAULT '0', @@ -116,6 +117,7 @@ CREATE TABLE IF NOT EXISTS `contact` ( KEY `dfrn-id` (`dfrn-id`), KEY `blocked` (`blocked`), KEY `readonly` (`readonly`), + KEY `forum` (`forum`), KEY `hidden` (`hidden`), KEY `pending` (`pending`), KEY `closeness` (`closeness`) diff --git a/include/items.php b/include/items.php index 4b1523ff6..68acb45f9 100755 --- a/include/items.php +++ b/include/items.php @@ -1048,6 +1048,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { $ssl_val = intval(get_config('system','ssl_policy')); $ssl_policy = ''; + switch($ssl_val){ case SSL_POLICY_FULL: $ssl_policy = 'full'; @@ -1092,6 +1093,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { $challenge = hex2bin((string) $res->challenge); $dfrn_version = (float) (($res->dfrn_version) ? $res->dfrn_version : 2.0); $rino_allowed = ((intval($res->rino) === 1) ? 1 : 0); + $page = (($owner['page-flags'] == PAGE_COMMUNITY) ? 1 : 0); $final_dfrn_id = ''; @@ -1135,6 +1137,9 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { $postvars['ssl_policy'] = $ssl_policy; + if($page) + $postvars['page'] = '1'; + if($rino && $rino_allowed && (! $dissolve)) { $key = substr(random_string(),0,16); $data = bin2hex(aes_encrypt($postvars['data'],$key)); diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 0bc3ea7df..2f4fb7045 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -207,6 +207,9 @@ function dfrn_confirm_post(&$a,$handsfree = null) { if($duplex == 1) $params['duplex'] = 1; + if($user['page-flags'] == PAGE_COMMUNITY) + $params['page'] = 1; + logger('dfrn_confirm: Confirm: posting data to ' . $dfrn_confirm . ': ' . print_r($params,true), LOGGER_DATA); /** @@ -522,6 +525,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { $source_url = ((x($_POST,'source_url')) ? hex2bin($_POST['source_url']) : ''); $aes_key = ((x($_POST,'aes_key')) ? $_POST['aes_key'] : ''); $duplex = ((x($_POST,'duplex')) ? intval($_POST['duplex']) : 0 ); + $page = ((x($_POST,'page')) ? intval($_POST['page']) : 0 ); $version_id = ((x($_POST,'dfrn_version')) ? (float) $_POST['dfrn_version'] : 2.0); logger('dfrn_confirm: requestee contacted: ' . $node); @@ -677,6 +681,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { `blocked` = 0, `pending` = 0, `duplex` = %d, + `forum` = %d, `network` = '%s' WHERE `id` = %d LIMIT 1 ", dbesc($photos[0]), @@ -687,6 +692,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { dbesc(datetime_convert()), dbesc(datetime_convert()), intval($duplex), + intval($page), dbesc(NETWORK_DFRN), intval($dfrn_record) ); diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 3dbdc5b32..71860ac3b 100755 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -15,6 +15,7 @@ function dfrn_notify_post(&$a) { $dissolve = ((x($_POST,'dissolve')) ? intval($_POST['dissolve']) : 0); $perm = ((x($_POST,'perm')) ? notags(trim($_POST['perm'])) : 'r'); $ssl_policy = ((x($_POST,'ssl_policy')) ? notags(trim($_POST['ssl_policy'])): 'none'); + $page = ((x($_POST,'page')) ? intval($_POST['page']) : 0); $writable = (-1); if($dfrn_version >= 2.21) { @@ -87,12 +88,15 @@ function dfrn_notify_post(&$a) { $importer = $r[0]; - if(($writable != (-1)) && ($writable != $importer['writable'])) { - q("UPDATE `contact` SET `writable` = %d WHERE `id` = %d LIMIT 1", - intval($writable), + if((($writable != (-1)) && ($writable != $importer['writable'])) || ($importer['forum'] != $page)) { + q("UPDATE `contact` SET `writable` = %d, forum = %d WHERE `id` = %d LIMIT 1", + intval(($writable == (-1)) ? $importer['writable'] : $writable), + intval($page), intval($importer['id']) ); - $importer['writable'] = $writable; + if($writable != (-1)) + $importer['writable'] = $writable; + $importer['forum'] = $page; } // if contact's ssl policy changed, update our links diff --git a/update.php b/update.php index c29394b48..6a685a6ff 100755 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Fri, 16 Mar 2012 03:49:43 +0100 Subject: added icons to profile_side, fixes in css --- view/theme/diabook-blue/icons/com_side.png | Bin 0 -> 680 bytes view/theme/diabook-blue/icons/events.png | Bin 0 -> 663 bytes view/theme/diabook-blue/icons/home.png | Bin 0 -> 722 bytes view/theme/diabook-blue/icons/mess_side.png | Bin 0 -> 664 bytes view/theme/diabook-blue/icons/notes.png | Bin 0 -> 739 bytes view/theme/diabook-blue/icons/pubgroups.png | Bin 0 -> 710 bytes view/theme/diabook-blue/photo_album.tpl | 7 ++++ view/theme/diabook-blue/photo_top.tpl | 7 ++++ view/theme/diabook-blue/photo_view.tpl | 2 +- view/theme/diabook-blue/profile_side.tpl | 12 +++---- view/theme/diabook-blue/style.css | 52 +++++++++++++++++++++++++--- view/theme/diabook-blue/theme.php | 13 ++++--- view/theme/diabook/style.css | 7 ++-- view/theme/diabook/wall_item.tpl | 7 ++-- view/theme/diabook/wallwall_item.tpl | 11 +++--- 15 files changed, 86 insertions(+), 32 deletions(-) create mode 100644 view/theme/diabook-blue/icons/com_side.png create mode 100644 view/theme/diabook-blue/icons/events.png create mode 100644 view/theme/diabook-blue/icons/home.png create mode 100644 view/theme/diabook-blue/icons/mess_side.png create mode 100644 view/theme/diabook-blue/icons/notes.png create mode 100644 view/theme/diabook-blue/icons/pubgroups.png create mode 100755 view/theme/diabook-blue/photo_album.tpl create mode 100755 view/theme/diabook-blue/photo_top.tpl diff --git a/view/theme/diabook-blue/icons/com_side.png b/view/theme/diabook-blue/icons/com_side.png new file mode 100644 index 000000000..bc5969ef1 Binary files /dev/null and b/view/theme/diabook-blue/icons/com_side.png differ diff --git a/view/theme/diabook-blue/icons/events.png b/view/theme/diabook-blue/icons/events.png new file mode 100644 index 000000000..4a0b3f3f1 Binary files /dev/null and b/view/theme/diabook-blue/icons/events.png differ diff --git a/view/theme/diabook-blue/icons/home.png b/view/theme/diabook-blue/icons/home.png new file mode 100644 index 000000000..be47a48fc Binary files /dev/null and b/view/theme/diabook-blue/icons/home.png differ diff --git a/view/theme/diabook-blue/icons/mess_side.png b/view/theme/diabook-blue/icons/mess_side.png new file mode 100644 index 000000000..49ef896bc Binary files /dev/null and b/view/theme/diabook-blue/icons/mess_side.png differ diff --git a/view/theme/diabook-blue/icons/notes.png b/view/theme/diabook-blue/icons/notes.png new file mode 100644 index 000000000..7d4afca90 Binary files /dev/null and b/view/theme/diabook-blue/icons/notes.png differ diff --git a/view/theme/diabook-blue/icons/pubgroups.png b/view/theme/diabook-blue/icons/pubgroups.png new file mode 100644 index 000000000..acf857f32 Binary files /dev/null and b/view/theme/diabook-blue/icons/pubgroups.png differ diff --git a/view/theme/diabook-blue/photo_album.tpl b/view/theme/diabook-blue/photo_album.tpl new file mode 100755 index 000000000..7e6c2f666 --- /dev/null +++ b/view/theme/diabook-blue/photo_album.tpl @@ -0,0 +1,7 @@ + +
    diff --git a/view/theme/diabook-blue/photo_top.tpl b/view/theme/diabook-blue/photo_top.tpl new file mode 100755 index 000000000..98ac9c457 --- /dev/null +++ b/view/theme/diabook-blue/photo_top.tpl @@ -0,0 +1,7 @@ + + diff --git a/view/theme/diabook-blue/photo_view.tpl b/view/theme/diabook-blue/photo_view.tpl index 511fc73ac..902c2a0ed 100755 --- a/view/theme/diabook-blue/photo_view.tpl +++ b/view/theme/diabook-blue/photo_view.tpl @@ -12,7 +12,7 @@
    {{ if $prevlink }}{{ endif }} - + {{ if $nextlink }}{{ endif }}
    diff --git a/view/theme/diabook-blue/profile_side.tpl b/view/theme/diabook-blue/profile_side.tpl index 01da55ce1..a65677696 100644 --- a/view/theme/diabook-blue/profile_side.tpl +++ b/view/theme/diabook-blue/profile_side.tpl @@ -7,12 +7,12 @@
    diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index bdc79a350..738dde0e5 100644 --- a/view/theme/diabook-blue/style.css +++ b/view/theme/diabook-blue/style.css @@ -891,22 +891,47 @@ ul.menu-popup .empty { text-decoration: none; } .menu-profile-side{ - list-style: none; - padding-left: 16px; - min-height: 16px; + list-style: none; + padding-left: 0px; + min-height: 0px; } .menu-profile-list{ height: auto; overflow: auto; padding-top: 3px; padding-bottom: 3px; + padding-left: 16px; + min-height: 16px; + list-style: none; } .menu-profile-list:hover{ background: #EEE; } +.menu-profile-list-item{ + padding-left: 5px; + } .menu-profile-list-item:hover{ - text-decoration: none; + text-decoration: none; } +/*http://prothemedesign.com/circular-icons/*/ +.menu-profile-list.home{ + background: url("../../../view/theme/diabook-blue/icons/home.png") no-repeat; + } +.menu-profile-list.photos{ + background: url("../../../view/theme/diabook-blue/icons/mess_side.png") no-repeat; + } +.menu-profile-list.events{ + background: url("../../../view/theme/diabook-blue/icons/events.png") no-repeat; + } +.menu-profile-list.notes{ + background: url("../../../view/theme/diabook-blue/icons/notes.png") no-repeat; + } +.menu-profile-list.foren{ + background: url("../../../view/theme/diabook-blue/icons/pubgroups.png") no-repeat; + } +.menu-profile-list.com_side{ + background: url("../../../view/theme/diabook-blue/icons/com_side.png") no-repeat; + } /* aside */ aside { display: table-cell; @@ -1066,6 +1091,16 @@ aside #side-peoplefind-url { min-height: 16px; list-style: none; } +#side-bar-photos-albums li{ +list-style-type: disc; +} +#side-bar-photos-albums ul li{ + margin-left: 30px; + padding-left: 0px; + } +#side-bar-photos-albums ul li a{ + color: #1872A2; +} .widget .tool.selected { background: url("../../../view/theme/diabook-blue/icons/selected.png") no-repeat left center; } @@ -2207,6 +2242,9 @@ a.mail-list-link { .calendar { font-family: Courier, monospace; } +.calendar.eventcal a { + color: #1872A2; + } .today { font-weight: bold; color: #FF0000; @@ -2380,6 +2418,9 @@ float: left; padding-bottom: 20px; position: relative; margin: 0 10px 10px 0; + overflow: hidden; + float: left; + position: relative; } .photo-top-album-name { position: absolute; @@ -2388,6 +2429,9 @@ float: left; } .photo-top-album-link{ color: #1872A2; + } +.photo-top-album-img{ + } /*.photo-top-image-wrapper { position: relative; diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php index 9093ac2ca..f9128ea1f 100755 --- a/view/theme/diabook-blue/theme.php +++ b/view/theme/diabook-blue/theme.php @@ -11,9 +11,9 @@ $a->theme_info = array( 'extends' => 'diabook', ); -//profile_side - +//fancybox: provide $photo.href to photo_top.tpl to img in org. scale +//profile_side $nav['usermenu']=array(); $userinfo = null; @@ -110,10 +110,15 @@ $('html').click(function() { event.stopPropagation(); }); - $(function() { - $('a.lightbox').fancybox(); // Select all links with lightbox class + + + $(document).ready(function() { + $("a.fancy-photo").fancybox(); // Select all links with lightbox class + $("a.fancy-album").fancybox(); }); + + EOT; diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index b7568631f..437f323fa 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -485,9 +485,6 @@ code { #sidebar-group-list .tool:hover { background: #EEE; } -#sidebar-pages-list .tool:hover { - background: #EEE; -} .tool .label { float: left; } @@ -1337,14 +1334,14 @@ body .pageheader{ } .tag { /*background: url("../../../images/tag_b.png") repeat-x center left;*/ - color: #999; + color: #3465A4; padding-left: 3px; font-size: 12px; } .tag a { padding-right: 5px; /*background: url("../../../images/tag.png") no-repeat center right;*/ - color: #999; + color: #3465A4; } .wwto { position: absolute !important; diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index 321bbbe9e..ebe40fd4e 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -13,8 +13,7 @@ $item.name - menu + menu @@ -22,8 +21,7 @@ id="wall-item-photo-menu-button-$item.id">menu
    - $item.name + $item.name - {{ if $item.plink }}$item.ago{{ else }} $item.ago {{ endif }} {{ if $item.lock }} - $item.lock {{ endif }} @@ -97,4 +95,3 @@ class="wall-item-name$item.sparkle">$item.name
    $item.comment
    - diff --git a/view/theme/diabook/wallwall_item.tpl b/view/theme/diabook/wallwall_item.tpl index 05ed4cc82..e02e5a8be 100644 --- a/view/theme/diabook/wallwall_item.tpl +++ b/view/theme/diabook/wallwall_item.tpl @@ -18,8 +18,7 @@ $item.name - menu + menu @@ -27,10 +26,8 @@ id="wall-item-photo-menu-button-$item.id">menu
    - $item.name - $item.to $item.owner_name + $item.name + $item.to $item.owner_name $item.vwall -   {{ if $item.plink }}$item.ago{{ else }} $item.ago {{ endif }} {{ if $item.lock }} - $item.lock {{ endif }} @@ -103,4 +100,4 @@ id="wall-item-ownername-$item.id">$item.owner_name
    $item.comment -
    +
    \ No newline at end of file -- cgit v1.2.3 From 5a12383b78980d873f54ccbac2733d7267f7da36 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 15 Mar 2012 19:55:58 -0700 Subject: undo git stuffup --- view/theme/duepuntozero/style.css | 4 ++-- view/theme/duepuntozero/wall_item.tpl | 5 +++-- view/theme/duepuntozero/wallwall_item.tpl | 3 +++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index 10ddb0090..b79b00ef4 100755 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -2615,12 +2615,12 @@ aside input[type='text'] { margin-top: 10px; } -.body-tag { +.body-tag, .filesavetags { opacity: 0.5; filter:alpha(opacity=50); } -.body-tag:hover { +.body-tag:hover, .filesavetags:hover { opacity: 1.0 !important; filter:alpha(opacity=100) !important; } diff --git a/view/theme/duepuntozero/wall_item.tpl b/view/theme/duepuntozero/wall_item.tpl index 2c88fc598..e2db70a14 100755 --- a/view/theme/duepuntozero/wall_item.tpl +++ b/view/theme/duepuntozero/wall_item.tpl @@ -56,9 +56,10 @@ {{ if $item.star }} - {{ endif }} - + {{ if $item.filer }} + + {{ endif }}
    {{ if $item.drop.dropping }}{{ endif }}
    diff --git a/view/theme/duepuntozero/wallwall_item.tpl b/view/theme/duepuntozero/wallwall_item.tpl index 211906c93..420c0e08b 100755 --- a/view/theme/duepuntozero/wallwall_item.tpl +++ b/view/theme/duepuntozero/wallwall_item.tpl @@ -61,6 +61,9 @@ {{ endif }} + {{ if $item.filer }} + + {{ endif }}
    {{ if $item.drop.dropping }}{{ endif }} -- cgit v1.2.3 From be4e4dfb0d552857c683ee7f7bf5cf0a4bdfb686 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 15 Mar 2012 20:07:30 -0700 Subject: turn indexes back off (this is from an errant checkin a year or more ago) --- .htaccess | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.htaccess b/.htaccess index 5f9531a7e..28ac3dd80 100755 --- a/.htaccess +++ b/.htaccess @@ -1,4 +1,4 @@ -#Options -Indexes +Options -Indexes AddType application/x-java-archive .jar AddType audio/ogg .oga -- cgit v1.2.3 -- cgit v1.2.3 From 6bdb71f01c93c691a43caaf9686ce5ac0b687701 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 01:55:34 -0400 Subject: more changes in dispy-dark Signed-off-by: Simon L'nu --- view/theme/dispy-dark/style.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index 6ab0c7921..d1ec4efd7 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -1490,6 +1490,8 @@ div[id$="wrapper"] br { } #prvmail-subject { width: 100%; + color: #2e2f2e; + background: #eec; } #prvmail-submit-wrapper { margin-top: 10px; @@ -1803,6 +1805,10 @@ div[id$="wrapper"] br { background: #2e2f2e; color: #eec; } +#id_ssl_policy { + width: 374px; +} + /** * contacts selector -- cgit v1.2.3 From d965f73ef149e6baaf058987c146901e3cc16fa0 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 01:57:27 -0400 Subject: missing close double quote in mail_list.tpl Signed-off-by: Simon L'nu --- view/mail_list.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100755 => 100644 view/mail_list.tpl diff --git a/view/mail_list.tpl b/view/mail_list.tpl old mode 100755 new mode 100644 index b284ffb0e..22e35dec8 --- a/view/mail_list.tpl +++ b/view/mail_list.tpl @@ -1,6 +1,6 @@
    - $from_name + $from_name
    $from_name
    -- cgit v1.2.3 From be1bd9ff4e725f7e60b05acd415aee892e97f956 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 05:19:29 -0700 Subject: notification for disapora comments --- include/diaspora.php | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/include/diaspora.php b/include/diaspora.php index dca857a19..19bba5216 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1159,6 +1159,48 @@ function diaspora_comment($importer,$xml,$msg) { proc_run('php','include/notifier.php','comment',$message_id); } + + $myconv = q("SELECT `author-link`, `author-avatar`, `parent` FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `parent` != 0 ", + dbesc($parent_item['uri']), + intval($importer['uid']) + ); + + if(count($myconv)) { + $importer_url = $a->get_baseurl() . '/profile/' . $importer['nickname']; + + foreach($myconv as $conv) { + + // now if we find a match, it means we're in this conversation + + if(! link_compare($conv['author-link'],$importer_url)) + continue; + + require_once('include/enotify.php'); + + $conv_parent = $conv['parent']; + + notification(array( + 'type' => NOTIFY_COMMENT, + 'notify_flags' => $importer['notify-flags'], + 'language' => $importer['language'], + 'to_name' => $importer['username'], + 'to_email' => $importer['email'], + 'uid' => $importer['uid'], + 'item' => $datarray, + 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id, + 'source_name' => $datarray['author-name'], + 'source_link' => $datarray['author-link'], + 'source_photo' => $datarray['author-avatar'], + 'verb' => ACTIVITY_POST, + 'otype' => 'item', + 'parent' => $conv_parent, + + )); + + // only send one notification + break; + } + } return; } -- cgit v1.2.3 From 805087af678f922ad75535fa8dbe0fc86d9cd566 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 05:41:29 -0700 Subject: whitespace --- include/items.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/items.php b/include/items.php index 68acb45f9..5e1fec557 100755 --- a/include/items.php +++ b/include/items.php @@ -2026,6 +2026,7 @@ function local_delivery($importer,$data) { if(($item['verb'] === ACTIVITY_TAG) && ($item['object-type'] === ACTVITY_OBJ_TAGTERM)) { $xo = parse_xml_string($item['object'],false); $xt = parse_xml_string($item['target'],false); + if($xt->type === ACTIVITY_OBJ_NOTE) { $i = q("select * from `item` where uri = '%s' and uid = %d limit 1", dbesc($xt->id), -- cgit v1.2.3 From 224dfa848bf2659ba038b6e519692d3755eb7bed Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 05:51:04 -0700 Subject: bug #335 network search broken after new ssl policy settings --- include/text.php | 2 +- mod/network.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/text.php b/include/text.php index d34fd7fbe..cdf82ca87 100644 --- a/include/text.php +++ b/include/text.php @@ -638,7 +638,7 @@ if(! function_exists('search')) { function search($s,$id='search-box',$url='/search',$save = false) { $a = get_app(); $o = '
    '; - $o .= ''; + $o .= ''; $o .= ''; $o .= ''; if($save) diff --git a/mod/network.php b/mod/network.php index d0f1733f4..9ec8c23b5 100755 --- a/mod/network.php +++ b/mod/network.php @@ -90,7 +90,7 @@ function saved_searches($search) { $o = replace_macros($tpl, array( '$title' => t('Saved Searches'), '$add' => t('add'), - '$searchbox' => search($search,'netsearch-box',$a->get_baseurl(true) . $srchurl,true), + '$searchbox' => search($search,'netsearch-box',$srchurl,true), '$saved' => $saved, )); -- cgit v1.2.3 From 28f941193d75ca12f4cb2a38a1c60e60ad10f2a6 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 06:02:26 -0700 Subject: syntax error from pasted text, remove ^M's --- mod/item.php | 192 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 96 insertions(+), 96 deletions(-) diff --git a/mod/item.php b/mod/item.php index 98cfb4338..07b4bfef7 100755 --- a/mod/item.php +++ b/mod/item.php @@ -832,129 +832,129 @@ function item_content(&$a) { */ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) { //is it a hash tag? - if(strpos($tag,'#') === 0) { + if(strpos($tag,'#') === 0) { //if the tag is replaced... if(strpos($tag,'[url=')) - //...do nothing - continue; - //base tag has the tags name only - $basetag = str_replace('_',' ',substr($tag,1)); + //...do nothing + return; + //base tag has the tags name only + $basetag = str_replace('_',' ',substr($tag,1)); //create text for link $newtag = '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]'; - //replace tag by the link - $body = str_replace($tag, $newtag, $body); + //replace tag by the link + $body = str_replace($tag, $newtag, $body); - //is the link already in str_tags? - if(! stristr($str_tags,$newtag)) { + //is the link already in str_tags? + if(! stristr($str_tags,$newtag)) { //append or set str_tags - if(strlen($str_tags)) - $str_tags .= ','; - $str_tags .= $newtag; - } - return; + if(strlen($str_tags)) + $str_tags .= ','; + $str_tags .= $newtag; + } + return; } - //is it a person tag? - if(strpos($tag,'@') === 0) { + //is it a person tag? + if(strpos($tag,'@') === 0) { //is it already replaced? - if(strpos($tag,'[url=')) - continue; - $stat = false; + if(strpos($tag,'[url=')) + continue; + $stat = false; //get the person's name $name = substr($tag,1); - //is it a link or a full dfrn address? - if((strpos($name,'@')) || (strpos($name,'http://'))) { - $newname = $name; + //is it a link or a full dfrn address? + if((strpos($name,'@')) || (strpos($name,'http://'))) { + $newname = $name; //get the profile links - $links = @lrdd($name); - if(count($links)) { + $links = @lrdd($name); + if(count($links)) { //for all links, collect how is to inform and how's profile is to link - foreach($links as $link) { - if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page') - $profile = $link['@attributes']['href']; - if($link['@attributes']['rel'] === 'salmon') { - if(strlen($inform)) - $inform .= ','; - $inform .= 'url:' . str_replace(',','%2c',$link['@attributes']['href']); - } - } - } - } else { //if it is a name rather than an address - $newname = $name; - $alias = ''; + foreach($links as $link) { + if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page') + $profile = $link['@attributes']['href']; + if($link['@attributes']['rel'] === 'salmon') { + if(strlen($inform)) + $inform .= ','; + $inform .= 'url:' . str_replace(',','%2c',$link['@attributes']['href']); + } + } + } + } else { //if it is a name rather than an address + $newname = $name; + $alias = ''; $tagcid = 0; - //is it some generated name? - if(strrpos($newname,'+')) { + //is it some generated name? + if(strrpos($newname,'+')) { //get the id - $tagcid = intval(substr($newname,strrpos($newname,'+') + 1)); + $tagcid = intval(substr($newname,strrpos($newname,'+') + 1)); //remove the next word from tag's name - if(strpos($name,' ')) { + if(strpos($name,' ')) { $name = substr($name,0,strpos($name,' ')); - } + } } if($tagcid) { //if there was an id - //select contact with that id from the logged in user's contact list - $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", - intval($tagcid), + //select contact with that id from the logged in user's contact list + $r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1", + intval($tagcid), intval($profile_uid) - ); + ); } elseif(strstr($name,'_') || strstr($name,' ')) { //no id - //get the real name - $newname = str_replace('_',' ',$name); + //get the real name + $newname = str_replace('_',' ',$name); //select someone from this user's contacts by name - $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1", - dbesc($newname), - intval($profile_uid) - ); + $r = q("SELECT * FROM `contact` WHERE `name` = '%s' AND `uid` = %d LIMIT 1", + dbesc($newname), + intval($profile_uid) + ); } else { - //select someone by attag or nick and the name passed in - $r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1", - dbesc($name), - dbesc($name), - intval($profile_uid) - ); + //select someone by attag or nick and the name passed in + $r = q("SELECT * FROM `contact` WHERE `attag` = '%s' OR `nick` = '%s' AND `uid` = %d ORDER BY `attag` DESC LIMIT 1", + dbesc($name), + dbesc($name), + intval($profile_uid) + ); } - //$r is set, if someone could be selected - if(count($r)) { + //$r is set, if someone could be selected + if(count($r)) { $profile = $r[0]['url']; - //set newname to nick, find alias - if($r[0]['network'] === 'stat') { - $newname = $r[0]['nick']; - $stat = true; - if($r[0]['alias']) - $alias = $r[0]['alias']; - } - else - $newname = $r[0]['name']; + //set newname to nick, find alias + if($r[0]['network'] === 'stat') { + $newname = $r[0]['nick']; + $stat = true; + if($r[0]['alias']) + $alias = $r[0]['alias']; + } + else + $newname = $r[0]['name']; //add person's id to $inform - if(strlen($inform)) - $inform .= ','; - $inform .= 'cid:' . $r[0]['id']; - } + if(strlen($inform)) + $inform .= ','; + $inform .= 'cid:' . $r[0]['id']; + } } - //if there is an url for this persons profile - if(isset($profile)) { + //if there is an url for this persons profile + if(isset($profile)) { //create profile link - $profile = str_replace(',','%2c',$profile); - $newtag = '@[url=' . $profile . ']' . $newname . '[/url]'; - $body = str_replace('@' . $name, $newtag, $body); + $profile = str_replace(',','%2c',$profile); + $newtag = '@[url=' . $profile . ']' . $newname . '[/url]'; + $body = str_replace('@' . $name, $newtag, $body); //append tag to str_tags - if(! stristr($str_tags,$newtag)) { - if(strlen($str_tags)) - $str_tags .= ','; - $str_tags .= $newtag; - } - - // Status.Net seems to require the numeric ID URL in a mention if the person isn't - // subscribed to you. But the nickname URL is OK if they are. Grrr. We'll tag both. - - if(strlen($alias)) { - $newtag = '@[url=' . $alias . ']' . $newname . '[/url]'; - if(! stristr($str_tags,$newtag)) { - if(strlen($str_tags)) - $str_tags .= ','; - $str_tags .= $newtag; - } - } - } + if(! stristr($str_tags,$newtag)) { + if(strlen($str_tags)) + $str_tags .= ','; + $str_tags .= $newtag; + } + + // Status.Net seems to require the numeric ID URL in a mention if the person isn't + // subscribed to you. But the nickname URL is OK if they are. Grrr. We'll tag both. + + if(strlen($alias)) { + $newtag = '@[url=' . $alias . ']' . $newname . '[/url]'; + if(! stristr($str_tags,$newtag)) { + if(strlen($str_tags)) + $str_tags .= ','; + $str_tags .= $newtag; + } + } + } } } -- cgit v1.2.3 From 7b15f27ba48f5a1b0e24290379e2524796776803 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 13:31:59 -0400 Subject: weee, dispys get another update Signed-off-by: Simon L'nu --- view/theme/dispy-dark/style.css | 53 +++--- view/theme/dispy-dark/theme.php | 8 +- view/theme/dispy/contact_template.tpl | 2 + view/theme/dispy/group_side.tpl | 6 +- view/theme/dispy/head.tpl | 19 -- view/theme/dispy/jot-header.tpl | 14 ++ view/theme/dispy/nav.tpl | 16 +- view/theme/dispy/nets.tpl | 2 +- view/theme/dispy/photo_view.tpl | 2 +- view/theme/dispy/profile_vcard.tpl | 30 +++- view/theme/dispy/saved_searches_aside.tpl | 2 +- view/theme/dispy/style.css | 282 ++++++++++++++++++------------ view/theme/dispy/theme.php | 41 +++-- view/theme/dispy/wall_item.tpl | 5 +- view/theme/dispy/wallwall_item.tpl | 7 +- 15 files changed, 294 insertions(+), 195 deletions(-) mode change 100755 => 100644 view/theme/dispy/nets.tpl mode change 100755 => 100644 view/theme/dispy/photo_view.tpl mode change 100755 => 100644 view/theme/dispy/saved_searches_aside.tpl diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index d1ec4efd7..b4aefbbf2 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -123,9 +123,6 @@ a { text-decoration: none; margin-bottom: 1px; } -/*a:hover { */ -/* text-decoration: none;*/ -/*}*/ a:hover img { text-decoration: none; } @@ -778,6 +775,15 @@ aside #viewcontacts { #profile-jot-text_ifr { width:99.900002% !important; } +[id$="jot-text_ifr"] { + width: 99.900002% !important; + color: #2e2f2e; + background: #eec; +} +[id$="jot-text_ifr"] .mceContentBody { + color: #2e2f2e; + background: #eec; +} #profile-attach-wrapper, #profile-audio-wrapper, #profile-link-wrapper, @@ -1527,7 +1533,6 @@ div[id$="wrapper"] br { } .mail-list-subject { font-size: 1.2em; - font-weight: bold; } .mail-list-delete-wrapper { float: right; @@ -1751,23 +1756,23 @@ div[id$="wrapper"] br { margin: 30px 0px; } .profile-edit-side-div { - /*background: #111;*/ - /*border-radius: 5px 5px 0px 0px;*/ - /*margin: 0px 0px 0px 0px;*/ - /*width: 100px;*/ - /*height: 25px;*/ - /*position: absolute;*/ + /*background: #111; + border-radius: 5px 5px 0px 0px; + margin: 0px 0px 0px 0px; + width: 100px; + height: 25px; + position: absolute;*/ display: none; - /*left: 35%;*/ - /*top: 41%;*/ - /*cursor: pointer;*/ -} -/*.profile-edit-side-div:hover {*/ - /*display: block;*/ -/*}*/ -/*.profile-edit-side-link {*/ - /*margin: 3px 0px 0px 70px;*/ -/*}*/ + /*left: 35%; + top: 41%; + cursor: pointer;*/ +} +/*.profile-edit-side-div:hover { + display: block; +} +.profile-edit-side-link { + margin: 3px 0px 0px 70px; +}*/ #profiles-menu-trigger { margin: 0px 0px 0px 25px; } @@ -2123,12 +2128,12 @@ div[id$="wrapper"] br { border-bottom: 1px solid #000; } #adminpage dt { - width: 200px; + width: 250px; float: left; font-weight: bold; } #adminpage dd { - margin-left: 200px; + margin-left: 250px; } #adminpage h3 { border-bottom:1px solid #ccc; @@ -2590,8 +2595,8 @@ footer { margin-top: 30px; overflow: auto; } -/*#acl-list-content {*/ -/*}*/ +/*#acl-list-content { +}*/ .acl-list-item { border: 1px solid #eec; display: block; diff --git a/view/theme/dispy-dark/theme.php b/view/theme/dispy-dark/theme.php index c0611ce83..0134b1f91 100644 --- a/view/theme/dispy-dark/theme.php +++ b/view/theme/dispy-dark/theme.php @@ -64,7 +64,7 @@ $(document).ready(function() { $('#drop-' + id).addClass('iconspacer'); } ); - // notifications + // click outside notifications menu closes it $('html').click(function() { $('#nav-notifications-linkmenu').removeClass('selected'); document.getElementById("nav-notifications-menu").style.display = "none"; @@ -74,6 +74,7 @@ $(document).ready(function() { event.stopPropagation(); }); + // main function in toolbar functioning function toggleToolbar() { if ( $('#nav-floater').is(':visible') ) { $('#nav-floater').slideUp('fast'); @@ -87,15 +88,20 @@ $(document).ready(function() { }); } }; + // our trigger for the toolbar button $('.floaterflip').click(function() { toggleToolbar(); return false; }); + // (attempt) to change the text colour in a top post $('#profile-jot-text').focusin(function() { $(this).css({color: '#eec'}); }); + // make auto-complete work in more places + $(".wall-item-comment-wrapper textarea").contact_autocomplete(baseurl+"/acl"); + /* $('#profile-photo-wrapper').mouseover(function() { $('.profile-edit-side-div').css({display: 'block'}); }).mouseout(function() { diff --git a/view/theme/dispy/contact_template.tpl b/view/theme/dispy/contact_template.tpl index fbf354b47..04968bd07 100644 --- a/view/theme/dispy/contact_template.tpl +++ b/view/theme/dispy/contact_template.tpl @@ -20,9 +20,11 @@
    $contact.name
    +{{ if $contact.alt_text }}
    $contact.alt_text
    {{ endif }}
    Profile URL
    $contact.network
    + diff --git a/view/theme/dispy/group_side.tpl b/view/theme/dispy/group_side.tpl index 516d70d5b..10ecec2e8 100644 --- a/view/theme/dispy/group_side.tpl +++ b/view/theme/dispy/group_side.tpl @@ -1,5 +1,5 @@ -
    -

    $title

    +
    +

    $title

    +
    $item.name -- cgit v1.2.3 From 75823c23539fd009a6575dc125258afa7ce2bbc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Fri, 16 Mar 2012 17:45:07 +0000 Subject: Use tabindex to enable easy navigation in the dialog to write private mails; Recipient -> Subject -> Text field (tabindex has to be set to the IFRAME element after TinyMCE started) -> Send button --- include/acl_selectors.php | 14 ++++++++------ mod/message.php | 2 +- view/msg-header.tpl | 9 ++++++++- view/prv_message.tpl | 6 +++--- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/include/acl_selectors.php b/include/acl_selectors.php index 67d8cebde..a5f5aff53 100755 --- a/include/acl_selectors.php +++ b/include/acl_selectors.php @@ -113,11 +113,13 @@ function contact_selector($selname, $selclass, $preselected = false, $options) { $str_nets = implode(',',$x['networks']); $sql_extra .= " AND `network` IN ( $str_nets ) "; } + + $tabindex = (x($options, 'tabindex') ? "tabindex=\"" . $options["tabindex"] . "\"" : ""); if($x['single']) - $o .= "\r\n"; else - $o .= "\r\n"; $r = q("SELECT `id`, `name`, `url`, `network` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != '' @@ -156,7 +158,7 @@ function contact_selector($selname, $selclass, $preselected = false, $options) { -function contact_select($selname, $selclass, $preselected = false, $size = 4, $privmail = false, $celeb = false, $privatenet = false) { +function contact_select($selname, $selclass, $preselected = false, $size = 4, $privmail = false, $celeb = false, $privatenet = false, $tabindex = null) { $a = get_app(); @@ -178,12 +180,12 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p $sql_extra .= " AND `network` IN ( 'dfrn', 'mail', 'face', 'dspr' ) "; } - + $tabindex = ($tabindex > 0 ? "tabindex=\"$tabindex\"" : ""); if($privmail) - $o .= "\r\n"; else - $o .= "\r\n"; $r = q("SELECT `id`, `name`, `url`, `network` FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 AND `pending` = 0 AND `notify` != '' diff --git a/mod/message.php b/mod/message.php index 55e313776..0907abd77 100755 --- a/mod/message.php +++ b/mod/message.php @@ -154,7 +154,7 @@ function message_content(&$a) { $preselect = (isset($a->argv[2])?array($a->argv[2]):false); - $select = contact_select('messageto','message-to-select', $preselect, 4, true); + $select = contact_select('messageto','message-to-select', $preselect, 4, true, false, false, 10); $tpl = get_markup_template('prv_message.tpl'); $o .= replace_macros($tpl,array( '$header' => t('Send Private Message'), diff --git a/view/msg-header.tpl b/view/msg-header.tpl index b5c78345a..1f8650bfe 100755 --- a/view/msg-header.tpl +++ b/view/msg-header.tpl @@ -30,8 +30,15 @@ if(plaintext != 'none') { setup : function(ed) { ed.onInit.add(function(ed) { ed.pasteAsPlainText = true; + var editorId = ed.editorId; + var textarea = $('#'+editorId); + console.log(textarea); + if (typeof(textarea.attr('tabindex')) != "undefined") { + $('#'+editorId+'_ifr').attr('tabindex', textarea.attr('tabindex')); + textarea.attr('tabindex', null); + } }); - } + }, }); } diff --git a/view/prv_message.tpl b/view/prv_message.tpl index 4b904cbcd..2ce07ce6f 100755 --- a/view/prv_message.tpl +++ b/view/prv_message.tpl @@ -10,14 +10,14 @@ $parent $select
    $subject
    - +
    $yourmessage
    - +
    - +
    -- cgit v1.2.3 From 27054964feba44e82589fb6b8c464c59b9420feb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Fri, 16 Mar 2012 17:46:26 +0000 Subject: Forgot to remove a debug line --- view/msg-header.tpl | 1 - 1 file changed, 1 deletion(-) diff --git a/view/msg-header.tpl b/view/msg-header.tpl index 1f8650bfe..b1fcefd24 100755 --- a/view/msg-header.tpl +++ b/view/msg-header.tpl @@ -32,7 +32,6 @@ if(plaintext != 'none') { ed.pasteAsPlainText = true; var editorId = ed.editorId; var textarea = $('#'+editorId); - console.log(textarea); if (typeof(textarea.attr('tabindex')) != "undefined") { $('#'+editorId+'_ifr').attr('tabindex', textarea.attr('tabindex')); textarea.attr('tabindex', null); -- cgit v1.2.3 From 90bb32ab7393687d46e198f94d181c830f881def Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Fri, 16 Mar 2012 17:47:40 +0000 Subject: Bugfix of old IEs --- view/msg-header.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/msg-header.tpl b/view/msg-header.tpl index b1fcefd24..098333893 100755 --- a/view/msg-header.tpl +++ b/view/msg-header.tpl @@ -37,7 +37,7 @@ if(plaintext != 'none') { textarea.attr('tabindex', null); } }); - }, + } }); } -- cgit v1.2.3 -- cgit v1.2.3 From 91fee866b7f870b66d770c7c4e6db0afd874de33 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 16:43:34 -0400 Subject: make profiles-menu disappear when clicked outside it Signed-off-by: Simon L'nu --- view/theme/dispy-dark/theme.php | 9 +++++++++ view/theme/dispy/theme.php | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/view/theme/dispy-dark/theme.php b/view/theme/dispy-dark/theme.php index 0134b1f91..b57971db9 100644 --- a/view/theme/dispy-dark/theme.php +++ b/view/theme/dispy-dark/theme.php @@ -73,6 +73,15 @@ $(document).ready(function() { $('#nav-notifications-linkmenu').click(function(event) { event.stopPropagation(); }); + // click outside profiles menu closes it + $('html').click(function() { + $('#profiles-menu-trigger').removeClass('selected'); + document.getElementById("profiles-menu").style.display = "none"; + }); + + $('#profiles-menu').click(function(event) { + event.stopPropagation(); + }); // main function in toolbar functioning function toggleToolbar() { diff --git a/view/theme/dispy/theme.php b/view/theme/dispy/theme.php index ac97948a3..9f0fcba82 100644 --- a/view/theme/dispy/theme.php +++ b/view/theme/dispy/theme.php @@ -73,6 +73,15 @@ $(document).ready(function() { $('#nav-notifications-linkmenu').click(function(event) { event.stopPropagation(); }); + // click outside profiles menu closes it + $('html').click(function() { + $('#profiles-menu-trigger').removeClass('selected'); + document.getElementById("profiles-menu").style.display = "none"; + }); + + $('#profiles-menu').click(function(event) { + event.stopPropagation(); + }); // main function in toolbar functioning function toggleToolbar() { -- cgit v1.2.3 From 58940175e173c04c9bfa3498af40c65f6514a9ce Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 15:07:45 -0700 Subject: wrong link in d* comment notifications --- boot.php | 2 +- include/diaspora.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/boot.php b/boot.php index 86da3cd2e..322340e5d 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1282' ); +define ( 'FRIENDICA_VERSION', '2.3.1283' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1132 ); diff --git a/include/diaspora.php b/include/diaspora.php index 19bba5216..1b5af42cd 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1187,7 +1187,7 @@ function diaspora_comment($importer,$xml,$msg) { 'to_email' => $importer['email'], 'uid' => $importer['uid'], 'item' => $datarray, - 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $posted_id, + 'link' => $a->get_baseurl() . '/display/' . $importer['nickname'] . '/' . $message_id, 'source_name' => $datarray['author-name'], 'source_link' => $datarray['author-link'], 'source_photo' => $datarray['author-avatar'], -- cgit v1.2.3 From 949c6d47b5b9a3e796cdf6dff79d6d532f4a3159 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 15:19:38 -0700 Subject: add "send pm" link to photo dropdown for Diaspora contacts --- include/conversation.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/conversation.php b/include/conversation.php index 88ecf502b..8ca484c9e 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -779,6 +779,17 @@ function item_photo_menu($item){ if(($cid) && (! $item['self'])) { $contact_url = $a->get_baseurl($ssl_state) . '/contacts/' . $cid; $posts_link = $a->get_baseurl($ssl_state) . '/network/?cid=' . $cid; + + $clean_url = normalise_link($item['author-link']); + + if((local_user()) && (local_user() == $item['uid'])) { + if(isset($a->contacts) && x($a->contacts,$clean_url)) { + if($a->contacts[$clean_url]['network'] === NETWORK_DIASPORA) { + $pm_url = $a->get_baseurl($ssl_state) . '/message/new/' . $cid; + } + } + } + } $menu = Array( -- cgit v1.2.3 -- cgit v1.2.3 From 82f2bfea5bbf7c35450eb8fe9ee119e0b00d3d61 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 16:05:16 -0700 Subject: convert boolean or int settings to strings to work around issues with template processing --- mod/settings.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/mod/settings.php b/mod/settings.php index f694b5840..3a8ad29d2 100755 --- a/mod/settings.php +++ b/mod/settings.php @@ -652,20 +652,20 @@ function settings_content(&$a) { $blocktags = $a->user['blocktags']; $expire_items = get_pconfig(local_user(), 'expire','items'); - $expire_items = (($expire_items===false)?1:$expire_items); // default if not set: 1 + $expire_items = (($expire_items===false)? '1' : $expire_items); // default if not set: 1 $expire_notes = get_pconfig(local_user(), 'expire','notes'); - $expire_notes = (($expire_notes===false)?1:$expire_notes); // default if not set: 1 + $expire_notes = (($expire_notes===false)? '1' : $expire_notes); // default if not set: 1 $expire_starred = get_pconfig(local_user(), 'expire','starred'); - $expire_starred = (($expire_starred===false)?1:$expire_starred); // default if not set: 1 + $expire_starred = (($expire_starred===false)? '1' : $expire_starred); // default if not set: 1 $expire_photos = get_pconfig(local_user(), 'expire','photos'); - $expire_photos = (($expire_photos===false)?0:$expire_photos); // default if not set: 0 + $expire_photos = (($expire_photos===false)? '0' : $expire_photos); // default if not set: 0 $suggestme = get_pconfig(local_user(), 'system','suggestme'); - $suggestme = (($suggestme===false)?0:$suggestme); // default if not set: 0 + $suggestme = (($suggestme===false)? '0': $suggestme); // default if not set: 0 $browser_update = intval(get_pconfig(local_user(), 'system','update_interval')); $browser_update = (($browser_update == 0) ? 40 : $browser_update / 1000); // default if not set: 40 seconds @@ -736,13 +736,13 @@ function settings_content(&$a) { )); $blockwall = replace_macros($opt_tpl,array( - '$field' => array('blockwall', t('Allow friends to post to your profile page?'), ! $a->user['blockwall'], '', array(t('No'),t('Yes'))), + '$field' => array('blockwall', t('Allow friends to post to your profile page?'), (intval($a->user['blockwall']) ? '0' : '1'), '', array(t('No'),t('Yes'))), )); $blocktags = replace_macros($opt_tpl,array( - '$field' => array('blocktags', t('Allow friends to tag your posts?'), ! $a->user['blocktags'], '', array(t('No'),t('Yes'))), + '$field' => array('blocktags', t('Allow friends to tag your posts?'), (intval($a->user['blocktags']) ? '0' : '1'), '', array(t('No'),t('Yes'))), )); -- cgit v1.2.3 From 368d93625dc7ac206b3dbb85af15dc90f593fcd7 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 20:29:02 -0400 Subject: make auto-complete in darkzero-NS. other themes can use this easily. might need to edit the id it hooks into Signed-off-by: Simon L'nu --- view/theme/darkzero-NS/theme.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/view/theme/darkzero-NS/theme.php b/view/theme/darkzero-NS/theme.php index 2d3e4fd56..3598e34f2 100755 --- a/view/theme/darkzero-NS/theme.php +++ b/view/theme/darkzero-NS/theme.php @@ -52,6 +52,9 @@ $('.savedsearchterm').hover( $('#drop-' + id).removeClass('icon');$('#drop-' + id).removeClass('drophide'); $('#drop-' + id).addClass('iconspacer');} ); + // make auto-complete work in more places + $(".wall-item-comment-wrapper textarea").contact_autocomplete(baseurl+"/acl"); + }); -- cgit v1.2.3 -- cgit v1.2.3 From 49540fb958376d067f44a9274f8edeb80f10da3a Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 21:20:23 -0400 Subject: make auto-complete work in more places Signed-off-by: Simon L'nu --- mod/display.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mod/display.php b/mod/display.php index f428149e8..81ed174ac 100755 --- a/mod/display.php +++ b/mod/display.php @@ -16,7 +16,15 @@ function display_content(&$a) { $o = '
    ' . "\r\n"; - $a->page['htmlhead'] .= ''; + $a->page['htmlhead'] .= << +$(document).ready(function() { + $(".comment-edit-wrapper textarea").contact_autocomplete(baseurl+"/acl"); + // make auto-complete work in more places + $(".wall-item-comment-wrapper textarea").contact_autocomplete(baseurl+"/acl"); +}); + +EOT; $nick = (($a->argc > 1) ? $a->argv[1] : ''); -- cgit v1.2.3 From 75883b196ed222b9972c87ce00b8e7c2ab29c05e Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 21:23:24 -0400 Subject: remove auto-complete from darkzero-NS, dispys, since the comment one is now global Signed-off-by: Simon L'nu --- view/theme/darkzero-NS/theme.php | 3 --- view/theme/dispy/theme.php | 3 --- 2 files changed, 6 deletions(-) diff --git a/view/theme/darkzero-NS/theme.php b/view/theme/darkzero-NS/theme.php index 3598e34f2..2d3e4fd56 100755 --- a/view/theme/darkzero-NS/theme.php +++ b/view/theme/darkzero-NS/theme.php @@ -52,9 +52,6 @@ $('.savedsearchterm').hover( $('#drop-' + id).removeClass('icon');$('#drop-' + id).removeClass('drophide'); $('#drop-' + id).addClass('iconspacer');} ); - // make auto-complete work in more places - $(".wall-item-comment-wrapper textarea").contact_autocomplete(baseurl+"/acl"); - }); diff --git a/view/theme/dispy/theme.php b/view/theme/dispy/theme.php index 9f0fcba82..26e07b1f7 100644 --- a/view/theme/dispy/theme.php +++ b/view/theme/dispy/theme.php @@ -108,9 +108,6 @@ $(document).ready(function() { $(this).css({color: '#eec'}); }); - // make auto-complete work in more places - $(".wall-item-comment-wrapper textarea").contact_autocomplete(baseurl+"/acl"); - /* $('#profile-photo-wrapper').mouseover(function() { $('.profile-edit-side-div').css({display: 'block'}); }).mouseout(function() { -- cgit v1.2.3 -- cgit v1.2.3 From 87fdae2dd8bdb9e01ce3d98f6ea94d83664cb4c2 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sat, 17 Mar 2012 01:55:40 -0400 Subject: [fix] whitespace in photo_view and like_noshare. dispy-dark clean up Signed-off-by: Simon L'nu --- view/like_noshare.tpl | 8 ++++---- view/photo_view.tpl | 2 +- view/theme/dispy-dark/photo_view.tpl | 13 +++++-------- view/theme/dispy-dark/theme.php | 3 --- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/view/like_noshare.tpl b/view/like_noshare.tpl index 2c467c3c2..2651ea1f8 100755 --- a/view/like_noshare.tpl +++ b/view/like_noshare.tpl @@ -1,5 +1,5 @@ + + + +
    diff --git a/view/photo_view.tpl b/view/photo_view.tpl index 5dbcabadf..732caf690 100755 --- a/view/photo_view.tpl +++ b/view/photo_view.tpl @@ -14,7 +14,7 @@
    {{ if $nextlink }}{{ endif }}
    -
    $desc
    +
    $desc
    {{ if $tags }}
    $tags.0
    $tags.1
    diff --git a/view/theme/dispy-dark/photo_view.tpl b/view/theme/dispy-dark/photo_view.tpl index f1209ec58..732caf690 100644 --- a/view/theme/dispy-dark/photo_view.tpl +++ b/view/theme/dispy-dark/photo_view.tpl @@ -4,18 +4,15 @@ - -
    - {{ if $prevlink }}{{ endif }} - - {{ if $nextlink }}{{ endif }} +{{ if $lock }} | $lock {{ endif }}
    +{{ if $prevlink }}{{ endif }} +
    +{{ if $nextlink }}{{ endif }}
    $desc
    {{ if $tags }} diff --git a/view/theme/dispy-dark/theme.php b/view/theme/dispy-dark/theme.php index b57971db9..700136173 100644 --- a/view/theme/dispy-dark/theme.php +++ b/view/theme/dispy-dark/theme.php @@ -108,9 +108,6 @@ $(document).ready(function() { $(this).css({color: '#eec'}); }); - // make auto-complete work in more places - $(".wall-item-comment-wrapper textarea").contact_autocomplete(baseurl+"/acl"); - /* $('#profile-photo-wrapper').mouseover(function() { $('.profile-edit-side-div').css({display: 'block'}); }).mouseout(function() { -- cgit v1.2.3 From 511d8a30a05f76a08582f2d7a9ccd78dbd744c57 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 23:51:49 -0700 Subject: scheme checking for webservers without $_SERVER['HTTPS'] --- boot.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 322340e5d..836900fc4 100755 --- a/boot.php +++ b/boot.php @@ -286,7 +286,12 @@ class App { startup(); - $this->scheme = ((isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'])) ? 'https' : 'http' ); + $this->scheme = 'http'; + if(x($_SERVER,'HTTPS') && $_SERVER['HTTPS']) + $this->scheme = 'https'; + elseif(x($_SERVER,'SERVER_PORT') && (intval($_SERVER['SERVER_PORT']) == 443)) + $this->scheme = 'https'; + if(x($_SERVER,'SERVER_NAME')) { $this->hostname = $_SERVER['SERVER_NAME']; -- cgit v1.2.3 From 057a142b8cd01cd8ab6212e9d958989c82dfccc3 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 17 Mar 2012 00:08:52 -0700 Subject: cut/paste error --- mod/item.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/item.php b/mod/item.php index 07b4bfef7..fe570075f 100755 --- a/mod/item.php +++ b/mod/item.php @@ -857,7 +857,7 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) { if(strpos($tag,'@') === 0) { //is it already replaced? if(strpos($tag,'[url=')) - continue; + return; $stat = false; //get the person's name $name = substr($tag,1); -- cgit v1.2.3 -- cgit v1.2.3 From e0e008fb8d894c7fe56fbb88fa96224c0796ea75 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 17 Mar 2012 02:26:52 -0700 Subject: template processor broken with foreach k=>v and k is integer 0 --- include/template_processor.php | 2 +- mod/admin.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/template_processor.php b/include/template_processor.php index 7f7b0b55b..93bf391c5 100755 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -96,7 +96,7 @@ $this->_push_stack(); $r = $this->r; $r[$varname] = $v; - if ($keyname!='') $r[$keyname] = $k; + if ($keyname!='') $r[$keyname] = (($k === 0) ? '0' : $k); $ret .= $this->replace($args[3], $r); $this->_pop_stack(); } diff --git a/mod/admin.php b/mod/admin.php index 88ccad6d3..a64b26903 100755 --- a/mod/admin.php +++ b/mod/admin.php @@ -308,7 +308,7 @@ function admin_page_site(&$a) { SSL_POLICY_FULL => t("Force all links to use SSL"), SSL_POLICY_SELFSIGN => t("Self-signed certificate, use SSL for local links only (discouraged)") ); - + $t = get_markup_template("admin_site.tpl"); return replace_macros($t, array( '$title' => t('Administration'), @@ -325,7 +325,7 @@ function admin_page_site(&$a) { '$banner' => array('banner', t("Banner/Logo"), $banner, ""), '$language' => array('language', t("System language"), get_config('system','language'), "", $lang_choices), '$theme' => array('theme', t("System theme"), get_config('system','theme'), t("Default system theme - may be over-ridden by user profiles"), $theme_choices), - '$ssl_policy' => array('ssl_policy', t("SSL link policy"), get_config('system','ssl_policy'), t("Determines whether generated links should be forced to use SSL"), $ssl_choices), + '$ssl_policy' => array('ssl_policy', t("SSL link policy"), (string) intval(get_config('system','ssl_policy')), t("Determines whether generated links should be forced to use SSL"), $ssl_choices), '$maximagesize' => array('maximagesize', t("Maximum image size"), get_config('system','maximagesize'), t("Maximum size in bytes of uploaded images. Default is 0, which means no limits.")), '$register_policy' => array('register_policy', t("Register policy"), $a->config['register_policy'], "", $register_choices), -- cgit v1.2.3 From 26258bca77aa3385dacf36874f7f5603eaef9a6b Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 17 Mar 2012 02:36:59 -0700 Subject: compare ssl_policy precisely in case somebody was bitten by template processor bug --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 836900fc4..b0a631170 100755 --- a/boot.php +++ b/boot.php @@ -385,7 +385,7 @@ class App { $scheme = $this->scheme; if((x($this->config,'system')) && (x($this->config['system'],'ssl_policy'))) { - if($this->config['system']['ssl_policy'] == SSL_POLICY_FULL) + if(intval($this->config['system']['ssl_policy']) === intval(SSL_POLICY_FULL)) $scheme = 'https'; // We need to populate the $ssl flag across the entire program before turning this on. -- cgit v1.2.3 From 8a1f175df022e2fc2c2162aa314ea34454482d48 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 17 Mar 2012 11:07:49 +0100 Subject: New bbcode element: "spoiler". Mail: Top post quotes are now embraced in "spoiler" elements --- include/bbcode.php | 10 ++++++++++ include/email.php | 4 ++-- include/msgclean.php | 2 +- include/poller.php | 7 ++++++- include/quoteconvert.php | 2 +- include/text.php | 19 +++++++++++++++++++ 6 files changed, 39 insertions(+), 5 deletions(-) diff --git a/include/bbcode.php b/include/bbcode.php index d69cb263f..9fce895b8 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -189,8 +189,18 @@ function bbcode($Text,$preserve_nl = false) { // Check for [code] text $Text = preg_replace("/\[code\](.*?)\[\/code\]/ism","$CodeLayout", $Text); + // Declare the format for [spoiler] layout + $SpoilerLayout = '
    $1
    '; + + // Check for [spoiler] text + // handle nested quotes + $endlessloop = 0; + while ((strpos($Text, "[/spoiler]") !== false) and (strpos($Text, "[spoiler]") !== false) and (++$endlessloop < 20)) + $Text = preg_replace("/\[spoiler\](.*?)\[\/spoiler\]/ism","$SpoilerLayout", $Text); + // Declare the format for [quote] layout $QuoteLayout = '
    $1
    '; + // Check for [quote] text // handle nested quotes $endlessloop = 0; diff --git a/include/email.php b/include/email.php index a3449a424..43f04d7c2 100755 --- a/include/email.php +++ b/include/email.php @@ -74,7 +74,7 @@ function email_msg_headers($mbox,$uid) { } -function email_get_msg($mbox,$uid) { +function email_get_msg($mbox,$uid, $reply) { $ret = array(); $struc = (($mbox && $uid) ? @imap_fetchstructure($mbox,$uid,FT_UID) : null); @@ -114,7 +114,7 @@ function email_get_msg($mbox,$uid) { $ret['body'] = removegpg($ret['body']); $msg = removesig($ret['body']); $ret['body'] = $msg['body']; - $ret['body'] = convertquote($ret['body'], false); + $ret['body'] = convertquote($ret['body'], $reply); if (trim($html) != '') $ret['body'] = removelinebreak($ret['body']); diff --git a/include/msgclean.php b/include/msgclean.php index 284ad1ce4..eabb47788 100644 --- a/include/msgclean.php +++ b/include/msgclean.php @@ -13,7 +13,7 @@ function savereplace($pattern, $replace, $text) function unifyattributionline($message) { - $quotestr = array('quote', 'collapsed'); + $quotestr = array('quote', 'spoiler'); foreach ($quotestr as $quote) { $message = savereplace('/----- Original Message -----\s.*?From: "([^<"].*?)" <(.*?)>\s.*?To: (.*?)\s*?Cc: (.*?)\s*?Sent: (.*?)\s.*?Subject: ([^\n].*)\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); diff --git a/include/poller.php b/include/poller.php index 3bc98e36f..085e95a6a 100755 --- a/include/poller.php +++ b/include/poller.php @@ -504,7 +504,12 @@ function poller_run($argv, $argc){ //$datarray['title'] = notags(trim($meta->subject)); $datarray['created'] = datetime_convert('UTC','UTC',$meta->date); - $r = email_get_msg($mbox,$msg_uid); + // Is it reply? + $reply = ((substr(strtolower($datarray['title']), 0, 3) == "re:") or + (substr(strtolower($datarray['title']), 0, 3) == "re-") or + (raw_refs != "")); + + $r = email_get_msg($mbox,$msg_uid, $reply); if(! $r) { logger("Mail: can't fetch msg ".$msg_uid); continue; diff --git a/include/quoteconvert.php b/include/quoteconvert.php index 3aee93234..2a6d28370 100644 --- a/include/quoteconvert.php +++ b/include/quoteconvert.php @@ -124,7 +124,7 @@ function removetofu($message) } if ($quotestart != 0) { - $message = trim(substr($message, 0, $quotestart))."\n[collapsed]\n".substr($message, $quotestart+7, -8).'[/collapsed]'; + $message = trim(substr($message, 0, $quotestart))."\n[spoiler]".substr($message, $quotestart+7, -8).'[/spoiler]'; } return($message); diff --git a/include/text.php b/include/text.php index d34fd7fbe..bcd567a15 100644 --- a/include/text.php +++ b/include/text.php @@ -955,6 +955,25 @@ function prepare_body($item,$attach = false) { $s .= '
    ' . t('Filed under:') . ' ' . $x . '
    '; } + // Look for spoiler + $spoilersearch = '
    '; + + // Remove line breaks before the spoiler + while ((strpos($s, "\n".$spoilersearch) !== false)) + $s = str_replace("\n".$spoilersearch, $spoilersearch, $s); + while ((strpos($s, "
    ".$spoilersearch) !== false)) + $s = str_replace("
    ".$spoilersearch, $spoilersearch, $s); + + while ((strpos($s, $spoilersearch) !== false)) { + + $pos = strpos($s, $spoilersearch); + $rnd = random_string(8); + $spoilerreplace = ''.sprintf(t('Click to open/close')).''. + '
    - -
    - - -
    - {#fullpage_dlg.head_elements} - -
    -
    -
    - - -
    -
    - - -
    -
    -
    - -
    -
    - -
    - {#fullpage_dlg.meta_element} - - - - - - - - - - - - - - -
    - - -
    - -
    - {#fullpage_dlg.title_element} - - - - - - -
    - - -
    - -
    - {#fullpage_dlg.script_element} - - - -
    - -
    -
    - - - - - - - - - - - - - - - - - -
    - - - - -
     
    -
    - -
    - -
    -
    - - -
    - -
    - {#fullpage_dlg.style_element} - - - -
    - -
    -
    - - - - - - - - - -
    -
    - -
    - -
    -
    - - -
    - -
    - {#fullpage_dlg.base_element} - - - - - - - - - +
    - - -
    - - - -
    - {#fullpage_dlg.comment_element} - - - -
    @@ -566,6 +254,6 @@
    - + diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js b/library/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js old mode 100755 new mode 100644 index a1bb719a3..3f672ad3b --- a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js @@ -8,464 +8,225 @@ * Contributing: http://tinymce.moxiecode.com/contributing */ -tinyMCEPopup.requireLangPack(); - -var doc; - -var defaultDocTypes = - 'XHTML 1.0 Transitional=,' + - 'XHTML 1.0 Frameset=,' + - 'XHTML 1.0 Strict=,' + - 'XHTML 1.1=,' + - 'HTML 4.01 Transitional=,' + - 'HTML 4.01 Strict=,' + - 'HTML 4.01 Frameset='; - -var defaultEncodings = - 'Western european (iso-8859-1)=iso-8859-1,' + - 'Central European (iso-8859-2)=iso-8859-2,' + - 'Unicode (UTF-8)=utf-8,' + - 'Chinese traditional (Big5)=big5,' + - 'Cyrillic (iso-8859-5)=iso-8859-5,' + - 'Japanese (iso-2022-jp)=iso-2022-jp,' + - 'Greek (iso-8859-7)=iso-8859-7,' + - 'Korean (iso-2022-kr)=iso-2022-kr,' + - 'ASCII (us-ascii)=us-ascii'; - -var defaultMediaTypes = - 'all=all,' + - 'screen=screen,' + - 'print=print,' + - 'tty=tty,' + - 'tv=tv,' + - 'projection=projection,' + - 'handheld=handheld,' + - 'braille=braille,' + - 'aural=aural'; - -var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings'; -var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px'; - -function init() { - var f = document.forms['fullpage'], el = f.elements, e, i, p, doctypes, encodings, mediaTypes, fonts, ed = tinyMCEPopup.editor, dom = tinyMCEPopup.dom, style; - - // Setup doctype select box - doctypes = ed.getParam("fullpage_doctypes", defaultDocTypes).split(','); - for (i=0; i 1) - addSelectValue(f, 'doctypes', p[0], p[1]); - } - - // Setup fonts select box - fonts = ed.getParam("fullpage_fonts", defaultFontNames).split(';'); - for (i=0; i 1) - addSelectValue(f, 'fontface', p[0], p[1]); - } - - // Setup fontsize select box - fonts = ed.getParam("fullpage_fontsizes", defaultFontSizes).split(','); - for (i=0; i 1) { - addSelectValue(f, 'element_style_media', p[0], p[1]); - addSelectValue(f, 'element_link_media', p[0], p[1]); - } - } - - // Setup encodings select box - encodings = ed.getParam("fullpage_encodings", defaultEncodings).split(','); - for (i=0; i 1) { - addSelectValue(f, 'docencoding', p[0], p[1]); - addSelectValue(f, 'element_script_charset', p[0], p[1]); - addSelectValue(f, 'element_link_charset', p[0], p[1]); - } - } - - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); - document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color'); - //document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color'); - document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color'); - document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color'); - document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor'); - document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage'); - document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage'); - document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage'); - document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage'); - - // Resize some elements - if (isVisible('stylesheetbrowser')) - document.getElementById('stylesheet').style.width = '220px'; - - if (isVisible('link_href_browser')) - document.getElementById('element_link_href').style.width = '230px'; - - if (isVisible('bgimage_browser')) - document.getElementById('bgimage').style.width = '210px'; - - // Add iframe - dom.add(document.body, 'iframe', {id : 'documentIframe', src : 'javascript:""', style : {display : 'none'}}); - doc = dom.get('documentIframe').contentWindow.document; - h = tinyMCEPopup.getWindowArg('head_html'); - - // Preprocess the HTML disable scripts and urls - h = h.replace(/ '; - } + if (!url) + return url; - return im; - }); - } - }); + if (force_absolute) + return editor.documentBaseURI.toAbsolute(url); + + return urlConverter.call(urlConverterScope, url, 'src', 'object'); }, getInfo : function() { @@ -202,213 +226,665 @@ }; }, - // Private methods - _objectsToSpans : function(ed, o) { - var t = this, h = o.content; + /** + * Converts the JSON data object to an img node. + */ + dataToImg : function(data, force_absolute) { + var self = this, editor = self.editor, baseUri = editor.documentBaseURI, sources, attrs, img, i; - h = h.replace(/]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, function(a, b, c) { - var o = t._parse(c); + data.params.src = self.convertUrl(data.params.src, force_absolute); - return '' + attrs = data.video.attrs; + if (attrs) + attrs.src = self.convertUrl(attrs.src, force_absolute); + + if (attrs) + attrs.poster = self.convertUrl(attrs.poster, force_absolute); + + sources = toArray(data.video.sources); + if (sources) { + for (i = 0; i < sources.length; i++) + sources[i].src = self.convertUrl(sources[i].src, force_absolute); + } + + img = self.editor.dom.create('img', { + id : data.id, + style : data.style, + align : data.align, + hspace : data.hspace, + vspace : data.vspace, + src : self.editor.theme.url + '/img/trans.gif', + 'class' : 'mceItemMedia mceItem' + self.getType(data.type).name, + 'data-mce-json' : JSON.serialize(data, "'") }); - h = h.replace(/]*)>/gi, ''); - h = h.replace(/]*)\/?>/gi, ''); - h = h.replace(/]*)>/gi, ''); - h = h.replace(/<\/(object)([^>]*)>/gi, ''); - h = h.replace(/<\/embed>/gi, ''); - h = h.replace(/]*)>/gi, function(a, b) {return ''}); - h = h.replace(/\/ class=\"mceItemParam\"><\/span>/gi, 'class="mceItemParam">'); + img.width = data.width || (data.type == 'audio' ? "300" : "320"); + img.height = data.height || (data.type == 'audio' ? "32" : "240"); + + return img; + }, + + /** + * Converts the JSON data object to a HTML string. + */ + dataToHtml : function(data, force_absolute) { + return this.editor.serializer.serialize(this.dataToImg(data, force_absolute), {forced_root_block : '', force_absolute : force_absolute}); + }, + + /** + * Converts the JSON data object to a HTML string. + */ + htmlToData : function(html) { + var fragment, img, data; + + data = { + type : 'flash', + video: {sources:[]}, + params: {} + }; + + fragment = this.editor.parser.parse(html); + img = fragment.getAll('img')[0]; + + if (img) { + data = JSON.parse(img.attr('data-mce-json')); + data.type = this.getType(img.attr('class')).name.toLowerCase(); + + // Add some extra properties to the data object + tinymce.each(rootAttributes, function(name) { + var value = img.attr(name); - o.content = h; + if (value) + data[name] = value; + }); + } + + return data; + }, + + /** + * Get type item by extension, class, clsid or mime type. + * + * @method getType + * @param {String} value Value to get type item by. + * @return {Object} Type item object or undefined. + */ + getType : function(value) { + var i, values, typeItem; + + // Find type by checking the classes + values = tinymce.explode(value, ' '); + for (i = 0; i < values.length; i++) { + typeItem = this.lookup[values[i]]; + + if (typeItem) + return typeItem; + } }, - _buildObj : function(o, n) { - var ob, ed = this.editor, dom = ed.dom, p = this._parse(n.title), stc; - - stc = ed.getParam('media_strict', true) && o.type == 'application/x-shockwave-flash'; - - p.width = o.width = dom.getAttrib(n, 'width') || 100; - p.height = o.height = dom.getAttrib(n, 'height') || 100; - - if (p.src) - p.src = ed.convertURL(p.src, 'src', n); - - if (stc) { - ob = dom.create('span', { - id : p.id, - _mce_name : 'object', - type : 'application/x-shockwave-flash', - data : p.src, - style : dom.getAttrib(n, 'style'), - width : o.width, - height : o.height + /** + * Converts a tinymce.html.Node image element to video/object/embed. + */ + imgToObject : function(node, args) { + var self = this, editor = self.editor, video, object, embed, iframe, name, value, data, + source, sources, params, param, typeItem, i, item, mp4Source, replacement, + posterSrc, style, audio; + + // Adds the flash player + function addPlayer(video_src, poster_src) { + var baseUri, flashVars, flashVarsOutput, params, flashPlayer; + + flashPlayer = editor.getParam('flash_video_player_url', self.convertUrl(self.url + '/moxieplayer.swf')); + if (flashPlayer) { + baseUri = editor.documentBaseURI; + data.params.src = flashPlayer; + + // Convert the movie url to absolute urls + if (editor.getParam('flash_video_player_absvideourl', true)) { + video_src = baseUri.toAbsolute(video_src || '', true); + poster_src = baseUri.toAbsolute(poster_src || '', true); + } + + // Generate flash vars + flashVarsOutput = ''; + flashVars = editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'}); + tinymce.each(flashVars, function(value, name) { + // Replace $url and $poster variables in flashvars value + value = value.replace(/\$url/, video_src || ''); + value = value.replace(/\$poster/, poster_src || ''); + + if (value.length > 0) + flashVarsOutput += (flashVarsOutput ? '&' : '') + name + '=' + escape(value); + }); + + if (flashVarsOutput.length) + data.params.flashvars = flashVarsOutput; + + params = editor.getParam('flash_video_player_params', { + allowfullscreen: true, + allowscriptaccess: true + }); + + tinymce.each(params, function(value, name) { + data.params[name] = "" + value; + }); + } + }; + + data = node.attr('data-mce-json'); + if (!data) + return; + + data = JSON.parse(data); + typeItem = this.getType(node.attr('class')); + + style = node.attr('data-mce-style') + if (!style) { + style = node.attr('style'); + + if (style) + style = editor.dom.serializeStyle(editor.dom.parseStyle(style, 'img')); + } + + // Handle iframe + if (typeItem.name === 'Iframe') { + replacement = new Node('iframe', 1); + + tinymce.each(rootAttributes, function(name) { + var value = node.attr(name); + + if (name == 'class' && value) + value = value.replace(/mceItem.+ ?/g, ''); + + if (value && value.length > 0) + replacement.attr(name, value); }); - } else { - ob = dom.create('span', { - id : p.id, - _mce_name : 'object', - classid : "clsid:" + o.classid, - style : dom.getAttrib(n, 'style'), - codebase : o.codebase, - width : o.width, - height : o.height + + for (name in data.params) + replacement.attr(name, data.params[name]); + + replacement.attr({ + style: style, + src: data.params.src }); + + node.replace(replacement); + + return; } - each (p, function(v, k) { - if (!/^(width|height|codebase|classid|id|_cx|_cy)$/.test(k)) { - // Use url instead of src in IE for Windows media - if (o.type == 'application/x-mplayer2' && k == 'src' && !p.url) - k = 'url'; + // Handle scripts + if (this.editor.settings.media_use_script) { + replacement = new Node('script', 1).attr('type', 'text/javascript'); + + value = new Node('#text', 3); + value.value = 'write' + typeItem.name + '(' + JSON.serialize(tinymce.extend(data.params, { + width: node.attr('width'), + height: node.attr('height') + })) + ');'; + + replacement.append(value); + node.replace(replacement); - if (v) - dom.add(ob, 'span', {_mce_name : 'param', name : k, '_mce_value' : v}); + return; + } + + // Add HTML5 video element + if (typeItem.name === 'Video' && data.video.sources[0]) { + // Create new object element + video = new Node('video', 1).attr(tinymce.extend({ + id : node.attr('id'), + width: node.attr('width'), + height: node.attr('height'), + style : style + }, data.video.attrs)); + + // Get poster source and use that for flash fallback + if (data.video.attrs) + posterSrc = data.video.attrs.poster; + + sources = data.video.sources = toArray(data.video.sources); + for (i = 0; i < sources.length; i++) { + if (/\.mp4$/.test(sources[i].src)) + mp4Source = sources[i].src; } - }); - if (!stc) - dom.add(ob, 'span', tinymce.extend({_mce_name : 'embed', type : o.type, style : dom.getAttrib(n, 'style')}, p)); + if (!sources[0].type) { + video.attr('src', sources[0].src); + sources.splice(0, 1); + } - return ob; - }, + for (i = 0; i < sources.length; i++) { + source = new Node('source', 1).attr(sources[i]); + source.shortEnded = true; + video.append(source); + } - _spansToImgs : function(p) { - var t = this, dom = t.editor.dom, im, ci; + // Create flash fallback for video if we have a mp4 source + if (mp4Source) { + addPlayer(mp4Source, posterSrc); + typeItem = self.getType('flash'); + } else + data.params.src = ''; + } - each(dom.select('span', p), function(n) { - // Convert object into image - if (dom.getAttrib(n, 'class') == 'mceItemObject') { - ci = dom.getAttrib(n, "classid").toLowerCase().replace(/\s+/g, ''); + // Add HTML5 audio element + if (typeItem.name === 'Audio' && data.video.sources[0]) { + // Create new object element + audio = new Node('audio', 1).attr(tinymce.extend({ + id : node.attr('id'), + width: node.attr('width'), + height: node.attr('height'), + style : style + }, data.video.attrs)); + + // Get poster source and use that for flash fallback + if (data.video.attrs) + posterSrc = data.video.attrs.poster; + + sources = data.video.sources = toArray(data.video.sources); + if (!sources[0].type) { + audio.attr('src', sources[0].src); + sources.splice(0, 1); + } - switch (ci) { - case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000': - dom.replace(t._createImg('mceItemFlash', n), n); - break; + for (i = 0; i < sources.length; i++) { + source = new Node('source', 1).attr(sources[i]); + source.shortEnded = true; + audio.append(source); + } - case 'clsid:166b1bca-3f9c-11cf-8075-444553540000': - dom.replace(t._createImg('mceItemShockWave', n), n); - break; + data.params.src = ''; + } - case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6': - case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95': - case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a': - dom.replace(t._createImg('mceItemWindowsMedia', n), n); - break; + if (typeItem.name === 'EmbeddedAudio') { + embed = new Node('embed', 1); + embed.shortEnded = true; + embed.attr({ + id: node.attr('id'), + width: node.attr('width'), + height: node.attr('height'), + style : style, + type: node.attr('type') + }); - case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b': - dom.replace(t._createImg('mceItemQuickTime', n), n); - break; + for (name in data.params) + embed.attr(name, data.params[name]); - case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa': - dom.replace(t._createImg('mceItemRealMedia', n), n); - break; + tinymce.each(rootAttributes, function(name) { + if (data[name] && name != 'type') + embed.attr(name, data[name]); + }); - default: - dom.replace(t._createImg('mceItemFlash', n), n); - } - - return; + data.params.src = ''; + } + + // Do we have a params src then we can generate object + if (data.params.src) { + // Is flv movie add player for it + if (/\.flv$/i.test(data.params.src)) + addPlayer(data.params.src, ''); + + if (args && args.force_absolute) + data.params.src = editor.documentBaseURI.toAbsolute(data.params.src); + + // Create new object element + object = new Node('object', 1).attr({ + id : node.attr('id'), + width: node.attr('width'), + height: node.attr('height'), + style : style + }); + + tinymce.each(rootAttributes, function(name) { + var value = data[name]; + + if (name == 'class' && value) + value = value.replace(/mceItem.+ ?/g, ''); + + if (value && name != 'type') + object.attr(name, value); + }); + + // Add params + for (name in data.params) { + param = new Node('param', 1); + param.shortEnded = true; + value = data.params[name]; + + // Windows media needs to use url instead of src for the media URL + if (name === 'src' && typeItem.name === 'WindowsMedia') + name = 'url'; + + param.attr({name: name, value: value}); + object.append(param); } - // Convert embed into image - if (dom.getAttrib(n, 'class') == 'mceItemEmbed') { - switch (dom.getAttrib(n, 'type')) { - case 'application/x-shockwave-flash': - dom.replace(t._createImg('mceItemFlash', n), n); - break; + // Setup add type and classid if strict is disabled + if (this.editor.getParam('media_strict', true)) { + object.attr({ + data: data.params.src, + type: typeItem.mimes[0] + }); + } else { + object.attr({ + classid: "clsid:" + typeItem.clsids[0], + codebase: typeItem.codebase + }); - case 'application/x-director': - dom.replace(t._createImg('mceItemShockWave', n), n); - break; + embed = new Node('embed', 1); + embed.shortEnded = true; + embed.attr({ + id: node.attr('id'), + width: node.attr('width'), + height: node.attr('height'), + style : style, + type: typeItem.mimes[0] + }); - case 'application/x-mplayer2': - dom.replace(t._createImg('mceItemWindowsMedia', n), n); - break; + for (name in data.params) + embed.attr(name, data.params[name]); - case 'video/quicktime': - dom.replace(t._createImg('mceItemQuickTime', n), n); - break; + tinymce.each(rootAttributes, function(name) { + if (data[name] && name != 'type') + embed.attr(name, data[name]); + }); - case 'audio/x-pn-realaudio-plugin': - dom.replace(t._createImg('mceItemRealMedia', n), n); - break; + object.append(embed); + } - default: - dom.replace(t._createImg('mceItemFlash', n), n); - } - } - }); + // Insert raw HTML + if (data.object_html) { + value = new Node('#text', 3); + value.raw = true; + value.value = data.object_html; + object.append(value); + } + + // Append object to video element if it exists + if (video) + video.append(object); + } + + if (video) { + // Insert raw HTML + if (data.video_html) { + value = new Node('#text', 3); + value.raw = true; + value.value = data.video_html; + video.append(value); + } + } + + if (audio) { + // Insert raw HTML + if (data.video_html) { + value = new Node('#text', 3); + value.raw = true; + value.value = data.video_html; + audio.append(value); + } + } + + var n = video || audio || object || embed; + if (n) + node.replace(n); + else + node.remove(); }, - _createImg : function(cl, n) { - var im, dom = this.editor.dom, pa = {}, ti = '', args; + /** + * Converts a tinymce.html.Node video/object/embed to an img element. + * + * The video/object/embed will be converted into an image placeholder with a JSON data attribute like this: + * + * + * The JSON structure will be like this: + * {'params':{'flashvars':'something','quality':'high','src':'someurl'}, 'video':{'sources':[{src: 'someurl', type: 'video/mp4'}]}} + */ + objectToImg : function(node) { + var object, embed, video, iframe, img, name, id, width, height, style, i, html, + param, params, source, sources, data, type, lookup = this.lookup, + matches, attrs, urlConverter = this.editor.settings.url_converter, + urlConverterScope = this.editor.settings.url_converter_scope, + hspace, vspace, align, bgcolor; + + function getInnerHTML(node) { + return new tinymce.html.Serializer({ + inner: true, + validate: false + }).serialize(node); + }; - args = ['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode', 'allowfullscreen', 'quality', 'data']; + function lookupAttribute(o, attr) { + return lookup[(o.attr(attr) || '').toLowerCase()]; + } - // Create image - im = dom.create('img', { - src : this.url + '/img/trans.gif', - width : dom.getAttrib(n, 'width') || 100, - height : dom.getAttrib(n, 'height') || 100, - style : dom.getAttrib(n, 'style'), - 'class' : cl - }); + function lookupExtension(src) { + var ext = src.replace(/^.*\.([^.]+)$/, '$1'); + return lookup[ext.toLowerCase() || '']; + } - // Setup base parameters - each(args, function(na) { - var v = dom.getAttrib(n, na); + // If node isn't in document + if (!node.parent) + return; - if (v) - pa[na] = v; - }); + // Handle media scripts + if (node.name === 'script') { + if (node.firstChild) + matches = scriptRegExp.exec(node.firstChild.value); + + if (!matches) + return; + + type = matches[1]; + data = {video : {}, params : JSON.parse(matches[2])}; + width = data.params.width; + height = data.params.height; + } - // Add optional parameters - each(dom.select('span', n), function(n) { - if (dom.hasClass(n, 'mceItemParam')) - pa[dom.getAttrib(n, 'name')] = dom.getAttrib(n, '_mce_value'); + // Setup data objects + data = data || { + video : {}, + params : {} + }; + + // Setup new image object + img = new Node('img', 1); + img.attr({ + src : this.editor.theme.url + '/img/trans.gif' }); - // Use src not movie - if (pa.movie) { - pa.src = pa.movie; - delete pa.movie; + // Video element + name = node.name; + if (name === 'video' || name == 'audio') { + video = node; + object = node.getAll('object')[0]; + embed = node.getAll('embed')[0]; + width = video.attr('width'); + height = video.attr('height'); + id = video.attr('id'); + data.video = {attrs : {}, sources : []}; + + // Get all video attributes + attrs = data.video.attrs; + for (name in video.attributes.map) + attrs[name] = video.attributes.map[name]; + + source = node.attr('src'); + if (source) + data.video.sources.push({src : urlConverter.call(urlConverterScope, source, 'src', node.name)}); + + // Get all sources + sources = video.getAll("source"); + for (i = 0; i < sources.length; i++) { + source = sources[i].remove(); + + data.video.sources.push({ + src: urlConverter.call(urlConverterScope, source.attr('src'), 'src', 'source'), + type: source.attr('type'), + media: source.attr('media') + }); + } + + // Convert the poster URL + if (attrs.poster) + attrs.poster = urlConverter.call(urlConverterScope, attrs.poster, 'poster', node.name); + } + + // Object element + if (node.name === 'object') { + object = node; + embed = node.getAll('embed')[0]; + } + + // Embed element + if (node.name === 'embed') + embed = node; + + // Iframe element + if (node.name === 'iframe') { + iframe = node; + type = 'Iframe'; } - // No src try data - if (!pa.src) { - pa.src = pa.data; - delete pa.data; + if (object) { + // Get width/height + width = width || object.attr('width'); + height = height || object.attr('height'); + style = style || object.attr('style'); + id = id || object.attr('id'); + hspace = hspace || object.attr('hspace'); + vspace = vspace || object.attr('vspace'); + align = align || object.attr('align'); + bgcolor = bgcolor || object.attr('bgcolor'); + data.name = object.attr('name'); + + // Get all object params + params = object.getAll("param"); + for (i = 0; i < params.length; i++) { + param = params[i]; + name = param.remove().attr('name'); + + if (!excludedAttrs[name]) + data.params[name] = param.attr('value'); + } + + data.params.src = data.params.src || object.attr('data'); } - // Merge with embed args - n = dom.select('.mceItemEmbed', n)[0]; - if (n) { - each(args, function(na) { - var v = dom.getAttrib(n, na); + if (embed) { + // Get width/height + width = width || embed.attr('width'); + height = height || embed.attr('height'); + style = style || embed.attr('style'); + id = id || embed.attr('id'); + hspace = hspace || embed.attr('hspace'); + vspace = vspace || embed.attr('vspace'); + align = align || embed.attr('align'); + bgcolor = bgcolor || embed.attr('bgcolor'); + + // Get all embed attributes + for (name in embed.attributes.map) { + if (!excludedAttrs[name] && !data.params[name]) + data.params[name] = embed.attributes.map[name]; + } + } - if (v && !pa[na]) - pa[na] = v; + if (iframe) { + // Get width/height + width = iframe.attr('width'); + height = iframe.attr('height'); + style = style || iframe.attr('style'); + id = iframe.attr('id'); + hspace = iframe.attr('hspace'); + vspace = iframe.attr('vspace'); + align = iframe.attr('align'); + bgcolor = iframe.attr('bgcolor'); + + tinymce.each(rootAttributes, function(name) { + img.attr(name, iframe.attr(name)); }); + + // Get all iframe attributes + for (name in iframe.attributes.map) { + if (!excludedAttrs[name] && !data.params[name]) + data.params[name] = iframe.attributes.map[name]; + } } - delete pa.width; - delete pa.height; + // Use src not movie + if (data.params.movie) { + data.params.src = data.params.src || data.params.movie; + delete data.params.movie; + } - im.title = this._serialize(pa); + // Convert the URL to relative/absolute depending on configuration + if (data.params.src) + data.params.src = urlConverter.call(urlConverterScope, data.params.src, 'src', 'object'); - return im; - }, + if (video) { + if (node.name === 'video') + type = lookup.video.name; + else if (node.name === 'audio') + type = lookup.audio.name; + } - _parse : function(s) { - return tinymce.util.JSON.parse('{' + s + '}'); - }, + if (object && !type) + type = (lookupAttribute(object, 'clsid') || lookupAttribute(object, 'classid') || lookupAttribute(object, 'type') || {}).name; + + if (embed && !type) + type = (lookupAttribute(embed, 'type') || lookupExtension(data.params.src) || {}).name; - _serialize : function(o) { - return tinymce.util.JSON.serialize(o).replace(/[{}]/g, ''); + // for embedded audio we preserve the original specified type + if (embed && type == 'EmbeddedAudio') { + data.params.type = embed.attr('type'); + } + + // Replace the video/object/embed element with a placeholder image containing the data + node.replace(img); + + // Remove embed + if (embed) + embed.remove(); + + // Serialize the inner HTML of the object element + if (object) { + html = getInnerHTML(object.remove()); + + if (html) + data.object_html = html; + } + + // Serialize the inner HTML of the video element + if (video) { + html = getInnerHTML(video.remove()); + + if (html) + data.video_html = html; + } + + data.hspace = hspace; + data.vspace = vspace; + data.align = align; + data.bgcolor = bgcolor; + + // Set width/height of placeholder + img.attr({ + id : id, + 'class' : 'mceItemMedia mceItem' + (type || 'Flash'), + style : style, + width : width || (node.name == 'audio' ? "300" : "320"), + height : height || (node.name == 'audio' ? "32" : "240"), + hspace : hspace, + vspace : vspace, + align : align, + bgcolor : bgcolor, + "data-mce-json" : JSON.serialize(data, "'") + }); } }); // Register plugin tinymce.PluginManager.add('media', tinymce.plugins.MediaPlugin); -})(); \ No newline at end of file +})(); diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif b/library/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif deleted file mode 100755 index cb192e6ce..000000000 Binary files a/library/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif and /dev/null differ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf b/library/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf deleted file mode 100755 index 042c2ab96..000000000 Binary files a/library/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf and /dev/null differ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif b/library/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif deleted file mode 100755 index 3b0499145..000000000 Binary files a/library/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif and /dev/null differ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif b/library/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif deleted file mode 100755 index fdfe0b9ac..000000000 Binary files a/library/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif and /dev/null differ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif b/library/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif deleted file mode 100755 index 5f235dfc7..000000000 Binary files a/library/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif and /dev/null differ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif b/library/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif deleted file mode 100755 index 388486517..000000000 Binary files a/library/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif and /dev/null differ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif b/library/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif deleted file mode 100755 index ab50f2d88..000000000 Binary files a/library/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif and /dev/null differ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js b/library/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/js/media.js b/library/tinymce/jscripts/tiny_mce/plugins/media/js/media.js old mode 100755 new mode 100644 index 86cfa9856..733c5f6c2 --- a/library/tinymce/jscripts/tiny_mce/plugins/media/js/media.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/media/js/media.js @@ -1,630 +1,470 @@ -tinyMCEPopup.requireLangPack(); +(function() { + var url; -var oldWidth, oldHeight, ed, url; + if (url = tinyMCEPopup.getParam("media_external_list_url")) + document.write(''); -if (url = tinyMCEPopup.getParam("media_external_list_url")) - document.write(''); - -function init() { - var pl = "", f, val; - var type = "flash", fe, i; - - ed = tinyMCEPopup.editor; - - tinyMCEPopup.resizeToInnerSize(); - f = document.forms[0] - - fe = ed.selection.getNode(); - if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) { - pl = fe.title; - - switch (ed.dom.getAttrib(fe, 'class')) { - case 'mceItemFlash': - type = 'flash'; - break; - - case 'mceItemFlashVideo': - type = 'flv'; - break; - - case 'mceItemShockWave': - type = 'shockwave'; - break; - - case 'mceItemWindowsMedia': - type = 'wmp'; - break; - - case 'mceItemQuickTime': - type = 'qt'; - break; - - case 'mceItemRealMedia': - type = 'rmp'; - break; - } - - document.forms[0].insert.value = ed.getLang('update', 'Insert', true); - } - - document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media'); - document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media'); - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); - - var html = getMediaListHTML('medialist','src','media','media'); - if (html == "") - document.getElementById("linklistrow").style.display = 'none'; - else - document.getElementById("linklistcontainer").innerHTML = html; - - // Resize some elements - if (isVisible('filebrowser')) - document.getElementById('src').style.width = '230px'; - - // Setup form - if (pl != "") { - pl = tinyMCEPopup.editor.plugins.media._parse(pl); - - switch (type) { - case "flash": - setBool(pl, 'flash', 'play'); - setBool(pl, 'flash', 'loop'); - setBool(pl, 'flash', 'menu'); - setBool(pl, 'flash', 'swliveconnect'); - setStr(pl, 'flash', 'quality'); - setStr(pl, 'flash', 'scale'); - setStr(pl, 'flash', 'salign'); - setStr(pl, 'flash', 'wmode'); - setStr(pl, 'flash', 'base'); - setStr(pl, 'flash', 'flashvars'); - break; - - case "qt": - setBool(pl, 'qt', 'loop'); - setBool(pl, 'qt', 'autoplay'); - setBool(pl, 'qt', 'cache'); - setBool(pl, 'qt', 'controller'); - setBool(pl, 'qt', 'correction'); - setBool(pl, 'qt', 'enablejavascript'); - setBool(pl, 'qt', 'kioskmode'); - setBool(pl, 'qt', 'autohref'); - setBool(pl, 'qt', 'playeveryframe'); - setBool(pl, 'qt', 'tarsetcache'); - setStr(pl, 'qt', 'scale'); - setStr(pl, 'qt', 'starttime'); - setStr(pl, 'qt', 'endtime'); - setStr(pl, 'qt', 'tarset'); - setStr(pl, 'qt', 'qtsrcchokespeed'); - setStr(pl, 'qt', 'volume'); - setStr(pl, 'qt', 'qtsrc'); - break; - - case "shockwave": - setBool(pl, 'shockwave', 'sound'); - setBool(pl, 'shockwave', 'progress'); - setBool(pl, 'shockwave', 'autostart'); - setBool(pl, 'shockwave', 'swliveconnect'); - setStr(pl, 'shockwave', 'swvolume'); - setStr(pl, 'shockwave', 'swstretchstyle'); - setStr(pl, 'shockwave', 'swstretchhalign'); - setStr(pl, 'shockwave', 'swstretchvalign'); - break; - - case "wmp": - setBool(pl, 'wmp', 'autostart'); - setBool(pl, 'wmp', 'enabled'); - setBool(pl, 'wmp', 'enablecontextmenu'); - setBool(pl, 'wmp', 'fullscreen'); - setBool(pl, 'wmp', 'invokeurls'); - setBool(pl, 'wmp', 'mute'); - setBool(pl, 'wmp', 'stretchtofit'); - setBool(pl, 'wmp', 'windowlessvideo'); - setStr(pl, 'wmp', 'balance'); - setStr(pl, 'wmp', 'baseurl'); - setStr(pl, 'wmp', 'captioningid'); - setStr(pl, 'wmp', 'currentmarker'); - setStr(pl, 'wmp', 'currentposition'); - setStr(pl, 'wmp', 'defaultframe'); - setStr(pl, 'wmp', 'playcount'); - setStr(pl, 'wmp', 'rate'); - setStr(pl, 'wmp', 'uimode'); - setStr(pl, 'wmp', 'volume'); - break; - - case "rmp": - setBool(pl, 'rmp', 'autostart'); - setBool(pl, 'rmp', 'loop'); - setBool(pl, 'rmp', 'autogotourl'); - setBool(pl, 'rmp', 'center'); - setBool(pl, 'rmp', 'imagestatus'); - setBool(pl, 'rmp', 'maintainaspect'); - setBool(pl, 'rmp', 'nojava'); - setBool(pl, 'rmp', 'prefetch'); - setBool(pl, 'rmp', 'shuffle'); - setStr(pl, 'rmp', 'console'); - setStr(pl, 'rmp', 'controls'); - setStr(pl, 'rmp', 'numloop'); - setStr(pl, 'rmp', 'scriptcallbacks'); - break; - } - - setStr(pl, null, 'src'); - setStr(pl, null, 'id'); - setStr(pl, null, 'name'); - setStr(pl, null, 'vspace'); - setStr(pl, null, 'hspace'); - setStr(pl, null, 'bgcolor'); - setStr(pl, null, 'align'); - setStr(pl, null, 'width'); - setStr(pl, null, 'height'); - - if ((val = ed.dom.getAttrib(fe, "width")) != "") - pl.width = f.width.value = val; - - if ((val = ed.dom.getAttrib(fe, "height")) != "") - pl.height = f.height.value = val; - - oldWidth = pl.width ? parseInt(pl.width) : 0; - oldHeight = pl.height ? parseInt(pl.height) : 0; - } else - oldWidth = oldHeight = 0; - - selectByValue(f, 'media_type', type); - changedType(type); - updateColor('bgcolor_pick', 'bgcolor'); - - TinyMCE_EditableSelects.init(); - generatePreview(); -} - -function insertMedia() { - var fe, f = document.forms[0], h; - - tinyMCEPopup.restoreSelection(); - - if (!AutoValidator.validate(f)) { - tinyMCEPopup.alert(ed.getLang('invalid_data')); - return false; + function get(id) { + return document.getElementById(id); } - f.width.value = f.width.value == "" ? 100 : f.width.value; - f.height.value = f.height.value == "" ? 100 : f.height.value; + function clone(obj) { + var i, len, copy, attr; - fe = ed.selection.getNode(); - if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe, 'class'))) { - switch (f.media_type.options[f.media_type.selectedIndex].value) { - case "flash": - fe.className = "mceItemFlash"; - break; + if (null == obj || "object" != typeof obj) + return obj; - case "flv": - fe.className = "mceItemFlashVideo"; - break; + // Handle Array + if ('length' in obj) { + copy = []; - case "shockwave": - fe.className = "mceItemShockWave"; - break; - - case "qt": - fe.className = "mceItemQuickTime"; - break; - - case "wmp": - fe.className = "mceItemWindowsMedia"; - break; + for (i = 0, len = obj.length; i < len; ++i) { + copy[i] = clone(obj[i]); + } - case "rmp": - fe.className = "mceItemRealMedia"; - break; + return copy; } - if (fe.width != f.width.value || fe.height != f.height.value) - ed.execCommand('mceRepaint'); - - fe.title = serializeParameters(); - fe.width = f.width.value; - fe.height = f.height.value; - fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : ''); - fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : ''); - fe.align = f.align.options[f.align.selectedIndex].value; - } else { - h = ' 0) { - var html = ""; - - html += ''; - - return html; + return elm.value; } - return ""; -} - -function getType(v) { - var fo, i, c, el, x, f = document.forms[0]; - - fo = ed.getParam("media_types", "flash=swf;flv=flv;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';'); - - // YouTube - if (v.match(/watch\?v=(.+)(.*)/)) { - f.width.value = '425'; - f.height.value = '350'; - f.src.value = 'http://www.youtube.com/v/' + v.match(/v=(.*)(.*)/)[0].split('=')[1]; - return 'flash'; - } - - // Google video - if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) { - f.width.value = '425'; - f.height.value = '326'; - f.src.value = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en'; - return 'flash'; - } - - for (i=0; i 0 ? s.substring(0, s.length - 1) : s; - - return s; -} - -function setBool(pl, p, n) { - if (typeof(pl[n]) == "undefined") - return; - - document.forms[0].elements[p + "_" + n].checked = pl[n] != 'false'; -} - -function setStr(pl, p, n) { - var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n]; - - if (typeof(pl[n]) == "undefined") - return; + window.Media = { + init : function() { + var html, editor, self = this; - if (e.type == "text") - e.value = pl[n]; - else - selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]); -} + self.editor = editor = tinyMCEPopup.editor; -function getBool(p, n, d, tv, fv) { - var v = document.forms[0].elements[p + "_" + n].checked; + // Setup file browsers and color pickers + get('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media'); + get('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','quicktime_qtsrc','media','media'); + get('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); + get('video_altsource1_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource1','video_altsource1','media','media'); + get('video_altsource2_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource2','video_altsource2','media','media'); + get('audio_altsource1_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource1','audio_altsource1','media','media'); + get('audio_altsource2_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource2','audio_altsource2','media','media'); + get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','media','image'); - tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'"; - fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'"; + html = self.getMediaListHTML('medialist', 'src', 'media', 'media'); + if (html == "") + get("linklistrow").style.display = 'none'; + else + get("linklistcontainer").innerHTML = html; - return (v == d) ? '' : n + (v ? ':' + tv + ',' : ":\'" + fv + "\',"); -} + if (isVisible('filebrowser')) + get('src').style.width = '230px'; + + if (isVisible('video_filebrowser_altsource1')) + get('video_altsource1').style.width = '220px'; + + if (isVisible('video_filebrowser_altsource2')) + get('video_altsource2').style.width = '220px'; + + if (isVisible('audio_filebrowser_altsource1')) + get('audio_altsource1').style.width = '220px'; + + if (isVisible('audio_filebrowser_altsource2')) + get('audio_altsource2').style.width = '220px'; + + if (isVisible('filebrowser_poster')) + get('video_poster').style.width = '220px'; + + editor.dom.setOuterHTML(get('media_type'), self.getMediaTypeHTML(editor)); + + self.setDefaultDialogSettings(editor); + self.data = clone(tinyMCEPopup.getWindowArg('data')); + self.dataToForm(); + self.preview(); + + updateColor('bgcolor_pick', 'bgcolor'); + }, + + insert : function() { + var editor = tinyMCEPopup.editor; + + this.formToData(); + editor.execCommand('mceRepaint'); + tinyMCEPopup.restoreSelection(); + editor.selection.setNode(editor.plugins.media.dataToImg(this.data)); + tinyMCEPopup.close(); + }, + + preview : function() { + get('prev').innerHTML = this.editor.plugins.media.dataToHtml(this.data, true); + }, + + moveStates : function(to_form, field) { + var data = this.data, editor = this.editor, + mediaPlugin = editor.plugins.media, ext, src, typeInfo, defaultStates, src; + + defaultStates = { + // QuickTime + quicktime_autoplay : true, + quicktime_controller : true, + + // Flash + flash_play : true, + flash_loop : true, + flash_menu : true, + + // WindowsMedia + windowsmedia_autostart : true, + windowsmedia_enablecontextmenu : true, + windowsmedia_invokeurls : true, + + // RealMedia + realmedia_autogotourl : true, + realmedia_imagestatus : true + }; + + function parseQueryParams(str) { + var out = {}; + + if (str) { + tinymce.each(str.split('&'), function(item) { + var parts = item.split('='); + + out[unescape(parts[0])] = unescape(parts[1]); + }); + } + + return out; + }; + + function setOptions(type, names) { + var i, name, formItemName, value, list; + + if (type == data.type || type == 'global') { + names = tinymce.explode(names); + for (i = 0; i < names.length; i++) { + name = names[i]; + formItemName = type == 'global' ? name : type + '_' + name; + + if (type == 'global') + list = data; + else if (type == 'video' || type == 'audio') { + list = data.video.attrs; + + if (!list && !to_form) + data.video.attrs = list = {}; + } else + list = data.params; + + if (list) { + if (to_form) { + setVal(formItemName, list[name], type == 'video' || type == 'audio' ? name : ''); + } else { + delete list[name]; + + value = getVal(formItemName); + if ((type == 'video' || type == 'audio') && value === true) + value = name; + + if (defaultStates[formItemName]) { + if (value !== defaultStates[formItemName]) { + value = "" + value; + list[name] = value; + } + } else if (value) { + value = "" + value; + list[name] = value; + } + } + } + } + } + } -function getStr(p, n, d) { - var e = document.forms[0].elements[(p != null ? p + "_" : "") + n]; - var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value; + if (!to_form) { + data.type = get('media_type').options[get('media_type').selectedIndex].value; + data.width = getVal('width'); + data.height = getVal('height'); - if (n == 'src') - v = tinyMCEPopup.editor.convertURL(v, 'src', null); + // Switch type based on extension + src = getVal('src'); + if (field == 'src') { + ext = src.replace(/^.*\.([^.]+)$/, '$1'); + if (typeInfo = mediaPlugin.getType(ext)) + data.type = typeInfo.name.toLowerCase(); - return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',"); -} + setVal('media_type', data.type); + } -function getInt(p, n, d) { - var e = document.forms[0].elements[(p != null ? p + "_" : "") + n]; - var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value; + if (data.type == "video" || data.type == "audio") { + if (!data.video.sources) + data.video.sources = []; - return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ","); -} + data.video.sources[0] = {src: getVal('src')}; + } + } -function jsEncode(s) { - s = s.replace(new RegExp('\\\\', 'g'), '\\\\'); - s = s.replace(new RegExp('"', 'g'), '\\"'); - s = s.replace(new RegExp("'", 'g'), "\\'"); + // Hide all fieldsets and show the one active + get('video_options').style.display = 'none'; + get('audio_options').style.display = 'none'; + get('flash_options').style.display = 'none'; + get('quicktime_options').style.display = 'none'; + get('shockwave_options').style.display = 'none'; + get('windowsmedia_options').style.display = 'none'; + get('realmedia_options').style.display = 'none'; + get('embeddedaudio_options').style.display = 'none'; + + if (get(data.type + '_options')) + get(data.type + '_options').style.display = 'block'; + + setVal('media_type', data.type); + + setOptions('flash', 'play,loop,menu,swliveconnect,quality,scale,salign,wmode,base,flashvars'); + setOptions('quicktime', 'loop,autoplay,cache,controller,correction,enablejavascript,kioskmode,autohref,playeveryframe,targetcache,scale,starttime,endtime,target,qtsrcchokespeed,volume,qtsrc'); + setOptions('shockwave', 'sound,progress,autostart,swliveconnect,swvolume,swstretchstyle,swstretchhalign,swstretchvalign'); + setOptions('windowsmedia', 'autostart,enabled,enablecontextmenu,fullscreen,invokeurls,mute,stretchtofit,windowlessvideo,balance,baseurl,captioningid,currentmarker,currentposition,defaultframe,playcount,rate,uimode,volume'); + setOptions('realmedia', 'autostart,loop,autogotourl,center,imagestatus,maintainaspect,nojava,prefetch,shuffle,console,controls,numloop,scriptcallbacks'); + setOptions('video', 'poster,autoplay,loop,muted,preload,controls'); + setOptions('audio', 'autoplay,loop,preload,controls'); + setOptions('embeddedaudio', 'autoplay,loop,controls'); + setOptions('global', 'id,name,vspace,hspace,bgcolor,align,width,height'); + + if (to_form) { + if (data.type == 'video') { + if (data.video.sources[0]) + setVal('src', data.video.sources[0].src); + + src = data.video.sources[1]; + if (src) + setVal('video_altsource1', src.src); + + src = data.video.sources[2]; + if (src) + setVal('video_altsource2', src.src); + } else if (data.type == 'audio') { + if (data.video.sources[0]) + setVal('src', data.video.sources[0].src); + + src = data.video.sources[1]; + if (src) + setVal('audio_altsource1', src.src); + + src = data.video.sources[2]; + if (src) + setVal('audio_altsource2', src.src); + } else { + // Check flash vars + if (data.type == 'flash') { + tinymce.each(editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'}), function(value, name) { + if (value == '$url') + data.params.src = parseQueryParams(data.params.flashvars)[name] || data.params.src || ''; + }); + } + + setVal('src', data.params.src); + } + } else { + src = getVal("src"); + + // YouTube *NEW* + if (src.match(/youtu.be\/[a-z1-9.-_]+/)) { + data.width = 425; + data.height = 350; + data.params.frameborder = '0'; + data.type = 'iframe'; + src = 'http://www.youtube.com/embed/' + src.match(/youtu.be\/([a-z1-9.-_]+)/)[1]; + setVal('src', src); + setVal('media_type', data.type); + } + + // YouTube + if (src.match(/youtube.com(.+)v=([^&]+)/)) { + data.width = 425; + data.height = 350; + data.params.frameborder = '0'; + data.type = 'iframe'; + src = 'http://www.youtube.com/embed/' + src.match(/v=([^&]+)/)[1]; + setVal('src', src); + setVal('media_type', data.type); + } + + // Google video + if (src.match(/video.google.com(.+)docid=([^&]+)/)) { + data.width = 425; + data.height = 326; + data.type = 'flash'; + src = 'http://video.google.com/googleplayer.swf?docId=' + src.match(/docid=([^&]+)/)[1] + '&hl=en'; + setVal('src', src); + setVal('media_type', data.type); + } + + if (data.type == 'video') { + if (!data.video.sources) + data.video.sources = []; + + data.video.sources[0] = {src : src}; + + src = getVal("video_altsource1"); + if (src) + data.video.sources[1] = {src : src}; + + src = getVal("video_altsource2"); + if (src) + data.video.sources[2] = {src : src}; + } else if (data.type == 'audio') { + if (!data.video.sources) + data.video.sources = []; + + data.video.sources[0] = {src : src}; + + src = getVal("audio_altsource1"); + if (src) + data.video.sources[1] = {src : src}; + + src = getVal("audio_altsource2"); + if (src) + data.video.sources[2] = {src : src}; + } else + data.params.src = src; + + // Set default size + setVal('width', data.width || (data.type == 'audio' ? 300 : 320)); + setVal('height', data.height || (data.type == 'audio' ? 32 : 240)); + } + }, + + dataToForm : function() { + this.moveStates(true); + }, + + formToData : function(field) { + if (field == "width" || field == "height") + this.changeSize(field); + + if (field == 'source') { + this.moveStates(false, field); + setVal('source', this.editor.plugins.media.dataToHtml(this.data)); + this.panel = 'source'; + } else { + if (this.panel == 'source') { + this.data = clone(this.editor.plugins.media.htmlToData(getVal('source'))); + this.dataToForm(); + this.panel = ''; + } + + this.moveStates(false, field); + this.preview(); + } + }, + + beforeResize : function() { + this.width = parseInt(getVal('width') || (this.data.type == 'audio' ? "300" : "320"), 10); + this.height = parseInt(getVal('height') || (this.data.type == 'audio' ? "32" : "240"), 10); + }, + + changeSize : function(type) { + var width, height, scale, size; + + if (get('constrain').checked) { + width = parseInt(getVal('width') || (this.data.type == 'audio' ? "300" : "320"), 10); + height = parseInt(getVal('height') || (this.data.type == 'audio' ? "32" : "240"), 10); + + if (type == 'width') { + this.height = Math.round((width / this.width) * height); + setVal('height', this.height); + } else { + this.width = Math.round((height / this.height) * width); + setVal('width', this.width); + } + } + }, - return s; -} + getMediaListHTML : function() { + if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) { + var html = ""; -function generatePreview(c) { - var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh; + html += ''; - if (f.width.value != "" && f.height.value != "") { - if (f.constrain.checked) { - if (c == 'width' && oldWidth != 0) { - wp = nw / oldWidth; - nh = Math.round(wp * nh); - f.height.value = nh; - } else if (c == 'height' && oldHeight != 0) { - hp = nh / oldHeight; - nw = Math.round(hp * nw); - f.width.value = nw; + return html; } - } - } - if (f.width.value != "") - oldWidth = nw; - - if (f.height.value != "") - oldHeight = nh; - - // After constrain - pl = serializeParameters(); - - switch (f.media_type.options[f.media_type.selectedIndex].value) { - case "flash": - cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'; - codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; - type = 'application/x-shockwave-flash'; - break; - - case "shockwave": - cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000'; - codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0'; - type = 'application/x-director'; - break; - - case "qt": - cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'; - codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0'; - type = 'video/quicktime'; - break; - - case "wmp": - cls = ed.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6'; - codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; - type = 'application/x-mplayer2'; - break; - - case "rmp": - cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'; - codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; - type = 'audio/x-pn-realaudio-plugin'; - break; - } + return ""; + }, - if (pl == '') { - p.innerHTML = ''; - return; - } + getMediaTypeHTML : function(editor) { + function option(media_type, element) { + if (!editor.schema.getElementRule(element || media_type)) { + return ''; + } - pl = tinyMCEPopup.editor.plugins.media._parse(pl); + return '' + } - if (!pl.src) { - p.innerHTML = ''; - return; - } + var html = ""; - pl.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(pl.src); - pl.width = !pl.width ? 100 : pl.width; - pl.height = !pl.height ? 100 : pl.height; - pl.id = !pl.id ? 'obj' : pl.id; - pl.name = !pl.name ? 'eobj' : pl.name; - pl.align = !pl.align ? '' : pl.align; + html += ''; + return html; + }, - // Add extra url parameter if it's an absolute URL - if (n == 'src' && pl[n].indexOf('://') != -1) - h += ''; + setDefaultDialogSettings : function(editor) { + var defaultDialogSettings = editor.getParam("media_dialog_defaults", {}); + tinymce.each(defaultDialogSettings, function(v, k) { + setVal(k, v); + }); } - } - - h += ' - -
    -
    + + + @@ -24,28 +25,21 @@
    {#media_dlg.general} - +
    -
    - +
    - - - + @@ -56,10 +50,10 @@
    + + + - +
     
    - +
    - - + +
    x    x   
    @@ -78,18 +72,18 @@
    {#media_dlg.advanced} - +
    - + - + - + - +
    - @@ -100,9 +94,9 @@ - +
    - +
     
    @@ -111,192 +105,284 @@
    -
    - {#media_dlg.flash_options} +
    + {#media_dlg.html5_video_options} - +
    - + + - + + - + + - + + +
    - + + + + + +
     
    - + + + + + +
     
    - + + + + + +
     
    - + + +
    + -
    - + -
    + - - + +
    - + + + + + +
    + - - + + + +
    +
    + + + + + +
    +
    + + + +
    + + +
    + {#media_dlg.embedded_audio_options} + -
    - + -
    + - - + +
    - + - -
    + - - + +
    - - - - - - - - - +
    + + + + + +
    +
    -
    - {#media_dlg.flv_options} +
    + {#media_dlg.html5_audio_options} - +
    - + - - - - - - - - + + - - - - + + +
    - + + + + + +
     
    + + + + + +
     
    +
    + +
    + -
    - + -
    + - - + +
    - + + + +
    + + + + + +
    +
    + - - + +
    + + +
    + {#media_dlg.flash_options} + + + + + + + + + + + + + + + + + @@ -304,45 +390,57 @@
    + + + +
    + + + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    + + + + + + + + + + + +
    -
    +
    {#media_dlg.qt_options} - +
    @@ -350,19 +448,19 @@ @@ -370,19 +468,19 @@ @@ -390,19 +488,19 @@ @@ -410,27 +508,27 @@ - - + - - + + - - + + - - + + - - + + - - + + - - + + - +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - - - - - -
     
    + + + + + +
     
    -
    +
    {#media_dlg.wmp_options} - +
    @@ -504,19 +602,19 @@ @@ -524,19 +622,19 @@ @@ -544,86 +642,86 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    -
    +
    {#media_dlg.rmp_options} - +
    @@ -631,19 +729,19 @@ @@ -651,19 +749,19 @@ @@ -671,19 +769,19 @@ @@ -691,10 +789,10 @@ @@ -705,19 +803,19 @@ - - + + - - + + - - + + - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    - +
    - - + +
    @@ -725,11 +823,11 @@
    {#media_dlg.shockwave_options} - +
    - +
    - @@ -738,13 +836,13 @@
    - @@ -754,7 +852,7 @@ - @@ -765,18 +863,18 @@
    - +
    - +
    - +
    - +
    @@ -786,18 +884,18 @@
    - +
    - +
    - +
    - +
    @@ -806,6 +904,13 @@
    + +
    +
    + {#media_dlg.source} + +
    +
    diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf b/library/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf new file mode 100644 index 000000000..585d772d6 Binary files /dev/null and b/library/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf differ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js old mode 100755 new mode 100644 index f2dbbff2b..687f54866 --- a/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create("tinymce.plugins.Nonbreaking",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceNonBreaking",function(){a.execCommand("mceInsertContent",false,(a.plugins.visualchars&&a.plugins.visualchars.state)?'·':" ")});a.addButton("nonbreaking",{title:"nonbreaking.nonbreaking_desc",cmd:"mceNonBreaking"});if(a.getParam("nonbreaking_force_tab")){a.onKeyDown.add(function(d,f){if(tinymce.isIE&&f.keyCode==9){d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");tinymce.dom.Event.cancel(f)}})}},getInfo:function(){return{longname:"Nonbreaking space",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("nonbreaking",tinymce.plugins.Nonbreaking)})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.Nonbreaking",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceNonBreaking",function(){a.execCommand("mceInsertContent",false,(a.plugins.visualchars&&a.plugins.visualchars.state)?' ':" ")});a.addButton("nonbreaking",{title:"nonbreaking.nonbreaking_desc",cmd:"mceNonBreaking"});if(a.getParam("nonbreaking_force_tab")){a.onKeyDown.add(function(d,f){if(f.keyCode==9){f.preventDefault();d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking")}})}},getInfo:function(){return{longname:"Nonbreaking space",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("nonbreaking",tinymce.plugins.Nonbreaking)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js old mode 100755 new mode 100644 index e3b078bfa..d492fbefe --- a/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js @@ -17,7 +17,7 @@ // Register commands ed.addCommand('mceNonBreaking', function() { - ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? '·' : ' '); + ed.execCommand('mceInsertContent', false, (ed.plugins.visualchars && ed.plugins.visualchars.state) ? ' ' : ' '); }); // Register buttons @@ -25,11 +25,12 @@ if (ed.getParam('nonbreaking_force_tab')) { ed.onKeyDown.add(function(ed, e) { - if (tinymce.isIE && e.keyCode == 9) { + if (e.keyCode == 9) { + e.preventDefault(); + ed.execCommand('mceNonBreaking'); ed.execCommand('mceNonBreaking'); ed.execCommand('mceNonBreaking'); - tinymce.dom.Event.cancel(e); } }); } diff --git a/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js old mode 100755 new mode 100644 index 9945cd858..e7f301dbc --- a/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js @@ -1 +1 @@ -(function(){var a=tinymce.dom.Event;tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(d,e){var f=this,c,b;f.editor=d;c=d.getParam("noneditable_editable_class","mceEditable");b=d.getParam("noneditable_noneditable_class","mceNonEditable");d.onNodeChange.addToTop(function(h,g,k){var j,i;j=h.dom.getParent(h.selection.getStart(),function(l){return h.dom.hasClass(l,b)});i=h.dom.getParent(h.selection.getEnd(),function(l){return h.dom.hasClass(l,b)});if(j||i){f._setDisabled(1);return false}else{f._setDisabled(0)}})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_block:function(c,d){var b=d.keyCode;if((b>32&&b<41)||(b>111&&b<124)){return}return a.cancel(d)},_setDisabled:function(d){var c=this,b=c.editor;tinymce.each(b.controlManager.controls,function(e){e.setDisabled(d)});if(d!==c.disabled){if(d){b.onKeyDown.addToTop(c._block);b.onKeyPress.addToTop(c._block);b.onKeyUp.addToTop(c._block);b.onPaste.addToTop(c._block)}else{b.onKeyDown.remove(c._block);b.onKeyPress.remove(c._block);b.onKeyUp.remove(c._block);b.onPaste.remove(c._block)}c.disabled=d}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})(); \ No newline at end of file +(function(){var c=tinymce.dom.TreeWalker;var a="contenteditable",d="data-mce-"+a;var e=tinymce.VK;function b(n){var j=n.dom,p=n.selection,r,o="mce_noneditablecaret";r=tinymce.isGecko?"\u200B":"\uFEFF";function m(t){var s;if(t.nodeType===1){s=t.getAttribute(d);if(s&&s!=="inherit"){return s}s=t.contentEditable;if(s!=="inherit"){return s}}return null}function g(s){var t;while(s){t=m(s);if(t){return t==="false"?s:null}s=s.parentNode}}function l(s){while(s){if(s.id===o){return s}s=s.parentNode}}function k(s){var t;if(s){t=new c(s,s);for(s=t.current();s;s=t.next()){if(s.nodeType===3){return s}}}}function f(v,u){var s,t;if(m(v)==="false"){if(j.isBlock(v)){p.select(v);return}}t=j.createRng();if(m(v)==="true"){if(!v.firstChild){v.appendChild(n.getDoc().createTextNode("\u00a0"))}v=v.firstChild;u=true}s=j.create("span",{id:o,"data-mce-bogus":true},r);if(u){v.parentNode.insertBefore(s,v)}else{j.insertAfter(s,v)}t.setStart(s.firstChild,1);t.collapse(true);p.setRng(t);return s}function i(s){var v,t,u;if(s){rng=p.getRng(true);rng.setStartBefore(s);rng.setEndBefore(s);v=k(s);if(v&&v.nodeValue.charAt(0)==r){v=v.deleteData(0,1)}j.remove(s,true);p.setRng(rng)}else{t=l(p.getStart());while((s=j.get(o))&&s!==u){if(t!==s){v=k(s);if(v&&v.nodeValue.charAt(0)==r){v=v.deleteData(0,1)}j.remove(s,true)}u=s}}}function q(){var s,w,u,t,v;function x(B,D){var A,F,E,C,z;A=t.startContainer;F=t.startOffset;if(A.nodeType==3){z=A.nodeValue.length;if((F>0&&F0?F-1:F;A=A.childNodes[G];if(A.hasChildNodes()){A=A.firstChild}}else{return !D?B:null}}E=new c(A,B);while(C=E[D?"prev":"next"]()){if(C.nodeType===3&&C.nodeValue.length>0){return}else{if(m(C)==="true"){return C}}}return B}i();u=p.isCollapsed();s=g(p.getStart());w=g(p.getEnd());if(s||w){t=p.getRng(true);if(u){s=s||w;var y=p.getStart();if(v=x(s,true)){f(v,true)}else{if(v=x(s,false)){f(v,false)}else{p.select(s)}}}else{t=p.getRng(true);if(s){t.setStartBefore(s)}if(w){t.setEndAfter(w)}p.setRng(t)}}}function h(y,A){var E=A.keyCode,w,B,C,u;function t(G,F){while(G=G[F?"previousSibling":"nextSibling"]){if(G.nodeType!==3||G.nodeValue.length>0){return G}}}function x(F,G){p.select(F);p.collapse(G)}C=p.getStart();u=p.getEnd();w=g(C)||g(u);if(w&&(E<112||E>124)&&E!=e.DELETE&&E!=e.BACKSPACE){A.preventDefault();if(E==e.LEFT||E==e.RIGHT){var v=E==e.LEFT;if(y.dom.isBlock(w)){var z=v?w.previousSibling:w.nextSibling;var s=new c(z,z);var D=v?s.prev():s.next();x(D,!v)}else{x(w,v)}}}else{if(E==e.LEFT||E==e.RIGHT||E==e.BACKSPACE||E==e.DELETE){B=l(C);if(B){if(E==e.LEFT||E==e.BACKSPACE){w=t(B,true);if(w&&m(w)==="false"){A.preventDefault();if(E==e.LEFT){x(w,true)}else{j.remove(w)}}else{i(B)}}if(E==e.RIGHT||E==e.DELETE){w=t(B);if(w&&m(w)==="false"){A.preventDefault();if(E==e.RIGHT){x(w,false)}else{j.remove(w)}}else{i(B)}}}}}}n.onMouseDown.addToTop(function(s,u){var t=s.selection.getNode();if(m(t)==="false"&&t==u.target){u.preventDefault()}});n.onMouseUp.addToTop(q);n.onKeyDown.addToTop(h);n.onKeyUp.addToTop(q)}tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(h,j){var g,f,i;g=" "+tinymce.trim(h.getParam("noneditable_editable_class","mceEditable"))+" ";f=" "+tinymce.trim(h.getParam("noneditable_noneditable_class","mceNonEditable"))+" ";i=h.getParam("noneditable_regexp");if(i&&!i.length){i=[i]}h.onPreInit.add(function(){b(h);if(i){h.onBeforeSetContent.add(function(l,m){var n=i.length,o=m.content,k=tinymce.trim(f);if(m.format=="raw"){return}while(n--){o=o.replace(i[n],function(){var p=arguments;return''+l.dom.encode(typeof(p[1])==="string"?p[1]:p[0])+""})}m.content=o})}h.parser.addAttributeFilter("class",function(k){var l=k.length,m,n;while(l--){n=k[l];m=" "+n.attr("class")+" ";if(m.indexOf(g)!==-1){n.attr(d,"true")}else{if(m.indexOf(f)!==-1){n.attr(d,"false")}}}});h.serializer.addAttributeFilter(d,function(k,l){var m=k.length,n;while(m--){n=k[m];if(i&&n.attr("data-mce-content")){n.name="#text";n.type=3;n.raw=true;n.value=n.attr("data-mce-content")}else{n.attr(a,null);n.attr(d,null)}}});h.parser.addAttributeFilter(a,function(k,l){var m=k.length,n;while(m--){n=k[m];n.attr(d,n.attr(a));n.attr(a,null)}})})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js old mode 100755 new mode 100644 index 656c971b8..c87d241bd --- a/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js @@ -9,34 +9,416 @@ */ (function() { - var Event = tinymce.dom.Event; + var TreeWalker = tinymce.dom.TreeWalker; + var externalName = 'contenteditable', internalName = 'data-mce-' + externalName; + var VK = tinymce.VK; + + function handleContentEditableSelection(ed) { + var dom = ed.dom, selection = ed.selection, invisibleChar, caretContainerId = 'mce_noneditablecaret'; + + // Setup invisible character use zero width space on Gecko since it doesn't change the height of the container + invisibleChar = tinymce.isGecko ? '\u200B' : '\uFEFF'; + + // Returns the content editable state of a node "true/false" or null + function getContentEditable(node) { + var contentEditable; + + // Ignore non elements + if (node.nodeType === 1) { + // Check for fake content editable + contentEditable = node.getAttribute(internalName); + if (contentEditable && contentEditable !== "inherit") { + return contentEditable; + } + + // Check for real content editable + contentEditable = node.contentEditable; + if (contentEditable !== "inherit") { + return contentEditable; + } + } + + return null; + }; + + // Returns the noneditable parent or null if there is a editable before it or if it wasn't found + function getNonEditableParent(node) { + var state; + + while (node) { + state = getContentEditable(node); + if (state) { + return state === "false" ? node : null; + } + + node = node.parentNode; + } + }; + + // Get caret container parent for the specified node + function getParentCaretContainer(node) { + while (node) { + if (node.id === caretContainerId) { + return node; + } + + node = node.parentNode; + } + }; + + // Finds the first text node in the specified node + function findFirstTextNode(node) { + var walker; + + if (node) { + walker = new TreeWalker(node, node); + + for (node = walker.current(); node; node = walker.next()) { + if (node.nodeType === 3) { + return node; + } + } + } + }; + + // Insert caret container before/after target or expand selection to include block + function insertCaretContainerOrExpandToBlock(target, before) { + var caretContainer, rng; + + // Select block + if (getContentEditable(target) === "false") { + if (dom.isBlock(target)) { + selection.select(target); + return; + } + } + + rng = dom.createRng(); + + if (getContentEditable(target) === "true") { + if (!target.firstChild) { + target.appendChild(ed.getDoc().createTextNode('\u00a0')); + } + + target = target.firstChild; + before = true; + } + + //caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true, style:'border: 1px solid red'}, invisibleChar); + caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true}, invisibleChar); + + if (before) { + target.parentNode.insertBefore(caretContainer, target); + } else { + dom.insertAfter(caretContainer, target); + } + + rng.setStart(caretContainer.firstChild, 1); + rng.collapse(true); + selection.setRng(rng); + + return caretContainer; + }; + + // Removes any caret container except the one we might be in + function removeCaretContainer(caretContainer) { + var child, currentCaretContainer, lastContainer; + + if (caretContainer) { + rng = selection.getRng(true); + rng.setStartBefore(caretContainer); + rng.setEndBefore(caretContainer); + + child = findFirstTextNode(caretContainer); + if (child && child.nodeValue.charAt(0) == invisibleChar) { + child = child.deleteData(0, 1); + } + + dom.remove(caretContainer, true); + + selection.setRng(rng); + } else { + currentCaretContainer = getParentCaretContainer(selection.getStart()); + while ((caretContainer = dom.get(caretContainerId)) && caretContainer !== lastContainer) { + if (currentCaretContainer !== caretContainer) { + child = findFirstTextNode(caretContainer); + if (child && child.nodeValue.charAt(0) == invisibleChar) { + child = child.deleteData(0, 1); + } + + dom.remove(caretContainer, true); + } + + lastContainer = caretContainer; + } + } + }; + + // Modifies the selection to include contentEditable false elements or insert caret containers + function moveSelection() { + var nonEditableStart, nonEditableEnd, isCollapsed, rng, element; + + // Checks if there is any contents to the left/right side of caret returns the noneditable element or any editable element if it finds one inside + function hasSideContent(element, left) { + var container, offset, walker, node, len; + + container = rng.startContainer; + offset = rng.startOffset; + + // If endpoint is in middle of text node then expand to beginning/end of element + if (container.nodeType == 3) { + len = container.nodeValue.length; + if ((offset > 0 && offset < len) || (left ? offset == len : offset == 0)) { + return; + } + } else { + // Can we resolve the node by index + if (offset < container.childNodes.length) { + // Browser represents caret position as the offset at the start of an element. When moving right + // this is the element we are moving into so we consider our container to be child node at offset-1 + var pos = !left && offset > 0 ? offset-1 : offset; + container = container.childNodes[pos]; + if (container.hasChildNodes()) { + container = container.firstChild; + } + } else { + // If not then the caret is at the last position in it's container and the caret container should be inserted after the noneditable element + return !left ? element : null; + } + } + + // Walk left/right to look for contents + walker = new TreeWalker(container, element); + while (node = walker[left ? 'prev' : 'next']()) { + if (node.nodeType === 3 && node.nodeValue.length > 0) { + return; + } else if (getContentEditable(node) === "true") { + // Found contentEditable=true element return this one to we can move the caret inside it + return node; + } + } + + return element; + }; + + // Remove any existing caret containers + removeCaretContainer(); + + // Get noneditable start/end elements + isCollapsed = selection.isCollapsed(); + nonEditableStart = getNonEditableParent(selection.getStart()); + nonEditableEnd = getNonEditableParent(selection.getEnd()); + + // Is any fo the range endpoints noneditable + if (nonEditableStart || nonEditableEnd) { + rng = selection.getRng(true); + + // If it's a caret selection then look left/right to see if we need to move the caret out side or expand + if (isCollapsed) { + nonEditableStart = nonEditableStart || nonEditableEnd; + var start = selection.getStart(); + if (element = hasSideContent(nonEditableStart, true)) { + // We have no contents to the left of the caret then insert a caret container before the noneditable element + insertCaretContainerOrExpandToBlock(element, true); + } else if (element = hasSideContent(nonEditableStart, false)) { + // We have no contents to the right of the caret then insert a caret container after the noneditable element + insertCaretContainerOrExpandToBlock(element, false); + } else { + // We are in the middle of a noneditable so expand to select it + selection.select(nonEditableStart); + } + } else { + rng = selection.getRng(true); + + // Expand selection to include start non editable element + if (nonEditableStart) { + rng.setStartBefore(nonEditableStart); + } + + // Expand selection to include end non editable element + if (nonEditableEnd) { + rng.setEndAfter(nonEditableEnd); + } + + selection.setRng(rng); + } + } + }; + + function handleKey(ed, e) { + var keyCode = e.keyCode, nonEditableParent, caretContainer, startElement, endElement; + + function getNonEmptyTextNodeSibling(node, prev) { + while (node = node[prev ? 'previousSibling' : 'nextSibling']) { + if (node.nodeType !== 3 || node.nodeValue.length > 0) { + return node; + } + } + }; + + function positionCaretOnElement(element, start) { + selection.select(element); + selection.collapse(start); + } + + startElement = selection.getStart() + endElement = selection.getEnd(); + + // Disable all key presses in contentEditable=false except delete or backspace + nonEditableParent = getNonEditableParent(startElement) || getNonEditableParent(endElement); + if (nonEditableParent && (keyCode < 112 || keyCode > 124) && keyCode != VK.DELETE && keyCode != VK.BACKSPACE) { + e.preventDefault(); + + // Arrow left/right select the element and collapse left/right + if (keyCode == VK.LEFT || keyCode == VK.RIGHT) { + var left = keyCode == VK.LEFT; + // If a block element find previous or next element to position the caret + if (ed.dom.isBlock(nonEditableParent)) { + var targetElement = left ? nonEditableParent.previousSibling : nonEditableParent.nextSibling; + var walker = new TreeWalker(targetElement, targetElement); + var caretElement = left ? walker.prev() : walker.next(); + positionCaretOnElement(caretElement, !left); + } else { + positionCaretOnElement(nonEditableParent, left); + } + } + } else { + // Is arrow left/right, backspace or delete + if (keyCode == VK.LEFT || keyCode == VK.RIGHT || keyCode == VK.BACKSPACE || keyCode == VK.DELETE) { + caretContainer = getParentCaretContainer(startElement); + if (caretContainer) { + // Arrow left or backspace + if (keyCode == VK.LEFT || keyCode == VK.BACKSPACE) { + nonEditableParent = getNonEmptyTextNodeSibling(caretContainer, true); + + if (nonEditableParent && getContentEditable(nonEditableParent) === "false") { + e.preventDefault(); + + if (keyCode == VK.LEFT) { + positionCaretOnElement(nonEditableParent, true); + } else { + dom.remove(nonEditableParent); + } + } else { + removeCaretContainer(caretContainer); + } + } + + // Arrow right or delete + if (keyCode == VK.RIGHT || keyCode == VK.DELETE) { + nonEditableParent = getNonEmptyTextNodeSibling(caretContainer); + + if (nonEditableParent && getContentEditable(nonEditableParent) === "false") { + e.preventDefault(); + + if (keyCode == VK.RIGHT) { + positionCaretOnElement(nonEditableParent, false); + } else { + dom.remove(nonEditableParent); + } + } else { + removeCaretContainer(caretContainer); + } + } + } + } + } + }; + + ed.onMouseDown.addToTop(function(ed, e){ + // prevent collapsing selection to caret when clicking in a non-editable section + var node = ed.selection.getNode(); + if (getContentEditable(node) === "false" && node == e.target) { + e.preventDefault(); + } + }); + ed.onMouseUp.addToTop(moveSelection); + ed.onKeyDown.addToTop(handleKey); + ed.onKeyUp.addToTop(moveSelection); + }; tinymce.create('tinymce.plugins.NonEditablePlugin', { init : function(ed, url) { - var t = this, editClass, nonEditClass; + var editClass, nonEditClass, nonEditableRegExps; + + editClass = " " + tinymce.trim(ed.getParam("noneditable_editable_class", "mceEditable")) + " "; + nonEditClass = " " + tinymce.trim(ed.getParam("noneditable_noneditable_class", "mceNonEditable")) + " "; + + // Setup noneditable regexps array + nonEditableRegExps = ed.getParam("noneditable_regexp"); + if (nonEditableRegExps && !nonEditableRegExps.length) { + nonEditableRegExps = [nonEditableRegExps]; + } + + ed.onPreInit.add(function() { + handleContentEditableSelection(ed); + + if (nonEditableRegExps) { + ed.onBeforeSetContent.add(function(ed, args) { + var i = nonEditableRegExps.length, content = args.content, cls = tinymce.trim(nonEditClass); + + // Don't replace the variables when raw is used for example on undo/redo + if (args.format == "raw") { + return; + } - t.editor = ed; - editClass = ed.getParam("noneditable_editable_class", "mceEditable"); - nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable"); + while (i--) { + content = content.replace(nonEditableRegExps[i], function() { + var args = arguments; - ed.onNodeChange.addToTop(function(ed, cm, n) { - var sc, ec; + return '' + ed.dom.encode(typeof(args[1]) === "string" ? args[1] : args[0]) + ''; + }); + } - // Block if start or end is inside a non editable element - sc = ed.dom.getParent(ed.selection.getStart(), function(n) { - return ed.dom.hasClass(n, nonEditClass); + args.content = content; + }); + } + + // Apply contentEditable true/false on elements with the noneditable/editable classes + ed.parser.addAttributeFilter('class', function(nodes) { + var i = nodes.length, className, node; + + while (i--) { + node = nodes[i]; + className = " " + node.attr("class") + " "; + + if (className.indexOf(editClass) !== -1) { + node.attr(internalName, "true"); + } else if (className.indexOf(nonEditClass) !== -1) { + node.attr(internalName, "false"); + } + } }); - ec = ed.dom.getParent(ed.selection.getEnd(), function(n) { - return ed.dom.hasClass(n, nonEditClass); + // Remove internal name + ed.serializer.addAttributeFilter(internalName, function(nodes, name) { + var i = nodes.length, node; + + while (i--) { + node = nodes[i]; + + if (nonEditableRegExps && node.attr('data-mce-content')) { + node.name = "#text"; + node.type = 3; + node.raw = true; + node.value = node.attr('data-mce-content'); + } else { + node.attr(externalName, null); + node.attr(internalName, null); + } + } }); - // Block or unblock - if (sc || ec) { - t._setDisabled(1); - return false; - } else - t._setDisabled(0); + // Convert external name into internal name + ed.parser.addAttributeFilter(externalName, function(nodes, name) { + var i = nodes.length, node; + + while (i--) { + node = nodes[i]; + node.attr(internalName, node.attr(externalName)); + node.attr(externalName, null); + } + }); }); }, @@ -48,40 +430,6 @@ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable', version : tinymce.majorVersion + "." + tinymce.minorVersion }; - }, - - _block : function(ed, e) { - var k = e.keyCode; - - // Don't block arrow keys, pg up/down, and F1-F12 - if ((k > 32 && k < 41) || (k > 111 && k < 124)) - return; - - return Event.cancel(e); - }, - - _setDisabled : function(s) { - var t = this, ed = t.editor; - - tinymce.each(ed.controlManager.controls, function(c) { - c.setDisabled(s); - }); - - if (s !== t.disabled) { - if (s) { - ed.onKeyDown.addToTop(t._block); - ed.onKeyPress.addToTop(t._block); - ed.onKeyUp.addToTop(t._block); - ed.onPaste.addToTop(t._block); - } else { - ed.onKeyDown.remove(t._block); - ed.onKeyPress.remove(t._block); - ed.onKeyUp.remove(t._block); - ed.onPaste.remove(t._block); - } - - t.disabled = s; - } } }); diff --git a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css b/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css deleted file mode 100755 index c949d58cc..000000000 --- a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css +++ /dev/null @@ -1 +0,0 @@ -.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../img/pagebreak.gif) no-repeat center top;} diff --git a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js old mode 100755 new mode 100644 index a212f6963..35085e8ad --- a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='',a="mcePageBreak",c=b.getParam("pagebreak_separator",""),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.settings.content_css!==false){b.dom.loadCSS(d+"/css/content.css")}if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},getInfo:function(){return{longname:"PageBreak",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("pagebreak",tinymce.plugins.PageBreakPlugin)})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='',a="mcePageBreak",c=b.getParam("pagebreak_separator",""),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},getInfo:function(){return{longname:"PageBreak",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("pagebreak",tinymce.plugins.PageBreakPlugin)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js old mode 100755 new mode 100644 index 4e1eb0a7a..a094c1916 --- a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js @@ -11,7 +11,7 @@ (function() { tinymce.create('tinymce.plugins.PageBreakPlugin', { init : function(ed, url) { - var pb = '', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', ''), pbRE; + var pb = '', cls = 'mcePageBreak', sep = ed.getParam('pagebreak_separator', ''), pbRE; pbRE = new RegExp(sep.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g, function(a) {return '\\' + a;}), 'g'); @@ -24,9 +24,6 @@ ed.addButton('pagebreak', {title : 'pagebreak.desc', cmd : cls}); ed.onInit.add(function() { - if (ed.settings.content_css !== false) - ed.dom.loadCSS(url + "/css/content.css"); - if (ed.theme.onResolveName) { ed.theme.onResolveName.add(function(th, o) { if (o.node.nodeName == 'IMG' && ed.dom.hasClass(o.node, cls)) diff --git a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif b/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif deleted file mode 100755 index acdf4085f..000000000 Binary files a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif and /dev/null differ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif b/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif deleted file mode 100755 index 388486517..000000000 Binary files a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif and /dev/null differ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js old mode 100755 new mode 100644 index 3e7b2504f..e47a5c630 --- a/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js @@ -1 +1 @@ -(function(){var c=tinymce.each,d=null,a={paste_auto_cleanup_on_paste:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_text_use_dialog:false,paste_text_sticky:false,paste_text_notifyalways:false,paste_text_linebreaktype:"p",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(e,f){return e.getParam(f,a[f])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(e,f){var g=this;g.editor=e;g.url=f;g.onPreProcess=new tinymce.util.Dispatcher(g);g.onPostProcess=new tinymce.util.Dispatcher(g);g.onPreProcess.add(g._preProcess);g.onPostProcess.add(g._postProcess);g.onPreProcess.add(function(j,k){e.execCallback("paste_preprocess",j,k)});g.onPostProcess.add(function(j,k){e.execCallback("paste_postprocess",j,k)});e.pasteAsPlainText=false;function i(l,j){var k=e.dom;g.onPreProcess.dispatch(g,l);l.node=k.create("div",0,l.content);g.onPostProcess.dispatch(g,l);l.content=e.serializer.serialize(l.node,{getInner:1});if((!j)&&(e.pasteAsPlainText)){g._insertPlainText(e,k,l.content);if(!b(e,"paste_text_sticky")){e.pasteAsPlainText=false;e.controlManager.setActive("pastetext",false)}}else{if(/<(p|h[1-6]|ul|ol)/.test(l.content)){g._insertBlockContent(e,k,l.content)}else{g._insert(l.content)}}}e.addCommand("mceInsertClipboardContent",function(j,k){i(k,true)});if(!b(e,"paste_text_use_dialog")){e.addCommand("mcePasteText",function(k,j){var l=tinymce.util.Cookie;e.pasteAsPlainText=!e.pasteAsPlainText;e.controlManager.setActive("pastetext",e.pasteAsPlainText);if((e.pasteAsPlainText)&&(!l.get("tinymcePasteText"))){if(b(e,"paste_text_sticky")){e.windowManager.alert(e.translate("paste.plaintext_mode_sticky"))}else{e.windowManager.alert(e.translate("paste.plaintext_mode_sticky"))}if(!b(e,"paste_text_notifyalways")){l.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}e.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});e.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function h(s){var m,q,k,l=e.selection,p=e.dom,r=e.getBody(),j;if(e.pasteAsPlainText&&(s.clipboardData||p.doc.dataTransfer)){s.preventDefault();i({content:(s.clipboardData||p.doc.dataTransfer).getData("Text")},true);return}if(p.get("_mcePaste")){return}m=p.add(r,"div",{id:"_mcePaste","class":"mcePaste"},"\uFEFF");if(r!=e.getDoc().body){j=p.getPos(e.selection.getStart(),r).y}else{j=r.scrollTop}p.setStyles(m,{position:"absolute",left:-10000,top:j,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){k=p.doc.body.createTextRange();k.moveToElementText(m);k.execCommand("Paste");p.remove(m);if(m.innerHTML==="\uFEFF"){e.execCommand("mcePasteWord");s.preventDefault();return}i({content:m.innerHTML});return tinymce.dom.Event.cancel(s)}else{function o(n){n.preventDefault()}p.bind(e.getDoc(),"mousedown",o);p.bind(e.getDoc(),"keydown",o);q=e.selection.getRng();m=m.firstChild;k=e.getDoc().createRange();k.setStart(m,0);k.setEnd(m,1);l.setRng(k);window.setTimeout(function(){var t="",n=p.select("div.mcePaste");c(n,function(u){c(p.select("div.mcePaste",u),function(v){p.remove(v,1)});c(p.select("span.Apple-style-span",u),function(v){p.remove(v,1)});t+=u.innerHTML});c(n,function(u){p.remove(u)});if(q){l.setRng(q)}i({content:t});p.unbind(e.getDoc(),"mousedown",o);p.unbind(e.getDoc(),"keydown",o)},0)}}if(b(e,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){e.onKeyDown.add(function(j,k){if(((tinymce.isMac?k.metaKey:k.ctrlKey)&&k.keyCode==86)||(k.shiftKey&&k.keyCode==45)){h(k)}})}else{e.onPaste.addToTop(function(j,k){return h(k)})}}if(b(e,"paste_block_drop")){e.onInit.add(function(){e.dom.bind(e.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(j){j.preventDefault();j.stopPropagation();return false})})}g._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(i,f){var l=this.editor,k=f.content,q=tinymce.grep,p=tinymce.explode,g=tinymce.trim,m,j;function e(h){c(h,function(o){if(o.constructor==RegExp){k=k.replace(o,"")}else{k=k.replace(o[0],o[1])}})}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(k)||f.wordContent){f.wordContent=true;e([/^\s*( )+/gi,/( |]*>)+\s*$/gi]);if(b(l,"paste_convert_headers_to_strong")){k=k.replace(/

    ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"

    $1

    ")}if(b(l,"paste_convert_middot_lists")){e([[//gi,"$&__MCE_ITEM__"],[/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"]])}e([//gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\u00a0"]]);do{m=k.length;k=k.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(m!=k.length);if(b(l,"paste_retain_style_properties").replace(/^none$/i,"").length==0){k=k.replace(/<\/?span[^>]*>/gi,"")}else{e([[/([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(u,h,t){var v=[],o=0,r=p(g(t).replace(/"/gi,"'"),";");c(r,function(s){var w,y,z=p(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":v[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":v[o++]="text-align:"+y;return;case"vert-align":v[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":v[o++]="color:"+y;return;case"mso-background":case"mso-highlight":v[o++]="background:"+y;return;case"mso-default-height":v[o++]="min-height:"+x(y);return;case"mso-default-width":v[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":v[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){v[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){v[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}v[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+v.join(";")+'"'}else{return h}}]])}}if(b(l,"paste_convert_headers_to_strong")){e([[/]*>/gi,"

    "],[/<\/h[1-6][^>]*>/gi,"

    "]])}j=b(l,"paste_strip_class_attributes");if(j!=="none"){function n(r,o){if(j==="all"){return""}var h=q(p(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(s){return(/^(?!mso)/i.test(s))});return h.length?' class="'+h.join(" ")+'"':""}k=k.replace(/ class="([^"]+)"/gi,n);k=k.replace(/ class=(\w+)/gi,n)}if(b(l,"paste_remove_spans")){k=k.replace(/<\/?span[^>]*>/gi,"")}f.content=k},_postProcess:function(h,j){var g=this,f=g.editor,i=f.dom,e;if(j.wordContent){c(i.select("a",j.node),function(k){if(!k.href||k.href.indexOf("#_Toc")!=-1){i.remove(k,1)}});if(b(f,"paste_convert_middot_lists")){g._convertLists(h,j)}e=b(f,"paste_retain_style_properties");if((tinymce.is(e,"string"))&&(e!=="all")&&(e!=="*")){e=tinymce.explode(e.replace(/^none$/i,""));c(i.select("*",j.node),function(n){var o={},l=0,m,p,k;if(e){for(m=0;m0){i.setStyles(n,o)}else{if(n.nodeName=="SPAN"&&!n.className){i.remove(n,true)}}})}}if(b(f,"paste_remove_styles")||(b(f,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(i.select("*[style]",j.node),function(k){k.removeAttribute("style");k.removeAttribute("_mce_style")})}else{if(tinymce.isWebKit){c(i.select("*",j.node),function(k){k.removeAttribute("_mce_style")})}}},_convertLists:function(h,f){var j=h.editor.dom,i,m,e=-1,g,n=[],l,k;c(j.select("p",f.node),function(u){var r,v="",t,s,o,q;for(r=u.firstChild;r&&r.nodeType==3;r=r.nextSibling){v+=r.nodeValue}v=u.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/ /g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0*/.test(v)){t="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0{2,}/.test(v)){t="ol"}if(t){g=parseFloat(u.style.marginLeft||0);if(g>e){n.push(g)}if(!i||t!=l){i=j.create(t);j.insertAfter(i,u)}else{if(g>e){i=m.appendChild(j.create(t))}else{if(g]*>/gi,"");if(t=="ul"&&/^[\u2022\u00b7\u00a7\u00d8o]/.test(p)){j.remove(w)}else{if(/^[\s\S]*\w+\.( |\u00a0)*\s*/.test(p)){j.remove(w)}}});s=u.innerHTML;if(t=="ul"){s=u.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*( |\u00a0)+\s*/,"")}else{s=u.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.( |\u00a0)+\s*/,"")}m=i.appendChild(j.create("li",0,s));j.remove(u);e=g;l=t}else{i=e=0}});k=f.node.innerHTML;if(k.indexOf("__MCE_ITEM__")!=-1){f.node.innerHTML=k.replace(/__MCE_ITEM__/g,"")}},_insertBlockContent:function(l,h,m){var f,j,g=l.selection,q,n,e,o,i,k="mce_marker";function p(t){var s;if(tinymce.isIE){s=l.getDoc().body.createTextRange();s.moveToElementText(t);s.collapse(false);s.select()}else{g.select(t,1);g.collapse(false)}}this._insert(' ',1);j=h.get(k);f=h.getParent(j,"p,h1,h2,h3,h4,h5,h6,ul,ol,th,td");if(f&&!/TD|TH/.test(f.nodeName)){j=h.split(f,j);c(h.create("div",0,m).childNodes,function(r){q=j.parentNode.insertBefore(r.cloneNode(true),j)});p(q)}else{h.setOuterHTML(j,m);g.select(l.getBody(),1);g.collapse(0)}while(n=h.get(k)){h.remove(n)}n=g.getStart();e=h.getViewPort(l.getWin());o=l.dom.getPos(n).y;i=n.clientHeight;if(oe.y+e.h){l.getDoc().body.scrollTop=o0)){if(!d){d=("34,quot,38,amp,39,apos,60,lt,62,gt,"+j.serializer.settings.entities).split(",")}if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(v)){q([/[\n\r]+/g])}else{q([/\r+/g])}q([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/ /gi," "],[/&(#\d+|[a-z0-9]{1,10});/gi,function(i,h){if(h.charAt(0)==="#"){return String.fromCharCode(h.slice(1))}else{return((i=y(d,h))>0)?String.fromCharCode(d[i-1]):" "}}],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"],[/\n{3,}/g,"\n\n"],/^\s+|\s+$/g]);v=x.encode(v);if(!s.isCollapsed()){z.execCommand("Delete",false,null)}if(m(o,"array")||(m(o,"array"))){q(o)}else{if(m(o,"string")){q(new RegExp(o,"gi"))}}if(g=="none"){q([[/\n+/g," "]])}else{if(g=="br"){q([[/\n/g,"
    "]])}else{q([/^\s+|\s+$/g,[/\n\n/g,"

    "],[/\n/g,"
    "]])}}if((l=v.indexOf("

    "))!=-1){k=v.lastIndexOf("

    ");r=s.getNode();e=[];do{if(r.nodeType==1){if(r.nodeName=="TD"||r.nodeName=="BODY"){break}e[e.length]=r}}while(r=r.parentNode);if(e.length>0){p=v.substring(0,l);f="";for(t=0,u=e.length;t";f+="<"+e[e.length-t-1].nodeName.toLowerCase()+">"}if(l==k){v=p+f+v.substring(l+7)}else{v=p+v.substring(l+4,k+4)+f+v.substring(k+7)}}}j.execCommand("mceInsertRawHTML",false,v+' ');window.setTimeout(function(){var h=x.get("_plain_text_marker"),B,i,A,w;s.select(h,false);z.execCommand("Delete",false,null);h=null;B=s.getStart();i=x.getViewPort(n);A=x.getPos(B).y;w=B.clientHeight;if((Ai.y+i.h)){z.body.scrollTop=A")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="

    "+o.encode(r).replace(/\r?\n\r?\n/g,"

    ").replace(/\r?\n/g,"
    ")+"

    "}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9){d([[/(?:
     [\s\r\n]+|
    )*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:
     [\s\r\n]+|
    )*/g,"$1"]]);d([[/

    /g,"

    "],[/
    /g," "],[/

    /g,"
    "]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*( )+/gi,/( |]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/

    ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"

    $1

    ")}if(b(k,"paste_convert_middot_lists")){d([[//gi,"$&__MCE_ITEM__"],[/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([//gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/"/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/]*>/gi,"

    "],[/<\/h[1-6][^>]*>/gi,"

    "]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/ /g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.( |\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*( |\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.( |\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(g){var d=this.editor,e=b(d,"paste_text_linebreaktype"),i=b(d,"paste_text_replacements"),f=tinymce.is;function h(j){c(j,function(k){if(k.constructor==RegExp){g=g.replace(k,"")}else{g=g.replace(k[0],k[1])}})}if((typeof(g)==="string")&&(g.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(g)){h([/[\n\r]+/g])}else{h([/\r+/g])}h([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/ /gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"],[/\n{3,}/g,"\n\n"]]);g=d.dom.decode(tinymce.html.Entities.encodeRaw(g));if(f(i,"array")){h(i)}else{if(f(i,"string")){h(new RegExp(i,"gi"))}}if(e=="none"){h([[/\n+/g," "]])}else{if(e=="br"){h([[/\n/g,"
    "]])}else{if(e=="p"){h([[/\n+/g,"

    "],[/^(.*<\/p>)(

    )$/,"

    $1"]])}else{h([[/\n\n/g,"

    "],[/^(.*<\/p>)(

    )$/,"

    $1"],[/\n/g,"
    "]])}}}d.execCommand("mceInsertContent",false,g)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js old mode 100755 new mode 100644 index 4c3bf6542..73fe7fe9a --- a/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js @@ -10,9 +10,9 @@ (function() { var each = tinymce.each, - entities = null, defs = { paste_auto_cleanup_on_paste : true, + paste_enable_default_filters : true, paste_block_drop : false, paste_retain_style_properties : "none", paste_strip_class_attributes : "mso", @@ -25,8 +25,9 @@ paste_dialog_height : "400", paste_text_use_dialog : false, paste_text_sticky : false, + paste_text_sticky_default : false, paste_text_notifyalways : false, - paste_text_linebreaktype : "p", + paste_text_linebreaktype : "combined", paste_text_replacements : [ [/\u2026/g, "..."], [/[\x93\x94\u201c\u201d]/g, '"'], @@ -63,13 +64,19 @@ ed.execCallback('paste_postprocess', pl, o); }); + ed.onKeyDown.addToTop(function(ed, e) { + // Block ctrl+v from adding an undo level since the default logic in tinymce.Editor will add that + if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45)) + return false; // Stop other listeners + }); + // Initialize plain text flag - ed.pasteAsPlainText = false; + ed.pasteAsPlainText = getParam(ed, 'paste_text_sticky_default'); // This function executes the process handlers and inserts the contents // force_rich overrides plain text mode set by user, important for pasting with execCommand function process(o, force_rich) { - var dom = ed.dom; + var dom = ed.dom, rng; // Execute pre process handlers t.onPreProcess.dispatch(t, o); @@ -77,23 +84,31 @@ // Create DOM structure o.node = dom.create('div', 0, o.content); + // If pasting inside the same element and the contents is only one block + // remove the block and keep the text since Firefox will copy parts of pre and h1-h6 as a pre element + if (tinymce.isGecko) { + rng = ed.selection.getRng(true); + if (rng.startContainer == rng.endContainer && rng.startContainer.nodeType == 3) { + // Is only one block node and it doesn't contain word stuff + if (o.node.childNodes.length === 1 && /^(p|h[1-6]|pre)$/i.test(o.node.firstChild.nodeName) && o.content.indexOf('__MCE_ITEM__') === -1) + dom.remove(o.node.firstChild, true); + } + } + // Execute post process handlers t.onPostProcess.dispatch(t, o); // Serialize content - o.content = ed.serializer.serialize(o.node, {getInner : 1}); + o.content = ed.serializer.serialize(o.node, {getInner : 1, forced_root_block : ''}); // Plain text option active? if ((!force_rich) && (ed.pasteAsPlainText)) { - t._insertPlainText(ed, dom, o.content); + t._insertPlainText(o.content); if (!getParam(ed, "paste_text_sticky")) { ed.pasteAsPlainText = false; ed.controlManager.setActive("pastetext", false); } - } else if (/<(p|h[1-6]|ul|ol)/.test(o.content)) { - // Handle insertion of contents containing block elements separately - t._insertBlockContent(ed, dom, o.content); } else { t._insert(o.content); } @@ -115,7 +130,7 @@ if (getParam(ed, "paste_text_sticky")) { ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky')); } else { - ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky')); + ed.windowManager.alert(ed.translate('paste.plaintext_mode')); } if (!getParam(ed, "paste_text_notifyalways")) { @@ -132,38 +147,46 @@ // hidden div and placing the caret inside it and after the browser paste // is done it grabs that contents and processes that function grabContent(e) { - var n, or, rng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY; + var n, or, rng, oldRng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY, textContent; // Check if browser supports direct plaintext access - if (ed.pasteAsPlainText && (e.clipboardData || dom.doc.dataTransfer)) { - e.preventDefault(); - process({content : (e.clipboardData || dom.doc.dataTransfer).getData('Text')}, true); - return; + if (e.clipboardData || dom.doc.dataTransfer) { + textContent = (e.clipboardData || dom.doc.dataTransfer).getData('Text'); + + if (ed.pasteAsPlainText) { + e.preventDefault(); + process({content : dom.encode(textContent).replace(/\r?\n/g, '
    ')}); + return; + } } if (dom.get('_mcePaste')) return; // Create container to paste into - n = dom.add(body, 'div', {id : '_mcePaste', 'class' : 'mcePaste'}, '\uFEFF'); + n = dom.add(body, 'div', {id : '_mcePaste', 'class' : 'mcePaste', 'data-mce-bogus' : '1'}, '\uFEFF\uFEFF'); // If contentEditable mode we need to find out the position of the closest element if (body != ed.getDoc().body) posY = dom.getPos(ed.selection.getStart(), body).y; else - posY = body.scrollTop; + posY = body.scrollTop + dom.getViewPort(ed.getWin()).y; // Styles needs to be applied after the element is added to the document since WebKit will otherwise remove all styles + // If also needs to be in view on IE or the paste would fail dom.setStyles(n, { position : 'absolute', - left : -10000, - top : posY, + left : tinymce.isGecko ? -40 : 0, // Need to move it out of site on Gecko since it will othewise display a ghost resize rect for the div + top : posY - 25, width : 1, height : 1, overflow : 'hidden' }); if (tinymce.isIE) { + // Store away the old range + oldRng = sel.getRng(); + // Select the container rng = dom.doc.body.createTextRange(); rng.moveToElementText(n); @@ -174,14 +197,23 @@ // Check if the contents was changed, if it wasn't then clipboard extraction failed probably due // to IE security settings so we pass the junk though better than nothing right - if (n.innerHTML === '\uFEFF') { + if (n.innerHTML === '\uFEFF\uFEFF') { ed.execCommand('mcePasteWord'); e.preventDefault(); return; } - // Process contents - process({content : n.innerHTML}); + // Restore the old range and clear the contents before pasting + sel.setRng(oldRng); + sel.setContent(''); + + // For some odd reason we need to detach the the mceInsertContent call from the paste event + // It's like IE has a reference to the parent element that you paste in and the selection gets messed up + // when it tries to restore the selection + setTimeout(function() { + // Process contents + process({content : n.innerHTML}); + }, 0); // Block the real paste event return tinymce.dom.Event.cancel(e); @@ -196,34 +228,52 @@ or = ed.selection.getRng(); - // Move caret into hidden div + // Move select contents inside DIV n = n.firstChild; rng = ed.getDoc().createRange(); rng.setStart(n, 0); - rng.setEnd(n, 1); + rng.setEnd(n, 2); sel.setRng(rng); // Wait a while and grab the pasted contents window.setTimeout(function() { - var h = '', nl = dom.select('div.mcePaste'); + var h = '', nl; - // WebKit will split the div into multiple ones so this will loop through then all and join them to get the whole HTML string - each(nl, function(n) { - // WebKit duplicates the divs so we need to remove them - each(dom.select('div.mcePaste', n), function(n) { - dom.remove(n, 1); - }); + // Paste divs duplicated in paste divs seems to happen when you paste plain text so lets first look for that broken behavior in WebKit + if (!dom.select('div.mcePaste > div.mcePaste').length) { + nl = dom.select('div.mcePaste'); - // Remove apply style spans - each(dom.select('span.Apple-style-span', n), function(n) { - dom.remove(n, 1); - }); + // WebKit will split the div into multiple ones so this will loop through then all and join them to get the whole HTML string + each(nl, function(n) { + var child = n.firstChild; - h += n.innerHTML; - }); + // WebKit inserts a DIV container with lots of odd styles + if (child && child.nodeName == 'DIV' && child.style.marginTop && child.style.backgroundColor) { + dom.remove(child, 1); + } + + // Remove apply style spans + each(dom.select('span.Apple-style-span', n), function(n) { + dom.remove(n, 1); + }); + + // Remove bogus br elements + each(dom.select('br[data-mce-bogus]', n), function(n) { + dom.remove(n); + }); + + // WebKit will make a copy of the DIV for each line of plain text pasted and insert them into the DIV + if (n.parentNode.className != 'mcePaste') + h += n.innerHTML; + }); + } else { + // Found WebKit weirdness so force the content into paragraphs this seems to happen when you paste plain text from Nodepad etc + // So this logic will replace double enter with paragraphs and single enter with br so it kind of looks the same + h = '

    ' + dom.encode(textContent).replace(/\r?\n\r?\n/g, '

    ').replace(/\r?\n/g, '
    ') + '

    '; + } // Remove the nodes - each(nl, function(n) { + each(dom.select('div.mcePaste'), function(n) { dom.remove(n); }); @@ -244,7 +294,7 @@ if (getParam(ed, "paste_auto_cleanup_on_paste")) { // Is it's Opera or older FF use key handler if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) { - ed.onKeyDown.add(function(ed, e) { + ed.onKeyDown.addToTop(function(ed, e) { if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45)) grabContent(e); }); @@ -256,17 +306,19 @@ } } - // Block all drag/drop events - if (getParam(ed, "paste_block_drop")) { - ed.onInit.add(function() { + ed.onInit.add(function() { + ed.controlManager.setActive("pastetext", ed.pasteAsPlainText); + + // Block all drag/drop events + if (getParam(ed, "paste_block_drop")) { ed.dom.bind(ed.getBody(), ['dragend', 'dragover', 'draggesture', 'dragdrop', 'drop', 'drag'], function(e) { e.preventDefault(); e.stopPropagation(); return false; }); - }); - } + } + }); // Add legacy support t._legacySupport(); @@ -283,8 +335,6 @@ }, _preProcess : function(pl, o) { - //console.log('Before preprocess:' + o.content); - var ed = this.editor, h = o.content, grep = tinymce.grep, @@ -292,6 +342,8 @@ trim = tinymce.trim, len, stripClass; + //console.log('Before preprocess:' + o.content); + function process(items) { each(items, function(v) { // Remove or replace @@ -301,6 +353,23 @@ h = h.replace(v[0], v[1]); }); } + + if (ed.settings.paste_enable_default_filters == false) { + return; + } + + // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser + if (tinymce.isIE && document.documentMode >= 9) { + // IE9 adds BRs before/after block elements when contents is pasted from word or for example another browser + process([[/(?:
     [\s\r\n]+|
    )*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:
     [\s\r\n]+|
    )*/g, '$1']]); + + // IE9 also adds an extra BR element for each soft-linefeed and it also adds a BR for each word wrap break + process([ + [/

    /g, '

    '], // Replace multiple BR elements with uppercase BR to keep them intact + [/
    /g, ' '], // Replace single br elements with space since they are word wrap BR:s + [/

    /g, '
    '] // Replace back the double brs but into a single BR + ]); + } // Detect Word content and process it more aggressive if (/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(h) || o.wordContent) { @@ -320,7 +389,8 @@ if (getParam(ed, "paste_convert_middot_lists")) { process([ [//gi, '$&__MCE_ITEM__'], // Convert supportLists to a list item marker - [/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi, '$1__MCE_ITEM__'] // Convert mso-list and symbol spans to item markers + [/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi, '$1__MCE_ITEM__'], // Convert mso-list and symbol spans to item markers + [/(]+(?:MsoListParagraph)[^>]+>)/gi, '$1__MCE_ITEM__'] // Convert mso-list and symbol paragraphs to item markers (FF) ]); } @@ -472,6 +542,11 @@ ]); } + process([ + // Copy paste from Java like Open Office will produce this junk on FF + [/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi, ''] + ]); + // Class attribute options are: leave all as-is ("none"), remove all ("all"), or remove only those starting with mso ("mso"). // Note:- paste_strip_class_attributes: "none", verify_css_classes: true is also a good variation. stripClass = getParam(ed, "paste_strip_class_attributes"); @@ -491,7 +566,7 @@ }; h = h.replace(/ class="([^"]+)"/gi, removeClasses); - h = h.replace(/ class=(\w+)/gi, removeClasses); + h = h.replace(/ class=([\-\w]+)/gi, removeClasses); } // Remove spans option @@ -510,6 +585,10 @@ _postProcess : function(pl, o) { var t = this, ed = t.editor, dom = ed.dom, styleProps; + if (ed.settings.paste_enable_default_filters == false) { + return; + } + if (o.wordContent) { // Remove named anchors or TOC links each(dom.select('a', o.node), function(a) { @@ -561,14 +640,14 @@ if (getParam(ed, "paste_remove_styles") || (getParam(ed, "paste_remove_styles_if_webkit") && tinymce.isWebKit)) { each(dom.select('*[style]', o.node), function(el) { el.removeAttribute('style'); - el.removeAttribute('_mce_style'); + el.removeAttribute('data-mce-style'); }); } else { if (tinymce.isWebKit) { // We need to compress the styles on WebKit since if you paste it will become // Removing the mce_style that contains the real value will force the Serializer engine to compress the styles each(dom.select('*', o.node), function(el) { - el.removeAttribute('_mce_style'); + el.removeAttribute('data-mce-style'); }); } } @@ -591,11 +670,11 @@ val = p.innerHTML.replace(/<\/?\w+[^>]*>/gi, '').replace(/ /g, '\u00a0'); // Detect unordered lists look for bullets - if (/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o]\s*\u00a0*/.test(val)) + if (/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(val)) type = 'ul'; // Detect ordered lists 1., a. or ixv. - if (/^__MCE_ITEM__\s*\w+\.\s*\u00a0{2,}/.test(val)) + if (/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(val)) type = 'ol'; // Check if node value matches the list pattern: o   @@ -625,9 +704,9 @@ var html = span.innerHTML.replace(/<\/?\w+[^>]*>/gi, ''); // Remove span with the middot or the number - if (type == 'ul' && /^[\u2022\u00b7\u00a7\u00d8o]/.test(html)) + if (type == 'ul' && /^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(html)) dom.remove(span); - else if (/^[\s\S]*\w+\.( |\u00a0)*\s*/.test(html)) + else if (/^__MCE_ITEM__[\s\S]*\w+\.( |\u00a0)*\s*/.test(html)) dom.remove(span); }); @@ -635,7 +714,7 @@ // Remove middot/list items if (type == 'ul') - html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^[\u2022\u00b7\u00a7\u00d8o]\s*( |\u00a0)+\s*/, ''); + html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*( |\u00a0)+\s*/, ''); else html = p.innerHTML.replace(/__MCE_ITEM__/g, '').replace(/^\s*\w+\.( |\u00a0)+\s*/, ''); @@ -655,65 +734,6 @@ o.node.innerHTML = html.replace(/__MCE_ITEM__/g, ''); }, - /** - * This method will split the current block parent and insert the contents inside the split position. - * This logic can be improved so text nodes at the start/end remain in the start/end block elements - */ - _insertBlockContent : function(ed, dom, content) { - var parentBlock, marker, sel = ed.selection, last, elm, vp, y, elmHeight, markerId = 'mce_marker'; - - function select(n) { - var r; - - if (tinymce.isIE) { - r = ed.getDoc().body.createTextRange(); - r.moveToElementText(n); - r.collapse(false); - r.select(); - } else { - sel.select(n, 1); - sel.collapse(false); - } - } - - // Insert a marker for the caret position - this._insert(' ', 1); - marker = dom.get(markerId); - parentBlock = dom.getParent(marker, 'p,h1,h2,h3,h4,h5,h6,ul,ol,th,td'); - - // If it's a parent block but not a table cell - if (parentBlock && !/TD|TH/.test(parentBlock.nodeName)) { - // Split parent block - marker = dom.split(parentBlock, marker); - - // Insert nodes before the marker - each(dom.create('div', 0, content).childNodes, function(n) { - last = marker.parentNode.insertBefore(n.cloneNode(true), marker); - }); - - // Move caret after marker - select(last); - } else { - dom.setOuterHTML(marker, content); - sel.select(ed.getBody(), 1); - sel.collapse(0); - } - - // Remove marker if it's left - while (elm = dom.get(markerId)) - dom.remove(elm); - - // Get element, position and height - elm = sel.getStart(); - vp = dom.getViewPort(ed.getWin()); - y = ed.dom.getPos(elm).y; - elmHeight = elm.clientHeight; - - // Is element within viewport if not then scroll it into view - if (y < vp.y || y + elmHeight > vp.y + vp.h) - ed.getDoc().body.scrollTop = y < vp.y ? y : y - vp.h + 25; - }, - /** * Inserts the specified contents at the caret position. */ @@ -724,8 +744,7 @@ if (!ed.selection.isCollapsed() && r.startContainer != r.endContainer) ed.getDoc().execCommand('Delete', false, null); - // It's better to use the insertHTML method on Gecko since it will combine paragraphs correctly before inserting the contents - ed.execCommand(tinymce.isGecko ? 'insertHTML' : 'mceInsertContent', false, h, {skip_undo : skip_undo}); + ed.execCommand('mceInsertContent', false, h, {skip_undo : skip_undo}); }, /** @@ -737,31 +756,24 @@ * plugin, and requires minimal changes to add the new functionality. * Speednet - June 2009 */ - _insertPlainText : function(ed, dom, h) { - var i, len, pos, rpos, node, breakElms, before, after, - w = ed.getWin(), - d = ed.getDoc(), - sel = ed.selection, - is = tinymce.is, - inArray = tinymce.inArray, + _insertPlainText : function(content) { + var ed = this.editor, linebr = getParam(ed, "paste_text_linebreaktype"), - rl = getParam(ed, "paste_text_replacements"); + rl = getParam(ed, "paste_text_replacements"), + is = tinymce.is; function process(items) { each(items, function(v) { if (v.constructor == RegExp) - h = h.replace(v, ""); + content = content.replace(v, ""); else - h = h.replace(v[0], v[1]); + content = content.replace(v[0], v[1]); }); }; - if ((typeof(h) === "string") && (h.length > 0)) { - if (!entities) - entities = ("34,quot,38,amp,39,apos,60,lt,62,gt," + ed.serializer.settings.entities).split(","); - + if ((typeof(content) === "string") && (content.length > 0)) { // If HTML content with line-breaking tags, then remove all cr/lf chars because only tags will break a line - if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(h)) { + if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(content)) { process([ /[\n\r]+/g ]); @@ -778,128 +790,47 @@ [/<\/t[dh]>\s*]*>/gi, "\t"], // Table cells get tabs betweem them /<[a-z!\/?][^>]*>/gi, // Delete all remaining tags [/ /gi, " "], // Convert non-break spaces to regular spaces (remember, *plain text*) - [ - // HTML entity - /&(#\d+|[a-z0-9]{1,10});/gi, - - // Replace with actual character - function(e, s) { - if (s.charAt(0) === "#") { - return String.fromCharCode(s.slice(1)); - } - else { - return ((e = inArray(entities, s)) > 0)? String.fromCharCode(entities[e-1]) : " "; - } - } - ], - [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"], // Cool little RegExp deletes whitespace around linebreak chars. - [/\n{3,}/g, "\n\n"], // Max. 2 consecutive linebreaks - /^\s+|\s+$/g // Trim the front & back + [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"],// Cool little RegExp deletes whitespace around linebreak chars. + [/\n{3,}/g, "\n\n"] // Max. 2 consecutive linebreaks ]); - h = dom.encode(h); - - // Delete any highlighted text before pasting - if (!sel.isCollapsed()) { - d.execCommand("Delete", false, null); - } + content = ed.dom.decode(tinymce.html.Entities.encodeRaw(content)); // Perform default or custom replacements - if (is(rl, "array") || (is(rl, "array"))) { + if (is(rl, "array")) { process(rl); - } - else if (is(rl, "string")) { + } else if (is(rl, "string")) { process(new RegExp(rl, "gi")); } // Treat paragraphs as specified in the config if (linebr == "none") { + // Convert all line breaks to space process([ [/\n+/g, " "] ]); - } - else if (linebr == "br") { + } else if (linebr == "br") { + // Convert all line breaks to
    process([ [/\n/g, "
    "] ]); - } - else { + } else if (linebr == "p") { + // Convert all line breaks to

    ...

    + process([ + [/\n+/g, "

    "], + [/^(.*<\/p>)(

    )$/, '

    $1'] + ]); + } else { + // defaults to "combined" + // Convert single line breaks to
    and double line breaks to

    ...

    process([ - /^\s+|\s+$/g, [/\n\n/g, "

    "], + [/^(.*<\/p>)(

    )$/, '

    $1'], [/\n/g, "
    "] ]); } - // This next piece of code handles the situation where we're pasting more than one paragraph of plain - // text, and we are pasting the content into the middle of a block node in the editor. The block - // node gets split at the selection point into "Para A" and "Para B" (for the purposes of explaining). - // The first paragraph of the pasted text is appended to "Para A", and the last paragraph of the - // pasted text is prepended to "Para B". Any other paragraphs of pasted text are placed between - // "Para A" and "Para B". This code solves a host of problems with the original plain text plugin and - // now handles styles correctly. (Pasting plain text into a styled paragraph is supposed to make the - // plain text take the same style as the existing paragraph.) - if ((pos = h.indexOf("

    ")) != -1) { - rpos = h.lastIndexOf("

    "); - node = sel.getNode(); - breakElms = []; // Get list of elements to break - - do { - if (node.nodeType == 1) { - // Don't break tables and break at body - if (node.nodeName == "TD" || node.nodeName == "BODY") { - break; - } - - breakElms[breakElms.length] = node; - } - } while (node = node.parentNode); - - // Are we in the middle of a block node? - if (breakElms.length > 0) { - before = h.substring(0, pos); - after = ""; - - for (i=0, len=breakElms.length; i"; - after += "<" + breakElms[breakElms.length-i-1].nodeName.toLowerCase() + ">"; - } - - if (pos == rpos) { - h = before + after + h.substring(pos+7); - } - else { - h = before + h.substring(pos+4, rpos+4) + after + h.substring(rpos+7); - } - } - } - - // Insert content at the caret, plus add a marker for repositioning the caret - ed.execCommand("mceInsertRawHTML", false, h + ' '); - - // Reposition the caret to the marker, which was placed immediately after the inserted content. - // Needs to be done asynchronously (in window.setTimeout) or else it doesn't work in all browsers. - // The second part of the code scrolls the content up if the caret is positioned off-screen. - // This is only necessary for WebKit browsers, but it doesn't hurt to use for all. - window.setTimeout(function() { - var marker = dom.get('_plain_text_marker'), - elm, vp, y, elmHeight; - - sel.select(marker, false); - d.execCommand("Delete", false, null); - marker = null; - - // Get element, position and height - elm = sel.getStart(); - vp = dom.getViewPort(w); - y = dom.getPos(elm).y; - elmHeight = elm.clientHeight; - - // Is element within viewport if not then scroll it into view - if ((y < vp.y) || (y + elmHeight > vp.y + vp.h)) { - d.body.scrollTop = y < vp.y ? y : y - vp.h + 25; - } - }, 0); + ed.execCommand('mceInsertContent', false, content); } }, diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js b/library/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js b/library/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js old mode 100755 new mode 100644 index eeac77896..bc74daf85 --- a/library/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js @@ -1,5 +1 @@ -tinyMCE.addI18n('en.paste_dlg',{ -text_title:"Use CTRL+V on your keyboard to paste the text into the window.", -text_linebreaks:"Keep linebreaks", -word_title:"Use CTRL+V on your keyboard to paste the text into the window." -}); \ No newline at end of file +tinyMCE.addI18n('en.paste_dlg',{"word_title":"Use Ctrl+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep Linebreaks","text_title":"Use Ctrl+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm b/library/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm b/library/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/preview/example.html b/library/tinymce/jscripts/tiny_mce/plugins/preview/example.html old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js b/library/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/preview/preview.html b/library/tinymce/jscripts/tiny_mce/plugins/preview/preview.html old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js old mode 100755 new mode 100644 index cd9c985b7..165bc12df --- a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:170+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){window.focus();a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:170+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js old mode 100755 new mode 100644 index 1433a06a4..4c87e8fa7 --- a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js @@ -12,6 +12,10 @@ tinymce.create('tinymce.plugins.SearchReplacePlugin', { init : function(ed, url) { function open(m) { + // Keep IE from writing out the f/r character to the editor + // instance while initializing a new dialog. See: #3131190 + window.focus(); + ed.windowManager.open({ file : url + '/searchreplace.htm', width : 420 + parseInt(ed.getLang('searchreplace.delta_width', 0)), diff --git a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js old mode 100755 new mode 100644 index c0a624329..80284b9f3 --- a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js @@ -2,14 +2,18 @@ tinyMCEPopup.requireLangPack(); var SearchReplaceDialog = { init : function(ed) { - var f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode"); + var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode"); - this.switchMode(m); + t.switchMode(m); f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string"); // Focus input field f[m + '_panel_searchstring'].focus(); + + mcTabs.onChange.add(function(tab_id, panel_id) { + t.switchMode(tab_id.substring(0, tab_id.indexOf('_'))); + }); }, switchMode : function(m) { @@ -42,21 +46,23 @@ var SearchReplaceDialog = { ca = f[m + '_panel_casesensitivebox'].checked; rs = f['replace_panel_replacestring'].value; + if (tinymce.isIE) { + r = ed.getDoc().selection.createRange(); + } + if (s == '') return; function fix() { // Correct Firefox graphics glitches + // TODO: Verify if this is actually needed any more, maybe it was for very old FF versions? r = se.getRng().cloneRange(); ed.getDoc().execCommand('SelectAll', false, null); se.setRng(r); }; function replace() { - if (tinymce.isIE) - ed.selection.getRng().duplicate().pasteHTML(rs); // Needs to be duplicated due to selection bug in IE - else - ed.getDoc().execCommand('InsertHTML', false, rs); + ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE }; // IE flags @@ -70,6 +76,9 @@ var SearchReplaceDialog = { ed.selection.collapse(true); if (tinymce.isIE) { + ed.focus(); + r = ed.getDoc().selection.createRange(); + while (r.findText(s, b ? -1 : 1, fl)) { r.scrollIntoView(); r.select(); @@ -111,6 +120,9 @@ var SearchReplaceDialog = { return; if (tinymce.isIE) { + ed.focus(); + r = ed.getDoc().selection.createRange(); + if (r.findText(s, b ? -1 : 1, fl)) { r.scrollIntoView(); r.select(); diff --git a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js old mode 100755 new mode 100644 index 370959afa..8a6590097 --- a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js @@ -1,16 +1 @@ -tinyMCE.addI18n('en.searchreplace_dlg',{ -searchnext_desc:"Find again", -notfound:"The search has been completed. The search string could not be found.", -search_title:"Find", -replace_title:"Find/Replace", -allreplaced:"All occurrences of the search string were replaced.", -findwhat:"Find what", -replacewith:"Replace with", -direction:"Direction", -up:"Up", -down:"Down", -mcase:"Match case", -findnext:"Find next", -replace:"Replace", -replaceall:"Replace all" -}); \ No newline at end of file +tinyMCE.addI18n('en.searchreplace_dlg',{findwhat:"Find What",replacewith:"Replace with",direction:"Direction",up:"Up",down:"Down",mcase:"Match Case",findnext:"Find Next",allreplaced:"All occurrences of the search string were replaced.","searchnext_desc":"Find Again",notfound:"The search has been completed. The search string could not be found.","search_title":"Find","replace_title":"Find/Replace",replaceall:"Replace All",replace:"Replace"}); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm old mode 100755 new mode 100644 index d0424cfc9..5a22d8aa4 --- a/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm @@ -8,27 +8,28 @@ - + +

    - +
    - +
    - - - +
    + + @@ -39,7 +40,7 @@ - - - - - -
    {#style_dlg.padding} - +
    @@ -288,11 +330,14 @@ @@ -300,11 +345,14 @@ @@ -312,11 +360,14 @@ @@ -324,11 +375,14 @@ @@ -341,7 +395,7 @@
    {#style_dlg.margin} -
     
    - +
    - +
      + + +
    - +
    - +
      + + +
    - +
    - +
      + + +
    - +
    - +
      + + +
    +
    @@ -349,11 +403,14 @@ @@ -361,11 +418,14 @@ @@ -373,11 +433,14 @@ @@ -385,11 +448,14 @@ @@ -401,131 +467,148 @@
    -
     
    - +
    - +
      + + +
    - +
    - +
      + + +
    - +
    - +
      + + +
    - +
    - +
      + + +
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      {#style_dlg.style} {#style_dlg.width} {#style_dlg.color}
          
    {#style_dlg.top}   - - - - - - -
     
    -
      - - - - - -
     
    -
    {#style_dlg.right}   - - - - - - -
     
    -
      - - - - - -
     
    -
    {#style_dlg.bottom}   - - - - - - -
     
    -
      - - - - - -
     
    -
    {#style_dlg.left}   - - - - - - -
     
    -
      - - - - - +
    + {#style_dlg.border} +
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      {#style_dlg.style} {#style_dlg.width} {#style_dlg.color}
          
    {#style_dlg.top}   + + + + + + +
      + + +
    +
      + + + + + +
     
    +
    {#style_dlg.right}   + + + + + + +
      + + +
    +
      + + + + + +
     
    +
    {#style_dlg.bottom}   + + + + + + +
      + + +
    +
      + + + + + +
     
    +
    {#style_dlg.left}   + + + + + + +
      + + +
    +
      + + + + + +
     
    +
    -
    +
    - +
    + {#style_dlg.list} +
    @@ -541,10 +624,13 @@
    +
    - +
    + {#style_dlg.position} +
    @@ -555,11 +641,14 @@ @@ -570,11 +659,14 @@ @@ -582,12 +674,13 @@
    - +
    - +
      + + +
    - +
    - +
      + + +
    +
    {#style_dlg.placement} - +
    @@ -595,11 +688,14 @@ @@ -607,11 +703,14 @@ @@ -619,11 +718,14 @@ @@ -631,11 +733,14 @@ @@ -648,7 +753,7 @@
    {#style_dlg.clip} -
     
    {#style_dlg.top} - +
    - +
      + + +
    {#style_dlg.right} - +
    - +
      + + +
    {#style_dlg.bottom} - +
    - +
      + + +
    {#style_dlg.left} - +
    - +
      + + +
    +
    @@ -656,11 +761,14 @@ @@ -668,11 +776,14 @@ @@ -680,11 +791,14 @@ @@ -692,11 +806,14 @@ @@ -708,6 +825,11 @@ +
    + + +
    +
    diff --git a/library/tinymce/jscripts/tiny_mce/plugins/style/readme.txt b/library/tinymce/jscripts/tiny_mce/plugins/style/readme.txt new file mode 100644 index 000000000..5bac30202 --- /dev/null +++ b/library/tinymce/jscripts/tiny_mce/plugins/style/readme.txt @@ -0,0 +1,19 @@ +Edit CSS Style plug-in notes +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Unlike WYSIWYG editor functionality that operates only on the selected text, +typically by inserting new HTML elements with the specified styles. +This plug-in operates on the HTML blocks surrounding the selected text. +No new HTML elements are created. + +This plug-in only operates on the surrounding blocks and not the nearest +parent node. This means that if a block encapsulates a node, +e.g

    text

    , then only the styles in the block are +recognized, not those in the span. + +When selecting text that includes multiple blocks at the same level (peers), +this plug-in accumulates the specified styles in all of the surrounding blocks +and populates the dialogue checkboxes accordingly. There is no differentiation +between styles set in all the blocks versus styles set in some of the blocks. + +When the [Update] or [Apply] buttons are pressed, the styles selected in the +checkboxes are applied to all blocks that surround the selected text. diff --git a/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js old mode 100755 new mode 100644 index 27d244022..42a82d112 --- a/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js @@ -1 +1 @@ -(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(i){o=c.getParent(l.id,"form");n=o.elements;if(o){d(n,function(s,r){if(s.id==l.id){j=r;return false}});if(i>0){for(m=j+1;m=0;m--){if(n[m].type!="hidden"){return n[m]}}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(l=tinymce.get(n.id||n.name)){l.focus()}else{window.setTimeout(function(){window.focus();n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}f.onInit.add(function(){d(c.select("a:first,a:last",f.getContainer()),function(i){a.add(i,"focus",function(){f.focus()})})})},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})(); \ No newline at end of file +(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(t){n=c.select(":input:enabled,*[tabindex]");function s(v){return v.nodeName==="BODY"||(v.type!="hidden"&&!(v.style.display=="none")&&!(v.style.visibility=="hidden")&&s(v.parentNode))}function i(v){return v.attributes.tabIndex.specified||v.nodeName=="INPUT"||v.nodeName=="TEXTAREA"}function u(){return tinymce.isIE6||tinymce.isIE7}function r(v){return((!u()||i(v)))&&v.getAttribute("tabindex")!="-1"&&s(v)}d(n,function(w,v){if(w.id==l.id){j=v;return false}});if(t>0){for(m=j+1;m=0;m--){if(r(n[m])){return n[m]}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(n.id&&(l=tinymce.get(n.id||n.name))){l.focus()}else{window.setTimeout(function(){if(!tinymce.isWebKit){window.focus()}n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js old mode 100755 new mode 100644 index c2be2f40a..a1579c85f --- a/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js @@ -1,112 +1,122 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode; - - tinymce.create('tinymce.plugins.TabFocusPlugin', { - init : function(ed, url) { - function tabCancel(ed, e) { - if (e.keyCode === 9) - return Event.cancel(e); - }; - - function tabHandler(ed, e) { - var x, i, f, el, v; - - function find(d) { - f = DOM.getParent(ed.id, 'form'); - el = f.elements; - - if (f) { - each(el, function(e, i) { - if (e.id == ed.id) { - x = i; - return false; - } - }); - - if (d > 0) { - for (i = x + 1; i < el.length; i++) { - if (el[i].type != 'hidden') - return el[i]; - } - } else { - for (i = x - 1; i >= 0; i--) { - if (el[i].type != 'hidden') - return el[i]; - } - } - } - - return null; - }; - - if (e.keyCode === 9) { - v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next'))); - - if (v.length == 1) { - v[1] = v[0]; - v[0] = ':prev'; - } - - // Find element to focus - if (e.shiftKey) { - if (v[0] == ':prev') - el = find(-1); - else - el = DOM.get(v[0]); - } else { - if (v[1] == ':next') - el = find(1); - else - el = DOM.get(v[1]); - } - - if (el) { - if (ed = tinymce.get(el.id || el.name)) - ed.focus(); - else - window.setTimeout(function() {window.focus();el.focus();}, 10); - - return Event.cancel(e); - } - } - }; - - ed.onKeyUp.add(tabCancel); - - if (tinymce.isGecko) { - ed.onKeyPress.add(tabHandler); - ed.onKeyDown.add(tabCancel); - } else - ed.onKeyDown.add(tabHandler); - - ed.onInit.add(function() { - each(DOM.select('a:first,a:last', ed.getContainer()), function(n) { - Event.add(n, 'focus', function() {ed.focus();}); - }); - }); - }, - - getInfo : function() { - return { - longname : 'Tabfocus', - author : 'Moxiecode Systems AB', - authorurl : 'http://tinymce.moxiecode.com', - infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus', - version : tinymce.majorVersion + "." + tinymce.minorVersion - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin); -})(); \ No newline at end of file +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + var DOM = tinymce.DOM, Event = tinymce.dom.Event, each = tinymce.each, explode = tinymce.explode; + + tinymce.create('tinymce.plugins.TabFocusPlugin', { + init : function(ed, url) { + function tabCancel(ed, e) { + if (e.keyCode === 9) + return Event.cancel(e); + } + + function tabHandler(ed, e) { + var x, i, f, el, v; + + function find(d) { + el = DOM.select(':input:enabled,*[tabindex]'); + + function canSelectRecursive(e) { + return e.nodeName==="BODY" || (e.type != 'hidden' && + !(e.style.display == "none") && + !(e.style.visibility == "hidden") && canSelectRecursive(e.parentNode)); + } + function canSelectInOldIe(el) { + return el.attributes["tabIndex"].specified || el.nodeName == "INPUT" || el.nodeName == "TEXTAREA"; + } + function isOldIe() { + return tinymce.isIE6 || tinymce.isIE7; + } + function canSelect(el) { + return ((!isOldIe() || canSelectInOldIe(el))) && el.getAttribute("tabindex") != '-1' && canSelectRecursive(el); + } + + each(el, function(e, i) { + if (e.id == ed.id) { + x = i; + return false; + } + }); + if (d > 0) { + for (i = x + 1; i < el.length; i++) { + if (canSelect(el[i])) + return el[i]; + } + } else { + for (i = x - 1; i >= 0; i--) { + if (canSelect(el[i])) + return el[i]; + } + } + + return null; + } + + if (e.keyCode === 9) { + v = explode(ed.getParam('tab_focus', ed.getParam('tabfocus_elements', ':prev,:next'))); + + if (v.length == 1) { + v[1] = v[0]; + v[0] = ':prev'; + } + + // Find element to focus + if (e.shiftKey) { + if (v[0] == ':prev') + el = find(-1); + else + el = DOM.get(v[0]); + } else { + if (v[1] == ':next') + el = find(1); + else + el = DOM.get(v[1]); + } + + if (el) { + if (el.id && (ed = tinymce.get(el.id || el.name))) + ed.focus(); + else + window.setTimeout(function() { + if (!tinymce.isWebKit) + window.focus(); + el.focus(); + }, 10); + + return Event.cancel(e); + } + } + } + + ed.onKeyUp.add(tabCancel); + + if (tinymce.isGecko) { + ed.onKeyPress.add(tabHandler); + ed.onKeyDown.add(tabCancel); + } else + ed.onKeyDown.add(tabHandler); + + }, + + getInfo : function() { + return { + longname : 'Tabfocus', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('tabfocus', tinymce.plugins.TabFocusPlugin); +})(); diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/cell.htm b/library/tinymce/jscripts/tiny_mce/plugins/table/cell.htm old mode 100755 new mode 100644 index d243e1d83..a72a8d697 --- a/library/tinymce/jscripts/tiny_mce/plugins/table/cell.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/table/cell.htm @@ -5,16 +5,17 @@ + - + @@ -23,7 +24,7 @@
    {#table_dlg.general_props} -
     
    {#style_dlg.top} - +
    - +
      + + +
    {#style_dlg.right} - +
    - +
      + + +
    {#style_dlg.bottom} - +
    - +
      + + +
    {#style_dlg.left} - +
    - +
      + + +
    +
    - + - + @@ -92,7 +93,7 @@
    {#table_dlg.advanced_props} -
    @@ -70,10 +71,10 @@
    +
    @@ -124,7 +125,7 @@
    - +
    @@ -133,10 +134,10 @@ - - + +
     
    - +
    @@ -145,10 +146,10 @@ - - + +
     
    - +
    @@ -166,6 +167,7 @@ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css b/library/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/css/row.css b/library/tinymce/jscripts/tiny_mce/plugins/table/css/row.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/css/table.css b/library/tinymce/jscripts/tiny_mce/plugins/table/css/table.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js old mode 100755 new mode 100644 index 266d7d537..ad462f0e0 --- a/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js @@ -1 +1 @@ -(function(b){var c=b.each;function a(F,E,I){var e,J,B,n;r();n=E.getParent(I.getStart(),"th,td");if(n){J=D(n);B=G();n=v(J.x,J.y)}function w(L,K){L=L.cloneNode(K);L.removeAttribute("id");return L}function r(){var K=0;e=[];c(["thead","tbody","tfoot"],function(L){var M=E.select(L+" tr",F);c(M,function(N,O){O+=K;c(E.select("td,th",N),function(U,P){var Q,R,S,T;if(e[O]){while(e[O][P]){P++}}S=g(U,"rowspan");T=g(U,"colspan");for(R=O;R'}return false}},"childNodes");K=w(K,false);K.rowSpan=K.colSpan=1;if(L){K.appendChild(L)}else{if(!b.isIE){K.innerHTML='
    '}}return K}function p(){var K=E.createRng();c(E.select("tr",F),function(L){if(L.cells.length==0){E.remove(L)}});if(E.select("tr",F).length==0){K.setStartAfter(F);K.setEndAfter(F);I.setRng(K);E.remove(F);return}c(E.select("thead,tbody,tfoot",F),function(L){if(L.rows.length==0){E.remove(L)}});r();row=e[Math.min(e.length-1,J.y)];if(row){I.select(row[Math.min(row.length-1,J.x)].elm,true);I.collapse(true)}}function s(Q,O,S,P){var N,L,K,M,R;N=e[O][Q].elm.parentNode;for(K=1;K<=S;K++){N=E.getNext(N,"tr");if(N){for(L=Q;L>=0;L--){R=e[O+K][L].elm;if(R.parentNode==N){for(M=1;M<=P;M++){E.insertAfter(d(R),R)}break}}if(L==-1){for(M=1;M<=P;M++){N.insertBefore(d(N.cells[0]),N.cells[0])}}}}}function A(){c(e,function(K,L){c(K,function(N,M){var Q,P,R,O;if(h(N)){N=N.elm;Q=g(N,"colspan");P=g(N,"rowspan");if(Q>1||P>1){N.colSpan=N.rowSpan=1;for(O=0;O1){P.rowSpan=rowSpan+1;continue}}else{if(K>0&&e[K-1][O]){S=e[K-1][O].elm;rowSpan=g(S,"rowspan");if(rowSpan>1){S.rowSpan=rowSpan+1;continue}}}L=d(P);L.colSpan=P.colSpan;R.appendChild(L);M=P}}if(R.hasChildNodes()){if(!N){E.insertAfter(R,Q)}else{Q.parentNode.insertBefore(R,Q)}}}function f(L){var M,K;c(e,function(N,O){c(N,function(Q,P){if(h(Q)){M=P;if(L){return false}}});if(L){return !M}});c(e,function(Q,R){var N=Q[M].elm,O,P;if(N!=K){P=g(N,"colspan");O=g(N,"rowspan");if(P==1){if(!L){E.insertAfter(d(N),N);s(M,R,O-1,P)}else{N.parentNode.insertBefore(d(N),N);s(M,R,O-1,P)}}else{N.colSpan++}K=N}})}function m(){var K=[];c(e,function(L,M){c(L,function(O,N){if(h(O)&&b.inArray(K,N)===-1){c(e,function(R){var P=R[N].elm,Q;Q=g(P,"colspan");if(Q>1){P.colSpan=Q-1}else{E.remove(P)}});K.push(N)}})});p()}function l(){var L;function K(O){var N,P,M;N=E.getNext(O,"tr");c(O.cells,function(Q){var R=g(Q,"rowspan");if(R>1){Q.rowSpan=R-1;P=D(Q);s(P.x,P.y,1,1)}});P=D(O.cells[0]);c(e[P.y],function(Q){var R;Q=Q.elm;if(Q!=M){R=g(Q,"rowspan");if(R<=1){E.remove(Q)}else{Q.rowSpan=R-1}M=Q}})}L=j();c(L.reverse(),function(M){K(M)});p()}function C(){var K=j();E.remove(K);p();return K}function H(){var K=j();c(K,function(M,L){K[L]=w(M,true)});return K}function z(M,L){var N=j(),K=N[L?0:N.length-1],O=K.cells.length;c(e,function(Q){var P;O=0;c(Q,function(S,R){if(S.real){O+=S.colspan}if(S.elm.parentNode==K){P=1}});if(P){return false}});if(!L){M.reverse()}c(M,function(R){var Q=R.cells.length,P;for(i=0;iL){L=P}if(O>K){K=O}if(Q.real){S=Q.colspan-1;R=Q.rowspan-1;if(S){if(P+S>L){L=P+S}}if(R){if(O+R>K){K=O+R}}}}})});return{x:L,y:K}}function t(Q){var N,M,S,R,L,K,O,P;B=D(Q);if(J&&B){N=Math.min(J.x,B.x);M=Math.min(J.y,B.y);S=Math.max(J.x,B.x);R=Math.max(J.y,B.y);L=S;K=R;for(y=M;y<=K;y++){Q=e[y][N];if(!Q.real){if(N-(Q.colspan-1)L){L=x+O}}if(P){if(y+P>K){K=y+P}}}}}E.removeClass(E.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=M;y<=K;y++){for(x=N;x<=L;x++){E.addClass(e[y][x].elm,"mceSelected")}}}}b.extend(this,{deleteTable:q,split:A,merge:o,insertRow:k,insertCol:f,deleteCols:m,deleteRows:l,cutRows:C,copyRows:H,pasteRows:z,getPos:D,setStartCell:u,setEndCell:t})}b.create("tinymce.plugins.TablePlugin",{init:function(e,f){var d,j;function h(m){var l=e.selection,k=e.dom.getParent(m||l.getNode(),"table");if(k){return new a(k,e.dom,l)}}function g(){e.getBody().style.webkitUserSelect="";e.dom.removeClass(e.dom.select("td.mceSelected,th.mceSelected"),"mceSelected")}c([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(k){e.addButton(k[0],{title:k[1],cmd:k[2],ui:k[3]})});if(!b.isIE){e.onClick.add(function(k,l){l=l.target;if(l.nodeName==="TABLE"){k.selection.select(l)}})}e.onNodeChange.add(function(l,k,o){var m;o=l.selection.getStart();m=l.dom.getParent(o,"td,th,caption");k.setActive("table",o.nodeName==="TABLE"||!!m);if(m&&m.nodeName==="CAPTION"){m=0}k.setDisabled("delete_table",!m);k.setDisabled("delete_col",!m);k.setDisabled("delete_table",!m);k.setDisabled("delete_row",!m);k.setDisabled("col_after",!m);k.setDisabled("col_before",!m);k.setDisabled("row_after",!m);k.setDisabled("row_before",!m);k.setDisabled("row_props",!m);k.setDisabled("cell_props",!m);k.setDisabled("split_cells",!m);k.setDisabled("merge_cells",!m)});e.onInit.add(function(l){var k,o,p=l.dom,m;d=l.windowManager;l.onMouseDown.add(function(q,r){if(r.button!=2){g();o=p.getParent(r.target,"td,th");k=p.getParent(o,"table")}});p.bind(l.getDoc(),"mouseover",function(t){var r,q,s=t.target;if(o&&(m||s!=o)&&(s.nodeName=="TD"||s.nodeName=="TH")){q=p.getParent(s,"table");if(q==k){if(!m){m=h(q);m.setStartCell(o);l.getBody().style.webkitUserSelect="none"}m.setEndCell(s)}r=l.selection.getSel();if(r.removeAllRanges){r.removeAllRanges()}else{r.empty()}t.preventDefault()}});l.onMouseUp.add(function(z,A){var r,t=z.selection,B,C=t.getSel(),q,u,s,w;if(o){if(m){z.getBody().style.webkitUserSelect=""}function v(D,F){var E=new b.dom.TreeWalker(D,D);do{if(D.nodeType==3&&b.trim(D.nodeValue).length!=0){if(F){r.setStart(D,0)}else{r.setEnd(D,D.nodeValue.length)}return}if(D.nodeName=="BR"){if(F){r.setStartBefore(D)}else{r.setEndBefore(D)}return}}while(D=(F?E.next():E.prev()))}B=p.select("td.mceSelected,th.mceSelected");if(B.length>0){r=p.createRng();u=B[0];w=B[B.length-1];v(u,1);q=new b.dom.TreeWalker(u,p.getParent(B[0],"table"));do{if(u.nodeName=="TD"||u.nodeName=="TH"){if(!p.hasClass(u,"mceSelected")){break}s=u}}while(u=q.next());v(s);t.setRng(r)}z.nodeChanged();o=m=k=null}});l.onKeyUp.add(function(q,r){g()});if(l&&l.plugins.contextmenu){l.plugins.contextmenu.onContextMenu.add(function(s,q,u){var v,t=l.selection,r=t.getNode()||l.getBody();if(l.dom.getParent(u,"td")||l.dom.getParent(u,"th")||l.dom.select("td.mceSelected,th.mceSelected").length){q.removeAll();if(r.nodeName=="A"&&!l.dom.getAttrib(r,"name")){q.add({title:"advanced.link_desc",icon:"link",cmd:l.plugins.advlink?"mceAdvLink":"mceLink",ui:true});q.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});q.addSeparator()}if(r.nodeName=="IMG"&&r.className.indexOf("mceItem")==-1){q.add({title:"advanced.image_desc",icon:"image",cmd:l.plugins.advimage?"mceAdvImage":"mceImage",ui:true});q.addSeparator()}q.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});q.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});q.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});q.addSeparator();v=q.addMenu({title:"table.cell"});v.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});v.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});v.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});v=q.addMenu({title:"table.row"});v.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});v.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});v.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});v.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});v.addSeparator();v.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});v.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});v.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!j);v.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!j);v=q.addMenu({title:"table.col"});v.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});v.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});v.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{q.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(!b.isIE){function n(){var q;for(q=l.getBody().lastChild;q&&q.nodeType==3&&!q.nodeValue.length;q=q.previousSibling){}if(q&&q.nodeName=="TABLE"){l.dom.add(l.getBody(),"p",null,'
    ')}}if(b.isGecko){l.onKeyDown.add(function(r,t){var q,s,u=r.dom;if(t.keyCode==37||t.keyCode==38){q=r.selection.getRng();s=u.getParent(q.startContainer,"table");if(s&&r.getBody().firstChild==s){if(isAtStart(q,s)){q=u.createRng();q.setStartBefore(s);q.setEndBefore(s);r.selection.setRng(q);t.preventDefault()}}}})}l.onKeyUp.add(n);l.onSetContent.add(n);l.onVisualAid.add(n);l.onPreProcess.add(function(q,s){var r=s.node.lastChild;if(r&&r.childNodes.length==1&&r.firstChild.nodeName=="BR"){q.dom.remove(r)}});n()}});c({mceTableSplitCells:function(k){k.split()},mceTableMergeCells:function(l){var m,n,k;k=e.dom.getParent(e.selection.getNode(),"th,td");if(k){m=k.rowSpan;n=k.colSpan}if(!e.dom.select("td.mceSelected,th.mceSelected").length){d.open({url:f+"/merge_cells.htm",width:240+parseInt(e.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(e.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:m,cols:n,onaction:function(o){l.merge(k,o.cols,o.rows)},plugin_url:f})}else{l.merge()}},mceTableInsertRowBefore:function(k){k.insertRow(true)},mceTableInsertRowAfter:function(k){k.insertRow()},mceTableInsertColBefore:function(k){k.insertCol(true)},mceTableInsertColAfter:function(k){k.insertCol()},mceTableDeleteCol:function(k){k.deleteCols()},mceTableDeleteRow:function(k){k.deleteRows()},mceTableCutRow:function(k){j=k.cutRows()},mceTableCopyRow:function(k){j=k.copyRows()},mceTablePasteRowBefore:function(k){k.pasteRows(j,true)},mceTablePasteRowAfter:function(k){k.pasteRows(j)},mceTableDelete:function(k){k.deleteTable()}},function(l,k){e.addCommand(k,function(){var m=h();if(m){l(m);e.execCommand("mceRepaint");g()}})});c({mceInsertTable:function(k){d.open({url:f+"/table.htm",width:400+parseInt(e.getLang("table.table_delta_width",0)),height:320+parseInt(e.getLang("table.table_delta_height",0)),inline:1},{plugin_url:f,action:k?k.action:0})},mceTableRowProps:function(){d.open({url:f+"/row.htm",width:400+parseInt(e.getLang("table.rowprops_delta_width",0)),height:295+parseInt(e.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:f})},mceTableCellProps:function(){d.open({url:f+"/cell.htm",width:400+parseInt(e.getLang("table.cellprops_delta_width",0)),height:295+parseInt(e.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:f})}},function(l,k){e.addCommand(k,function(m,n){l(n)})})}});b.PluginManager.add("table",b.plugins.TablePlugin)})(tinymce); \ No newline at end of file +(function(d){var e=d.each;function c(g,h){var j=h.ownerDocument,f=j.createRange(),k;f.setStartBefore(h);f.setEnd(g.endContainer,g.endOffset);k=j.createElement("body");k.appendChild(f.cloneContents());return k.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(g,f){return parseInt(g.getAttribute(f)||1)}function b(H,G,K){var g,L,D,o;t();o=G.getParent(K.getStart(),"th,td");if(o){L=F(o);D=I();o=z(L.x,L.y)}function A(N,M){N=N.cloneNode(M);N.removeAttribute("id");return N}function t(){var M=0;g=[];e(["thead","tbody","tfoot"],function(N){var O=G.select("> "+N+" tr",H);e(O,function(P,Q){Q+=M;e(G.select("> td, > th",P),function(W,R){var S,T,U,V;if(g[Q]){while(g[Q][R]){R++}}U=a(W,"rowspan");V=a(W,"colspan");for(T=Q;T'}return false}},"childNodes");M=A(M,false);s(M,"rowSpan",1);s(M,"colSpan",1);if(N){M.appendChild(N)}else{if(!d.isIE){M.innerHTML='
    '}}return M}function q(){var M=G.createRng();e(G.select("tr",H),function(N){if(N.cells.length==0){G.remove(N)}});if(G.select("tr",H).length==0){M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H);return}e(G.select("thead,tbody,tfoot",H),function(N){if(N.rows.length==0){G.remove(N)}});t();row=g[Math.min(g.length-1,L.y)];if(row){K.select(row[Math.min(row.length-1,L.x)].elm,true);K.collapse(true)}}function u(S,Q,U,R){var P,N,M,O,T;P=g[Q][S].elm.parentNode;for(M=1;M<=U;M++){P=G.getNext(P,"tr");if(P){for(N=S;N>=0;N--){T=g[Q+M][N].elm;if(T.parentNode==P){for(O=1;O<=R;O++){G.insertAfter(f(T),T)}break}}if(N==-1){for(O=1;O<=R;O++){P.insertBefore(f(P.cells[0]),P.cells[0])}}}}}function C(){e(g,function(M,N){e(M,function(P,O){var S,R,T,Q;if(j(P)){P=P.elm;S=a(P,"colspan");R=a(P,"rowspan");if(S>1||R>1){s(P,"rowSpan",1);s(P,"colSpan",1);for(Q=0;Q1){s(S,"rowSpan",O+1);continue}}else{if(M>0&&g[M-1][R]){V=g[M-1][R].elm;O=a(V,"rowSpan");if(O>1){s(V,"rowSpan",O+1);continue}}}N=f(S);s(N,"colSpan",S.colSpan);U.appendChild(N);P=S}}if(U.hasChildNodes()){if(!Q){G.insertAfter(U,T)}else{T.parentNode.insertBefore(U,T)}}}function h(N){var O,M;e(g,function(P,Q){e(P,function(S,R){if(j(S)){O=R;if(N){return false}}});if(N){return !O}});e(g,function(S,T){var P,Q,R;if(!S[O]){return}P=S[O].elm;if(P!=M){R=a(P,"colspan");Q=a(P,"rowspan");if(R==1){if(!N){G.insertAfter(f(P),P);u(O,T,Q-1,R)}else{P.parentNode.insertBefore(f(P),P);u(O,T,Q-1,R)}}else{s(P,"colSpan",P.colSpan+1)}M=P}})}function n(){var M=[];e(g,function(N,O){e(N,function(Q,P){if(j(Q)&&d.inArray(M,P)===-1){e(g,function(T){var R=T[P].elm,S;S=a(R,"colSpan");if(S>1){s(R,"colSpan",S-1)}else{G.remove(R)}});M.push(P)}})});q()}function m(){var N;function M(Q){var P,R,O;P=G.getNext(Q,"tr");e(Q.cells,function(S){var T=a(S,"rowSpan");if(T>1){s(S,"rowSpan",T-1);R=F(S);u(R.x,R.y,1,1)}});R=F(Q.cells[0]);e(g[R.y],function(S){var T;S=S.elm;if(S!=O){T=a(S,"rowSpan");if(T<=1){G.remove(S)}else{s(S,"rowSpan",T-1)}O=S}})}N=k();e(N.reverse(),function(O){M(O)});q()}function E(){var M=k();G.remove(M);q();return M}function J(){var M=k();e(M,function(O,N){M[N]=A(O,true)});return M}function B(O,N){var P=k(),M=P[N?0:P.length-1],Q=M.cells.length;e(g,function(S){var R;Q=0;e(S,function(U,T){if(U.real){Q+=U.colspan}if(U.elm.parentNode==M){R=1}});if(R){return false}});if(!N){O.reverse()}e(O,function(T){var S=T.cells.length,R;for(i=0;iN){N=R}if(Q>M){M=Q}if(S.real){U=S.colspan-1;T=S.rowspan-1;if(U){if(R+U>N){N=R+U}}if(T){if(Q+T>M){M=Q+T}}}}})});return{x:N,y:M}}function v(S){var P,O,U,T,N,M,Q,R;D=F(S);if(L&&D){P=Math.min(L.x,D.x);O=Math.min(L.y,D.y);U=Math.max(L.x,D.x);T=Math.max(L.y,D.y);N=U;M=T;for(y=O;y<=M;y++){S=g[y][P];if(!S.real){if(P-(S.colspan-1)N){N=x+Q}}if(R){if(y+R>M){M=y+R}}}}}G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=O;y<=M;y++){for(x=P;x<=N;x++){if(g[y][x]){G.addClass(g[y][x].elm,"mceSelected")}}}}}d.extend(this,{deleteTable:r,split:C,merge:p,insertRow:l,insertCol:h,deleteCols:n,deleteRows:m,cutRows:E,copyRows:J,pasteRows:B,getPos:F,setStartCell:w,setEndCell:v})}d.create("tinymce.plugins.TablePlugin",{init:function(g,h){var f,m,j=true;function l(p){var o=g.selection,n=g.dom.getParent(p||o.getNode(),"table");if(n){return new b(n,g.dom,o)}}function k(){g.getBody().style.webkitUserSelect="";if(j){g.dom.removeClass(g.dom.select("td.mceSelected,th.mceSelected"),"mceSelected");j=false}}e([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(n){g.addButton(n[0],{title:n[1],cmd:n[2],ui:n[3]})});if(!d.isIE){g.onClick.add(function(n,o){o=o.target;if(o.nodeName==="TABLE"){n.selection.select(o);n.nodeChanged()}})}g.onPreProcess.add(function(o,p){var n,q,r,t=o.dom,s;n=t.select("table",p.node);q=n.length;while(q--){r=n[q];t.setAttrib(r,"data-mce-style","");if((s=t.getAttrib(r,"width"))){t.setStyle(r,"width",s);t.setAttrib(r,"width","")}if((s=t.getAttrib(r,"height"))){t.setStyle(r,"height",s);t.setAttrib(r,"height","")}}});g.onNodeChange.add(function(q,o,s){var r;s=q.selection.getStart();r=q.dom.getParent(s,"td,th,caption");o.setActive("table",s.nodeName==="TABLE"||!!r);if(r&&r.nodeName==="CAPTION"){r=0}o.setDisabled("delete_table",!r);o.setDisabled("delete_col",!r);o.setDisabled("delete_table",!r);o.setDisabled("delete_row",!r);o.setDisabled("col_after",!r);o.setDisabled("col_before",!r);o.setDisabled("row_after",!r);o.setDisabled("row_before",!r);o.setDisabled("row_props",!r);o.setDisabled("cell_props",!r);o.setDisabled("split_cells",!r);o.setDisabled("merge_cells",!r)});g.onInit.add(function(r){var p,t,q=r.dom,u;f=r.windowManager;r.onMouseDown.add(function(w,z){if(z.button!=2){k();t=q.getParent(z.target,"td,th");p=q.getParent(t,"table")}});q.bind(r.getDoc(),"mouseover",function(C){var A,z,B=C.target;if(t&&(u||B!=t)&&(B.nodeName=="TD"||B.nodeName=="TH")){z=q.getParent(B,"table");if(z==p){if(!u){u=l(z);u.setStartCell(t);r.getBody().style.webkitUserSelect="none"}u.setEndCell(B);j=true}A=r.selection.getSel();try{if(A.removeAllRanges){A.removeAllRanges()}else{A.empty()}}catch(w){}C.preventDefault()}});r.onMouseUp.add(function(F,G){var z,B=F.selection,H,I=B.getSel(),w,C,A,E;if(t){if(u){F.getBody().style.webkitUserSelect=""}function D(J,L){var K=new d.dom.TreeWalker(J,J);do{if(J.nodeType==3&&d.trim(J.nodeValue).length!=0){if(L){z.setStart(J,0)}else{z.setEnd(J,J.nodeValue.length)}return}if(J.nodeName=="BR"){if(L){z.setStartBefore(J)}else{z.setEndBefore(J)}return}}while(J=(L?K.next():K.prev()))}H=q.select("td.mceSelected,th.mceSelected");if(H.length>0){z=q.createRng();C=H[0];E=H[H.length-1];z.setStartBefore(C);z.setEndAfter(C);D(C,1);w=new d.dom.TreeWalker(C,q.getParent(H[0],"table"));do{if(C.nodeName=="TD"||C.nodeName=="TH"){if(!q.hasClass(C,"mceSelected")){break}A=C}}while(C=w.next());D(A);B.setRng(z)}F.nodeChanged();t=u=p=null}});r.onKeyUp.add(function(w,z){k()});r.onKeyDown.add(function(w,z){n(w)});r.onMouseDown.add(function(w,z){if(z.button!=2){n(w)}});function o(D,z,A,F){var B=3,G=D.dom.getParent(z.startContainer,"TABLE"),C,w,E;if(G){C=G.parentNode}w=z.startContainer.nodeType==B&&z.startOffset==0&&z.endOffset==0&&F&&(A.nodeName=="TR"||A==C);E=(A.nodeName=="TD"||A.nodeName=="TH")&&!F;return w||E}function n(A){if(!d.isWebKit){return}var z=A.selection.getRng();var C=A.selection.getNode();var B=A.dom.getParent(z.startContainer,"TD,TH");if(!o(A,z,C,B)){return}if(!B){B=C}var w=B.lastChild;while(w.lastChild){w=w.lastChild}z.setEnd(w,w.nodeValue.length);A.selection.setRng(z)}r.plugins.table.fixTableCellSelection=n;if(r&&r.plugins.contextmenu){r.plugins.contextmenu.onContextMenu.add(function(A,w,C){var D,B=r.selection,z=B.getNode()||r.getBody();if(r.dom.getParent(C,"td")||r.dom.getParent(C,"th")||r.dom.select("td.mceSelected,th.mceSelected").length){w.removeAll();if(z.nodeName=="A"&&!r.dom.getAttrib(z,"name")){w.add({title:"advanced.link_desc",icon:"link",cmd:r.plugins.advlink?"mceAdvLink":"mceLink",ui:true});w.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});w.addSeparator()}if(z.nodeName=="IMG"&&z.className.indexOf("mceItem")==-1){w.add({title:"advanced.image_desc",icon:"image",cmd:r.plugins.advimage?"mceAdvImage":"mceImage",ui:true});w.addSeparator()}w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});w.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});w.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});w.addSeparator();D=w.addMenu({title:"table.cell"});D.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});D.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});D.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});D=w.addMenu({title:"table.row"});D.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});D.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});D.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});D.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});D.addSeparator();D.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});D.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});D.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!m);D.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!m);D=w.addMenu({title:"table.col"});D.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});D.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});D.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(d.isWebKit){function v(C,N){var L=d.VK;var Q=N.keyCode;function O(Y,U,S){var T=Y?"previousSibling":"nextSibling";var Z=C.dom.getParent(U,"tr");var X=Z[T];if(X){z(C,U,X,Y);d.dom.Event.cancel(S);return true}else{var aa=C.dom.getParent(Z,"table");var W=Z.parentNode;var R=W.nodeName.toLowerCase();if(R==="tbody"||R===(Y?"tfoot":"thead")){var V=w(Y,aa,W,"tbody");if(V!==null){return K(Y,V,U,S)}}return M(Y,Z,T,aa,S)}}function w(V,T,U,X){var S=C.dom.select(">"+X,T);var R=S.indexOf(U);if(V&&R===0||!V&&R===S.length-1){return B(V,T)}else{if(R===-1){var W=U.tagName.toLowerCase()==="thead"?0:S.length-1;return S[W]}else{return S[R+(V?-1:1)]}}}function B(U,T){var S=U?"thead":"tfoot";var R=C.dom.select(">"+S,T);return R.length!==0?R[0]:null}function K(V,T,S,U){var R=J(T,V);R&&z(C,S,R,V);d.dom.Event.cancel(U);return true}function M(Y,U,R,X,W){var S=X[R];if(S){F(S);return true}else{var V=C.dom.getParent(X,"td,th");if(V){return O(Y,V,W)}else{var T=J(U,!Y);F(T);return d.dom.Event.cancel(W)}}}function J(S,R){var T=S&&S[R?"lastChild":"firstChild"];return T&&T.nodeName==="BR"?C.dom.getParent(T,"td,th"):T}function F(R){C.selection.setCursorLocation(R,0)}function A(){return Q==L.UP||Q==L.DOWN}function D(R){var T=R.selection.getNode();var S=R.dom.getParent(T,"tr");return S!==null}function P(S){var R=0;var T=S;while(T.previousSibling){T=T.previousSibling;R=R+a(T,"colspan")}return R}function E(T,R){var U=0;var S=0;e(T.children,function(V,W){U=U+a(V,"colspan");S=W;if(U>R){return false}});return S}function z(T,W,Y,V){var X=P(T.dom.getParent(W,"td,th"));var S=E(Y,X);var R=Y.childNodes[S];var U=J(R,V);F(U||R)}function H(R){var T=C.selection.getNode();var U=C.dom.getParent(T,"td,th");var S=C.dom.getParent(R,"td,th");return U&&U!==S&&I(U,S)}function I(S,R){return C.dom.getParent(S,"TABLE")===C.dom.getParent(R,"TABLE")}if(A()&&D(C)){var G=C.selection.getNode();setTimeout(function(){if(H(G)){O(!N.shiftKey&&Q===L.UP,G,N)}},0)}}r.onKeyDown.add(v)}if(!d.isIE){function s(){var w;for(w=r.getBody().lastChild;w&&w.nodeType==3&&!w.nodeValue.length;w=w.previousSibling){}if(w&&w.nodeName=="TABLE"){r.dom.add(r.getBody(),"p",null,'
    ')}}if(d.isGecko){r.onKeyDown.add(function(z,B){var w,A,C=z.dom;if(B.keyCode==37||B.keyCode==38){w=z.selection.getRng();A=C.getParent(w.startContainer,"table");if(A&&z.getBody().firstChild==A){if(c(w,A)){w=C.createRng();w.setStartBefore(A);w.setEndBefore(A);z.selection.setRng(w);B.preventDefault()}}}})}r.onKeyUp.add(s);r.onSetContent.add(s);r.onVisualAid.add(s);r.onPreProcess.add(function(w,A){var z=A.node.lastChild;if(z&&z.childNodes.length==1&&z.firstChild.nodeName=="BR"){w.dom.remove(z)}});if(d.isGecko){r.onKeyDown.add(function(z,B){if(B.keyCode===d.VK.ENTER&&B.shiftKey){var A=z.selection.getRng().startContainer;var C=q.getParent(A,"td,th");if(C){var w=z.getDoc().createTextNode("\uFEFF");q.insertAfter(w,A)}}})}s();r.startContent=r.getContent({format:"raw"})}});e({mceTableSplitCells:function(n){n.split()},mceTableMergeCells:function(o){var p,q,n;n=g.dom.getParent(g.selection.getNode(),"th,td");if(n){p=n.rowSpan;q=n.colSpan}if(!g.dom.select("td.mceSelected,th.mceSelected").length){f.open({url:h+"/merge_cells.htm",width:240+parseInt(g.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(g.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:p,cols:q,onaction:function(r){o.merge(n,r.cols,r.rows)},plugin_url:h})}else{o.merge()}},mceTableInsertRowBefore:function(n){n.insertRow(true)},mceTableInsertRowAfter:function(n){n.insertRow()},mceTableInsertColBefore:function(n){n.insertCol(true)},mceTableInsertColAfter:function(n){n.insertCol()},mceTableDeleteCol:function(n){n.deleteCols()},mceTableDeleteRow:function(n){n.deleteRows()},mceTableCutRow:function(n){m=n.cutRows()},mceTableCopyRow:function(n){m=n.copyRows()},mceTablePasteRowBefore:function(n){n.pasteRows(m,true)},mceTablePasteRowAfter:function(n){n.pasteRows(m)},mceTableDelete:function(n){n.deleteTable()}},function(o,n){g.addCommand(n,function(){var p=l();if(p){o(p);g.execCommand("mceRepaint");k()}})});e({mceInsertTable:function(n){f.open({url:h+"/table.htm",width:400+parseInt(g.getLang("table.table_delta_width",0)),height:320+parseInt(g.getLang("table.table_delta_height",0)),inline:1},{plugin_url:h,action:n?n.action:0})},mceTableRowProps:function(){f.open({url:h+"/row.htm",width:400+parseInt(g.getLang("table.rowprops_delta_width",0)),height:295+parseInt(g.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:h})},mceTableCellProps:function(){f.open({url:h+"/cell.htm",width:400+parseInt(g.getLang("table.cellprops_delta_width",0)),height:295+parseInt(g.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:h})}},function(o,n){g.addCommand(n,function(p,q){o(q)})})}});d.PluginManager.add("table",d.plugins.TablePlugin)})(tinymce); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js old mode 100755 new mode 100644 index c2f307f04..832b5e943 --- a/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js @@ -1,1125 +1,1428 @@ -/** - * editor_plugin_src.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function(tinymce) { - var each = tinymce.each; - - /** - * Table Grid class. - */ - function TableGrid(table, dom, selection) { - var grid, startPos, endPos, selectedCell; - - buildGrid(); - selectedCell = dom.getParent(selection.getStart(), 'th,td'); - if (selectedCell) { - startPos = getPos(selectedCell); - endPos = findEndPos(); - selectedCell = getCell(startPos.x, startPos.y); - } - - function cloneNode(node, children) { - node = node.cloneNode(children); - node.removeAttribute('id'); - - return node; - } - - function buildGrid() { - var startY = 0; - - grid = []; - - each(['thead', 'tbody', 'tfoot'], function(part) { - var rows = dom.select(part + ' tr', table); - - each(rows, function(tr, y) { - y += startY; - - each(dom.select('td,th', tr), function(td, x) { - var x2, y2, rowspan, colspan; - - // Skip over existing cells produced by rowspan - if (grid[y]) { - while (grid[y][x]) - x++; - } - - // Get col/rowspan from cell - rowspan = getSpanVal(td, 'rowspan'); - colspan = getSpanVal(td, 'colspan'); - - // Fill out rowspan/colspan right and down - for (y2 = y; y2 < y + rowspan; y2++) { - if (!grid[y2]) - grid[y2] = []; - - for (x2 = x; x2 < x + colspan; x2++) { - grid[y2][x2] = { - part : part, - real : y2 == y && x2 == x, - elm : td, - rowspan : rowspan, - colspan : colspan - }; - } - } - }); - }); - - startY += rows.length; - }); - }; - - function getCell(x, y) { - var row; - - row = grid[y]; - if (row) - return row[x]; - }; - - function getSpanVal(td, name) { - return parseInt(td.getAttribute(name) || 1); - }; - - function isCellSelected(cell) { - return dom.hasClass(cell.elm, 'mceSelected') || cell == selectedCell; - }; - - function getSelectedRows() { - var rows = []; - - each(table.rows, function(row) { - each(row.cells, function(cell) { - if (dom.hasClass(cell, 'mceSelected') || cell == selectedCell.elm) { - rows.push(row); - return false; - } - }); - }); - - return rows; - }; - - function deleteTable() { - var rng = dom.createRng(); - - rng.setStartAfter(table); - rng.setEndAfter(table); - - selection.setRng(rng); - - dom.remove(table); - }; - - function cloneCell(cell) { - var formatNode; - - // Clone formats - tinymce.walk(cell, function(node) { - var curNode; - - if (node.nodeType == 3) { - each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) { - node = cloneNode(node, false); - - if (!formatNode) - formatNode = curNode = node; - else if (curNode) - curNode.appendChild(node); - - curNode = node; - }); - - // Add something to the inner node - if (curNode) - curNode.innerHTML = tinymce.isIE ? ' ' : '
    '; - - return false; - } - }, 'childNodes'); - - cell = cloneNode(cell, false); - cell.rowSpan = cell.colSpan = 1; - - if (formatNode) { - cell.appendChild(formatNode); - } else { - if (!tinymce.isIE) - cell.innerHTML = '
    '; - } - - return cell; - }; - - function cleanup() { - var rng = dom.createRng(); - - // Empty rows - each(dom.select('tr', table), function(tr) { - if (tr.cells.length == 0) - dom.remove(tr); - }); - - // Empty table - if (dom.select('tr', table).length == 0) { - rng.setStartAfter(table); - rng.setEndAfter(table); - selection.setRng(rng); - dom.remove(table); - return; - } - - // Empty header/body/footer - each(dom.select('thead,tbody,tfoot', table), function(part) { - if (part.rows.length == 0) - dom.remove(part); - }); - - // Restore selection to start position if it still exists - buildGrid(); - - // Restore the selection to the closest table position - row = grid[Math.min(grid.length - 1, startPos.y)]; - if (row) { - selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true); - selection.collapse(true); - } - }; - - function fillLeftDown(x, y, rows, cols) { - var tr, x2, r, c, cell; - - tr = grid[y][x].elm.parentNode; - for (r = 1; r <= rows; r++) { - tr = dom.getNext(tr, 'tr'); - - if (tr) { - // Loop left to find real cell - for (x2 = x; x2 >= 0; x2--) { - cell = grid[y + r][x2].elm; - - if (cell.parentNode == tr) { - // Append clones after - for (c = 1; c <= cols; c++) - dom.insertAfter(cloneCell(cell), cell); - - break; - } - } - - if (x2 == -1) { - // Insert nodes before first cell - for (c = 1; c <= cols; c++) - tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]); - } - } - } - }; - - function split() { - each(grid, function(row, y) { - each(row, function(cell, x) { - var colSpan, rowSpan, newCell, i; - - if (isCellSelected(cell)) { - cell = cell.elm; - colSpan = getSpanVal(cell, 'colspan'); - rowSpan = getSpanVal(cell, 'rowspan'); - - if (colSpan > 1 || rowSpan > 1) { - cell.colSpan = cell.rowSpan = 1; - - // Insert cells right - for (i = 0; i < colSpan - 1; i++) - dom.insertAfter(cloneCell(cell), cell); - - fillLeftDown(x, y, rowSpan - 1, colSpan); - } - } - }); - }); - }; - - function merge(cell, cols, rows) { - var startX, startY, endX, endY, x, y, startCell, endCell, cell, children; - - // Use specified cell and cols/rows - if (cell) { - pos = getPos(cell); - startX = pos.x; - startY = pos.y; - endX = startX + (cols - 1); - endY = startY + (rows - 1); - } else { - // Use selection - startX = startPos.x; - startY = startPos.y; - endX = endPos.x; - endY = endPos.y; - } - - // Find start/end cells - startCell = getCell(startX, startY); - endCell = getCell(endX, endY); - - // Check if the cells exists and if they are of the same part for example tbody = tbody - if (startCell && endCell && startCell.part == endCell.part) { - // Split and rebuild grid - split(); - buildGrid(); - - // Set row/col span to start cell - startCell = getCell(startX, startY).elm; - startCell.colSpan = (endX - startX) + 1; - startCell.rowSpan = (endY - startY) + 1; - - // Remove other cells and add it's contents to the start cell - for (y = startY; y <= endY; y++) { - for (x = startX; x <= endX; x++) { - cell = grid[y][x].elm; - - if (cell != startCell) { - // Move children to startCell - children = tinymce.grep(cell.childNodes); - each(children, function(node, i) { - // Jump over last BR element - if (node.nodeName != 'BR' || i != children.length - 1) - startCell.appendChild(node); - }); - - // Remove cell - dom.remove(cell); - } - } - } - - // Remove empty rows etc and restore caret location - cleanup(); - } - }; - - function insertRow(before) { - var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell; - - // Find first/last row - each(grid, function(row, y) { - each(row, function(cell, x) { - if (isCellSelected(cell)) { - cell = cell.elm; - rowElm = cell.parentNode; - newRow = cloneNode(rowElm, false); - posY = y; - - if (before) - return false; - } - }); - - if (before) - return !posY; - }); - - for (x = 0; x < grid[0].length; x++) { - cell = grid[posY][x].elm; - - if (cell != lastCell) { - if (!before) { - rowSpan = getSpanVal(cell, 'rowspan'); - if (rowSpan > 1) { - cell.rowSpan = rowSpan + 1; - continue; - } - } else { - // Check if cell above can be expanded - if (posY > 0 && grid[posY - 1][x]) { - otherCell = grid[posY - 1][x].elm; - rowSpan = getSpanVal(otherCell, 'rowspan'); - if (rowSpan > 1) { - otherCell.rowSpan = rowSpan + 1; - continue; - } - } - } - - // Insert new cell into new row - newCell = cloneCell(cell) - newCell.colSpan = cell.colSpan; - newRow.appendChild(newCell); - - lastCell = cell; - } - } - - if (newRow.hasChildNodes()) { - if (!before) - dom.insertAfter(newRow, rowElm); - else - rowElm.parentNode.insertBefore(newRow, rowElm); - } - }; - - function insertCol(before) { - var posX, lastCell; - - // Find first/last column - each(grid, function(row, y) { - each(row, function(cell, x) { - if (isCellSelected(cell)) { - posX = x; - - if (before) - return false; - } - }); - - if (before) - return !posX; - }); - - each(grid, function(row, y) { - var cell = row[posX].elm, rowSpan, colSpan; - - if (cell != lastCell) { - colSpan = getSpanVal(cell, 'colspan'); - rowSpan = getSpanVal(cell, 'rowspan'); - - if (colSpan == 1) { - if (!before) { - dom.insertAfter(cloneCell(cell), cell); - fillLeftDown(posX, y, rowSpan - 1, colSpan); - } else { - cell.parentNode.insertBefore(cloneCell(cell), cell); - fillLeftDown(posX, y, rowSpan - 1, colSpan); - } - } else - cell.colSpan++; - - lastCell = cell; - } - }); - }; - - function deleteCols() { - var cols = []; - - // Get selected column indexes - each(grid, function(row, y) { - each(row, function(cell, x) { - if (isCellSelected(cell) && tinymce.inArray(cols, x) === -1) { - each(grid, function(row) { - var cell = row[x].elm, colSpan; - - colSpan = getSpanVal(cell, 'colspan'); - - if (colSpan > 1) - cell.colSpan = colSpan - 1; - else - dom.remove(cell); - }); - - cols.push(x); - } - }); - }); - - cleanup(); - }; - - function deleteRows() { - var rows; - - function deleteRow(tr) { - var nextTr, pos, lastCell; - - nextTr = dom.getNext(tr, 'tr'); - - // Move down row spanned cells - each(tr.cells, function(cell) { - var rowSpan = getSpanVal(cell, 'rowspan'); - - if (rowSpan > 1) { - cell.rowSpan = rowSpan - 1; - pos = getPos(cell); - fillLeftDown(pos.x, pos.y, 1, 1); - } - }); - - // Delete cells - pos = getPos(tr.cells[0]); - each(grid[pos.y], function(cell) { - var rowSpan; - - cell = cell.elm; - - if (cell != lastCell) { - rowSpan = getSpanVal(cell, 'rowspan'); - - if (rowSpan <= 1) - dom.remove(cell); - else - cell.rowSpan = rowSpan - 1; - - lastCell = cell; - } - }); - }; - - // Get selected rows and move selection out of scope - rows = getSelectedRows(); - - // Delete all selected rows - each(rows.reverse(), function(tr) { - deleteRow(tr); - }); - - cleanup(); - }; - - function cutRows() { - var rows = getSelectedRows(); - - dom.remove(rows); - cleanup(); - - return rows; - }; - - function copyRows() { - var rows = getSelectedRows(); - - each(rows, function(row, i) { - rows[i] = cloneNode(row, true); - }); - - return rows; - }; - - function pasteRows(rows, before) { - var selectedRows = getSelectedRows(), - targetRow = selectedRows[before ? 0 : selectedRows.length - 1], - targetCellCount = targetRow.cells.length; - - // Calc target cell count - each(grid, function(row) { - var match; - - targetCellCount = 0; - each(row, function(cell, x) { - if (cell.real) - targetCellCount += cell.colspan; - - if (cell.elm.parentNode == targetRow) - match = 1; - }); - - if (match) - return false; - }); - - if (!before) - rows.reverse(); - - each(rows, function(row) { - var cellCount = row.cells.length, cell; - - // Remove col/rowspans - for (i = 0; i < cellCount; i++) { - cell = row.cells[i]; - cell.colSpan = cell.rowSpan = 1; - } - - // Needs more cells - for (i = cellCount; i < targetCellCount; i++) - row.appendChild(cloneCell(row.cells[cellCount - 1])); - - // Needs less cells - for (i = targetCellCount; i < cellCount; i++) - dom.remove(row.cells[i]); - - // Add before/after - if (before) - targetRow.parentNode.insertBefore(row, targetRow); - else - dom.insertAfter(row, targetRow); - }); - }; - - function getPos(target) { - var pos; - - each(grid, function(row, y) { - each(row, function(cell, x) { - if (cell.elm == target) { - pos = {x : x, y : y}; - return false; - } - }); - - return !pos; - }); - - return pos; - }; - - function setStartCell(cell) { - startPos = getPos(cell); - }; - - function findEndPos() { - var pos, maxX, maxY; - - maxX = maxY = 0; - - each(grid, function(row, y) { - each(row, function(cell, x) { - var colSpan, rowSpan; - - if (isCellSelected(cell)) { - cell = grid[y][x]; - - if (x > maxX) - maxX = x; - - if (y > maxY) - maxY = y; - - if (cell.real) { - colSpan = cell.colspan - 1; - rowSpan = cell.rowspan - 1; - - if (colSpan) { - if (x + colSpan > maxX) - maxX = x + colSpan; - } - - if (rowSpan) { - if (y + rowSpan > maxY) - maxY = y + rowSpan; - } - } - } - }); - }); - - return {x : maxX, y : maxY}; - }; - - function setEndCell(cell) { - var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan; - - endPos = getPos(cell); - - if (startPos && endPos) { - // Get start/end positions - startX = Math.min(startPos.x, endPos.x); - startY = Math.min(startPos.y, endPos.y); - endX = Math.max(startPos.x, endPos.x); - endY = Math.max(startPos.y, endPos.y); - - // Expand end positon to include spans - maxX = endX; - maxY = endY; - - // Expand startX - for (y = startY; y <= maxY; y++) { - cell = grid[y][startX]; - - if (!cell.real) { - if (startX - (cell.colspan - 1) < startX) - startX -= cell.colspan - 1; - } - } - - // Expand startY - for (x = startX; x <= maxX; x++) { - cell = grid[startY][x]; - - if (!cell.real) { - if (startY - (cell.rowspan - 1) < startY) - startY -= cell.rowspan - 1; - } - } - - // Find max X, Y - for (y = startY; y <= endY; y++) { - for (x = startX; x <= endX; x++) { - cell = grid[y][x]; - - if (cell.real) { - colSpan = cell.colspan - 1; - rowSpan = cell.rowspan - 1; - - if (colSpan) { - if (x + colSpan > maxX) - maxX = x + colSpan; - } - - if (rowSpan) { - if (y + rowSpan > maxY) - maxY = y + rowSpan; - } - } - } - } - - // Remove current selection - dom.removeClass(dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); - - // Add new selection - for (y = startY; y <= maxY; y++) { - for (x = startX; x <= maxX; x++) - dom.addClass(grid[y][x].elm, 'mceSelected'); - } - } - }; - - // Expose to public - tinymce.extend(this, { - deleteTable : deleteTable, - split : split, - merge : merge, - insertRow : insertRow, - insertCol : insertCol, - deleteCols : deleteCols, - deleteRows : deleteRows, - cutRows : cutRows, - copyRows : copyRows, - pasteRows : pasteRows, - getPos : getPos, - setStartCell : setStartCell, - setEndCell : setEndCell - }); - }; - - tinymce.create('tinymce.plugins.TablePlugin', { - init : function(ed, url) { - var winMan, clipboardRows; - - function createTableGrid(node) { - var selection = ed.selection, tblElm = ed.dom.getParent(node || selection.getNode(), 'table'); - - if (tblElm) - return new TableGrid(tblElm, ed.dom, selection); - }; - - function cleanup() { - // Restore selection possibilities - ed.getBody().style.webkitUserSelect = ''; - ed.dom.removeClass(ed.dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); - }; - - // Register buttons - each([ - ['table', 'table.desc', 'mceInsertTable', true], - ['delete_table', 'table.del', 'mceTableDelete'], - ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'], - ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'], - ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'], - ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'], - ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'], - ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'], - ['row_props', 'table.row_desc', 'mceTableRowProps', true], - ['cell_props', 'table.cell_desc', 'mceTableCellProps', true], - ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true], - ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true] - ], function(c) { - ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]}); - }); - - // Select whole table is a table border is clicked - if (!tinymce.isIE) { - ed.onClick.add(function(ed, e) { - e = e.target; - - if (e.nodeName === 'TABLE') - ed.selection.select(e); - }); - } - - // Handle node change updates - ed.onNodeChange.add(function(ed, cm, n) { - var p; - - n = ed.selection.getStart(); - p = ed.dom.getParent(n, 'td,th,caption'); - cm.setActive('table', n.nodeName === 'TABLE' || !!p); - - // Disable table tools if we are in caption - if (p && p.nodeName === 'CAPTION') - p = 0; - - cm.setDisabled('delete_table', !p); - cm.setDisabled('delete_col', !p); - cm.setDisabled('delete_table', !p); - cm.setDisabled('delete_row', !p); - cm.setDisabled('col_after', !p); - cm.setDisabled('col_before', !p); - cm.setDisabled('row_after', !p); - cm.setDisabled('row_before', !p); - cm.setDisabled('row_props', !p); - cm.setDisabled('cell_props', !p); - cm.setDisabled('split_cells', !p); - cm.setDisabled('merge_cells', !p); - }); - - ed.onInit.add(function(ed) { - var startTable, startCell, dom = ed.dom, tableGrid; - - winMan = ed.windowManager; - - // Add cell selection logic - ed.onMouseDown.add(function(ed, e) { - if (e.button != 2) { - cleanup(); - - startCell = dom.getParent(e.target, 'td,th'); - startTable = dom.getParent(startCell, 'table'); - } - }); - - dom.bind(ed.getDoc(), 'mouseover', function(e) { - var sel, table, target = e.target; - - if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) { - table = dom.getParent(target, 'table'); - if (table == startTable) { - if (!tableGrid) { - tableGrid = createTableGrid(table); - tableGrid.setStartCell(startCell); - - ed.getBody().style.webkitUserSelect = 'none'; - } - - tableGrid.setEndCell(target); - } - - // Remove current selection - sel = ed.selection.getSel(); - - if (sel.removeAllRanges) - sel.removeAllRanges(); - else - sel.empty(); - - e.preventDefault(); - } - }); - - ed.onMouseUp.add(function(ed, e) { - var rng, sel = ed.selection, selectedCells, nativeSel = sel.getSel(), walker, node, lastNode, endNode; - - // Move selection to startCell - if (startCell) { - if (tableGrid) - ed.getBody().style.webkitUserSelect = ''; - - function setPoint(node, start) { - var walker = new tinymce.dom.TreeWalker(node, node); - - do { - // Text node - if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) { - if (start) - rng.setStart(node, 0); - else - rng.setEnd(node, node.nodeValue.length); - - return; - } - - // BR element - if (node.nodeName == 'BR') { - if (start) - rng.setStartBefore(node); - else - rng.setEndBefore(node); - - return; - } - } while (node = (start ? walker.next() : walker.prev())); - }; - - // Try to expand text selection as much as we can only Gecko supports cell selection - selectedCells = dom.select('td.mceSelected,th.mceSelected'); - if (selectedCells.length > 0) { - rng = dom.createRng(); - node = selectedCells[0]; - endNode = selectedCells[selectedCells.length - 1]; - - setPoint(node, 1); - walker = new tinymce.dom.TreeWalker(node, dom.getParent(selectedCells[0], 'table')); - - do { - if (node.nodeName == 'TD' || node.nodeName == 'TH') { - if (!dom.hasClass(node, 'mceSelected')) - break; - - lastNode = node; - } - } while (node = walker.next()); - - setPoint(lastNode); - - sel.setRng(rng); - } - - ed.nodeChanged(); - startCell = tableGrid = startTable = null; - } - }); - - ed.onKeyUp.add(function(ed, e) { - cleanup(); - }); - - // Add context menu - if (ed && ed.plugins.contextmenu) { - ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) { - var sm, se = ed.selection, el = se.getNode() || ed.getBody(); - - if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th') || ed.dom.select('td.mceSelected,th.mceSelected').length) { - m.removeAll(); - - if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) { - m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true}); - m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'}); - m.addSeparator(); - } - - if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) { - m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true}); - m.addSeparator(); - } - - m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', value : {action : 'insert'}}); - m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable'}); - m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete'}); - m.addSeparator(); - - // Cell menu - sm = m.addMenu({title : 'table.cell'}); - sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps'}); - sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells'}); - sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells'}); - - // Row menu - sm = m.addMenu({title : 'table.row'}); - sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps'}); - sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'}); - sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'}); - sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'}); - sm.addSeparator(); - sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'}); - sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'}); - sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'}).setDisabled(!clipboardRows); - sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'}).setDisabled(!clipboardRows); - - // Column menu - sm = m.addMenu({title : 'table.col'}); - sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'}); - sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'}); - sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'}); - } else - m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable'}); - }); - } - - // Fixes an issue on Gecko where it's impossible to place the caret behind a table - // This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled - if (!tinymce.isIE) { - function fixTableCaretPos() { - var last; - - // Skip empty text nodes form the end - for (last = ed.getBody().lastChild; last && last.nodeType == 3 && !last.nodeValue.length; last = last.previousSibling) ; - - if (last && last.nodeName == 'TABLE') - ed.dom.add(ed.getBody(), 'p', null, '
    '); - }; - - // Fixes an bug where it's impossible to place the caret before a table in Gecko - // this fix solves it by detecting when the caret is at the beginning of such a table - // and then manually moves the caret infront of the table - if (tinymce.isGecko) { - ed.onKeyDown.add(function(ed, e) { - var rng, table, dom = ed.dom; - - // On gecko it's not possible to place the caret before a table - if (e.keyCode == 37 || e.keyCode == 38) { - rng = ed.selection.getRng(); - table = dom.getParent(rng.startContainer, 'table'); - - if (table && ed.getBody().firstChild == table) { - if (isAtStart(rng, table)) { - rng = dom.createRng(); - - rng.setStartBefore(table); - rng.setEndBefore(table); - - ed.selection.setRng(rng); - - e.preventDefault(); - } - } - } - }); - } - - ed.onKeyUp.add(fixTableCaretPos); - ed.onSetContent.add(fixTableCaretPos); - ed.onVisualAid.add(fixTableCaretPos); - - ed.onPreProcess.add(function(ed, o) { - var last = o.node.lastChild; - - if (last && last.childNodes.length == 1 && last.firstChild.nodeName == 'BR') - ed.dom.remove(last); - }); - - fixTableCaretPos(); - } - }); - - // Register action commands - each({ - mceTableSplitCells : function(grid) { - grid.split(); - }, - - mceTableMergeCells : function(grid) { - var rowSpan, colSpan, cell; - - cell = ed.dom.getParent(ed.selection.getNode(), 'th,td'); - if (cell) { - rowSpan = cell.rowSpan; - colSpan = cell.colSpan; - } - - if (!ed.dom.select('td.mceSelected,th.mceSelected').length) { - winMan.open({ - url : url + '/merge_cells.htm', - width : 240 + parseInt(ed.getLang('table.merge_cells_delta_width', 0)), - height : 110 + parseInt(ed.getLang('table.merge_cells_delta_height', 0)), - inline : 1 - }, { - rows : rowSpan, - cols : colSpan, - onaction : function(data) { - grid.merge(cell, data.cols, data.rows); - }, - plugin_url : url - }); - } else - grid.merge(); - }, - - mceTableInsertRowBefore : function(grid) { - grid.insertRow(true); - }, - - mceTableInsertRowAfter : function(grid) { - grid.insertRow(); - }, - - mceTableInsertColBefore : function(grid) { - grid.insertCol(true); - }, - - mceTableInsertColAfter : function(grid) { - grid.insertCol(); - }, - - mceTableDeleteCol : function(grid) { - grid.deleteCols(); - }, - - mceTableDeleteRow : function(grid) { - grid.deleteRows(); - }, - - mceTableCutRow : function(grid) { - clipboardRows = grid.cutRows(); - }, - - mceTableCopyRow : function(grid) { - clipboardRows = grid.copyRows(); - }, - - mceTablePasteRowBefore : function(grid) { - grid.pasteRows(clipboardRows, true); - }, - - mceTablePasteRowAfter : function(grid) { - grid.pasteRows(clipboardRows); - }, - - mceTableDelete : function(grid) { - grid.deleteTable(); - } - }, function(func, name) { - ed.addCommand(name, function() { - var grid = createTableGrid(); - - if (grid) { - func(grid); - ed.execCommand('mceRepaint'); - cleanup(); - } - }); - }); - - // Register dialog commands - each({ - mceInsertTable : function(val) { - winMan.open({ - url : url + '/table.htm', - width : 400 + parseInt(ed.getLang('table.table_delta_width', 0)), - height : 320 + parseInt(ed.getLang('table.table_delta_height', 0)), - inline : 1 - }, { - plugin_url : url, - action : val ? val.action : 0 - }); - }, - - mceTableRowProps : function() { - winMan.open({ - url : url + '/row.htm', - width : 400 + parseInt(ed.getLang('table.rowprops_delta_width', 0)), - height : 295 + parseInt(ed.getLang('table.rowprops_delta_height', 0)), - inline : 1 - }, { - plugin_url : url - }); - }, - - mceTableCellProps : function() { - winMan.open({ - url : url + '/cell.htm', - width : 400 + parseInt(ed.getLang('table.cellprops_delta_width', 0)), - height : 295 + parseInt(ed.getLang('table.cellprops_delta_height', 0)), - inline : 1 - }, { - plugin_url : url - }); - } - }, function(func, name) { - ed.addCommand(name, function(ui, val) { - func(val); - }); - }); - } - }); - - // Register plugin - tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin); -})(tinymce); \ No newline at end of file +/** + * editor_plugin_src.js + * + * Copyright 2009, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function(tinymce) { + var each = tinymce.each; + + // Checks if the selection/caret is at the start of the specified block element + function isAtStart(rng, par) { + var doc = par.ownerDocument, rng2 = doc.createRange(), elm; + + rng2.setStartBefore(par); + rng2.setEnd(rng.endContainer, rng.endOffset); + + elm = doc.createElement('body'); + elm.appendChild(rng2.cloneContents()); + + // Check for text characters of other elements that should be treated as content + return elm.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi, '-').replace(/<[^>]+>/g, '').length == 0; + }; + + function getSpanVal(td, name) { + return parseInt(td.getAttribute(name) || 1); + } + + /** + * Table Grid class. + */ + function TableGrid(table, dom, selection) { + var grid, startPos, endPos, selectedCell; + + buildGrid(); + selectedCell = dom.getParent(selection.getStart(), 'th,td'); + if (selectedCell) { + startPos = getPos(selectedCell); + endPos = findEndPos(); + selectedCell = getCell(startPos.x, startPos.y); + } + + function cloneNode(node, children) { + node = node.cloneNode(children); + node.removeAttribute('id'); + + return node; + } + + function buildGrid() { + var startY = 0; + + grid = []; + + each(['thead', 'tbody', 'tfoot'], function(part) { + var rows = dom.select('> ' + part + ' tr', table); + + each(rows, function(tr, y) { + y += startY; + + each(dom.select('> td, > th', tr), function(td, x) { + var x2, y2, rowspan, colspan; + + // Skip over existing cells produced by rowspan + if (grid[y]) { + while (grid[y][x]) + x++; + } + + // Get col/rowspan from cell + rowspan = getSpanVal(td, 'rowspan'); + colspan = getSpanVal(td, 'colspan'); + + // Fill out rowspan/colspan right and down + for (y2 = y; y2 < y + rowspan; y2++) { + if (!grid[y2]) + grid[y2] = []; + + for (x2 = x; x2 < x + colspan; x2++) { + grid[y2][x2] = { + part : part, + real : y2 == y && x2 == x, + elm : td, + rowspan : rowspan, + colspan : colspan + }; + } + } + }); + }); + + startY += rows.length; + }); + }; + + function getCell(x, y) { + var row; + + row = grid[y]; + if (row) + return row[x]; + }; + + function setSpanVal(td, name, val) { + if (td) { + val = parseInt(val); + + if (val === 1) + td.removeAttribute(name, 1); + else + td.setAttribute(name, val, 1); + } + } + + function isCellSelected(cell) { + return cell && (dom.hasClass(cell.elm, 'mceSelected') || cell == selectedCell); + }; + + function getSelectedRows() { + var rows = []; + + each(table.rows, function(row) { + each(row.cells, function(cell) { + if (dom.hasClass(cell, 'mceSelected') || cell == selectedCell.elm) { + rows.push(row); + return false; + } + }); + }); + + return rows; + }; + + function deleteTable() { + var rng = dom.createRng(); + + rng.setStartAfter(table); + rng.setEndAfter(table); + + selection.setRng(rng); + + dom.remove(table); + }; + + function cloneCell(cell) { + var formatNode; + + // Clone formats + tinymce.walk(cell, function(node) { + var curNode; + + if (node.nodeType == 3) { + each(dom.getParents(node.parentNode, null, cell).reverse(), function(node) { + node = cloneNode(node, false); + + if (!formatNode) + formatNode = curNode = node; + else if (curNode) + curNode.appendChild(node); + + curNode = node; + }); + + // Add something to the inner node + if (curNode) + curNode.innerHTML = tinymce.isIE ? ' ' : '
    '; + + return false; + } + }, 'childNodes'); + + cell = cloneNode(cell, false); + setSpanVal(cell, 'rowSpan', 1); + setSpanVal(cell, 'colSpan', 1); + + if (formatNode) { + cell.appendChild(formatNode); + } else { + if (!tinymce.isIE) + cell.innerHTML = '
    '; + } + + return cell; + }; + + function cleanup() { + var rng = dom.createRng(); + + // Empty rows + each(dom.select('tr', table), function(tr) { + if (tr.cells.length == 0) + dom.remove(tr); + }); + + // Empty table + if (dom.select('tr', table).length == 0) { + rng.setStartAfter(table); + rng.setEndAfter(table); + selection.setRng(rng); + dom.remove(table); + return; + } + + // Empty header/body/footer + each(dom.select('thead,tbody,tfoot', table), function(part) { + if (part.rows.length == 0) + dom.remove(part); + }); + + // Restore selection to start position if it still exists + buildGrid(); + + // Restore the selection to the closest table position + row = grid[Math.min(grid.length - 1, startPos.y)]; + if (row) { + selection.select(row[Math.min(row.length - 1, startPos.x)].elm, true); + selection.collapse(true); + } + }; + + function fillLeftDown(x, y, rows, cols) { + var tr, x2, r, c, cell; + + tr = grid[y][x].elm.parentNode; + for (r = 1; r <= rows; r++) { + tr = dom.getNext(tr, 'tr'); + + if (tr) { + // Loop left to find real cell + for (x2 = x; x2 >= 0; x2--) { + cell = grid[y + r][x2].elm; + + if (cell.parentNode == tr) { + // Append clones after + for (c = 1; c <= cols; c++) + dom.insertAfter(cloneCell(cell), cell); + + break; + } + } + + if (x2 == -1) { + // Insert nodes before first cell + for (c = 1; c <= cols; c++) + tr.insertBefore(cloneCell(tr.cells[0]), tr.cells[0]); + } + } + } + }; + + function split() { + each(grid, function(row, y) { + each(row, function(cell, x) { + var colSpan, rowSpan, newCell, i; + + if (isCellSelected(cell)) { + cell = cell.elm; + colSpan = getSpanVal(cell, 'colspan'); + rowSpan = getSpanVal(cell, 'rowspan'); + + if (colSpan > 1 || rowSpan > 1) { + setSpanVal(cell, 'rowSpan', 1); + setSpanVal(cell, 'colSpan', 1); + + // Insert cells right + for (i = 0; i < colSpan - 1; i++) + dom.insertAfter(cloneCell(cell), cell); + + fillLeftDown(x, y, rowSpan - 1, colSpan); + } + } + }); + }); + }; + + function merge(cell, cols, rows) { + var startX, startY, endX, endY, x, y, startCell, endCell, cell, children, count; + + // Use specified cell and cols/rows + if (cell) { + pos = getPos(cell); + startX = pos.x; + startY = pos.y; + endX = startX + (cols - 1); + endY = startY + (rows - 1); + } else { + // Use selection + startX = startPos.x; + startY = startPos.y; + endX = endPos.x; + endY = endPos.y; + } + + // Find start/end cells + startCell = getCell(startX, startY); + endCell = getCell(endX, endY); + + // Check if the cells exists and if they are of the same part for example tbody = tbody + if (startCell && endCell && startCell.part == endCell.part) { + // Split and rebuild grid + split(); + buildGrid(); + + // Set row/col span to start cell + startCell = getCell(startX, startY).elm; + setSpanVal(startCell, 'colSpan', (endX - startX) + 1); + setSpanVal(startCell, 'rowSpan', (endY - startY) + 1); + + // Remove other cells and add it's contents to the start cell + for (y = startY; y <= endY; y++) { + for (x = startX; x <= endX; x++) { + if (!grid[y] || !grid[y][x]) + continue; + + cell = grid[y][x].elm; + + if (cell != startCell) { + // Move children to startCell + children = tinymce.grep(cell.childNodes); + each(children, function(node) { + startCell.appendChild(node); + }); + + // Remove bogus nodes if there is children in the target cell + if (children.length) { + children = tinymce.grep(startCell.childNodes); + count = 0; + each(children, function(node) { + if (node.nodeName == 'BR' && dom.getAttrib(node, 'data-mce-bogus') && count++ < children.length - 1) + startCell.removeChild(node); + }); + } + + // Remove cell + dom.remove(cell); + } + } + } + + // Remove empty rows etc and restore caret location + cleanup(); + } + }; + + function insertRow(before) { + var posY, cell, lastCell, x, rowElm, newRow, newCell, otherCell, rowSpan; + + // Find first/last row + each(grid, function(row, y) { + each(row, function(cell, x) { + if (isCellSelected(cell)) { + cell = cell.elm; + rowElm = cell.parentNode; + newRow = cloneNode(rowElm, false); + posY = y; + + if (before) + return false; + } + }); + + if (before) + return !posY; + }); + + for (x = 0; x < grid[0].length; x++) { + // Cell not found could be because of an invalid table structure + if (!grid[posY][x]) + continue; + + cell = grid[posY][x].elm; + + if (cell != lastCell) { + if (!before) { + rowSpan = getSpanVal(cell, 'rowspan'); + if (rowSpan > 1) { + setSpanVal(cell, 'rowSpan', rowSpan + 1); + continue; + } + } else { + // Check if cell above can be expanded + if (posY > 0 && grid[posY - 1][x]) { + otherCell = grid[posY - 1][x].elm; + rowSpan = getSpanVal(otherCell, 'rowSpan'); + if (rowSpan > 1) { + setSpanVal(otherCell, 'rowSpan', rowSpan + 1); + continue; + } + } + } + + // Insert new cell into new row + newCell = cloneCell(cell); + setSpanVal(newCell, 'colSpan', cell.colSpan); + + newRow.appendChild(newCell); + + lastCell = cell; + } + } + + if (newRow.hasChildNodes()) { + if (!before) + dom.insertAfter(newRow, rowElm); + else + rowElm.parentNode.insertBefore(newRow, rowElm); + } + }; + + function insertCol(before) { + var posX, lastCell; + + // Find first/last column + each(grid, function(row, y) { + each(row, function(cell, x) { + if (isCellSelected(cell)) { + posX = x; + + if (before) + return false; + } + }); + + if (before) + return !posX; + }); + + each(grid, function(row, y) { + var cell, rowSpan, colSpan; + + if (!row[posX]) + return; + + cell = row[posX].elm; + if (cell != lastCell) { + colSpan = getSpanVal(cell, 'colspan'); + rowSpan = getSpanVal(cell, 'rowspan'); + + if (colSpan == 1) { + if (!before) { + dom.insertAfter(cloneCell(cell), cell); + fillLeftDown(posX, y, rowSpan - 1, colSpan); + } else { + cell.parentNode.insertBefore(cloneCell(cell), cell); + fillLeftDown(posX, y, rowSpan - 1, colSpan); + } + } else + setSpanVal(cell, 'colSpan', cell.colSpan + 1); + + lastCell = cell; + } + }); + }; + + function deleteCols() { + var cols = []; + + // Get selected column indexes + each(grid, function(row, y) { + each(row, function(cell, x) { + if (isCellSelected(cell) && tinymce.inArray(cols, x) === -1) { + each(grid, function(row) { + var cell = row[x].elm, colSpan; + + colSpan = getSpanVal(cell, 'colSpan'); + + if (colSpan > 1) + setSpanVal(cell, 'colSpan', colSpan - 1); + else + dom.remove(cell); + }); + + cols.push(x); + } + }); + }); + + cleanup(); + }; + + function deleteRows() { + var rows; + + function deleteRow(tr) { + var nextTr, pos, lastCell; + + nextTr = dom.getNext(tr, 'tr'); + + // Move down row spanned cells + each(tr.cells, function(cell) { + var rowSpan = getSpanVal(cell, 'rowSpan'); + + if (rowSpan > 1) { + setSpanVal(cell, 'rowSpan', rowSpan - 1); + pos = getPos(cell); + fillLeftDown(pos.x, pos.y, 1, 1); + } + }); + + // Delete cells + pos = getPos(tr.cells[0]); + each(grid[pos.y], function(cell) { + var rowSpan; + + cell = cell.elm; + + if (cell != lastCell) { + rowSpan = getSpanVal(cell, 'rowSpan'); + + if (rowSpan <= 1) + dom.remove(cell); + else + setSpanVal(cell, 'rowSpan', rowSpan - 1); + + lastCell = cell; + } + }); + }; + + // Get selected rows and move selection out of scope + rows = getSelectedRows(); + + // Delete all selected rows + each(rows.reverse(), function(tr) { + deleteRow(tr); + }); + + cleanup(); + }; + + function cutRows() { + var rows = getSelectedRows(); + + dom.remove(rows); + cleanup(); + + return rows; + }; + + function copyRows() { + var rows = getSelectedRows(); + + each(rows, function(row, i) { + rows[i] = cloneNode(row, true); + }); + + return rows; + }; + + function pasteRows(rows, before) { + var selectedRows = getSelectedRows(), + targetRow = selectedRows[before ? 0 : selectedRows.length - 1], + targetCellCount = targetRow.cells.length; + + // Calc target cell count + each(grid, function(row) { + var match; + + targetCellCount = 0; + each(row, function(cell, x) { + if (cell.real) + targetCellCount += cell.colspan; + + if (cell.elm.parentNode == targetRow) + match = 1; + }); + + if (match) + return false; + }); + + if (!before) + rows.reverse(); + + each(rows, function(row) { + var cellCount = row.cells.length, cell; + + // Remove col/rowspans + for (i = 0; i < cellCount; i++) { + cell = row.cells[i]; + setSpanVal(cell, 'colSpan', 1); + setSpanVal(cell, 'rowSpan', 1); + } + + // Needs more cells + for (i = cellCount; i < targetCellCount; i++) + row.appendChild(cloneCell(row.cells[cellCount - 1])); + + // Needs less cells + for (i = targetCellCount; i < cellCount; i++) + dom.remove(row.cells[i]); + + // Add before/after + if (before) + targetRow.parentNode.insertBefore(row, targetRow); + else + dom.insertAfter(row, targetRow); + }); + }; + + function getPos(target) { + var pos; + + each(grid, function(row, y) { + each(row, function(cell, x) { + if (cell.elm == target) { + pos = {x : x, y : y}; + return false; + } + }); + + return !pos; + }); + + return pos; + }; + + function setStartCell(cell) { + startPos = getPos(cell); + }; + + function findEndPos() { + var pos, maxX, maxY; + + maxX = maxY = 0; + + each(grid, function(row, y) { + each(row, function(cell, x) { + var colSpan, rowSpan; + + if (isCellSelected(cell)) { + cell = grid[y][x]; + + if (x > maxX) + maxX = x; + + if (y > maxY) + maxY = y; + + if (cell.real) { + colSpan = cell.colspan - 1; + rowSpan = cell.rowspan - 1; + + if (colSpan) { + if (x + colSpan > maxX) + maxX = x + colSpan; + } + + if (rowSpan) { + if (y + rowSpan > maxY) + maxY = y + rowSpan; + } + } + } + }); + }); + + return {x : maxX, y : maxY}; + }; + + function setEndCell(cell) { + var startX, startY, endX, endY, maxX, maxY, colSpan, rowSpan; + + endPos = getPos(cell); + + if (startPos && endPos) { + // Get start/end positions + startX = Math.min(startPos.x, endPos.x); + startY = Math.min(startPos.y, endPos.y); + endX = Math.max(startPos.x, endPos.x); + endY = Math.max(startPos.y, endPos.y); + + // Expand end positon to include spans + maxX = endX; + maxY = endY; + + // Expand startX + for (y = startY; y <= maxY; y++) { + cell = grid[y][startX]; + + if (!cell.real) { + if (startX - (cell.colspan - 1) < startX) + startX -= cell.colspan - 1; + } + } + + // Expand startY + for (x = startX; x <= maxX; x++) { + cell = grid[startY][x]; + + if (!cell.real) { + if (startY - (cell.rowspan - 1) < startY) + startY -= cell.rowspan - 1; + } + } + + // Find max X, Y + for (y = startY; y <= endY; y++) { + for (x = startX; x <= endX; x++) { + cell = grid[y][x]; + + if (cell.real) { + colSpan = cell.colspan - 1; + rowSpan = cell.rowspan - 1; + + if (colSpan) { + if (x + colSpan > maxX) + maxX = x + colSpan; + } + + if (rowSpan) { + if (y + rowSpan > maxY) + maxY = y + rowSpan; + } + } + } + } + + // Remove current selection + dom.removeClass(dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); + + // Add new selection + for (y = startY; y <= maxY; y++) { + for (x = startX; x <= maxX; x++) { + if (grid[y][x]) + dom.addClass(grid[y][x].elm, 'mceSelected'); + } + } + } + }; + + // Expose to public + tinymce.extend(this, { + deleteTable : deleteTable, + split : split, + merge : merge, + insertRow : insertRow, + insertCol : insertCol, + deleteCols : deleteCols, + deleteRows : deleteRows, + cutRows : cutRows, + copyRows : copyRows, + pasteRows : pasteRows, + getPos : getPos, + setStartCell : setStartCell, + setEndCell : setEndCell + }); + }; + + tinymce.create('tinymce.plugins.TablePlugin', { + init : function(ed, url) { + var winMan, clipboardRows, hasCellSelection = true; // Might be selected cells on reload + + function createTableGrid(node) { + var selection = ed.selection, tblElm = ed.dom.getParent(node || selection.getNode(), 'table'); + + if (tblElm) + return new TableGrid(tblElm, ed.dom, selection); + }; + + function cleanup() { + // Restore selection possibilities + ed.getBody().style.webkitUserSelect = ''; + + if (hasCellSelection) { + ed.dom.removeClass(ed.dom.select('td.mceSelected,th.mceSelected'), 'mceSelected'); + hasCellSelection = false; + } + }; + + // Register buttons + each([ + ['table', 'table.desc', 'mceInsertTable', true], + ['delete_table', 'table.del', 'mceTableDelete'], + ['delete_col', 'table.delete_col_desc', 'mceTableDeleteCol'], + ['delete_row', 'table.delete_row_desc', 'mceTableDeleteRow'], + ['col_after', 'table.col_after_desc', 'mceTableInsertColAfter'], + ['col_before', 'table.col_before_desc', 'mceTableInsertColBefore'], + ['row_after', 'table.row_after_desc', 'mceTableInsertRowAfter'], + ['row_before', 'table.row_before_desc', 'mceTableInsertRowBefore'], + ['row_props', 'table.row_desc', 'mceTableRowProps', true], + ['cell_props', 'table.cell_desc', 'mceTableCellProps', true], + ['split_cells', 'table.split_cells_desc', 'mceTableSplitCells', true], + ['merge_cells', 'table.merge_cells_desc', 'mceTableMergeCells', true] + ], function(c) { + ed.addButton(c[0], {title : c[1], cmd : c[2], ui : c[3]}); + }); + + // Select whole table is a table border is clicked + if (!tinymce.isIE) { + ed.onClick.add(function(ed, e) { + e = e.target; + + if (e.nodeName === 'TABLE') { + ed.selection.select(e); + ed.nodeChanged(); + } + }); + } + + ed.onPreProcess.add(function(ed, args) { + var nodes, i, node, dom = ed.dom, value; + + nodes = dom.select('table', args.node); + i = nodes.length; + while (i--) { + node = nodes[i]; + dom.setAttrib(node, 'data-mce-style', ''); + + if ((value = dom.getAttrib(node, 'width'))) { + dom.setStyle(node, 'width', value); + dom.setAttrib(node, 'width', ''); + } + + if ((value = dom.getAttrib(node, 'height'))) { + dom.setStyle(node, 'height', value); + dom.setAttrib(node, 'height', ''); + } + } + }); + + // Handle node change updates + ed.onNodeChange.add(function(ed, cm, n) { + var p; + + n = ed.selection.getStart(); + p = ed.dom.getParent(n, 'td,th,caption'); + cm.setActive('table', n.nodeName === 'TABLE' || !!p); + + // Disable table tools if we are in caption + if (p && p.nodeName === 'CAPTION') + p = 0; + + cm.setDisabled('delete_table', !p); + cm.setDisabled('delete_col', !p); + cm.setDisabled('delete_table', !p); + cm.setDisabled('delete_row', !p); + cm.setDisabled('col_after', !p); + cm.setDisabled('col_before', !p); + cm.setDisabled('row_after', !p); + cm.setDisabled('row_before', !p); + cm.setDisabled('row_props', !p); + cm.setDisabled('cell_props', !p); + cm.setDisabled('split_cells', !p); + cm.setDisabled('merge_cells', !p); + }); + + ed.onInit.add(function(ed) { + var startTable, startCell, dom = ed.dom, tableGrid; + + winMan = ed.windowManager; + + // Add cell selection logic + ed.onMouseDown.add(function(ed, e) { + if (e.button != 2) { + cleanup(); + + startCell = dom.getParent(e.target, 'td,th'); + startTable = dom.getParent(startCell, 'table'); + } + }); + + dom.bind(ed.getDoc(), 'mouseover', function(e) { + var sel, table, target = e.target; + + if (startCell && (tableGrid || target != startCell) && (target.nodeName == 'TD' || target.nodeName == 'TH')) { + table = dom.getParent(target, 'table'); + if (table == startTable) { + if (!tableGrid) { + tableGrid = createTableGrid(table); + tableGrid.setStartCell(startCell); + + ed.getBody().style.webkitUserSelect = 'none'; + } + + tableGrid.setEndCell(target); + hasCellSelection = true; + } + + // Remove current selection + sel = ed.selection.getSel(); + + try { + if (sel.removeAllRanges) + sel.removeAllRanges(); + else + sel.empty(); + } catch (ex) { + // IE9 might throw errors here + } + + e.preventDefault(); + } + }); + + ed.onMouseUp.add(function(ed, e) { + var rng, sel = ed.selection, selectedCells, nativeSel = sel.getSel(), walker, node, lastNode, endNode; + + // Move selection to startCell + if (startCell) { + if (tableGrid) + ed.getBody().style.webkitUserSelect = ''; + + function setPoint(node, start) { + var walker = new tinymce.dom.TreeWalker(node, node); + + do { + // Text node + if (node.nodeType == 3 && tinymce.trim(node.nodeValue).length != 0) { + if (start) + rng.setStart(node, 0); + else + rng.setEnd(node, node.nodeValue.length); + + return; + } + + // BR element + if (node.nodeName == 'BR') { + if (start) + rng.setStartBefore(node); + else + rng.setEndBefore(node); + + return; + } + } while (node = (start ? walker.next() : walker.prev())); + } + + // Try to expand text selection as much as we can only Gecko supports cell selection + selectedCells = dom.select('td.mceSelected,th.mceSelected'); + if (selectedCells.length > 0) { + rng = dom.createRng(); + node = selectedCells[0]; + endNode = selectedCells[selectedCells.length - 1]; + rng.setStartBefore(node); + rng.setEndAfter(node); + + setPoint(node, 1); + walker = new tinymce.dom.TreeWalker(node, dom.getParent(selectedCells[0], 'table')); + + do { + if (node.nodeName == 'TD' || node.nodeName == 'TH') { + if (!dom.hasClass(node, 'mceSelected')) + break; + + lastNode = node; + } + } while (node = walker.next()); + + setPoint(lastNode); + + sel.setRng(rng); + } + + ed.nodeChanged(); + startCell = tableGrid = startTable = null; + } + }); + + ed.onKeyUp.add(function(ed, e) { + cleanup(); + }); + + ed.onKeyDown.add(function (ed, e) { + fixTableCellSelection(ed); + }); + + ed.onMouseDown.add(function (ed, e) { + if (e.button != 2) { + fixTableCellSelection(ed); + } + }); + function tableCellSelected(ed, rng, n, currentCell) { + // The decision of when a table cell is selected is somewhat involved. The fact that this code is + // required is actually a pointer to the root cause of this bug. A cell is selected when the start + // and end offsets are 0, the start container is a text, and the selection node is either a TR (most cases) + // or the parent of the table (in the case of the selection containing the last cell of a table). + var TEXT_NODE = 3, table = ed.dom.getParent(rng.startContainer, 'TABLE'), + tableParent, allOfCellSelected, tableCellSelection; + if (table) + tableParent = table.parentNode; + allOfCellSelected =rng.startContainer.nodeType == TEXT_NODE && + rng.startOffset == 0 && + rng.endOffset == 0 && + currentCell && + (n.nodeName=="TR" || n==tableParent); + tableCellSelection = (n.nodeName=="TD"||n.nodeName=="TH")&& !currentCell; + return allOfCellSelected || tableCellSelection; + // return false; + } + + // this nasty hack is here to work around some WebKit selection bugs. + function fixTableCellSelection(ed) { + if (!tinymce.isWebKit) + return; + + var rng = ed.selection.getRng(); + var n = ed.selection.getNode(); + var currentCell = ed.dom.getParent(rng.startContainer, 'TD,TH'); + + if (!tableCellSelected(ed, rng, n, currentCell)) + return; + if (!currentCell) { + currentCell=n; + } + + // Get the very last node inside the table cell + var end = currentCell.lastChild; + while (end.lastChild) + end = end.lastChild; + + // Select the entire table cell. Nothing outside of the table cell should be selected. + rng.setEnd(end, end.nodeValue.length); + ed.selection.setRng(rng); + } + ed.plugins.table.fixTableCellSelection=fixTableCellSelection; + + // Add context menu + if (ed && ed.plugins.contextmenu) { + ed.plugins.contextmenu.onContextMenu.add(function(th, m, e) { + var sm, se = ed.selection, el = se.getNode() || ed.getBody(); + + if (ed.dom.getParent(e, 'td') || ed.dom.getParent(e, 'th') || ed.dom.select('td.mceSelected,th.mceSelected').length) { + m.removeAll(); + + if (el.nodeName == 'A' && !ed.dom.getAttrib(el, 'name')) { + m.add({title : 'advanced.link_desc', icon : 'link', cmd : ed.plugins.advlink ? 'mceAdvLink' : 'mceLink', ui : true}); + m.add({title : 'advanced.unlink_desc', icon : 'unlink', cmd : 'UnLink'}); + m.addSeparator(); + } + + if (el.nodeName == 'IMG' && el.className.indexOf('mceItem') == -1) { + m.add({title : 'advanced.image_desc', icon : 'image', cmd : ed.plugins.advimage ? 'mceAdvImage' : 'mceImage', ui : true}); + m.addSeparator(); + } + + m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable', value : {action : 'insert'}}); + m.add({title : 'table.props_desc', icon : 'table_props', cmd : 'mceInsertTable'}); + m.add({title : 'table.del', icon : 'delete_table', cmd : 'mceTableDelete'}); + m.addSeparator(); + + // Cell menu + sm = m.addMenu({title : 'table.cell'}); + sm.add({title : 'table.cell_desc', icon : 'cell_props', cmd : 'mceTableCellProps'}); + sm.add({title : 'table.split_cells_desc', icon : 'split_cells', cmd : 'mceTableSplitCells'}); + sm.add({title : 'table.merge_cells_desc', icon : 'merge_cells', cmd : 'mceTableMergeCells'}); + + // Row menu + sm = m.addMenu({title : 'table.row'}); + sm.add({title : 'table.row_desc', icon : 'row_props', cmd : 'mceTableRowProps'}); + sm.add({title : 'table.row_before_desc', icon : 'row_before', cmd : 'mceTableInsertRowBefore'}); + sm.add({title : 'table.row_after_desc', icon : 'row_after', cmd : 'mceTableInsertRowAfter'}); + sm.add({title : 'table.delete_row_desc', icon : 'delete_row', cmd : 'mceTableDeleteRow'}); + sm.addSeparator(); + sm.add({title : 'table.cut_row_desc', icon : 'cut', cmd : 'mceTableCutRow'}); + sm.add({title : 'table.copy_row_desc', icon : 'copy', cmd : 'mceTableCopyRow'}); + sm.add({title : 'table.paste_row_before_desc', icon : 'paste', cmd : 'mceTablePasteRowBefore'}).setDisabled(!clipboardRows); + sm.add({title : 'table.paste_row_after_desc', icon : 'paste', cmd : 'mceTablePasteRowAfter'}).setDisabled(!clipboardRows); + + // Column menu + sm = m.addMenu({title : 'table.col'}); + sm.add({title : 'table.col_before_desc', icon : 'col_before', cmd : 'mceTableInsertColBefore'}); + sm.add({title : 'table.col_after_desc', icon : 'col_after', cmd : 'mceTableInsertColAfter'}); + sm.add({title : 'table.delete_col_desc', icon : 'delete_col', cmd : 'mceTableDeleteCol'}); + } else + m.add({title : 'table.desc', icon : 'table', cmd : 'mceInsertTable'}); + }); + } + + // Fix to allow navigating up and down in a table in WebKit browsers. + if (tinymce.isWebKit) { + function moveSelection(ed, e) { + var VK = tinymce.VK; + var key = e.keyCode; + + function handle(upBool, sourceNode, event) { + var siblingDirection = upBool ? 'previousSibling' : 'nextSibling'; + var currentRow = ed.dom.getParent(sourceNode, 'tr'); + var siblingRow = currentRow[siblingDirection]; + + if (siblingRow) { + moveCursorToRow(ed, sourceNode, siblingRow, upBool); + tinymce.dom.Event.cancel(event); + return true; + } else { + var tableNode = ed.dom.getParent(currentRow, 'table'); + var middleNode = currentRow.parentNode; + var parentNodeName = middleNode.nodeName.toLowerCase(); + if (parentNodeName === 'tbody' || parentNodeName === (upBool ? 'tfoot' : 'thead')) { + var targetParent = getTargetParent(upBool, tableNode, middleNode, 'tbody'); + if (targetParent !== null) { + return moveToRowInTarget(upBool, targetParent, sourceNode, event); + } + } + return escapeTable(upBool, currentRow, siblingDirection, tableNode, event); + } + } + + function getTargetParent(upBool, topNode, secondNode, nodeName) { + var tbodies = ed.dom.select('>' + nodeName, topNode); + var position = tbodies.indexOf(secondNode); + if (upBool && position === 0 || !upBool && position === tbodies.length - 1) { + return getFirstHeadOrFoot(upBool, topNode); + } else if (position === -1) { + var topOrBottom = secondNode.tagName.toLowerCase() === 'thead' ? 0 : tbodies.length - 1; + return tbodies[topOrBottom]; + } else { + return tbodies[position + (upBool ? -1 : 1)]; + } + } + + function getFirstHeadOrFoot(upBool, parent) { + var tagName = upBool ? 'thead' : 'tfoot'; + var headOrFoot = ed.dom.select('>' + tagName, parent); + return headOrFoot.length !== 0 ? headOrFoot[0] : null; + } + + function moveToRowInTarget(upBool, targetParent, sourceNode, event) { + var targetRow = getChildForDirection(targetParent, upBool); + targetRow && moveCursorToRow(ed, sourceNode, targetRow, upBool); + tinymce.dom.Event.cancel(event); + return true; + } + + function escapeTable(upBool, currentRow, siblingDirection, table, event) { + var tableSibling = table[siblingDirection]; + if (tableSibling) { + moveCursorToStartOfElement(tableSibling); + return true; + } else { + var parentCell = ed.dom.getParent(table, 'td,th'); + if (parentCell) { + return handle(upBool, parentCell, event); + } else { + var backUpSibling = getChildForDirection(currentRow, !upBool); + moveCursorToStartOfElement(backUpSibling); + return tinymce.dom.Event.cancel(event); + } + } + } + + function getChildForDirection(parent, up) { + var child = parent && parent[up ? 'lastChild' : 'firstChild']; + // BR is not a valid table child to return in this case we return the table cell + return child && child.nodeName === 'BR' ? ed.dom.getParent(child, 'td,th') : child; + } + + function moveCursorToStartOfElement(n) { + ed.selection.setCursorLocation(n, 0); + } + + function isVerticalMovement() { + return key == VK.UP || key == VK.DOWN; + } + + function isInTable(ed) { + var node = ed.selection.getNode(); + var currentRow = ed.dom.getParent(node, 'tr'); + return currentRow !== null; + } + + function columnIndex(column) { + var colIndex = 0; + var c = column; + while (c.previousSibling) { + c = c.previousSibling; + colIndex = colIndex + getSpanVal(c, "colspan"); + } + return colIndex; + } + + function findColumn(rowElement, columnIndex) { + var c = 0; + var r = 0; + each(rowElement.children, function(cell, i) { + c = c + getSpanVal(cell, "colspan"); + r = i; + if (c > columnIndex) + return false; + }); + return r; + } + + function moveCursorToRow(ed, node, row, upBool) { + var srcColumnIndex = columnIndex(ed.dom.getParent(node, 'td,th')); + var tgtColumnIndex = findColumn(row, srcColumnIndex); + var tgtNode = row.childNodes[tgtColumnIndex]; + var rowCellTarget = getChildForDirection(tgtNode, upBool); + moveCursorToStartOfElement(rowCellTarget || tgtNode); + } + + function shouldFixCaret(preBrowserNode) { + var newNode = ed.selection.getNode(); + var newParent = ed.dom.getParent(newNode, 'td,th'); + var oldParent = ed.dom.getParent(preBrowserNode, 'td,th'); + return newParent && newParent !== oldParent && checkSameParentTable(newParent, oldParent) + } + + function checkSameParentTable(nodeOne, NodeTwo) { + return ed.dom.getParent(nodeOne, 'TABLE') === ed.dom.getParent(NodeTwo, 'TABLE'); + } + + if (isVerticalMovement() && isInTable(ed)) { + var preBrowserNode = ed.selection.getNode(); + setTimeout(function() { + if (shouldFixCaret(preBrowserNode)) { + handle(!e.shiftKey && key === VK.UP, preBrowserNode, e); + } + }, 0); + } + } + + ed.onKeyDown.add(moveSelection); + } + + // Fixes an issue on Gecko where it's impossible to place the caret behind a table + // This fix will force a paragraph element after the table but only when the forced_root_block setting is enabled + if (!tinymce.isIE) { + function fixTableCaretPos() { + var last; + + // Skip empty text nodes form the end + for (last = ed.getBody().lastChild; last && last.nodeType == 3 && !last.nodeValue.length; last = last.previousSibling) ; + + if (last && last.nodeName == 'TABLE') + ed.dom.add(ed.getBody(), 'p', null, '
    '); + }; + + // Fixes an bug where it's impossible to place the caret before a table in Gecko + // this fix solves it by detecting when the caret is at the beginning of such a table + // and then manually moves the caret infront of the table + if (tinymce.isGecko) { + ed.onKeyDown.add(function(ed, e) { + var rng, table, dom = ed.dom; + + // On gecko it's not possible to place the caret before a table + if (e.keyCode == 37 || e.keyCode == 38) { + rng = ed.selection.getRng(); + table = dom.getParent(rng.startContainer, 'table'); + + if (table && ed.getBody().firstChild == table) { + if (isAtStart(rng, table)) { + rng = dom.createRng(); + + rng.setStartBefore(table); + rng.setEndBefore(table); + + ed.selection.setRng(rng); + + e.preventDefault(); + } + } + } + }); + } + + ed.onKeyUp.add(fixTableCaretPos); + ed.onSetContent.add(fixTableCaretPos); + ed.onVisualAid.add(fixTableCaretPos); + + ed.onPreProcess.add(function(ed, o) { + var last = o.node.lastChild; + + if (last && last.childNodes.length == 1 && last.firstChild.nodeName == 'BR') + ed.dom.remove(last); + }); + + + /** + * Fixes bug in Gecko where shift-enter in table cell does not place caret on new line + */ + if (tinymce.isGecko) { + ed.onKeyDown.add(function(ed, e) { + if (e.keyCode === tinymce.VK.ENTER && e.shiftKey) { + var node = ed.selection.getRng().startContainer; + var tableCell = dom.getParent(node, 'td,th'); + if (tableCell) { + var zeroSizedNbsp = ed.getDoc().createTextNode("\uFEFF"); + dom.insertAfter(zeroSizedNbsp, node); + } + } + }); + } + + + fixTableCaretPos(); + ed.startContent = ed.getContent({format : 'raw'}); + } + }); + + // Register action commands + each({ + mceTableSplitCells : function(grid) { + grid.split(); + }, + + mceTableMergeCells : function(grid) { + var rowSpan, colSpan, cell; + + cell = ed.dom.getParent(ed.selection.getNode(), 'th,td'); + if (cell) { + rowSpan = cell.rowSpan; + colSpan = cell.colSpan; + } + + if (!ed.dom.select('td.mceSelected,th.mceSelected').length) { + winMan.open({ + url : url + '/merge_cells.htm', + width : 240 + parseInt(ed.getLang('table.merge_cells_delta_width', 0)), + height : 110 + parseInt(ed.getLang('table.merge_cells_delta_height', 0)), + inline : 1 + }, { + rows : rowSpan, + cols : colSpan, + onaction : function(data) { + grid.merge(cell, data.cols, data.rows); + }, + plugin_url : url + }); + } else + grid.merge(); + }, + + mceTableInsertRowBefore : function(grid) { + grid.insertRow(true); + }, + + mceTableInsertRowAfter : function(grid) { + grid.insertRow(); + }, + + mceTableInsertColBefore : function(grid) { + grid.insertCol(true); + }, + + mceTableInsertColAfter : function(grid) { + grid.insertCol(); + }, + + mceTableDeleteCol : function(grid) { + grid.deleteCols(); + }, + + mceTableDeleteRow : function(grid) { + grid.deleteRows(); + }, + + mceTableCutRow : function(grid) { + clipboardRows = grid.cutRows(); + }, + + mceTableCopyRow : function(grid) { + clipboardRows = grid.copyRows(); + }, + + mceTablePasteRowBefore : function(grid) { + grid.pasteRows(clipboardRows, true); + }, + + mceTablePasteRowAfter : function(grid) { + grid.pasteRows(clipboardRows); + }, + + mceTableDelete : function(grid) { + grid.deleteTable(); + } + }, function(func, name) { + ed.addCommand(name, function() { + var grid = createTableGrid(); + + if (grid) { + func(grid); + ed.execCommand('mceRepaint'); + cleanup(); + } + }); + }); + + // Register dialog commands + each({ + mceInsertTable : function(val) { + winMan.open({ + url : url + '/table.htm', + width : 400 + parseInt(ed.getLang('table.table_delta_width', 0)), + height : 320 + parseInt(ed.getLang('table.table_delta_height', 0)), + inline : 1 + }, { + plugin_url : url, + action : val ? val.action : 0 + }); + }, + + mceTableRowProps : function() { + winMan.open({ + url : url + '/row.htm', + width : 400 + parseInt(ed.getLang('table.rowprops_delta_width', 0)), + height : 295 + parseInt(ed.getLang('table.rowprops_delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + }, + + mceTableCellProps : function() { + winMan.open({ + url : url + '/cell.htm', + width : 400 + parseInt(ed.getLang('table.cellprops_delta_width', 0)), + height : 295 + parseInt(ed.getLang('table.cellprops_delta_height', 0)), + inline : 1 + }, { + plugin_url : url + }); + } + }, function(func, name) { + ed.addCommand(name, function(ui, val) { + func(val); + }); + }); + } + }); + + // Register plugin + tinymce.PluginManager.add('table', tinymce.plugins.TablePlugin); +})(tinymce); diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js b/library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js old mode 100755 new mode 100644 index b5fc1fda3..d6f329059 --- a/library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js @@ -63,6 +63,11 @@ function init() { function updateAction() { var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0]; + if (!AutoValidator.validate(formObj)) { + tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.'); + return false; + } + tinyMCEPopup.restoreSelection(); el = ed.selection.getStart(); tdElm = ed.dom.getParent(el, "td,th"); @@ -83,8 +88,6 @@ function updateAction() { return; } - ed.execCommand('mceBeginUndoLevel'); - switch (getSelectValue(formObj, 'action')) { case "cell": var celltype = getSelectValue(formObj, 'celltype'); @@ -125,6 +128,36 @@ function updateAction() { break; + case "col": + var curr, col = 0, cell = trElm.firstChild, rows = tableElm.getElementsByTagName("tr"); + + if (cell.nodeName != "TD" && cell.nodeName != "TH") + cell = nextCell(cell); + + do { + if (cell == tdElm) + break; + col += cell.getAttribute("colspan"); + } while ((cell = nextCell(cell)) != null); + + for (var i=0; i - +
    {#table_dlg.merge_cells_title} -
     
    - - - - - - - - -
    {#table_dlg.cols}:
    {#table_dlg.rows}:
    + + + + + + + + + +
    :
    :
    diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/row.htm b/library/tinymce/jscripts/tiny_mce/plugins/table/row.htm old mode 100755 new mode 100644 index 092e6c827..1885401f6 --- a/library/tinymce/jscripts/tiny_mce/plugins/table/row.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/table/row.htm @@ -5,16 +5,17 @@ + - + @@ -23,7 +24,7 @@
    {#table_dlg.general_props} - +
    - +
    @@ -70,7 +71,7 @@
    @@ -80,7 +81,7 @@
    {#table_dlg.advanced_props} - +
    @@ -112,7 +113,7 @@
    - +
    @@ -122,14 +123,16 @@ - +
     
    - + +
     
    +
    diff --git a/library/tinymce/jscripts/tiny_mce/plugins/table/table.htm b/library/tinymce/jscripts/tiny_mce/plugins/table/table.htm old mode 100755 new mode 100644 index f26903922..b92fa741e --- a/library/tinymce/jscripts/tiny_mce/plugins/table/table.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/table/table.htm @@ -10,12 +10,13 @@ - + + @@ -23,48 +24,48 @@
    {#table_dlg.general_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    @@ -72,7 +73,7 @@
    {#table_dlg.advanced_props} - +
    @@ -98,7 +99,7 @@
    - +
    @@ -150,10 +151,10 @@ - - + + "}else{e+=""}if(f&&j.ListBox){if(f.Button||f.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarStart"},b.createHTML("span",null,""))}}}g="mceToolbarEnd";if(j.Button){g+=" mceToolbarEndButton"}else{if(j.SplitButton){g+=" mceToolbarEndSplitButton"}else{if(j.ListBox){g+=" mceToolbarEndListBox"}}}e+=b.createHTML("td",{"class":g},b.createHTML("span",null,""));return b.createHTML("table",{id:l.id,"class":"mceToolbar"+(m["class"]?" "+m["class"]:""),cellpadding:"0",cellspacing:"0",align:l.settings.align||""},""+e+"")}});(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{items:[],urls:{},lookup:{},onAdd:new a(this),get:function(d){return this.lookup[d]},requireLangPack:function(e){var d=b.settings;if(d&&d.language){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(e,d){this.items.push(d);this.lookup[e]=d;this.onAdd.dispatch(this,e,d);return d},load:function(h,e,d,g){var f=this;if(f.urls[h]){return}if(e.indexOf("/")!=0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}f.urls[h]=e.substring(0,e.lastIndexOf("/"));b.ScriptLoader.add(e,d,g)}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(q){var n=this,p,l=j.ScriptLoader,u,o=[],m;function r(x,y,t){var v=x[y];if(!v){return}if(j.is(v,"string")){t=v.replace(/\.\w+$/,"");t=t?j.resolve(t):0;v=j.resolve(v)}return v.apply(t||this,Array.prototype.slice.call(arguments,2))}q=d({theme:"simple",language:"en"},q);n.settings=q;i.add(document,"init",function(){var s,v;r(q,"onpageload");switch(q.mode){case"exact":s=q.elements||"";if(s.length>0){g(e(s),function(x){if(k.get(x)){m=new j.Editor(x,q);o.push(m);m.render(1)}else{g(document.forms,function(y){g(y.elements,function(z){if(z.name===x){x="mce_editor_"+c++;k.setAttrib(z,"id",x);m=new j.Editor(x,q);o.push(m);m.render(1)}})})}})}break;case"textareas":case"specific_textareas":function t(y,x){return x.constructor===RegExp?x.test(y.className):k.hasClass(y,x)}g(k.select("textarea"),function(x){if(q.editor_deselector&&t(x,q.editor_deselector)){return}if(!q.editor_selector||t(x,q.editor_selector)){u=k.get(x.name);if(!x.id&&!u){x.id=x.name}if(!x.id||n.get(x.id)){x.id=k.uniqueId()}m=new j.Editor(x.id,q);o.push(m);m.render(1)}});break}if(q.oninit){s=v=0;g(o,function(x){v++;if(!x.initialized){x.onInit.add(function(){s++;if(s==v){r(q,"oninit")}})}else{s++}if(s==v){r(q,"oninit")}})}})},get:function(l){if(l===a){return this.editors}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l':"",visual_table_class:"mceItemTable",visual:1,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",apply_source_formatting:1,directionality:"ltr",forced_root_block:"p",valid_elements:"@[id|class|style|title|dir';if(F.document_base_url!=m.documentBaseURL){E.iframeHTML+=''}E.iframeHTML+='';if(m.relaxedDomain){E.iframeHTML+=''; + t.plugins = {}; - bi = s.body_id || 'tinymce'; - if (bi.indexOf('=') != -1) { - bi = t.getParam('body_id', '', 'hash'); - bi = bi[t.id] || bi; - } + // Add events to the editor + each([ + 'onPreInit', - bc = s.body_class || ''; - if (bc.indexOf('=') != -1) { - bc = t.getParam('body_class', '', 'hash'); - bc = bc[t.id] || ''; - } + 'onBeforeRenderUI', - t.iframeHTML += ''; + 'onPostRender', - // Domain relaxing enabled, then set document domain - if (tinymce.relaxedDomain) { - // We need to write the contents here in IE since multiple writes messes up refresh button and back button - if (isIE || (tinymce.isOpera && parseFloat(opera.version()) >= 9.5)) - u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'; - else if (tinymce.isOpera) - u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";document.close();ed.setupIframe();})()'; - } + 'onLoad', - // Create iframe - n = DOM.add(o.iframeContainer, 'iframe', { - id : t.id + "_ifr", - src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7 - frameBorder : '0', - style : { - width : '100%', - height : h - } - }); + 'onInit', - t.contentAreaContainer = o.iframeContainer; - DOM.get(o.editorContainer).style.display = t.orgDisplay; - DOM.get(t.id).style.display = 'none'; + 'onRemove', - if (!isIE || !tinymce.relaxedDomain) - t.setupIframe(); + 'onActivate', - e = n = o = null; // Cleanup - }, + 'onDeactivate', - setupIframe : function() { - var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b; + 'onClick', - // Setup iframe body - if (!isIE || !tinymce.relaxedDomain) { - d.open(); - d.write(t.iframeHTML); - d.close(); - } + 'onEvent', - // Design mode needs to be added here Ctrl+A will fail otherwise - if (!isIE) { - try { - if (!s.readonly) - d.designMode = 'On'; - } catch (ex) { - // Will fail on Gecko if the editor is placed in an hidden container element - // The design mode will be set ones the editor is focused - } - } + 'onMouseUp', - // IE needs to use contentEditable or it will display non secure items for HTTPS - if (isIE) { - // It will not steal focus if we hide it while setting contentEditable - b = t.getBody(); - DOM.hide(b); + 'onMouseDown', - if (!s.readonly) - b.contentEditable = true; + 'onDblClick', - DOM.show(b); - } + 'onKeyDown', - t.dom = new tinymce.dom.DOMUtils(t.getDoc(), { - keep_values : true, - url_converter : t.convertURL, - url_converter_scope : t, - hex_colors : s.force_hex_style_colors, - class_filter : s.class_filter, - update_styles : 1, - fix_ie_paragraphs : 1, - valid_styles : s.valid_styles - }); + 'onKeyUp', - t.schema = new tinymce.dom.Schema(); + 'onKeyPress', - t.serializer = new tinymce.dom.Serializer(extend(s, { - valid_elements : s.verify_html === false ? '*[*]' : s.valid_elements, - dom : t.dom, - schema : t.schema - })); + 'onContextMenu', - t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer); + 'onSubmit', - t.formatter = new tinymce.Formatter(this); + 'onReset', - // Register default formats - t.formatter.register({ - alignleft : [ - {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}}, - {selector : 'img,table', styles : {'float' : 'left'}} - ], + 'onPaste', - aligncenter : [ - {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}}, - {selector : 'img', styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}}, - {selector : 'table', styles : {marginLeft : 'auto', marginRight : 'auto'}} - ], + 'onPreProcess', - alignright : [ - {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}}, - {selector : 'img,table', styles : {'float' : 'right'}} - ], + 'onPostProcess', - alignfull : [ - {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}} - ], + 'onBeforeSetContent', - bold : [ - {inline : 'strong'}, - {inline : 'span', styles : {fontWeight : 'bold'}}, - {inline : 'b'} - ], + 'onBeforeGetContent', - italic : [ - {inline : 'em'}, - {inline : 'span', styles : {fontStyle : 'italic'}}, - {inline : 'i'} - ], + 'onSetContent', - underline : [ - {inline : 'span', styles : {textDecoration : 'underline'}, exact : true}, - {inline : 'u'} - ], + 'onGetContent', - strikethrough : [ - {inline : 'span', styles : {textDecoration : 'line-through'}, exact : true}, - {inline : 'u'} - ], + 'onLoadContent', - forecolor : {inline : 'span', styles : {color : '%value'}}, - hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}}, - fontname : {inline : 'span', styles : {fontFamily : '%value'}}, - fontsize : {inline : 'span', styles : {fontSize : '%value'}}, - fontsize_class : {inline : 'span', attributes : {'class' : '%value'}}, - blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'}, + 'onSaveContent', - removeformat : [ - {selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true}, - {selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true}, - {selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true} - ] - }); + 'onNodeChange', - // Register default block formats - each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) { - t.formatter.register(name, {block : name, remove : 'all'}); - }); + 'onChange', - // Register user defined formats - t.formatter.register(t.settings.formats); + 'onBeforeExecCommand', - t.undoManager = new tinymce.UndoManager(t); + 'onExecCommand', - // Pass through - t.undoManager.onAdd.add(function(um, l) { - if (!l.initial) - return t.onChange.dispatch(t, l, um); - }); + 'onUndo', - t.undoManager.onUndo.add(function(um, l) { - return t.onUndo.dispatch(t, l, um); - }); + 'onRedo', - t.undoManager.onRedo.add(function(um, l) { - return t.onRedo.dispatch(t, l, um); - }); + 'onVisualAid', + + 'onSetProgressState', - t.forceBlocks = new tinymce.ForceBlocks(t, { - forced_root_block : s.forced_root_block + 'onSetAttrib' + ], function(e) { + t[e] = new Dispatcher(t); }); - t.editorCommands = new tinymce.EditorCommands(t); + t.settings = s = extend({ + id : id, + language : 'en', + docs_language : 'en', + theme : 'simple', + skin : 'default', + delta_width : 0, + delta_height : 0, + popup_css : '', + plugins : '', + document_base_url : tinymce.documentBaseURL, + add_form_submit_trigger : 1, + submit_patch : 1, + add_unload_trigger : 1, + convert_urls : 1, + relative_urls : 1, + remove_script_host : 1, + table_inline_editing : 0, + object_resizing : 1, + cleanup : 1, + accessibility_focus : 1, + custom_shortcuts : 1, + custom_undo_redo_keyboard_shortcuts : 1, + custom_undo_redo_restore_selection : 1, + custom_undo_redo : 1, + doctype : tinymce.isIE6 ? '' : '', // Use old doctype on IE 6 to avoid horizontal scroll + visual_table_class : 'mceItemTable', + visual : 1, + font_size_style_values : 'xx-small,x-small,small,medium,large,x-large,xx-large', + font_size_legacy_values : 'xx-small,small,medium,large,x-large,xx-large,300%', // See: http://www.w3.org/TR/CSS2/fonts.html#propdef-font-size + apply_source_formatting : 1, + directionality : 'ltr', + forced_root_block : 'p', + hidden_input : 1, + padd_empty_editor : 1, + render_ui : 1, + init_theme : 1, + force_p_newlines : 1, + indentation : '30px', + keep_styles : 1, + fix_table_elements : 1, + inline_styles : 1, + convert_fonts_to_spans : true, + indent : 'simple', + indent_before : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside', + indent_after : 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside', + validate : true, + entity_encoding : 'named', + url_converter : t.convertURL, + url_converter_scope : t, + ie7_compat : true + }, s); - // Pass through - t.serializer.onPreProcess.add(function(se, o) { - return t.onPreProcess.dispatch(t, o, se); + t.documentBaseURI = new tinymce.util.URI(s.document_base_url || tinymce.documentBaseURL, { + base_uri : tinyMCE.baseURI }); - t.serializer.onPostProcess.add(function(se, o) { - return t.onPostProcess.dispatch(t, o, se); - }); + t.baseURI = tinymce.baseURI; - t.onPreInit.dispatch(t); + t.contentCSS = []; - if (!s.gecko_spellcheck) - t.getBody().spellcheck = 0; + // Call setup + t.execCallback('setup', t); + }, - if (!s.readonly) - t._addEvents(); + render : function(nst) { + var t = this, s = t.settings, id = t.id, sl = tinymce.ScriptLoader; - t.controlManager.onPostRender.dispatch(t, t.controlManager); - t.onPostRender.dispatch(t); + // Page is not loaded yet, wait for it + if (!Event.domLoaded) { + Event.add(window, 'ready', function() { + t.render(); + }); + return; + } - if (s.directionality) - t.getBody().dir = s.directionality; + tinyMCE.settings = s; - if (s.nowrap) - t.getBody().style.whiteSpace = "nowrap"; + // Element not found, then skip initialization + if (!t.getElement()) + return; - if (s.custom_elements) { - function handleCustom(ed, o) { - each(explode(s.custom_elements), function(v) { - var n; + // Is a iPad/iPhone and not on iOS5, then skip initialization. We need to sniff + // here since the browser says it has contentEditable support but there is no visible + // caret We will remove this check ones Apple implements full contentEditable support + if (tinymce.isIDevice && !tinymce.isIOS5) + return; - if (v.indexOf('~') === 0) { - v = v.substring(1); - n = 'span'; - } else - n = 'div'; + // Add hidden input for non input elements inside form elements + if (!/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && s.hidden_input && DOM.getParent(id, 'form')) + DOM.insertAfter(DOM.create('input', {type : 'hidden', name : id}), id); - o.content = o.content.replace(new RegExp('<(' + v + ')([^>]*)>', 'g'), '<' + n + ' _mce_name="$1"$2>'); - o.content = o.content.replace(new RegExp('', 'g'), ''); - }); - }; + if (tinymce.WindowManager) + t.windowManager = new tinymce.WindowManager(t); - t.onBeforeSetContent.add(handleCustom); - t.onPostProcess.add(function(ed, o) { - if (o.set) - handleCustom(ed, o); + if (s.encoding == 'xml') { + t.onGetContent.add(function(ed, o) { + if (o.save) + o.content = DOM.encode(o.content); }); } - if (s.handle_node_change_callback) { - t.onNodeChange.add(function(ed, cm, n) { - t.execCallback('handle_node_change_callback', t.id, n, -1, -1, true, t.selection.isCollapsed()); + if (s.add_form_submit_trigger) { + t.onSubmit.addToTop(function() { + if (t.initialized) { + t.save(); + t.isNotDirty = 1; + } }); } - if (s.save_callback) { - t.onSaveContent.add(function(ed, o) { - var h = t.execCallback('save_callback', t.id, o.content, t.getBody()); - - if (h) - o.content = h; + if (s.add_unload_trigger) { + t._beforeUnload = tinyMCE.onBeforeUnload.add(function() { + if (t.initialized && !t.destroyed && !t.isHidden()) + t.save({format : 'raw', no_events : true}); }); } - if (s.onchange_callback) { - t.onChange.add(function(ed, l) { - t.execCallback('onchange_callback', t, l); - }); - } + tinymce.addUnload(t.destroy, t); - if (s.convert_newlines_to_brs) { - t.onBeforeSetContent.add(function(ed, o) { - if (o.initial) - o.content = o.content.replace(/\r?\n/g, '
    '); - }); - } + if (s.submit_patch) { + t.onBeforeRenderUI.add(function() { + var n = t.getElement().form; - if (s.fix_nesting && isIE) { - t.onBeforeSetContent.add(function(ed, o) { - o.content = t._fixNesting(o.content); + if (!n) + return; + + // Already patched + if (n._mceOldSubmit) + return; + + // Check page uses id="submit" or name="submit" for it's submit button + if (!n.submit.nodeType && !n.submit.length) { + t.formElement = n; + n._mceOldSubmit = n.submit; + n.submit = function() { + // Save all instances + tinymce.triggerSave(); + t.isNotDirty = 1; + + return t.formElement._mceOldSubmit(t.formElement); + }; + } + + n = null; }); } - if (s.preformatted) { - t.onPostProcess.add(function(ed, o) { - o.content = o.content.replace(/^\s*/, ''); - o.content = o.content.replace(/<\/pre>\s*$/, ''); + // Load scripts + function loadScripts() { + if (s.language && s.language_load !== false) + sl.add(tinymce.baseURL + '/langs/' + s.language + '.js'); - if (o.set) - o.content = '
    ' + o.content + '
    '; + if (s.theme && s.theme.charAt(0) != '-' && !ThemeManager.urls[s.theme]) + ThemeManager.load(s.theme, 'themes/' + s.theme + '/editor_template' + tinymce.suffix + '.js'); + + each(explode(s.plugins), function(p) { + if (p &&!PluginManager.urls[p]) { + if (p.charAt(0) == '-') { + p = p.substr(1, p.length); + var dependencies = PluginManager.dependencies(p); + each(dependencies, function(dep) { + var defaultSettings = {prefix:'plugins/', resource: dep, suffix:'/editor_plugin' + tinymce.suffix + '.js'}; + var dep = PluginManager.createUrl(defaultSettings, dep); + PluginManager.load(dep.resource, dep); + + }); + } else { + // Skip safari plugin, since it is removed as of 3.3b1 + if (p == 'safari') { + return; + } + PluginManager.load(p, {prefix:'plugins/', resource: p, suffix:'/editor_plugin' + tinymce.suffix + '.js'}); + } + } }); - } - if (s.verify_css_classes) { - t.serializer.attribValueFilter = function(n, v) { - var s, cl; + // Init when que is loaded + sl.loadQueue(function() { + if (!t.removed) + t.init(); + }); + }; - if (n == 'class') { - // Build regexp for classes - if (!t.classesRE) { - cl = t.dom.getClasses(); + loadScripts(); + }, - if (cl.length > 0) { - s = ''; + init : function() { + var n, t = this, s = t.settings, w, h, e = t.getElement(), o, ti, u, bi, bc, re, i, initializedPlugins = []; - each (cl, function(o) { - s += (s ? '|' : '') + o['class']; - }); + tinymce.add(t); - t.classesRE = new RegExp('(' + s + ')', 'gi'); - } - } + s.aria_label = s.aria_label || DOM.getAttrib(e, 'aria-label', t.getLang('aria.rich_text_area')); - return !t.classesRE || /(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v) || t.classesRE.test(v) ? v : ''; - } + if (s.theme) { + s.theme = s.theme.replace(/-/, ''); + o = ThemeManager.get(s.theme); + t.theme = new o(); - return v; - }; + if (t.theme.init && s.init_theme) + t.theme.init(t, ThemeManager.urls[s.theme] || tinymce.documentBaseURL.replace(/\/$/, '')); } + function initPlugin(p) { + var c = PluginManager.get(p), u = PluginManager.urls[p] || tinymce.documentBaseURL.replace(/\/$/, ''), po; + if (c && tinymce.inArray(initializedPlugins,p) === -1) { + each(PluginManager.dependencies(p), function(dep){ + initPlugin(dep); + }); + po = new c(t, u); - if (s.cleanup_callback) { - t.onBeforeSetContent.add(function(ed, o) { - o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o); - }); + t.plugins[p] = po; - t.onPreProcess.add(function(ed, o) { - if (o.set) - t.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o); + if (po.init) { + po.init(t, u); + initializedPlugins.push(p); + } + } + } + + // Create all plugins + each(explode(s.plugins.replace(/\-/g, '')), initPlugin); - if (o.get) - t.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o); - }); + // Setup popup CSS path(s) + if (s.popup_css !== false) { + if (s.popup_css) + s.popup_css = t.documentBaseURI.toAbsolute(s.popup_css); + else + s.popup_css = t.baseURI.toAbsolute("themes/" + s.theme + "/skins/" + s.skin + "/dialog.css"); + } - t.onPostProcess.add(function(ed, o) { - if (o.set) - o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o); + if (s.popup_css_add) + s.popup_css += ',' + t.documentBaseURI.toAbsolute(s.popup_css_add); - if (o.get) - o.content = t.execCallback('cleanup_callback', 'get_from_editor', o.content, o); - }); - } + t.controlManager = new tinymce.ControlManager(t); - if (s.save_callback) { - t.onGetContent.add(function(ed, o) { - if (o.save) - o.content = t.execCallback('save_callback', t.id, o.content, t.getBody()); + if (s.custom_undo_redo) { + t.onBeforeExecCommand.add(function(ed, cmd, ui, val, a) { + if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo)) + t.undoManager.beforeChange(); }); - } - if (s.handle_event_callback) { - t.onEvent.add(function(ed, e, o) { - if (t.execCallback('handle_event_callback', e, ed, o) === false) - Event.cancel(e); + t.onExecCommand.add(function(ed, cmd, ui, val, a) { + if (cmd != 'Undo' && cmd != 'Redo' && cmd != 'mceRepaint' && (!a || !a.skip_undo)) + t.undoManager.add(); }); } - // Add visual aids when new contents is added - t.onSetContent.add(function() { - t.addVisual(t.getBody()); + t.onExecCommand.add(function(ed, c) { + // Don't refresh the select lists until caret move + if (!/^(FontName|FontSize)$/.test(c)) + t.nodeChanged(); }); - // Remove empty contents - if (s.padd_empty_editor) { - t.onPostProcess.add(function(ed, o) { - o.content = o.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
    [\r\n]*)$/, ''); - }); + // Remove ghost selections on images and tables in Gecko + if (isGecko) { + function repaint(a, o) { + if (!o || !o.initial) + t.execCommand('mceRepaint'); + }; + + t.onUndo.add(repaint); + t.onRedo.add(repaint); + t.onSetContent.add(repaint); } - if (isGecko) { - // Fix gecko link bug, when a link is placed at the end of block elements there is - // no way to move the caret behind the link. This fix adds a bogus br element after the link - function fixLinks(ed, o) { - each(ed.dom.select('a'), function(n) { - var pn = n.parentNode; + // Enables users to override the control factory + t.onBeforeRenderUI.dispatch(t, t.controlManager); - if (ed.dom.isBlock(pn) && pn.lastChild === n) - ed.dom.add(pn, 'br', {'_mce_bogus' : 1}); - }); - }; + // Measure box + if (s.render_ui) { + w = s.width || e.style.width || e.offsetWidth; + h = s.height || e.style.height || e.offsetHeight; + t.orgDisplay = e.style.display; + re = /^[0-9\.]+(|px)$/i; - t.onExecCommand.add(function(ed, cmd) { - if (cmd === 'CreateLink') - fixLinks(ed); + if (re.test('' + w)) + w = Math.max(parseInt(w) + (o.deltaWidth || 0), 100); + + if (re.test('' + h)) + h = Math.max(parseInt(h) + (o.deltaHeight || 0), 100); + + // Render UI + o = t.theme.renderUI({ + targetNode : e, + width : w, + height : h, + deltaWidth : s.delta_width, + deltaHeight : s.delta_height }); - t.onSetContent.add(t.selection.onSetContent.add(fixLinks)); + t.editorContainer = o.editorContainer; + } + + + // User specified a document.domain value + if (document.domain && location.hostname != document.domain) + tinymce.relaxedDomain = document.domain; + + // Resize editor + DOM.setStyles(o.sizeContainer || o.editorContainer, { + width : w, + height : h + }); - if (!s.readonly) { - try { - // Design mode must be set here once again to fix a bug where - // Ctrl+A/Delete/Backspace didn't work if the editor was added using mceAddControl then removed then added again - d.designMode = 'Off'; - d.designMode = 'On'; - } catch (ex) { - // Will fail on Gecko if the editor is placed in an hidden container element - // The design mode will be set ones the editor is focused - } - } + // Load specified content CSS last + if (s.content_css) { + tinymce.each(explode(s.content_css), function(u) { + t.contentCSS.push(t.documentBaseURI.toAbsolute(u)); + }); } - // A small timeout was needed since firefox will remove. Bug: #1838304 - setTimeout(function () { - if (t.removed) - return; - - t.load({initial : true, format : (s.cleanup_on_startup ? 'html' : 'raw')}); - t.startContent = t.getContent({format : 'raw'}); - t.initialized = true; + h = (o.iframeHeight || h) + (typeof(h) == 'number' ? (o.deltaHeight || 0) : ''); + if (h < 100) + h = 100; - t.onInit.dispatch(t); - t.execCallback('setupcontent_callback', t.id, t.getBody(), t.getDoc()); - t.execCallback('init_instance_callback', t); - t.focus(true); - t.nodeChanged({initial : 1}); + t.iframeHTML = s.doctype + ''; - // Load specified content CSS last - if (s.content_css) { - tinymce.each(explode(s.content_css), function(u) { - t.dom.loadCSS(t.documentBaseURI.toAbsolute(u)); - }); - } + // We only need to override paths if we have to + // IE has a bug where it remove site absolute urls to relative ones if this is specified + if (s.document_base_url != tinymce.documentBaseURL) + t.iframeHTML += ''; - // Handle auto focus - if (s.auto_focus) { - setTimeout(function () { - var ed = tinymce.get(s.auto_focus); + // IE8 doesn't support carets behind images setting ie7_compat would force IE8+ to run in IE7 compat mode. + if (s.ie7_compat) + t.iframeHTML += ''; + else + t.iframeHTML += ''; - ed.selection.select(ed.getBody(), 1); - ed.selection.collapse(1); - ed.getWin().focus(); - }, 100); - } - }, 1); - - e = null; - }, + t.iframeHTML += ''; + // Load the CSS by injecting them into the HTML this will reduce "flicker" + for (i = 0; i < t.contentCSS.length; i++) { + t.iframeHTML += ''; + } - focus : function(sf) { - var oed, t = this, ce = t.settings.content_editable, ieRng, controlElm, doc = t.getDoc(); + t.contentCSS = []; - if (!sf) { - // Get selected control element - ieRng = t.selection.getRng(); - if (ieRng.item) { - controlElm = ieRng.item(0); - } + bi = s.body_id || 'tinymce'; + if (bi.indexOf('=') != -1) { + bi = t.getParam('body_id', '', 'hash'); + bi = bi[t.id] || bi; + } - // Is not content editable - if (!ce) - t.getWin().focus(); + bc = s.body_class || ''; + if (bc.indexOf('=') != -1) { + bc = t.getParam('body_class', '', 'hash'); + bc = bc[t.id] || ''; + } - // Restore selected control element - // This is needed when for example an image is selected within a - // layer a call to focus will then remove the control selection - if (controlElm && controlElm.ownerDocument == doc) { - ieRng = doc.body.createControlRange(); - ieRng.addElement(controlElm); - ieRng.select(); - } + t.iframeHTML += '
    '; + // Domain relaxing enabled, then set document domain + if (tinymce.relaxedDomain && (isIE || (tinymce.isOpera && parseFloat(opera.version()) < 11))) { + // We need to write the contents here in IE since multiple writes messes up refresh button and back button + u = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinyMCE.get("' + t.id + '");document.write(ed.iframeHTML);document.close();ed.setupIframe();})()'; } - if (tinymce.activeEditor != t) { - if ((oed = tinymce.activeEditor) != null) - oed.onDeactivate.dispatch(oed, t); + // Create iframe + // TODO: ACC add the appropriate description on this. + n = DOM.add(o.iframeContainer, 'iframe', { + id : t.id + "_ifr", + src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7 + frameBorder : '0', + allowTransparency : "true", + title : s.aria_label, + style : { + width : '100%', + height : h, + display : 'block' // Important for Gecko to render the iframe correctly + } + }); - t.onActivate.dispatch(t, oed); - } + t.contentAreaContainer = o.iframeContainer; + DOM.get(o.editorContainer).style.display = t.orgDisplay; + DOM.get(t.id).style.display = 'none'; + DOM.setAttrib(t.id, 'aria-hidden', true); - tinymce._setActive(t); + if (!tinymce.relaxedDomain || !u) + t.setupIframe(); + + e = n = o = null; // Cleanup }, - execCallback : function(n) { - var t = this, f = t.settings[n], s; + setupIframe : function() { + var t = this, s = t.settings, e = DOM.get(t.id), d = t.getDoc(), h, b; - if (!f) - return; + // Setup iframe body + if (!isIE || !tinymce.relaxedDomain) { + d.open(); + d.write(t.iframeHTML); + d.close(); - // Look through lookup - if (t.callbackLookup && (s = t.callbackLookup[n])) { - f = s.func; - s = s.scope; + if (tinymce.relaxedDomain) + d.domain = tinymce.relaxedDomain; } - if (is(f, 'string')) { - s = f.replace(/\.\w+$/, ''); - s = s ? tinymce.resolve(s) : 0; - f = tinymce.resolve(f); - t.callbackLookup = t.callbackLookup || {}; - t.callbackLookup[n] = {func : f, scope : s}; - } + // It will not steal focus while setting contentEditable + b = t.getBody(); + b.disabled = true; - return f.apply(s || t, Array.prototype.slice.call(arguments, 1)); - }, + if (!s.readonly) + b.contentEditable = true; - translate : function(s) { - var c = this.settings.language || 'en', i18n = tinymce.i18n; + b.disabled = false; - if (!s) - return ''; + t.schema = new tinymce.html.Schema(s); - return i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) { - return i18n[c + '.' + b] || '{#' + b + '}'; + t.dom = new tinymce.dom.DOMUtils(t.getDoc(), { + keep_values : true, + url_converter : t.convertURL, + url_converter_scope : t, + hex_colors : s.force_hex_style_colors, + class_filter : s.class_filter, + update_styles : 1, + fix_ie_paragraphs : 1, + schema : t.schema }); - }, - getLang : function(n, dv) { - return tinymce.i18n[(this.settings.language || 'en') + '.' + n] || (is(dv) ? dv : '{#' + n + '}'); - }, + t.parser = new tinymce.html.DomParser(s, t.schema); - getParam : function(n, dv, ty) { - var tr = tinymce.trim, v = is(this.settings[n]) ? this.settings[n] : dv, o; + // Force anchor names closed, unless the setting "allow_html_in_named_anchor" is explicitly included. + if (!t.settings.allow_html_in_named_anchor) { + t.parser.addAttributeFilter('name', function(nodes, name) { + var i = nodes.length, sibling, prevSibling, parent, node; + + while (i--) { + node = nodes[i]; + if (node.name === 'a' && node.firstChild) { + parent = node.parent; + + // Move children after current node + sibling = node.lastChild; + do { + prevSibling = sibling.prev; + parent.insert(sibling, node); + sibling = prevSibling; + } while (sibling); + } + } + }); + } - if (ty === 'hash') { - o = {}; + // Convert src and href into data-mce-src, data-mce-href and data-mce-style + t.parser.addAttributeFilter('src,href,style', function(nodes, name) { + var i = nodes.length, node, dom = t.dom, value, internalName; - if (is(v, 'string')) { - each(v.indexOf('=') > 0 ? v.split(/[;,](?![^=;,]*(?:[;,]|$))/) : v.split(','), function(v) { - v = v.split('='); + while (i--) { + node = nodes[i]; + value = node.attr(name); + internalName = 'data-mce-' + name; - if (v.length > 1) - o[tr(v[0])] = tr(v[1]); + // Add internal attribute if we need to we don't on a refresh of the document + if (!node.attributes.map[internalName]) { + if (name === "style") + node.attr(internalName, dom.serializeStyle(dom.parseStyle(value), node.name)); else - o[tr(v[0])] = tr(v); - }); - } else - o = v; - - return o; - } + node.attr(internalName, t.convertURL(value, name, node.name)); + } + } + }); - return v; - }, + // Keep scripts from executing + t.parser.addNodeFilter('script', function(nodes, name) { + var i = nodes.length, node; - nodeChanged : function(o) { - var t = this, s = t.selection, n = (isIE ? s.getNode() : s.getStart()) || t.getBody(); + while (i--) { + node = nodes[i]; + node.attr('type', 'mce-' + (node.attr('type') || 'text/javascript')); + } + }); - // Fix for bug #1896577 it seems that this can not be fired while the editor is loading - if (t.initialized) { - o = o || {}; - n = isIE && n.ownerDocument != t.getDoc() ? t.getBody() : n; // Fix for IE initial state + t.parser.addNodeFilter('#cdata', function(nodes, name) { + var i = nodes.length, node; - // Get parents and add them to object - o.parents = []; - t.dom.getParent(n, function(node) { - if (node.nodeName == 'BODY') - return true; + while (i--) { + node = nodes[i]; + node.type = 8; + node.name = '#comment'; + node.value = '[CDATA[' + node.value + ']]'; + } + }); - o.parents.push(node); - }); + t.parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function(nodes, name) { + var i = nodes.length, node, nonEmptyElements = t.schema.getNonEmptyElements(); - t.onNodeChange.dispatch( - t, - o ? o.controlManager || t.controlManager : t.controlManager, - n, - s.isCollapsed(), - o - ); - } - }, + while (i--) { + node = nodes[i]; - addButton : function(n, s) { - var t = this; + if (node.isEmpty(nonEmptyElements)) + node.empty().append(new tinymce.html.Node('br', 1)).shortEnded = true; + } + }); - t.buttons = t.buttons || {}; - t.buttons[n] = s; - }, + t.serializer = new tinymce.dom.Serializer(s, t.dom, t.schema); - addCommand : function(n, f, s) { - this.execCommands[n] = {func : f, scope : s || this}; - }, + t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer); - addQueryStateHandler : function(n, f, s) { - this.queryStateCommands[n] = {func : f, scope : s || this}; - }, + t.formatter = new tinymce.Formatter(this); - addQueryValueHandler : function(n, f, s) { - this.queryValueCommands[n] = {func : f, scope : s || this}; - }, + // Register default formats + t.formatter.register({ + alignleft : [ + {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}, defaultBlock: 'div'}, + {selector : 'img,table', collapsed : false, styles : {'float' : 'left'}} + ], - addShortcut : function(pa, desc, cmd_func, sc) { - var t = this, c; + aligncenter : [ + {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'center'}, defaultBlock: 'div'}, + {selector : 'img', collapsed : false, styles : {display : 'block', marginLeft : 'auto', marginRight : 'auto'}}, + {selector : 'table', collapsed : false, styles : {marginLeft : 'auto', marginRight : 'auto'}} + ], - if (!t.settings.custom_shortcuts) - return false; + alignright : [ + {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}, defaultBlock: 'div'}, + {selector : 'img,table', collapsed : false, styles : {'float' : 'right'}} + ], - t.shortcuts = t.shortcuts || {}; + alignfull : [ + {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}, defaultBlock: 'div'} + ], - if (is(cmd_func, 'string')) { - c = cmd_func; + bold : [ + {inline : 'strong', remove : 'all'}, + {inline : 'span', styles : {fontWeight : 'bold'}}, + {inline : 'b', remove : 'all'} + ], - cmd_func = function() { - t.execCommand(c, false, null); - }; - } + italic : [ + {inline : 'em', remove : 'all'}, + {inline : 'span', styles : {fontStyle : 'italic'}}, + {inline : 'i', remove : 'all'} + ], - if (is(cmd_func, 'object')) { - c = cmd_func; + underline : [ + {inline : 'span', styles : {textDecoration : 'underline'}, exact : true}, + {inline : 'u', remove : 'all'} + ], - cmd_func = function() { - t.execCommand(c[0], c[1], c[2]); - }; - } + strikethrough : [ + {inline : 'span', styles : {textDecoration : 'line-through'}, exact : true}, + {inline : 'strike', remove : 'all'} + ], - each(explode(pa), function(pa) { - var o = { - func : cmd_func, - scope : sc || this, - desc : desc, - alt : false, - ctrl : false, - shift : false - }; + forecolor : {inline : 'span', styles : {color : '%value'}, wrap_links : false}, + hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}, wrap_links : false}, + fontname : {inline : 'span', styles : {fontFamily : '%value'}}, + fontsize : {inline : 'span', styles : {fontSize : '%value'}}, + fontsize_class : {inline : 'span', attributes : {'class' : '%value'}}, + blockquote : {block : 'blockquote', wrapper : 1, remove : 'all'}, + subscript : {inline : 'sub'}, + superscript : {inline : 'sup'}, - each(explode(pa, '+'), function(v) { - switch (v) { - case 'alt': - case 'ctrl': - case 'shift': - o[v] = true; - break; + link : {inline : 'a', selector : 'a', remove : 'all', split : true, deep : true, + onmatch : function(node) { + return true; + }, - default: - o.charCode = v.charCodeAt(0); - o.keyCode = v.toUpperCase().charCodeAt(0); + onformat : function(elm, fmt, vars) { + each(vars, function(value, key) { + t.dom.setAttrib(elm, key, value); + }); } - }); + }, + + removeformat : [ + {selector : 'b,strong,em,i,font,u,strike', remove : 'all', split : true, expand : false, block_expand : true, deep : true}, + {selector : 'span', attributes : ['style', 'class'], remove : 'empty', split : true, expand : false, deep : true}, + {selector : '*', attributes : ['style', 'class'], split : false, expand : false, deep : true} + ] + }); - t.shortcuts[(o.ctrl ? 'ctrl' : '') + ',' + (o.alt ? 'alt' : '') + ',' + (o.shift ? 'shift' : '') + ',' + o.keyCode] = o; + // Register default block formats + each('p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp'.split(/\s/), function(name) { + t.formatter.register(name, {block : name, remove : 'all'}); }); - return true; - }, + // Register user defined formats + t.formatter.register(t.settings.formats); - execCommand : function(cmd, ui, val, a) { - var t = this, s = 0, o, st; + t.undoManager = new tinymce.UndoManager(t); - if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus)) - t.focus(); + // Pass through + t.undoManager.onAdd.add(function(um, l) { + if (um.hasUndo()) + return t.onChange.dispatch(t, l, um); + }); - o = {}; - t.onBeforeExecCommand.dispatch(t, cmd, ui, val, o); - if (o.terminate) - return false; + t.undoManager.onUndo.add(function(um, l) { + return t.onUndo.dispatch(t, l, um); + }); - // Command callback - if (t.execCallback('execcommand_callback', t.id, t.selection.getNode(), cmd, ui, val)) { - t.onExecCommand.dispatch(t, cmd, ui, val, a); - return true; - } + t.undoManager.onRedo.add(function(um, l) { + return t.onRedo.dispatch(t, l, um); + }); - // Registred commands - if (o = t.execCommands[cmd]) { - st = o.func.call(o.scope, ui, val); + t.forceBlocks = new tinymce.ForceBlocks(t); + t.enterKey = new tinymce.EnterKey(t); - // Fall through on true - if (st !== true) { - t.onExecCommand.dispatch(t, cmd, ui, val, a); - return st; - } - } + t.editorCommands = new tinymce.EditorCommands(t); - // Plugin commands - each(t.plugins, function(p) { - if (p.execCommand && p.execCommand(cmd, ui, val)) { - t.onExecCommand.dispatch(t, cmd, ui, val, a); - s = 1; - return false; - } + // Pass through + t.serializer.onPreProcess.add(function(se, o) { + return t.onPreProcess.dispatch(t, o, se); }); - if (s) - return true; + t.serializer.onPostProcess.add(function(se, o) { + return t.onPostProcess.dispatch(t, o, se); + }); - // Theme commands - if (t.theme && t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) { - t.onExecCommand.dispatch(t, cmd, ui, val, a); - return true; - } + t.onPreInit.dispatch(t); - // Execute global commands - if (tinymce.GlobalCommands.execCommand(t, cmd, ui, val)) { - t.onExecCommand.dispatch(t, cmd, ui, val, a); - return true; - } + if (!s.gecko_spellcheck) + t.getBody().spellcheck = 0; - // Editor commands - if (t.editorCommands.execCommand(cmd, ui, val)) { - t.onExecCommand.dispatch(t, cmd, ui, val, a); - return true; - } + if (!s.readonly) + t._addEvents(); - // Browser commands - t.getDoc().execCommand(cmd, ui, val); - t.onExecCommand.dispatch(t, cmd, ui, val, a); - }, + t.controlManager.onPostRender.dispatch(t, t.controlManager); + t.onPostRender.dispatch(t); - queryCommandState : function(cmd) { - var t = this, o, s; + t.quirks = new tinymce.util.Quirks(this); - // Is hidden then return undefined - if (t._isHidden()) - return; + if (s.directionality) + t.getBody().dir = s.directionality; - // Registred commands - if (o = t.queryStateCommands[cmd]) { - s = o.func.call(o.scope); + if (s.nowrap) + t.getBody().style.whiteSpace = "nowrap"; - // Fall though on true - if (s !== true) - return s; + if (s.handle_node_change_callback) { + t.onNodeChange.add(function(ed, cm, n) { + t.execCallback('handle_node_change_callback', t.id, n, -1, -1, true, t.selection.isCollapsed()); + }); } - // Registred commands - o = t.editorCommands.queryCommandState(cmd); - if (o !== -1) - return o; + if (s.save_callback) { + t.onSaveContent.add(function(ed, o) { + var h = t.execCallback('save_callback', t.id, o.content, t.getBody()); - // Browser commands - try { - return this.getDoc().queryCommandState(cmd); - } catch (ex) { - // Fails sometimes see bug: 1896577 + if (h) + o.content = h; + }); } - }, - queryCommandValue : function(c) { - var t = this, o, s; - - // Is hidden then return undefined - if (t._isHidden()) - return; + if (s.onchange_callback) { + t.onChange.add(function(ed, l) { + t.execCallback('onchange_callback', t, l); + }); + } - // Registred commands - if (o = t.queryValueCommands[c]) { - s = o.func.call(o.scope); + if (s.protect) { + t.onBeforeSetContent.add(function(ed, o) { + if (s.protect) { + each(s.protect, function(pattern) { + o.content = o.content.replace(pattern, function(str) { + return ''; + }); + }); + } + }); + } - // Fall though on true - if (s !== true) - return s; + if (s.convert_newlines_to_brs) { + t.onBeforeSetContent.add(function(ed, o) { + if (o.initial) + o.content = o.content.replace(/\r?\n/g, '
    '); + }); } - // Registred commands - o = t.editorCommands.queryCommandValue(c); - if (is(o)) - return o; + if (s.preformatted) { + t.onPostProcess.add(function(ed, o) { + o.content = o.content.replace(/^\s*/, ''); + o.content = o.content.replace(/<\/pre>\s*$/, ''); - // Browser commands - try { - return this.getDoc().queryCommandValue(c); - } catch (ex) { - // Fails sometimes see bug: 1896577 + if (o.set) + o.content = '
    ' + o.content + '
    '; + }); } - }, - show : function() { - var t = this; + if (s.verify_css_classes) { + t.serializer.attribValueFilter = function(n, v) { + var s, cl; - DOM.show(t.getContainer()); - DOM.hide(t.id); - t.load(); - }, + if (n == 'class') { + // Build regexp for classes + if (!t.classesRE) { + cl = t.dom.getClasses(); - hide : function() { - var t = this, d = t.getDoc(); + if (cl.length > 0) { + s = ''; - // Fixed bug where IE has a blinking cursor left from the editor - if (isIE && d) - d.execCommand('SelectAll'); + each (cl, function(o) { + s += (s ? '|' : '') + o['class']; + }); - // We must save before we hide so Safari doesn't crash - t.save(); - DOM.hide(t.getContainer()); - DOM.setStyle(t.id, 'display', t.orgDisplay); - }, + t.classesRE = new RegExp('(' + s + ')', 'gi'); + } + } - isHidden : function() { - return !DOM.isHidden(this.id); - }, + return !t.classesRE || /(\bmceItem\w+\b|\bmceTemp\w+\b)/g.test(v) || t.classesRE.test(v) ? v : ''; + } - setProgressState : function(b, ti, o) { - this.onSetProgressState.dispatch(this, b, ti, o); + return v; + }; + } - return b; - }, + if (s.cleanup_callback) { + t.onBeforeSetContent.add(function(ed, o) { + o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o); + }); - load : function(o) { - var t = this, e = t.getElement(), h; + t.onPreProcess.add(function(ed, o) { + if (o.set) + t.execCallback('cleanup_callback', 'insert_to_editor_dom', o.node, o); - if (e) { - o = o || {}; - o.load = true; + if (o.get) + t.execCallback('cleanup_callback', 'get_from_editor_dom', o.node, o); + }); - // Double encode existing entities in the value - h = t.setContent(is(e.value) ? e.value : e.innerHTML, o); - o.element = e; + t.onPostProcess.add(function(ed, o) { + if (o.set) + o.content = t.execCallback('cleanup_callback', 'insert_to_editor', o.content, o); + + if (o.get) + o.content = t.execCallback('cleanup_callback', 'get_from_editor', o.content, o); + }); + } + + if (s.save_callback) { + t.onGetContent.add(function(ed, o) { + if (o.save) + o.content = t.execCallback('save_callback', t.id, o.content, t.getBody()); + }); + } + + if (s.handle_event_callback) { + t.onEvent.add(function(ed, e, o) { + if (t.execCallback('handle_event_callback', e, ed, o) === false) + Event.cancel(e); + }); + } + + // Add visual aids when new contents is added + t.onSetContent.add(function() { + t.addVisual(t.getBody()); + }); + + // Remove empty contents + if (s.padd_empty_editor) { + t.onPostProcess.add(function(ed, o) { + o.content = o.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
    [\r\n]*)$/, ''); + }); + } - if (!o.no_events) - t.onLoadContent.dispatch(t, o); + if (isGecko) { + // Fix gecko link bug, when a link is placed at the end of block elements there is + // no way to move the caret behind the link. This fix adds a bogus br element after the link + function fixLinks(ed, o) { + each(ed.dom.select('a'), function(n) { + var pn = n.parentNode; - o.element = e = null; + if (ed.dom.isBlock(pn) && pn.lastChild === n) + ed.dom.add(pn, 'br', {'data-mce-bogus' : 1}); + }); + }; - return h; + t.onExecCommand.add(function(ed, cmd) { + if (cmd === 'CreateLink') + fixLinks(ed); + }); + + t.onSetContent.add(t.selection.onSetContent.add(fixLinks)); } - }, - save : function(o) { - var t = this, e = t.getElement(), h, f; + t.load({initial : true, format : 'html'}); + t.startContent = t.getContent({format : 'raw'}); + t.undoManager.add(); + t.initialized = true; - if (!e || !t.initialized) - return; + t.onInit.dispatch(t); + t.execCallback('setupcontent_callback', t.id, t.getBody(), t.getDoc()); + t.execCallback('init_instance_callback', t); + t.focus(true); + t.nodeChanged({initial : 1}); - o = o || {}; - o.save = true; + // Load specified content CSS last + each(t.contentCSS, function(u) { + t.dom.loadCSS(u); + }); - // Add undo level will trigger onchange event - if (!o.no_events) { - t.undoManager.typing = 0; - t.undoManager.add(); - } + // Handle auto focus + if (s.auto_focus) { + setTimeout(function () { + var ed = tinymce.get(s.auto_focus); - o.element = e; - h = o.content = t.getContent(o); + ed.selection.select(ed.getBody(), 1); + ed.selection.collapse(1); + ed.getBody().focus(); + ed.getWin().focus(); + }, 100); + } - if (!o.no_events) - t.onSaveContent.dispatch(t, o); + e = null; + }, - h = o.content; - if (!/TEXTAREA|INPUT/i.test(e.nodeName)) { - e.innerHTML = h; + focus : function(sf) { + var oed, t = this, selection = t.selection, ce = t.settings.content_editable, ieRng, controlElm, doc = t.getDoc(); - // Update hidden form element - if (f = DOM.getParent(t.id, 'form')) { - each(f.elements, function(e) { - if (e.name == t.id) { - e.value = h; - return false; - } - }); + if (!sf) { + // Get selected control element + ieRng = selection.getRng(); + if (ieRng.item) { + controlElm = ieRng.item(0); } - } else - e.value = h; - o.element = e = null; - - return h; - }, + t._refreshContentEditable(); - setContent : function(h, o) { - var t = this; + // Is not content editable + if (!ce) + t.getWin().focus(); - o = o || {}; - o.format = o.format || 'html'; - o.set = true; - o.content = h; + // Focus the body as well since it's contentEditable + if (tinymce.isGecko) { + t.getBody().focus(); + } - if (!o.no_events) - t.onBeforeSetContent.dispatch(t, o); + // Restore selected control element + // This is needed when for example an image is selected within a + // layer a call to focus will then remove the control selection + if (controlElm && controlElm.ownerDocument == doc) { + ieRng = doc.body.createControlRange(); + ieRng.addElement(controlElm); + ieRng.select(); + } - // Padd empty content in Gecko and Safari. Commands will otherwise fail on the content - // It will also be impossible to place the caret in the editor unless there is a BR element present - if (!tinymce.isIE && (h.length === 0 || /^\s+$/.test(h))) { - o.content = t.dom.setHTML(t.getBody(), '
    '); - o.format = 'raw'; } - o.content = t.dom.setHTML(t.getBody(), tinymce.trim(o.content)); + if (tinymce.activeEditor != t) { + if ((oed = tinymce.activeEditor) != null) + oed.onDeactivate.dispatch(oed, t); - if (o.format != 'raw' && t.settings.cleanup) { - o.getInner = true; - o.content = t.dom.setHTML(t.getBody(), t.serializer.serialize(t.getBody(), o)); + t.onActivate.dispatch(t, oed); } - if (!o.no_events) - t.onSetContent.dispatch(t, o); - - return o.content; + tinymce._setActive(t); }, - getContent : function(o) { - var t = this, h; + execCallback : function(n) { + var t = this, f = t.settings[n], s; - o = o || {}; - o.format = o.format || 'html'; - o.get = true; + if (!f) + return; - if (!o.no_events) - t.onBeforeGetContent.dispatch(t, o); + // Look through lookup + if (t.callbackLookup && (s = t.callbackLookup[n])) { + f = s.func; + s = s.scope; + } - if (o.format != 'raw' && t.settings.cleanup) { - o.getInner = true; - h = t.serializer.serialize(t.getBody(), o); - } else - h = t.getBody().innerHTML; + if (is(f, 'string')) { + s = f.replace(/\.\w+$/, ''); + s = s ? tinymce.resolve(s) : 0; + f = tinymce.resolve(f); + t.callbackLookup = t.callbackLookup || {}; + t.callbackLookup[n] = {func : f, scope : s}; + } - h = h.replace(/^\s*|\s*$/g, ''); - o.content = h; + return f.apply(s || t, Array.prototype.slice.call(arguments, 1)); + }, - if (!o.no_events) - t.onGetContent.dispatch(t, o); + translate : function(s) { + var c = this.settings.language || 'en', i18n = tinymce.i18n; - return o.content; - }, + if (!s) + return ''; - isDirty : function() { - var t = this; + return i18n[c + '.' + s] || s.replace(/{\#([^}]+)\}/g, function(a, b) { + return i18n[c + '.' + b] || '{#' + b + '}'; + }); + }, - return tinymce.trim(t.startContent) != tinymce.trim(t.getContent({format : 'raw', no_events : 1})) && !t.isNotDirty; + getLang : function(n, dv) { + return tinymce.i18n[(this.settings.language || 'en') + '.' + n] || (is(dv) ? dv : '{#' + n + '}'); }, - getContainer : function() { - var t = this; + getParam : function(n, dv, ty) { + var tr = tinymce.trim, v = is(this.settings[n]) ? this.settings[n] : dv, o; - if (!t.container) - t.container = DOM.get(t.editorContainer || t.id + '_parent'); + if (ty === 'hash') { + o = {}; - return t.container; - }, + if (is(v, 'string')) { + each(v.indexOf('=') > 0 ? v.split(/[;,](?![^=;,]*(?:[;,]|$))/) : v.split(','), function(v) { + v = v.split('='); - getContentAreaContainer : function() { - return this.contentAreaContainer; - }, + if (v.length > 1) + o[tr(v[0])] = tr(v[1]); + else + o[tr(v[0])] = tr(v); + }); + } else + o = v; - getElement : function() { - return DOM.get(this.settings.content_element || this.id); + return o; + } + + return v; }, - getWin : function() { - var t = this, e; + nodeChanged : function(o) { + var t = this, s = t.selection, n = s.getStart() || t.getBody(); - if (!t.contentWindow) { - e = DOM.get(t.id + "_ifr"); + // Fix for bug #1896577 it seems that this can not be fired while the editor is loading + if (t.initialized) { + o = o || {}; + n = isIE && n.ownerDocument != t.getDoc() ? t.getBody() : n; // Fix for IE initial state - if (e) - t.contentWindow = e.contentWindow; - } + // Get parents and add them to object + o.parents = []; + t.dom.getParent(n, function(node) { + if (node.nodeName == 'BODY') + return true; - return t.contentWindow; + o.parents.push(node); + }); + + t.onNodeChange.dispatch( + t, + o ? o.controlManager || t.controlManager : t.controlManager, + n, + s.isCollapsed(), + o + ); + } }, - getDoc : function() { - var t = this, w; + addButton : function(n, s) { + var t = this; - if (!t.contentDocument) { - w = t.getWin(); + t.buttons = t.buttons || {}; + t.buttons[n] = s; + }, - if (w) - t.contentDocument = w.document; - } + addCommand : function(name, callback, scope) { + this.execCommands[name] = {func : callback, scope : scope || this}; + }, - return t.contentDocument; + addQueryStateHandler : function(name, callback, scope) { + this.queryStateCommands[name] = {func : callback, scope : scope || this}; }, - getBody : function() { - return this.bodyElement || this.getDoc().body; + addQueryValueHandler : function(name, callback, scope) { + this.queryValueCommands[name] = {func : callback, scope : scope || this}; }, - convertURL : function(u, n, e) { - var t = this, s = t.settings; + addShortcut : function(pa, desc, cmd_func, sc) { + var t = this, c; - // Use callback instead - if (s.urlconverter_callback) - return t.execCallback('urlconverter_callback', u, e, true, n); + if (!t.settings.custom_shortcuts) + return false; - // Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs - if (!s.convert_urls || (e && e.nodeName == 'LINK') || u.indexOf('file:') === 0) - return u; + t.shortcuts = t.shortcuts || {}; - // Convert to relative - if (s.relative_urls) - return t.documentBaseURI.toRelative(u); + if (is(cmd_func, 'string')) { + c = cmd_func; - // Convert to absolute - u = t.documentBaseURI.toAbsolute(u, s.remove_script_host); + cmd_func = function() { + t.execCommand(c, false, null); + }; + } - return u; - }, + if (is(cmd_func, 'object')) { + c = cmd_func; - addVisual : function(e) { - var t = this, s = t.settings; + cmd_func = function() { + t.execCommand(c[0], c[1], c[2]); + }; + } - e = e || t.getBody(); + each(explode(pa), function(pa) { + var o = { + func : cmd_func, + scope : sc || this, + desc : desc, + alt : false, + ctrl : false, + shift : false + }; - if (!is(t.hasVisual)) - t.hasVisual = s.visual; + each(explode(pa, '+'), function(v) { + switch (v) { + case 'alt': + case 'ctrl': + case 'shift': + o[v] = true; + break; + + default: + o.charCode = v.charCodeAt(0); + o.keyCode = v.toUpperCase().charCodeAt(0); + } + }); + + t.shortcuts[(o.ctrl ? 'ctrl' : '') + ',' + (o.alt ? 'alt' : '') + ',' + (o.shift ? 'shift' : '') + ',' + o.keyCode] = o; + }); - each(t.dom.select('table,a', e), function(e) { - var v; + return true; + }, - switch (e.nodeName) { - case 'TABLE': - v = t.dom.getAttrib(e, 'border'); + execCommand : function(cmd, ui, val, a) { + var t = this, s = 0, o, st; - if (!v || v == '0') { - if (t.hasVisual) - t.dom.addClass(e, s.visual_table_class); - else - t.dom.removeClass(e, s.visual_table_class); - } + if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus)) + t.focus(); - return; + a = extend({}, a); + t.onBeforeExecCommand.dispatch(t, cmd, ui, val, a); + if (a.terminate) + return false; - case 'A': - v = t.dom.getAttrib(e, 'name'); + // Command callback + if (t.execCallback('execcommand_callback', t.id, t.selection.getNode(), cmd, ui, val)) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + return true; + } - if (v) { - if (t.hasVisual) - t.dom.addClass(e, 'mceItemAnchor'); - else - t.dom.removeClass(e, 'mceItemAnchor'); - } + // Registred commands + if (o = t.execCommands[cmd]) { + st = o.func.call(o.scope, ui, val); - return; + // Fall through on true + if (st !== true) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + return st; } - }); - - t.onVisualAid.dispatch(t, e, t.hasVisual); - }, + } - remove : function() { - var t = this, e = t.getContainer(); + // Plugin commands + each(t.plugins, function(p) { + if (p.execCommand && p.execCommand(cmd, ui, val)) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + s = 1; + return false; + } + }); - t.removed = 1; // Cancels post remove event execution - t.hide(); + if (s) + return true; - t.execCallback('remove_instance_callback', t); - t.onRemove.dispatch(t); + // Theme commands + if (t.theme && t.theme.execCommand && t.theme.execCommand(cmd, ui, val)) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + return true; + } - // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command - t.onExecCommand.listeners = []; + // Editor commands + if (t.editorCommands.execCommand(cmd, ui, val)) { + t.onExecCommand.dispatch(t, cmd, ui, val, a); + return true; + } - tinymce.remove(t); - DOM.remove(e); + // Browser commands + t.getDoc().execCommand(cmd, ui, val); + t.onExecCommand.dispatch(t, cmd, ui, val, a); }, - destroy : function(s) { - var t = this; + queryCommandState : function(cmd) { + var t = this, o, s; - // One time is enough - if (t.destroyed) + // Is hidden then return undefined + if (t._isHidden()) return; - if (!s) { - tinymce.removeUnload(t.destroy); - tinyMCE.onBeforeUnload.remove(t._beforeUnload); + // Registred commands + if (o = t.queryStateCommands[cmd]) { + s = o.func.call(o.scope); - // Manual destroy - if (t.theme && t.theme.destroy) - t.theme.destroy(); + // Fall though on true + if (s !== true) + return s; + } - // Destroy controls, selection and dom - t.controlManager.destroy(); - t.selection.destroy(); - t.dom.destroy(); + // Registred commands + o = t.editorCommands.queryCommandState(cmd); + if (o !== -1) + return o; - // Remove all events + // Browser commands + try { + return this.getDoc().queryCommandState(cmd); + } catch (ex) { + // Fails sometimes see bug: 1896577 + } + }, - // Don't clear the window or document if content editable - // is enabled since other instances might still be present - if (!t.settings.content_editable) { - Event.clear(t.getWin()); - Event.clear(t.getDoc()); - } + queryCommandValue : function(c) { + var t = this, o, s; - Event.clear(t.getBody()); - Event.clear(t.formElement); - } + // Is hidden then return undefined + if (t._isHidden()) + return; - if (t.formElement) { - t.formElement.submit = t.formElement._mceOldSubmit; - t.formElement._mceOldSubmit = null; + // Registred commands + if (o = t.queryValueCommands[c]) { + s = o.func.call(o.scope); + + // Fall though on true + if (s !== true) + return s; } - t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null; + // Registred commands + o = t.editorCommands.queryCommandValue(c); + if (is(o)) + return o; - if (t.selection) - t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null; + // Browser commands + try { + return this.getDoc().queryCommandValue(c); + } catch (ex) { + // Fails sometimes see bug: 1896577 + } + }, - t.destroyed = 1; + show : function() { + var t = this; + + DOM.show(t.getContainer()); + DOM.hide(t.id); + t.load(); }, - // Internal functions + hide : function() { + var t = this, d = t.getDoc(); - _addEvents : function() { - // 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset - var t = this, i, s = t.settings, lo = { - mouseup : 'onMouseUp', - mousedown : 'onMouseDown', - click : 'onClick', - keyup : 'onKeyUp', - keydown : 'onKeyDown', - keypress : 'onKeyPress', - submit : 'onSubmit', - reset : 'onReset', - contextmenu : 'onContextMenu', - dblclick : 'onDblClick', - paste : 'onPaste' // Doesn't work in all browsers yet - }; + // Fixed bug where IE has a blinking cursor left from the editor + if (isIE && d) + d.execCommand('SelectAll'); - function eventHandler(e, o) { - var ty = e.type; + // We must save before we hide so Safari doesn't crash + t.save(); + DOM.hide(t.getContainer()); + DOM.setStyle(t.id, 'display', t.orgDisplay); + }, - // Don't fire events when it's removed - if (t.removed) - return; + isHidden : function() { + return !DOM.isHidden(this.id); + }, - // Generic event handler - if (t.onEvent.dispatch(t, e, o) !== false) { - // Specific event handler - t[lo[e.fakeType || e.type]].dispatch(t, e, o); - } - }; + setProgressState : function(b, ti, o) { + this.onSetProgressState.dispatch(this, b, ti, o); - // Add DOM events - each(lo, function(v, k) { - switch (k) { - case 'contextmenu': - if (tinymce.isOpera) { - // Fake contextmenu on Opera - t.dom.bind(t.getBody(), 'mousedown', function(e) { - if (e.ctrlKey) { - e.fakeType = 'contextmenu'; - eventHandler(e); - } - }); - } else - t.dom.bind(t.getBody(), k, eventHandler); - break; + return b; + }, - case 'paste': - t.dom.bind(t.getBody(), k, function(e) { - eventHandler(e); - }); - break; + load : function(o) { + var t = this, e = t.getElement(), h; - case 'submit': - case 'reset': - t.dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler); - break; + if (e) { + o = o || {}; + o.load = true; - default: - t.dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler); - } - }); + // Double encode existing entities in the value + h = t.setContent(is(e.value) ? e.value : e.innerHTML, o); + o.element = e; - t.dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) { - t.focus(true); - }); + if (!o.no_events) + t.onLoadContent.dispatch(t, o); + o.element = e = null; - // Fixes bug where a specified document_base_uri could result in broken images - // This will also fix drag drop of images in Gecko - if (tinymce.isGecko) { - // Convert all images to absolute URLs -/* t.onSetContent.add(function(ed, o) { - each(ed.dom.select('img'), function(e) { - var v; + return h; + } + }, - if (v = e.getAttribute('_mce_src')) - e.src = t.documentBaseURI.toAbsolute(v); - }) - });*/ + save : function(o) { + var t = this, e = t.getElement(), h, f; - t.dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) { - var v; + if (!e || !t.initialized) + return; - e = e.target; + o = o || {}; + o.save = true; - if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('_mce_src'))) - e.src = t.documentBaseURI.toAbsolute(v); - }); + // Add undo level will trigger onchange event + if (!o.no_events) { + t.undoManager.typing = false; + t.undoManager.add(); } - // Set various midas options in Gecko - if (isGecko) { - function setOpts() { - var t = this, d = t.getDoc(), s = t.settings; + o.element = e; + h = o.content = t.getContent(o); + + if (!o.no_events) + t.onSaveContent.dispatch(t, o); + + h = o.content; - if (isGecko && !s.readonly) { - if (t._isHidden()) { - try { - if (!s.content_editable) - d.designMode = 'On'; - } catch (ex) { - // Fails if it's hidden - } - } + if (!/TEXTAREA|INPUT/i.test(e.nodeName)) { + e.innerHTML = h; - try { - // Try new Gecko method - d.execCommand("styleWithCSS", 0, false); - } catch (ex) { - // Use old method - if (!t._isHidden()) - try {d.execCommand("useCSS", 0, true);} catch (ex) {} + // Update hidden form element + if (f = DOM.getParent(t.id, 'form')) { + each(f.elements, function(e) { + if (e.name == t.id) { + e.value = h; + return false; } + }); + } + } else + e.value = h; - if (!s.table_inline_editing) - try {d.execCommand('enableInlineTableEditing', false, false);} catch (ex) {} + o.element = e = null; - if (!s.object_resizing) - try {d.execCommand('enableObjectResizing', false, false);} catch (ex) {} - } - }; + return h; + }, - t.onBeforeExecCommand.add(setOpts); - t.onMouseDown.add(setOpts); - } + setContent : function(content, args) { + var self = this, rootNode, body = self.getBody(), forcedRootBlockName; - // Workaround for bug, http://bugs.webkit.org/show_bug.cgi?id=12250 - // WebKit can't even do simple things like selecting an image - // This also fixes so it's possible to select mceItemAnchors - if (tinymce.isWebKit) { - t.onClick.add(function(ed, e) { - e = e.target; + // Setup args object + args = args || {}; + args.format = args.format || 'html'; + args.set = true; + args.content = content; - // Needs tobe the setBaseAndExtend or it will fail to select floated images - if (e.nodeName == 'IMG' || (e.nodeName == 'A' && t.dom.hasClass(e, 'mceItemAnchor'))) - t.selection.getSel().setBaseAndExtent(e, 0, e, 1); - }); - } + // Do preprocessing + if (!args.no_events) + self.onBeforeSetContent.dispatch(self, args); - // Add node change handlers - t.onMouseUp.add(t.nodeChanged); - //t.onClick.add(t.nodeChanged); - t.onKeyUp.add(function(ed, e) { - var c = e.keyCode; + content = args.content; - if ((c >= 33 && c <= 36) || (c >= 37 && c <= 40) || c == 13 || c == 45 || c == 46 || c == 8 || (tinymce.isMac && (c == 91 || c == 93)) || e.ctrlKey) - t.nodeChanged(); - }); + // Padd empty content in Gecko and Safari. Commands will otherwise fail on the content + // It will also be impossible to place the caret in the editor unless there is a BR element present + if (!tinymce.isIE && (content.length === 0 || /^\s+$/.test(content))) { + forcedRootBlockName = self.settings.forced_root_block; + if (forcedRootBlockName) + content = '<' + forcedRootBlockName + '>
    '; + else + content = '
    '; - // Add reset handler - t.onReset.add(function() { - t.setContent(t.startContent, {format : 'raw'}); - }); + body.innerHTML = content; + self.selection.select(body, true); + self.selection.collapse(true); + return; + } - // Add shortcuts - if (s.custom_shortcuts) { - if (s.custom_undo_redo_keyboard_shortcuts) { - t.addShortcut('ctrl+z', t.getLang('undo_desc'), 'Undo'); - t.addShortcut('ctrl+y', t.getLang('redo_desc'), 'Redo'); - } + // Parse and serialize the html + if (args.format !== 'raw') { + content = new tinymce.html.Serializer({}, self.schema).serialize( + self.parser.parse(content) + ); + } - // Add default shortcuts for gecko - t.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold'); - t.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic'); - t.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline'); + // Set the new cleaned contents to the editor + args.content = tinymce.trim(content); + self.dom.setHTML(body, args.content); - // BlockFormat shortcuts keys - for (i=1; i<=6; i++) - t.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]); + // Do post processing + if (!args.no_events) + self.onSetContent.dispatch(self, args); - t.addShortcut('ctrl+7', '', ['FormatBlock', false, '

    ']); - t.addShortcut('ctrl+8', '', ['FormatBlock', false, '

    ']); - t.addShortcut('ctrl+9', '', ['FormatBlock', false, '
    ']); + self.selection.normalize(); - function find(e) { - var v = null; + return args.content; + }, - if (!e.altKey && !e.ctrlKey && !e.metaKey) - return v; + getContent : function(args) { + var self = this, content; - each(t.shortcuts, function(o) { - if (tinymce.isMac && o.ctrl != e.metaKey) - return; - else if (!tinymce.isMac && o.ctrl != e.ctrlKey) - return; + // Setup args object + args = args || {}; + args.format = args.format || 'html'; + args.get = true; - if (o.alt != e.altKey) - return; + // Do preprocessing + if (!args.no_events) + self.onBeforeGetContent.dispatch(self, args); - if (o.shift != e.shiftKey) - return; + // Get raw contents or by default the cleaned contents + if (args.format == 'raw') + content = self.getBody().innerHTML; + else + content = self.serializer.serialize(self.getBody(), args); - if (e.keyCode == o.keyCode || (e.charCode && e.charCode == o.charCode)) { - v = o; - return false; - } - }); + args.content = tinymce.trim(content); - return v; - }; + // Do post processing + if (!args.no_events) + self.onGetContent.dispatch(self, args); - t.onKeyUp.add(function(ed, e) { - var o = find(e); + return args.content; + }, - if (o) - return Event.cancel(e); - }); + isDirty : function() { + var self = this; - t.onKeyPress.add(function(ed, e) { - var o = find(e); + return tinymce.trim(self.startContent) != tinymce.trim(self.getContent({format : 'raw', no_events : 1})) && !self.isNotDirty; + }, - if (o) - return Event.cancel(e); - }); + getContainer : function() { + var t = this; - t.onKeyDown.add(function(ed, e) { - var o = find(e); + if (!t.container) + t.container = DOM.get(t.editorContainer || t.id + '_parent'); - if (o) { - o.func.call(o.scope); - return Event.cancel(e); - } - }); - } + return t.container; + }, - if (tinymce.isIE) { - // Fix so resize will only update the width and height attributes not the styles of an image - // It will also block mceItemNoResize items - t.dom.bind(t.getDoc(), 'controlselect', function(e) { - var re = t.resizeInfo, cb; + getContentAreaContainer : function() { + return this.contentAreaContainer; + }, - e = e.target; + getElement : function() { + return DOM.get(this.settings.content_element || this.id); + }, - // Don't do this action for non image elements - if (e.nodeName !== 'IMG') - return; + getWin : function() { + var t = this, e; - if (re) - t.dom.unbind(re.node, re.ev, re.cb); + if (!t.contentWindow) { + e = DOM.get(t.id + "_ifr"); - if (!t.dom.hasClass(e, 'mceItemNoResize')) { - ev = 'resizeend'; - cb = t.dom.bind(e, ev, function(e) { - var v; + if (e) + t.contentWindow = e.contentWindow; + } - e = e.target; + return t.contentWindow; + }, - if (v = t.dom.getStyle(e, 'width')) { - t.dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, '')); - t.dom.setStyle(e, 'width', ''); - } + getDoc : function() { + var t = this, w; - if (v = t.dom.getStyle(e, 'height')) { - t.dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, '')); - t.dom.setStyle(e, 'height', ''); - } - }); - } else { - ev = 'resizestart'; - cb = t.dom.bind(e, 'resizestart', Event.cancel, Event); - } + if (!t.contentDocument) { + w = t.getWin(); - re = t.resizeInfo = { - node : e, - ev : ev, - cb : cb - }; - }); + if (w) + t.contentDocument = w.document; + } - t.onKeyDown.add(function(ed, e) { - switch (e.keyCode) { - case 8: - // Fix IE control + backspace browser bug - if (t.selection.getRng().item) { - ed.dom.remove(t.selection.getRng().item(0)); - return Event.cancel(e); - } - } - }); + return t.contentDocument; + }, - /*if (t.dom.boxModel) { - t.getBody().style.height = '100%'; + getBody : function() { + return this.bodyElement || this.getDoc().body; + }, - Event.add(t.getWin(), 'resize', function(e) { - var docElm = t.getDoc().documentElement; + convertURL : function(u, n, e) { + var t = this, s = t.settings; - docElm.style.height = (docElm.offsetHeight - 10) + 'px'; - }); - }*/ - } + // Use callback instead + if (s.urlconverter_callback) + return t.execCallback('urlconverter_callback', u, e, true, n); - if (tinymce.isOpera) { - t.onClick.add(function(ed, e) { - Event.prevent(e); - }); - } + // Don't convert link href since thats the CSS files that gets loaded into the editor also skip local file URLs + if (!s.convert_urls || (e && e.nodeName == 'LINK') || u.indexOf('file:') === 0) + return u; - // Add custom undo/redo handlers - if (s.custom_undo_redo) { - function addUndo() { - t.undoManager.typing = 0; - t.undoManager.add(); - }; + // Convert to relative + if (s.relative_urls) + return t.documentBaseURI.toRelative(u); - t.dom.bind(t.getDoc(), 'focusout', function(e) { - if (!t.removed && t.undoManager.typing) - addUndo(); - }); + // Convert to absolute + u = t.documentBaseURI.toAbsolute(u, s.remove_script_host); - t.onKeyUp.add(function(ed, e) { - if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45 || e.ctrlKey) - addUndo(); - }); + return u; + }, - t.onKeyDown.add(function(ed, e) { - var rng, tmpRng, parent, offset; - - // IE has a really odd bug where the DOM might include an node that doesn't have - // a proper structure. If you try to access nodeValue it would throw an illegal value exception. - // This seems to only happen when you delete contents and it seems to be avoidable if you refresh the element - // after you delete contents from it. See: #3008923 - if (isIE && e.keyCode == 46) { - rng = t.selection.getRng(); - - if (rng.parentElement) { - parent = rng.parentElement(); - - // Get the current caret position within the element - tmpRng = rng.duplicate(); - tmpRng.moveToElementText(parent); - tmpRng.setEndPoint('EndToEnd', rng); - offset = tmpRng.text.length; - - // Select next word when ctrl key is used in combo with delete - if (e.ctrlKey) { - rng.moveEnd('word', 1); - rng.select(); - } + addVisual : function(e) { + var t = this, s = t.settings; - // Delete contents - t.selection.getSel().clear(); + e = e || t.getBody(); - // Check if we are within the same parent - if (rng.parentElement() == parent) { - try { - // Update the HTML and hopefully it will remove the artifacts - parent.innerHTML = parent.innerHTML; - } catch (ex) { - // And since it's IE it can sometimes produce an unknown runtime error - } + if (!is(t.hasVisual)) + t.hasVisual = s.visual; - // Restore the caret position - tmpRng.moveToElementText(parent); - tmpRng.collapse(); - tmpRng.move('character', offset); - tmpRng.select(); - } + each(t.dom.select('table,a', e), function(e) { + var v; - // Block the default delete behavior since it might be broken - e.preventDefault(); - return; - } - } + switch (e.nodeName) { + case 'TABLE': + v = t.dom.getAttrib(e, 'border'); - // Is caracter positon keys - if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45) { - if (t.undoManager.typing) - addUndo(); + if (!v || v == '0') { + if (t.hasVisual) + t.dom.addClass(e, s.visual_table_class); + else + t.dom.removeClass(e, s.visual_table_class); + } return; - } - - if (!t.undoManager.typing) { - t.undoManager.add(); - t.undoManager.typing = 1; - } - }); - t.onMouseDown.add(function() { - if (t.undoManager.typing) - addUndo(); - }); - } - }, + case 'A': + v = t.dom.getAttrib(e, 'name'); - _isHidden : function() { - var s; + if (v) { + if (t.hasVisual) + t.dom.addClass(e, 'mceItemAnchor'); + else + t.dom.removeClass(e, 'mceItemAnchor'); + } - if (!isGecko) - return 0; + return; + } + }); - // Weird, wheres that cursor selection? - s = this.selection.getSel(); - return (!s || !s.rangeCount || s.rangeCount == 0); + t.onVisualAid.dispatch(t, e, t.hasVisual); }, - // Fix for bug #1867292 - _fixNesting : function(s) { - var d = [], i; - - s = s.replace(/<(\/)?([^\s>]+)[^>]*?>/g, function(a, b, c) { - var e; + remove : function() { + var t = this, e = t.getContainer(); - // Handle end element - if (b === '/') { - if (!d.length) - return ''; + if (!t.removed) { + t.removed = 1; // Cancels post remove event execution + t.hide(); - if (c !== d[d.length - 1].tag) { - for (i=d.length - 1; i>=0; i--) { - if (d[i].tag === c) { - d[i].close = 1; - break; - } - } + // Remove all events - return ''; - } else { - d.pop(); + // Don't clear the window or document if content editable + // is enabled since other instances might still be present + if (!t.settings.content_editable) { + Event.clear(t.getWin()); + Event.clear(t.getDoc()); + } - if (d.length && d[d.length - 1].close) { - a = a + ''; - d.pop(); - } - } - } else { - // Ignore these - if (/^(br|hr|input|meta|img|link|param)$/i.test(c)) - return a; + Event.clear(t.getBody()); + Event.clear(t.formElement); + Event.unbind(e); - // Ignore closed ones - if (/\/>$/.test(a)) - return a; + t.execCallback('remove_instance_callback', t); + t.onRemove.dispatch(t); - d.push({tag : c}); // Push start element - } + // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command + t.onExecCommand.listeners = []; - return a; - }); + tinymce.remove(t); + DOM.remove(e); + } + }, - // End all open tags - for (i=d.length - 1; i>=0; i--) - s += ''; + destroy : function(s) { + var t = this; - return s; - } - }); -})(tinymce); + // One time is enough + if (t.destroyed) + return; -(function(tinymce) { - // Added for compression purposes - var each = tinymce.each, undefined, TRUE = true, FALSE = false; + // We must unbind on Gecko since it would otherwise produce the pesky "attempt to run compile-and-go script on a cleared scope" message + if (isGecko) { + Event.unbind(t.getDoc()); + Event.unbind(t.getWin()); + Event.unbind(t.getBody()); + } - tinymce.EditorCommands = function(editor) { - var dom = editor.dom, - selection = editor.selection, - commands = {state: {}, exec : {}, value : {}}, - settings = editor.settings, - bookmark; + if (!s) { + tinymce.removeUnload(t.destroy); + tinyMCE.onBeforeUnload.remove(t._beforeUnload); - function execCommand(command, ui, value) { - var func; + // Manual destroy + if (t.theme && t.theme.destroy) + t.theme.destroy(); - command = command.toLowerCase(); - if (func = commands.exec[command]) { - func(command, ui, value); - return TRUE; + // Destroy controls, selection and dom + t.controlManager.destroy(); + t.selection.destroy(); + t.dom.destroy(); } - return FALSE; - }; + if (t.formElement) { + t.formElement.submit = t.formElement._mceOldSubmit; + t.formElement._mceOldSubmit = null; + } - function queryCommandState(command) { - var func; + t.contentAreaContainer = t.formElement = t.container = t.settings.content_element = t.bodyElement = t.contentDocument = t.contentWindow = null; - command = command.toLowerCase(); - if (func = commands.state[command]) - return func(command); + if (t.selection) + t.selection = t.selection.win = t.selection.dom = t.selection.dom.doc = null; - return -1; - }; + t.destroyed = 1; + }, - function queryCommandValue(command) { - var func; + // Internal functions - command = command.toLowerCase(); - if (func = commands.value[command]) - return func(command); + _addEvents : function() { + // 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset + var t = this, i, s = t.settings, dom = t.dom, lo = { + mouseup : 'onMouseUp', + mousedown : 'onMouseDown', + click : 'onClick', + keyup : 'onKeyUp', + keydown : 'onKeyDown', + keypress : 'onKeyPress', + submit : 'onSubmit', + reset : 'onReset', + contextmenu : 'onContextMenu', + dblclick : 'onDblClick', + paste : 'onPaste' // Doesn't work in all browsers yet + }; - return FALSE; - }; + function eventHandler(e, o) { + var ty = e.type; - function addCommands(command_list, type) { - type = type || 'exec'; + // Don't fire events when it's removed + if (t.removed) + return; - each(command_list, function(callback, command) { - each(command.toLowerCase().split(','), function(command) { - commands[type][command] = callback; - }); - }); - }; + // Generic event handler + if (t.onEvent.dispatch(t, e, o) !== false) { + // Specific event handler + t[lo[e.fakeType || e.type]].dispatch(t, e, o); + } + }; - // Expose public methods - tinymce.extend(this, { - execCommand : execCommand, - queryCommandState : queryCommandState, - queryCommandValue : queryCommandValue, - addCommands : addCommands - }); + // Add DOM events + each(lo, function(v, k) { + switch (k) { + case 'contextmenu': + dom.bind(t.getDoc(), k, eventHandler); + break; - // Private methods + case 'paste': + dom.bind(t.getBody(), k, function(e) { + eventHandler(e); + }); + break; - function execNativeCommand(command, ui, value) { - if (ui === undefined) - ui = FALSE; + case 'submit': + case 'reset': + dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler); + break; - if (value === undefined) - value = null; + default: + dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler); + } + }); - return editor.getDoc().execCommand(command, ui, value); - }; + dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) { + t.focus(true); + }); - function isFormatMatch(name) { - return editor.formatter.match(name); - }; - function toggleFormat(name, value) { - editor.formatter.toggle(name, value ? {value : value} : undefined); - }; + // Fixes bug where a specified document_base_uri could result in broken images + // This will also fix drag drop of images in Gecko + if (tinymce.isGecko) { + dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) { + var v; - function storeSelection(type) { - bookmark = selection.getBookmark(type); - }; + e = e.target; - function restoreSelection() { - selection.moveToBookmark(bookmark); - }; + if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('data-mce-src'))) + e.src = t.documentBaseURI.toAbsolute(v); + }); + } - // Add execCommand overrides - addCommands({ - // Ignore these, added for compatibility - 'mceResetDesignMode,mceBeginUndoLevel' : function() {}, + // Set various midas options in Gecko + if (isGecko) { + function setOpts() { + var t = this, d = t.getDoc(), s = t.settings; - // Add undo manager logic - 'mceEndUndoLevel,mceAddUndoLevel' : function() { - editor.undoManager.add(); - }, + if (isGecko && !s.readonly) { + t._refreshContentEditable(); - 'Cut,Copy,Paste' : function(command) { - var doc = editor.getDoc(), failed; + try { + // Try new Gecko method + d.execCommand("styleWithCSS", 0, false); + } catch (ex) { + // Use old method + if (!t._isHidden()) + try {d.execCommand("useCSS", 0, true);} catch (ex) {} + } - // Try executing the native command - try { - execNativeCommand(command); - } catch (ex) { - // Command failed - failed = TRUE; - } + if (!s.table_inline_editing) + try {d.execCommand('enableInlineTableEditing', false, false);} catch (ex) {} - // Present alert message about clipboard access not being available - if (failed || !doc.queryCommandSupported(command)) { - if (tinymce.isGecko) { - editor.windowManager.confirm(editor.getLang('clipboard_msg'), function(state) { - if (state) - open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', '_blank'); - }); - } else - editor.windowManager.alert(editor.getLang('clipboard_no_support')); - } - }, + if (!s.object_resizing) + try {d.execCommand('enableObjectResizing', false, false);} catch (ex) {} + } + }; - // Override unlink command - unlink : function(command) { - if (selection.isCollapsed()) - selection.select(selection.getNode()); + t.onBeforeExecCommand.add(setOpts); + t.onMouseDown.add(setOpts); + } - execNativeCommand(command); - selection.collapse(FALSE); - }, + // Add node change handlers + t.onMouseUp.add(t.nodeChanged); + //t.onClick.add(t.nodeChanged); + t.onKeyUp.add(function(ed, e) { + var c = e.keyCode; - // Override justify commands to use the text formatter engine - 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) { - var align = command.substring(7); + if ((c >= 33 && c <= 36) || (c >= 37 && c <= 40) || c == 13 || c == 45 || c == 46 || c == 8 || (tinymce.isMac && (c == 91 || c == 93)) || e.ctrlKey) + t.nodeChanged(); + }); - // Remove all other alignments first - each('left,center,right,full'.split(','), function(name) { - if (align != name) - editor.formatter.remove('align' + name); - }); - toggleFormat('align' + align); - }, + // Add block quote deletion handler + t.onKeyDown.add(function(ed, e) { + if (e.keyCode != VK.BACKSPACE) + return; - // Override list commands to fix WebKit bug - 'InsertUnorderedList,InsertOrderedList' : function(command) { - var listElm, listParent; + var rng = ed.selection.getRng(); + if (!rng.collapsed) + return; - execNativeCommand(command); + var n = rng.startContainer; + var offset = rng.startOffset; - // WebKit produces lists within block elements so we need to split them - // we will replace the native list creation logic to custom logic later on - // TODO: Remove this when the list creation logic is removed - listElm = dom.getParent(selection.getNode(), 'ol,ul'); - if (listElm) { - listParent = listElm.parentNode; + while (n && n.nodeType && n.nodeType != 1 && n.parentNode) + n = n.parentNode; - // If list is within a text block then split that block - if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) { - storeSelection(); - dom.split(listParent, listElm); - restoreSelection(); - } - } - }, + // Is the cursor at the beginning of a blockquote? + if (n && n.parentNode && n.parentNode.tagName === 'BLOCKQUOTE' && n.parentNode.firstChild == n && offset == 0) { + // Remove the blockquote + ed.formatter.toggle('blockquote', null, n.parentNode); - // Override commands to use the text formatter engine - 'Bold,Italic,Underline,Strikethrough' : function(command) { - toggleFormat(command); - }, + // Move the caret to the beginning of n + rng.setStart(n, 0); + rng.setEnd(n, 0); + ed.selection.setRng(rng); + ed.selection.collapse(false); + } + }); - // Override commands to use the text formatter engine - 'ForeColor,HiliteColor,FontName' : function(command, ui, value) { - toggleFormat(command, value); - }, - FontSize : function(command, ui, value) { - var fontClasses, fontSizes; - // Convert font size 1-7 to styles - if (value >= 1 && value <= 7) { - fontSizes = tinymce.explode(settings.font_size_style_values); - fontClasses = tinymce.explode(settings.font_size_classes); + // Add reset handler + t.onReset.add(function() { + t.setContent(t.startContent, {format : 'raw'}); + }); - if (fontClasses) - value = fontClasses[value - 1] || value; - else - value = fontSizes[value - 1] || value; + // Add shortcuts + if (s.custom_shortcuts) { + if (s.custom_undo_redo_keyboard_shortcuts) { + t.addShortcut('ctrl+z', t.getLang('undo_desc'), 'Undo'); + t.addShortcut('ctrl+y', t.getLang('redo_desc'), 'Redo'); } - toggleFormat(command, value); - }, + // Add default shortcuts for gecko + t.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold'); + t.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic'); + t.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline'); - RemoveFormat : function(command) { - editor.formatter.remove(command); - }, + // BlockFormat shortcuts keys + for (i=1; i<=6; i++) + t.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]); - mceBlockQuote : function(command) { - toggleFormat('blockquote'); - }, + t.addShortcut('ctrl+7', '', ['FormatBlock', false, 'p']); + t.addShortcut('ctrl+8', '', ['FormatBlock', false, 'div']); + t.addShortcut('ctrl+9', '', ['FormatBlock', false, 'address']); - FormatBlock : function(command, ui, value) { - return toggleFormat(value); - }, + function find(e) { + var v = null; - mceCleanup : function() { - var bookmark = selection.getBookmark(); + if (!e.altKey && !e.ctrlKey && !e.metaKey) + return v; - editor.setContent(editor.getContent({cleanup : TRUE}), {cleanup : TRUE}); + each(t.shortcuts, function(o) { + if (tinymce.isMac && o.ctrl != e.metaKey) + return; + else if (!tinymce.isMac && o.ctrl != e.ctrlKey) + return; - selection.moveToBookmark(bookmark); - }, + if (o.alt != e.altKey) + return; - mceRemoveNode : function(command, ui, value) { - var node = value || selection.getNode(); + if (o.shift != e.shiftKey) + return; - // Make sure that the body node isn't removed - if (node != editor.getBody()) { - storeSelection(); - editor.dom.remove(node, TRUE); - restoreSelection(); - } - }, + if (e.keyCode == o.keyCode || (e.charCode && e.charCode == o.charCode)) { + v = o; + return false; + } + }); - mceSelectNodeDepth : function(command, ui, value) { - var counter = 0; + return v; + }; - dom.getParent(selection.getNode(), function(node) { - if (node.nodeType == 1 && counter++ == value) { - selection.select(node); - return FALSE; - } - }, editor.getBody()); - }, + t.onKeyUp.add(function(ed, e) { + var o = find(e); - mceSelectNode : function(command, ui, value) { - selection.select(value); - }, + if (o) + return Event.cancel(e); + }); - mceInsertContent : function(command, ui, value) { - selection.setContent(value); - }, + t.onKeyPress.add(function(ed, e) { + var o = find(e); - mceInsertRawHTML : function(command, ui, value) { - selection.setContent('tiny_mce_marker'); - editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, value)); - }, + if (o) + return Event.cancel(e); + }); - mceSetContent : function(command, ui, value) { - editor.setContent(value); - }, + t.onKeyDown.add(function(ed, e) { + var o = find(e); - 'Indent,Outdent' : function(command) { - var intentValue, indentUnit, value; + if (o) { + o.func.call(o.scope); + return Event.cancel(e); + } + }); + } - // Setup indent level - intentValue = settings.indentation; - indentUnit = /[a-z%]+$/i.exec(intentValue); - intentValue = parseInt(intentValue); + if (tinymce.isIE) { + // Fix so resize will only update the width and height attributes not the styles of an image + // It will also block mceItemNoResize items + dom.bind(t.getDoc(), 'controlselect', function(e) { + var re = t.resizeInfo, cb; - if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) { - each(selection.getSelectedBlocks(), function(element) { - if (command == 'outdent') { - value = Math.max(0, parseInt(element.style.paddingLeft || 0) - intentValue); - dom.setStyle(element, 'paddingLeft', value ? value + indentUnit : ''); - } else - dom.setStyle(element, 'paddingLeft', (parseInt(element.style.paddingLeft || 0) + intentValue) + indentUnit); - }); - } else - execNativeCommand(command); - }, + e = e.target; - mceRepaint : function() { - var bookmark; + // Don't do this action for non image elements + if (e.nodeName !== 'IMG') + return; - if (tinymce.isGecko) { - try { - storeSelection(TRUE); + if (re) + dom.unbind(re.node, re.ev, re.cb); - if (selection.getSel()) - selection.getSel().selectAllChildren(editor.getBody()); + if (!dom.hasClass(e, 'mceItemNoResize')) { + ev = 'resizeend'; + cb = dom.bind(e, ev, function(e) { + var v; - selection.collapse(TRUE); - restoreSelection(); - } catch (ex) { - // Ignore + e = e.target; + + if (v = dom.getStyle(e, 'width')) { + dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, '')); + dom.setStyle(e, 'width', ''); + } + + if (v = dom.getStyle(e, 'height')) { + dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, '')); + dom.setStyle(e, 'height', ''); + } + }); + } else { + ev = 'resizestart'; + cb = dom.bind(e, 'resizestart', Event.cancel, Event); } - } - }, - mceToggleFormat : function(command, ui, value) { - editor.formatter.toggle(value); - }, + re = t.resizeInfo = { + node : e, + ev : ev, + cb : cb + }; + }); + } - InsertHorizontalRule : function() { - selection.setContent('
    '); - }, + if (tinymce.isOpera) { + t.onClick.add(function(ed, e) { + Event.prevent(e); + }); + } - mceToggleVisualAid : function() { - editor.hasVisual = !editor.hasVisual; - editor.addVisual(); - }, + // Add custom undo/redo handlers + if (s.custom_undo_redo) { + function addUndo() { + t.undoManager.typing = false; + t.undoManager.add(); + }; - mceReplaceContent : function(command, ui, value) { - selection.setContent(value.replace(/\{\$selection\}/g, selection.getContent({format : 'text'}))); - }, + var focusLostFunc = tinymce.isGecko ? 'blur' : 'focusout'; + dom.bind(t.getDoc(), focusLostFunc, function(e){ + if (!t.removed && t.undoManager.typing) + addUndo(); + }); - mceInsertLink : function(command, ui, value) { - var link = dom.getParent(selection.getNode(), 'a'); + // Add undo level when contents is drag/dropped within the editor + t.dom.bind(t.dom.getRoot(), 'dragend', function(e) { + addUndo(); + }); - if (tinymce.is(value, 'string')) - value = {href : value}; + t.onKeyUp.add(function(ed, e) { + var keyCode = e.keyCode; - if (!link) { - execNativeCommand('CreateLink', FALSE, 'javascript:mctmp(0);'); - each(dom.select('a[href=javascript:mctmp(0);]'), function(link) { - dom.setAttribs(link, value); - }); - } else { - if (value.href) - dom.setAttribs(link, value); - else - editor.dom.remove(link, TRUE); - } - }, - - selectAll : function() { - var root = dom.getRoot(); - var rng = dom.createRng(); - rng.setStart(root, 0); - rng.setEnd(root, root.childNodes.length); - editor.selection.setRng(rng); - } - }); + if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 13 || keyCode == 45 || e.ctrlKey) + addUndo(); + }); - // Add queryCommandState overrides - addCommands({ - // Override justify commands - 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) { - return isFormatMatch('align' + command.substring(7)); - }, + t.onKeyDown.add(function(ed, e) { + var keyCode = e.keyCode, sel; - 'Bold,Italic,Underline,Strikethrough' : function(command) { - return isFormatMatch(command); - }, + if (keyCode == 8) { + sel = t.getDoc().selection; - mceBlockQuote : function() { - return isFormatMatch('blockquote'); - }, + // Fix IE control + backspace browser bug + if (sel && sel.createRange && sel.createRange().item) { + t.undoManager.beforeChange(); + ed.dom.remove(sel.createRange().item(0)); + addUndo(); - Outdent : function() { - var node; + return Event.cancel(e); + } + } - if (settings.inline_styles) { - if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0) - return TRUE; + // Is caracter positon keys left,right,up,down,home,end,pgdown,pgup,enter + if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 13 || keyCode == 45) { + // Add position before enter key is pressed, used by IE since it still uses the default browser behavior + // Todo: Remove this once we normalize enter behavior on IE + if (tinymce.isIE && keyCode == 13) + t.undoManager.beforeChange(); - if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0) - return TRUE; - } + if (t.undoManager.typing) + addUndo(); + + return; + } - return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || (!settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE')); - }, + // If key isn't shift,ctrl,alt,capslock,metakey + if ((keyCode < 16 || keyCode > 20) && keyCode != 224 && keyCode != 91 && !t.undoManager.typing) { + t.undoManager.beforeChange(); + t.undoManager.typing = true; + t.undoManager.add(); + } + }); - 'InsertUnorderedList,InsertOrderedList' : function(command) { - return dom.getParent(selection.getNode(), command == 'insertunorderedlist' ? 'UL' : 'OL'); + t.onMouseDown.add(function() { + if (t.undoManager.typing) + addUndo(); + }); } - }, 'state'); + }, - // Add queryCommandValue overrides - addCommands({ - 'FontSize,FontName' : function(command) { - var value = 0, parent; + _refreshContentEditable : function() { + var self = this, body, parent; - if (parent = dom.getParent(selection.getNode(), 'span')) { - if (command == 'fontsize') - value = parent.style.fontSize; - else - value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase(); - } + // Check if the editor was hidden and the re-initalize contentEditable mode by removing and adding the body again + if (self._isHidden()) { + body = self.getBody(); + parent = body.parentNode; - return value; + parent.removeChild(body); + parent.appendChild(body); + + body.focus(); } - }, 'value'); + }, - // Add undo manager logic - if (settings.custom_undo_redo) { - addCommands({ - Undo : function() { - editor.undoManager.undo(); - }, + _isHidden : function() { + var s; - Redo : function() { - editor.undoManager.redo(); - } - }); + if (!isGecko) + return 0; + + // Weird, wheres that cursor selection? + s = this.selection.getSel(); + return (!s || !s.rangeCount || s.rangeCount == 0); } - }; + }); })(tinymce); + (function(tinymce) { - var Dispatcher = tinymce.util.Dispatcher; + // Added for compression purposes + var each = tinymce.each, undefined, TRUE = true, FALSE = false; - tinymce.UndoManager = function(editor) { - var self, index = 0, data = []; + tinymce.EditorCommands = function(editor) { + var dom = editor.dom, + selection = editor.selection, + commands = {state: {}, exec : {}, value : {}}, + settings = editor.settings, + formatter = editor.formatter, + bookmark; - function getContent() { - return tinymce.trim(editor.getContent({format : 'raw', no_events : 1})); - }; + function execCommand(command, ui, value) { + var func; - return self = { - typing : 0, + command = command.toLowerCase(); + if (func = commands.exec[command]) { + func(command, ui, value); + return TRUE; + } - onAdd : new Dispatcher(self), - onUndo : new Dispatcher(self), - onRedo : new Dispatcher(self), + return FALSE; + }; - add : function(level) { - var i, settings = editor.settings, lastLevel; + function queryCommandState(command) { + var func; - level = level || {}; - level.content = getContent(); + command = command.toLowerCase(); + if (func = commands.state[command]) + return func(command); - // Add undo level if needed - lastLevel = data[index]; - if (lastLevel && lastLevel.content == level.content) { - if (index > 0 || data.length == 1) - return null; - } + return -1; + }; - // Time to compress - if (settings.custom_undo_redo_levels) { - if (data.length > settings.custom_undo_redo_levels) { - for (i = 0; i < data.length - 1; i++) - data[i] = data[i + 1]; + function queryCommandValue(command) { + var func; - data.length--; - index = data.length; - } - } + command = command.toLowerCase(); + if (func = commands.value[command]) + return func(command); - // Get a non intrusive normalized bookmark - level.bookmark = editor.selection.getBookmark(2, true); + return FALSE; + }; - // Crop array if needed - if (index < data.length - 1) { - // Treat first level as initial - if (index == 0) - data = []; - else - data.length = index + 1; - } + function addCommands(command_list, type) { + type = type || 'exec'; - data.push(level); - index = data.length - 1; + each(command_list, function(callback, command) { + each(command.toLowerCase().split(','), function(command) { + commands[type][command] = callback; + }); + }); + }; - self.onAdd.dispatch(self, level); - editor.isNotDirty = 0; + // Expose public methods + tinymce.extend(this, { + execCommand : execCommand, + queryCommandState : queryCommandState, + queryCommandValue : queryCommandValue, + addCommands : addCommands + }); - return level; - }, + // Private methods - undo : function() { - var level, i; + function execNativeCommand(command, ui, value) { + if (ui === undefined) + ui = FALSE; - if (self.typing) { - self.add(); - self.typing = 0; - } + if (value === undefined) + value = null; - if (index > 0) { - level = data[--index]; + return editor.getDoc().execCommand(command, ui, value); + }; - editor.setContent(level.content, {format : 'raw'}); - editor.selection.moveToBookmark(level.bookmark); + function isFormatMatch(name) { + return formatter.match(name); + }; - self.onUndo.dispatch(self, level); - } + function toggleFormat(name, value) { + formatter.toggle(name, value ? {value : value} : undefined); + }; - return level; - }, + function storeSelection(type) { + bookmark = selection.getBookmark(type); + }; - redo : function() { - var level; + function restoreSelection() { + selection.moveToBookmark(bookmark); + }; - if (index < data.length - 1) { - level = data[++index]; + // Add execCommand overrides + addCommands({ + // Ignore these, added for compatibility + 'mceResetDesignMode,mceBeginUndoLevel' : function() {}, - editor.setContent(level.content, {format : 'raw'}); - editor.selection.moveToBookmark(level.bookmark); + // Add undo manager logic + 'mceEndUndoLevel,mceAddUndoLevel' : function() { + editor.undoManager.add(); + }, - self.onRedo.dispatch(self, level); + 'Cut,Copy,Paste' : function(command) { + var doc = editor.getDoc(), failed; + + // Try executing the native command + try { + execNativeCommand(command); + } catch (ex) { + // Command failed + failed = TRUE; } - return level; + // Present alert message about clipboard access not being available + if (failed || !doc.queryCommandSupported(command)) { + if (tinymce.isGecko) { + editor.windowManager.confirm(editor.getLang('clipboard_msg'), function(state) { + if (state) + open('http://www.mozilla.org/editor/midasdemo/securityprefs.html', '_blank'); + }); + } else + editor.windowManager.alert(editor.getLang('clipboard_no_support')); + } }, - clear : function() { - data = []; - index = self.typing = 0; - }, + // Override unlink command + unlink : function(command) { + if (selection.isCollapsed()) + selection.select(selection.getNode()); - hasUndo : function() { - return index > 0 || self.typing; + execNativeCommand(command); + selection.collapse(FALSE); }, - hasRedo : function() { - return index < data.length - 1; - } - }; - }; -})(tinymce); + // Override justify commands to use the text formatter engine + 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) { + var align = command.substring(7); -(function(tinymce) { - // Shorten names - var Event = tinymce.dom.Event, - isIE = tinymce.isIE, - isGecko = tinymce.isGecko, - isOpera = tinymce.isOpera, - each = tinymce.each, - extend = tinymce.extend, - TRUE = true, - FALSE = false; - - function cloneFormats(node) { - var clone, temp, inner; - - do { - if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) { - if (clone) { - temp = node.cloneNode(false); - temp.appendChild(clone); - clone = temp; - } else { - clone = inner = node.cloneNode(false); - } + // Remove all other alignments first + each('left,center,right,full'.split(','), function(name) { + if (align != name) + formatter.remove('align' + name); + }); - clone.removeAttribute('id'); - } - } while (node = node.parentNode); + toggleFormat('align' + align); + execCommand('mceRepaint'); + }, - if (clone) - return {wrapper : clone, inner : inner}; - }; + // Override list commands to fix WebKit bug + 'InsertUnorderedList,InsertOrderedList' : function(command) { + var listElm, listParent; - // Checks if the selection/caret is at the end of the specified block element - function isAtEnd(rng, par) { - var rng2 = par.ownerDocument.createRange(); + execNativeCommand(command); - rng2.setStart(rng.endContainer, rng.endOffset); - rng2.setEndAfter(par); + // WebKit produces lists within block elements so we need to split them + // we will replace the native list creation logic to custom logic later on + // TODO: Remove this when the list creation logic is removed + listElm = dom.getParent(selection.getNode(), 'ol,ul'); + if (listElm) { + listParent = listElm.parentNode; - // Get number of characters to the right of the cursor if it's zero then we are at the end and need to merge the next block element - return rng2.cloneContents().textContent.length == 0; - }; + // If list is within a text block then split that block + if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) { + storeSelection(); + dom.split(listParent, listElm); + restoreSelection(); + } + } + }, + + // Override commands to use the text formatter engine + 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript' : function(command) { + toggleFormat(command); + }, + + // Override commands to use the text formatter engine + 'ForeColor,HiliteColor,FontName' : function(command, ui, value) { + toggleFormat(command, value); + }, - function isEmpty(n) { - n = n.innerHTML; + FontSize : function(command, ui, value) { + var fontClasses, fontSizes; - n = n.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi, '-'); // Keep these convert them to - chars - n = n.replace(/<[^>]+>/g, ''); // Remove all tags + // Convert font size 1-7 to styles + if (value >= 1 && value <= 7) { + fontSizes = tinymce.explode(settings.font_size_style_values); + fontClasses = tinymce.explode(settings.font_size_classes); - return n.replace(/[ \u00a0\t\r\n]+/g, '') == ''; - }; + if (fontClasses) + value = fontClasses[value - 1] || value; + else + value = fontSizes[value - 1] || value; + } - function splitList(selection, dom, li) { - var listBlock, block; + toggleFormat(command, value); + }, - if (isEmpty(li)) { - listBlock = dom.getParent(li, 'ul,ol'); + RemoveFormat : function(command) { + formatter.remove(command); + }, - if (!dom.getParent(listBlock.parentNode, 'ul,ol')) { - dom.split(listBlock, li); - block = dom.create('p', 0, '
    '); - dom.replace(block, li); - selection.select(block, 1); - } + mceBlockQuote : function(command) { + toggleFormat('blockquote'); + }, - return FALSE; - } + FormatBlock : function(command, ui, value) { + return toggleFormat(value || 'p'); + }, - return TRUE; - }; + mceCleanup : function() { + var bookmark = selection.getBookmark(); - tinymce.create('tinymce.ForceBlocks', { - ForceBlocks : function(ed) { - var t = this, s = ed.settings, elm; + editor.setContent(editor.getContent({cleanup : TRUE}), {cleanup : TRUE}); - t.editor = ed; - t.dom = ed.dom; - elm = (s.forced_root_block || 'p').toLowerCase(); - s.element = elm.toUpperCase(); + selection.moveToBookmark(bookmark); + }, - ed.onPreInit.add(t.setup, t); + mceRemoveNode : function(command, ui, value) { + var node = value || selection.getNode(); - t.reOpera = new RegExp('(\\u00a0| | )<\/' + elm + '>', 'gi'); - t.rePadd = new RegExp(']+)><\\\/p>|]+)\\\/>|]+)>\\s+<\\\/p>|

    <\\\/p>||

    \\s+<\\\/p>'.replace(/p/g, elm), 'gi'); - t.reNbsp2BR1 = new RegExp(']+)>[\\s\\u00a0]+<\\\/p>|

    [\\s\\u00a0]+<\\\/p>'.replace(/p/g, elm), 'gi'); - t.reNbsp2BR2 = new RegExp('<%p()([^>]+)>( | )<\\\/%p>|<%p>( | )<\\\/%p>'.replace(/%p/g, elm), 'gi'); - t.reBR2Nbsp = new RegExp(']+)>\\s*
    \\s*<\\\/p>|

    \\s*
    \\s*<\\\/p>'.replace(/p/g, elm), 'gi'); + // Make sure that the body node isn't removed + if (node != editor.getBody()) { + storeSelection(); + editor.dom.remove(node, TRUE); + restoreSelection(); + } + }, - function padd(ed, o) { - if (isOpera) - o.content = o.content.replace(t.reOpera, ''); + mceSelectNodeDepth : function(command, ui, value) { + var counter = 0; - o.content = o.content.replace(t.rePadd, '<' + elm + '$1$2$3$4$5$6>\u00a0'); + dom.getParent(selection.getNode(), function(node) { + if (node.nodeType == 1 && counter++ == value) { + selection.select(node); + return FALSE; + } + }, editor.getBody()); + }, - if (!isIE && !isOpera && o.set) { - // Use   instead of BR in padded paragraphs - o.content = o.content.replace(t.reNbsp2BR1, '<' + elm + '$1$2>
    '); - o.content = o.content.replace(t.reNbsp2BR2, '<' + elm + '$1$2>
    '); - } else - o.content = o.content.replace(t.reBR2Nbsp, '<' + elm + '$1$2>\u00a0'); - }; + mceSelectNode : function(command, ui, value) { + selection.select(value); + }, - ed.onBeforeSetContent.add(padd); - ed.onPostProcess.add(padd); + mceInsertContent : function(command, ui, value) { + var parser, serializer, parentNode, rootNode, fragment, args, + marker, nodeRect, viewPortRect, rng, node, node2, bookmarkHtml, viewportBodyElement; - if (s.forced_root_block) { - ed.onInit.add(t.forceRoots, t); - ed.onSetContent.add(t.forceRoots, t); - ed.onBeforeGetContent.add(t.forceRoots, t); - } - }, + //selection.normalize(); - setup : function() { - var t = this, ed = t.editor, s = ed.settings, dom = ed.dom, selection = ed.selection; + // Setup parser and serializer + parser = editor.parser; + serializer = new tinymce.html.Serializer({}, editor.schema); + bookmarkHtml = '\uFEFF'; - // Force root blocks when typing and when getting output - if (s.forced_root_block) { - ed.onBeforeExecCommand.add(t.forceRoots, t); - ed.onKeyUp.add(t.forceRoots, t); - ed.onPreProcess.add(t.forceRoots, t); - } + // Run beforeSetContent handlers on the HTML to be inserted + args = {content: value, format: 'html'}; + selection.onBeforeSetContent.dispatch(selection, args); + value = args.content; - if (s.force_br_newlines) { - // Force IE to produce BRs on enter - if (isIE) { - ed.onKeyPress.add(function(ed, e) { - var n; - - if (e.keyCode == 13 && selection.getNode().nodeName != 'LI') { - selection.setContent('
    ', {format : 'raw'}); - n = dom.get('__'); - n.removeAttribute('id'); - selection.select(n); - selection.collapse(); - return Event.cancel(e); - } - }); - } - } + // Add caret at end of contents if it's missing + if (value.indexOf('{$caret}') == -1) + value += '{$caret}'; - if (s.force_p_newlines) { - if (!isIE) { - ed.onKeyPress.add(function(ed, e) { - if (e.keyCode == 13 && !e.shiftKey && !t.insertPara(e)) - Event.cancel(e); - }); - } else { - // Ungly hack to for IE to preserve the formatting when you press - // enter at the end of a block element with formatted contents - // This logic overrides the browsers default logic with - // custom logic that enables us to control the output - tinymce.addUnload(function() { - t._previousFormats = 0; // Fix IE leak - }); + // Replace the caret marker with a span bookmark element + value = value.replace(/\{\$caret\}/, bookmarkHtml); - ed.onKeyPress.add(function(ed, e) { - t._previousFormats = 0; + // Insert node maker where we will insert the new HTML and get it's parent + if (!selection.isCollapsed()) + editor.getDoc().execCommand('Delete', false, null); - // Clone the current formats, this will later be applied to the new block contents - if (e.keyCode == 13 && !e.shiftKey && ed.selection.isCollapsed() && s.keep_styles) - t._previousFormats = cloneFormats(ed.selection.getStart()); - }); + parentNode = selection.getNode(); - ed.onKeyUp.add(function(ed, e) { - // Let IE break the element and the wrap the new caret location in the previous formats - if (e.keyCode == 13 && !e.shiftKey) { - var parent = ed.selection.getStart(), fmt = t._previousFormats; + // Parse the fragment within the context of the parent node + args = {context : parentNode.nodeName.toLowerCase()}; + fragment = parser.parse(value, args); - // Parent is an empty block - if (!parent.hasChildNodes()) { - parent = dom.getParent(parent, dom.isBlock); + // Move the caret to a more suitable location + node = fragment.lastChild; + if (node.attr('id') == 'mce_marker') { + marker = node; - if (parent) { - parent.innerHTML = ''; - - if (t._previousFormats) { - parent.appendChild(fmt.wrapper); - fmt.inner.innerHTML = '\uFEFF'; - } else - parent.innerHTML = '\uFEFF'; - - selection.select(parent, 1); - ed.getDoc().execCommand('Delete', false, null); - } - } + for (node = node.prev; node; node = node.walk(true)) { + if (node.type == 3 || !dom.isBlock(node.name)) { + node.parent.insert(marker, node, node.name === 'br'); + break; } - }); + } } - if (isGecko) { - ed.onKeyDown.add(function(ed, e) { - if ((e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) - t.backspaceDelete(e, e.keyCode == 8); - }); - } - } + // If parser says valid we can insert the contents into that parent + if (!args.invalid) { + value = serializer.serialize(fragment); - // Workaround for missing shift+enter support, http://bugs.webkit.org/show_bug.cgi?id=16973 - if (tinymce.isWebKit) { - function insertBr(ed) { - var rng = selection.getRng(), br, div = dom.create('div', null, ' '), divYPos, vpHeight = dom.getViewPort(ed.getWin()).h; + // Check if parent is empty or only has one BR element then set the innerHTML of that parent + node = parentNode.firstChild; + node2 = parentNode.lastChild; + if (!node || (node === node2 && node.nodeName === 'BR')) + dom.setHTML(parentNode, value); + else + selection.setContent(value); + } else { + // If the fragment was invalid within that context then we need + // to parse and process the parent it's inserted into - // Insert BR element - rng.insertNode(br = dom.create('br')); + // Insert bookmark node and get the parent + selection.setContent(bookmarkHtml); + parentNode = editor.selection.getNode(); + rootNode = editor.getBody(); - // Place caret after BR - rng.setStartAfter(br); - rng.setEndAfter(br); - selection.setRng(rng); + // Opera will return the document node when selection is in root + if (parentNode.nodeType == 9) + parentNode = node = rootNode; + else + node = parentNode; - // Could not place caret after BR then insert an nbsp entity and move the caret - if (selection.getSel().focusNode == br.previousSibling) { - selection.select(dom.insertAfter(dom.doc.createTextNode('\u00a0'), br)); - selection.collapse(TRUE); + // Find the ancestor just before the root element + while (node !== rootNode) { + parentNode = node; + node = node.parentNode; } - // Create a temporary DIV after the BR and get the position as it - // seems like getPos() returns 0 for text nodes and BR elements. - dom.insertAfter(div, br); - divYPos = dom.getPos(div).y; - dom.remove(div); + // Get the outer/inner HTML depending on if we are in the root and parser and serialize that + value = parentNode == rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode); + value = serializer.serialize( + parser.parse( + // Need to replace by using a function since $ in the contents would otherwise be a problem + value.replace(//i, function() { + return serializer.serialize(fragment); + }) + ) + ); + + // Set the inner/outer HTML depending on if we are in the root or not + if (parentNode == rootNode) + dom.setHTML(rootNode, value); + else + dom.setOuterHTML(parentNode, value); + } - // Scroll to new position, scrollIntoView can't be used due to bug: http://bugs.webkit.org/show_bug.cgi?id=16117 - if (divYPos > vpHeight) // It is not necessary to scroll if the DIV is inside the view port. - ed.getWin().scrollTo(0, divYPos); - }; + marker = dom.get('mce_marker'); - ed.onKeyPress.add(function(ed, e) { - if (e.keyCode == 13 && (e.shiftKey || (s.force_br_newlines && !dom.getParent(selection.getNode(), 'h1,h2,h3,h4,h5,h6,ol,ul')))) { - insertBr(ed); - Event.cancel(e); - } - }); - } + // Scroll range into view scrollIntoView on element can't be used since it will scroll the main view port as well + nodeRect = dom.getRect(marker); + viewPortRect = dom.getViewPort(editor.getWin()); - // Padd empty inline elements within block elements - // For example:

    becomes

     

    - ed.onPreProcess.add(function(ed, o) { - each(dom.select('p,h1,h2,h3,h4,h5,h6,div', o.node), function(p) { - if (isEmpty(p)) { - each(dom.select('span,em,strong,b,i', o.node), function(n) { - if (!n.hasChildNodes()) { - n.appendChild(ed.getDoc().createTextNode('\u00a0')); - return FALSE; // Break the loop one padding is enough - } - }); - } - }); - }); + // Check if node is out side the viewport if it is then scroll to it + if ((nodeRect.y + nodeRect.h > viewPortRect.y + viewPortRect.h || nodeRect.y < viewPortRect.y) || + (nodeRect.x > viewPortRect.x + viewPortRect.w || nodeRect.x < viewPortRect.x)) { + viewportBodyElement = tinymce.isIE ? editor.getDoc().documentElement : editor.getBody(); + viewportBodyElement.scrollLeft = nodeRect.x; + viewportBodyElement.scrollTop = nodeRect.y - viewPortRect.h + 25; + } - // IE specific fixes - if (isIE) { - // Replaces IE:s auto generated paragraphs with the specified element name - if (s.element != 'P') { - ed.onKeyPress.add(function(ed, e) { - t.lastElm = selection.getNode().nodeName; - }); + // Move selection before marker and remove it + rng = dom.createRng(); - ed.onKeyUp.add(function(ed, e) { - var bl, n = selection.getNode(), b = ed.getBody(); + // If previous sibling is a text node set the selection to the end of that node + node = marker.previousSibling; + if (node && node.nodeType == 3) { + rng.setStart(node, node.nodeValue.length); + } else { + // If the previous sibling isn't a text node or doesn't exist set the selection before the marker node + rng.setStartBefore(marker); + rng.setEndBefore(marker); + } - if (b.childNodes.length === 1 && n.nodeName == 'P') { - n = dom.rename(n, s.element); - selection.select(n); - selection.collapse(); - ed.nodeChanged(); - } else if (e.keyCode == 13 && !e.shiftKey && t.lastElm != 'P') { - bl = dom.getParent(n, 'p'); + // Remove the marker node and set the new range + dom.remove(marker); + selection.setRng(rng); - if (bl) { - dom.rename(bl, s.element); - ed.nodeChanged(); - } - } - }); - } - } - }, + // Dispatch after event and add any visual elements needed + selection.onSetContent.dispatch(selection, args); + editor.addVisual(); + }, - find : function(n, t, s) { - var ed = this.editor, w = ed.getDoc().createTreeWalker(n, 4, null, FALSE), c = -1; + mceInsertRawHTML : function(command, ui, value) { + selection.setContent('tiny_mce_marker'); + editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, function() { return value })); + }, - while (n = w.nextNode()) { - c++; + mceSetContent : function(command, ui, value) { + editor.setContent(value); + }, - // Index by node - if (t == 0 && n == s) - return c; + 'Indent,Outdent' : function(command) { + var intentValue, indentUnit, value; - // Node by index - if (t == 1 && c == s) - return n; - } + // Setup indent level + intentValue = settings.indentation; + indentUnit = /[a-z%]+$/i.exec(intentValue); + intentValue = parseInt(intentValue); - return -1; - }, + if (!queryCommandState('InsertUnorderedList') && !queryCommandState('InsertOrderedList')) { + // If forced_root_blocks is set to false we don't have a block to indent so lets create a div + if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) { + formatter.apply('div'); + } + + each(selection.getSelectedBlocks(), function(element) { + if (command == 'outdent') { + value = Math.max(0, parseInt(element.style.paddingLeft || 0) - intentValue); + dom.setStyle(element, 'paddingLeft', value ? value + indentUnit : ''); + } else + dom.setStyle(element, 'paddingLeft', (parseInt(element.style.paddingLeft || 0) + intentValue) + indentUnit); + }); + } else + execNativeCommand(command); + }, - forceRoots : function(ed, e) { - var t = this, ed = t.editor, b = ed.getBody(), d = ed.getDoc(), se = ed.selection, s = se.getSel(), r = se.getRng(), si = -2, ei, so, eo, tr, c = -0xFFFFFF; - var nx, bl, bp, sp, le, nl = b.childNodes, i, n, eid; + mceRepaint : function() { + var bookmark; - // Fix for bug #1863847 - //if (e && e.keyCode == 13) - // return TRUE; + if (tinymce.isGecko) { + try { + storeSelection(TRUE); - // Wrap non blocks into blocks - for (i = nl.length - 1; i >= 0; i--) { - nx = nl[i]; + if (selection.getSel()) + selection.getSel().selectAllChildren(editor.getBody()); - // Ignore internal elements - if (nx.nodeType === 1 && nx.getAttribute('_mce_type')) { - bl = null; - continue; + selection.collapse(TRUE); + restoreSelection(); + } catch (ex) { + // Ignore + } } + }, - // Is text or non block element - if (nx.nodeType === 3 || (!t.dom.isBlock(nx) && nx.nodeType !== 8 && !/^(script|mce:script|style|mce:style)$/i.test(nx.nodeName))) { - if (!bl) { - // Create new block but ignore whitespace - if (nx.nodeType != 3 || /[^\s]/g.test(nx.nodeValue)) { - // Store selection - if (si == -2 && r) { - if (!isIE) { - // If selection is element then mark it - if (r.startContainer.nodeType == 1 && (n = r.startContainer.childNodes[r.startOffset]) && n.nodeType == 1) { - // Save the id of the selected element - eid = n.getAttribute("id"); - n.setAttribute("id", "__mce"); - } else { - // If element is inside body, might not be the case in contentEdiable mode - if (ed.dom.getParent(r.startContainer, function(e) {return e === b;})) { - so = r.startOffset; - eo = r.endOffset; - si = t.find(b, 0, r.startContainer); - ei = t.find(b, 0, r.endContainer); - } - } - } else { - // Force control range into text range - if (r.item) { - tr = d.body.createTextRange(); - tr.moveToElementText(r.item(0)); - r = tr; - } + mceToggleFormat : function(command, ui, value) { + formatter.toggle(value); + }, - tr = d.body.createTextRange(); - tr.moveToElementText(b); - tr.collapse(1); - bp = tr.move('character', c) * -1; + InsertHorizontalRule : function() { + editor.execCommand('mceInsertContent', false, '
    '); + }, - tr = r.duplicate(); - tr.collapse(1); - sp = tr.move('character', c) * -1; + mceToggleVisualAid : function() { + editor.hasVisual = !editor.hasVisual; + editor.addVisual(); + }, - tr = r.duplicate(); - tr.collapse(0); - le = (tr.move('character', c) * -1) - sp; + mceReplaceContent : function(command, ui, value) { + editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, selection.getContent({format : 'text'}))); + }, - si = sp - bp; - ei = le; - } - } + mceInsertLink : function(command, ui, value) { + var anchor; - // Uses replaceChild instead of cloneNode since it removes selected attribute from option elements on IE - // See: http://support.microsoft.com/kb/829907 - bl = ed.dom.create(ed.settings.forced_root_block); - nx.parentNode.replaceChild(bl, nx); - bl.appendChild(nx); - } - } else { - if (bl.hasChildNodes()) - bl.insertBefore(nx, bl.firstChild); - else - bl.appendChild(nx); - } - } else - bl = null; // Time to create new block - } + if (typeof(value) == 'string') + value = {href : value}; - // Restore selection - if (si != -2) { - if (!isIE) { - bl = b.getElementsByTagName(ed.settings.element)[0]; - r = d.createRange(); + anchor = dom.getParent(selection.getNode(), 'a'); - // Select last location or generated block - if (si != -1) - r.setStart(t.find(b, 1, si), so); - else - r.setStart(bl, 0); + // Spaces are never valid in URLs and it's a very common mistake for people to make so we fix it here. + value.href = value.href.replace(' ', '%20'); - // Select last location or generated block - if (ei != -1) - r.setEnd(t.find(b, 1, ei), eo); - else - r.setEnd(bl, 0); + // Remove existing links if there could be child links or that the href isn't specified + if (!anchor || !value.href) { + formatter.remove('link'); + } - if (s) { - s.removeAllRanges(); - s.addRange(r); - } - } else { - try { - r = s.createRange(); - r.moveToElementText(b); - r.collapse(1); - r.moveStart('character', si); - r.moveEnd('character', ei); - r.select(); - } catch (ex) { - // Ignore - } + // Apply new link to selection + if (value.href) { + formatter.apply('link', value, anchor); } - } else if (!isIE && (n = ed.dom.get('__mce'))) { - // Restore the id of the selected element - if (eid) - n.setAttribute('id', eid); - else - n.removeAttribute('id'); + }, - // Move caret before selected element - r = d.createRange(); - r.setStartBefore(n); - r.setEndBefore(n); - se.setRng(r); - } - }, + selectAll : function() { + var root = dom.getRoot(), rng = dom.createRng(); - getParentBlock : function(n) { - var d = this.dom; + rng.setStart(root, 0); + rng.setEnd(root, root.childNodes.length); - return d.getParent(n, d.isBlock); - }, + editor.selection.setRng(rng); + } + }); - insertPara : function(e) { - var t = this, ed = t.editor, dom = ed.dom, d = ed.getDoc(), se = ed.settings, s = ed.selection.getSel(), r = s.getRangeAt(0), b = d.body; - var rb, ra, dir, sn, so, en, eo, sb, eb, bn, bef, aft, sc, ec, n, vp = dom.getViewPort(ed.getWin()), y, ch, car; + // Add queryCommandState overrides + addCommands({ + // Override justify commands + 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) { + var name = 'align' + command.substring(7); + // Use Formatter.matchNode instead of Formatter.match so that we don't match on parent node. This fixes bug where for both left + // and right align buttons can be active. This could occur when selected nodes have align right and the parent has align left. + var nodes = selection.isCollapsed() ? [selection.getNode()] : selection.getSelectedBlocks(); + var matches = tinymce.map(nodes, function(node) { + return !!formatter.matchNode(node, name); + }); + return tinymce.inArray(matches, TRUE) !== -1; + }, + + 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript' : function(command) { + return isFormatMatch(command); + }, - // If root blocks are forced then use Operas default behavior since it's really good -// Removed due to bug: #1853816 -// if (se.forced_root_block && isOpera) -// return TRUE; + mceBlockQuote : function() { + return isFormatMatch('blockquote'); + }, - // Setup before range - rb = d.createRange(); + Outdent : function() { + var node; - // If is before the first block element and in body, then move it into first block element - rb.setStart(s.anchorNode, s.anchorOffset); - rb.collapse(TRUE); + if (settings.inline_styles) { + if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0) + return TRUE; - // Setup after range - ra = d.createRange(); + if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft) > 0) + return TRUE; + } - // If is before the first block element and in body, then move it into first block element - ra.setStart(s.focusNode, s.focusOffset); - ra.collapse(TRUE); + return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || (!settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE')); + }, - // Setup start/end points - dir = rb.compareBoundaryPoints(rb.START_TO_END, ra) < 0; - sn = dir ? s.anchorNode : s.focusNode; - so = dir ? s.anchorOffset : s.focusOffset; - en = dir ? s.focusNode : s.anchorNode; - eo = dir ? s.focusOffset : s.anchorOffset; + 'InsertUnorderedList,InsertOrderedList' : function(command) { + return dom.getParent(selection.getNode(), command == 'insertunorderedlist' ? 'UL' : 'OL'); + } + }, 'state'); - // If selection is in empty table cell - if (sn === en && /^(TD|TH)$/.test(sn.nodeName)) { - if (sn.firstChild.nodeName == 'BR') - dom.remove(sn.firstChild); // Remove BR + // Add queryCommandValue overrides + addCommands({ + 'FontSize,FontName' : function(command) { + var value = 0, parent; - // Create two new block elements - if (sn.childNodes.length == 0) { - ed.dom.add(sn, se.element, null, '
    '); - aft = ed.dom.add(sn, se.element, null, '
    '); - } else { - n = sn.innerHTML; - sn.innerHTML = ''; - ed.dom.add(sn, se.element, null, n); - aft = ed.dom.add(sn, se.element, null, '
    '); + if (parent = dom.getParent(selection.getNode(), 'span')) { + if (command == 'fontsize') + value = parent.style.fontSize; + else + value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase(); } - // Move caret into the last one - r = d.createRange(); - r.selectNodeContents(aft); - r.collapse(1); - ed.selection.setRng(r); - - return FALSE; + return value; } + }, 'value'); - // If the caret is in an invalid location in FF we need to move it into the first block - if (sn == b && en == b && b.firstChild && ed.dom.isBlock(b.firstChild)) { - sn = en = sn.firstChild; - so = eo = 0; - rb = d.createRange(); - rb.setStart(sn, 0); - ra = d.createRange(); - ra.setStart(en, 0); - } + // Add undo manager logic + if (settings.custom_undo_redo) { + addCommands({ + Undo : function() { + editor.undoManager.undo(); + }, + + Redo : function() { + editor.undoManager.redo(); + } + }); + } + }; +})(tinymce); + +(function(tinymce) { + var Dispatcher = tinymce.util.Dispatcher; - // Never use body as start or end node - sn = sn.nodeName == "HTML" ? d.body : sn; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes - sn = sn.nodeName == "BODY" ? sn.firstChild : sn; - en = en.nodeName == "HTML" ? d.body : en; // Fix for Opera bug: https://bugs.opera.com/show_bug.cgi?id=273224&comments=yes - en = en.nodeName == "BODY" ? en.firstChild : en; + tinymce.UndoManager = function(editor) { + var self, index = 0, data = [], beforeBookmark; - // Get start and end blocks - sb = t.getParentBlock(sn); - eb = t.getParentBlock(en); - bn = sb ? sb.nodeName : se.element; // Get block name to create + function getContent() { + // Remove whitespace before/after and remove pure bogus nodes + return tinymce.trim(editor.getContent({format : 'raw', no_events : 1}).replace(/]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g, '')); + }; - // Return inside list use default browser behavior - if (n = t.dom.getParent(sb, 'li,pre')) { - if (n.nodeName == 'LI') - return splitList(ed.selection, t.dom, n); + return self = { + typing : false, - return TRUE; - } + onAdd : new Dispatcher(self), - // If caption or absolute layers then always generate new blocks within - if (sb && (sb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) { - bn = se.element; - sb = null; - } + onUndo : new Dispatcher(self), - // If caption or absolute layers then always generate new blocks within - if (eb && (eb.nodeName == 'CAPTION' || /absolute|relative|fixed/gi.test(dom.getStyle(sb, 'position', 1)))) { - bn = se.element; - eb = null; - } + onRedo : new Dispatcher(self), - // Use P instead - if (/(TD|TABLE|TH|CAPTION)/.test(bn) || (sb && bn == "DIV" && /left|right/gi.test(dom.getStyle(sb, 'float', 1)))) { - bn = se.element; - sb = eb = null; - } + beforeChange : function() { + beforeBookmark = editor.selection.getBookmark(2, true); + }, - // Setup new before and after blocks - bef = (sb && sb.nodeName == bn) ? sb.cloneNode(0) : ed.dom.create(bn); - aft = (eb && eb.nodeName == bn) ? eb.cloneNode(0) : ed.dom.create(bn); + add : function(level) { + var i, settings = editor.settings, lastLevel; - // Remove id from after clone - aft.removeAttribute('id'); + level = level || {}; + level.content = getContent(); - // Is header and cursor is at the end, then force paragraph under - if (/^(H[1-6])$/.test(bn) && isAtEnd(r, sb)) - aft = ed.dom.create(se.element); + // Add undo level if needed + lastLevel = data[index]; + if (lastLevel && lastLevel.content == level.content) + return null; - // Find start chop node - n = sc = sn; - do { - if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName)) - break; + // Set before bookmark on previous level + if (data[index]) + data[index].beforeBookmark = beforeBookmark; - sc = n; - } while ((n = n.previousSibling ? n.previousSibling : n.parentNode)); + // Time to compress + if (settings.custom_undo_redo_levels) { + if (data.length > settings.custom_undo_redo_levels) { + for (i = 0; i < data.length - 1; i++) + data[i] = data[i + 1]; - // Find end chop node - n = ec = en; - do { - if (n == b || n.nodeType == 9 || t.dom.isBlock(n) || /(TD|TABLE|TH|CAPTION)/.test(n.nodeName)) - break; + data.length--; + index = data.length; + } + } - ec = n; - } while ((n = n.nextSibling ? n.nextSibling : n.parentNode)); + // Get a non intrusive normalized bookmark + level.bookmark = editor.selection.getBookmark(2, true); - // Place first chop part into before block element - if (sc.nodeName == bn) - rb.setStart(sc, 0); - else - rb.setStartBefore(sc); + // Crop array if needed + if (index < data.length - 1) + data.length = index + 1; - rb.setEnd(sn, so); - bef.appendChild(rb.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari + data.push(level); + index = data.length - 1; - // Place secnd chop part within new block element - try { - ra.setEndAfter(ec); - } catch(ex) { - //console.debug(s.focusNode, s.focusOffset); - } + self.onAdd.dispatch(self, level); + editor.isNotDirty = 0; - ra.setStart(en, eo); - aft.appendChild(ra.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari + return level; + }, - // Create range around everything - r = d.createRange(); - if (!sc.previousSibling && sc.parentNode.nodeName == bn) { - r.setStartBefore(sc.parentNode); - } else { - if (rb.startContainer.nodeName == bn && rb.startOffset == 0) - r.setStartBefore(rb.startContainer); - else - r.setStart(rb.startContainer, rb.startOffset); - } + undo : function() { + var level, i; - if (!ec.nextSibling && ec.parentNode.nodeName == bn) - r.setEndAfter(ec.parentNode); - else - r.setEnd(ra.endContainer, ra.endOffset); + if (self.typing) { + self.add(); + self.typing = false; + } - // Delete and replace it with new block elements - r.deleteContents(); + if (index > 0) { + level = data[--index]; - if (isOpera) - ed.getWin().scrollTo(0, vp.y); + editor.setContent(level.content, {format : 'raw'}); + editor.selection.moveToBookmark(level.beforeBookmark); - // Never wrap blocks in blocks - if (bef.firstChild && bef.firstChild.nodeName == bn) - bef.innerHTML = bef.firstChild.innerHTML; + self.onUndo.dispatch(self, level); + } - if (aft.firstChild && aft.firstChild.nodeName == bn) - aft.innerHTML = aft.firstChild.innerHTML; + return level; + }, - // Padd empty blocks - if (isEmpty(bef)) - bef.innerHTML = '
    '; + redo : function() { + var level; - function appendStyles(e, en) { - var nl = [], nn, n, i; + if (index < data.length - 1) { + level = data[++index]; - e.innerHTML = ''; + editor.setContent(level.content, {format : 'raw'}); + editor.selection.moveToBookmark(level.bookmark); - // Make clones of style elements - if (se.keep_styles) { - n = en; - do { - // We only want style specific elements - if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(n.nodeName)) { - nn = n.cloneNode(FALSE); - dom.setAttrib(nn, 'id', ''); // Remove ID since it needs to be unique - nl.push(nn); - } - } while (n = n.parentNode); + self.onRedo.dispatch(self, level); } - // Append style elements to aft - if (nl.length > 0) { - for (i = nl.length - 1, nn = e; i >= 0; i--) - nn = nn.appendChild(nl[i]); + return level; + }, - // Padd most inner style element - nl[0].innerHTML = isOpera ? ' ' : '
    '; // Extra space for Opera so that the caret can move there - return nl[0]; // Move caret to most inner element - } else - e.innerHTML = isOpera ? ' ' : '
    '; // Extra space for Opera so that the caret can move there - }; + clear : function() { + data = []; + index = 0; + self.typing = false; + }, - // Fill empty afterblook with current style - if (isEmpty(aft)) - car = appendStyles(aft, en); + hasUndo : function() { + return index > 0 || this.typing; + }, - // Opera needs this one backwards for older versions - if (isOpera && parseFloat(opera.version()) < 9.5) { - r.insertNode(bef); - r.insertNode(aft); - } else { - r.insertNode(aft); - r.insertNode(bef); + hasRedo : function() { + return index < data.length - 1 && !this.typing; } + }; + }; +})(tinymce); - // Normalize - aft.normalize(); - bef.normalize(); +tinymce.ForceBlocks = function(editor) { + var settings = editor.settings, dom = editor.dom, selection = editor.selection, blockElements = editor.schema.getBlockElements(); - function first(n) { - return d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE).nextNode() || n; - }; + // Force root blocks + if (settings.forced_root_block) { + function addRootBlocks() { + var node = selection.getStart(), rootNode = editor.getBody(), rng, startContainer, startOffset, endContainer, endOffset, rootBlockNode, tempNode, offset = -0xFFFFFF; - // Move cursor and scroll into view - r = d.createRange(); - r.selectNodeContents(isGecko ? first(car || aft) : car || aft); - r.collapse(1); - s.removeAllRanges(); - s.addRange(r); + if (!node || node.nodeType !== 1 || !settings.forced_root_block) + return; - // scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs - y = ed.dom.getPos(aft).y; - ch = aft.clientHeight; + // Check if node is wrapped in block + while (node != rootNode) { + if (blockElements[node.nodeName]) + return; - // Is element within viewport - if (y < vp.y || y + ch > vp.y + vp.h) { - ed.getWin().scrollTo(0, y < vp.y ? y : y - vp.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks - //console.debug('SCROLL!', 'vp.y: ' + vp.y, 'y' + y, 'vp.h' + vp.h, 'clientHeight' + aft.clientHeight, 'yyy: ' + (y < vp.y ? y : y - vp.h + aft.clientHeight)); + node = node.parentNode; } - return FALSE; - }, - - backspaceDelete : function(e, bs) { - var t = this, ed = t.editor, b = ed.getBody(), dom = ed.dom, n, se = ed.selection, r = se.getRng(), sc = r.startContainer, n, w, tn, walker; + // Get current selection + rng = selection.getRng(); + if (rng.setStart) { + startContainer = rng.startContainer; + startOffset = rng.startOffset; + endContainer = rng.endContainer; + endOffset = rng.endOffset; + } else { + // Force control range into text range + if (rng.item) { + node = rng.item(0); + rng = editor.getDoc().body.createTextRange(); + rng.moveToElementText(node); + } - // Delete when caret is behind a element doesn't work correctly on Gecko see #3011651 - if (!bs && r.collapsed && sc.nodeType == 1 && r.startOffset == sc.childNodes.length) { - walker = new tinymce.dom.TreeWalker(sc.lastChild, sc); + tmpRng = rng.duplicate(); + tmpRng.collapse(true); + startOffset = tmpRng.move('character', offset) * -1; - // Walk the dom backwards until we find a text node - for (n = sc.lastChild; n; n = walker.prev()) { - if (n.nodeType == 3) { - r.setStart(n, n.nodeValue.length); - r.collapse(true); - se.setRng(r); - return; - } + if (!tmpRng.collapsed) { + tmpRng = rng.duplicate(); + tmpRng.collapse(false); + endOffset = (tmpRng.move('character', offset) * -1) - startOffset; } } - // The caret sometimes gets stuck in Gecko if you delete empty paragraphs - // This workaround removes the element by hand and moves the caret to the previous element - if (sc && ed.dom.isBlock(sc) && !/^(TD|TH)$/.test(sc.nodeName) && bs) { - if (sc.childNodes.length == 0 || (sc.childNodes.length == 1 && sc.firstChild.nodeName == 'BR')) { - // Find previous block element - n = sc; - while ((n = n.previousSibling) && !ed.dom.isBlock(n)) ; + // Wrap non block elements and text nodes + for (node = rootNode.firstChild; node; node) { + if (node.nodeType === 3 || (node.nodeType == 1 && !blockElements[node.nodeName])) { + if (!rootBlockNode) { + rootBlockNode = dom.create(settings.forced_root_block); + node.parentNode.insertBefore(rootBlockNode, node); + } - if (n) { - if (sc != b.firstChild) { - // Find last text node - w = ed.dom.doc.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE); - while (tn = w.nextNode()) - n = tn; + tempNode = node; + node = node.nextSibling; + rootBlockNode.appendChild(tempNode); + } else { + rootBlockNode = null; + node = node.nextSibling; + } + } - // Place caret at the end of last text node - r = ed.getDoc().createRange(); - r.setStart(n, n.nodeValue ? n.nodeValue.length : 0); - r.setEnd(n, n.nodeValue ? n.nodeValue.length : 0); - se.setRng(r); + if (rng.setStart) { + rng.setStart(startContainer, startOffset); + rng.setEnd(endContainer, endOffset); + selection.setRng(rng); + } else { + try { + rng = editor.getDoc().body.createTextRange(); + rng.moveToElementText(rootNode); + rng.collapse(true); + rng.moveStart('character', startOffset); - // Remove the target container - ed.dom.remove(sc); - } + if (endOffset > 0) + rng.moveEnd('character', endOffset); - return Event.cancel(e); - } + rng.select(); + } catch (ex) { + // Ignore } } - } - }); -})(tinymce); + + editor.nodeChanged(); + }; + + editor.onKeyUp.add(addRootBlocks); + editor.onClick.add(addRootBlocks); + } +}; (function(tinymce) { // Shorten names @@ -12484,11 +14767,16 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { id = t.prefix + id; - if (ed.settings.use_native_selects) + + function useNativeListForAccessibility(ed) { + return ed.settings.use_accessible_selects && !tinymce.isGecko + } + + if (ed.settings.use_native_selects || useNativeListForAccessibility(ed)) c = new tinymce.ui.NativeListBox(id, s); else { cls = cc || t._cls.listbox || tinymce.ui.ListBox; - c = new cls(id, s); + c = new cls(id, s, ed); } t.controls[id] = c; @@ -12543,11 +14831,11 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if (s.menu_button) { cls = cc || t._cls.menubutton || tinymce.ui.MenuButton; - c = new cls(id, s); + c = new cls(id, s, ed); ed.onMouseDown.add(c.hideMenu, c); } else { cls = t._cls.button || tinymce.ui.Button; - c = new cls(id, s); + c = new cls(id, s, ed); } return t.add(c); @@ -12590,7 +14878,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { id = t.prefix + id; cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton; - c = t.add(new cls(id, s)); + c = t.add(new cls(id, s, ed)); ed.onMouseDown.add(c.hideMenu, c); return c; @@ -12630,7 +14918,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { id = t.prefix + id; cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton; - c = new cls(id, s); + c = new cls(id, s, ed); ed.onMouseDown.add(c.hideMenu, c); // Remove the menu element when the editor is removed @@ -12662,13 +14950,25 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { id = t.prefix + id; cls = cc || t._cls.toolbar || tinymce.ui.Toolbar; - c = new cls(id, s); + c = new cls(id, s, t.editor); if (t.get(id)) return null; return t.add(c); }, + + createToolbarGroup : function(id, s, cc) { + var c, t = this, cls; + id = t.prefix + id; + cls = cc || this._cls.toolbarGroup || tinymce.ui.ToolbarGroup; + c = new cls(id, s, t.editor); + + if (t.get(id)) + return null; + + return t.add(c); + }, createSeparator : function(cc) { var cls = cc || this._cls.separator || tinymce.ui.Separator; @@ -12805,53 +15105,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { } }); }(tinymce)); -(function(tinymce) { - function CommandManager() { - var execCommands = {}, queryStateCommands = {}, queryValueCommands = {}; - - function add(collection, cmd, func, scope) { - if (typeof(cmd) == 'string') - cmd = [cmd]; - - tinymce.each(cmd, function(cmd) { - collection[cmd.toLowerCase()] = {func : func, scope : scope}; - }); - }; - - tinymce.extend(this, { - add : function(cmd, func, scope) { - add(execCommands, cmd, func, scope); - }, - - addQueryStateHandler : function(cmd, func, scope) { - add(queryStateCommands, cmd, func, scope); - }, - - addQueryValueHandler : function(cmd, func, scope) { - add(queryValueCommands, cmd, func, scope); - }, - - execCommand : function(scope, cmd, ui, value, args) { - if (cmd = execCommands[cmd.toLowerCase()]) { - if (cmd.func.call(scope || cmd.scope, ui, value, args) !== false) - return true; - } - }, - - queryCommandValue : function() { - if (cmd = queryValueCommands[cmd.toLowerCase()]) - return cmd.func.call(scope || cmd.scope, ui, value, args); - }, - - queryCommandState : function() { - if (cmd = queryStateCommands[cmd.toLowerCase()]) - return cmd.func.call(scope || cmd.scope, ui, value, args); - } - }); - }; - - tinymce.GlobalCommands = new CommandManager(); -})(tinymce); (function(tinymce) { tinymce.Formatter = function(ed) { var formats = {}, @@ -12860,16 +15113,28 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { selection = ed.selection, TreeWalker = tinymce.dom.TreeWalker, rangeUtils = new tinymce.dom.RangeUtils(dom), - isValid = ed.schema.isValid, + isValid = ed.schema.isValidChild, isBlock = dom.isBlock, forcedRootBlock = ed.settings.forced_root_block, nodeIndex = dom.nodeIndex, - INVISIBLE_CHAR = '\uFEFF', + INVISIBLE_CHAR = tinymce.isGecko ? '\u200B' : '\uFEFF', MCE_ATTR_RE = /^(src|href|style)$/, FALSE = false, TRUE = true, - undefined, - pendingFormats = {apply : [], remove : []}; + undefined; + + // Returns the content editable state of a node + function getContentEditable(node) { + var contentEditable = node.getAttribute("data-mce-contenteditable"); + + // Check for fake content editable + if (contentEditable && contentEditable !== "inherit") { + return contentEditable; + } + + // Check for real content editable + return node.contentEditable !== "inherit" ? node.contentEditable : null; + }; function isArray(obj) { return obj instanceof Array; @@ -12880,7 +15145,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }; function isCaretNode(node) { - return node.nodeType === 1 && (node.face === 'mceinline' || node.style.fontFamily === 'mceinline'); + return node.nodeType === 1 && node.id === '_mce_caret'; }; // Public functions @@ -12929,37 +15194,40 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { } }; - function apply(name, vars, node) { - var formatList = get(name), format = formatList[0], bookmark, rng, i; + var getTextDecoration = function(node) { + var decoration; - function moveStart(rng) { - var container = rng.startContainer, - offset = rng.startOffset, - walker, node; - - // Move startContainer/startOffset in to a suitable node - if (container.nodeType == 1 || container.nodeValue === "") { - container = container.nodeType == 1 ? container.childNodes[offset] : container; - - // Might fail if the offset is behind the last element in it's container - if (container) { - walker = new TreeWalker(container, container.parentNode); - for (node = walker.current(); node; node = walker.next()) { - if (node.nodeType == 3 && !isWhiteSpaceNode(node)) { - rng.setStart(node, 0); - break; - } - } - } + ed.dom.getParent(node, function(n) { + decoration = ed.dom.getStyle(n, 'text-decoration'); + return decoration && decoration !== 'none'; + }); + + return decoration; + }; + + var processUnderlineAndColor = function(node) { + var textDecoration; + if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) { + textDecoration = getTextDecoration(node.parentNode); + if (ed.dom.getStyle(node, 'color') && textDecoration) { + ed.dom.setStyle(node, 'text-decoration', textDecoration); + } else if (ed.dom.getStyle(node, 'textdecoration') === textDecoration) { + ed.dom.setStyle(node, 'text-decoration', null); } + } + }; - return rng; - }; + function apply(name, vars, node) { + var formatList = get(name), format = formatList[0], bookmark, rng, i, isCollapsed = selection.isCollapsed(); function setElementFormat(elm, fmt) { fmt = fmt || format; if (elm) { + if (fmt.onformat) { + fmt.onformat(elm, fmt, vars, node); + } + each(fmt.styles, function(value, name) { dom.setStyle(elm, name, replaceVars(value, vars)); }); @@ -12976,9 +15244,90 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }); } }; + function adjustSelectionToVisibleSelection() { + function findSelectionEnd(start, end) { + var walker = new TreeWalker(end); + for (node = walker.current(); node; node = walker.prev()) { + if (node.childNodes.length > 1 || node == start) { + return node; + } + } + }; + + // Adjust selection so that a end container with a end offset of zero is not included in the selection + // as this isn't visible to the user. + var rng = ed.selection.getRng(); + var start = rng.startContainer; + var end = rng.endContainer; + + if (start != end && rng.endOffset == 0) { + var newEnd = findSelectionEnd(start, end); + var endOffset = newEnd.nodeType == 3 ? newEnd.length : newEnd.childNodes.length; + + rng.setEnd(newEnd, endOffset); + } + + return rng; + } + + function applyStyleToList(node, bookmark, wrapElm, newWrappers, process){ + var nodes = [], listIndex = -1, list, startIndex = -1, endIndex = -1, currentWrapElm; + + // find the index of the first child list. + each(node.childNodes, function(n, index) { + if (n.nodeName === "UL" || n.nodeName === "OL") { + listIndex = index; + list = n; + return false; + } + }); + + // get the index of the bookmarks + each(node.childNodes, function(n, index) { + if (n.nodeName === "SPAN" && dom.getAttrib(n, "data-mce-type") == "bookmark") { + if (n.id == bookmark.id + "_start") { + startIndex = index; + } else if (n.id == bookmark.id + "_end") { + endIndex = index; + } + } + }); + + // if the selection spans across an embedded list, or there isn't an embedded list - handle processing normally + if (listIndex <= 0 || (startIndex < listIndex && endIndex > listIndex)) { + each(tinymce.grep(node.childNodes), process); + return 0; + } else { + currentWrapElm = dom.clone(wrapElm, FALSE); + + // create a list of the nodes on the same side of the list as the selection + each(tinymce.grep(node.childNodes), function(n, index) { + if ((startIndex < listIndex && index < listIndex) || (startIndex > listIndex && index > listIndex)) { + nodes.push(n); + n.parentNode.removeChild(n); + } + }); + + // insert the wrapping element either before or after the list. + if (startIndex < listIndex) { + node.insertBefore(currentWrapElm, list); + } else if (startIndex > listIndex) { + node.insertBefore(currentWrapElm, list.nextSibling); + } + + // add the new nodes to the list. + newWrappers.push(currentWrapElm); + + each(nodes, function(node) { + currentWrapElm.appendChild(node); + }); + + return currentWrapElm; + } + }; - function applyRngStyle(rng) { - var newWrappers = [], wrapName, wrapElm; + function applyRngStyle(rng, bookmark, node_specific) { + var newWrappers = [], wrapName, wrapElm, contentEditable = true; // Setup wrapper element wrapName = format.inline || format.block; @@ -12989,7 +15338,18 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { var currentWrapElm; function process(node) { - var nodeName = node.nodeName.toLowerCase(), parentName = node.parentNode.nodeName.toLowerCase(), found; + var nodeName, parentName, found, hasContentEditableState, lastContentEditable; + + lastContentEditable = contentEditable; + nodeName = node.nodeName.toLowerCase(); + parentName = node.parentNode.nodeName.toLowerCase(); + + // Node has a contentEditable value + if (node.nodeType === 1 && getContentEditable(node)) { + lastContentEditable = contentEditable; + contentEditable = getContentEditable(node) === "true"; + hasContentEditableState = true; // We don't want to wrap the container only it's children + } // Stop wrapping on br elements if (isEq(nodeName, 'br')) { @@ -13009,7 +15369,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { } // Can we rename the block - if (format.block && !format.wrapper && isTextBlock(nodeName)) { + if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && isTextBlock(nodeName)) { node = dom.rename(node, wrapName); setElementFormat(node); newWrappers.push(node); @@ -13021,6 +15381,11 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if (format.selector) { // Look for matching formats each(formatList, function(format) { + // Check collapsed state if it exists + if ('collapsed' in format && format.collapsed !== isCollapsed) { + return; + } + if (dom.is(node, format.selector) && !isCaretNode(node)) { setElementFormat(node, format); found = true; @@ -13035,22 +15400,30 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { } // Is it valid to wrap this item - if (isValid(wrapName, nodeName) && isValid(parentName, wrapName)) { + if (contentEditable && !hasContentEditableState && isValid(wrapName, nodeName) && isValid(parentName, wrapName) && + !(!node_specific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node)) { // Start wrapping if (!currentWrapElm) { // Wrap the node - currentWrapElm = wrapElm.cloneNode(FALSE); + currentWrapElm = dom.clone(wrapElm, FALSE); node.parentNode.insertBefore(currentWrapElm, node); newWrappers.push(currentWrapElm); } currentWrapElm.appendChild(node); + } else if (nodeName == 'li' && bookmark) { + // Start wrapping - if we are in a list node and have a bookmark, then we will always begin by wrapping in a new element. + currentWrapElm = applyStyleToList(node, bookmark, wrapElm, newWrappers, process); } else { // Start a new wrapper for possible children currentWrapElm = 0; - + each(tinymce.grep(node.childNodes), process); + if (hasContentEditableState) { + contentEditable = lastContentEditable; // Restore last contentEditable state from stack + } + // End the last wrapper currentWrapElm = 0; } @@ -13060,7 +15433,32 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { each(nodes, process); }); + // Wrap links inside as well, for example color inside a link when the wrapper is around the link + if (format.wrap_links === false) { + each(newWrappers, function(node) { + function process(node) { + var i, currentWrapElm, children; + + if (node.nodeName === 'A') { + currentWrapElm = dom.clone(wrapElm, FALSE); + newWrappers.push(currentWrapElm); + + children = tinymce.grep(node.childNodes); + for (i = 0; i < children.length; i++) + currentWrapElm.appendChild(children[i]); + + node.appendChild(currentWrapElm); + } + + each(tinymce.grep(node.childNodes), process); + }; + + process(node); + }); + } + // Cleanup + each(newWrappers, function(node) { var childCount; @@ -13087,7 +15485,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // If child was found and of the same type as the current node if (child && matchName(child, format)) { - clone = child.cloneNode(FALSE); + clone = dom.clone(child, FALSE); setElementFormat(clone); dom.replace(clone, node, TRUE); @@ -13099,8 +15497,9 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { childCount = getChildCount(node); - // Remove empty nodes - if (childCount === 0) { + // Remove empty nodes but only if there is multiple wrappers and they are not block + // elements so never remove single

    since that would remove the currrent empty block element where the caret is at + if ((newWrappers.length > 1 || !isBlock(node)) && childCount === 0) { dom.remove(node, 1); return; } @@ -13116,6 +15515,19 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // this: text // will become: text each(dom.select(format.inline, node), function(child) { + var parent; + + // When wrap_links is set to false we don't want + // to remove the format on children within links + if (format.wrap_links === false) { + parent = child.parentNode; + + do { + if (parent.nodeName === 'A') + return; + } while (parent = parent.parentNode); + } + removeFormat(format, vars, child, format.exact ? child : null); }); }); @@ -13139,7 +15551,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { } // Merge next and previous siblings if they are similar texttext becomes texttext - if (node) { + if (node && format.merge_siblings !== false) { node = mergeSiblings(getNonWhiteSpaceSibling(node), node); node = mergeSiblings(node, getNonWhiteSpaceSibling(node, TRUE)); } @@ -13149,20 +15561,38 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if (format) { if (node) { - rng = dom.createRng(); - - rng.setStartBefore(node); - rng.setEndAfter(node); - - applyRngStyle(expandRng(rng, formatList)); + if (node.nodeType) { + rng = dom.createRng(); + rng.setStartBefore(node); + rng.setEndAfter(node); + applyRngStyle(expandRng(rng, formatList), null, true); + } else { + applyRngStyle(node, null, true); + } } else { - if (!selection.isCollapsed() || !format.inline) { + if (!isCollapsed || !format.inline || dom.select('td.mceSelected,th.mceSelected').length) { + // Obtain selection node before selection is unselected by applyRngStyle() + var curSelNode = ed.selection.getNode(); + + // If the formats have a default block and we can't find a parent block then start wrapping it with a DIV this is for forced_root_blocks: false + // It's kind of a hack but people should be using the default block type P since all desktop editors work that way + if (!forcedRootBlock && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) { + apply(formatList[0].defaultBlock); + } + // Apply formatting to selection + ed.selection.setRng(adjustSelectionToVisibleSelection()); bookmark = selection.getBookmark(); - applyRngStyle(expandRng(selection.getRng(TRUE), formatList)); + applyRngStyle(expandRng(selection.getRng(TRUE), formatList), bookmark); + + // Colored nodes should be underlined so that the color of the underline matches the text color. + if (format.styles && (format.styles.color || format.styles.textDecoration)) { + tinymce.walk(curSelNode, processUnderlineAndColor, 'childNodes'); + processUnderlineAndColor(curSelNode); + } selection.moveToBookmark(bookmark); - selection.setRng(moveStart(selection.getRng(TRUE))); + moveStart(selection.getRng(TRUE)); ed.nodeChanged(); } else performCaretAction('apply', name, vars); @@ -13171,25 +15601,40 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }; function remove(name, vars, node) { - var formatList = get(name), format = formatList[0], bookmark, i, rng; + var formatList = get(name), format = formatList[0], bookmark, i, rng, contentEditable = true; // Merges the styles for each node function process(node) { - var children, i, l; + var children, i, l, localContentEditable, lastContentEditable, hasContentEditableState; + + // Node has a contentEditable value + if (node.nodeType === 1 && getContentEditable(node)) { + lastContentEditable = contentEditable; + contentEditable = getContentEditable(node) === "true"; + hasContentEditableState = true; // We don't want to wrap the container only it's children + } // Grab the children first since the nodelist might be changed children = tinymce.grep(node.childNodes); // Process current node - for (i = 0, l = formatList.length; i < l; i++) { - if (removeFormat(formatList[i], vars, node, node)) - break; + if (contentEditable && !hasContentEditableState) { + for (i = 0, l = formatList.length; i < l; i++) { + if (removeFormat(formatList[i], vars, node, node)) + break; + } } // Process the children if (format.deep) { - for (i = 0, l = children.length; i < l; i++) - process(children[i]); + if (children.length) { + for (i = 0, l = children.length; i < l; i++) + process(children[i]); + + if (hasContentEditableState) { + contentEditable = lastContentEditable; // Restore last contentEditable state from stack + } + } } }; @@ -13220,7 +15665,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { formatRootParent = format_root.parentNode; for (parent = container.parentNode; parent && parent != formatRootParent; parent = parent.parentNode) { - clone = parent.cloneNode(FALSE); + clone = dom.clone(parent, FALSE); for (i = 0; i < formatList.length; i++) { if (removeFormat(formatList[i], vars, clone, clone)) { @@ -13285,8 +15730,8 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if (startContainer != endContainer) { // Wrap start/end nodes in span element since these might be cloned/moved - startContainer = wrap(startContainer, 'span', {id : '_start', _mce_type : 'bookmark'}); - endContainer = wrap(endContainer, 'span', {id : '_end', _mce_type : 'bookmark'}); + startContainer = wrap(startContainer, 'span', {id : '_start', 'data-mce-type' : 'bookmark'}); + endContainer = wrap(endContainer, 'span', {id : '_end', 'data-mce-type' : 'bookmark'}); // Split start/end splitToFormatRoot(startContainer); @@ -13309,30 +15754,56 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { rangeUtils.walk(rng, function(nodes) { each(nodes, function(node) { process(node); + + // Remove parent span if it only contains text-decoration: underline, yet a parent node is also underlined. + if (node.nodeType === 1 && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && getTextDecoration(node.parentNode) === 'underline') { + removeFormat({'deep': false, 'exact': true, 'inline': 'span', 'styles': {'textDecoration' : 'underline'}}, null, node); + } }); }); }; // Handle node if (node) { - rng = dom.createRng(); - rng.setStartBefore(node); - rng.setEndAfter(node); - removeRngStyle(rng); + if (node.nodeType) { + rng = dom.createRng(); + rng.setStartBefore(node); + rng.setEndAfter(node); + removeRngStyle(rng); + } else { + removeRngStyle(node); + } + return; } - if (!selection.isCollapsed() || !format.inline) { + if (!selection.isCollapsed() || !format.inline || dom.select('td.mceSelected,th.mceSelected').length) { bookmark = selection.getBookmark(); removeRngStyle(selection.getRng(TRUE)); selection.moveToBookmark(bookmark); + + // Check if start element still has formatting then we are at: "text|text" and need to move the start into the next text node + if (format.inline && match(name, vars, selection.getStart())) { + moveStart(selection.getRng(true)); + } + ed.nodeChanged(); } else performCaretAction('remove', name, vars); + + // Removed this logic since it breaks unit tests and produces empty caret elements since they will be destroyed in the cleanup process + // Also there must be a better way to rerender a table and I couldn't reproduce the case causing this might be some old WebKit + /* + // When you remove formatting from a table cell in WebKit (cell, not the contents of a cell) there is a rendering issue with column width + if (tinymce.isWebKit) { + ed.execCommand('mceCleanup'); + }*/ }; function toggle(name, vars, node) { - if (match(name, vars, node)) + var fmt = get(name); + + if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0]['toggle'])) remove(name, vars, node); else apply(name, vars, node); @@ -13344,6 +15815,11 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { function matchItems(node, format, item_name) { var key, value, items = format[item_name], i; + // Custom match + if (format.onmatch) { + return format.onmatch(node, format, item_name); + } + // Check all items if (items) { // Non indexed object @@ -13396,7 +15872,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }; function match(name, vars, node) { - var startNode, i; + var startNode; function matchParents(node) { // Find first node with similar format settings @@ -13412,21 +15888,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if (node) return matchParents(node); - // Check pending formats - if (selection.isCollapsed()) { - for (i = pendingFormats.apply.length - 1; i >= 0; i--) { - if (pendingFormats.apply[i].name == name) - return true; - } - - for (i = pendingFormats.remove.length - 1; i >= 0; i--) { - if (pendingFormats.remove[i].name == name) - return false; - } - - return matchParents(selection.getNode()); - } - // Check selected node node = selection.getNode(); if (matchParents(node)) @@ -13445,33 +15906,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { function matchAll(names, vars) { var startElement, matchedFormatNames = [], checkedMap = {}, i, ni, name; - // If the selection is collapsed then check pending formats - if (selection.isCollapsed()) { - for (ni = 0; ni < names.length; ni++) { - // If the name is to be removed, then stop it from being added - for (i = pendingFormats.remove.length - 1; i >= 0; i--) { - name = names[ni]; - - if (pendingFormats.remove[i].name == name) { - checkedMap[name] = true; - break; - } - } - } - - // If the format is to be applied - for (i = pendingFormats.apply.length - 1; i >= 0; i--) { - for (ni = 0; ni < names.length; ni++) { - name = names[ni]; - - if (!checkedMap[name] && pendingFormats.apply[i].name == name) { - checkedMap[name] = true; - matchedFormatNames.push(name); - } - } - } - } - // Check start of selection for formats startElement = selection.getStart(); dom.getParent(startElement, function(node) { @@ -13580,7 +16014,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }; function isWhiteSpaceNode(node) { - return node && node.nodeType === 3 && /^([\s\r\n]+|)$/.test(node.nodeValue); + return node && node.nodeType === 3 && /^([\t \r\n]+|)$/.test(node.nodeValue); }; function wrap(node, name, attrs) { @@ -13593,39 +16027,64 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }; function expandRng(rng, format, remove) { - var startContainer = rng.startContainer, + var sibling, lastIdx, leaf, + startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, - endOffset = rng.endOffset, sibling, lastIdx; + endOffset = rng.endOffset, sibling, lastIdx, leaf, endPoint; // This function walks up the tree if there is no siblings before/after the node - function findParentContainer(container, child_name, sibling_name, root) { - var parent, child; - - root = root || dom.getRoot(); + function findParentContainer(start) { + var container, parent, child, sibling, siblingName; - for (;;) { - // Check if we can move up are we at root level or body level - parent = container.parentNode; + container = parent = start ? startContainer : endContainer; + siblingName = start ? 'previousSibling' : 'nextSibling'; + root = dom.getRoot(); - // Stop expanding on block elements or root depending on format - if (parent == root || (!format[0].block_expand && isBlock(parent))) + // If it's a text node and the offset is inside the text + if (container.nodeType == 3 && !isWhiteSpaceNode(container)) { + if (start ? startOffset > 0 : endOffset < container.nodeValue.length) { return container; + } + } - for (sibling = parent[child_name]; sibling && sibling != container; sibling = sibling[sibling_name]) { - if (sibling.nodeType == 1 && !isBookmarkNode(sibling)) - return container; + for (;;) { + // Stop expanding on block elements + if (!format[0].block_expand && isBlock(parent)) + return parent; + + // Walk left/right + for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) { + if (!isBookmarkNode(sibling) && !isWhiteSpaceNode(sibling)) { + return parent; + } + } - if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling)) - return container; + // Check if we can move up are we at root level or body level + if (parent.parentNode == root) { + container = parent; + break; } - container = container.parentNode; + parent = parent.parentNode; } return container; }; + // This function walks down the tree to find the leaf at the selection. + // The offset is also returned as if node initially a leaf, the offset may be in the middle of the text node. + function findLeaf(node, offset) { + if (offset === undefined) + offset = node.nodeType === 3 ? node.length : node.childNodes.length; + while (node && node.hasChildNodes()) { + node = node.childNodes[offset]; + if (node) + offset = node.nodeType === 3 ? node.length : node.childNodes.length; + } + return { node: node, offset: offset }; + } + // If index based start position then resolve it if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) { lastIdx = startContainer.childNodes.length - 1; @@ -13644,32 +16103,161 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { endOffset = endContainer.nodeValue.length; } - // Exclude bookmark nodes if possible - if (isBookmarkNode(startContainer.parentNode)) - startContainer = startContainer.parentNode; + // Expands the node to the closes contentEditable false element if it exists + function findParentContentEditable(node) { + var parent = node; + + while (parent) { + if (parent.nodeType === 1 && getContentEditable(parent)) { + return getContentEditable(parent) === "false" ? parent : node; + } + + parent = parent.parentNode; + } + + return node; + }; - if (isBookmarkNode(startContainer)) + // Expand to closest contentEditable element + startContainer = findParentContentEditable(startContainer); + endContainer = findParentContentEditable(endContainer); + + // Exclude bookmark nodes if possible + if (isBookmarkNode(startContainer.parentNode) || isBookmarkNode(startContainer)) { + startContainer = isBookmarkNode(startContainer) ? startContainer : startContainer.parentNode; startContainer = startContainer.nextSibling || startContainer; - if (isBookmarkNode(endContainer.parentNode)) - endContainer = endContainer.parentNode; + if (startContainer.nodeType == 3) + startOffset = 0; + } - if (isBookmarkNode(endContainer)) + if (isBookmarkNode(endContainer.parentNode) || isBookmarkNode(endContainer)) { + endContainer = isBookmarkNode(endContainer) ? endContainer : endContainer.parentNode; endContainer = endContainer.previousSibling || endContainer; + if (endContainer.nodeType == 3) + endOffset = endContainer.length; + } + + if (format[0].inline) { + if (rng.collapsed) { + function findWordEndPoint(container, offset, start) { + var walker, node, pos, lastTextNode; + + function findSpace(node, offset) { + var pos, pos2, str = node.nodeValue; + + if (typeof(offset) == "undefined") { + offset = start ? str.length : 0; + } + + if (start) { + pos = str.lastIndexOf(' ', offset); + pos2 = str.lastIndexOf('\u00a0', offset); + pos = pos > pos2 ? pos : pos2; + + // Include the space on remove to avoid tag soup + if (pos !== -1 && !remove) { + pos++; + } + } else { + pos = str.indexOf(' ', offset); + pos2 = str.indexOf('\u00a0', offset); + pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2; + } + + return pos; + }; + + if (container.nodeType === 3) { + pos = findSpace(container, offset); + + if (pos !== -1) { + return {container : container, offset : pos}; + } + + lastTextNode = container; + } + + // Walk the nodes inside the block + walker = new TreeWalker(container, dom.getParent(container, isBlock) || ed.getBody()); + while (node = walker[start ? 'prev' : 'next']()) { + if (node.nodeType === 3) { + lastTextNode = node; + pos = findSpace(node); + + if (pos !== -1) { + return {container : node, offset : pos}; + } + } else if (isBlock(node)) { + break; + } + } + + if (lastTextNode) { + if (start) { + offset = 0; + } else { + offset = lastTextNode.length; + } + + return {container: lastTextNode, offset: offset}; + } + } + + // Expand left to closest word boundery + endPoint = findWordEndPoint(startContainer, startOffset, true); + if (endPoint) { + startContainer = endPoint.container; + startOffset = endPoint.offset; + } + + // Expand right to closest word boundery + endPoint = findWordEndPoint(endContainer, endOffset); + if (endPoint) { + endContainer = endPoint.container; + endOffset = endPoint.offset; + } + } + + // Avoid applying formatting to a trailing space. + leaf = findLeaf(endContainer, endOffset); + if (leaf.node) { + while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) + leaf = findLeaf(leaf.node.previousSibling); + + if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 && + leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') { + + if (leaf.offset > 1) { + endContainer = leaf.node; + endContainer.splitText(leaf.offset - 1); + } else if (leaf.node.previousSibling) { + // TODO: Figure out why this is in here + //endContainer = leaf.node.previousSibling; + } + } + } + } + // Move start/end point up the tree if the leaves are sharp and if we are in different containers // Example * becomes !: !

    *texttext*

    ! // This will reduce the number of wrapper elements that needs to be created // Move start point up the tree if (format[0].inline || format[0].block_expand) { - startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling'); - endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling'); + if (!format[0].inline || (startContainer.nodeType != 3 || startOffset === 0)) { + startContainer = findParentContainer(true); + } + + if (!format[0].inline || (endContainer.nodeType != 3 || endOffset === endContainer.nodeValue.length)) { + endContainer = findParentContainer(); + } } // Expand start/end container to matching selector if (format[0].selector && format[0].expand !== FALSE && !format[0].inline) { function findSelectorEndPoint(container, sibling_name) { - var parents, i, y; + var parents, i, y, curFormat; if (container.nodeType == 3 && container.nodeValue.length == 0 && container[sibling_name]) container = container[sibling_name]; @@ -13677,7 +16265,13 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { parents = getParents(container); for (i = 0; i < parents.length; i++) { for (y = 0; y < format.length; y++) { - if (dom.is(parents[i], format[y].selector)) + curFormat = format[y]; + + // If collapsed state is set then skip formats that doesn't match that + if ("collapsed" in curFormat && curFormat.collapsed !== rng.collapsed) + continue; + + if (dom.is(parents[i], curFormat.selector)) return parents[i]; } } @@ -13731,10 +16325,10 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // Non block element then try to expand up the leaf if (format[0].block) { if (!isBlock(startContainer)) - startContainer = findParentContainer(startContainer, 'firstChild', 'nextSibling'); + startContainer = findParentContainer(true); if (!isBlock(endContainer)) - endContainer = findParentContainer(endContainer, 'lastChild', 'previousSibling'); + endContainer = findParentContainer(); } } @@ -13787,7 +16381,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // Remove style attribute if it's empty if (stylesModified && dom.getAttrib(node, 'style') == '') { node.removeAttribute('style'); - node.removeAttribute('_mce_style'); + node.removeAttribute('data-mce-style'); } // Remove attributes @@ -13828,7 +16422,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // Remove mce prefixed attributes if (MCE_ATTR_RE.test(name)) - node.removeAttribute('_mce_' + name); + node.removeAttribute('data-mce-' + name); node.removeAttribute(name); } @@ -13913,7 +16507,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }; function isBookmarkNode(node) { - return node && node.nodeType == 1 && node.getAttribute('_mce_type') == 'bookmark'; + return node && node.nodeType == 1 && node.getAttribute('data-mce-type') == 'bookmark'; }; function mergeSiblings(prev, next) { @@ -13959,184 +16553,394 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { } } - // Check if obj 2 has something obj 1 doesn't have - for (name in obj2) { - // Obj2 has item obj1 doesn't have - if (obj2.hasOwnProperty(name)) - return FALSE; - } + // Check if obj 2 has something obj 1 doesn't have + for (name in obj2) { + // Obj2 has item obj1 doesn't have + if (obj2.hasOwnProperty(name)) + return FALSE; + } + + return TRUE; + }; + + // Attribs are not the same + if (!compareObjects(getAttribs(node1), getAttribs(node2))) + return FALSE; + + // Styles are not the same + if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) + return FALSE; + + return TRUE; + }; + + // Check if next/prev exists and that they are elements + if (prev && next) { + function findElementSibling(node, sibling_name) { + for (sibling = node; sibling; sibling = sibling[sibling_name]) { + if (sibling.nodeType == 3 && sibling.nodeValue.length !== 0) + return node; + + if (sibling.nodeType == 1 && !isBookmarkNode(sibling)) + return sibling; + } + + return node; + }; + + // If previous sibling is empty then jump over it + prev = findElementSibling(prev, 'previousSibling'); + next = findElementSibling(next, 'nextSibling'); + + // Compare next and previous nodes + if (compareElements(prev, next)) { + // Append nodes between + for (sibling = prev.nextSibling; sibling && sibling != next;) { + tmpSibling = sibling; + sibling = sibling.nextSibling; + prev.appendChild(tmpSibling); + } + + // Remove next node + dom.remove(next); + + // Move children into prev node + each(tinymce.grep(next.childNodes), function(node) { + prev.appendChild(node); + }); + + return prev; + } + } + + return next; + }; + + function isTextBlock(name) { + return /^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(name); + }; + + function getContainer(rng, start) { + var container, offset, lastIdx, walker; + + container = rng[start ? 'startContainer' : 'endContainer']; + offset = rng[start ? 'startOffset' : 'endOffset']; + + if (container.nodeType == 1) { + lastIdx = container.childNodes.length - 1; + + if (!start && offset) + offset--; + + container = container.childNodes[offset > lastIdx ? lastIdx : offset]; + } + + // If start text node is excluded then walk to the next node + if (container.nodeType === 3 && start && offset >= container.nodeValue.length) { + container = new TreeWalker(container, ed.getBody()).next() || container; + } + + // If end text node is excluded then walk to the previous node + if (container.nodeType === 3 && !start && offset == 0) { + container = new TreeWalker(container, ed.getBody()).prev() || container; + } + + return container; + }; + + function performCaretAction(type, name, vars) { + var caretContainerId = '_mce_caret', debug = ed.settings.caret_debug; + + // Creates a caret container bogus element + function createCaretContainer(fill) { + var caretContainer = dom.create('span', {id: caretContainerId, 'data-mce-bogus': true, style: debug ? 'color:red' : ''}); + + if (fill) { + caretContainer.appendChild(ed.getDoc().createTextNode(INVISIBLE_CHAR)); + } + + return caretContainer; + }; + + function isCaretContainerEmpty(node, nodes) { + while (node) { + if ((node.nodeType === 3 && node.nodeValue !== INVISIBLE_CHAR) || node.childNodes.length > 1) { + return false; + } + + // Collect nodes + if (nodes && node.nodeType === 1) { + nodes.push(node); + } + + node = node.firstChild; + } + + return true; + }; + + // Returns any parent caret container element + function getParentCaretContainer(node) { + while (node) { + if (node.id === caretContainerId) { + return node; + } + + node = node.parentNode; + } + }; + + // Finds the first text node in the specified node + function findFirstTextNode(node) { + var walker; + + if (node) { + walker = new TreeWalker(node, node); + + for (node = walker.current(); node; node = walker.next()) { + if (node.nodeType === 3) { + return node; + } + } + } + }; + + // Removes the caret container for the specified node or all on the current document + function removeCaretContainer(node, move_caret) { + var child, rng; + + if (!node) { + node = getParentCaretContainer(selection.getStart()); + + if (!node) { + while (node = dom.get(caretContainerId)) { + removeCaretContainer(node, false); + } + } + } else { + rng = selection.getRng(true); + + if (isCaretContainerEmpty(node)) { + if (move_caret !== false) { + rng.setStartBefore(node); + rng.setEndBefore(node); + } + + dom.remove(node); + } else { + child = findFirstTextNode(node); + + if (child.nodeValue.charAt(0) === INVISIBLE_CHAR) { + child = child.deleteData(0, 1); + } + + dom.remove(node, 1); + } + + selection.setRng(rng); + } + }; + + // Applies formatting to the caret postion + function applyCaretFormat() { + var rng, caretContainer, textNode, offset, bookmark, container, text; + + rng = selection.getRng(true); + offset = rng.startOffset; + container = rng.startContainer; + text = container.nodeValue; + + caretContainer = getParentCaretContainer(selection.getStart()); + if (caretContainer) { + textNode = findFirstTextNode(caretContainer); + } + + // Expand to word is caret is in the middle of a text node and the char before/after is a alpha numeric character + if (text && offset > 0 && offset < text.length && /\w/.test(text.charAt(offset)) && /\w/.test(text.charAt(offset - 1))) { + // Get bookmark of caret position + bookmark = selection.getBookmark(); - return TRUE; - }; + // Collapse bookmark range (WebKit) + rng.collapse(true); - // Attribs are not the same - if (!compareObjects(getAttribs(node1), getAttribs(node2))) - return FALSE; + // Expand the range to the closest word and split it at those points + rng = expandRng(rng, get(name)); + rng = rangeUtils.split(rng); - // Styles are not the same - if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) - return FALSE; + // Apply the format to the range + apply(name, vars, rng); - return TRUE; - }; + // Move selection back to caret position + selection.moveToBookmark(bookmark); + } else { + if (!caretContainer || textNode.nodeValue !== INVISIBLE_CHAR) { + caretContainer = createCaretContainer(true); + textNode = caretContainer.firstChild; - // Check if next/prev exists and that they are elements - if (prev && next) { - function findElementSibling(node, sibling_name) { - for (sibling = node; sibling; sibling = sibling[sibling_name]) { - if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling)) - return node; + rng.insertNode(caretContainer); + offset = 1; - if (sibling.nodeType == 1 && !isBookmarkNode(sibling)) - return sibling; + apply(name, vars, caretContainer); + } else { + apply(name, vars, caretContainer); } - return node; - }; + // Move selection to text node + selection.setCursorLocation(textNode, offset); + } + }; - // If previous sibling is empty then jump over it - prev = findElementSibling(prev, 'previousSibling'); - next = findElementSibling(next, 'nextSibling'); + function removeCaretFormat() { + var rng = selection.getRng(true), container, offset, bookmark, + hasContentAfter, node, formatNode, parents = [], i, caretContainer; - // Compare next and previous nodes - if (compareElements(prev, next)) { - // Append nodes between - for (sibling = prev.nextSibling; sibling && sibling != next;) { - tmpSibling = sibling; - sibling = sibling.nextSibling; - prev.appendChild(tmpSibling); + container = rng.startContainer; + offset = rng.startOffset; + node = container; + + if (container.nodeType == 3) { + if (offset != container.nodeValue.length || container.nodeValue === INVISIBLE_CHAR) { + hasContentAfter = true; } - // Remove next node - dom.remove(next); + node = node.parentNode; + } - // Move children into prev node - each(tinymce.grep(next.childNodes), function(node) { - prev.appendChild(node); - }); + while (node) { + if (matchNode(node, name, vars)) { + formatNode = node; + break; + } - return prev; + if (node.nextSibling) { + hasContentAfter = true; + } + + parents.push(node); + node = node.parentNode; } - } - return next; - }; + // Node doesn't have the specified format + if (!formatNode) { + return; + } - function isTextBlock(name) { - return /^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(name); - }; + // Is there contents after the caret then remove the format on the element + if (hasContentAfter) { + // Get bookmark of caret position + bookmark = selection.getBookmark(); - function getContainer(rng, start) { - var container, offset, lastIdx; + // Collapse bookmark range (WebKit) + rng.collapse(true); - container = rng[start ? 'startContainer' : 'endContainer']; - offset = rng[start ? 'startOffset' : 'endOffset']; + // Expand the range to the closest word and split it at those points + rng = expandRng(rng, get(name), true); + rng = rangeUtils.split(rng); - if (container.nodeType == 1) { - lastIdx = container.childNodes.length - 1; + // Remove the format from the range + remove(name, vars, rng); - if (!start && offset) - offset--; + // Move selection back to caret position + selection.moveToBookmark(bookmark); + } else { + caretContainer = createCaretContainer(); - container = container.childNodes[offset > lastIdx ? lastIdx : offset]; - } + node = caretContainer; + for (i = parents.length - 1; i >= 0; i--) { + node.appendChild(dom.clone(parents[i], false)); + node = node.firstChild; + } - return container; - }; + // Insert invisible character into inner most format element + node.appendChild(dom.doc.createTextNode(INVISIBLE_CHAR)); + node = node.firstChild; - function performCaretAction(type, name, vars) { - var i, currentPendingFormats = pendingFormats[type], - otherPendingFormats = pendingFormats[type == 'apply' ? 'remove' : 'apply']; + // Insert caret container after the formated node + dom.insertAfter(caretContainer, formatNode); - function hasPending() { - return pendingFormats.apply.length || pendingFormats.remove.length; + // Move selection to text node + selection.setCursorLocation(node, 1); + } }; - function resetPending() { - pendingFormats.apply = []; - pendingFormats.remove = []; - }; + // Only bind the caret events once + if (!self._hasCaretEvents) { + // Mark current caret container elements as bogus when getting the contents so we don't end up with empty elements + ed.onBeforeGetContent.addToTop(function() { + var nodes = [], i; + + if (isCaretContainerEmpty(getParentCaretContainer(selection.getStart()), nodes)) { + // Mark children + i = nodes.length; + while (i--) { + dom.setAttrib(nodes[i], 'data-mce-bogus', '1'); + } + } + }); - function perform(caret_node) { - // Apply pending formats - each(pendingFormats.apply.reverse(), function(item) { - apply(item.name, item.vars, caret_node); + // Remove caret container on mouse up and on key up + tinymce.each('onMouseUp onKeyUp'.split(' '), function(name) { + ed[name].addToTop(function() { + removeCaretContainer(); + }); }); - // Remove pending formats - each(pendingFormats.remove.reverse(), function(item) { - remove(item.name, item.vars, caret_node); + // Remove caret container on keydown and it's a backspace, enter or left/right arrow keys + ed.onKeyDown.addToTop(function(ed, e) { + var keyCode = e.keyCode; + + if (keyCode == 8 || keyCode == 37 || keyCode == 39) { + removeCaretContainer(getParentCaretContainer(selection.getStart())); + } }); - dom.remove(caret_node, 1); - resetPending(); - }; + self._hasCaretEvents = true; + } - // Check if it already exists then ignore it - for (i = currentPendingFormats.length - 1; i >= 0; i--) { - if (currentPendingFormats[i].name == name) - return; + // Do apply or remove caret format + if (type == "apply") { + applyCaretFormat(); + } else { + removeCaretFormat(); } + }; - currentPendingFormats.push({name : name, vars : vars}); + function moveStart(rng) { + var container = rng.startContainer, + offset = rng.startOffset, + walker, node, nodes, tmpNode; - // Check if it's in the other type, then remove it - for (i = otherPendingFormats.length - 1; i >= 0; i--) { - if (otherPendingFormats[i].name == name) - otherPendingFormats.splice(i, 1); + // Convert text node into index if possible + if (container.nodeType == 3 && offset >= container.nodeValue.length) { + // Get the parent container location and walk from there + container = container.parentNode; + offset = nodeIndex(container) + 1; } - // Pending apply or remove formats - if (hasPending()) { - ed.getDoc().execCommand('FontName', false, 'mceinline'); - pendingFormats.lastRng = selection.getRng(); - - // IE will convert the current word - each(dom.select('font,span'), function(node) { - var bookmark; + // Move startContainer/startOffset in to a suitable node + if (container.nodeType == 1) { + nodes = container.childNodes; + container = nodes[Math.min(offset, nodes.length - 1)]; + walker = new TreeWalker(container, dom.getParent(container, dom.isBlock)); + + // If offset is at end of the parent node walk to the next one + if (offset > nodes.length - 1) + walker.next(); + + for (node = walker.current(); node; node = walker.next()) { + if (node.nodeType == 3 && !isWhiteSpaceNode(node)) { + // IE has a "neat" feature where it moves the start node into the closest element + // we can avoid this by inserting an element before it and then remove it after we set the selection + tmpNode = dom.create('a', null, INVISIBLE_CHAR); + node.parentNode.insertBefore(tmpNode, node); + + // Set selection and remove tmpNode + rng.setStart(node, 0); + selection.setRng(rng); + dom.remove(tmpNode); - if (isCaretNode(node)) { - bookmark = selection.getBookmark(); - perform(node); - selection.moveToBookmark(bookmark); - ed.nodeChanged(); + return; } - }); - - // Only register listeners once if we need to - if (!pendingFormats.isListening && hasPending()) { - pendingFormats.isListening = true; - - each('onKeyDown,onKeyUp,onKeyPress,onMouseUp'.split(','), function(event) { - ed[event].addToTop(function(ed, e) { - // Do we have pending formats and is the selection moved has moved - if (hasPending() && !tinymce.dom.RangeUtils.compareRanges(pendingFormats.lastRng, selection.getRng())) { - each(dom.select('font,span'), function(node) { - var textNode, rng; - - // Look for marker - if (isCaretNode(node)) { - textNode = node.firstChild; - - if (textNode) { - perform(node); - - rng = dom.createRng(); - rng.setStart(textNode, textNode.nodeValue.length); - rng.setEnd(textNode, textNode.nodeValue.length); - selection.setRng(rng); - ed.nodeChanged(); - } else - dom.remove(node); - } - }); - - // Always unbind and clear pending styles on keyup - if (e.type == 'keyup' || e.type == 'mouseup') - resetPending(); - } - }); - }); } } }; @@ -14147,12 +16951,15 @@ tinymce.onAddEditor.add(function(tinymce, ed) { var filters, fontSizes, dom, settings = ed.settings; if (settings.inline_styles) { - fontSizes = tinymce.explode(settings.font_size_style_values); + fontSizes = tinymce.explode(settings.font_size_legacy_values); function replaceWithSpan(node, styles) { - dom.replace(dom.create('span', { - style : styles - }), node, 1); + tinymce.each(styles, function(value, name) { + if (value) + dom.setStyle(node, name, value); + }); + + dom.rename(node, 'span'); }; filters = { @@ -14189,6 +16996,7 @@ tinymce.onAddEditor.add(function(tinymce, ed) { }; ed.onPreProcess.add(convert); + ed.onSetContent.add(convert); ed.onInit.add(function() { ed.selection.onSetContent.add(convert); @@ -14196,3 +17004,393 @@ tinymce.onAddEditor.add(function(tinymce, ed) { } }); +(function(tinymce) { + var TreeWalker = tinymce.dom.TreeWalker; + + tinymce.EnterKey = function(editor) { + var dom = editor.dom, selection = editor.selection, settings = editor.settings, undoManager = editor.undoManager; + + function handleEnterKey(evt) { + var rng = selection.getRng(true), tmpRng, container, offset, parentBlock, newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName; + + // Returns true if the block can be split into two blocks or not + function canSplitBlock(node) { + return node && dom.isBlock(node) && !/^(TD|TH|CAPTION)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position); + }; + + // Moves the caret to a suitable position within the root for example in the first non pure whitespace text node or before an image + function moveToCaretPosition(root) { + var walker, node, rng, y, viewPort, lastNode = root; + + rng = dom.createRng(); + + if (root.hasChildNodes()) { + walker = new TreeWalker(root, root); + + while (node = walker.current()) { + if (node.nodeType == 3) { + rng.setStart(node, 0); + rng.setEnd(node, 0); + break; + } + + if (/^(BR|IMG)$/.test(node.nodeName)) { + rng.setStartBefore(node); + rng.setEndBefore(node); + break; + } + + lastNode = node; + node = walker.next(); + } + + if (!node) { + rng.setStart(lastNode, 0); + rng.setEnd(lastNode, 0); + } + } else { + if (root.nodeName == 'BR') { + rng.setStartAfter(root); + rng.setEndAfter(root); + } else { + rng.setStart(root, 0); + rng.setEnd(root, 0); + } + } + + selection.setRng(rng); + + viewPort = dom.getViewPort(editor.getWin()); + + // scrollIntoView seems to scroll the parent window in most browsers now including FF 3.0b4 so it's time to stop using it and do it our selfs + y = dom.getPos(root).y; + if (y < viewPort.y || y + 25 > viewPort.y + viewPort.h) { + editor.getWin().scrollTo(0, y < viewPort.y ? y : y - viewPort.h + 25); // Needs to be hardcoded to roughly one line of text if a huge text block is broken into two blocks + } + }; + + // Creates a new block element by cloning the current one or creating a new one if the name is specified + // This function will also copy any text formatting from the parent block and add it to the new one + function createNewBlock(name) { + var node = container, block, clonedNode, caretNode; + + block = name ? dom.create(name) : parentBlock.cloneNode(false); + caretNode = block; + + // Clone any parent styles + do { + if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) { + clonedNode = node.cloneNode(false); + dom.setAttrib(clonedNode, 'id', ''); // Remove ID since it needs to be document unique + + if (block.hasChildNodes()) { + clonedNode.appendChild(block.firstChild); + block.appendChild(clonedNode); + } else { + caretNode = clonedNode; + block.appendChild(clonedNode); + } + } + } while (node = node.parentNode); + + // BR is needed in empty blocks on non IE browsers + if (!tinymce.isIE) { + caretNode.innerHTML = '
    '; + } + + return block; + }; + + // Returns true/false if the caret is at the start/end of the parent block element + function isCaretAtStartOrEndOfBlock(start) { + var walker, node; + + // Caret is in the middle of a text node like "a|b" + if (container.nodeType == 3 && (start ? offset > 0 : offset < container.nodeValue.length)) { + return false; + } + + // Walk the DOM and look for text nodes or non empty elements + walker = new TreeWalker(container, parentBlock); + while (node = (start ? walker.prev() : walker.next())) { + if (node.nodeType === 1) { + // Ignore bogus elements + if (node.getAttribute('data-mce-bogus')) { + continue; + } + + // Keep empty elements like + name = node.nodeName.toLowerCase(); + if (name === 'IMG') { + return false; + } + } else if (node.nodeType === 3 && !/^[ \t\r\n]*$/.test(node.nodeValue)) { + return false; + } + } + + return true; + }; + + // Wraps any text nodes or inline elements in the specified forced root block name + function wrapSelfAndSiblingsInDefaultBlock(container, offset) { + var newBlock, parentBlock, startNode, node, next; + + // Not in a block element or in a table cell or caption + parentBlock = dom.getParent(container, dom.isBlock); + if (newBlockName && !evt.shiftKey && (!parentBlock || !canSplitBlock(parentBlock))) { + parentBlock = parentBlock || dom.getRoot(); + + if (!parentBlock.hasChildNodes()) { + newBlock = dom.create(newBlockName); + parentBlock.appendChild(newBlock); + rng.setStart(newBlock, 0); + rng.setEnd(newBlock, 0); + return newBlock; + } + + // Find parent that is the first child of parentBlock + node = container; + while (node.parentNode != parentBlock) { + node = node.parentNode; + } + + // Loop left to find start node start wrapping at + while (node && !dom.isBlock(node)) { + startNode = node; + node = node.previousSibling; + } + + if (startNode) { + newBlock = dom.create(newBlockName); + startNode.parentNode.insertBefore(newBlock, startNode); + + // Start wrapping until we hit a block + node = startNode; + while (node && !dom.isBlock(node)) { + next = node.nextSibling; + newBlock.appendChild(node); + node = next; + } + + // Restore range to it's past location + rng.setStart(container, offset); + rng.setEnd(container, offset); + } + } + + return container; + }; + + // Inserts a block or br before/after or in the middle of a split list of the LI is empty + function handleEmptyListItem() { + function isFirstOrLastLi(first) { + var node = containerBlock[first ? 'firstChild' : 'lastChild']; + + // Find first/last element since there might be whitespace there + while (node) { + if (node.nodeType == 1) { + break; + } + + node = node[first ? 'nextSibling' : 'previousSibling']; + } + + return node === parentBlock; + }; + + newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR'); + + if (isFirstOrLastLi(true) && isFirstOrLastLi()) { + // Is first and last list item then replace the OL/UL with a text block + dom.replace(newBlock, containerBlock); + } else if (isFirstOrLastLi(true)) { + // First LI in list then remove LI and add text block before list + containerBlock.parentNode.insertBefore(newBlock, containerBlock); + } else if (isFirstOrLastLi()) { + // Last LI in list then temove LI and add text block after list + dom.insertAfter(newBlock, containerBlock); + } else { + // Middle LI in list the split the list and insert a text block in the middle + // Extract after fragment and insert it after the current block + tmpRng = rng.cloneRange(); + tmpRng.setStartAfter(parentBlock); + tmpRng.setEndAfter(containerBlock); + fragment = tmpRng.extractContents(); + dom.insertAfter(fragment, containerBlock); + dom.insertAfter(newBlock, containerBlock); + } + + dom.remove(parentBlock); + moveToCaretPosition(newBlock); + undoManager.add(); + }; + + // Walks the parent block to the right and look for BR elements + function hasRightSideBr() { + var walker = new TreeWalker(container, parentBlock), node; + + while (node = walker.current()) { + if (node.nodeName == 'BR') { + return true; + } + + node = walker.next(); + } + } + + // Inserts a BR element if the forced_root_block option is set to false or empty string + function insertBr() { + var brElm, extraBr, documentMode; + + if (container && container.nodeType == 3 && offset >= container.nodeValue.length) { + // Insert extra BR element at the end block elements + if (!tinymce.isIE && !hasRightSideBr()) { + brElm = dom.create('br') + rng.insertNode(brElm); + rng.setStartAfter(brElm); + rng.setEndAfter(brElm); + extraBr = true; + } + } + + brElm = dom.create('br'); + rng.insertNode(brElm); + + // Rendering modes below IE8 doesn't display BR elements in PRE unless we have a \n before it + documentMode = dom.doc.documentMode; + if (tinymce.isIE && parentBlockName == 'PRE' && (!documentMode || documentMode < 8)) { + brElm.parentNode.insertBefore(dom.doc.createTextNode('\r'), brElm); + } + + if (!extraBr) { + rng.setStartAfter(brElm); + rng.setEndAfter(brElm); + } else { + rng.setStartBefore(brElm); + rng.setEndBefore(brElm); + } + + selection.setRng(rng); + undoManager.add(); + }; + + // Trims any linebreaks at the beginning of node user for example when pressing enter in a PRE element + function trimLeadingLineBreaks(node) { + do { + if (node.nodeType === 3) { + node.nodeValue = node.nodeValue.replace(/^[\r\n]+/, ''); + } + + node = node.firstChild; + } while (node); + }; + + // Delete any selected contents + if (!rng.collapsed) { + editor.execCommand('Delete'); + return; + } + + // Event is blocked by some other handler for example the lists plugin + if (evt.isDefaultPrevented()) { + return; + } + + // Setup range items and newBlockName + container = rng.startContainer; + offset = rng.startOffset; + newBlockName = settings.forced_root_block; + newBlockName = newBlockName ? newBlockName.toUpperCase() : ''; + + // Resolve node index + if (container.nodeType == 1 && container.hasChildNodes()) { + container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; + offset = 0; + } + + undoManager.beforeChange(); + + // Wrap the current node and it's sibling in a default block if it's needed. + // for example this
    will become this + container = wrapSelfAndSiblingsInDefaultBlock(container, offset); + + // Find parent block and setup empty block paddings + parentBlock = dom.getParent(container, dom.isBlock); + containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null; + + // Setup block names + parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5 + containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5 + + // Handle enter inside an empty list item + if (parentBlockName == 'LI' && dom.isEmpty(parentBlock)) { + // Let the list plugin or browser handle nested lists for now + if (/^(UL|OL|LI)$/.test(containerBlock.parentNode.nodeName)) { + return false; + } + + handleEmptyListItem(); + return; + } + + // Don't split PRE tags but insert a BR instead easier when writing code samples etc + if (parentBlockName == 'PRE' && settings.br_in_pre !== false) { + if (!evt.shiftKey) { + insertBr(); + return; + } + } else { + // If no root block is configured then insert a BR by default or if the shiftKey is pressed + if ((!newBlockName && !evt.shiftKey && parentBlockName != 'LI') || (newBlockName && evt.shiftKey)) { + insertBr(); + return; + } + } + + // Default block name if it's not configured + newBlockName = newBlockName || 'P'; + + // Insert new block before/after the parent block depending on caret location + if (isCaretAtStartOrEndOfBlock()) { + // If the caret is at the end of a header we produce a P tag after it similar to Word unless we are in a hgroup + if (/^(H[1-6]|PRE)$/.test(parentBlockName) && containerBlockName != 'HGROUP') { + newBlock = createNewBlock(newBlockName); + } else { + newBlock = createNewBlock(); + } + + // Split the current container block element if enter is pressed inside an empty inner block element + if (settings.end_container_on_empty_block && canSplitBlock(containerBlock) && dom.isEmpty(parentBlock)) { + // Split container block for example a BLOCKQUOTE at the current blockParent location for example a P + newBlock = dom.split(containerBlock, parentBlock); + } else { + dom.insertAfter(newBlock, parentBlock); + } + } else if (isCaretAtStartOrEndOfBlock(true)) { + // Insert new block before + newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock); + } else { + // Extract after fragment and insert it after the current block + tmpRng = rng.cloneRange(); + tmpRng.setEndAfter(parentBlock); + fragment = tmpRng.extractContents(); + trimLeadingLineBreaks(fragment); + newBlock = fragment.firstChild; + dom.insertAfter(fragment, parentBlock); + } + + dom.setAttrib(newBlock, 'id', ''); // Remove ID since it needs to be document unique + moveToCaretPosition(newBlock); + undoManager.add(); + } + + editor.onKeyDown.add(function(ed, evt) { + if (evt.keyCode == 13) { + if (handleEnterKey(evt) !== false) { + evt.preventDefault(); + } + } + }); + }; +})(tinymce); diff --git a/library/tinymce/jscripts/tiny_mce/utils/editable_selects.js b/library/tinymce/jscripts/tiny_mce/utils/editable_selects.js old mode 100755 new mode 100644 index fd943c0f8..4b920f3d1 --- a/library/tinymce/jscripts/tiny_mce/utils/editable_selects.js +++ b/library/tinymce/jscripts/tiny_mce/utils/editable_selects.js @@ -16,7 +16,7 @@ var TinyMCE_EditableSelects = { for (i=0; i'; - h += ' '; + if (label = dom.select('label[for=' + target_form_element + ']')[0]) { + label.id = label.id || dom.uniqueId(); + } + + h += ''; + h += ' '; return h; } @@ -67,6 +71,9 @@ function selectByValue(form_obj, field_name, value, add_custom, ignore_case) { if (!form_obj || !form_obj.elements[field_name]) return; + if (!value) + value = ""; + var sel = form_obj.elements[field_name]; var found = false; @@ -171,7 +178,7 @@ function convertHexToRGB(col) { } function trimSize(size) { - return size.replace(/([0-9\.]+)px|(%|in|cm|mm|em|ex|pt|pc)/, '$1$2'); + return size.replace(/([0-9\.]+)(px|%|in|cm|mm|em|ex|pt|pc)/i, '$1$2'); } function getCSSSize(size) { @@ -183,6 +190,9 @@ function getCSSSize(size) { // Add px if (/^[0-9]+$/.test(size)) size += 'px'; + // Sanity check, IE doesn't like broken values + else if (!(/^[0-9\.]+(px|%|in|cm|mm|em|ex|pt|pc)$/i.test(size))) + return ""; return size; } diff --git a/library/tinymce/jscripts/tiny_mce/utils/mctabs.js b/library/tinymce/jscripts/tiny_mce/utils/mctabs.js old mode 100755 new mode 100644 index 825d4c143..458ec86da --- a/library/tinymce/jscripts/tiny_mce/utils/mctabs.js +++ b/library/tinymce/jscripts/tiny_mce/utils/mctabs.js @@ -10,6 +10,7 @@ function MCTabs() { this.settings = []; + this.onChange = tinyMCEPopup.editor.windowManager.createInstance('tinymce.util.Dispatcher'); }; MCTabs.prototype.init = function(settings) { @@ -28,26 +29,62 @@ MCTabs.prototype.getParam = function(name, default_value) { return value; }; -MCTabs.prototype.displayTab = function(tab_id, panel_id) { - var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i; +MCTabs.prototype.showTab =function(tab){ + tab.className = 'current'; + tab.setAttribute("aria-selected", true); + tab.setAttribute("aria-expanded", true); + tab.tabIndex = 0; +}; + +MCTabs.prototype.hideTab =function(tab){ + var t=this; + + tab.className = ''; + tab.setAttribute("aria-selected", false); + tab.setAttribute("aria-expanded", false); + tab.tabIndex = -1; +}; + +MCTabs.prototype.showPanel = function(panel) { + panel.className = 'current'; + panel.setAttribute("aria-hidden", false); +}; + +MCTabs.prototype.hidePanel = function(panel) { + panel.className = 'panel'; + panel.setAttribute("aria-hidden", true); +}; + +MCTabs.prototype.getPanelForTab = function(tabElm) { + return tinyMCEPopup.dom.getAttrib(tabElm, "aria-controls"); +}; + +MCTabs.prototype.displayTab = function(tab_id, panel_id, avoid_focus) { + var panelElm, panelContainerElm, tabElm, tabContainerElm, selectionClass, nodes, i, t = this; + + tabElm = document.getElementById(tab_id); + + if (panel_id === undefined) { + panel_id = t.getPanelForTab(tabElm); + } panelElm= document.getElementById(panel_id); panelContainerElm = panelElm ? panelElm.parentNode : null; - tabElm = document.getElementById(tab_id); tabContainerElm = tabElm ? tabElm.parentNode : null; - selectionClass = this.getParam('selection_class', 'current'); + selectionClass = t.getParam('selection_class', 'current'); if (tabElm && tabContainerElm) { nodes = tabContainerElm.childNodes; // Hide all other tabs for (i = 0; i < nodes.length; i++) { - if (nodes[i].nodeName == "LI") - nodes[i].className = ''; + if (nodes[i].nodeName == "LI") { + t.hideTab(nodes[i]); + } } // Show selected tab - tabElm.className = 'current'; + t.showTab(tabElm); } if (panelElm && panelContainerElm) { @@ -56,11 +93,15 @@ MCTabs.prototype.displayTab = function(tab_id, panel_id) { // Hide all other panels for (i = 0; i < nodes.length; i++) { if (nodes[i].nodeName == "DIV") - nodes[i].className = 'panel'; + t.hidePanel(nodes[i]); + } + + if (!avoid_focus) { + tabElm.focus(); } // Show selected panel - panelElm.className = 'current'; + t.showPanel(panelElm); } }; @@ -73,5 +114,49 @@ MCTabs.prototype.getAnchor = function() { return ""; }; -// Global instance + +//Global instance var mcTabs = new MCTabs(); + +tinyMCEPopup.onInit.add(function() { + var tinymce = tinyMCEPopup.getWin().tinymce, dom = tinyMCEPopup.dom, each = tinymce.each; + + each(dom.select('div.tabs'), function(tabContainerElm) { + var keyNav; + + dom.setAttrib(tabContainerElm, "role", "tablist"); + + var items = tinyMCEPopup.dom.select('li', tabContainerElm); + var action = function(id) { + mcTabs.displayTab(id, mcTabs.getPanelForTab(id)); + mcTabs.onChange.dispatch(id); + }; + + each(items, function(item) { + dom.setAttrib(item, 'role', 'tab'); + dom.bind(item, 'click', function(evt) { + action(item.id); + }); + }); + + dom.bind(dom.getRoot(), 'keydown', function(evt) { + if (evt.keyCode === 9 && evt.ctrlKey && !evt.altKey) { // Tab + keyNav.moveFocus(evt.shiftKey ? -1 : 1); + tinymce.dom.Event.cancel(evt); + } + }); + + each(dom.select('a', tabContainerElm), function(a) { + dom.setAttrib(a, 'tabindex', '-1'); + }); + + keyNav = tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', { + root: tabContainerElm, + items: items, + onAction: action, + actOnFocus: true, + enableLeftRight: true, + enableUpDown: true + }, tinyMCEPopup.dom); + }); +}); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/utils/validate.js b/library/tinymce/jscripts/tiny_mce/utils/validate.js old mode 100755 new mode 100644 index a6fcf9701..27cbfab81 --- a/library/tinymce/jscripts/tiny_mce/utils/validate.js +++ b/library/tinymce/jscripts/tiny_mce/utils/validate.js @@ -32,7 +32,7 @@ var Validator = { }, isSize : function(s) { - return this.test(s, '^[0-9]+(%|in|cm|mm|em|ex|pt|pc|px)?$'); + return this.test(s, '^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)?$'); }, isId : function(s) { @@ -96,8 +96,10 @@ var AutoValidator = { var i, nl, s = this.settings, c = 0; nl = this.tags(f, 'label'); - for (i=0; i Date: Tue, 20 Mar 2012 21:04:09 -0700 Subject: added README to mcefixes to explain what is going on. --- library/mcefixes/README | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 library/mcefixes/README diff --git a/library/mcefixes/README b/library/mcefixes/README new file mode 100644 index 000000000..dca70e1c3 --- /dev/null +++ b/library/mcefixes/README @@ -0,0 +1,4 @@ +In order to make TinyMCE work smoothly with Friendica, the files in this directory are those few files we've changed in TinyMCE. We will attempt to keep them current, but if you decide to upgrade tinymce, it is best to save current copies of the files in question from the active tinymce tree and replace them or merge them after upgrade. + +Except for some simple theming, the primary changes are the advanced theme icon set, which we changed the "html" icon to "[]" to represent BBcode, and major changes have been made to the bbcode plugin. + \ No newline at end of file -- cgit v1.2.3 From cf17606d0f6200296b1e6d67f9ae3fb797e0df69 Mon Sep 17 00:00:00 2001 From: tony baldwin Date: Wed, 21 Mar 2012 01:33:48 -0400 Subject: added Vijay's theme from facepark.in --- library/.slinky.php.swp | Bin 0 -> 16384 bytes view/theme/facepark.tar.gz | Bin 0 -> 112640 bytes view/theme/facepark/border.jpg | Bin 0 -> 342 bytes view/theme/facepark/comment_item.tpl | 32 + view/theme/facepark/contact_template.tpl | 25 + view/theme/facepark/conversation.tpl | 25 + view/theme/facepark/ff-16.jpg | Bin 0 -> 644 bytes view/theme/facepark/file.gif | Bin 0 -> 615 bytes view/theme/facepark/friendika-16.png | Bin 0 -> 699 bytes view/theme/facepark/group_side.tpl | 28 + view/theme/facepark/head.jpg | Bin 0 -> 383 bytes view/theme/facepark/jot.tpl | 84 + view/theme/facepark/lock.cur | Bin 0 -> 4286 bytes view/theme/facepark/login-bg.gif | Bin 0 -> 237 bytes view/theme/facepark/nav.tpl | 68 + view/theme/facepark/nets.tpl | 10 + view/theme/facepark/photo-menu.jpg | Bin 0 -> 459 bytes view/theme/facepark/profile_vcard.tpl | 47 + view/theme/facepark/saved_searches_aside.tpl | 14 + view/theme/facepark/search_item.tpl | 54 + view/theme/facepark/shiny.png | Bin 0 -> 362 bytes view/theme/facepark/style.css | 3066 ++++++++++++++++++++++++++ view/theme/facepark/theme.php | 49 + view/theme/facepark/wall_item.tpl | 77 + view/theme/facepark/wallwall_item.tpl | 82 + 25 files changed, 3661 insertions(+) create mode 100644 library/.slinky.php.swp create mode 100644 view/theme/facepark.tar.gz create mode 100755 view/theme/facepark/border.jpg create mode 100755 view/theme/facepark/comment_item.tpl create mode 100755 view/theme/facepark/contact_template.tpl create mode 100755 view/theme/facepark/conversation.tpl create mode 100755 view/theme/facepark/ff-16.jpg create mode 100644 view/theme/facepark/file.gif create mode 100755 view/theme/facepark/friendika-16.png create mode 100755 view/theme/facepark/group_side.tpl create mode 100755 view/theme/facepark/head.jpg create mode 100755 view/theme/facepark/jot.tpl create mode 100755 view/theme/facepark/lock.cur create mode 100755 view/theme/facepark/login-bg.gif create mode 100755 view/theme/facepark/nav.tpl create mode 100755 view/theme/facepark/nets.tpl create mode 100755 view/theme/facepark/photo-menu.jpg create mode 100755 view/theme/facepark/profile_vcard.tpl create mode 100755 view/theme/facepark/saved_searches_aside.tpl create mode 100755 view/theme/facepark/search_item.tpl create mode 100755 view/theme/facepark/shiny.png create mode 100644 view/theme/facepark/style.css create mode 100755 view/theme/facepark/theme.php create mode 100755 view/theme/facepark/wall_item.tpl create mode 100755 view/theme/facepark/wallwall_item.tpl diff --git a/library/.slinky.php.swp b/library/.slinky.php.swp new file mode 100644 index 000000000..ab043e880 Binary files /dev/null and b/library/.slinky.php.swp differ diff --git a/view/theme/facepark.tar.gz b/view/theme/facepark.tar.gz new file mode 100644 index 000000000..0dca01cfe Binary files /dev/null and b/view/theme/facepark.tar.gz differ diff --git a/view/theme/facepark/border.jpg b/view/theme/facepark/border.jpg new file mode 100755 index 000000000..034a1cb63 Binary files /dev/null and b/view/theme/facepark/border.jpg differ diff --git a/view/theme/facepark/comment_item.tpl b/view/theme/facepark/comment_item.tpl new file mode 100755 index 000000000..3503c3843 --- /dev/null +++ b/view/theme/facepark/comment_item.tpl @@ -0,0 +1,32 @@ +
    +
    + + + + + + + +
    + $mytitle +
    +
    + + {{ if $qcomment }} + {{ for $qcomment as $qc }} + $qc +   + {{ endfor }} + {{ endif }} + +
    + + +
    + + +
    diff --git a/view/theme/facepark/contact_template.tpl b/view/theme/facepark/contact_template.tpl new file mode 100755 index 000000000..48930b48a --- /dev/null +++ b/view/theme/facepark/contact_template.tpl @@ -0,0 +1,25 @@ + +
    +
    +
    + + $contact.name + + {{ if $contact.photo_menu }} + menu +
    +
      + $contact.photo_menu +
    +
    + {{ endif }} +
    + +
    +
    +
    $contact.name
    + +
    +
    diff --git a/view/theme/facepark/conversation.tpl b/view/theme/facepark/conversation.tpl new file mode 100755 index 000000000..43bb1dd47 --- /dev/null +++ b/view/theme/facepark/conversation.tpl @@ -0,0 +1,25 @@ +{{ 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 }} + +{{ if $dropping }} + +
    +{{ endif }} diff --git a/view/theme/facepark/ff-16.jpg b/view/theme/facepark/ff-16.jpg new file mode 100755 index 000000000..3621f5914 Binary files /dev/null and b/view/theme/facepark/ff-16.jpg differ diff --git a/view/theme/facepark/file.gif b/view/theme/facepark/file.gif new file mode 100644 index 000000000..7885b998d Binary files /dev/null and b/view/theme/facepark/file.gif differ diff --git a/view/theme/facepark/friendika-16.png b/view/theme/facepark/friendika-16.png new file mode 100755 index 000000000..1a742ecdc Binary files /dev/null and b/view/theme/facepark/friendika-16.png differ diff --git a/view/theme/facepark/group_side.tpl b/view/theme/facepark/group_side.tpl new file mode 100755 index 000000000..0353b1d2c --- /dev/null +++ b/view/theme/facepark/group_side.tpl @@ -0,0 +1,28 @@ +
    +

    $title

    + + + +
    + + diff --git a/view/theme/facepark/head.jpg b/view/theme/facepark/head.jpg new file mode 100755 index 000000000..6210b76be Binary files /dev/null and b/view/theme/facepark/head.jpg differ diff --git a/view/theme/facepark/jot.tpl b/view/theme/facepark/jot.tpl new file mode 100755 index 000000000..5fe1f954e --- /dev/null +++ b/view/theme/facepark/jot.tpl @@ -0,0 +1,84 @@ + +
    +
    +
     
    +
    +
    +
    + +
    + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    +
    +
    + + +
    + +
    +
    + +
    +
    + +
    + + +
    + $bang +
    + + $preview + +
    + + +
    + $jotplugins +
    + +
    + +
    + + + +
    +
    + $acl +
    +
    $emailcc
    +
    + $jotnets +
    +
    + + +
    + +
    + +
    + {{ if $content }}{{ endif }} diff --git a/view/theme/facepark/lock.cur b/view/theme/facepark/lock.cur new file mode 100755 index 000000000..892c5e851 Binary files /dev/null and b/view/theme/facepark/lock.cur differ diff --git a/view/theme/facepark/login-bg.gif b/view/theme/facepark/login-bg.gif new file mode 100755 index 000000000..cde836c89 Binary files /dev/null and b/view/theme/facepark/login-bg.gif differ diff --git a/view/theme/facepark/nav.tpl b/view/theme/facepark/nav.tpl new file mode 100755 index 000000000..4675c3e5c --- /dev/null +++ b/view/theme/facepark/nav.tpl @@ -0,0 +1,68 @@ + + + diff --git a/view/theme/facepark/nets.tpl b/view/theme/facepark/nets.tpl new file mode 100755 index 000000000..b0cb8890c --- /dev/null +++ b/view/theme/facepark/nets.tpl @@ -0,0 +1,10 @@ +
    +

    $title

    +
    $desc
    + $all +
      + {{ for $nets as $net }} +
    • $net.name
    • + {{ endfor }} +
    +
    diff --git a/view/theme/facepark/photo-menu.jpg b/view/theme/facepark/photo-menu.jpg new file mode 100755 index 000000000..fde5eb535 Binary files /dev/null and b/view/theme/facepark/photo-menu.jpg differ diff --git a/view/theme/facepark/profile_vcard.tpl b/view/theme/facepark/profile_vcard.tpl new file mode 100755 index 000000000..154f22363 --- /dev/null +++ b/view/theme/facepark/profile_vcard.tpl @@ -0,0 +1,47 @@ +
    + +
    $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/facepark/saved_searches_aside.tpl b/view/theme/facepark/saved_searches_aside.tpl new file mode 100755 index 000000000..e6a0d6278 --- /dev/null +++ b/view/theme/facepark/saved_searches_aside.tpl @@ -0,0 +1,14 @@ +
    + + $searchbox + +
      + {{ for $saved as $search }} +
    • + + $search.term +
    • + {{ endfor }} +
    +
    +
    diff --git a/view/theme/facepark/search_item.tpl b/view/theme/facepark/search_item.tpl new file mode 100755 index 000000000..bfad1b7b7 --- /dev/null +++ b/view/theme/facepark/search_item.tpl @@ -0,0 +1,54 @@ +
    +
    +
    +
    + + $item.name + menu +
    +
      + $item.item_photo_menu +
    +
    +
    +
    +
    + {{ if $item.lock }}
    $item.lock
    + {{ else }}
    {{ endif }} +
    $item.location
    +
    +
    +
    + $item.name +
    $item.ago
    + +
    +
    +
    $item.title
    +
    +
    $item.body
    +
    +
    +
    + {{ if $item.drop.dropping }}{{ endif }} +
    + {{ if $item.drop.dropping }}{{ endif }} +
    +
    +
    +
    + + +
    + {{ if $item.conv }} + $item.conv.title + {{ endif }} +
    + +
    + +
    + + diff --git a/view/theme/facepark/shiny.png b/view/theme/facepark/shiny.png new file mode 100755 index 000000000..994c0d05d Binary files /dev/null and b/view/theme/facepark/shiny.png differ diff --git a/view/theme/facepark/style.css b/view/theme/facepark/style.css new file mode 100644 index 000000000..6680a6434 --- /dev/null +++ b/view/theme/facepark/style.css @@ -0,0 +1,3066 @@ +/** + * duepuntozero Frindika style + * Fabio Comuni + */ + + +/* generals */ +body { + font-family: helvetica,arial,freesans,clean,sans-serif; + font-size: 12px; + background-color: #ffffff; + /*background-image: url(head.jpg);*/ + background-repeat: repeat-x; + color: #000000; + margin: 0px; +} + + +a, a:visited, a:link { color: #0B4E7A; text-decoration: none; } +a:hover {text-decoration: underline; } + +input { + /*border: 1px solid #666666;*/ + /*-moz-border-radius: 3px;*/ + border-radius: 3px; + padding: 3px; + background-color: #0B4E7A; + color: #ffffff; + font-size: 12px; + font-weight: bold; +} + +img { border :1px; } + +#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 { + 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%; +} + + + +/* nav */ +nav { + height: 94px; + display: block; + margin: 0px 10%; + border-bottom: 1px solid #0B4E7A; +} +nav #site-location { + color: ##0B4E7A; + font-size:12px; + position: absolute; + font-weight: bold; + +} + +.error-message { + color: #245f6e; + font-size: 1.1em; + /*border: 1px solid #245f6e;*/ + background-color: #FFFFFF; + padding: 10px; + font-weight: bold; +} + +.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: #0B4E7A; + +} +nav #banner #logo-text a:hover { text-decoration: none; } + + +.nav-commlink, .nav-login-link { + display: block; + height: 15px; + margin-top: 67px; + margin-right: 2px; + padding: 6px 10px; + float: left; + bottom: 140px; + border: 1px solid #0B4E7A; + border-bottom: 0px; + background-color: #FFFFFF; + /*font-weight: bold;*/ + color: #FFFFFF; + -moz-border-radius: 3px 3px 0px 0px; + border-radius: 3px 3px 0px 0px; +} +nav .nav-link { + float: right; + margin: 0.2em 0em; + padding: 0em 0.5em; + background-color: transparent !important; +} + +.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 { + /*font-size: 0.8em;*/ + font-size:12px ; + font-weight: bold; + float: left; + margin-top: 62px; +} + + +nav #nav-link-wrapper .nav-link { + border-right: 1px solid #babdb6; +} + +/* aside */ +aside { + display: block; + min-height: 112px; + width: 200px; + margin-left: 10%; + padding: 1em; + float: left; + background-image: url(border.jpg); + background-position: top left; + background-repeat: no-repeat; + position: absolute; +} + +#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; +} + +/* section */ +section { + margin: 0px 10%; + padding-top: 1em; + padding-left: 250px; + padding-right: 1em; + display: block; + background-color: #FFFFFF; + background-image: url(border.jpg); + background-position: top right; + background-repeat: no-repeat; + min-height: 112px; + +} +.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; +} +.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; +} + +/* 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 { + 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-title:-moz-placeholder{font-weight: normal;} + + +#jot-title:hover, +#jot-title: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 { + 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; */ + -moz-box-shadow:inset 0px 1px 0px 0px #ffffff; + -webkit-box-shadow:inset 0px 1px 0px 0px #ffffff; + box-shadow:inset 0px 1px 0px 0px #ffffff; + background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #0b4e7a), color-stop(1, #165db3) ); + background:-moz-linear-gradient( center top, #0b4e7a 5%, #165db3 100% ); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0b4e7a', endColorstr='#165db3'); + background-color:#0b4e7a; + border:3px solid #f2eff2; + display:inline-block; + color:#ffffff; + font-family:arial; + font-size:14px; + font-weight:bold; + padding:4px 11px; + text-decoration:none; + text-shadow:0px 0px 0px #ffffff; + +} + + +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; +} + +#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 { + 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; +} + + +#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 { + 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-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; +} + + + + + +#gender-select, #marital-select, #sexual-select { + width: 220px; +} + +#profile-edit-profile-name-wrapper .required { + color: #FF0000; + float: left; +} + +#contacts-main { + margin-top: 20px; + margin-bottom: 20px; +} + +.contact-entry-wrapper { + float: left; + width: 120px; + height: 120px; +} +#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; + width: 120px; + overflow: hidden; +} +.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: 10px; + /*border: 1px solid #CCC;*/ + position: relative; + -moz-border-radius: 3px; + /*border-radius: 3px; */ + +} + +.wall-item-content-wrapper.comment { + margin-left: 0px; + background: #ededed; +} + +.wall-item-info { + display: block; + float: left; + width:110px; + margin-right:10px; +} +.comment .wall-item-info { + width: 70px; +} + +.wall-item-photo-wrapper { + margin-top: 10px; + margin-left: 10px; + 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: 74px; left:10px; + 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; + 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;} +.comment .wall-item-photo-menu { top: 60px; } + +.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 { + /*float: left; + margin-right: 5px; + width: 250px;*/ + margin-left:10px; +} +.wall-item-lock { + /*height: 20px;*/ + /*margin-top: 10px;*/ + 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; +} + + +.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 { + /*float: left;*/ + /*width: 450px;*/ + margin-left: 10px; + /*margin-bottom: 20px;*/ + /*padding: 20px;*/ + max-height: 400px; + overflow: auto; +} + +.wall-item-title { + float: left; + font-weight: bold; + /*width: 450px;*/ +} + +.wall-item-title-end { + clear: both; +} + +.wall-item-body { + float: left; + /*width: 450px;*/ + margin-top: 10px; +} + +.wall-item-tools { + /*clear: both;*/ + /*background-image: url("head.jpg");*/ + /*background-position: 0 -20px;*/ + /*background-repeat: repeat-x;*/ + padding: 5px 10px 0px; +} +.wall-item-author { + margin-top: 10px; +} + +.comment .wall-item-tools { + background:none; +} + +.comment-edit-wrapper { + margin-top: 15px; + background: #f3f3f3; + margin-left: 50px; +} + +.comment-wwedit-wrapper { + margin-top: 5px; + background: #ededed; + /*margin-left: 50px;*/ +} + +.comment-edit-photo { + margin-top: 10px; + margin-left: 10px; + margin-bottom: 10px; + width: 100px; + 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-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: 30px; +} +#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 { + 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; + overflow: auto; +} + +#directory-search-wrapper { + margin-top: 20px; + margin-right: 20px; + margin-bottom: 50px; +} + +#directory-search-end { +} + +.directory-photo-img { + border: none; +} + + +.pager { + padding: 10px; + text-align: center; + font-size: 1.0em; +} + + +.pager_first, +.pager_last, +.pager_prev, +.pager_next, +.pager_n { + border: 1px solid black; + background: #EEE; + padding: 4px; +} + +.pager_first a, +.pager_last a, +.pager_prev a, +.pager_next a, +.pager_n a { + text-decoration: none; +} + +.pager_current { + border: 1px solid black; + background: #FFCCCC; + padding: 4px; +} + + +#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 { + 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; +} + + + +#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 **/ + + +.comment-edit-text-empty { + /*color: black;*/ + height: 30px; + width: 300px; + overflow: auto; + margin-bottom: 10px; +} + +.comment-edit-text-full { + color: black; + height: 150px; + width: 350px; + overflow: auto; +} + +#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 { + list-style-type: none; +} + +.nets-ul li { + margin-top: 10px; +} + +.nets-link { + margin-left: 24px; +} +.nets-all { + margin-left: 42px; +} + +#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; +} + +.photo-album-image-wrapper { + float: left; + margin-top: 15px; + margin-right: 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; +} + +.photo-top-image-wrapper { + position: relative; + float: left; + margin-top: 15px; + margin-right: 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; + 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 { + float: left; + width: 150px; +} + +#photo-edit-perms-end { + margin-bottom: 15px; +} + +#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname { + 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 { + clear: both; +} + +#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; +} + +.vevent { + border: 1px solid #CCCCCC; +} +.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 { + opacity: 0.5; + filter:alpha(opacity=50); +} + +.body-tag: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;} +.block { background-position: -32px 0px;} +.drop { background-position: -48px 0px;} +.drophide { background-position: -64px 0px;} +.edit { background-position: -80px 0px;} +.camera { background-position: -96px 0px;} +.dislike { background-position: -112px 0px;} +.like { background-position: -128px 0px;} +.link { background-position: -144px 0px;} + +.globe { background-position: 0px -16px;} +.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;} +.recycle { background-position: -112px -16px;} +.remote-link { background-position: -128px -16px;} +.share { background-position: -144px -16px;} + +.tools { background-position: 0px -32px;} +.lock { background-position: -16px -32px;} +.unlock { background-position: -32px -32px;} +.video { background-position: -48px -32px;} +.youtube { background-position: -64px -32px;} +.attach { background-position: -80px -32px; } +.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; } +.unstarred { background-position: -32px -48px; } +.tagged { background-position: -48px -48px; } + + +.icon.dim { opacity: 0.3;filter:alpha(opacity=30); } + +.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; +} + +.qcomment { + border: 1px solid #EEE; + padding: 3px; +} + +.qcomment { + opacity: 0; + filter:alpha(opacity=0); +} +.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.menu-popup { + position: absolute; + display: none; + width: 10em; + margin: 0px; + padding: 0px; + list-style: none; + z-index: 100000; + top: 90px; + left: 400px; +} +#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 #888; +} +#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; +} diff --git a/view/theme/facepark/theme.php b/view/theme/facepark/theme.php new file mode 100755 index 000000000..701fb1349 --- /dev/null +++ b/view/theme/facepark/theme.php @@ -0,0 +1,49 @@ +theme_info = array(); + +$a->page['htmlhead'] .= <<< EOT + +EOT; diff --git a/view/theme/facepark/wall_item.tpl b/view/theme/facepark/wall_item.tpl new file mode 100755 index 000000000..2c88fc598 --- /dev/null +++ b/view/theme/facepark/wall_item.tpl @@ -0,0 +1,77 @@ +
    +
    +
    +
    + + $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.drop.dropping }}{{ endif }} +
    + {{ if $item.drop.dropping }}{{ endif }} +
    +
    +
    +
    + +
    $item.dislike
    +
    + $item.comment +
    + +
    +
    diff --git a/view/theme/facepark/wallwall_item.tpl b/view/theme/facepark/wallwall_item.tpl new file mode 100755 index 000000000..211906c93 --- /dev/null +++ b/view/theme/facepark/wallwall_item.tpl @@ -0,0 +1,82 @@ +
    +
    +
    +
    + + $item.owner_name +
    +
    $item.wall
    +
    + + $item.name + menu +
    +
      + $item.item_photo_menu +
    +
    + +
    +
    +
    + {{ if $item.lock }}
    $item.lock
    + {{ else }}
    {{ endif }} +
    $item.location
    +
    +
    +
    + $item.name $item.to $item.owner_name $item.vwall
    +
    $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.drop.dropping }}{{ endif }} +
    + {{ if $item.drop.dropping }}{{ endif }} +
    +
    +
    +
    + +
    $item.dislike
    +
    +
    + $item.comment +
    + +
    +
    + -- cgit v1.2.3 From 4d39b0658f0319aeea659e03db4bad3e77325901 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 20 Mar 2012 22:53:19 -0700 Subject: use password field for DB input --- view/install_db.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/install_db.tpl b/view/install_db.tpl index 7e2acdca5..1302b5a70 100755 --- a/view/install_db.tpl +++ b/view/install_db.tpl @@ -20,7 +20,7 @@ $info_03 {{ inc field_input.tpl with $field=$dbhost }}{{endinc}} {{ inc field_input.tpl with $field=$dbuser }}{{endinc}} -{{ inc field_input.tpl with $field=$dbpass }}{{endinc}} +{{ inc field_password.tpl with $field=$dbpass }}{{endinc}} {{ inc field_input.tpl with $field=$dbdata }}{{endinc}} -- cgit v1.2.3 From 0dc4c3f48426294dde998d46f47aacd1c9a3f370 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 20 Mar 2012 22:54:20 -0700 Subject: add comix theme --- view/theme/comix/search_item.tpl | 54 ++++++++++++++++++ view/theme/comix/style.css | 109 +++++++++++++++++++++++++++++++++++++ view/theme/comix/theme.php | 60 ++++++++++++++++++++ view/theme/comix/wall_item.tpl | 78 ++++++++++++++++++++++++++ view/theme/comix/wallwall_item.tpl | 85 +++++++++++++++++++++++++++++ 5 files changed, 386 insertions(+) create mode 100755 view/theme/comix/search_item.tpl create mode 100755 view/theme/comix/style.css create mode 100755 view/theme/comix/theme.php create mode 100755 view/theme/comix/wall_item.tpl create mode 100755 view/theme/comix/wallwall_item.tpl diff --git a/view/theme/comix/search_item.tpl b/view/theme/comix/search_item.tpl new file mode 100755 index 000000000..dba289031 --- /dev/null +++ b/view/theme/comix/search_item.tpl @@ -0,0 +1,54 @@ +
    +
    +
    +
    + + $item.name + menu +
    +
      + $item.item_photo_menu +
    +
    +
    +
    +
    + {{ if $item.lock }}
    $item.lock
    + {{ else }}
    {{ endif }} +
    $item.location
    +
    +
    +
    + $item.name +
    $item.ago
    + +
    +
    +
    $item.title
    +
    +
    $item.body
    +
    +
    +
    + {{ if $item.drop.dropping }}{{ endif }} +
    + {{ if $item.drop.dropping }}{{ endif }} +
    +
    +
    +
    + + +
    + {{ if $item.conv }} + $item.conv.title + {{ endif }} +
    + +
    + +
    + + diff --git a/view/theme/comix/style.css b/view/theme/comix/style.css new file mode 100755 index 000000000..534e79cf4 --- /dev/null +++ b/view/theme/comix/style.css @@ -0,0 +1,109 @@ +@import url('../duepuntozero/style.css'); + +body { + font-family: "Comic Sans MS", sans !important; + font-size: 13px; +} +.wall-item-content-wrapper { + border: none; +} + +.wall-item-content-wrapper.comment { + background: #ffffff !important; + border-left: 1px solid #EEE; +} + +.wall-item-tools { + background: none; +} + +.comment-edit-text-empty, .comment-edit-text-full { + border: none; + border-left: 1px solid #EEE; + background: #EEEEEE; +} + +.comment-edit-wrapper, .comment-wwedit-wrapper { + background: #ffffff !important; +} + +section { + margin: 0px 32px; +} + +aside { + margin-left: 32px; +} +nav { + margin-left: 32px; + margin-right: 32px; +} + +nav #site-location { + top: 80px; + right: 36px; +} + +.wall-item-photo, .photo, .contact-block-img, .my-comment-photo { + border-radius: 3px; + -moz-border-radius: 3px; + margin-top: 15px; +} + +.wall-item-photo.comment { + margin-top: 26px; +} + + +.triangle-isosceles { + position:relative; + padding:15px; + margin:1em 0 3em; + color:#000; + background:#EEEEEE; /* default background for browsers without gradient support */ + /* css3 */ + background:-webkit-gradient(linear, 0 0, 0 100%, from(#EEEEEE), to(#ffffff)); + background:-moz-linear-gradient(#EEEEEE, #ffffff); + background:-o-linear-gradient(#EEEEEE, #ffffff); + background:linear-gradient(#EEEEEE, #ffffff); + -webkit-border-radius:10px; + -moz-border-radius:10px; + border-radius:10px; +} + +/* Variant : for left/right positioned triangle +------------------------------------------ */ + +.triangle-isosceles.left { + margin-left:30px; + background:#F8F8F8; + border: 2px solid #CCCCCC; +} + +/* THE TRIANGLE +------------------------------------------------------------------------------------------------------------------------------- */ + +/* creates triangle */ +.triangle-isosceles:after { + content:""; + position:absolute; + bottom:-8px; /* value = - border-top-width - border-bottom-width */ + left:30px; /* controls horizontal position */ + border-width:15px 15px 0; /* vary these values to change the angle of the vertex */ + border-style:solid; + border-color:#f8f8f8 transparent; + /* reduce the damage in FF3.0 */ + display:block; + width:0; +} + +/* Variant : left +------------------------------------------ */ + +.triangle-isosceles.left:after { + top:12px; /* controls vertical position */ + left:-30px; /* value = - border-left-width - border-right-width */ + bottom:auto; + border-width:10px 30px 10px 0; + border-color:transparent #f8f8f8; +} diff --git a/view/theme/comix/theme.php b/view/theme/comix/theme.php new file mode 100755 index 000000000..e2f7f4db3 --- /dev/null +++ b/view/theme/comix/theme.php @@ -0,0 +1,60 @@ + + */ + + +$a->theme_info = array( + 'extends' => 'duepuntozero', +); + +$a->page['htmlhead'] .= <<< EOT + +EOT; diff --git a/view/theme/comix/wall_item.tpl b/view/theme/comix/wall_item.tpl new file mode 100755 index 000000000..dae16a1c7 --- /dev/null +++ b/view/theme/comix/wall_item.tpl @@ -0,0 +1,78 @@ +
    +
    +
    +
    + + $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 +
    + +
    +
    diff --git a/view/theme/comix/wallwall_item.tpl b/view/theme/comix/wallwall_item.tpl new file mode 100755 index 000000000..11decf9c4 --- /dev/null +++ b/view/theme/comix/wallwall_item.tpl @@ -0,0 +1,85 @@ +
    +
    +
    +
    + + $item.owner_name +
    +
    $item.wall
    +
    + + $item.name + menu +
    +
      + $item.item_photo_menu +
    +
    + +
    +
    +
    + {{ if $item.lock }}
    $item.lock
    + {{ else }}
    {{ endif }} +
    $item.location
    +
    +
    +
    + $item.name $item.to $item.owner_name $item.vwall
    +
    $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 +
    + +
    +
    + -- cgit v1.2.3 From 6c7b619b34e60f391087c669732b9efd0344d41c Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 20 Mar 2012 23:57:33 -0700 Subject: remove stray template variable from old code --- include/conversation.php | 3 +-- view/jot-header.tpl | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index e9f024c27..5de4fcb51 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -897,8 +897,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { '$audurl' => t("Please enter an audio link/URL:"), '$term' => t('Tag term:'), '$fileas' => t('File as:'), - '$whereareu' => t('Where are you right now?'), - '$title' => t('Enter a title for this item') + '$whereareu' => t('Where are you right now?') )); diff --git a/view/jot-header.tpl b/view/jot-header.tpl index 88df73494..ef760abe0 100755 --- a/view/jot-header.tpl +++ b/view/jot-header.tpl @@ -121,7 +121,6 @@ function enableOnUser(){ +EOT; diff --git a/view/theme/comix-plain/wall_item.tpl b/view/theme/comix-plain/wall_item.tpl new file mode 100755 index 000000000..dae16a1c7 --- /dev/null +++ b/view/theme/comix-plain/wall_item.tpl @@ -0,0 +1,78 @@ +
    +
    +
    +
    + + $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 +
    + +
    +
    diff --git a/view/theme/comix-plain/wallwall_item.tpl b/view/theme/comix-plain/wallwall_item.tpl new file mode 100755 index 000000000..11decf9c4 --- /dev/null +++ b/view/theme/comix-plain/wallwall_item.tpl @@ -0,0 +1,85 @@ +
    +
    +
    +
    + + $item.owner_name +
    +
    $item.wall
    +
    + + $item.name + menu +
    +
      + $item.item_photo_menu +
    +
    + +
    +
    +
    + {{ if $item.lock }}
    $item.lock
    + {{ else }}
    {{ endif }} +
    $item.location
    +
    +
    +
    + $item.name $item.to $item.owner_name $item.vwall
    +
    $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 +
    + +
    +
    + -- cgit v1.2.3 From c1d6ece98e9c0793432d1046033e0b8cb93e63bb Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 21 Mar 2012 14:56:06 -0700 Subject: revert permissions relaxation on community --- mod/community.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mod/community.php b/mod/community.php index cf459617e..f8cc3305b 100755 --- a/mod/community.php +++ b/mod/community.php @@ -50,7 +50,7 @@ function community_content(&$a, $update = 0) { 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 + AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `user`.`hidewall` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 " ); @@ -72,7 +72,7 @@ function community_content(&$a, $update = 0) { 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 + AND `item`.`private` = 0 AND `item`.`wall` = 1 AND `user`.`hidewall` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 ORDER BY `received` DESC LIMIT %d, %d ", intval($a->pager['start']), -- cgit v1.2.3 From 72d0756fa6a6118801ce9623aeacc760cbc93166 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Thu, 22 Mar 2012 04:33:21 +0100 Subject: add icons to aside diabook, fixes in css --- view/theme/diabook-blue/icons/head.jpg | Bin 383 -> 0 bytes view/theme/diabook-blue/photo_album.tpl | 7 ---- view/theme/diabook-blue/photo_top.tpl | 7 ---- view/theme/diabook-blue/style.css | 15 ++++---- view/theme/diabook/icons/com_side.png | Bin 0 -> 680 bytes view/theme/diabook/icons/events.png | Bin 0 -> 663 bytes view/theme/diabook/icons/head.jpg | Bin 383 -> 0 bytes view/theme/diabook/icons/home.png | Bin 0 -> 722 bytes view/theme/diabook/icons/mess_side.png | Bin 0 -> 664 bytes view/theme/diabook/icons/notes.png | Bin 0 -> 739 bytes view/theme/diabook/icons/pubgroups.png | Bin 0 -> 710 bytes view/theme/diabook/profile_side.tpl | 12 +++--- view/theme/diabook/style.css | 66 ++++++++++++++++++++++++-------- view/theme/diabook/theme.php | 4 +- 14 files changed, 65 insertions(+), 46 deletions(-) delete mode 100644 view/theme/diabook-blue/icons/head.jpg delete mode 100755 view/theme/diabook-blue/photo_album.tpl delete mode 100755 view/theme/diabook-blue/photo_top.tpl create mode 100644 view/theme/diabook/icons/com_side.png create mode 100644 view/theme/diabook/icons/events.png delete mode 100644 view/theme/diabook/icons/head.jpg create mode 100644 view/theme/diabook/icons/home.png create mode 100644 view/theme/diabook/icons/mess_side.png create mode 100644 view/theme/diabook/icons/notes.png create mode 100644 view/theme/diabook/icons/pubgroups.png diff --git a/view/theme/diabook-blue/icons/head.jpg b/view/theme/diabook-blue/icons/head.jpg deleted file mode 100644 index 6210b76be..000000000 Binary files a/view/theme/diabook-blue/icons/head.jpg and /dev/null differ diff --git a/view/theme/diabook-blue/photo_album.tpl b/view/theme/diabook-blue/photo_album.tpl deleted file mode 100755 index 7e6c2f666..000000000 --- a/view/theme/diabook-blue/photo_album.tpl +++ /dev/null @@ -1,7 +0,0 @@ - -
    diff --git a/view/theme/diabook-blue/photo_top.tpl b/view/theme/diabook-blue/photo_top.tpl deleted file mode 100755 index 98ac9c457..000000000 --- a/view/theme/diabook-blue/photo_top.tpl +++ /dev/null @@ -1,7 +0,0 @@ - - diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index 738dde0e5..f88c7b954 100644 --- a/view/theme/diabook-blue/style.css +++ b/view/theme/diabook-blue/style.css @@ -2411,21 +2411,22 @@ float: left; -moz-box-shadow: 0 0 5px #888; -webkit-box-shadow: 0 0 5px #888; box-shadow: 0 0 5px #888; - background-color: #EEE; + background-color: #000; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; padding-bottom: 20px; position: relative; margin: 0 10px 10px 0; - overflow: hidden; - float: left; - position: relative; + width: 200px; height: 140px; + overflow: hidden; } .photo-top-album-name { - position: absolute; - bottom: 0; - padding: 0 5px; + width: 100%; + position: absolute; + bottom: 0px; + padding-left: 3px; + background-color: #EEE; } .photo-top-album-link{ color: #1872A2; diff --git a/view/theme/diabook/icons/com_side.png b/view/theme/diabook/icons/com_side.png new file mode 100644 index 000000000..bc5969ef1 Binary files /dev/null and b/view/theme/diabook/icons/com_side.png differ diff --git a/view/theme/diabook/icons/events.png b/view/theme/diabook/icons/events.png new file mode 100644 index 000000000..4a0b3f3f1 Binary files /dev/null and b/view/theme/diabook/icons/events.png differ diff --git a/view/theme/diabook/icons/head.jpg b/view/theme/diabook/icons/head.jpg deleted file mode 100644 index 6210b76be..000000000 Binary files a/view/theme/diabook/icons/head.jpg and /dev/null differ diff --git a/view/theme/diabook/icons/home.png b/view/theme/diabook/icons/home.png new file mode 100644 index 000000000..be47a48fc Binary files /dev/null and b/view/theme/diabook/icons/home.png differ diff --git a/view/theme/diabook/icons/mess_side.png b/view/theme/diabook/icons/mess_side.png new file mode 100644 index 000000000..49ef896bc Binary files /dev/null and b/view/theme/diabook/icons/mess_side.png differ diff --git a/view/theme/diabook/icons/notes.png b/view/theme/diabook/icons/notes.png new file mode 100644 index 000000000..7d4afca90 Binary files /dev/null and b/view/theme/diabook/icons/notes.png differ diff --git a/view/theme/diabook/icons/pubgroups.png b/view/theme/diabook/icons/pubgroups.png new file mode 100644 index 000000000..acf857f32 Binary files /dev/null and b/view/theme/diabook/icons/pubgroups.png differ diff --git a/view/theme/diabook/profile_side.tpl b/view/theme/diabook/profile_side.tpl index 01da55ce1..a65677696 100644 --- a/view/theme/diabook/profile_side.tpl +++ b/view/theme/diabook/profile_side.tpl @@ -7,12 +7,12 @@ diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 437f323fa..ffab5b4c4 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -881,22 +881,47 @@ ul.menu-popup .empty { text-decoration: none; } .menu-profile-side{ - list-style: none; - padding-left: 16px; - min-height: 16px; + list-style: none; + padding-left: 0px; + min-height: 0px; } .menu-profile-list{ height: auto; overflow: auto; padding-top: 3px; padding-bottom: 3px; + padding-left: 16px; + min-height: 16px; + list-style: none; } .menu-profile-list:hover{ background: #EEE; } +.menu-profile-list-item{ + padding-left: 5px; + } .menu-profile-list-item:hover{ - text-decoration: none; + text-decoration: none; } +/*http://prothemedesign.com/circular-icons/*/ +.menu-profile-list.home{ + background: url("../../../view/theme/diabook-blue/icons/home.png") no-repeat; + } +.menu-profile-list.photos{ + background: url("../../../view/theme/diabook-blue/icons/mess_side.png") no-repeat; + } +.menu-profile-list.events{ + background: url("../../../view/theme/diabook-blue/icons/events.png") no-repeat; + } +.menu-profile-list.notes{ + background: url("../../../view/theme/diabook-blue/icons/notes.png") no-repeat; + } +.menu-profile-list.foren{ + background: url("../../../view/theme/diabook-blue/icons/pubgroups.png") no-repeat; + } +.menu-profile-list.com_side{ + background: url("../../../view/theme/diabook-blue/icons/com_side.png") no-repeat; + } /* aside */ aside { @@ -2348,7 +2373,13 @@ float: left; .contact-details { color: #999999; } - +#side-bar-photos-albums li{ +list-style-type: disc; +} +#side-bar-photos-albums ul li{ + margin-left: 30px; + padding-left: 0px; + } #side-bar-photos-albums{ margin-top: 15px; } @@ -2362,39 +2393,40 @@ float: left; -moz-box-shadow: 0 0 5px #888; -webkit-box-shadow: 0 0 5px #888; box-shadow: 0 0 5px #888; - background-color: #EEE; + background-color: #000; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; padding-bottom: 20px; position: relative; margin: 0 10px 10px 0; + width: 200px; height: 140px; + overflow: hidden; } +/* .photo-top-album-name { position: absolute; bottom: 0; padding: 0 5px; -} -.photo-top-album-link{ - color: #1872A2; - } +}*/ /*.photo-top-image-wrapper { position: relative; float: left; margin-top: 15px; margin-right: 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); -}*/ + padding-left: 3px; + background-color: #EEE; +} +.photo-top-album-link{ + color: #3465A4; + } #photo-top-end { clear: both; } diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php index 9093ac2ca..39479ce52 100755 --- a/view/theme/diabook/theme.php +++ b/view/theme/diabook/theme.php @@ -1,8 +1,8 @@ Date: Wed, 21 Mar 2012 21:42:27 -0700 Subject: work around doubled linefeeds in tinymce3.5b2 --- mod/item.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mod/item.php b/mod/item.php index fe570075f..ee6c5c9a7 100755 --- a/mod/item.php +++ b/mod/item.php @@ -243,6 +243,7 @@ function item_post(&$a) { } + if(! strlen($body)) { if($preview) killme(); @@ -253,6 +254,15 @@ function item_post(&$a) { } } + // Work around doubled linefeeds in Tinymce 3.5b2 + // First figure out if it's a status post that would've been + // created using tinymce. Otherwise leave it alone. + + $plaintext = (local_user() ? intval(get_pconfig(local_user(),'system','plaintext')) : 0); + if((! $parent) && (! $api_source) && (! $plaintext)) { + $body = str_replace("\r\n","\n",$body); + $body = str_replace("\n\n","\n",$body); + } // get contact info for poster -- cgit v1.2.3 From d81256d7b051d9a76b087feeb64ac79fb4aeff4d Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 21 Mar 2012 21:45:45 -0700 Subject: support lowercase :-p smilie --- include/text.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/text.php b/include/text.php index 527f3a344..92a74eb49 100644 --- a/include/text.php +++ b/include/text.php @@ -712,6 +712,7 @@ function smilies($s, $sample = false) { ';-)', ':-(', ':-P', + ':-p', ':-"', ':-"', ':-x', @@ -745,6 +746,7 @@ function smilies($s, $sample = false) { ';-)', ':-(', ':-P', + ':-p', ':-\', ':-\', ':-x', -- cgit v1.2.3 From e37c4f69b42cc8a278fb37d1d7cdb374bfd7d156 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Thu, 22 Mar 2012 06:54:18 +0100 Subject: add file_as-option to diabook-derivates --- view/theme/diabook-blue/icons/file_as.png | Bin 0 -> 352 bytes view/theme/diabook-blue/style.css | 1 + view/theme/diabook-blue/wall_item.tpl | 4 ++++ view/theme/diabook/icons/file_as.png | Bin 0 -> 352 bytes view/theme/diabook/style.css | 1 + view/theme/diabook/wall_item.tpl | 4 ++++ 6 files changed, 10 insertions(+) create mode 100755 view/theme/diabook-blue/icons/file_as.png create mode 100755 view/theme/diabook/icons/file_as.png diff --git a/view/theme/diabook-blue/icons/file_as.png b/view/theme/diabook-blue/icons/file_as.png new file mode 100755 index 000000000..16713fa53 Binary files /dev/null and b/view/theme/diabook-blue/icons/file_as.png differ diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index f88c7b954..d3d3d9eb7 100644 --- a/view/theme/diabook-blue/style.css +++ b/view/theme/diabook-blue/style.css @@ -102,6 +102,7 @@ .icon.recycle { background-image: url("../../../view/theme/diabook-blue/icons/recycle.png");} .icon.remote-link { background-image: url("../../../view/theme/diabook-blue/icons/remote.png");} .icon.tagged { background-image: url("../../../view/theme/diabook-blue/icons/tagged.png");} +.icon.file-as { background-image: url("../../../view/theme/diabook-blue/icons/file_as.png");} .star-item.icon.unstarred { background-image: url("../../../view/theme/diabook-blue/icons/unstarred.png");} .star-item.icon.starred { background-image: url("../../../view/theme/diabook-blue/icons/starred.png");} .icon.link { background-image: url("../../../view/theme/diabook-blue/icons/link.png");} diff --git a/view/theme/diabook-blue/wall_item.tpl b/view/theme/diabook-blue/wall_item.tpl index ebe40fd4e..20d24702b 100644 --- a/view/theme/diabook-blue/wall_item.tpl +++ b/view/theme/diabook-blue/wall_item.tpl @@ -66,6 +66,10 @@ {{ endif }} + {{ if $item.filer }} + + {{ endif }} + {{ if $item.plink }}$item.plink.title{{ endif }} diff --git a/view/theme/diabook/icons/file_as.png b/view/theme/diabook/icons/file_as.png new file mode 100755 index 000000000..16713fa53 Binary files /dev/null and b/view/theme/diabook/icons/file_as.png differ diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index ffab5b4c4..5841a96b3 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -102,6 +102,7 @@ .icon.recycle { background-image: url("../../../view/theme/diabook/icons/recycle.png");} .icon.remote-link { background-image: url("../../../view/theme/diabook/icons/remote.png");} .icon.tagged { background-image: url("../../../view/theme/diabook/icons/tagged.png");} +.icon.file-as { background-image: url("../../../view/theme/diabook/icons/file_as.png");} .star-item.icon.unstarred { background-image: url("../../../view/theme/diabook/icons/unstarred.png");} .star-item.icon.starred { background-image: url("../../../view/theme/diabook/icons/starred.png");} .icon.link { background-image: url("../../../view/theme/diabook/icons/link.png");} diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index ebe40fd4e..20d24702b 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -66,6 +66,10 @@ {{ endif }} + {{ if $item.filer }} + + {{ endif }} + {{ if $item.plink }}$item.plink.title{{ endif }} -- cgit v1.2.3 From ebdf0ee99e517c6718099fda2f1b2288c42e66da Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 22 Mar 2012 01:46:52 -0700 Subject: prevent re-registrations using a deleted username - not an issue with Friendica but could create a serious privacy issue with federated platforms --- boot.php | 2 +- database.sql | 6 ++++++ include/Contact.php | 6 ++++++ mod/register.php | 10 ++++++++++ mod/regmod.php | 5 +++++ update.php | 11 ++++++++++- 6 files changed, 38 insertions(+), 2 deletions(-) diff --git a/boot.php b/boot.php index 910de6f82..04e16e64d 100755 --- a/boot.php +++ b/boot.php @@ -11,7 +11,7 @@ require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_VERSION', '2.3.1288' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); -define ( 'DB_UPDATE_VERSION', 1132 ); +define ( 'DB_UPDATE_VERSION', 1133 ); define ( 'EOL', "
    \r\n" ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); diff --git a/database.sql b/database.sql index f058bc59e..327b482c0 100755 --- a/database.sql +++ b/database.sql @@ -861,3 +861,9 @@ INDEX ( `term` ) ) ENGINE = MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `userd` ( +`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , +`username` CHAR( 255 ) NOT NULL, +INDEX ( `username` ) +) ENGINE = MyISAM DEFAULT CHARSET=utf8; + diff --git a/include/Contact.php b/include/Contact.php index baccea305..d9949b1ef 100755 --- a/include/Contact.php +++ b/include/Contact.php @@ -15,6 +15,12 @@ function user_remove($uid) { call_hooks('remove_user',$r[0]); + // save username (actually the nickname as it is guaranteed + // unique), so it cannot be re-registered in the future. + + q("insert into userd ( username ) values ( '%s' )", + $r[0]['nickname'] + ); q("DELETE FROM `contact` WHERE `uid` = %d", intval($uid)); q("DELETE FROM `group` WHERE `uid` = %d", intval($uid)); diff --git a/mod/register.php b/mod/register.php index 388b3e250..6d0e2700b 100755 --- a/mod/register.php +++ b/mod/register.php @@ -150,6 +150,16 @@ function register_post(&$a) { if(count($r)) $err .= t('Nickname is already registered. Please choose another.') . EOL; + // Check deleted accounts that had this nickname. Doesn't matter to us, + // but could be a security issue for federated platforms. + + $r = q("SELECT * FROM `userd` + WHERE `username` = '%s' LIMIT 1", + dbesc($nickname) + ); + if(count($r)) + $err .= t('Nickname was once registered here and may not be re-used. Please choose another.') . EOL; + if(strlen($err)) { notice( $err ); return; diff --git a/mod/regmod.php b/mod/regmod.php index 17e728ba2..21f41eb01 100755 --- a/mod/regmod.php +++ b/mod/regmod.php @@ -64,6 +64,11 @@ function user_allow($hash) { } + +// This does not have to go through user_remove() and save the nickname +// permanently against re-registration, as the person was not yet +// allowed to have friends on this system + function user_deny($hash) { $register = q("SELECT * FROM `register` WHERE `hash` = '%s' LIMIT 1", diff --git a/update.php b/update.php index 6a685a6ff..a69742a94 100755 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Thu, 22 Mar 2012 04:07:37 -0700 Subject: missing tooltip for "file as" --- view/theme/comix-plain/wall_item.tpl | 2 +- view/theme/comix-plain/wallwall_item.tpl | 2 +- view/theme/comix/wall_item.tpl | 2 +- view/theme/comix/wallwall_item.tpl | 2 +- view/theme/duepuntozero/wall_item.tpl | 2 +- view/theme/duepuntozero/wallwall_item.tpl | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/view/theme/comix-plain/wall_item.tpl b/view/theme/comix-plain/wall_item.tpl index dae16a1c7..dfcd8ca96 100755 --- a/view/theme/comix-plain/wall_item.tpl +++ b/view/theme/comix-plain/wall_item.tpl @@ -58,7 +58,7 @@ {{ endif }} {{ if $item.filer }} - + {{ endif }}
    {{ if $item.drop.dropping }}{{ endif }} diff --git a/view/theme/comix-plain/wallwall_item.tpl b/view/theme/comix-plain/wallwall_item.tpl index 11decf9c4..abd5967b2 100755 --- a/view/theme/comix-plain/wallwall_item.tpl +++ b/view/theme/comix-plain/wallwall_item.tpl @@ -62,7 +62,7 @@ {{ endif }} {{ if $item.filer }} - + {{ endif }}
    diff --git a/view/theme/comix/wall_item.tpl b/view/theme/comix/wall_item.tpl index dae16a1c7..dfcd8ca96 100755 --- a/view/theme/comix/wall_item.tpl +++ b/view/theme/comix/wall_item.tpl @@ -58,7 +58,7 @@ {{ endif }} {{ if $item.filer }} - + {{ endif }}
    {{ if $item.drop.dropping }}{{ endif }} diff --git a/view/theme/comix/wallwall_item.tpl b/view/theme/comix/wallwall_item.tpl index 11decf9c4..abd5967b2 100755 --- a/view/theme/comix/wallwall_item.tpl +++ b/view/theme/comix/wallwall_item.tpl @@ -62,7 +62,7 @@ {{ endif }} {{ if $item.filer }} - + {{ endif }}
    diff --git a/view/theme/duepuntozero/wall_item.tpl b/view/theme/duepuntozero/wall_item.tpl index e2db70a14..9d1dd7d70 100755 --- a/view/theme/duepuntozero/wall_item.tpl +++ b/view/theme/duepuntozero/wall_item.tpl @@ -58,7 +58,7 @@ {{ endif }} {{ if $item.filer }} - + {{ endif }}
    {{ if $item.drop.dropping }}{{ endif }} diff --git a/view/theme/duepuntozero/wallwall_item.tpl b/view/theme/duepuntozero/wallwall_item.tpl index 420c0e08b..bad5680c7 100755 --- a/view/theme/duepuntozero/wallwall_item.tpl +++ b/view/theme/duepuntozero/wallwall_item.tpl @@ -62,7 +62,7 @@ {{ endif }} {{ if $item.filer }} - + {{ endif }}
    -- cgit v1.2.3 From 54c08b2b0fcd20522b05162ee782e2c7e09aced9 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Thu, 22 Mar 2012 12:41:51 +0100 Subject: adding filer functionality to quattro(-green) --- view/wall_item.tpl | 3 +++ view/wallwall_item.tpl | 3 +++ 2 files changed, 6 insertions(+) diff --git a/view/wall_item.tpl b/view/wall_item.tpl index c99077510..1c19c4b60 100755 --- a/view/wall_item.tpl +++ b/view/wall_item.tpl @@ -51,6 +51,9 @@ $item.star.undo $item.star.tagger {{ endif }} + {{ if $item.filer }} + file as + {{ endif }} {{ if $item.vote }} $item.vote.like.1 diff --git a/view/wallwall_item.tpl b/view/wallwall_item.tpl index be942f261..e12a5fbd7 100755 --- a/view/wallwall_item.tpl +++ b/view/wallwall_item.tpl @@ -58,6 +58,9 @@ $item.star.tagger {{ endif }} + {{ if $item.filer }} + file as + {{ endif }} {{ if $item.vote }} $item.vote.like.1 -- cgit v1.2.3 From f208e7af3620cb38eb5617896d788d1be61e6851 Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Thu, 22 Mar 2012 12:43:03 +0100 Subject: tests for the template engine --- include/template_processor.php | 2 +- tests/template_test.php | 224 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 225 insertions(+), 1 deletion(-) create mode 100755 tests/template_test.php diff --git a/include/template_processor.php b/include/template_processor.php index 8671587fc..06c49a708 100755 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -80,7 +80,7 @@ */ private function _replcb_for($args){ $m = array_map('trim', explode(" as ", $args[2])); - list($keyname, $varname) = explode("=>",$m[1]); + @list($keyname, $varname) = explode("=>",$m[1]); if (is_null($varname)) { $varname=$keyname; $keyname=""; } if ($m[0]=="" || $varname=="" || is_null($varname)) die("template error: 'for ".$m[0]." as ".$varname."'") ; //$vals = $this->r[$m[0]]; diff --git a/tests/template_test.php b/tests/template_test.php new file mode 100755 index 000000000..1f9f80531 --- /dev/null +++ b/tests/template_test.php @@ -0,0 +1,224 @@ +assertTrue(is_null($second)); + } + + public function testSimpleVariableString() { + $tpl='Hello $name!'; + + $text=replace_macros($tpl, array('$name'=>'Anna')); + + $this->assertEquals('Hello Anna!', $text); + } + + public function testSimpleVariableInt() { + $tpl='There are $num new messages!'; + + $text=replace_macros($tpl, array('$num'=>172)); + + $this->assertEquals('There are 172 new messages!', $text); + } + + public function testConditionalElse() { + $tpl='There{{ if $num!=1 }} are $num new messages{{ else }} is 1 new message{{ endif }}!'; + + $text1=replace_macros($tpl, array('$num'=>1)); + $text22=replace_macros($tpl, array('$num'=>22)); + + $this->assertEquals('There is 1 new message!', $text1); + $this->assertEquals('There are 22 new messages!', $text22); + } + + public function testConditionalNoElse() { + $tpl='{{ if $num!=0 }}There are $num new messages!{{ endif }}'; + + $text0=replace_macros($tpl, array('$num'=>0)); + $text22=replace_macros($tpl, array('$num'=>22)); + + $this->assertEquals('', $text0); + $this->assertEquals('There are 22 new messages!', $text22); + } + + public function testConditionalFail() { + $tpl='There {{ if $num!=1 }} are $num new messages{{ else }} is 1 new message{{ endif }}!'; + + $text1=replace_macros($tpl, array()); + + //$this->assertEquals('There is 1 new message!', $text1); + } + + public function testSimpleFor() { + $tpl='{{ for $messages as $message }} $message {{ endfor }}'; + + $text=replace_macros($tpl, array('$messages'=>array('message 1', 'message 2'))); + + $this->assertEquals(' message 1 message 2 ', $text); + } + + public function testFor() { + $tpl='{{ for $messages as $message }} from: $message.from to $message.to {{ endfor }}'; + + $text=replace_macros($tpl, array('$messages'=>array(array('from'=>'Mike', 'to'=>'Alex'), array('from'=>'Alex', 'to'=>'Mike')))); + + $this->assertEquals(' from: Mike to Alex from: Alex to Mike ', $text); + } + + public function testKeyedFor() { + $tpl='{{ for $messages as $from=>$to }} from: $from to $to {{ endfor }}'; + + $text=replace_macros($tpl, array('$messages'=>array('Mike'=>'Alex', 'Sven'=>'Mike'))); + + $this->assertEquals(' from: Mike to Alex from: Sven to Mike ', $text); + } + + public function testForEmpty() { + $tpl='messages: {{for $messages as $message}} from: $message.from to $message.to {{ endfor }}'; + + $text=replace_macros($tpl, array('$messages'=>array())); + + $this->assertEquals('messages: ', $text); + } + + public function testForWrongType() { + $tpl='messages: {{for $messages as $message}} from: $message.from to $message.to {{ endfor }}'; + + $text=replace_macros($tpl, array('$messages'=>11)); + + $this->assertEquals('messages: ', $text); + } + + public function testForConditional() { + $tpl='new messages: {{for $messages as $message}}{{ if $message.new }} $message.text{{endif}}{{ endfor }}'; + + $text=replace_macros($tpl, array('$messages'=>array( + array('new'=>true, 'text'=>'new message'), + array('new'=>false, 'text'=>'old message')))); + + $this->assertEquals('new messages: new message', $text); + } + + public function testConditionalFor() { + $tpl='{{ if $enabled }}new messages:{{for $messages as $message}} $message.text{{ endfor }}{{endif}}'; + + $text=replace_macros($tpl, array('$enabled'=>true, + '$messages'=>array( + array('new'=>true, 'text'=>'new message'), + array('new'=>false, 'text'=>'old message')))); + + $this->assertEquals('new messages: new message old message', $text); + } + + public function testFantasy() { + $tpl='Fantasy: {{fantasy $messages}}'; + + $text=replace_macros($tpl, array('$messages'=>'no no')); + + $this->assertEquals('Fantasy: {{fantasy no no}}', $text); + } + + public function testInc() { + $tpl='{{inc field_input.tpl with $field=$myvar}}{{ endinc }}'; + + $text=replace_macros($tpl, array('$myvar'=>array('myfield', 'label', 'value', 'help'))); + + $this->assertEquals(" \n" + ."
    \n" + ." \n" + ." \n" + ." help\n" + ."
    \n", $text); + } + + public function testIncNoVar() { + $tpl='{{inc field_input.tpl }}{{ endinc }}'; + + $text=replace_macros($tpl, array('$field'=>array('myfield', 'label', 'value', 'help'))); + + $this->assertEquals(" \n
    \n \n" + ." \n" + ." help\n" + ."
    \n", $text); + } + + public function testDoubleUse() { + $tpl='Hello $name! {{ if $enabled }} I love you! {{ endif }}'; + + $text=replace_macros($tpl, array('$name'=>'Anna', '$enabled'=>false)); + + $this->assertEquals('Hello Anna! ', $text); + + $tpl='Hey $name! {{ if $enabled }} I hate you! {{ endif }}'; + + $text=replace_macros($tpl, array('$name'=>'Max', '$enabled'=>true)); + + $this->assertEquals('Hey Max! I hate you! ', $text); + } + + public function testIncDouble() { + $tpl='{{inc field_input.tpl with $field=$var1}}{{ endinc }}' + .'{{inc field_input.tpl with $field=$var2}}{{ endinc }}'; + + $text=replace_macros($tpl, array('$var1'=>array('myfield', 'label', 'value', 'help'), + '$var2'=>array('myfield2', 'label2', 'value2', 'help2'))); + + $this->assertEquals(" \n" + ."
    \n" + ." \n" + ." \n" + ." help\n" + ."
    \n" + ." \n" + ."
    \n" + ." \n" + ." \n" + ." help2\n" + ."
    \n", $text); + } +} \ No newline at end of file -- cgit v1.2.3 From 29900febb341cfbec6e4445d4ea1c2dc782a521a Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Thu, 22 Mar 2012 12:45:11 +0100 Subject: removed problem from previous commit --- .htaccess | 3 --- 1 file changed, 3 deletions(-) diff --git a/.htaccess b/.htaccess index 5f9531a7e..1df509670 100755 --- a/.htaccess +++ b/.htaccess @@ -5,9 +5,6 @@ AddType audio/ogg .oga Deny from all - -Deny from all - RewriteEngine on -- cgit v1.2.3 From ad9d0dadb3ade47d9ecbe5a0ffea12a8f9c4a96d Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Thu, 22 Mar 2012 12:52:24 +0100 Subject: removed unneccessary stuff --- index.php | 2 -- util/profiler.php | 21 --------------------- 2 files changed, 23 deletions(-) delete mode 100755 util/profiler.php diff --git a/index.php b/index.php index 688eee2ee..c82b20386 100755 --- a/index.php +++ b/index.php @@ -41,8 +41,6 @@ require_once("dba.php"); $db = new dba($db_host, $db_user, $db_pass, $db_data, $install); unset($db_host, $db_user, $db_pass, $db_data); -require_once('util/profiler.php'); - if(! $install) { /** diff --git a/util/profiler.php b/util/profiler.php deleted file mode 100755 index fe33fe429..000000000 --- a/util/profiler.php +++ /dev/null @@ -1,21 +0,0 @@ - Date: Thu, 22 Mar 2012 13:03:28 +0100 Subject: removed some new lines to cut down number of changed files --- boot.php | 1 - index.php | 1 + update.php | 1 - 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/boot.php b/boot.php index 9fc9b7f7e..04e16e64d 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,6 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); - define ( 'FRIENDICA_VERSION', '2.3.1288' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1133 ); diff --git a/index.php b/index.php index c82b20386..139f0a38b 100755 --- a/index.php +++ b/index.php @@ -41,6 +41,7 @@ require_once("dba.php"); $db = new dba($db_host, $db_user, $db_pass, $db_data, $install); unset($db_host, $db_user, $db_pass, $db_data); + if(! $install) { /** diff --git a/update.php b/update.php index 6231943ec..a69742a94 100755 --- a/update.php +++ b/update.php @@ -1,6 +1,5 @@ Date: Thu, 22 Mar 2012 13:05:34 +0100 Subject: new lines removed --- database.sql | 1 + index.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/database.sql b/database.sql index 13a401464..327b482c0 100755 --- a/database.sql +++ b/database.sql @@ -860,6 +860,7 @@ INDEX ( `ham` ), INDEX ( `term` ) ) ENGINE = MyISAM DEFAULT CHARSET=utf8; + CREATE TABLE IF NOT EXISTS `userd` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `username` CHAR( 255 ) NOT NULL, diff --git a/index.php b/index.php index 139f0a38b..5f6d74adb 100755 --- a/index.php +++ b/index.php @@ -41,7 +41,7 @@ require_once("dba.php"); $db = new dba($db_host, $db_user, $db_pass, $db_data, $install); unset($db_host, $db_user, $db_pass, $db_data); - + if(! $install) { /** -- cgit v1.2.3 From 6df7fae4b57540aa13c9f25976543a8511c61626 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Thu, 22 Mar 2012 13:41:41 +0100 Subject: non static filer text --- view/wall_item.tpl | 2 +- view/wallwall_item.tpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/view/wall_item.tpl b/view/wall_item.tpl index 1c19c4b60..e158e5ef8 100755 --- a/view/wall_item.tpl +++ b/view/wall_item.tpl @@ -52,7 +52,7 @@ $item.star.tagger {{ endif }} {{ if $item.filer }} - file as + $item.star.filer {{ endif }} {{ if $item.vote }} diff --git a/view/wallwall_item.tpl b/view/wallwall_item.tpl index e12a5fbd7..f47b47112 100755 --- a/view/wallwall_item.tpl +++ b/view/wallwall_item.tpl @@ -59,7 +59,7 @@ {{ endif }} {{ if $item.filer }} - file as + $item.star.filer {{ endif }} {{ if $item.vote }} -- cgit v1.2.3 From 1e86e3fb26271a687721ed6e74055feb38b363fa Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Thu, 22 Mar 2012 13:46:05 +0100 Subject: it's only item.filer ;-) --- view/wall_item.tpl | 2 +- view/wallwall_item.tpl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/view/wall_item.tpl b/view/wall_item.tpl index e158e5ef8..e771db068 100755 --- a/view/wall_item.tpl +++ b/view/wall_item.tpl @@ -52,7 +52,7 @@ $item.star.tagger {{ endif }} {{ if $item.filer }} - $item.star.filer + $item.filer {{ endif }} {{ if $item.vote }} diff --git a/view/wallwall_item.tpl b/view/wallwall_item.tpl index f47b47112..693ebaba6 100755 --- a/view/wallwall_item.tpl +++ b/view/wallwall_item.tpl @@ -59,7 +59,7 @@ {{ endif }} {{ if $item.filer }} - $item.star.filer + $item.filer {{ endif }} {{ if $item.vote }} -- cgit v1.2.3 From 07c5b0af5a09e4628b428da6071d189656d55b32 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Thu, 22 Mar 2012 14:09:21 +0100 Subject: quattro(-green) styling the 'filed under: remove' text --- view/theme/quattro-green/colors.less | 2 ++ view/theme/quattro-green/style.css | 43 ++++++++++++++++++++++++++++++++---- view/theme/quattro/quattro.less | 8 +++++-- view/theme/quattro/style.css | 6 ++++- 4 files changed, 52 insertions(+), 7 deletions(-) diff --git a/view/theme/quattro-green/colors.less b/view/theme/quattro-green/colors.less index 57fd2ef60..9eee19f4c 100755 --- a/view/theme/quattro-green/colors.less +++ b/view/theme/quattro-green/colors.less @@ -72,6 +72,8 @@ @NoticeColor: @Grey1; @NoticeBackgroundColor: #511919; +@FieldHelpColor: @Grey3; + @ThreadBackgroundColor: #f6f7f8; @ShinyBorderColor: @Green4; diff --git a/view/theme/quattro-green/style.css b/view/theme/quattro-green/style.css index 301477679..2f463c96c 100755 --- a/view/theme/quattro-green/style.css +++ b/view/theme/quattro-green/style.css @@ -615,7 +615,7 @@ aside #profiles-menu { } #contact-block .contact-block-content { clear: both; - overflow: idden; + overflow: hidden; height: auto; } #contact-block .contact-block-link { @@ -623,7 +623,7 @@ aside #profiles-menu { margin: 0px 2px 2px 0px; } #contact-block .contact-block-link img { - widht: 48px; + width: 48px; height: 48px; } /* mail view */ @@ -787,7 +787,7 @@ section { } .wall-item-decor { position: absolute; - left: 790px; + left: 97%; top: -10px; width: 16px; } @@ -968,6 +968,10 @@ section { background: url("../../../images/tag.png") no-repeat center right; color: #ffffff; } +.filesavetags { + padding: 3px 0px 3px 0px; + opacity: 0.5; +} .wwto { position: absolute !important; width: 25px; @@ -1304,6 +1308,37 @@ ul.tabs li { ul.tabs li .active { border-bottom: 1px solid #009100; } +/** group editor **/ +#group-edit-desc { + margin-top: 1em; + color: #999999; +} +#group-update-wrapper { + height: auto; + overflow: auto; +} +#group-update-wrapper #group { + width: 300px; + float: left; + margin-right: 20px; +} +#group-update-wrapper #contacts { + width: 300px; + float: left; +} +#group-update-wrapper #group-separator { + display: none; +} +#group-update-wrapper .contact_list { + height: 300px; + border: 1px solid #364e59; + overflow: auto; +} +#group-update-wrapper .contact_list .contact-block-div { + width: 50px; + height: 50px; + float: left; +} /** * Form fields */ @@ -1326,7 +1361,7 @@ ul.tabs li .active { .field .field_help { display: block; margin-left: 200px; - color: #666666; + color: #999999; } .field .onoff { float: left; diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less index 27c48f195..fca65c907 100755 --- a/view/theme/quattro/quattro.less +++ b/view/theme/quattro/quattro.less @@ -113,7 +113,7 @@ header { #banner { overflow: hidden; - text-align: center; + text-align: center; width: 100%; a, a:active, a:visited, a:link, a:hover { color: @Grey1; text-decoration: none; outline: none; vertical-align: bottom; } #logo-img { height: 22px; margin-top:5px;} @@ -448,7 +448,7 @@ section { margin-bottom: 20px; width: 780px; } -.wall-item-decor { position: absolute; left: 790px; top: -10px; width: 16px;} +.wall-item-decor { position: absolute; left: 97%; top: -10px; width: 16px;} .unstarred { display: none; } .wall-item-container { @@ -570,6 +570,10 @@ section { color: @TagColor; } } +.filesavetags { + padding: 3px 0px 3px 0px; + opacity: 0.5; +} .wwto { position: absolute !important; diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css index 6087e4cd1..8f0abe86d 100755 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -787,7 +787,7 @@ section { } .wall-item-decor { position: absolute; - left: 790px; + left: 97%; top: -10px; width: 16px; } @@ -968,6 +968,10 @@ section { background: url("../../../images/tag.png") no-repeat center right; color: #ffffff; } +.filesavetags { + padding: 3px 0px 3px 0px; + opacity: 0.5; +} .wwto { position: absolute !important; width: 25px; -- cgit v1.2.3 From 40d19d5b8c34cdb2ad6d605e85206bbe57c0be13 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 22 Mar 2012 06:19:27 -0700 Subject: normalise comparison link on delegation page --- mod/delegate.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/delegate.php b/mod/delegate.php index c19df0681..8c5031859 100644 --- a/mod/delegate.php +++ b/mod/delegate.php @@ -86,7 +86,7 @@ function delegate_content(&$a) { $r = q("select nurl from contact where substring_index(contact.nurl,'/',3) = '%s' and contact.uid = %d and contact.self = 0 and network = '%s' ", - dbesc($a->get_baseurl()), + dbesc(normalise_link($a->get_baseurl())), intval(local_user()), dbesc(NETWORK_DFRN) ); -- cgit v1.2.3 From 528d795fb68a8ae53cb7b9ad8479aeaa2b1f975f Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 22 Mar 2012 16:17:10 -0700 Subject: ability to change tags in edited posts --- boot.php | 2 +- include/items.php | 14 +++++++++----- include/text.php | 13 +++++++++++++ mod/editpost.php | 2 +- mod/item.php | 19 ++++++++++++------- 5 files changed, 36 insertions(+), 14 deletions(-) diff --git a/boot.php b/boot.php index 04e16e64d..f976ef636 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1288' ); +define ( 'FRIENDICA_VERSION', '2.3.1289' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1133 ); diff --git a/include/items.php b/include/items.php index 5a297c83e..b96f88566 100755 --- a/include/items.php +++ b/include/items.php @@ -1582,9 +1582,10 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) if(count($r)) { if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) { - $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", + $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($datarray['title']), dbesc($datarray['body']), + dbesc($datarray['tag']), dbesc(datetime_convert('UTC','UTC',$datarray['edited'])), dbesc($item_id), intval($importer['uid']) @@ -1727,9 +1728,10 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) if(count($r)) { if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) { - $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", + $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($datarray['title']), dbesc($datarray['body']), + dbesc($datarray['tag']), dbesc(datetime_convert('UTC','UTC',$datarray['edited'])), dbesc($item_id), intval($importer['uid']) @@ -1800,7 +1802,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) // but otherwise there's a possible data mixup on the sender's system. // the tgroup delivery code called from item_store will correct it if it's a forum, // but we're going to unconditionally correct it here so that the post will always be owned by our contact. - logger('local_delivery: Correcting item owner.', LOGGER_DEBUG); + logger('consume_feed: Correcting item owner.', LOGGER_DEBUG); $datarray['owner-name'] = $contact['name']; $datarray['owner-link'] = $contact['url']; $datarray['owner-avatar'] = $contact['thumb']; @@ -2332,9 +2334,10 @@ function local_delivery($importer,$data) { if(count($r)) { if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) { - $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", + $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($datarray['title']), dbesc($datarray['body']), + dbesc($datarray['tag']), dbesc(datetime_convert('UTC','UTC',$datarray['edited'])), dbesc($item_id), intval($importer['importer_uid']) @@ -2497,9 +2500,10 @@ function local_delivery($importer,$data) { if(count($r)) { if((x($datarray,'edited') !== false) && (datetime_convert('UTC','UTC',$datarray['edited']) !== $r[0]['edited'])) { - $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", + $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `edited` = '%s' WHERE `uri` = '%s' AND `uid` = %d LIMIT 1", dbesc($datarray['title']), dbesc($datarray['body']), + dbesc($datarray['tag']), dbesc(datetime_convert('UTC','UTC',$datarray['edited'])), dbesc($item_id), intval($importer['importer_uid']) diff --git a/include/text.php b/include/text.php index 92a74eb49..6f66cef65 100644 --- a/include/text.php +++ b/include/text.php @@ -1338,3 +1338,16 @@ function file_tag_unsave_file($uid,$item,$file) { function normalise_openid($s) { return trim(str_replace(array('http://','https://'),array('',''),$s),'/'); } + + +function undo_post_tagging($s) { + $matches = null; + $cnt = preg_match_all('/([@#])\[url=(.*?)\](.*?)\[\/url\]/ism',$s,$matches,PREG_SET_ORDER); + if($cnt) { + foreach($matches as $mtch) { + $s = str_replace($mtch[0], $mtch[1] . $mtch[3],$s); + } + } + return $s; +} + diff --git a/mod/editpost.php b/mod/editpost.php index 778ac3dcc..2ddba36aa 100755 --- a/mod/editpost.php +++ b/mod/editpost.php @@ -104,7 +104,7 @@ function editpost_content(&$a) { '$wait' => t('Please wait'), '$permset' => t('Permission settings'), '$ptyp' => $itm[0]['type'], - '$content' => $itm[0]['body'], + '$content' => undo_post_tagging($itm[0]['body']), '$post_id' => $post_id, '$baseurl' => $a->get_baseurl(), '$defloc' => $a->user['default-location'], diff --git a/mod/item.php b/mod/item.php index ee6c5c9a7..fc1c5fd0f 100755 --- a/mod/item.php +++ b/mod/item.php @@ -177,10 +177,11 @@ function item_post(&$a) { $verb = $orig_post['verb']; $emailcc = $orig_post['emailcc']; $app = $orig_post['app']; - + $categories = $orig_post['file']; $body = escape_tags(trim($_REQUEST['body'])); $private = $orig_post['private']; $pubmail_enable = $orig_post['pubmail']; + } else { @@ -213,8 +214,10 @@ function item_post(&$a) { $coord = notags(trim($_REQUEST['coord'])); $verb = notags(trim($_REQUEST['verb'])); $emailcc = notags(trim($_REQUEST['emailcc'])); - $body = escape_tags(trim($_REQUEST['body'])); + + // $categories = TODO + $private = ((strlen($str_group_allow) || strlen($str_contact_allow) || strlen($str_group_deny) || strlen($str_contact_deny)) ? 1 : 0); if(($parent_item) && @@ -242,8 +245,6 @@ function item_post(&$a) { } } - - if(! strlen($body)) { if($preview) killme(); @@ -500,6 +501,7 @@ function item_post(&$a) { $datarray['location'] = $location; $datarray['coord'] = $coord; $datarray['tag'] = $str_tags; + $datarray['file'] = $categories; $datarray['inform'] = $inform; $datarray['verb'] = $verb; $datarray['allow_cid'] = $str_contact_allow; @@ -559,9 +561,12 @@ function item_post(&$a) { if($orig_post) { - $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `edited` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1", - dbesc($title), - dbesc($body), + $r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `attach` = '%s', `file` = '%s', `edited` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1", + dbesc($datarray['title']), + dbesc($datarray['body']), + dbesc($datarray['tag']), + dbesc($datarray['attach']), + dbesc($datarray['file']), dbesc(datetime_convert()), intval($post_id), intval($profile_uid) -- cgit v1.2.3 From bf4dd8ad1701c79a3de097b2792fa8ae2fc673b4 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Fri, 23 Mar 2012 02:36:34 +0100 Subject: add right_aside to theme diabook --- view/default.php | 3 +- view/theme/diabook/communityhome.tpl | 42 ++++++ view/theme/diabook/directory_item.tpl | 10 ++ view/theme/diabook/right_aside.tpl | 20 +++ view/theme/diabook/style.css | 31 ++++- view/theme/diabook/theme.php | 234 +++++++++++++++++++++++++++++++++- 6 files changed, 329 insertions(+), 11 deletions(-) create mode 100755 view/theme/diabook/communityhome.tpl create mode 100755 view/theme/diabook/directory_item.tpl create mode 100644 view/theme/diabook/right_aside.tpl diff --git a/view/default.php b/view/default.php index ab1cb0f09..61f5f6863 100755 --- a/view/default.php +++ b/view/default.php @@ -10,7 +10,8 @@
    -
    + +
    diff --git a/view/theme/diabook/communityhome.tpl b/view/theme/diabook/communityhome.tpl new file mode 100755 index 000000000..876276ca8 --- /dev/null +++ b/view/theme/diabook/communityhome.tpl @@ -0,0 +1,42 @@ +{{ if $lastusers_title }} +

    Help or #Newhere?

    +Friendica Support
    +Let's talk
    +NewHere +{{ endif }} +{{ if $lastusers_title }} +

    $lastusers_title

    +
    +{{ for $lastusers_items as $i }} + $i +{{ endfor }} +
    +{{ endif }} + +{{ if $activeusers_title }} +

    $activeusers_title

    +
    +{{ for $activeusers_items as $i }} + $i +{{ endfor }} +
    +{{ endif }} + +{{ if $photos_title }} +

    $photos_title

    +
    +{{ for $photos_items as $i }} + $i +{{ endfor }} +
    +{{ endif }} + + +{{ if $like_title }} +

    $like_title

    +
      +{{ for $like_items as $i }} +
    • $i
    • +{{ endfor }} +
    +{{ endif }} diff --git a/view/theme/diabook/directory_item.tpl b/view/theme/diabook/directory_item.tpl new file mode 100755 index 000000000..db1936e4b --- /dev/null +++ b/view/theme/diabook/directory_item.tpl @@ -0,0 +1,10 @@ + +
    +
    +
    + + $alt-text + +
    +
    +
    diff --git a/view/theme/diabook/right_aside.tpl b/view/theme/diabook/right_aside.tpl new file mode 100644 index 000000000..a65677696 --- /dev/null +++ b/view/theme/diabook/right_aside.tpl @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 5841a96b3..f7dab9ef0 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -385,7 +385,7 @@ .hide-comments-outer { margin-left: 80px; margin-bottom: 5px; - width: 684px; + width: 484px; border-bottom: 1px solid #BDCDD4; border-top: 1px solid #BDCDD4; @@ -1096,8 +1096,8 @@ aside #side-peoplefind-url { section { display: table-cell; vertical-align: top; - width: 800px; - padding: 0px 0px 0px 12px; + width: auto; + padding: 0px 12px 0px 12px; } body .pageheader{ @@ -1145,13 +1145,30 @@ body .pageheader{ #birthday-notice, #event-notice, #birthday-wrapper, #event-wrapper{ margin-bottom: 10px; } + +right_aside { + display: table-cell; + vertical-align: top; + width: 180px; + /*border-left: 1px solid #D2D2D2;*/ + + /* background: #F1F1F1; */ +} +right_aside h3 {border-bottom: 1px solid #D2D2D2; padding-top: 5px; padding-bottom: 0px; padding-left: 5px; margin-bottom: 0px; +margin-top:30px;} +right_aside .directory-item { width: 55px; height: 55px; vertical-align: center; text-align: center; } +right_aside .directory-photo { margin: 0px; } +right_aside .directory-photo-img { max-width: 48px; max-height: 48px; } +right_aside #likes { margin: 0px; padding: 0px; list-style: none; } +right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px solid #D2D2D2;} + /* wall item */ .tread-wrapper { border-bottom: 1px solid #D2D2D2; position: relative; padding: 5px; margin-bottom: 0px; - width: 775px; + width: 575px; } .wall-item-decor { position: absolute; @@ -1162,7 +1179,7 @@ body .pageheader{ .wall-item-container { display: table; - width: 780px; + width: 580px; } @@ -1275,7 +1292,7 @@ body .pageheader{ margin-top: 5px; margin-bottom: 5px; margin-left: 80px; - width: 700px; + width: 500px; border-bottom: 1px solid hsl(198, 21%, 79%); } .wall-item-container.comment .contact-photo { @@ -1591,7 +1608,7 @@ body .pageheader{ } #profile-jot-wrapper{ margin: 0 2em 20px 0; - width: 785px; + width: 585px; } #profile-jot-submit-wrapper { diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php index 39479ce52..25808d7e9 100755 --- a/view/theme/diabook/theme.php +++ b/view/theme/diabook/theme.php @@ -11,9 +11,10 @@ $a->theme_info = array( 'extends' => 'diabook', ); -//profile_side - +//profile_side at networkpages +if($is_url = preg_match ("/\bnetwork\b/i", $_SERVER['REQUEST_URI'])) { +// $nav['usermenu']=array(); $userinfo = null; @@ -36,14 +37,241 @@ $ps['usermenu'][events] = Array('events/', t('Events'), "", t('Your events')); $ps['usermenu'][notes] = Array('notes/', t('Personal notes'), "", t('Your personal photos')); $ps['usermenu'][community] = Array('community/', t('Community'), "", ""); -if($is_url = preg_match ("/\bnetwork\b/i", $_SERVER['REQUEST_URI'])) { + $tpl = get_markup_template('profile_side.tpl'); $a->page['aside'] .= replace_macros($tpl, array( '$userinfo' => $userinfo, '$ps' => $ps, )); + } + +//right_aside at networkpages + +// last 12 users + $aside['$lastusers_title'] = t('Last users'); + $aside['$lastusers_items'] = array(); + $sql_extra = ""; + $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " ); + $order = " ORDER BY `register_date` DESC "; + + $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` + FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` + WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", + 0, + 12 + ); + $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + if(count($r)) { + $photo = 'thumb'; + foreach($r as $rr) { + $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile-link' => $profile_link, + '$photo' => $rr[$photo], + '$alt-text' => $rr['name'], + )); + $aside['$lastusers_items'][] = $entry; + } + } + +// last 10 liked items + $aside['$like_title'] = t('Last likes'); + $aside['$like_items'] = array(); + $r = q("SELECT `T1`.`created`, `T1`.`liker`, `T1`.`liker-link`, `item`.* FROM + (SELECT `parent-uri`, `created`, `author-name` AS `liker`,`author-link` AS `liker-link` + FROM `item` WHERE `verb`='http://activitystrea.ms/schema/1.0/like' GROUP BY `parent-uri` ORDER BY `created` DESC) AS T1 + INNER JOIN `item` ON `item`.`uri`=`T1`.`parent-uri` + WHERE `T1`.`liker-link` LIKE '%s%%' OR `item`.`author-link` LIKE '%s%%' + GROUP BY `uri` + ORDER BY `T1`.`created` DESC + LIMIT 0,10", + $a->get_baseurl(),$a->get_baseurl() + ); + + foreach ($r as $rr) { + $author = '' . $rr['liker'] . ''; + $objauthor = '' . $rr['author-name'] . ''; + + //var_dump($rr['verb'],$rr['object-type']); killme(); + switch($rr['verb']){ + case 'http://activitystrea.ms/schema/1.0/post': + switch ($rr['object-type']){ + case 'http://activitystrea.ms/schema/1.0/event': + $post_type = t('event'); + break; + default: + $post_type = t('status'); + } + break; + default: + if ($rr['resource-id']){ + $post_type = t('photo'); + $m=array(); preg_match("/\[url=([^]]*)\]/", $rr['body'], $m); + $rr['plink'] = $m[1]; + } else { + $post_type = t('status'); + } + } + $plink = '' . $post_type . ''; + + $aside['$like_items'][] = sprintf( t('%1$s likes %2$s\'s %3$s'), $author, $objauthor, $plink); + + } +// last 12 photos + $aside['$photos_title'] = t('Last photos'); + $aside['$photos_items'] = array(); + $r = q("SELECT `photo`.`id`, `photo`.`resource-id`, `photo`.`scale`, `photo`.`desc`, `user`.`nickname`, `user`.`username` FROM + (SELECT `resource-id`, MAX(`scale`) as maxscale FROM `photo` + WHERE `profile`=0 AND `contact-id`=0 AND `album` NOT IN ('Contact Photos', '%s', 'Profile Photos', '%s') + AND `allow_cid`='' AND `allow_gid`='' AND `deny_cid`='' AND `deny_gid`='' GROUP BY `resource-id`) AS `t1` + INNER JOIN `photo` ON `photo`.`resource-id`=`t1`.`resource-id` AND `photo`.`scale` = `t1`.`maxscale`, + `user` + WHERE `user`.`uid` = `photo`.`uid` + AND `user`.`blockwall`=0 + ORDER BY `photo`.`edited` DESC + LIMIT 0, 12", + dbesc(t('Contact Photos')), + dbesc(t('Profile Photos')) + ); + if(count($r)) { + $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + foreach($r as $rr) { + $photo_page = $a->get_baseurl() . '/photos/' . $rr['nickname'] . '/image/' . $rr['resource-id']; + $photo_url = $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['scale'] .'.jpg'; + + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile-link' => $photo_page, + '$photo' => $photo_url, + '$alt-text' => $rr['username']." : ".$rr['desc'], + )); + + $aside['$photos_items'][] = $entry; + } + } + + + $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); + $a->page['right_aside'] = replace_macros($tpl, $aside); + +} + +//right_aside at profile pages + +if($is_url = preg_match ("/\bprofile\b/i", $_SERVER['REQUEST_URI'])) { +//right_aside + +// last 12 users + $aside['$lastusers_title'] = t('Last users'); + $aside['$lastusers_items'] = array(); + $sql_extra = ""; + $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " ); + $order = " ORDER BY `register_date` DESC "; + + $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` + FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` + WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", + 0, + 12 + ); + $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + if(count($r)) { + $photo = 'thumb'; + foreach($r as $rr) { + $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile-link' => $profile_link, + '$photo' => $rr[$photo], + '$alt-text' => $rr['name'], + )); + $aside['$lastusers_items'][] = $entry; + } + } + +// last 10 liked items + $aside['$like_title'] = t('Last likes'); + $aside['$like_items'] = array(); + $r = q("SELECT `T1`.`created`, `T1`.`liker`, `T1`.`liker-link`, `item`.* FROM + (SELECT `parent-uri`, `created`, `author-name` AS `liker`,`author-link` AS `liker-link` + FROM `item` WHERE `verb`='http://activitystrea.ms/schema/1.0/like' GROUP BY `parent-uri` ORDER BY `created` DESC) AS T1 + INNER JOIN `item` ON `item`.`uri`=`T1`.`parent-uri` + WHERE `T1`.`liker-link` LIKE '%s%%' OR `item`.`author-link` LIKE '%s%%' + GROUP BY `uri` + ORDER BY `T1`.`created` DESC + LIMIT 0,10", + $a->get_baseurl(),$a->get_baseurl() + ); + + foreach ($r as $rr) { + $author = '' . $rr['liker'] . ''; + $objauthor = '' . $rr['author-name'] . ''; + + //var_dump($rr['verb'],$rr['object-type']); killme(); + switch($rr['verb']){ + case 'http://activitystrea.ms/schema/1.0/post': + switch ($rr['object-type']){ + case 'http://activitystrea.ms/schema/1.0/event': + $post_type = t('event'); + break; + default: + $post_type = t('status'); + } + break; + default: + if ($rr['resource-id']){ + $post_type = t('photo'); + $m=array(); preg_match("/\[url=([^]]*)\]/", $rr['body'], $m); + $rr['plink'] = $m[1]; + } else { + $post_type = t('status'); + } + } + $plink = '' . $post_type . ''; + + $aside['$like_items'][] = sprintf( t('%1$s likes %2$s\'s %3$s'), $author, $objauthor, $plink); + + } +// last 12 photos + $aside['$photos_title'] = t('Last photos'); + $aside['$photos_items'] = array(); + $r = q("SELECT `photo`.`id`, `photo`.`resource-id`, `photo`.`scale`, `photo`.`desc`, `user`.`nickname`, `user`.`username` FROM + (SELECT `resource-id`, MAX(`scale`) as maxscale FROM `photo` + WHERE `profile`=0 AND `contact-id`=0 AND `album` NOT IN ('Contact Photos', '%s', 'Profile Photos', '%s') + AND `allow_cid`='' AND `allow_gid`='' AND `deny_cid`='' AND `deny_gid`='' GROUP BY `resource-id`) AS `t1` + INNER JOIN `photo` ON `photo`.`resource-id`=`t1`.`resource-id` AND `photo`.`scale` = `t1`.`maxscale`, + `user` + WHERE `user`.`uid` = `photo`.`uid` + AND `user`.`blockwall`=0 + ORDER BY `photo`.`edited` DESC + LIMIT 0, 12", + dbesc(t('Contact Photos')), + dbesc(t('Profile Photos')) + ); + if(count($r)) { + $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + foreach($r as $rr) { + $photo_page = $a->get_baseurl() . '/photos/' . $rr['nickname'] . '/image/' . $rr['resource-id']; + $photo_url = $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['scale'] .'.jpg'; + + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile-link' => $photo_page, + '$photo' => $photo_url, + '$alt-text' => $rr['username']." : ".$rr['desc'], + )); + + $aside['$photos_items'][] = $entry; + } + } + + + $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); + $a->page['right_aside'] = replace_macros($tpl, $aside); + } //js scripts -- cgit v1.2.3 From 687fa800942156d7020042d044e08b83ca7899f9 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Fri, 23 Mar 2012 07:02:21 +0100 Subject: fix 1024resolution --- view/theme/diabook/profile_vcard.tpl | 2 +- view/theme/diabook/style.css | 27 ++++++++++++++------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/view/theme/diabook/profile_vcard.tpl b/view/theme/diabook/profile_vcard.tpl index 3a545f9ba..918cfc97c 100644 --- a/view/theme/diabook/profile_vcard.tpl +++ b/view/theme/diabook/profile_vcard.tpl @@ -22,7 +22,7 @@ {{ if $pdesc }}
    $profile.pdesc
    {{ endif }} -
    $profile.name
    +
    $profile.name
    diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index f7dab9ef0..f0cf04d65 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -928,8 +928,8 @@ ul.menu-popup .empty { aside { display: table-cell; vertical-align: top; - width: 180px; - padding: 0px 10px 0px 20px; + width: 160px; + padding: 0px 10px 0px 10px; border-right: 1px solid #D2D2D2; float: left; /* background: #F1F1F1; */ @@ -988,13 +988,13 @@ aside #profiles-menu { width: 20em; } aside #search-text { - width: 173px; + width: 150px; } aside #side-follow-url { - width: 173px; + width: 150px; } aside #side-peoplefind-url { - width: 173px; + width: 150px; } #contact-block { overflow: auto; @@ -1097,7 +1097,7 @@ section { display: table-cell; vertical-align: top; width: auto; - padding: 0px 12px 0px 12px; + padding: 0px 0px 0px 12px; } body .pageheader{ @@ -1149,16 +1149,17 @@ body .pageheader{ right_aside { display: table-cell; vertical-align: top; - width: 180px; + width: 160px; + padding-right: 10px; /*border-left: 1px solid #D2D2D2;*/ /* background: #F1F1F1; */ } right_aside h3 {border-bottom: 1px solid #D2D2D2; padding-top: 5px; padding-bottom: 0px; padding-left: 5px; margin-bottom: 0px; margin-top:30px;} -right_aside .directory-item { width: 55px; height: 55px; vertical-align: center; text-align: center; } +right_aside .directory-item { width: 50px; height: 50px; vertical-align: center; text-align: center; } right_aside .directory-photo { margin: 0px; } -right_aside .directory-photo-img { max-width: 48px; max-height: 48px; } +right_aside .directory-photo-img { max-width: 45px; max-height: 45px; } right_aside #likes { margin: 0px; padding: 0px; list-style: none; } right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px solid #D2D2D2;} @@ -1467,7 +1468,7 @@ right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px soli display: none; } #jot { - width: 785px; + width: 585px; margin: 0px 2em 20px 0px; } #profile-jot-form #profile-jot-text { @@ -1484,7 +1485,7 @@ right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px soli padding: 0px; height: 40px; overflow: none; - width: 783px; + width: 583px; background-color: #fff; border-bottom: 2px solid #9eabb0; } @@ -1573,7 +1574,7 @@ right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px soli font-weight: normal; } #profile-jot-form #profile-jot-text_parent #profile-jot-text_tbl{ - width: 785px; + width: 585px; height: 100px; } #jot #jot-title:hover { @@ -1613,7 +1614,7 @@ right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px soli #profile-jot-submit-wrapper { margin-bottom: 50px; - width: 785px; + width: 585px; } #profile-jot-submit { -- cgit v1.2.3 From 7706a8f9d8d71b89c791f31f957496b95b8bb31f Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Fri, 23 Mar 2012 07:28:48 +0100 Subject: small fix --- view/theme/diabook/communityhome.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/diabook/communityhome.tpl b/view/theme/diabook/communityhome.tpl index 876276ca8..0fc77314d 100755 --- a/view/theme/diabook/communityhome.tpl +++ b/view/theme/diabook/communityhome.tpl @@ -1,5 +1,5 @@ {{ if $lastusers_title }} -

    Help or #Newhere?

    +

    Help or #NewHere?

    Friendica Support
    Let's talk
    NewHere -- cgit v1.2.3 From c35b9ec24f1449a691afeeb985a41fbaf07b2af1 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Fri, 23 Mar 2012 10:16:11 +0100 Subject: fix in css right_aside --- view/theme/diabook/communityhome.tpl | 1 + view/theme/diabook/style-network.css | 2461 ++++++++++++++++++++++++++++++++++ view/theme/diabook/style-profile.css | 2461 ++++++++++++++++++++++++++++++++++ view/theme/diabook/style.css | 49 +- view/theme/diabook/theme.php | 15 + 5 files changed, 4953 insertions(+), 34 deletions(-) create mode 100644 view/theme/diabook/style-network.css create mode 100644 view/theme/diabook/style-profile.css diff --git a/view/theme/diabook/communityhome.tpl b/view/theme/diabook/communityhome.tpl index 0fc77314d..944aec2dd 100755 --- a/view/theme/diabook/communityhome.tpl +++ b/view/theme/diabook/communityhome.tpl @@ -4,6 +4,7 @@ Let's talk
    NewHere {{ endif }} + {{ if $lastusers_title }}

    $lastusers_title

    diff --git a/view/theme/diabook/style-network.css b/view/theme/diabook/style-network.css new file mode 100644 index 000000000..f0cf04d65 --- /dev/null +++ b/view/theme/diabook/style-network.css @@ -0,0 +1,2461 @@ +/** + * Fabio Comuni + * Additional Changes: Michael Vogel + **/ + +/* ========= */ +/* = Admin = */ +/* ========= */ + +#adminpage { +/* width: 80%;*/ +} + +#pending-update { + float:right; + color: #ffffff; + font-weight: bold; + background-color: #FF0000; + padding: 0em 0.3em; +} + +.admin.linklist { + border: 0px; padding: 0px; +} + +.admin.link { + list-style-position: inside; + font-size: 1em; + padding: 5px; + width: 100px; + margin: 5px; +} + +#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 #898989; + margin-bottom: 5px; + margin-top: 10px; +} + +#adminpage .submit { + clear:left; +} + +#adminpage #pluginslist { + margin: 0px; padding: 0px; +} + +#adminpage .plugin { + list-style: none; + display: block; + /* border: 1px solid #888888; */ + padding: 1em; + margin-bottom: 5px; + clear: left; +} + +#adminpage .toggleplugin { + float:left; + margin-right: 1em; +} + +#adminpage table {width:100%; border-bottom: 1p 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: #eeeeee; } +#adminpage .selectall { text-align: right; } +/* icons */ + +.icon.contacts { + background-image: url("../../../view/theme/diabook/icons/contacts.png");} +.icon.notifications { + background-image: url("../../../view/theme/diabook/icons/notifications.png");} +.icon.notify { + background-image: url("../../../view/theme/diabook/icons/notify.png");} +.icon.messages { + background-image: url("../../../view/theme/diabook/icons/messages.png");} +.icon.community { + background-image: url("../../../view/theme/diabook/icons/community.png");} + +.icon.drop { background-image: url("../../../view/theme/diabook/icons/drop.png");} +.icon.drophide { background-image: url("../../../view/theme/diabook/icons/drop.png");} +.icon.dislike { background-image: url("../../../view/theme/diabook/icons/dislike.png");} +.icon.like { background-image: url("../../../view/theme/diabook/icons/like.png");} +.icon.pencil { background-image: url("../../../view/theme/diabook/icons/pencil.png");} +.icon.recycle { background-image: url("../../../view/theme/diabook/icons/recycle.png");} +.icon.remote-link { background-image: url("../../../view/theme/diabook/icons/remote.png");} +.icon.tagged { background-image: url("../../../view/theme/diabook/icons/tagged.png");} +.icon.file-as { background-image: url("../../../view/theme/diabook/icons/file_as.png");} +.star-item.icon.unstarred { background-image: url("../../../view/theme/diabook/icons/unstarred.png");} +.star-item.icon.starred { background-image: url("../../../view/theme/diabook/icons/starred.png");} +.icon.link { background-image: url("../../../view/theme/diabook/icons/link.png");} +.icon.lock { background-image: url("../../../view/theme/diabook/icons/lock.png");} +.icon.unlock { background-image: url("../../../view/theme/diabook/icons/unlock.png");} +.icon.language { background-image: url("../../../view/theme/diabook/icons/language.png");} + + +.camera { background-image: url("../../../view/theme/diabook/icons/camera.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.attach { background-image: url("../../../view/theme/diabook/icons/attach.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.video2 { background-image: url("../../../view/theme/diabook/icons/video.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.video { background-image: url("../../../view/theme/diabook/icons/video.png"); + display: block; width: 100%; height: 28px; background-repeat: no-repeat; + } +.audio2 { background-image: url("../../../view/theme/diabook/icons/audio.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.audio { background-image: url("../../../view/theme/diabook/icons/audio.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.weblink { background-image: url("../../../view/theme/diabook/icons/weblink.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.globe { background-image: url("../../../view/theme/diabook/icons/globe.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.unglobe { background-image: url("../../../view/theme/diabook/icons/unglobe.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.edit {background-image: url("../../../view/theme/diabook/icons/pencil2.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat;} + + + + +.article { background-position: -50px 0px;} +/*.audio { background-position: -70px 0px;}*/ +.block { background-position: -90px 0px;} +/*.drop { background-position: -110px 0px;}*/ +/*.drophide { background-position: -130px 0px;}*/ +/*.edit { background-position: -150px 0px;}*/ +/*.camera { background-position: -170px 0px;}*/ +/*.dislike { background-position: -190px 0px;}*/ +/*.like { background-position: -210px 0px;}*/ +/*.link { background-position: -230px 0px;}*/ + +/*.globe { background-position: -50px -20px;}*/ +/*.noglobe { background-position: -70px -20px;}*/ +.no { background-position: -90px -20px;} +.pause { background-position: -110px -20px;} +.play { background-position: -130px -20px;} +/*.pencil { background-position: -150px -20px;}*/ +.small-pencil { background-position: -170px -20px;} +/*.recycle { background-position: -190px -20px;}*/ +/*.remote-link { background-position: -210px -20px;}*/ +.share { background-position: -230px -20px;} + +.tools { background-position: -50px -40px;} +/*.lock { background-position: -70px -40px;}*/ + +/*.video { background-position: -110px -40px;}*/ +.youtube { background-position: -130px -40px;} + +/*.attach { background-position: -190px -40px;}*/ +/*.language { background-position: -210px -40px;}*/ + + +.icon.on { background-image: url("../../../view/theme/diabook/icons/toogle_on.png"); background-repeat: no-repeat;} +.icon.off { background-image: url("../../../view/theme/diabook/icons/toogle_off.png"); background-repeat: no-repeat;} +.icon.prev { background-image: url("../../../view/theme/diabook/icons/prev.png"); background-repeat: no-repeat;} +.icon.next { background-image: url("../../../view/theme/diabook/icons/next.png"); background-repeat: no-repeat;} +/*.tagged { background-position: -130px -60px;}*/ + +.attachtype { + display: block; width: 20px; height: 23px; + background-image: url('../../../images/content-types.png'); +} + +.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; } + +.icon.drop, .icon.drophide { + float: left; +} + +.icon { + display: block; + width: 20px; + height: 20px; + /*background-image: url('icons.png');*/ +} + +.icon { + background-color: transparent ; + background-repeat: no-repeat; + /* background-position: left center; */ + display: block; + overflow: hidden; + text-indent: -9999px; + padding: 1px; +} + +.icon.border.camera{ + background-image: url("../../../view/theme/diabook/icons/camera.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } + +.icon.border.link{ + background-image: url("../../../view/theme/diabook/icons/weblink.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + margin-left: 10px; + } + +.icon.text { + text-indent: 0px; +} +.icon.s10 { + min-width: 10px; + height: 10px; +} +.icon.s10.notify { + background-image: url("../../../images/icons/10/notify_off.png"); +} +.icon.s10.gear { + background-image: url("../../../images/icons/10/gear.png"); +} +.icon.s10.add { + background-image: url("../../../images/icons/10/add.png"); +} +.icon.s10.delete { + background-image: url("../../../images/icons/10/delete.png"); +} +.icon.s10.edit { + background-image: url("../../../images/icons/10/edit.png"); +} +.icon.s10.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s10.menu { + background-image: url("../../../images/icons/10/menu.png"); +} +.icon.s10.link { + background-image: url("../../../images/icons/10/link.png"); +} +.icon.s10.lock { + background-image: url("../../../images/icons/10/lock.png"); +} +.icon.s10.unlock { + background-image: url("../../../images/icons/10/unlock.png"); +} +.icon.s10.text { + padding: 2px 0px 0px 15px; + font-size: 10px; +} +.icon.s16 { + min-width: 16px; + height: 16px; +} +.icon.s16.notify { + background-image: url("../../../images/icons/16/notify_off.png"); +} +.icon.s16.gear { + background-image: url("../../../images/icons/16/gear.png"); +} +.icon.s16.add { + background-image: url("../../../images/icons/16/add.png"); +} +.icon.s16.delete { + background-image: url("../../../images/icons/16/delete.png"); +} +/*.icon.s16.edit { + background-image: url("../../../images/icons/16/edit.png"); +}*/ +.icon.s16.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s16.menu { + background-image: url("../../../images/icons/16/menu.png"); +} +/*.icon.s16.link { + background-image: url("../../../images/icons/16/link.png"); +}*/ +.icon.s16.lock { + background-image: url("../../../images/icons/16/lock.png"); +} +.icon.s16.unlock { + background-image: url("../../../images/icons/16/unlock.png"); +} +.icon.s16.text { + padding: 4px 0px 0px 20px; + font-size: 10px; +} +.icon.s22 { + min-width: 22px; + height: 22px; +} +.icon.s22.notify { + background-image: url("../../../images/icons/22/notify_off.png"); +} +.icon.s22.gear { + background-image: url("../../../images/icons/22/gear.png"); +} +.icon.s22.add { + background-image: url("../../../images/icons/22/add.png"); +} +.icon.s22.delete { + background-image: url("../../../images/icons/22/delete.png"); +} +.icon.s22.edit { + background-image: url("../../../images/icons/22/edit.png"); +} +.icon.s22.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s22.menu { + background-image: url("../../../images/icons/22/menu.png"); +} +.icon.s22.link { + background-image: url("../../../images/icons/22/link.png"); +} +.icon.s22.lock { + background-image: url("../../../images/icons/22/lock.png"); +} +.icon.s22.unlock { + background-image: url("../../../images/icons/22/unlock.png"); +} +.icon.s22.text { + padding: 10px 0px 0px 25px; + width: 200px; +} +.icon.s48 { + width: 48px; + height: 48px; +} +.icon.s48.notify { + background-image: url("../../../images/icons/48/notify_off.png"); +} +.icon.s48.gear { + background-image: url("../../../images/icons/48/gear.png"); +} +.icon.s48.add { + background-image: url("../../../images/icons/48/add.png"); +} +.icon.s48.delete { + background-image: url("../../../images/icons/48/delete.png"); +} +.icon.s48.edit { + background-image: url("../../../images/icons/48/edit.png"); +} +.icon.s48.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s48.menu { + background-image: url("../../../images/icons/48/menu.png"); +} +.icon.s48.link { + background-image: url("../../../images/icons/48/link.png"); +} +.icon.s48.lock { + background-image: url("../../../images/icons/48/lock.png"); +} +.icon.s48.unlock { + background-image: url("../../../images/icons/48/unlock.png"); +} + +#contact-edit-links ul { + list-style: none; + list-style-type: none; +} + +.hide-comments-outer { + margin-left: 80px; + margin-bottom: 5px; + width: 484px; + border-bottom: 1px solid #BDCDD4; + border-top: 1px solid #BDCDD4; + + padding: 8px; +} + +/* global */ +body { + font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + background-color: #ffffff; + color: #2d2d2d; + margin: 50px auto auto; + display: table; +} + +h4 { + font-size: 1.1em; +} + +a { + color: #3465A4; + /* color: #3e3e8c; */ + text-decoration: none; +} +a:hover { + /* color: blue; */ + text-decoration: underline +} + +.wall-item-name-link { +/* float: left;*/ +} + +.wall-item-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} + +.left { + float: left; +} +.right { + float: right; +} +.hidden { + display: none; +} +.clear { + clear: both; +} +.fakelink { + color: #3465A4; + /* color: #3e3e8c; */ + text-decoration: none; + cursor: pointer; +} +.fakelink:hover { + /* color: blue; */ + /*color: #005c94; */ + text-decoration: underline; +} +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; +} +#panel { + position: absolute; + width: 12em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 1em; + list-style: none; + border: 3px solid #364e59; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +/* tool */ +.tool { + height: auto; + overflow: auto; + padding: 3px; +} +#saved-search-ul .tool:hover, +#nets-sidebar .tool:hover, +#sidebar-group-list .tool:hover { + background: #EEE; +} +.tool .label { + float: left; +} +.tool .action { + float: right; +} +.tool a { + color: ##3F8FBA; +} +.tool a:hover { + text-decoration: none; +} +/* 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; +} +/* header */ +header { + position: fixed; + left: 0%; + right: 80%; + top: 0px; + margin: 0px; + padding: 0px; + width: 22%; + height: 32px; + background: #000; + z-index: 100; + -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); +} +header #site-location { + display: none; +} +header #banner { + overflow: hidden; + text-align: left; + width: 82%%; + margin-left: 25%; +} +header #banner a, +header #banner a:active, +header #banner a:visited, +header #banner a:link, +header #banner a:hover { + color: #ffffff; + text-decoration: none; + outline: none; + vertical-align: middle; +} +header #banner #logo-img { + height: 25px; + margin-top: 5px; +} +header #banner #logo-text { + font-size: 22px; + position: absolute; + top: 15%; +} +/* nav */ +nav { + width: 80%; + height: 32px; + position: fixed; + left: 22%; + top: 0px; + padding: 0px; + background: #000; + color: #ffffff; + z-index: 99; + -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); +} +nav a, +nav a:active, +nav a:visited, +nav a:link, +nav a:hover { + color: #ffffff; + text-decoration: none; + outline: none; +} +nav #banner { + overflow: hidden; + /*text-align: center;*/ + width: 100%; +} +nav #banner a, +nav #banner a:active, +nav #banner a:visited, +nav #banner a:link, +nav #banner a:hover { + color: #ffffff; + text-decoration: none; + outline: none; + vertical-align: bottom; +} +nav #banner #logo-img { + height: 22px; + margin-top: 5px; +} +nav #banner #logo-text { + font-size: 22px; +} +nav #navbar{ + } +nav ul { + margin: 0px; + padding: 0px 20px; +} +nav ul li { + list-style: none; + margin: 0px; + /* padding: 1px 1px 3px 1px; */ + float: left; +} +nav ul li .menu-popup { + left: 0px; + right: auto; +} + +nav #logo-img { + height: 25px; + margin-top: 4px; + margin-left: 30px; +} + +nav #logo-text { + font-size: 22px; + margin-top: 3px; + margin-right: 15px; +} +nav .nav-menu-search { + position: relative; + + margin: 3px 17px; + margin-right: 0px; + height: 17px; + width: 180px; + +} + +nav #search-box #search-text { + background-image: url('icons/lupe.png'); + background-repeat:no-repeat; + padding-left:20px; + } + + +nav .nav-menu-icon { + position: relative; + height: 22px; + padding: 5px; + margin: 0px 7px; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +nav .nav-menu-icon.selected { + background-color: #fff; +} +nav .nav-menu-icon img { + width: 22px; + height: 22px; +} +nav .nav-menu-icon .nav-notify { + top: 3px; +} +nav .nav-menu { + position: relative; + height: 16px; + padding: 5px; + margin: 3px 15px 0px; + font-size: 13px; + /*border-bottom: 3px solid #364A84;*/ +} +nav .nav-menu.selected { + /*border-bottom: 3px solid #9eabb0;*/ +} +nav .nav-notify { + display: none; + position: absolute; + background-color: #ff0000; + /* background-color: #19aeff; */ + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + font-size: 10px; + font-weight: 900; + padding: 1px 4px; + top: 0px; + right: -6px; + min-width: 10px; + text-align: center; +} +nav .nav-notify.show { + display: block; +} +nav #nav-help-link, +nav #nav-search-link, +nav #nav-directory-link, +nav #nav-apps-link, +nav #nav-site-linkmenu, +nav #nav-home-link, +nav #nav-user-linkmenu +{ + float: right; +} +nav #nav-user-linkmenu{ + margin-right: 0px; + } +nav #nav-home-link, #nav-directory-link, #nav-apps-link{ + margin-left: 0px; + margin-right: 0px; + font-weight: bold; + margin: 3px 5px; + } +nav #nav-directory-link{ + margin-right: 0px; + } +nav #nav-home-link{ + margin-left: 0px; + } +nav #nav-help-link .menu-popup, +nav #nav-search-link .menu-popup, +nav #nav-directory-link .menu-popup, +nav #nav-apps-link .menu-popup, +nav #nav-site-linkmenu .menu-popup { + right: 0px; + left: auto; +} + +nav #nav-messages-linkmenu.on .icon.messages, nav #nav-messages-linkmenu.selected .icon.messages{ + background-image: url("../../../view/theme/diabook/icons/messages2.png"); + } + +/*nav #nav-notifications-linkmenu.on .icon.notify,*/ nav #nav-notifications-linkmenu.selected .icon.notify{ + background-image: url("../../../view/theme/diabook/icons/notify2.png"); + } + +nav #nav-contacts-linkmenu.on .icon.contacts, nav #nav-contacts-linkmenu.selected .icon.contacts{ + background-image: url("../../../view/theme/diabook/icons/contacts2.png"); + } + +nav #nav-apps-link.selected { + background-color: #364e59; +} + +#nav-notifications-mark-all { + /* padding: 1px 1px 2px 26px; */ + /* border-bottom: 1px solid #364E59; */ + /* margin: 0px 0px 2px 0px; + padding: 5px 10px; */ +} + +#nav-notifications-see-all { + /* padding: 1px 1px 2px 26px; */ + /* border-bottom: 1px solid #364E59; */ + /* margin: 0px 0px 2px 0px; + padding: 5px 10px; */ +} + +.notify-seen { + background: none repeat scroll 0 0 #DDDDDD; + } + +ul.menu-popup { + position: absolute; + display: none; + width: 11em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 0px; + list-style: none; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +ul.menu-popup a { + display: block; + color: #2d2d2d; + padding: 5px 10px; + text-decoration: none; +} +ul.menu-popup a:hover { + background-color: #fff797; /*bdcdd4;*/ + color: #000; +} +ul.menu-popup .menu-sep { + border-top: 1px solid #9eabb0; +} +ul.menu-popup li { + float: none; + overflow: auto; + height: auto; + display: block; +} +ul.menu-popup li img { + float: left; + width: 16px; + height: 16px; + padding-right: 5px; +} +ul.menu-popup .empty { + padding: 5px; + text-align: center; + color: #9eabb0; +} +/* autocomplete popup */ +.acpopup { + max-height: 150px; + background-color: #ffffff; + color: #2d2d2d; + border: 1px solid #MenuBorder; + overflow: auto; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +.acpopupitem { + color: #2d2d2d; + padding: 4px; + clear: left; +} +.acpopupitem img { + float: left; + margin-right: 4px; +} +.acpopupitem.selected { + background-color: #bdcdd4; +} +#nav-notifications-menu { + width: 400px; + max-height: 550px; + overflow: auto; +} +/* #nav-notifications-menu a { + display: inline; + padding: 5px 0px; + margin: 0px 0px 2px 0px; +} +#nav-notifications-menu li:hover { + background-color: #bdcdd4; +}*/ + +#nav-notifications-menu img { + float: left; + margin-right: 5px; +} +#nav-notifications-menu .contactname { + font-weight: bold; +} +#nav-notifications-menu .notif-when { + font-size: 10px; + color: #9eabb0; + display: block; +} + +.notif-image { + width: 32px; + height: 32px; + padding: 7px 7px 0px 0px; +} + +/*profile_side*/ +#profile_side { + margin-bottom: 30px; +} +#ps-usericon{ + height: 25px + } +#ps-username{ + font-size: 1.17em; + font-weight: bold; + vertical-align: top; + position: absolute; + padding-top: 4px; + padding-left: 5px; + color: #2D2D2D; + } +#ps-username:hover{ + text-decoration: none; + } +.menu-profile-side{ + list-style: none; + padding-left: 0px; + min-height: 0px; + } +.menu-profile-list{ + height: auto; + overflow: auto; + padding-top: 3px; + padding-bottom: 3px; + padding-left: 16px; + min-height: 16px; + list-style: none; + } +.menu-profile-list:hover{ + background: #EEE; + } +.menu-profile-list-item{ + padding-left: 5px; + } +.menu-profile-list-item:hover{ + text-decoration: none; + } +/*http://prothemedesign.com/circular-icons/*/ +.menu-profile-list.home{ + background: url("../../../view/theme/diabook-blue/icons/home.png") no-repeat; + } +.menu-profile-list.photos{ + background: url("../../../view/theme/diabook-blue/icons/mess_side.png") no-repeat; + } +.menu-profile-list.events{ + background: url("../../../view/theme/diabook-blue/icons/events.png") no-repeat; + } +.menu-profile-list.notes{ + background: url("../../../view/theme/diabook-blue/icons/notes.png") no-repeat; + } +.menu-profile-list.foren{ + background: url("../../../view/theme/diabook-blue/icons/pubgroups.png") no-repeat; + } +.menu-profile-list.com_side{ + background: url("../../../view/theme/diabook-blue/icons/com_side.png") no-repeat; + } + +/* aside */ +aside { + display: table-cell; + vertical-align: top; + width: 160px; + padding: 0px 10px 0px 10px; + border-right: 1px solid #D2D2D2; + float: left; + /* background: #F1F1F1; */ +} + +aside .vcard .fn { + font-size: 18px; + font-weight: bold; + margin-bottom: 5px; +} +aside .vcard .title { + margin-bottom: 5px; +} +aside .vcard dl { + height: auto; + overflow: auto; +} +aside .vcard dt { + float: left; + margin-left: 0px; + /*width: 35%;*/ + text-align: right; + color: #999999; +} +aside .vcard dd { + float: left; + margin-left: 5px; + /*width: 60%;*/ +} +aside #profile-extra-links ul { + padding: 0px; + margin: 0px; +} +aside #profile-extra-links li { + padding: 0px; + margin: 0px; + list-style: none; +} +aside #dfrn-request-link { + display: block; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + color: #ffffff; + background: #005c94 url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform: uppercase; + padding: 4px 2px 2px 35px; +} +aside #dfrn-request-link:hover { + text-decoration: none; + background-color: #36c; + /* background-color: #19aeff; */ +} +aside #profiles-menu { + width: 20em; +} +aside #search-text { + width: 150px; +} +aside #side-follow-url { + width: 150px; + } +aside #side-peoplefind-url { + width: 150px; + } +#contact-block { + overflow: auto; + height: auto; +} +#contact-block .contact-block-h4 { + float: left; + margin: 5px 0px; +} +#contact-block .allcontact-link { + float: right; + margin: 5px 0px; +} +#contact-block .contact-block-content { + clear: both; + overflow: auto; + height: auto; +} +#contact-block .contact-block-link { + float: left; + margin: 0px 2px 2px 0px; +} +#contact-block .contact-block-link img { + widht: 55px; + height: 55px; +} +#lost-password-link { + float: left; + margin-right: 20px; + } +/* widget */ +.widget { + margin-bottom: 2em; + /*.action .s10 { width: 10px; overflow: hidden; padding: 0px;} + .action .s16 { width: 16px; overflow: hidden; padding: 0px;}*/ +/* font-size: 12px; */ +} +.widget h3 { + padding: 0px; + margin: 2px; +} +.widget .action { + opacity: 0.1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget input.action { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget:hover .title .action { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget .tool:hover .action { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget .tool:hover .action.ticked { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget ul { + padding: 0px; +} +.widget ul li { + padding-left: 16px; + min-height: 16px; + list-style: none; +} +.widget .tool.selected { + background: url("../../../view/theme/diabook/icons/selected.png") no-repeat left center; +} +/* widget: search */ +#add-search-popup { + width: 200px; + top: 18px; +} +/* section */ +section { + display: table-cell; + vertical-align: top; + width: auto; + padding: 0px 0px 0px 12px; +} + +body .pageheader{ + text-align: center; + margin-top: 25px; + font-size: 0px; + } + +#id_username { + width: 173px; + } +#id_password { + width: 173px; + } +#id_openid_url { + width: 173px; + } +#contact-edit-end { + } +.pager { + padding: 10px; + text-align: center; + font-size: 1.0em; + clear: both; + display: block; +} +.tabs { + + background-position: 0 -20px; + background-repeat: repeat-x; + height: 27px; + padding: 0; + } +.tab.button { + margin-right: 5px; + margin-left: 5px; + /*background: none repeat scroll 0 0 #F8F8F8;*/ + border: 1px solid #CCCCCC; + border-radius: 3px 3px 3px 3px; + font-weight: normal; + padding: 3px; + color: #333333; + } + +#birthday-notice, #event-notice, #birthday-wrapper, #event-wrapper{ + margin-bottom: 10px; + } + +right_aside { + display: table-cell; + vertical-align: top; + width: 160px; + padding-right: 10px; + /*border-left: 1px solid #D2D2D2;*/ + + /* background: #F1F1F1; */ +} +right_aside h3 {border-bottom: 1px solid #D2D2D2; padding-top: 5px; padding-bottom: 0px; padding-left: 5px; margin-bottom: 0px; +margin-top:30px;} +right_aside .directory-item { width: 50px; height: 50px; vertical-align: center; text-align: center; } +right_aside .directory-photo { margin: 0px; } +right_aside .directory-photo-img { max-width: 45px; max-height: 45px; } +right_aside #likes { margin: 0px; padding: 0px; list-style: none; } +right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px solid #D2D2D2;} + +/* wall item */ +.tread-wrapper { + border-bottom: 1px solid #D2D2D2; + position: relative; + padding: 5px; + margin-bottom: 0px; + width: 575px; +} +.wall-item-decor { + position: absolute; + left: 790px; + top: -10px; + width: 16px; +} + +.wall-item-container { + display: table; + width: 580px; +} + + +.wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom { + display: table-row; +} +.wall-item-bottom { + font-size: 13px; +} +.wall-item-container .wall-item-bottom { +/* opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; */ +} +.wall-item-container:hover .wall-item-bottom { +/* opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; */ +} +.wall-item-container .wall-item-info { + display: table-cell; + vertical-align: top; + text-align: left; + width: 80px; +} +.wall-item-container .wall-item-location { + padding-right: 40px; + display: table-cell; +} +.wall-item-container .wall-item-ago { + word-wrap: break-word; + width: 50px; + margin-left: 10px; + color: #999; +} +.wall-item-location { + + clear: both; + overflow: hidden; + + margin-bottom: 5px; +} + +.wall-item-container .wall-item-content { + font-size: 13px; + max-width: 720px; + word-wrap: break-word; + line-height: 1.4; +} + +.wall-item-container .wall-item-content img { + max-width: 700px; +} +.wall-item-container .wall-item-links, .wall-item-container .wall-item-actions { + display: table-cell; + vertical-align: middle; +} +.wall-item-container .wall-item-links .icon, .wall-item-container .wall-item-actions .icon { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-links .icon:hover, .wall-item-container .wall-item-actions .icon:hover { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-name { + font-weight: bold; +} +.wall-item-container .wall-item-actions-author { + width: 100%; + margin-bottom: 0.3em; +} +.wall-item-container .wall-item-actions-social { + float: left; + margin-bottom: 1px; + display: table-cell; +} +.wall-item-container .wall-item-actions-social a { + margin-right: 1em; +} +.wall-item-actions-social a { + float: left; +} +.wall-item-container .wall-item-actions-tools { + float: right; + width: 80px; + display: table-cell; +} +.wall-item-container .wall-item-actions-tools a { + float: right; +} +.wall-item-container .wall-item-actions-tools input { + float: right; +} +.wall-item-container.comment { + margin-top: 5px; + margin-bottom: 5px; + margin-left: 80px; + width: 500px; + border-bottom: 1px solid hsl(198, 21%, 79%); +} +.wall-item-container.comment .contact-photo { + width: 32px; + height: 32px; + margin-left: 16px; + /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/ + +} +.wall-item-container.comment { + top: 15px !important; + left: 15px !important; +} +.wall-item-container.comment .wall-item-links { + padding-left: 12px; +} +.wall-item-comment-wrapper { + margin: 1px 5px 1px 80px; +} +.wall-item-comment-wrapper .comment-edit-photo { + display: none; +} +.wall-item-comment-wrapper textarea { + height: 2.0em; + width: 100%; + font-size: 10px; + color: #999999; + border: 1px solid #DDD; + padding: 0.3em; + font-size: 14px; +} +.wall-item-comment-wrapper .comment-edit-text-full { + font-size: 14px; + height: 4em; + color: #2d2d2d; + border: 1px solid #2d2d2d; +} +.comment-edit-preview { + width: 710px; + border: 1px solid #2d2d2d; + margin-top: 10px; +} +.comment-edit-preview .contact-photo { + width: 32px; + height: 32px; + margin-left: 16px; + /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/ + +} +.comment-edit-preview { + top: 15px !important; + left: 15px !important; +} +.comment-edit-preview .wall-item-links { + padding-left: 12px; +} +.comment-edit-preview .wall-item-container { + width: 700px; +} +.comment-edit-preview .tread-wrapper { + width: 700px; + padding: 0; + margin: 10px 0; +} + +.shiny { + /* border-right: 10px solid #fce94f; */ + border-right: 1px solid #A7C7F7; + padding-right: 12px; +} + +#jot-preview-content{ + margin-top: 30px;} + +#jot-preview-content .tread-wrapper { + background-color: #fff797; +} + +.wall-item-tags { + padding-top: 1px; + padding-bottom: 2px; +} +.tag { + /*background: url("../../../images/tag_b.png") repeat-x center left;*/ + color: #3465A4; + padding-left: 3px; + font-size: 12px; +} +.tag a { + padding-right: 5px; + /*background: url("../../../images/tag.png") no-repeat center right;*/ + color: #3465A4; +} +.wwto { + position: absolute !important; + width: 25px; + height: 25px; + background: #FFFFFF; + border: 2px solid #364e59; + height: 25px; + width: 25px; + overflow: hidden; + padding: 1px; + position: absolute !important; + top: 40px; + left: 30px; + -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); +} +.wwto .contact-photo { + width: auto; + height: 25px; +} +/* contacts menu */ +.contact-photo-wrapper { + position: relative; + width: 80px; +} + +.contact-photo-wrapper.wwto { + width: 25px; +} + +.contact-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} +.contact-photo img { + width: 48px; + height: 48px; +} + +.contact-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 15px; +} +.contact-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.contact-wrapper { + left: 0px; + top: 63px; +} +.contact-photo { + width: 48px; + height: 48px; +} +.contact-photo img { + width: 48px; + height: 48px; +} +.contact-name { + /* text-align: center; */ + /*font-weight: bold;*/ + font-size: 12px; +} +.contact-details { + color: #999999; +} +/* editor */ +.jothidden { + display: none; +} +#jot { + width: 585px; + margin: 0px 2em 20px 0px; +} +#profile-jot-form #profile-jot-text { + height: 2.0em; + width: 99%; + font-size: 15px; + color: #999999; + border: 1px solid #DDD; + padding: 0.3em; + margin-bottom: 10px; +} +#jot #jot-tools { + margin: 0px; + padding: 0px; + height: 40px; + overflow: none; + width: 583px; + background-color: #fff; + border-bottom: 2px solid #9eabb0; +} + +#jot #jot-tools li { + list-style: none; + float: left; + width: 80px; + height: 40px; + border-bottom: 2px solid #9eabb0; +} +#jot #jot-tools li a { + display: block; + color: #cccccc; + width: 100%; + height: 40px; + text-align: center; + line-height: 40px; + overflow: hidden; +} +#jot #jot-tools li:hover { + background-color: #364e59; + border-bottom: 2px solid #bdcdd4; +} +#jot #jot-tools li.perms { + float: right; + width: 40px; +} +#jot #jot-tools li.perms a.unlock { + width: 30px; + border-left: 10px solid #cccccc; + background-color: #cccccc; + background-position: left center; +} +#jot #jot-tools li.perms a.lock { + width: 30px; + border-left: 10px solid #666666; + background-color: #666666; +} +#jot #jot-tools li.submit { + float: right; + background-color: #cccccc; + border-bottom: 2px solid #cccccc; + border-right: 1px solid #666666; + border-left: 1px solid #666666; +} +#jot #jot-tools li.submit input { + border: 0px; + margin: 0px; + padding: 0px; + background-color: #cccccc; + color: #666666; + width: 80px; + height: 40px; + line-height: 40px; +} +#jot #jot-tools li.submit input:hover { + background-color: #bdcdd4; + color: #666666; +} +#jot #jot-tools li.loading { + float: right; + background-color: #ffffff; + width: 20px; + vertical-align: center; + text-align: center; + border-top: 2px solid #9eabb0; + height: 38px; +} +#jot #jot-tools li.loading img { + margin-top: 10px; +} +#profile-jot-form #jot-title { + + border-radius: 5px 5px 5px 5px; + font-weight: bold; + height: 20px; + margin: 0 0 5px; + width: 60%; + border: 1px solid #ffffff; +} +#profile-jot-form #jot-title:-webkit-input-placeholder { + font-weight: normal; +} +#profile-jot-form #jot-title:-moz-placeholder { + font-weight: normal; +} +#profile-jot-form #profile-jot-text_parent #profile-jot-text_tbl{ + width: 585px; + height: 100px; + } +#jot #jot-title:hover { + border: 1px solid #999999; +} +#jot #jot-title:focus { + border: 1px solid #999999; +} +#jot #character-counter { + width: 80px; + float: right; + text-align: right; + height: 20px; + line-height: 20px; + padding-right: 20px; +} +#jot-perms-icon, +#profile-location, +#profile-nolocation, +#profile-youtube, +#profile-video, +#profile-audio, +#profile-link, +#profile-title, +#wall-image-upload, +#wall-file-upload, +#wall-image-upload-div, +#wall-file-upload-div, +.hover, .focus { + cursor: pointer; + margin-top: 2px; +} +#profile-jot-wrapper{ + margin: 0 2em 20px 0; + width: 585px; + } + +#profile-jot-submit-wrapper { + margin-bottom: 50px; + width: 585px; +} + +#profile-jot-submit { + float: right; + margin-top: 2px; + +} +#profile-upload-wrapper { + float: left; + margin-top: 2px; + margin-left: 10px; + +} +#profile-attach-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-rotator { + float: left; + margin-left: 30px; + margin-top: 2px; +} +#profile-link-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-youtube-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-video-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-audio-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-location-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-jot-perms { + float: left; + margin-left: 45px; + margin-top: 2px; +} +#jot-preview-link { + float: right; + margin-left: 10px; + margin-top: 2px; + font-size: 10px; +} +#profile-jot-perms{ + float: right; + margin-left: 10px; + margin-top: 2px; + } +/** buttons **/ +.button.creation1 { + background-color: #fff; + border: 1px solid #777777; + background-image: -moz-linear-gradient(center top , white 0%, #DDDDDD 100%); + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; +} +.button.creation2 { + background-color: #33ACFF; + background-image: -moz-linear-gradient(center top , #66C1FF 0%, #0097FF 100%); + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; +} +/*input[type="submit"] { + border: 0px; + background-color: @ButtonBackgroundColor; + color: @ButtonColor; + padding: 0px 10px; + .rounded(5px); + height: 18px; +}*/ +/** acl **/ +#photo-edit-perms-select, #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper { + display: block!important; +} +#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; + color: #999999; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +#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-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 **/ +/** tab buttons **/ +ul.tabs { + list-style-type: none; + padding-bottom: 10px; + font-size: 13px; +} +ul.tabs li { + float: left; + margin-left: 5px; +} +ul.tabs li .active { + background-color: #333333; + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; +} +/** + * 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 .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; +} +.field .hidden { + display: none!important; +} +.field.radio .field_help { + margin-left: 0px; +} +#directory-search-form{ + margin-bottom: 50px; + } +#profile-edit-links-end { + clear: both; + margin-bottom: 15px; +} + +#profile-edit-links ul { margin: 20px; padding-bottom: 20px; list-style: none; } + +#profile-edit-links li { + float: left; + list-style: none; + margin-left: 10px; +} + +.profile-edit-side-div { + display: none; +} + +#register-form label, +#profile-edit-form label { + width: 300px; float: left; +} + +.required { + display: inline; + color: #B20202; +} + +/* 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; +} +/* contacts */ +.contact-entry-wrapper { + width: 120px; + height: 120px; + float: left; +} +/* photo */ +.lframe { + float: left; +} +/* profile match wrapper */ +.profile-match-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 20px; +} +.profile-match-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.profile-match-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.profile-match-wrapper { + left: 0px; + top: 63px; +} + +.contact-photo-menu-button { + position: relative; + background-image: url("../../../images/icons/16/menu.png"); + background-position: top left; + background-repeat: no-repeat; + margin: 0px 0px -16px 0px; + padding: 0px; + width: 16px; + height: 16px; + top: -20px; left:0px; + overflow: hidden; + text-indent: 40px; + display: none; + +} +.contact-photo-menu { + width: 11em; + border: 3px solid #364e59; + color: #2d2d2d; + background: #FFFFFF; +/* position: absolute;*/ + position: relative; + left: 0px; top: 0px; + display: none; + z-index: 10000; +} +.contact-photo-menu ul { margin:0px; padding: 0px; list-style: none } +.contact-photo-menu li a { + display: block; + padding: 5px 10px; + color: #2d2d2d; + text-decoration: none; +} +.contact-photo-menu li a:hover { + background-color: #bdcdd4; +} + +/* page footer */ +footer { + height: 100px; + display: table-row; +} + +blockquote { + border-left: 1px solid #D2D2D2; + padding-left: 9px; + margin: 0 0 0 .8ex; +} +.aprofile dt{ +box-shadow: 1px 1px 5px 0; + color: #666666; + margin: 15px 0 5px; + padding-left: 5px; + } +/* ================== */ +/* = Contacts Block = */ +/* ================== */ + +.contact-block-img { + width: 55px; + height: 55px; + padding-right: 3px; +} +.contact-block-div { + float: left; +} + +.contact-block-textdiv { width: 150px; height: 34px; float: left; } +#contact-block-end { clear: both; } + +#group-edit-wrapper { + margin-bottom: 10px; +} + +#group-members-end { + clear: both; +} +#group-edit-desc { + margin-top: 15px; +} + +/* +#group-separator, +#prof-separator { display: none;} +*/ + +#prvmail-to-label, #prvmail-subject-label, #prvmail-message-label { + margin-bottom: 10px; + margin-top: 20px; +} + +#prvmail-submit { + float: right; + margin-top: 10px; +} +#prvmail-subject +{ +background: none repeat scroll 0 0 #FFFFFF; +border: 1px solid #CCCCCC; +border-radius: 5px 5px 5px 5px; +font-weight: bold; +height: 20px; +margin: 0 0 5px; +vertical-align: middle; +} +#prvmail-form{ + width: 597px; + } +#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; +} + +/* ========== */ +/* = Events = */ +/* ========== */ +.eventcal { + float: left; + font-size: 20px; +} + +.vevent { + border: 1px solid #CCCCCC; +} +.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; +} +.lightbox{ + float: left; + } + +#photo-photo { + float: left; +} +#photo-like-div .wall-item-like-buttons { + float: left; + margin-right: 5px; + margin-top: 30px; + } +.comment-edit-text-empty { + margin: 10px 0 0; + width: 85%; +} +.comment-edit-photo { + margin: 10px 0 0; +} +.wall-item-like-buttons .icon.like { +float: left; +} + +#photo-photo-end { + clear: both; +} + +.tabs .comment-wwedit-wrapper { + display: block; + margin-top: 30px; + margin-left: 50px; + } + +.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; +} + +/* ============= */ +/* = Directory = */ +/* ============= */ +/* contacts menu */ +.contact-photo-wrapper { + position: relative; +} +.contact-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} +.contact-photo img { + width: 48px; + height: 48px; +} +.contact-photo-menu-button { + display: none; + /* position: absolute; */ + /* position: absolute; */ + left: -2px; + top: -20px; +} +.contact-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 15px; +} +.contact-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo-menu-button { + left: 0px; + top: 63px; +} +.directory-item { + float: left; + width: 200px; + height: 200px; +} +.directory-item .contact-photo { + width: 175px; + height: 175px; +} +.directory-item .contact-photo img { + width: 175px; + height: 175px; +} +.contact-name { + text-align: left; + font-weight: bold; + font-size: 12px; +} +.contact-details { + color: #999999; +} +#side-bar-photos-albums li{ +list-style-type: disc; +} +#side-bar-photos-albums ul li{ + margin-left: 30px; + padding-left: 0px; + } +#side-bar-photos-albums{ + margin-top: 15px; + } +.photo-top-photo, .photo-album-photo { + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.photo-album-image-wrapper, .photo-top-image-wrapper { + float: left; + -moz-box-shadow: 0 0 5px #888; + -webkit-box-shadow: 0 0 5px #888; + box-shadow: 0 0 5px #888; + background-color: #000; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding-bottom: 20px; + position: relative; + margin: 0 10px 10px 0; + width: 200px; height: 140px; + overflow: hidden; +} +/* +.photo-top-album-name { + position: absolute; + bottom: 0; + padding: 0 5px; +}*/ +/*.photo-top-image-wrapper { + position: relative; + float: left; + margin-top: 15px; + margin-right: 15px; + width: 200px; height: 200px; + +}*/ +.photo-top-album-name { + width: 100%; + position: absolute; + bottom: 0px; + padding-left: 3px; + background-color: #EEE; +} +.photo-top-album-link{ + color: #3465A4; + } +#photo-top-end { + clear: both; +} + +#photo-top-links { + margin-bottom: 30px; + margin-left: 30px; +} + +#photos-upload-newalbum-div { + float: left; + width: 175px; +} \ No newline at end of file diff --git a/view/theme/diabook/style-profile.css b/view/theme/diabook/style-profile.css new file mode 100644 index 000000000..f0cf04d65 --- /dev/null +++ b/view/theme/diabook/style-profile.css @@ -0,0 +1,2461 @@ +/** + * Fabio Comuni + * Additional Changes: Michael Vogel + **/ + +/* ========= */ +/* = Admin = */ +/* ========= */ + +#adminpage { +/* width: 80%;*/ +} + +#pending-update { + float:right; + color: #ffffff; + font-weight: bold; + background-color: #FF0000; + padding: 0em 0.3em; +} + +.admin.linklist { + border: 0px; padding: 0px; +} + +.admin.link { + list-style-position: inside; + font-size: 1em; + padding: 5px; + width: 100px; + margin: 5px; +} + +#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 #898989; + margin-bottom: 5px; + margin-top: 10px; +} + +#adminpage .submit { + clear:left; +} + +#adminpage #pluginslist { + margin: 0px; padding: 0px; +} + +#adminpage .plugin { + list-style: none; + display: block; + /* border: 1px solid #888888; */ + padding: 1em; + margin-bottom: 5px; + clear: left; +} + +#adminpage .toggleplugin { + float:left; + margin-right: 1em; +} + +#adminpage table {width:100%; border-bottom: 1p 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: #eeeeee; } +#adminpage .selectall { text-align: right; } +/* icons */ + +.icon.contacts { + background-image: url("../../../view/theme/diabook/icons/contacts.png");} +.icon.notifications { + background-image: url("../../../view/theme/diabook/icons/notifications.png");} +.icon.notify { + background-image: url("../../../view/theme/diabook/icons/notify.png");} +.icon.messages { + background-image: url("../../../view/theme/diabook/icons/messages.png");} +.icon.community { + background-image: url("../../../view/theme/diabook/icons/community.png");} + +.icon.drop { background-image: url("../../../view/theme/diabook/icons/drop.png");} +.icon.drophide { background-image: url("../../../view/theme/diabook/icons/drop.png");} +.icon.dislike { background-image: url("../../../view/theme/diabook/icons/dislike.png");} +.icon.like { background-image: url("../../../view/theme/diabook/icons/like.png");} +.icon.pencil { background-image: url("../../../view/theme/diabook/icons/pencil.png");} +.icon.recycle { background-image: url("../../../view/theme/diabook/icons/recycle.png");} +.icon.remote-link { background-image: url("../../../view/theme/diabook/icons/remote.png");} +.icon.tagged { background-image: url("../../../view/theme/diabook/icons/tagged.png");} +.icon.file-as { background-image: url("../../../view/theme/diabook/icons/file_as.png");} +.star-item.icon.unstarred { background-image: url("../../../view/theme/diabook/icons/unstarred.png");} +.star-item.icon.starred { background-image: url("../../../view/theme/diabook/icons/starred.png");} +.icon.link { background-image: url("../../../view/theme/diabook/icons/link.png");} +.icon.lock { background-image: url("../../../view/theme/diabook/icons/lock.png");} +.icon.unlock { background-image: url("../../../view/theme/diabook/icons/unlock.png");} +.icon.language { background-image: url("../../../view/theme/diabook/icons/language.png");} + + +.camera { background-image: url("../../../view/theme/diabook/icons/camera.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.attach { background-image: url("../../../view/theme/diabook/icons/attach.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.video2 { background-image: url("../../../view/theme/diabook/icons/video.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.video { background-image: url("../../../view/theme/diabook/icons/video.png"); + display: block; width: 100%; height: 28px; background-repeat: no-repeat; + } +.audio2 { background-image: url("../../../view/theme/diabook/icons/audio.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.audio { background-image: url("../../../view/theme/diabook/icons/audio.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.weblink { background-image: url("../../../view/theme/diabook/icons/weblink.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.globe { background-image: url("../../../view/theme/diabook/icons/globe.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.unglobe { background-image: url("../../../view/theme/diabook/icons/unglobe.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.edit {background-image: url("../../../view/theme/diabook/icons/pencil2.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat;} + + + + +.article { background-position: -50px 0px;} +/*.audio { background-position: -70px 0px;}*/ +.block { background-position: -90px 0px;} +/*.drop { background-position: -110px 0px;}*/ +/*.drophide { background-position: -130px 0px;}*/ +/*.edit { background-position: -150px 0px;}*/ +/*.camera { background-position: -170px 0px;}*/ +/*.dislike { background-position: -190px 0px;}*/ +/*.like { background-position: -210px 0px;}*/ +/*.link { background-position: -230px 0px;}*/ + +/*.globe { background-position: -50px -20px;}*/ +/*.noglobe { background-position: -70px -20px;}*/ +.no { background-position: -90px -20px;} +.pause { background-position: -110px -20px;} +.play { background-position: -130px -20px;} +/*.pencil { background-position: -150px -20px;}*/ +.small-pencil { background-position: -170px -20px;} +/*.recycle { background-position: -190px -20px;}*/ +/*.remote-link { background-position: -210px -20px;}*/ +.share { background-position: -230px -20px;} + +.tools { background-position: -50px -40px;} +/*.lock { background-position: -70px -40px;}*/ + +/*.video { background-position: -110px -40px;}*/ +.youtube { background-position: -130px -40px;} + +/*.attach { background-position: -190px -40px;}*/ +/*.language { background-position: -210px -40px;}*/ + + +.icon.on { background-image: url("../../../view/theme/diabook/icons/toogle_on.png"); background-repeat: no-repeat;} +.icon.off { background-image: url("../../../view/theme/diabook/icons/toogle_off.png"); background-repeat: no-repeat;} +.icon.prev { background-image: url("../../../view/theme/diabook/icons/prev.png"); background-repeat: no-repeat;} +.icon.next { background-image: url("../../../view/theme/diabook/icons/next.png"); background-repeat: no-repeat;} +/*.tagged { background-position: -130px -60px;}*/ + +.attachtype { + display: block; width: 20px; height: 23px; + background-image: url('../../../images/content-types.png'); +} + +.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; } + +.icon.drop, .icon.drophide { + float: left; +} + +.icon { + display: block; + width: 20px; + height: 20px; + /*background-image: url('icons.png');*/ +} + +.icon { + background-color: transparent ; + background-repeat: no-repeat; + /* background-position: left center; */ + display: block; + overflow: hidden; + text-indent: -9999px; + padding: 1px; +} + +.icon.border.camera{ + background-image: url("../../../view/theme/diabook/icons/camera.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } + +.icon.border.link{ + background-image: url("../../../view/theme/diabook/icons/weblink.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + margin-left: 10px; + } + +.icon.text { + text-indent: 0px; +} +.icon.s10 { + min-width: 10px; + height: 10px; +} +.icon.s10.notify { + background-image: url("../../../images/icons/10/notify_off.png"); +} +.icon.s10.gear { + background-image: url("../../../images/icons/10/gear.png"); +} +.icon.s10.add { + background-image: url("../../../images/icons/10/add.png"); +} +.icon.s10.delete { + background-image: url("../../../images/icons/10/delete.png"); +} +.icon.s10.edit { + background-image: url("../../../images/icons/10/edit.png"); +} +.icon.s10.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s10.menu { + background-image: url("../../../images/icons/10/menu.png"); +} +.icon.s10.link { + background-image: url("../../../images/icons/10/link.png"); +} +.icon.s10.lock { + background-image: url("../../../images/icons/10/lock.png"); +} +.icon.s10.unlock { + background-image: url("../../../images/icons/10/unlock.png"); +} +.icon.s10.text { + padding: 2px 0px 0px 15px; + font-size: 10px; +} +.icon.s16 { + min-width: 16px; + height: 16px; +} +.icon.s16.notify { + background-image: url("../../../images/icons/16/notify_off.png"); +} +.icon.s16.gear { + background-image: url("../../../images/icons/16/gear.png"); +} +.icon.s16.add { + background-image: url("../../../images/icons/16/add.png"); +} +.icon.s16.delete { + background-image: url("../../../images/icons/16/delete.png"); +} +/*.icon.s16.edit { + background-image: url("../../../images/icons/16/edit.png"); +}*/ +.icon.s16.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s16.menu { + background-image: url("../../../images/icons/16/menu.png"); +} +/*.icon.s16.link { + background-image: url("../../../images/icons/16/link.png"); +}*/ +.icon.s16.lock { + background-image: url("../../../images/icons/16/lock.png"); +} +.icon.s16.unlock { + background-image: url("../../../images/icons/16/unlock.png"); +} +.icon.s16.text { + padding: 4px 0px 0px 20px; + font-size: 10px; +} +.icon.s22 { + min-width: 22px; + height: 22px; +} +.icon.s22.notify { + background-image: url("../../../images/icons/22/notify_off.png"); +} +.icon.s22.gear { + background-image: url("../../../images/icons/22/gear.png"); +} +.icon.s22.add { + background-image: url("../../../images/icons/22/add.png"); +} +.icon.s22.delete { + background-image: url("../../../images/icons/22/delete.png"); +} +.icon.s22.edit { + background-image: url("../../../images/icons/22/edit.png"); +} +.icon.s22.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s22.menu { + background-image: url("../../../images/icons/22/menu.png"); +} +.icon.s22.link { + background-image: url("../../../images/icons/22/link.png"); +} +.icon.s22.lock { + background-image: url("../../../images/icons/22/lock.png"); +} +.icon.s22.unlock { + background-image: url("../../../images/icons/22/unlock.png"); +} +.icon.s22.text { + padding: 10px 0px 0px 25px; + width: 200px; +} +.icon.s48 { + width: 48px; + height: 48px; +} +.icon.s48.notify { + background-image: url("../../../images/icons/48/notify_off.png"); +} +.icon.s48.gear { + background-image: url("../../../images/icons/48/gear.png"); +} +.icon.s48.add { + background-image: url("../../../images/icons/48/add.png"); +} +.icon.s48.delete { + background-image: url("../../../images/icons/48/delete.png"); +} +.icon.s48.edit { + background-image: url("../../../images/icons/48/edit.png"); +} +.icon.s48.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s48.menu { + background-image: url("../../../images/icons/48/menu.png"); +} +.icon.s48.link { + background-image: url("../../../images/icons/48/link.png"); +} +.icon.s48.lock { + background-image: url("../../../images/icons/48/lock.png"); +} +.icon.s48.unlock { + background-image: url("../../../images/icons/48/unlock.png"); +} + +#contact-edit-links ul { + list-style: none; + list-style-type: none; +} + +.hide-comments-outer { + margin-left: 80px; + margin-bottom: 5px; + width: 484px; + border-bottom: 1px solid #BDCDD4; + border-top: 1px solid #BDCDD4; + + padding: 8px; +} + +/* global */ +body { + font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + background-color: #ffffff; + color: #2d2d2d; + margin: 50px auto auto; + display: table; +} + +h4 { + font-size: 1.1em; +} + +a { + color: #3465A4; + /* color: #3e3e8c; */ + text-decoration: none; +} +a:hover { + /* color: blue; */ + text-decoration: underline +} + +.wall-item-name-link { +/* float: left;*/ +} + +.wall-item-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} + +.left { + float: left; +} +.right { + float: right; +} +.hidden { + display: none; +} +.clear { + clear: both; +} +.fakelink { + color: #3465A4; + /* color: #3e3e8c; */ + text-decoration: none; + cursor: pointer; +} +.fakelink:hover { + /* color: blue; */ + /*color: #005c94; */ + text-decoration: underline; +} +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; +} +#panel { + position: absolute; + width: 12em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 1em; + list-style: none; + border: 3px solid #364e59; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +/* tool */ +.tool { + height: auto; + overflow: auto; + padding: 3px; +} +#saved-search-ul .tool:hover, +#nets-sidebar .tool:hover, +#sidebar-group-list .tool:hover { + background: #EEE; +} +.tool .label { + float: left; +} +.tool .action { + float: right; +} +.tool a { + color: ##3F8FBA; +} +.tool a:hover { + text-decoration: none; +} +/* 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; +} +/* header */ +header { + position: fixed; + left: 0%; + right: 80%; + top: 0px; + margin: 0px; + padding: 0px; + width: 22%; + height: 32px; + background: #000; + z-index: 100; + -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); +} +header #site-location { + display: none; +} +header #banner { + overflow: hidden; + text-align: left; + width: 82%%; + margin-left: 25%; +} +header #banner a, +header #banner a:active, +header #banner a:visited, +header #banner a:link, +header #banner a:hover { + color: #ffffff; + text-decoration: none; + outline: none; + vertical-align: middle; +} +header #banner #logo-img { + height: 25px; + margin-top: 5px; +} +header #banner #logo-text { + font-size: 22px; + position: absolute; + top: 15%; +} +/* nav */ +nav { + width: 80%; + height: 32px; + position: fixed; + left: 22%; + top: 0px; + padding: 0px; + background: #000; + color: #ffffff; + z-index: 99; + -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); +} +nav a, +nav a:active, +nav a:visited, +nav a:link, +nav a:hover { + color: #ffffff; + text-decoration: none; + outline: none; +} +nav #banner { + overflow: hidden; + /*text-align: center;*/ + width: 100%; +} +nav #banner a, +nav #banner a:active, +nav #banner a:visited, +nav #banner a:link, +nav #banner a:hover { + color: #ffffff; + text-decoration: none; + outline: none; + vertical-align: bottom; +} +nav #banner #logo-img { + height: 22px; + margin-top: 5px; +} +nav #banner #logo-text { + font-size: 22px; +} +nav #navbar{ + } +nav ul { + margin: 0px; + padding: 0px 20px; +} +nav ul li { + list-style: none; + margin: 0px; + /* padding: 1px 1px 3px 1px; */ + float: left; +} +nav ul li .menu-popup { + left: 0px; + right: auto; +} + +nav #logo-img { + height: 25px; + margin-top: 4px; + margin-left: 30px; +} + +nav #logo-text { + font-size: 22px; + margin-top: 3px; + margin-right: 15px; +} +nav .nav-menu-search { + position: relative; + + margin: 3px 17px; + margin-right: 0px; + height: 17px; + width: 180px; + +} + +nav #search-box #search-text { + background-image: url('icons/lupe.png'); + background-repeat:no-repeat; + padding-left:20px; + } + + +nav .nav-menu-icon { + position: relative; + height: 22px; + padding: 5px; + margin: 0px 7px; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +nav .nav-menu-icon.selected { + background-color: #fff; +} +nav .nav-menu-icon img { + width: 22px; + height: 22px; +} +nav .nav-menu-icon .nav-notify { + top: 3px; +} +nav .nav-menu { + position: relative; + height: 16px; + padding: 5px; + margin: 3px 15px 0px; + font-size: 13px; + /*border-bottom: 3px solid #364A84;*/ +} +nav .nav-menu.selected { + /*border-bottom: 3px solid #9eabb0;*/ +} +nav .nav-notify { + display: none; + position: absolute; + background-color: #ff0000; + /* background-color: #19aeff; */ + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + font-size: 10px; + font-weight: 900; + padding: 1px 4px; + top: 0px; + right: -6px; + min-width: 10px; + text-align: center; +} +nav .nav-notify.show { + display: block; +} +nav #nav-help-link, +nav #nav-search-link, +nav #nav-directory-link, +nav #nav-apps-link, +nav #nav-site-linkmenu, +nav #nav-home-link, +nav #nav-user-linkmenu +{ + float: right; +} +nav #nav-user-linkmenu{ + margin-right: 0px; + } +nav #nav-home-link, #nav-directory-link, #nav-apps-link{ + margin-left: 0px; + margin-right: 0px; + font-weight: bold; + margin: 3px 5px; + } +nav #nav-directory-link{ + margin-right: 0px; + } +nav #nav-home-link{ + margin-left: 0px; + } +nav #nav-help-link .menu-popup, +nav #nav-search-link .menu-popup, +nav #nav-directory-link .menu-popup, +nav #nav-apps-link .menu-popup, +nav #nav-site-linkmenu .menu-popup { + right: 0px; + left: auto; +} + +nav #nav-messages-linkmenu.on .icon.messages, nav #nav-messages-linkmenu.selected .icon.messages{ + background-image: url("../../../view/theme/diabook/icons/messages2.png"); + } + +/*nav #nav-notifications-linkmenu.on .icon.notify,*/ nav #nav-notifications-linkmenu.selected .icon.notify{ + background-image: url("../../../view/theme/diabook/icons/notify2.png"); + } + +nav #nav-contacts-linkmenu.on .icon.contacts, nav #nav-contacts-linkmenu.selected .icon.contacts{ + background-image: url("../../../view/theme/diabook/icons/contacts2.png"); + } + +nav #nav-apps-link.selected { + background-color: #364e59; +} + +#nav-notifications-mark-all { + /* padding: 1px 1px 2px 26px; */ + /* border-bottom: 1px solid #364E59; */ + /* margin: 0px 0px 2px 0px; + padding: 5px 10px; */ +} + +#nav-notifications-see-all { + /* padding: 1px 1px 2px 26px; */ + /* border-bottom: 1px solid #364E59; */ + /* margin: 0px 0px 2px 0px; + padding: 5px 10px; */ +} + +.notify-seen { + background: none repeat scroll 0 0 #DDDDDD; + } + +ul.menu-popup { + position: absolute; + display: none; + width: 11em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 0px; + list-style: none; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +ul.menu-popup a { + display: block; + color: #2d2d2d; + padding: 5px 10px; + text-decoration: none; +} +ul.menu-popup a:hover { + background-color: #fff797; /*bdcdd4;*/ + color: #000; +} +ul.menu-popup .menu-sep { + border-top: 1px solid #9eabb0; +} +ul.menu-popup li { + float: none; + overflow: auto; + height: auto; + display: block; +} +ul.menu-popup li img { + float: left; + width: 16px; + height: 16px; + padding-right: 5px; +} +ul.menu-popup .empty { + padding: 5px; + text-align: center; + color: #9eabb0; +} +/* autocomplete popup */ +.acpopup { + max-height: 150px; + background-color: #ffffff; + color: #2d2d2d; + border: 1px solid #MenuBorder; + overflow: auto; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +.acpopupitem { + color: #2d2d2d; + padding: 4px; + clear: left; +} +.acpopupitem img { + float: left; + margin-right: 4px; +} +.acpopupitem.selected { + background-color: #bdcdd4; +} +#nav-notifications-menu { + width: 400px; + max-height: 550px; + overflow: auto; +} +/* #nav-notifications-menu a { + display: inline; + padding: 5px 0px; + margin: 0px 0px 2px 0px; +} +#nav-notifications-menu li:hover { + background-color: #bdcdd4; +}*/ + +#nav-notifications-menu img { + float: left; + margin-right: 5px; +} +#nav-notifications-menu .contactname { + font-weight: bold; +} +#nav-notifications-menu .notif-when { + font-size: 10px; + color: #9eabb0; + display: block; +} + +.notif-image { + width: 32px; + height: 32px; + padding: 7px 7px 0px 0px; +} + +/*profile_side*/ +#profile_side { + margin-bottom: 30px; +} +#ps-usericon{ + height: 25px + } +#ps-username{ + font-size: 1.17em; + font-weight: bold; + vertical-align: top; + position: absolute; + padding-top: 4px; + padding-left: 5px; + color: #2D2D2D; + } +#ps-username:hover{ + text-decoration: none; + } +.menu-profile-side{ + list-style: none; + padding-left: 0px; + min-height: 0px; + } +.menu-profile-list{ + height: auto; + overflow: auto; + padding-top: 3px; + padding-bottom: 3px; + padding-left: 16px; + min-height: 16px; + list-style: none; + } +.menu-profile-list:hover{ + background: #EEE; + } +.menu-profile-list-item{ + padding-left: 5px; + } +.menu-profile-list-item:hover{ + text-decoration: none; + } +/*http://prothemedesign.com/circular-icons/*/ +.menu-profile-list.home{ + background: url("../../../view/theme/diabook-blue/icons/home.png") no-repeat; + } +.menu-profile-list.photos{ + background: url("../../../view/theme/diabook-blue/icons/mess_side.png") no-repeat; + } +.menu-profile-list.events{ + background: url("../../../view/theme/diabook-blue/icons/events.png") no-repeat; + } +.menu-profile-list.notes{ + background: url("../../../view/theme/diabook-blue/icons/notes.png") no-repeat; + } +.menu-profile-list.foren{ + background: url("../../../view/theme/diabook-blue/icons/pubgroups.png") no-repeat; + } +.menu-profile-list.com_side{ + background: url("../../../view/theme/diabook-blue/icons/com_side.png") no-repeat; + } + +/* aside */ +aside { + display: table-cell; + vertical-align: top; + width: 160px; + padding: 0px 10px 0px 10px; + border-right: 1px solid #D2D2D2; + float: left; + /* background: #F1F1F1; */ +} + +aside .vcard .fn { + font-size: 18px; + font-weight: bold; + margin-bottom: 5px; +} +aside .vcard .title { + margin-bottom: 5px; +} +aside .vcard dl { + height: auto; + overflow: auto; +} +aside .vcard dt { + float: left; + margin-left: 0px; + /*width: 35%;*/ + text-align: right; + color: #999999; +} +aside .vcard dd { + float: left; + margin-left: 5px; + /*width: 60%;*/ +} +aside #profile-extra-links ul { + padding: 0px; + margin: 0px; +} +aside #profile-extra-links li { + padding: 0px; + margin: 0px; + list-style: none; +} +aside #dfrn-request-link { + display: block; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + color: #ffffff; + background: #005c94 url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform: uppercase; + padding: 4px 2px 2px 35px; +} +aside #dfrn-request-link:hover { + text-decoration: none; + background-color: #36c; + /* background-color: #19aeff; */ +} +aside #profiles-menu { + width: 20em; +} +aside #search-text { + width: 150px; +} +aside #side-follow-url { + width: 150px; + } +aside #side-peoplefind-url { + width: 150px; + } +#contact-block { + overflow: auto; + height: auto; +} +#contact-block .contact-block-h4 { + float: left; + margin: 5px 0px; +} +#contact-block .allcontact-link { + float: right; + margin: 5px 0px; +} +#contact-block .contact-block-content { + clear: both; + overflow: auto; + height: auto; +} +#contact-block .contact-block-link { + float: left; + margin: 0px 2px 2px 0px; +} +#contact-block .contact-block-link img { + widht: 55px; + height: 55px; +} +#lost-password-link { + float: left; + margin-right: 20px; + } +/* widget */ +.widget { + margin-bottom: 2em; + /*.action .s10 { width: 10px; overflow: hidden; padding: 0px;} + .action .s16 { width: 16px; overflow: hidden; padding: 0px;}*/ +/* font-size: 12px; */ +} +.widget h3 { + padding: 0px; + margin: 2px; +} +.widget .action { + opacity: 0.1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget input.action { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget:hover .title .action { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget .tool:hover .action { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget .tool:hover .action.ticked { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget ul { + padding: 0px; +} +.widget ul li { + padding-left: 16px; + min-height: 16px; + list-style: none; +} +.widget .tool.selected { + background: url("../../../view/theme/diabook/icons/selected.png") no-repeat left center; +} +/* widget: search */ +#add-search-popup { + width: 200px; + top: 18px; +} +/* section */ +section { + display: table-cell; + vertical-align: top; + width: auto; + padding: 0px 0px 0px 12px; +} + +body .pageheader{ + text-align: center; + margin-top: 25px; + font-size: 0px; + } + +#id_username { + width: 173px; + } +#id_password { + width: 173px; + } +#id_openid_url { + width: 173px; + } +#contact-edit-end { + } +.pager { + padding: 10px; + text-align: center; + font-size: 1.0em; + clear: both; + display: block; +} +.tabs { + + background-position: 0 -20px; + background-repeat: repeat-x; + height: 27px; + padding: 0; + } +.tab.button { + margin-right: 5px; + margin-left: 5px; + /*background: none repeat scroll 0 0 #F8F8F8;*/ + border: 1px solid #CCCCCC; + border-radius: 3px 3px 3px 3px; + font-weight: normal; + padding: 3px; + color: #333333; + } + +#birthday-notice, #event-notice, #birthday-wrapper, #event-wrapper{ + margin-bottom: 10px; + } + +right_aside { + display: table-cell; + vertical-align: top; + width: 160px; + padding-right: 10px; + /*border-left: 1px solid #D2D2D2;*/ + + /* background: #F1F1F1; */ +} +right_aside h3 {border-bottom: 1px solid #D2D2D2; padding-top: 5px; padding-bottom: 0px; padding-left: 5px; margin-bottom: 0px; +margin-top:30px;} +right_aside .directory-item { width: 50px; height: 50px; vertical-align: center; text-align: center; } +right_aside .directory-photo { margin: 0px; } +right_aside .directory-photo-img { max-width: 45px; max-height: 45px; } +right_aside #likes { margin: 0px; padding: 0px; list-style: none; } +right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px solid #D2D2D2;} + +/* wall item */ +.tread-wrapper { + border-bottom: 1px solid #D2D2D2; + position: relative; + padding: 5px; + margin-bottom: 0px; + width: 575px; +} +.wall-item-decor { + position: absolute; + left: 790px; + top: -10px; + width: 16px; +} + +.wall-item-container { + display: table; + width: 580px; +} + + +.wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom { + display: table-row; +} +.wall-item-bottom { + font-size: 13px; +} +.wall-item-container .wall-item-bottom { +/* opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; */ +} +.wall-item-container:hover .wall-item-bottom { +/* opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; */ +} +.wall-item-container .wall-item-info { + display: table-cell; + vertical-align: top; + text-align: left; + width: 80px; +} +.wall-item-container .wall-item-location { + padding-right: 40px; + display: table-cell; +} +.wall-item-container .wall-item-ago { + word-wrap: break-word; + width: 50px; + margin-left: 10px; + color: #999; +} +.wall-item-location { + + clear: both; + overflow: hidden; + + margin-bottom: 5px; +} + +.wall-item-container .wall-item-content { + font-size: 13px; + max-width: 720px; + word-wrap: break-word; + line-height: 1.4; +} + +.wall-item-container .wall-item-content img { + max-width: 700px; +} +.wall-item-container .wall-item-links, .wall-item-container .wall-item-actions { + display: table-cell; + vertical-align: middle; +} +.wall-item-container .wall-item-links .icon, .wall-item-container .wall-item-actions .icon { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-links .icon:hover, .wall-item-container .wall-item-actions .icon:hover { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-name { + font-weight: bold; +} +.wall-item-container .wall-item-actions-author { + width: 100%; + margin-bottom: 0.3em; +} +.wall-item-container .wall-item-actions-social { + float: left; + margin-bottom: 1px; + display: table-cell; +} +.wall-item-container .wall-item-actions-social a { + margin-right: 1em; +} +.wall-item-actions-social a { + float: left; +} +.wall-item-container .wall-item-actions-tools { + float: right; + width: 80px; + display: table-cell; +} +.wall-item-container .wall-item-actions-tools a { + float: right; +} +.wall-item-container .wall-item-actions-tools input { + float: right; +} +.wall-item-container.comment { + margin-top: 5px; + margin-bottom: 5px; + margin-left: 80px; + width: 500px; + border-bottom: 1px solid hsl(198, 21%, 79%); +} +.wall-item-container.comment .contact-photo { + width: 32px; + height: 32px; + margin-left: 16px; + /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/ + +} +.wall-item-container.comment { + top: 15px !important; + left: 15px !important; +} +.wall-item-container.comment .wall-item-links { + padding-left: 12px; +} +.wall-item-comment-wrapper { + margin: 1px 5px 1px 80px; +} +.wall-item-comment-wrapper .comment-edit-photo { + display: none; +} +.wall-item-comment-wrapper textarea { + height: 2.0em; + width: 100%; + font-size: 10px; + color: #999999; + border: 1px solid #DDD; + padding: 0.3em; + font-size: 14px; +} +.wall-item-comment-wrapper .comment-edit-text-full { + font-size: 14px; + height: 4em; + color: #2d2d2d; + border: 1px solid #2d2d2d; +} +.comment-edit-preview { + width: 710px; + border: 1px solid #2d2d2d; + margin-top: 10px; +} +.comment-edit-preview .contact-photo { + width: 32px; + height: 32px; + margin-left: 16px; + /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/ + +} +.comment-edit-preview { + top: 15px !important; + left: 15px !important; +} +.comment-edit-preview .wall-item-links { + padding-left: 12px; +} +.comment-edit-preview .wall-item-container { + width: 700px; +} +.comment-edit-preview .tread-wrapper { + width: 700px; + padding: 0; + margin: 10px 0; +} + +.shiny { + /* border-right: 10px solid #fce94f; */ + border-right: 1px solid #A7C7F7; + padding-right: 12px; +} + +#jot-preview-content{ + margin-top: 30px;} + +#jot-preview-content .tread-wrapper { + background-color: #fff797; +} + +.wall-item-tags { + padding-top: 1px; + padding-bottom: 2px; +} +.tag { + /*background: url("../../../images/tag_b.png") repeat-x center left;*/ + color: #3465A4; + padding-left: 3px; + font-size: 12px; +} +.tag a { + padding-right: 5px; + /*background: url("../../../images/tag.png") no-repeat center right;*/ + color: #3465A4; +} +.wwto { + position: absolute !important; + width: 25px; + height: 25px; + background: #FFFFFF; + border: 2px solid #364e59; + height: 25px; + width: 25px; + overflow: hidden; + padding: 1px; + position: absolute !important; + top: 40px; + left: 30px; + -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); +} +.wwto .contact-photo { + width: auto; + height: 25px; +} +/* contacts menu */ +.contact-photo-wrapper { + position: relative; + width: 80px; +} + +.contact-photo-wrapper.wwto { + width: 25px; +} + +.contact-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} +.contact-photo img { + width: 48px; + height: 48px; +} + +.contact-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 15px; +} +.contact-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.contact-wrapper { + left: 0px; + top: 63px; +} +.contact-photo { + width: 48px; + height: 48px; +} +.contact-photo img { + width: 48px; + height: 48px; +} +.contact-name { + /* text-align: center; */ + /*font-weight: bold;*/ + font-size: 12px; +} +.contact-details { + color: #999999; +} +/* editor */ +.jothidden { + display: none; +} +#jot { + width: 585px; + margin: 0px 2em 20px 0px; +} +#profile-jot-form #profile-jot-text { + height: 2.0em; + width: 99%; + font-size: 15px; + color: #999999; + border: 1px solid #DDD; + padding: 0.3em; + margin-bottom: 10px; +} +#jot #jot-tools { + margin: 0px; + padding: 0px; + height: 40px; + overflow: none; + width: 583px; + background-color: #fff; + border-bottom: 2px solid #9eabb0; +} + +#jot #jot-tools li { + list-style: none; + float: left; + width: 80px; + height: 40px; + border-bottom: 2px solid #9eabb0; +} +#jot #jot-tools li a { + display: block; + color: #cccccc; + width: 100%; + height: 40px; + text-align: center; + line-height: 40px; + overflow: hidden; +} +#jot #jot-tools li:hover { + background-color: #364e59; + border-bottom: 2px solid #bdcdd4; +} +#jot #jot-tools li.perms { + float: right; + width: 40px; +} +#jot #jot-tools li.perms a.unlock { + width: 30px; + border-left: 10px solid #cccccc; + background-color: #cccccc; + background-position: left center; +} +#jot #jot-tools li.perms a.lock { + width: 30px; + border-left: 10px solid #666666; + background-color: #666666; +} +#jot #jot-tools li.submit { + float: right; + background-color: #cccccc; + border-bottom: 2px solid #cccccc; + border-right: 1px solid #666666; + border-left: 1px solid #666666; +} +#jot #jot-tools li.submit input { + border: 0px; + margin: 0px; + padding: 0px; + background-color: #cccccc; + color: #666666; + width: 80px; + height: 40px; + line-height: 40px; +} +#jot #jot-tools li.submit input:hover { + background-color: #bdcdd4; + color: #666666; +} +#jot #jot-tools li.loading { + float: right; + background-color: #ffffff; + width: 20px; + vertical-align: center; + text-align: center; + border-top: 2px solid #9eabb0; + height: 38px; +} +#jot #jot-tools li.loading img { + margin-top: 10px; +} +#profile-jot-form #jot-title { + + border-radius: 5px 5px 5px 5px; + font-weight: bold; + height: 20px; + margin: 0 0 5px; + width: 60%; + border: 1px solid #ffffff; +} +#profile-jot-form #jot-title:-webkit-input-placeholder { + font-weight: normal; +} +#profile-jot-form #jot-title:-moz-placeholder { + font-weight: normal; +} +#profile-jot-form #profile-jot-text_parent #profile-jot-text_tbl{ + width: 585px; + height: 100px; + } +#jot #jot-title:hover { + border: 1px solid #999999; +} +#jot #jot-title:focus { + border: 1px solid #999999; +} +#jot #character-counter { + width: 80px; + float: right; + text-align: right; + height: 20px; + line-height: 20px; + padding-right: 20px; +} +#jot-perms-icon, +#profile-location, +#profile-nolocation, +#profile-youtube, +#profile-video, +#profile-audio, +#profile-link, +#profile-title, +#wall-image-upload, +#wall-file-upload, +#wall-image-upload-div, +#wall-file-upload-div, +.hover, .focus { + cursor: pointer; + margin-top: 2px; +} +#profile-jot-wrapper{ + margin: 0 2em 20px 0; + width: 585px; + } + +#profile-jot-submit-wrapper { + margin-bottom: 50px; + width: 585px; +} + +#profile-jot-submit { + float: right; + margin-top: 2px; + +} +#profile-upload-wrapper { + float: left; + margin-top: 2px; + margin-left: 10px; + +} +#profile-attach-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-rotator { + float: left; + margin-left: 30px; + margin-top: 2px; +} +#profile-link-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-youtube-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-video-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-audio-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-location-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-jot-perms { + float: left; + margin-left: 45px; + margin-top: 2px; +} +#jot-preview-link { + float: right; + margin-left: 10px; + margin-top: 2px; + font-size: 10px; +} +#profile-jot-perms{ + float: right; + margin-left: 10px; + margin-top: 2px; + } +/** buttons **/ +.button.creation1 { + background-color: #fff; + border: 1px solid #777777; + background-image: -moz-linear-gradient(center top , white 0%, #DDDDDD 100%); + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; +} +.button.creation2 { + background-color: #33ACFF; + background-image: -moz-linear-gradient(center top , #66C1FF 0%, #0097FF 100%); + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; +} +/*input[type="submit"] { + border: 0px; + background-color: @ButtonBackgroundColor; + color: @ButtonColor; + padding: 0px 10px; + .rounded(5px); + height: 18px; +}*/ +/** acl **/ +#photo-edit-perms-select, #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper { + display: block!important; +} +#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; + color: #999999; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +#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-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 **/ +/** tab buttons **/ +ul.tabs { + list-style-type: none; + padding-bottom: 10px; + font-size: 13px; +} +ul.tabs li { + float: left; + margin-left: 5px; +} +ul.tabs li .active { + background-color: #333333; + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; +} +/** + * 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 .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; +} +.field .hidden { + display: none!important; +} +.field.radio .field_help { + margin-left: 0px; +} +#directory-search-form{ + margin-bottom: 50px; + } +#profile-edit-links-end { + clear: both; + margin-bottom: 15px; +} + +#profile-edit-links ul { margin: 20px; padding-bottom: 20px; list-style: none; } + +#profile-edit-links li { + float: left; + list-style: none; + margin-left: 10px; +} + +.profile-edit-side-div { + display: none; +} + +#register-form label, +#profile-edit-form label { + width: 300px; float: left; +} + +.required { + display: inline; + color: #B20202; +} + +/* 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; +} +/* contacts */ +.contact-entry-wrapper { + width: 120px; + height: 120px; + float: left; +} +/* photo */ +.lframe { + float: left; +} +/* profile match wrapper */ +.profile-match-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 20px; +} +.profile-match-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.profile-match-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.profile-match-wrapper { + left: 0px; + top: 63px; +} + +.contact-photo-menu-button { + position: relative; + background-image: url("../../../images/icons/16/menu.png"); + background-position: top left; + background-repeat: no-repeat; + margin: 0px 0px -16px 0px; + padding: 0px; + width: 16px; + height: 16px; + top: -20px; left:0px; + overflow: hidden; + text-indent: 40px; + display: none; + +} +.contact-photo-menu { + width: 11em; + border: 3px solid #364e59; + color: #2d2d2d; + background: #FFFFFF; +/* position: absolute;*/ + position: relative; + left: 0px; top: 0px; + display: none; + z-index: 10000; +} +.contact-photo-menu ul { margin:0px; padding: 0px; list-style: none } +.contact-photo-menu li a { + display: block; + padding: 5px 10px; + color: #2d2d2d; + text-decoration: none; +} +.contact-photo-menu li a:hover { + background-color: #bdcdd4; +} + +/* page footer */ +footer { + height: 100px; + display: table-row; +} + +blockquote { + border-left: 1px solid #D2D2D2; + padding-left: 9px; + margin: 0 0 0 .8ex; +} +.aprofile dt{ +box-shadow: 1px 1px 5px 0; + color: #666666; + margin: 15px 0 5px; + padding-left: 5px; + } +/* ================== */ +/* = Contacts Block = */ +/* ================== */ + +.contact-block-img { + width: 55px; + height: 55px; + padding-right: 3px; +} +.contact-block-div { + float: left; +} + +.contact-block-textdiv { width: 150px; height: 34px; float: left; } +#contact-block-end { clear: both; } + +#group-edit-wrapper { + margin-bottom: 10px; +} + +#group-members-end { + clear: both; +} +#group-edit-desc { + margin-top: 15px; +} + +/* +#group-separator, +#prof-separator { display: none;} +*/ + +#prvmail-to-label, #prvmail-subject-label, #prvmail-message-label { + margin-bottom: 10px; + margin-top: 20px; +} + +#prvmail-submit { + float: right; + margin-top: 10px; +} +#prvmail-subject +{ +background: none repeat scroll 0 0 #FFFFFF; +border: 1px solid #CCCCCC; +border-radius: 5px 5px 5px 5px; +font-weight: bold; +height: 20px; +margin: 0 0 5px; +vertical-align: middle; +} +#prvmail-form{ + width: 597px; + } +#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; +} + +/* ========== */ +/* = Events = */ +/* ========== */ +.eventcal { + float: left; + font-size: 20px; +} + +.vevent { + border: 1px solid #CCCCCC; +} +.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; +} +.lightbox{ + float: left; + } + +#photo-photo { + float: left; +} +#photo-like-div .wall-item-like-buttons { + float: left; + margin-right: 5px; + margin-top: 30px; + } +.comment-edit-text-empty { + margin: 10px 0 0; + width: 85%; +} +.comment-edit-photo { + margin: 10px 0 0; +} +.wall-item-like-buttons .icon.like { +float: left; +} + +#photo-photo-end { + clear: both; +} + +.tabs .comment-wwedit-wrapper { + display: block; + margin-top: 30px; + margin-left: 50px; + } + +.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; +} + +/* ============= */ +/* = Directory = */ +/* ============= */ +/* contacts menu */ +.contact-photo-wrapper { + position: relative; +} +.contact-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} +.contact-photo img { + width: 48px; + height: 48px; +} +.contact-photo-menu-button { + display: none; + /* position: absolute; */ + /* position: absolute; */ + left: -2px; + top: -20px; +} +.contact-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 15px; +} +.contact-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo-menu-button { + left: 0px; + top: 63px; +} +.directory-item { + float: left; + width: 200px; + height: 200px; +} +.directory-item .contact-photo { + width: 175px; + height: 175px; +} +.directory-item .contact-photo img { + width: 175px; + height: 175px; +} +.contact-name { + text-align: left; + font-weight: bold; + font-size: 12px; +} +.contact-details { + color: #999999; +} +#side-bar-photos-albums li{ +list-style-type: disc; +} +#side-bar-photos-albums ul li{ + margin-left: 30px; + padding-left: 0px; + } +#side-bar-photos-albums{ + margin-top: 15px; + } +.photo-top-photo, .photo-album-photo { + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.photo-album-image-wrapper, .photo-top-image-wrapper { + float: left; + -moz-box-shadow: 0 0 5px #888; + -webkit-box-shadow: 0 0 5px #888; + box-shadow: 0 0 5px #888; + background-color: #000; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding-bottom: 20px; + position: relative; + margin: 0 10px 10px 0; + width: 200px; height: 140px; + overflow: hidden; +} +/* +.photo-top-album-name { + position: absolute; + bottom: 0; + padding: 0 5px; +}*/ +/*.photo-top-image-wrapper { + position: relative; + float: left; + margin-top: 15px; + margin-right: 15px; + width: 200px; height: 200px; + +}*/ +.photo-top-album-name { + width: 100%; + position: absolute; + bottom: 0px; + padding-left: 3px; + background-color: #EEE; +} +.photo-top-album-link{ + color: #3465A4; + } +#photo-top-end { + clear: both; +} + +#photo-top-links { + margin-bottom: 30px; + margin-left: 30px; +} + +#photos-upload-newalbum-div { + float: left; + width: 175px; +} \ No newline at end of file diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index f0cf04d65..ffab5b4c4 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -102,7 +102,6 @@ .icon.recycle { background-image: url("../../../view/theme/diabook/icons/recycle.png");} .icon.remote-link { background-image: url("../../../view/theme/diabook/icons/remote.png");} .icon.tagged { background-image: url("../../../view/theme/diabook/icons/tagged.png");} -.icon.file-as { background-image: url("../../../view/theme/diabook/icons/file_as.png");} .star-item.icon.unstarred { background-image: url("../../../view/theme/diabook/icons/unstarred.png");} .star-item.icon.starred { background-image: url("../../../view/theme/diabook/icons/starred.png");} .icon.link { background-image: url("../../../view/theme/diabook/icons/link.png");} @@ -385,7 +384,7 @@ .hide-comments-outer { margin-left: 80px; margin-bottom: 5px; - width: 484px; + width: 684px; border-bottom: 1px solid #BDCDD4; border-top: 1px solid #BDCDD4; @@ -928,8 +927,8 @@ ul.menu-popup .empty { aside { display: table-cell; vertical-align: top; - width: 160px; - padding: 0px 10px 0px 10px; + width: 180px; + padding: 0px 10px 0px 20px; border-right: 1px solid #D2D2D2; float: left; /* background: #F1F1F1; */ @@ -988,13 +987,13 @@ aside #profiles-menu { width: 20em; } aside #search-text { - width: 150px; + width: 173px; } aside #side-follow-url { - width: 150px; + width: 173px; } aside #side-peoplefind-url { - width: 150px; + width: 173px; } #contact-block { overflow: auto; @@ -1096,7 +1095,7 @@ aside #side-peoplefind-url { section { display: table-cell; vertical-align: top; - width: auto; + width: 800px; padding: 0px 0px 0px 12px; } @@ -1145,31 +1144,13 @@ body .pageheader{ #birthday-notice, #event-notice, #birthday-wrapper, #event-wrapper{ margin-bottom: 10px; } - -right_aside { - display: table-cell; - vertical-align: top; - width: 160px; - padding-right: 10px; - /*border-left: 1px solid #D2D2D2;*/ - - /* background: #F1F1F1; */ -} -right_aside h3 {border-bottom: 1px solid #D2D2D2; padding-top: 5px; padding-bottom: 0px; padding-left: 5px; margin-bottom: 0px; -margin-top:30px;} -right_aside .directory-item { width: 50px; height: 50px; vertical-align: center; text-align: center; } -right_aside .directory-photo { margin: 0px; } -right_aside .directory-photo-img { max-width: 45px; max-height: 45px; } -right_aside #likes { margin: 0px; padding: 0px; list-style: none; } -right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px solid #D2D2D2;} - /* wall item */ .tread-wrapper { border-bottom: 1px solid #D2D2D2; position: relative; padding: 5px; margin-bottom: 0px; - width: 575px; + width: 775px; } .wall-item-decor { position: absolute; @@ -1180,7 +1161,7 @@ right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px soli .wall-item-container { display: table; - width: 580px; + width: 780px; } @@ -1293,7 +1274,7 @@ right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px soli margin-top: 5px; margin-bottom: 5px; margin-left: 80px; - width: 500px; + width: 700px; border-bottom: 1px solid hsl(198, 21%, 79%); } .wall-item-container.comment .contact-photo { @@ -1468,7 +1449,7 @@ right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px soli display: none; } #jot { - width: 585px; + width: 785px; margin: 0px 2em 20px 0px; } #profile-jot-form #profile-jot-text { @@ -1485,7 +1466,7 @@ right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px soli padding: 0px; height: 40px; overflow: none; - width: 583px; + width: 783px; background-color: #fff; border-bottom: 2px solid #9eabb0; } @@ -1574,7 +1555,7 @@ right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px soli font-weight: normal; } #profile-jot-form #profile-jot-text_parent #profile-jot-text_tbl{ - width: 585px; + width: 785px; height: 100px; } #jot #jot-title:hover { @@ -1609,12 +1590,12 @@ right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px soli } #profile-jot-wrapper{ margin: 0 2em 20px 0; - width: 585px; + width: 785px; } #profile-jot-submit-wrapper { margin-bottom: 50px; - width: 585px; + width: 785px; } #profile-jot-submit { diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php index 25808d7e9..feb140abb 100755 --- a/view/theme/diabook/theme.php +++ b/view/theme/diabook/theme.php @@ -274,9 +274,24 @@ if($is_url = preg_match ("/\bprofile\b/i", $_SERVER['REQUEST_URI'])) { } +//change css on network and profilepages +$cssFile = null; + +if($is_url = preg_match ("/\bnetwork\b/i", $_SERVER['REQUEST_URI'])) { + $cssFile = $a->get_baseurl($ssl_state)."/view/theme/diabook/style-network.css"; + } + +if($is_url = preg_match ("/\bprofile\b/i", $_SERVER['REQUEST_URI'])) { + $cssFile = $a->get_baseurl($ssl_state)."/view/theme/diabook/style-profile.css"; + } + + + //js scripts $a->page['htmlhead'] .= <<< EOT + + EOT; + -- cgit v1.2.3 From d76b052f90346b49d64aeef9024ab56f8be79f53 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 24 Mar 2012 04:05:21 +0100 Subject: add PostIt to right_aside, fixes in css --- view/theme/diabook/communityhome.tpl | 12 ++- view/theme/diabook/fpostit/README | 8 ++ view/theme/diabook/fpostit/fpostit.js | 6 ++ view/theme/diabook/fpostit/fpostit.php | 135 ++++++++++++++++++++++++++++ view/theme/diabook/fpostit/friendika-32.png | Bin 0 -> 1593 bytes view/theme/diabook/style-network.css | 8 +- view/theme/diabook/style-profile.css | 17 ++-- view/theme/diabook/theme.php | 9 ++ view/theme/diabook/wall_item.tpl | 1 - view/theme/diabook/wallwall_item.tpl | 1 - 10 files changed, 180 insertions(+), 17 deletions(-) create mode 100644 view/theme/diabook/fpostit/README create mode 100755 view/theme/diabook/fpostit/fpostit.js create mode 100644 view/theme/diabook/fpostit/fpostit.php create mode 100644 view/theme/diabook/fpostit/friendika-32.png diff --git a/view/theme/diabook/communityhome.tpl b/view/theme/diabook/communityhome.tpl index 944aec2dd..46681998d 100755 --- a/view/theme/diabook/communityhome.tpl +++ b/view/theme/diabook/communityhome.tpl @@ -1,5 +1,5 @@ {{ if $lastusers_title }} -

    Help or #NewHere?

    +

    Help or #NewHere ?

    Friendica Support
    Let's talk
    NewHere @@ -7,7 +7,7 @@ {{ if $lastusers_title }}

    $lastusers_title

    -
    +
    {{ for $lastusers_items as $i }} $i {{ endfor }} @@ -25,19 +25,23 @@ {{ if $photos_title }}

    $photos_title

    -
    +
    {{ for $photos_items as $i }} $i {{ endfor }}
    {{ endif }} +{{ if $lastusers_title }} +

    PostIt to Friendica

    +
    Post to Friendica from anywhere by bookmarking this Link.
    +{{ endif }} {{ if $like_title }}

    $like_title

      {{ for $like_items as $i }} -
    • $i
    • +
    • $i
    • {{ endfor }}
    {{ endif }} diff --git a/view/theme/diabook/fpostit/README b/view/theme/diabook/fpostit/README new file mode 100644 index 000000000..39b7c5761 --- /dev/null +++ b/view/theme/diabook/fpostit/README @@ -0,0 +1,8 @@ +fpostit + +original author: Devlon Duthied + +see his blog posting: +http://blog.duthied.com/2011/09/13/node-agnostic-friendika-bookmarklet/ + +original published at github https://github.com/duthied/Friendika-Bookmarklet diff --git a/view/theme/diabook/fpostit/fpostit.js b/view/theme/diabook/fpostit/fpostit.js new file mode 100755 index 000000000..d183c7573 --- /dev/null +++ b/view/theme/diabook/fpostit/fpostit.js @@ -0,0 +1,6 @@ +javascript: (function() { + the_url = 'localhost/view/theme/diabook/fpostit/fpostit.php?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' + encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text)); + a_funct = function() { + if (!window.open(the_url, 'fpostit', 'location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) location.href = the_url}; + if (/Firefox/.test(navigator.userAgent)) {setTimeout(a_funct, 0)} + else {a_funct()}})()" \ No newline at end of file diff --git a/view/theme/diabook/fpostit/fpostit.php b/view/theme/diabook/fpostit/fpostit.php new file mode 100644 index 000000000..acf77a6c8 --- /dev/null +++ b/view/theme/diabook/fpostit/fpostit.php @@ -0,0 +1,135 @@ + + + + + + + + $content); + + // echo "posting to: $url
    "; + + $c = curl_init(); + curl_setopt($c, CURLOPT_URL, $url); + curl_setopt($c, CURLOPT_USERPWD, "$username:$password"); + curl_setopt($c, CURLOPT_POSTFIELDS, $data); + curl_setopt($c, CURLOPT_RETURNTRANSFER, true); + curl_setopt($c, CURLOPT_FOLLOWLOCATION, true); + $c_result = curl_exec($c); + if(curl_errno($c)){ + $error = curl_error($c); + showForm($error, $content); + } + + curl_close($c); + if (!isset($error)) { + echo ''; + } + + } else { + $error = "Missing account name and/or password...try again please"; + showForm($error, $content); + } + +} else { + showForm(null, $content); +} + +function showForm($error, $content) { + $username_cookie = $_COOKIE['username']; + $password_cookie = $_COOKIE['password']; + + echo << +

    + Friendika Bookmarklet

    +
    + +
    +
    + Enter the email address of the Friendika Account that you want to cross-post to:(example: user@friendika.org)

    + Account ID:
    + Password:
    +
    +   $error + +

    +
    +EOF; + +} +?> + + + \ No newline at end of file diff --git a/view/theme/diabook/fpostit/friendika-32.png b/view/theme/diabook/fpostit/friendika-32.png new file mode 100644 index 000000000..61764bf20 Binary files /dev/null and b/view/theme/diabook/fpostit/friendika-32.png differ diff --git a/view/theme/diabook/style-network.css b/view/theme/diabook/style-network.css index f0cf04d65..23ab0d4bf 100644 --- a/view/theme/diabook/style-network.css +++ b/view/theme/diabook/style-network.css @@ -1161,7 +1161,9 @@ right_aside .directory-item { width: 50px; height: 50px; vertical-align: center; right_aside .directory-photo { margin: 0px; } right_aside .directory-photo-img { max-width: 45px; max-height: 45px; } right_aside #likes { margin: 0px; padding: 0px; list-style: none; } -right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px solid #D2D2D2;} +right_aside .items-wrapper{ overflow: auto; width: 100%; } +right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; } +right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; } /* wall item */ .tread-wrapper { @@ -1232,13 +1234,13 @@ right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px soli .wall-item-container .wall-item-content { font-size: 13px; - max-width: 720px; + max-width: 420px; word-wrap: break-word; line-height: 1.4; } .wall-item-container .wall-item-content img { - max-width: 700px; + max-width: 500px; } .wall-item-container .wall-item-links, .wall-item-container .wall-item-actions { display: table-cell; diff --git a/view/theme/diabook/style-profile.css b/view/theme/diabook/style-profile.css index f0cf04d65..a721d62ab 100644 --- a/view/theme/diabook/style-profile.css +++ b/view/theme/diabook/style-profile.css @@ -1018,8 +1018,8 @@ aside #side-peoplefind-url { margin: 0px 2px 2px 0px; } #contact-block .contact-block-link img { - widht: 55px; - height: 55px; + widht: 48px; + height: 48px; } #lost-password-link { float: left; @@ -1161,8 +1161,9 @@ right_aside .directory-item { width: 50px; height: 50px; vertical-align: center; right_aside .directory-photo { margin: 0px; } right_aside .directory-photo-img { max-width: 45px; max-height: 45px; } right_aside #likes { margin: 0px; padding: 0px; list-style: none; } -right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px solid #D2D2D2;} - +right_aside .items-wrapper{ overflow: auto; width: 100%; } +right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; } +right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; } /* wall item */ .tread-wrapper { border-bottom: 1px solid #D2D2D2; @@ -1232,13 +1233,13 @@ right_aside .items-wrapper{ overflow: auto; width: 100%; border-bottom: 1px soli .wall-item-container .wall-item-content { font-size: 13px; - max-width: 720px; + max-width: 420px; word-wrap: break-word; line-height: 1.4; } .wall-item-container .wall-item-content img { - max-width: 700px; + max-width: 500px; } .wall-item-container .wall-item-links, .wall-item-container .wall-item-actions { display: table-cell; @@ -2026,8 +2027,8 @@ box-shadow: 1px 1px 5px 0; /* ================== */ .contact-block-img { - width: 55px; - height: 55px; + width: 48px; + height: 48px; padding-right: 3px; } .contact-block-div { diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php index b487b8f88..4600c92fb 100755 --- a/view/theme/diabook/theme.php +++ b/view/theme/diabook/theme.php @@ -130,6 +130,15 @@ function diabook_community_info(){ } } + $fostitJS = "javascript: (function() { + the_url = '".$a->get_baseurl($ssl_state)."/view/theme/diabook/fpostit/fpostit.php?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' + encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text)); + a_funct = function() { + if (!window.open(the_url, 'fpostit', 'location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) location.href = the_url}; + if (/Firefox/.test(navigator.userAgent)) {setTimeout(a_funct, 0)} + else {a_funct()}})()" ; + + $aside['$fostitJS'] = $fostitJS; + $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); $a->page['right_aside'] = replace_macros($tpl, $aside); diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index 20d24702b..123834064 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -1,6 +1,5 @@ {{ if $item.indent }}{{ else }}
    - {{ if $item.lock }}$item.lock{{ endif }}
    {{ endif }} diff --git a/view/theme/diabook/wallwall_item.tpl b/view/theme/diabook/wallwall_item.tpl index e02e5a8be..c5b6b36b5 100644 --- a/view/theme/diabook/wallwall_item.tpl +++ b/view/theme/diabook/wallwall_item.tpl @@ -1,6 +1,5 @@ {{ if $item.indent }}{{ else }}
    - {{ if $item.lock }}$item.lock{{ endif }}
    {{ endif }} -- cgit v1.2.3 From 378762fed21b4145db9a153489fc732a3d110ef5 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 24 Mar 2012 06:17:14 +0100 Subject: add connectable services to right_aside --- view/theme/diabook/communityhome.tpl | 20 +++++++++++++++++--- view/theme/diabook/icons/StatusNet.png | Bin 0 -> 1257 bytes view/theme/diabook/icons/email.png | Bin 0 -> 880 bytes view/theme/diabook/icons/facebook.png | Bin 0 -> 1082 bytes view/theme/diabook/icons/livejournal.png | Bin 0 -> 2029 bytes view/theme/diabook/icons/posterous.png | Bin 0 -> 2783 bytes view/theme/diabook/icons/tumblr.png | Bin 0 -> 938 bytes view/theme/diabook/icons/twitter.png | Bin 0 -> 964 bytes view/theme/diabook/icons/wordpress.png | Bin 0 -> 1693 bytes view/theme/diabook/theme.php | 2 ++ 10 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 view/theme/diabook/icons/StatusNet.png create mode 100644 view/theme/diabook/icons/email.png create mode 100644 view/theme/diabook/icons/facebook.png create mode 100644 view/theme/diabook/icons/livejournal.png create mode 100644 view/theme/diabook/icons/posterous.png create mode 100644 view/theme/diabook/icons/tumblr.png create mode 100644 view/theme/diabook/icons/twitter.png create mode 100644 view/theme/diabook/icons/wordpress.png diff --git a/view/theme/diabook/communityhome.tpl b/view/theme/diabook/communityhome.tpl index 46681998d..34f8ab066 100755 --- a/view/theme/diabook/communityhome.tpl +++ b/view/theme/diabook/communityhome.tpl @@ -1,8 +1,22 @@ {{ if $lastusers_title }}

    Help or #NewHere ?

    -Friendica Support
    -Let's talk
    -NewHere +Friendica Support
    +Let's talk
    +NewHere +{{ endif }} + +{{ if $lastusers_title }} +

    Connectable Services

    +
    +Facebook +StatusNet +LiveJournal +Posterous +Tumblr +Twitter +WordPress +E-Mail +
    {{ endif }} {{ if $lastusers_title }} diff --git a/view/theme/diabook/icons/StatusNet.png b/view/theme/diabook/icons/StatusNet.png new file mode 100644 index 000000000..398bca716 Binary files /dev/null and b/view/theme/diabook/icons/StatusNet.png differ diff --git a/view/theme/diabook/icons/email.png b/view/theme/diabook/icons/email.png new file mode 100644 index 000000000..240cef2c3 Binary files /dev/null and b/view/theme/diabook/icons/email.png differ diff --git a/view/theme/diabook/icons/facebook.png b/view/theme/diabook/icons/facebook.png new file mode 100644 index 000000000..3e5dd39c3 Binary files /dev/null and b/view/theme/diabook/icons/facebook.png differ diff --git a/view/theme/diabook/icons/livejournal.png b/view/theme/diabook/icons/livejournal.png new file mode 100644 index 000000000..6d27d265e Binary files /dev/null and b/view/theme/diabook/icons/livejournal.png differ diff --git a/view/theme/diabook/icons/posterous.png b/view/theme/diabook/icons/posterous.png new file mode 100644 index 000000000..c8e86078e Binary files /dev/null and b/view/theme/diabook/icons/posterous.png differ diff --git a/view/theme/diabook/icons/tumblr.png b/view/theme/diabook/icons/tumblr.png new file mode 100644 index 000000000..1dc7fa072 Binary files /dev/null and b/view/theme/diabook/icons/tumblr.png differ diff --git a/view/theme/diabook/icons/twitter.png b/view/theme/diabook/icons/twitter.png new file mode 100644 index 000000000..b7a687b9f Binary files /dev/null and b/view/theme/diabook/icons/twitter.png differ diff --git a/view/theme/diabook/icons/wordpress.png b/view/theme/diabook/icons/wordpress.png new file mode 100644 index 000000000..f564c4300 Binary files /dev/null and b/view/theme/diabook/icons/wordpress.png differ diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php index 4600c92fb..adf31746f 100755 --- a/view/theme/diabook/theme.php +++ b/view/theme/diabook/theme.php @@ -139,6 +139,8 @@ function diabook_community_info(){ $aside['$fostitJS'] = $fostitJS; + $url = $a->get_baseurl($ssl_state); + $aside['$url'] = $url; $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); $a->page['right_aside'] = replace_macros($tpl, $aside); -- cgit v1.2.3 From ba027f174d593e31a24d6bcbaab490639169d312 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 24 Mar 2012 08:13:48 +0100 Subject: add right_aside to diabook-blue --- view/theme/diabook-blue/communityhome.tpl | 61 + view/theme/diabook-blue/directory_item.tpl | 10 + view/theme/diabook-blue/fpostit/README | 8 + view/theme/diabook-blue/fpostit/fpostit.js | 6 + view/theme/diabook-blue/fpostit/fpostit.php | 135 ++ view/theme/diabook-blue/fpostit/friendika-32.png | Bin 0 -> 1593 bytes view/theme/diabook-blue/icons/StatusNet.png | Bin 0 -> 1257 bytes view/theme/diabook-blue/icons/email.png | Bin 0 -> 880 bytes view/theme/diabook-blue/icons/facebook.png | Bin 0 -> 1082 bytes view/theme/diabook-blue/icons/livejournal.png | Bin 0 -> 2029 bytes view/theme/diabook-blue/icons/posterous.png | Bin 0 -> 2783 bytes view/theme/diabook-blue/icons/tumblr.png | Bin 0 -> 938 bytes view/theme/diabook-blue/icons/twitter.png | Bin 0 -> 964 bytes view/theme/diabook-blue/icons/wordpress.png | Bin 0 -> 1693 bytes view/theme/diabook-blue/profile_side.tpl | 4 +- view/theme/diabook-blue/profile_vcard.tpl | 2 +- view/theme/diabook-blue/right_aside.tpl | 20 + view/theme/diabook-blue/style-network.css | 2509 ++++++++++++++++++++++ view/theme/diabook-blue/style-profile.css | 2508 +++++++++++++++++++++ view/theme/diabook-blue/theme.php | 274 ++- 20 files changed, 5443 insertions(+), 94 deletions(-) create mode 100755 view/theme/diabook-blue/communityhome.tpl create mode 100755 view/theme/diabook-blue/directory_item.tpl create mode 100644 view/theme/diabook-blue/fpostit/README create mode 100755 view/theme/diabook-blue/fpostit/fpostit.js create mode 100644 view/theme/diabook-blue/fpostit/fpostit.php create mode 100644 view/theme/diabook-blue/fpostit/friendika-32.png create mode 100644 view/theme/diabook-blue/icons/StatusNet.png create mode 100644 view/theme/diabook-blue/icons/email.png create mode 100644 view/theme/diabook-blue/icons/facebook.png create mode 100644 view/theme/diabook-blue/icons/livejournal.png create mode 100644 view/theme/diabook-blue/icons/posterous.png create mode 100644 view/theme/diabook-blue/icons/tumblr.png create mode 100644 view/theme/diabook-blue/icons/twitter.png create mode 100644 view/theme/diabook-blue/icons/wordpress.png create mode 100644 view/theme/diabook-blue/right_aside.tpl create mode 100644 view/theme/diabook-blue/style-network.css create mode 100644 view/theme/diabook-blue/style-profile.css diff --git a/view/theme/diabook-blue/communityhome.tpl b/view/theme/diabook-blue/communityhome.tpl new file mode 100755 index 000000000..13e8271bd --- /dev/null +++ b/view/theme/diabook-blue/communityhome.tpl @@ -0,0 +1,61 @@ +{{ if $lastusers_title }} +

    Help or #NewHere ?

    +Friendica Support
    +Let's talk
    +NewHere +{{ endif }} + +{{ if $lastusers_title }} +

    Connectable Services

    +
    +Facebook +StatusNet +LiveJournal +Posterous +Tumblr +Twitter +WordPress +E-Mail +
    +{{ endif }} + +{{ if $lastusers_title }} +

    $lastusers_title

    +
    +{{ for $lastusers_items as $i }} + $i +{{ endfor }} +
    +{{ endif }} + +{{ if $activeusers_title }} +

    $activeusers_title

    +
    +{{ for $activeusers_items as $i }} + $i +{{ endfor }} +
    +{{ endif }} + +{{ if $photos_title }} +

    $photos_title

    +
    +{{ for $photos_items as $i }} + $i +{{ endfor }} +
    +{{ endif }} + +{{ if $lastusers_title }} +

    PostIt to Friendica

    +
    Post to Friendica from anywhere by bookmarking this Link.
    +{{ endif }} + +{{ if $like_title }} +

    $like_title

    +
      +{{ for $like_items as $i }} +
    • $i
    • +{{ endfor }} +
    +{{ endif }} diff --git a/view/theme/diabook-blue/directory_item.tpl b/view/theme/diabook-blue/directory_item.tpl new file mode 100755 index 000000000..db1936e4b --- /dev/null +++ b/view/theme/diabook-blue/directory_item.tpl @@ -0,0 +1,10 @@ + +
    +
    +
    + + $alt-text + +
    +
    +
    diff --git a/view/theme/diabook-blue/fpostit/README b/view/theme/diabook-blue/fpostit/README new file mode 100644 index 000000000..39b7c5761 --- /dev/null +++ b/view/theme/diabook-blue/fpostit/README @@ -0,0 +1,8 @@ +fpostit + +original author: Devlon Duthied + +see his blog posting: +http://blog.duthied.com/2011/09/13/node-agnostic-friendika-bookmarklet/ + +original published at github https://github.com/duthied/Friendika-Bookmarklet diff --git a/view/theme/diabook-blue/fpostit/fpostit.js b/view/theme/diabook-blue/fpostit/fpostit.js new file mode 100755 index 000000000..d183c7573 --- /dev/null +++ b/view/theme/diabook-blue/fpostit/fpostit.js @@ -0,0 +1,6 @@ +javascript: (function() { + the_url = 'localhost/view/theme/diabook/fpostit/fpostit.php?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' + encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text)); + a_funct = function() { + if (!window.open(the_url, 'fpostit', 'location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) location.href = the_url}; + if (/Firefox/.test(navigator.userAgent)) {setTimeout(a_funct, 0)} + else {a_funct()}})()" \ No newline at end of file diff --git a/view/theme/diabook-blue/fpostit/fpostit.php b/view/theme/diabook-blue/fpostit/fpostit.php new file mode 100644 index 000000000..acf77a6c8 --- /dev/null +++ b/view/theme/diabook-blue/fpostit/fpostit.php @@ -0,0 +1,135 @@ + + + + + + + + $content); + + // echo "posting to: $url
    "; + + $c = curl_init(); + curl_setopt($c, CURLOPT_URL, $url); + curl_setopt($c, CURLOPT_USERPWD, "$username:$password"); + curl_setopt($c, CURLOPT_POSTFIELDS, $data); + curl_setopt($c, CURLOPT_RETURNTRANSFER, true); + curl_setopt($c, CURLOPT_FOLLOWLOCATION, true); + $c_result = curl_exec($c); + if(curl_errno($c)){ + $error = curl_error($c); + showForm($error, $content); + } + + curl_close($c); + if (!isset($error)) { + echo ''; + } + + } else { + $error = "Missing account name and/or password...try again please"; + showForm($error, $content); + } + +} else { + showForm(null, $content); +} + +function showForm($error, $content) { + $username_cookie = $_COOKIE['username']; + $password_cookie = $_COOKIE['password']; + + echo << +

    + Friendika Bookmarklet

    +
    + +
    +
    + Enter the email address of the Friendika Account that you want to cross-post to:(example: user@friendika.org)

    + Account ID:
    + Password:
    +
    +   $error + +

    +
    +EOF; + +} +?> + + + \ No newline at end of file diff --git a/view/theme/diabook-blue/fpostit/friendika-32.png b/view/theme/diabook-blue/fpostit/friendika-32.png new file mode 100644 index 000000000..61764bf20 Binary files /dev/null and b/view/theme/diabook-blue/fpostit/friendika-32.png differ diff --git a/view/theme/diabook-blue/icons/StatusNet.png b/view/theme/diabook-blue/icons/StatusNet.png new file mode 100644 index 000000000..398bca716 Binary files /dev/null and b/view/theme/diabook-blue/icons/StatusNet.png differ diff --git a/view/theme/diabook-blue/icons/email.png b/view/theme/diabook-blue/icons/email.png new file mode 100644 index 000000000..240cef2c3 Binary files /dev/null and b/view/theme/diabook-blue/icons/email.png differ diff --git a/view/theme/diabook-blue/icons/facebook.png b/view/theme/diabook-blue/icons/facebook.png new file mode 100644 index 000000000..3e5dd39c3 Binary files /dev/null and b/view/theme/diabook-blue/icons/facebook.png differ diff --git a/view/theme/diabook-blue/icons/livejournal.png b/view/theme/diabook-blue/icons/livejournal.png new file mode 100644 index 000000000..6d27d265e Binary files /dev/null and b/view/theme/diabook-blue/icons/livejournal.png differ diff --git a/view/theme/diabook-blue/icons/posterous.png b/view/theme/diabook-blue/icons/posterous.png new file mode 100644 index 000000000..c8e86078e Binary files /dev/null and b/view/theme/diabook-blue/icons/posterous.png differ diff --git a/view/theme/diabook-blue/icons/tumblr.png b/view/theme/diabook-blue/icons/tumblr.png new file mode 100644 index 000000000..1dc7fa072 Binary files /dev/null and b/view/theme/diabook-blue/icons/tumblr.png differ diff --git a/view/theme/diabook-blue/icons/twitter.png b/view/theme/diabook-blue/icons/twitter.png new file mode 100644 index 000000000..b7a687b9f Binary files /dev/null and b/view/theme/diabook-blue/icons/twitter.png differ diff --git a/view/theme/diabook-blue/icons/wordpress.png b/view/theme/diabook-blue/icons/wordpress.png new file mode 100644 index 000000000..f564c4300 Binary files /dev/null and b/view/theme/diabook-blue/icons/wordpress.png differ diff --git a/view/theme/diabook-blue/profile_side.tpl b/view/theme/diabook-blue/profile_side.tpl index a65677696..0fa8a27fd 100644 --- a/view/theme/diabook-blue/profile_side.tpl +++ b/view/theme/diabook-blue/profile_side.tpl @@ -11,10 +11,10 @@ - +
    - \ No newline at end of file + diff --git a/view/theme/diabook-blue/profile_vcard.tpl b/view/theme/diabook-blue/profile_vcard.tpl index 3a545f9ba..918cfc97c 100644 --- a/view/theme/diabook-blue/profile_vcard.tpl +++ b/view/theme/diabook-blue/profile_vcard.tpl @@ -22,7 +22,7 @@ {{ if $pdesc }}
    $profile.pdesc
    {{ endif }} -
    $profile.name
    +
    $profile.name
    diff --git a/view/theme/diabook-blue/right_aside.tpl b/view/theme/diabook-blue/right_aside.tpl new file mode 100644 index 000000000..a65677696 --- /dev/null +++ b/view/theme/diabook-blue/right_aside.tpl @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/view/theme/diabook-blue/style-network.css b/view/theme/diabook-blue/style-network.css new file mode 100644 index 000000000..66cfe0c6c --- /dev/null +++ b/view/theme/diabook-blue/style-network.css @@ -0,0 +1,2509 @@ +/** + * Fabio Comuni + * Additional Changes: Michael Vogel + **/ + +/* ========= */ +/* = Admin = */ +/* ========= */ + +#adminpage { +/* width: 80%;*/ +} + +#pending-update { + float:right; + color: #ffffff; + font-weight: bold; + background-color: #FF0000; + padding: 0em 0.3em; +} + +.admin.linklist { + border: 0px; padding: 0px; +} + +.admin.link { + list-style-position: inside; + font-size: 1em; + padding: 5px; + width: 100px; + margin: 5px; +} + +#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 #898989; + margin-bottom: 5px; + margin-top: 10px; +} + +#adminpage .submit { + clear:left; +} + +#adminpage #pluginslist { + margin: 0px; padding: 0px; +} + +#adminpage .plugin { + list-style: none; + display: block; + /* border: 1px solid #888888; */ + padding: 1em; + margin-bottom: 5px; + clear: left; +} + +#adminpage .toggleplugin { + float:left; + margin-right: 1em; +} + +#adminpage table {width:100%; border-bottom: 1p 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: #eeeeee; } +#adminpage .selectall { text-align: right; } +/* icons */ + +.icon.contacts { + background-image: url("../../../view/theme/diabook-blue/icons/contacts.png");} +.icon.notifications { + background-image: url("../../../view/theme/diabook-blue/icons/notifications.png");} +.icon.notify { + background-image: url("../../../view/theme/diabook-blue/icons/notify.png");} +.icon.messages { + background-image: url("../../../view/theme/diabook-blue/icons/messages.png");} +.icon.community { + background-image: url("../../../view/theme/diabook-blue/icons/community.png");} + +.icon.drop { background-image: url("../../../view/theme/diabook-blue/icons/drop.png");} +.icon.drophide { background-image: url("../../../view/theme/diabook-blue/icons/drop.png");} +.icon.dislike { background-image: url("../../../view/theme/diabook-blue/icons/dislike.png");} +.icon.like { background-image: url("../../../view/theme/diabook-blue/icons/like.png");} +.icon.pencil { background-image: url("../../../view/theme/diabook-blue/icons/pencil.png");} +.icon.recycle { background-image: url("../../../view/theme/diabook-blue/icons/recycle.png");} +.icon.remote-link { background-image: url("../../../view/theme/diabook-blue/icons/remote.png");} +.icon.tagged { background-image: url("../../../view/theme/diabook-blue/icons/tagged.png");} +.icon.file-as { background-image: url("../../../view/theme/diabook-blue/icons/file_as.png");} +.star-item.icon.unstarred { background-image: url("../../../view/theme/diabook-blue/icons/unstarred.png");} +.star-item.icon.starred { background-image: url("../../../view/theme/diabook-blue/icons/starred.png");} +.icon.link { background-image: url("../../../view/theme/diabook-blue/icons/link.png");} +.icon.lock { background-image: url("../../../view/theme/diabook-blue/icons/lock.png");} +.icon.unlock { background-image: url("../../../view/theme/diabook-blue/icons/unlock.png");} +.icon.language { background-image: url("../../../view/theme/diabook-blue/icons/language.png");} + + +.camera { background-image: url("../../../view/theme/diabook-blue/icons/camera.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.attach { background-image: url("../../../view/theme/diabook-blue/icons/attach.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.video2 { background-image: url("../../../view/theme/diabook-blue/icons/video.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.video { background-image: url("../../../view/theme/diabook-blue/icons/video.png"); + display: block; width: 100%; height: 28px; background-repeat: no-repeat; + } +.audio2 { background-image: url("../../../view/theme/diabook-blue/icons/audio.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.audio { background-image: url("../../../view/theme/diabook-blue/icons/audio.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.weblink { background-image: url("../../../view/theme/diabook-blue/icons/weblink.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.globe { background-image: url("../../../view/theme/diabook-blue/icons/globe.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.unglobe { background-image: url("../../../view/theme/diabook-blue/icons/unglobe.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.edit {background-image: url("../../../view/theme/diabook-blue/icons/pencil2.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat;} + + + + +.article { background-position: -50px 0px;} +/*.audio { background-position: -70px 0px;}*/ +.block { background-position: -90px 0px;} +/*.drop { background-position: -110px 0px;}*/ +/*.drophide { background-position: -130px 0px;}*/ +/*.edit { background-position: -150px 0px;}*/ +/*.camera { background-position: -170px 0px;}*/ +/*.dislike { background-position: -190px 0px;}*/ +/*.like { background-position: -210px 0px;}*/ +/*.link { background-position: -230px 0px;}*/ + +/*.globe { background-position: -50px -20px;}*/ +/*.noglobe { background-position: -70px -20px;}*/ +.no { background-position: -90px -20px;} +.pause { background-position: -110px -20px;} +.play { background-position: -130px -20px;} +/*.pencil { background-position: -150px -20px;}*/ +.small-pencil { background-position: -170px -20px;} +/*.recycle { background-position: -190px -20px;}*/ +/*.remote-link { background-position: -210px -20px;}*/ +.share { background-position: -230px -20px;} + +.tools { background-position: -50px -40px;} +/*.lock { background-position: -70px -40px;}*/ + +/*.video { background-position: -110px -40px;}*/ +.youtube { background-position: -130px -40px;} + +/*.attach { background-position: -190px -40px;}*/ +/*.language { background-position: -210px -40px;}*/ + + +.icon.on { background-image: url("../../../view/theme/diabook-blue/icons/toogle_on.png"); background-repeat: no-repeat;} +.icon.off { background-image: url("../../../view/theme/diabook-blue/icons/toogle_off.png"); background-repeat: no-repeat;} +.prev { background-position: -90px -60px;} +.next { background-position: -110px -60px;} +/*.tagged { background-position: -130px -60px;}*/ + +.attachtype { + display: block; width: 20px; height: 23px; + background-image: url('../../../images/content-types.png'); +} + +.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; } + +.icon.drop, .icon.drophide { + float: left; +} + +.icon { + display: block; + width: 20px; + height: 20px; + /*background-image: url('icons.png');*/ +} + +.icon { + background-color: transparent ; + background-repeat: no-repeat; + /* background-position: left center; */ + display: block; + overflow: hidden; + text-indent: -9999px; + padding: 1px; +} + +.icon.border.camera{ + background-image: url("../../../view/theme/diabook-blue/icons/camera.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } + +.icon.border.link{ + background-image: url("../../../view/theme/diabook-blue/icons/weblink.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + margin-left: 10px; + } + +.icon.text { + text-indent: 0px; +} +.icon.s10 { + min-width: 10px; + height: 10px; +} +.icon.s10.notify { + background-image: url("../../../images/icons/10/notify_off.png"); +} +.icon.s10.gear { + background-image: url("../../../images/icons/10/gear.png"); +} +.icon.s10.add { + background-image: url("../../../images/icons/10/add.png"); +} +.icon.s10.delete { + background-image: url("../../../images/icons/10/delete.png"); +} +.icon.s10.edit { + background-image: url("../../../images/icons/10/edit.png"); +} +.icon.s10.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s10.menu { + background-image: url("../../../images/icons/10/menu.png"); +} +.icon.s10.link { + background-image: url("../../../images/icons/10/link.png"); +} +.icon.s10.lock { + background-image: url("../../../images/icons/10/lock.png"); +} +.icon.s10.unlock { + background-image: url("../../../images/icons/10/unlock.png"); +} +.icon.s10.text { + padding: 2px 0px 0px 15px; + font-size: 10px; +} +.icon.s16 { + min-width: 16px; + height: 16px; +} +.icon.s16.notify { + background-image: url("../../../images/icons/16/notify_off.png"); +} +.icon.s16.gear { + background-image: url("../../../images/icons/16/gear.png"); +} +.icon.s16.add { + background-image: url("../../../images/icons/16/add.png"); +} +.icon.s16.delete { + background-image: url("../../../images/icons/16/delete.png"); +} +/*.icon.s16.edit { + background-image: url("../../../images/icons/16/edit.png"); +}*/ +.icon.s16.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s16.menu { + background-image: url("../../../images/icons/16/menu.png"); +} +/*.icon.s16.link { + background-image: url("../../../images/icons/16/link.png"); +}*/ +.icon.s16.lock { + background-image: url("../../../images/icons/16/lock.png"); +} +.icon.s16.unlock { + background-image: url("../../../images/icons/16/unlock.png"); +} +.icon.s16.text { + padding: 4px 0px 0px 20px; + font-size: 10px; +} +.icon.s22 { + min-width: 22px; + height: 22px; +} +.icon.s22.notify { + background-image: url("../../../images/icons/22/notify_off.png"); +} +.icon.s22.gear { + background-image: url("../../../images/icons/22/gear.png"); +} +.icon.s22.add { + background-image: url("../../../images/icons/22/add.png"); +} +.icon.s22.delete { + background-image: url("../../../images/icons/22/delete.png"); +} +.icon.s22.edit { + background-image: url("../../../images/icons/22/edit.png"); +} +.icon.s22.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s22.menu { + background-image: url("../../../images/icons/22/menu.png"); +} +.icon.s22.link { + background-image: url("../../../images/icons/22/link.png"); +} +.icon.s22.lock { + background-image: url("../../../images/icons/22/lock.png"); +} +.icon.s22.unlock { + background-image: url("../../../images/icons/22/unlock.png"); +} +.icon.s22.text { + padding: 10px 0px 0px 25px; + width: 200px; +} +.icon.s48 { + width: 48px; + height: 48px; +} +.icon.s48.notify { + background-image: url("../../../images/icons/48/notify_off.png"); +} +.icon.s48.gear { + background-image: url("../../../images/icons/48/gear.png"); +} +.icon.s48.add { + background-image: url("../../../images/icons/48/add.png"); +} +.icon.s48.delete { + background-image: url("../../../images/icons/48/delete.png"); +} +.icon.s48.edit { + background-image: url("../../../images/icons/48/edit.png"); +} +.icon.s48.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s48.menu { + background-image: url("../../../images/icons/48/menu.png"); +} +.icon.s48.link { + background-image: url("../../../images/icons/48/link.png"); +} +.icon.s48.lock { + background-image: url("../../../images/icons/48/lock.png"); +} +.icon.s48.unlock { + background-image: url("../../../images/icons/48/unlock.png"); +} + +#contact-edit-links ul { + list-style: none; + list-style-type: none; +} + +.hide-comments-outer { + margin-left: 80px; + margin-bottom: 5px; + width: 484px; + border-bottom: 1px solid #BDCDD4; + border-top: 1px solid #BDCDD4; + + padding: 8px; +} + +/* global */ +body { + font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + background-color: #ffffff; + color: #2d2d2d; + margin: 50px auto auto; + display: table; +} + +h4 { + font-size: 1.1em; +} + +a { + color: #333333; + /* color: #3e3e8c; */ + text-decoration: none; +} +a:hover { + /* color: blue; */ + text-decoration: underline +} + +.wall-item-name-link { +/* float: left;*/ +} + +.wall-item-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} + +.left { + float: left; +} +.right { + float: right; +} +.hidden { + display: none; +} +.clear { + clear: both; +} +.fakelink { + color: #1872A2; + /* color: #3e3e8c; */ + text-decoration: none; + cursor: pointer; +} +.fakelink:hover { + /* color: blue; */ + /*color: #005c94; */ + text-decoration: underline; +} +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; +} +#panel { + position: absolute; + width: 12em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 1em; + list-style: none; + border: 3px solid #364e59; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +/* tool */ +.tool { + height: auto; + overflow: auto; + padding: 3px; +} +#saved-search-ul .tool:hover, +#nets-sidebar .tool:hover, +#sidebar-group-list .tool:hover { + background: #EEE; +} +.tool .label { + float: left; +} +.tool .action { + float: right; +} +.tool a { + color: ##3F8FBA; +} +.tool a:hover { + text-decoration: none; +} +/* 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; +} +/* header */ +header { + position: fixed; + left: 0%; + right: 80%; + top: 0px; + margin: 0px; + padding: 0px; + width: 22%; + height: 32px; + background: #1872a2; + background-color: #1872a2; + z-index: 100; + border-bottom: 1px; + border-bottom-color: black; + border-bottom-style: inset; +} +header #site-location { + display: none; +} +header #banner { + overflow: hidden; + text-align: left; + width: 82%%; + margin-left: 25%; +} +header #banner a, +header #banner a:active, +header #banner a:visited, +header #banner a:link, +header #banner a:hover { + color: #ffffff; + text-decoration: none; + outline: none; + vertical-align: middle; +} +header #banner #logo-img { + height: 25px; + margin-top: 5px; +} +header #banner #logo-text { + font-size: 22px; + position: absolute; + top: 15%; +} +/* nav */ +nav { + width: 80%; + height: 32px; + position: fixed; + left: 22%; + top: 0px; + padding: 0px; + background: #1872a2; + color: #ffffff; + z-index: 99; + border-bottom: 1px; + border-bottom-color: black; + border-bottom-style: inset; +} +nav a, +nav a:active, +nav a:visited, +nav a:link, +nav a:hover { + color: #ffffff; + text-decoration: none; + outline: none; +} +nav #banner { + overflow: hidden; + /*text-align: center;*/ + width: 100%; +} +nav #banner a, +nav #banner a:active, +nav #banner a:visited, +nav #banner a:link, +nav #banner a:hover { + color: #ffffff; + text-decoration: none; + outline: none; + vertical-align: bottom; +} +nav #banner #logo-img { + height: 22px; + margin-top: 5px; +} +nav #banner #logo-text { + font-size: 22px; +} +nav #navbar{ + } +nav ul { + margin: 0px; + padding: 0px 20px; +} +nav ul li { + list-style: none; + margin: 0px; + /* padding: 1px 1px 3px 1px; */ + float: left; +} +nav ul li .menu-popup { + left: 0px; + right: auto; +} + +nav #logo-img { + height: 25px; + margin-top: 4px; + margin-left: 30px; +} + +nav #logo-text { + font-size: 22px; + margin-top: 3px; + margin-right: 15px; +} +nav .nav-menu-search { + position: relative; + + margin: 3px 17px; + margin-right: 0px; + height: 17px; + width: 180px; + +} + +nav #search-box #search-text { + background-image: url('icons/lupe.png'); + background-repeat:no-repeat; + padding-left:20px; + } + + +nav .nav-menu-icon { + position: relative; + height: 22px; + padding: 5px; + margin: 0px 5px; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +nav .nav-menu-icon:hover { + background-color: #308dbf; + position: relative; + height: 22px; + padding: 5px; + margin: 0px 5px; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +nav .nav-menu-icon.selected { + background-color: #fff; +} +nav .nav-menu-icon img { + width: 22px; + height: 22px; +} +nav .nav-menu-icon .nav-notify { + top: 3px; +} +nav .nav-menu { + position: relative; + height: 16px; + padding: 5px; + margin: 3px 15px 0px; + font-size: 13px; + /*border-bottom: 3px solid #364A84;*/ +} +nav .nav-menu.selected { + /*border-bottom: 3px solid #9eabb0;*/ +} +nav .nav-notify { + display: none; + position: absolute; + background-color: #ff0000; + /* background-color: #19aeff; */ + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + font-size: 10px; + font-weight: 900; + padding: 1px 4px; + top: 0px; + right: -6px; + min-width: 10px; + text-align: center; +} +nav .nav-notify.show { + display: block; +} +nav #nav-help-link, +nav #nav-search-link, +nav #nav-directory-link, +nav #nav-apps-link, +nav #nav-site-linkmenu, +nav #nav-home-link, +nav #nav-user-linkmenu +{ + float: right; +} +nav #nav-user-linkmenu{ + margin-right: 0px; + } +nav #nav-home-link, #nav-directory-link, #nav-apps-link{ + margin-left: 0px; + margin-right: 0px; + font-weight: bold; + margin: 3px 5px; + } +nav #nav-directory-link{ + margin-right: 0px; + } +nav #nav-home-link{ + margin-left: 0px; + } +nav #nav-help-link .menu-popup, +nav #nav-search-link .menu-popup, +nav #nav-directory-link .menu-popup, +nav #nav-apps-link .menu-popup, +nav #nav-site-linkmenu .menu-popup { + right: 0px; + left: auto; +} + +nav #nav-messages-linkmenu.on .icon.messages, nav #nav-messages-linkmenu.selected .icon.messages{ + background-image: url("../../../view/theme/diabook-blue/icons/messages2.png"); + } + +/*nav #nav-notifications-linkmenu.on .icon.notify,*/ nav #nav-notifications-linkmenu.selected .icon.notify{ + background-image: url("../../../view/theme/diabook-blue/icons/notify2.png"); + } + +nav #nav-contacts-linkmenu.on .icon.contacts, nav #nav-contacts-linkmenu.selected .icon.contacts{ + background-image: url("../../../view/theme/diabook-blue/icons/contacts2.png"); + } + +nav #nav-apps-link.selected { + background-color: #364e59; +} + +#nav-notifications-mark-all { + /* padding: 1px 1px 2px 26px; */ + /* border-bottom: 1px solid #364E59; */ + /* margin: 0px 0px 2px 0px; + padding: 5px 10px; */ +} + +#nav-notifications-see-all { + /* padding: 1px 1px 2px 26px; */ + /* border-bottom: 1px solid #364E59; */ + /* margin: 0px 0px 2px 0px; + padding: 5px 10px; */ +} + +.notify-seen { + background: none repeat scroll 0 0 #DDDDDD; + } + +ul.menu-popup { + position: absolute; + display: none; + width: 11em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 0px; + list-style: none; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +ul.menu-popup a { + display: block; + color: #2d2d2d; + padding: 5px 10px; + text-decoration: none; +} +ul.menu-popup a:hover { + background-color: #14618a; /*bdcdd4;*/ + color: #fff; +} +ul.menu-popup .menu-sep { + border-top: 1px solid #9eabb0; +} +ul.menu-popup li { + float: none; + overflow: auto; + height: auto; + display: block; +} +ul.menu-popup li img { + float: left; + width: 16px; + height: 16px; + padding-right: 5px; +} +ul.menu-popup .empty { + padding: 5px; + text-align: center; + color: #9eabb0; +} +/* autocomplete popup */ +.acpopup { + max-height: 150px; + background-color: #ffffff; + color: #2d2d2d; + border: 1px solid #MenuBorder; + overflow: auto; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +.acpopupitem { + color: #2d2d2d; + padding: 4px; + clear: left; +} +.acpopupitem img { + float: left; + margin-right: 4px; +} +.acpopupitem.selected { + background-color: #bdcdd4; +} +#nav-notifications-menu { + width: 400px; + max-height: 550px; + overflow: auto; +} +/* #nav-notifications-menu a { + display: inline; + padding: 5px 0px; + margin: 0px 0px 2px 0px; +} +#nav-notifications-menu li:hover { + background-color: #bdcdd4; +}*/ + +#nav-notifications-menu img { + float: left; + margin-right: 5px; +} +#nav-notifications-menu .contactname { + font-weight: bold; +} +#nav-notifications-menu .notif-when { + font-size: 10px; + color: #9eabb0; + display: block; +} + +.notif-image { + width: 32px; + height: 32px; + padding: 7px 7px 0px 0px; +} + +/*profile_side*/ +#profile_side { + margin-bottom: 30px; +} +#ps-usericon{ + height: 25px + } +#ps-username{ + font-size: 1.17em; + font-weight: bold; + vertical-align: top; + position: absolute; + padding-top: 4px; + padding-left: 5px; + } +#ps-username:hover{ + text-decoration: none; + } +.menu-profile-side{ + list-style: none; + padding-left: 0px; + min-height: 0px; + } +.menu-profile-list{ + height: auto; + overflow: auto; + padding-top: 3px; + padding-bottom: 3px; + padding-left: 16px; + min-height: 16px; + list-style: none; + } +.menu-profile-list:hover{ + background: #EEE; + } +.menu-profile-list-item{ + padding-left: 5px; + } +.menu-profile-list-item:hover{ + text-decoration: none; + } +/*http://prothemedesign.com/circular-icons/*/ +.menu-profile-list.home{ + background: url("../../../view/theme/diabook-blue/icons/home.png") no-repeat; + } +.menu-profile-list.photos{ + background: url("../../../view/theme/diabook-blue/icons/mess_side.png") no-repeat; + } +.menu-profile-list.events{ + background: url("../../../view/theme/diabook-blue/icons/events.png") no-repeat; + } +.menu-profile-list.notes{ + background: url("../../../view/theme/diabook-blue/icons/notes.png") no-repeat; + } +.menu-profile-list.foren{ + background: url("../../../view/theme/diabook-blue/icons/pubgroups.png") no-repeat; + } +.menu-profile-list.com_side{ + background: url("../../../view/theme/diabook-blue/icons/com_side.png") no-repeat; + } + +/* aside */ +aside { + display: table-cell; + vertical-align: top; + width: 160px; + padding: 0px 10px 0px 10px; + border-right: 1px solid #D2D2D2; + float: left; + /* background: #F1F1F1; */ +} + +aside .vcard .fn { + font-size: 18px; + font-weight: bold; + margin-bottom: 5px; +} +aside .vcard .title { + margin-bottom: 5px; +} +aside .vcard dl { + height: auto; + overflow: auto; +} +aside .vcard dt { + float: left; + margin-left: 0px; + /*width: 35%;*/ + text-align: right; + color: #999999; +} +aside .vcard dd { + float: left; + margin-left: 5px; + /*width: 60%;*/ +} +aside #profile-extra-links ul { + padding: 0px; + margin: 0px; +} +aside #profile-extra-links li { + padding: 0px; + margin: 0px; + list-style: none; +} +aside #dfrn-request-link { + display: block; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + color: #ffffff; + background: #005c94 url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform: uppercase; + padding: 4px 2px 2px 35px; +} +aside #dfrn-request-link:hover { + text-decoration: none; + background-color: #36c; + /* background-color: #19aeff; */ +} +aside #profiles-menu { + width: 20em; +} +aside #search-text { + width: 150px; +} +aside #side-follow-url { + width: 150px; + } +aside #side-peoplefind-url { + width: 150px; + } +#contact-block { + overflow: auto; + height: auto; +} +#contact-block .contact-block-h4 { + float: left; + margin: 5px 0px; +} +#contact-block .allcontact-link { + float: right; + margin: 5px 0px; +} +#contact-block .contact-block-content { + clear: both; + overflow: auto; + height: auto; +} +#contact-block .contact-block-link { + float: left; + margin: 0px 2px 2px 0px; +} +#contact-block .contact-block-link img { + widht: 55px; + height: 55px; +} +#lost-password-link { + float: left; + margin-right: 20px; + } +/* widget */ +.widget { + margin-bottom: 2em; + /*.action .s10 { width: 10px; overflow: hidden; padding: 0px;} + .action .s16 { width: 16px; overflow: hidden; padding: 0px;}*/ +/* font-size: 12px; */ +} +.widget h3 { + padding: 0px; + margin: 2px; +} +.widget .action { + opacity: 0.1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget input.action { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget:hover .title .action { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget .tool:hover .action { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget .tool:hover .action.ticked { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget ul { + padding: 0px; +} +.widget ul li { + padding-left: 16px; + min-height: 16px; + list-style: none; +} +#side-bar-photos-albums li{ +list-style-type: disc; +} +#side-bar-photos-albums ul li{ + margin-left: 30px; + padding-left: 0px; + } +#side-bar-photos-albums ul li a{ + color: #1872A2; +} +.widget .tool.selected { + background: url("../../../view/theme/diabook-blue/icons/selected.png") no-repeat left center; +} +/* widget: search */ +#add-search-popup { + width: 200px; + top: 18px; +} +/* section */ +section { + display: table-cell; + vertical-align: top; + width: auto; + padding: 0px 0px 0px 12px; +} + +body .pageheader{ + text-align: center; + margin-top: 25px; + font-size: 0px; + } + +#id_username { + width: 173px; + } +#id_password { + width: 173px; + } +#id_openid_url { + width: 173px; + } +#contact-edit-end { + } +.pager { + padding: 10px; + text-align: center; + font-size: 1.0em; + clear: both; + display: block; +} + +.tabs { + + background-position: 0 -20px; + background-repeat: repeat-x; + height: 27px; + padding: 0; + } +.tab.button { + margin-right: 5px; + margin-left: 5px; + /*background: none repeat scroll 0 0 #F8F8F8;*/ + border: 1px solid #CCCCCC; + border-radius: 3px 3px 3px 3px; + font-weight: normal; + padding: 3px; + color: #333333; + } + +#birthday-notice, #event-notice, #birthday-wrapper, #event-wrapper{ + margin-bottom: 10px; + } + +right_aside { + display: table-cell; + vertical-align: top; + width: 160px; + padding-right: 10px; + /*border-left: 1px solid #D2D2D2;*/ + + /* background: #F1F1F1; */ +} +right_aside a{color: #1872A2;} +right_aside h3 {border-bottom: 1px solid #D2D2D2; padding-top: 5px; padding-bottom: 0px; padding-left: 5px; margin-bottom: 0px; +margin-top:30px;} +right_aside .directory-item { width: 50px; height: 50px; vertical-align: center; text-align: center; } +right_aside .directory-photo { margin: 0px; } +right_aside .directory-photo-img { max-width: 45px; max-height: 45px; } +right_aside #likes { margin: 0px; padding: 0px; list-style: none; } +right_aside .items-wrapper{ overflow: auto; width: 100%; } +right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; } +right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; } + +/* wall item */ +.tread-wrapper { + border-bottom: 1px solid #D2D2D2; + position: relative; + padding: 5px; + margin-bottom: 0px; + width: 575px; +} +.tread-wrapper a{ + color: #1872A2; +} + +.wall-item-decor { + position: absolute; + left: 790px; + top: -10px; + width: 16px; +} + +.wall-item-container { + display: table; + width: 580px; +} + + +.wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom { + display: table-row; +} +.wall-item-bottom { + font-size: 13px; +} +.wall-item-container .wall-item-bottom { +/* opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; */ +} +.wall-item-container:hover .wall-item-bottom { +/* opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; */ +} +.wall-item-container .wall-item-info { + display: table-cell; + vertical-align: top; + text-align: left; + width: 80px; +} +.wall-item-container .wall-item-location { + padding-right: 40px; + display: table-cell; +} +.wall-item-container .wall-item-ago { + word-wrap: break-word; + width: 50px; + margin-left: 10px; + color: #999; +} +.wall-item-location { + + clear: both; + overflow: hidden; + + margin-bottom: 5px; +} + +.wall-item-container .wall-item-content { + font-size: 13px; + max-width: 420px; + word-wrap: break-word; + line-height: 1.4; +} + +.wall-item-container .wall-item-content img { + max-width: 500px; +} +.wall-item-container .wall-item-links, .wall-item-container .wall-item-actions { + display: table-cell; + vertical-align: middle; +} +.wall-item-container .wall-item-links .icon, .wall-item-container .wall-item-actions .icon { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-links .icon:hover, .wall-item-container .wall-item-actions .icon:hover { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-name { + font-weight: bold; +} +.wall-item-container .wall-item-actions-author { + width: 100%; + margin-bottom: 0.3em; +} +.wall-item-container .wall-item-actions-social { + float: left; + margin-bottom: 1px; + display: table-cell; +} +.wall-item-container .wall-item-actions-social a { + margin-right: 1em; +} +.wall-item-actions-social a { + float: left; +} +.wall-item-container .wall-item-actions-tools { + float: right; + width: 80px; + display: table-cell; +} +.wall-item-container .wall-item-actions-tools a { + float: right; +} +.wall-item-container .wall-item-actions-tools input { + float: right; +} +.wall-item-container.comment { + margin-top: 5px; + margin-bottom: 5px; + margin-left: 80px; + width: 500px; + border-bottom: 1px solid hsl(198, 21%, 79%); +} +.wall-item-container.comment .contact-photo { + width: 32px; + height: 32px; + margin-left: 16px; + /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/ + +} +.wall-item-container.comment { + top: 15px !important; + left: 15px !important; +} +.wall-item-container.comment .wall-item-links { + padding-left: 12px; +} +.wall-item-comment-wrapper { + margin: 1px 5px 1px 80px; +} +.wall-item-comment-wrapper .comment-edit-photo { + display: none; +} +.wall-item-comment-wrapper textarea { + height: 2.0em; + width: 100%; + font-size: 10px; + color: #999999; + border: 1px solid #DDD; + padding: 0.3em; + font-size: 14px; +} +.wall-item-comment-wrapper .comment-edit-text-full { + font-size: 14px; + height: 4em; + color: #2d2d2d; + border: 1px solid #2d2d2d; +} +.comment-edit-preview { + width: 710px; + border: 1px solid #2d2d2d; + margin-top: 10px; +} +.comment-edit-preview .contact-photo { + width: 32px; + height: 32px; + margin-left: 16px; + /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/ + +} +.comment-edit-preview { + top: 15px !important; + left: 15px !important; +} +.comment-edit-preview .wall-item-links { + padding-left: 12px; +} +.comment-edit-preview .wall-item-container { + width: 700px; +} +.comment-edit-preview .tread-wrapper { + width: 700px; + padding: 0; + margin: 10px 0; +} + +.shiny { + /* border-right: 10px solid #fce94f; */ + border-right: 1px solid #A7C7F7; + padding-right: 12px; +} + +#jot-preview-content{ + margin-top: 30px;} + +#jot-preview-content .tread-wrapper { + background-color: #fff797; +} + +.wall-item-tags { + padding-top: 1px; + padding-bottom: 2px; +} +.tag { + /*background: url("../../../images/tag_b.png") repeat-x center left;*/ + color: #999; + padding-left: 3px; + font-size: 12px; +} +.tag a { + padding-right: 5px; + /*background: url("../../../images/tag.png") no-repeat center right;*/ + color: #999; +} +.wwto { + position: absolute !important; + width: 25px; + height: 25px; + background: #FFFFFF; + border: 2px solid #364e59; + height: 25px; + width: 25px; + overflow: hidden; + padding: 1px; + position: absolute !important; + top: 40px; + left: 30px; + -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); +} +.wwto .contact-photo { + width: auto; + height: 25px; +} +/* contacts menu */ +.contact-photo-wrapper { + position: relative; + width: 80px; +} + +.contact-photo-wrapper.wwto { + width: 25px; +} + +.contact-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} +.contact-photo img { + width: 48px; + height: 48px; +} + +.contact-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 15px; +} +.contact-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.contact-wrapper { + left: 0px; + top: 63px; +} +.contact-photo { + width: 48px; + height: 48px; +} +.contact-photo img { + width: 48px; + height: 48px; +} +.contact-name { + /* text-align: center; */ + /*font-weight: bold;*/ + font-size: 12px; +} +.contact-details { + color: #999999; +} +/* editor */ +.jothidden { + display: none; +} +#jot { + width: 585px; + margin: 0px 2em 20px 0px; +} +#profile-jot-form #profile-jot-text { + height: 2.0em; + width: 99%; + font-size: 15px; + color: #999999; + border: 1px solid #DDD; + padding: 0.3em; + margin-bottom: 10px; +} +#jot #jot-tools { + margin: 0px; + padding: 0px; + height: 40px; + overflow: none; + width: 583px; + background-color: #fff; + border-bottom: 2px solid #9eabb0; +} + +#jot #jot-tools li { + list-style: none; + float: left; + width: 80px; + height: 40px; + border-bottom: 2px solid #9eabb0; +} +#jot #jot-tools li a { + display: block; + color: #cccccc; + width: 100%; + height: 40px; + text-align: center; + line-height: 40px; + overflow: hidden; +} +#jot #jot-tools li:hover { + background-color: #364e59; + border-bottom: 2px solid #bdcdd4; +} +#jot #jot-tools li.perms { + float: right; + width: 40px; +} +#jot #jot-tools li.perms a.unlock { + width: 30px; + border-left: 10px solid #cccccc; + background-color: #cccccc; + background-position: left center; +} +#jot #jot-tools li.perms a.lock { + width: 30px; + border-left: 10px solid #666666; + background-color: #666666; +} +#jot #jot-tools li.submit { + float: right; + background-color: #cccccc; + border-bottom: 2px solid #cccccc; + border-right: 1px solid #666666; + border-left: 1px solid #666666; +} +#jot #jot-tools li.submit input { + border: 0px; + margin: 0px; + padding: 0px; + background-color: #cccccc; + color: #666666; + width: 80px; + height: 40px; + line-height: 40px; +} +#jot #jot-tools li.submit input:hover { + background-color: #bdcdd4; + color: #666666; +} +#jot #jot-tools li.loading { + float: right; + background-color: #ffffff; + width: 20px; + vertical-align: center; + text-align: center; + border-top: 2px solid #9eabb0; + height: 38px; +} +#jot #jot-tools li.loading img { + margin-top: 10px; +} +#profile-jot-form #jot-title { + + border-radius: 5px 5px 5px 5px; + font-weight: bold; + height: 20px; + margin: 0 0 5px; + width: 60%; + border: 1px solid #ffffff; +} +#profile-jot-form #jot-title:-webkit-input-placeholder { + font-weight: normal; +} +#profile-jot-form #jot-title:-moz-placeholder { + font-weight: normal; +} +#profile-jot-form #profile-jot-text_parent #profile-jot-text_tbl{ + width: 585px; + height: 100px; + } +#jot #jot-title:hover { + border: 1px solid #999999; +} +#jot #jot-title:focus { + border: 1px solid #999999; +} +#jot #character-counter { + width: 80px; + float: right; + text-align: right; + height: 20px; + line-height: 20px; + padding-right: 20px; +} +#jot-perms-icon, +#profile-location, +#profile-nolocation, +#profile-youtube, +#profile-video, +#profile-audio, +#profile-link, +#profile-title, +#wall-image-upload, +#wall-file-upload, +#wall-image-upload-div, +#wall-file-upload-div, +.hover, .focus { + cursor: pointer; + margin-top: 2px; +} +#profile-jot-wrapper{ + margin: 0 2em 20px 0; + width: 585px; + } + +#profile-jot-submit-wrapper { + margin-bottom: 50px; + width: 585px; +} + +#profile-jot-submit { + float: right; + margin-top: 2px; + +} +#profile-upload-wrapper { + float: left; + margin-top: 2px; + margin-left: 10px; + +} +#profile-attach-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-rotator { + float: left; + margin-left: 30px; + margin-top: 2px; +} +#profile-link-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-youtube-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-video-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-audio-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-location-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-jot-perms { + float: left; + margin-left: 45px; + margin-top: 2px; +} +#jot-preview-link { + float: right; + margin-left: 10px; + margin-top: 2px; + font-size: 10px; +} +#profile-jot-perms{ + float: right; + margin-left: 10px; + margin-top: 2px; + } +/** buttons **/ +.button.creation1 { + background-color: #fff; + border: 1px solid #777777; + background-image: -moz-linear-gradient(center top , white 0%, #DDDDDD 100%); + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; +} +.button.creation2 { + background-color: #1872A2; + background-image: -moz-linear-gradient(center top , #66C1FF 0%, #0097FF 100%); + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; +} +/*input[type="submit"] { + border: 0px; + background-color: @ButtonBackgroundColor; + color: @ButtonColor; + padding: 0px 10px; + .rounded(5px); + height: 18px; +}*/ +/** acl **/ +#photo-edit-perms-select, #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper { + display: block!important; +} +#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; + color: #999999; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +#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-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 **/ +/** tab buttons 14618a**/ +ul.tabs { + list-style-type: none; + padding-bottom: 10px; + font-size: 13px; +} +ul.tabs li { + float: left; + margin-left: 5px; +} +ul.tabs li .active { + background-color: #055580; + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; +} +/** + * 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 .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; +} +.field .hidden { + display: none!important; +} +.field.radio .field_help { + margin-left: 0px; +} +#directory-search-form{ + margin-bottom: 50px; + } +#profile-edit-links-end { + clear: both; + margin-bottom: 15px; +} + +#profile-edit-links ul { margin: 20px; padding-bottom: 20px; list-style: none; } + +#profile-edit-links li { + float: left; + list-style: none; + margin-left: 10px; +} + +.profile-edit-side-div { + display: none; +} + +#register-form label, +#profile-edit-form label { + width: 300px; float: left; +} + +.required { + display: inline; + color: #B20202; +} + +/* 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; +} +/* contacts */ +.contact-entry-wrapper { + width: 120px; + height: 120px; + float: left; +} +/* photo */ +.photo { +box-shadow: 2px 2px 5px 0px #000000; +margin: 2px 5px 2px 5px; +max-height: 85%; +max-width: 85%; +} +.lframe { + float: left; + /*margin: 0px 10px 10px 0px;*/ +} +/* profile match wrapper */ +.profile-match-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 20px; +} +.profile-match-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.profile-match-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.profile-match-wrapper { + left: 0px; + top: 63px; +} + +.contact-photo-menu-button { + position: relative; + background-image: url("../../../images/icons/16/menu.png"); + background-position: top left; + background-repeat: no-repeat; + margin: 0px 0px -16px 0px; + padding: 0px; + width: 16px; + height: 16px; + top: -20px; left:0px; + overflow: hidden; + text-indent: 40px; + display: none; + +} +.contact-photo-menu { + width: 11em; + border: 3px solid #364e59; + color: #2d2d2d; + background: #FFFFFF; +/* position: absolute;*/ + position: relative; + left: 0px; top: 0px; + display: none; + z-index: 10000; +} +.contact-photo-menu ul { margin:0px; padding: 0px; list-style: none } +.contact-photo-menu li a { + display: block; + padding: 5px 10px; + color: #2d2d2d; + text-decoration: none; +} +.contact-photo-menu li a:hover { + background-color: #bdcdd4; +} + +/* page footer */ +footer { + height: 100px; + display: table-row; +} + +blockquote { + border-left: 1px solid #D2D2D2; + padding-left: 9px; + margin: 0 0 0 .8ex; +} +.aprofile dt{ +box-shadow: 1px 1px 5px 0; + color: #666666; + margin: 15px 0 5px; + padding-left: 5px; + } +/* ================== */ +/* = Contacts Block = */ +/* ================== */ + +.contact-block-img { + width: 55px; + height: 55px; + padding-right: 3px; +} +.contact-block-div { + float: left; +} + +.contact-block-textdiv { width: 150px; height: 34px; float: left; } +#contact-block-end { clear: both; } + +#group-edit-wrapper { + margin-bottom: 10px; +} + +#group-members-end { + clear: both; +} +#group-edit-desc { + margin-top: 15px; +} + +/* +#group-separator, +#prof-separator { display: none;} +*/ + +#prvmail-to-label, #prvmail-subject-label, #prvmail-message-label { + margin-bottom: 10px; + margin-top: 20px; +} + +#prvmail-submit { + float: right; + margin-top: 10px; +} + +#prvmail-subject +{ +background: none repeat scroll 0 0 #FFFFFF; +border: 1px solid #CCCCCC; +border-radius: 5px 5px 5px 5px; +font-weight: bold; +height: 20px; +margin: 0 0 5px; +vertical-align: middle; +} +#prvmail-form{ + width: 597px; + } + +#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; +} + +/* ========== */ +/* = Events = */ +/* ========== */ +.eventcal { + float: left; + font-size: 20px; +} + +.vevent { + border: 1px solid #CCCCCC; +} +.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; +} +.calendar.eventcal a { + color: #1872A2; + } +.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; +} +.lightbox{ + float: left; + } + +#photo-photo { + float: left; +} +#photo-like-div .wall-item-like-buttons { + float: left; + margin-right: 5px; + margin-top: 30px; + } +.comment-edit-text-empty { + margin: 10px 0 0; + width: 85%; +} +.comment-edit-photo { + margin: 10px 0 0; +} +.wall-item-like-buttons .icon.like { +float: left; +} + +#photo-photo-end { + clear: both; +} + +.tabs .comment-wwedit-wrapper { + display: block; + margin-top: 30px; + margin-left: 50px; + } + +.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; +} + +/* ============= */ +/* = Directory = */ +/* ============= */ +/* contacts menu */ +.contact-photo-wrapper { + position: relative; +} +.contact-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} +.contact-photo img { + width: 48px; + height: 48px; +} +.contact-photo-menu-button { + display: none; + /* position: absolute; */ + /* position: absolute; */ + left: -2px; + top: -20px; +} +.contact-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 15px; +} +.contact-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo-menu-button { + left: 0px; + top: 63px; +} +.directory-item { + float: left; + width: 200px; + height: 200px; +} +.directory-item .contact-photo { + width: 175px; + height: 175px; +} +.directory-item .contact-photo img { + width: 175px; + height: 175px; +} +.contact-name { + text-align: left; + font-weight: bold; + font-size: 12px; +} +.contact-details { + color: #999999; +} +#side-bar-photos-albums li{ +list-style-type: disc; +} +#side-bar-photos-albums ul li{ + margin-left: 30px; + padding-left: 0px; + } +#side-bar-photos-albums{ + margin-top: 15px; + } +.photo-top-photo, .photo-album-photo { + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.photo-album-image-wrapper, .photo-top-image-wrapper { + float: left; + -moz-box-shadow: 0 0 5px #888; + -webkit-box-shadow: 0 0 5px #888; + box-shadow: 0 0 5px #888; + background-color: #000; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding-bottom: 20px; + position: relative; + margin: 0 10px 10px 0; + width: 200px; height: 140px; + overflow: hidden; +} +.photo-top-album-name { + width: 100%; + position: absolute; + bottom: 0px; + padding-left: 3px; + background-color: #EEE; +} +.photo-top-album-link{ + color: #1872A2; + } +.photo-top-album-img{ + + } +/*.photo-top-image-wrapper { + position: relative; + float: left; + margin-top: 15px; + margin-right: 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; +} + diff --git a/view/theme/diabook-blue/style-profile.css b/view/theme/diabook-blue/style-profile.css new file mode 100644 index 000000000..5209777b2 --- /dev/null +++ b/view/theme/diabook-blue/style-profile.css @@ -0,0 +1,2508 @@ +/** + * Fabio Comuni + * Additional Changes: Michael Vogel + **/ + +/* ========= */ +/* = Admin = */ +/* ========= */ + +#adminpage { +/* width: 80%;*/ +} + +#pending-update { + float:right; + color: #ffffff; + font-weight: bold; + background-color: #FF0000; + padding: 0em 0.3em; +} + +.admin.linklist { + border: 0px; padding: 0px; +} + +.admin.link { + list-style-position: inside; + font-size: 1em; + padding: 5px; + width: 100px; + margin: 5px; +} + +#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 #898989; + margin-bottom: 5px; + margin-top: 10px; +} + +#adminpage .submit { + clear:left; +} + +#adminpage #pluginslist { + margin: 0px; padding: 0px; +} + +#adminpage .plugin { + list-style: none; + display: block; + /* border: 1px solid #888888; */ + padding: 1em; + margin-bottom: 5px; + clear: left; +} + +#adminpage .toggleplugin { + float:left; + margin-right: 1em; +} + +#adminpage table {width:100%; border-bottom: 1p 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: #eeeeee; } +#adminpage .selectall { text-align: right; } +/* icons */ + +.icon.contacts { + background-image: url("../../../view/theme/diabook-blue/icons/contacts.png");} +.icon.notifications { + background-image: url("../../../view/theme/diabook-blue/icons/notifications.png");} +.icon.notify { + background-image: url("../../../view/theme/diabook-blue/icons/notify.png");} +.icon.messages { + background-image: url("../../../view/theme/diabook-blue/icons/messages.png");} +.icon.community { + background-image: url("../../../view/theme/diabook-blue/icons/community.png");} + +.icon.drop { background-image: url("../../../view/theme/diabook-blue/icons/drop.png");} +.icon.drophide { background-image: url("../../../view/theme/diabook-blue/icons/drop.png");} +.icon.dislike { background-image: url("../../../view/theme/diabook-blue/icons/dislike.png");} +.icon.like { background-image: url("../../../view/theme/diabook-blue/icons/like.png");} +.icon.pencil { background-image: url("../../../view/theme/diabook-blue/icons/pencil.png");} +.icon.recycle { background-image: url("../../../view/theme/diabook-blue/icons/recycle.png");} +.icon.remote-link { background-image: url("../../../view/theme/diabook-blue/icons/remote.png");} +.icon.tagged { background-image: url("../../../view/theme/diabook-blue/icons/tagged.png");} +.icon.file-as { background-image: url("../../../view/theme/diabook-blue/icons/file_as.png");} +.star-item.icon.unstarred { background-image: url("../../../view/theme/diabook-blue/icons/unstarred.png");} +.star-item.icon.starred { background-image: url("../../../view/theme/diabook-blue/icons/starred.png");} +.icon.link { background-image: url("../../../view/theme/diabook-blue/icons/link.png");} +.icon.lock { background-image: url("../../../view/theme/diabook-blue/icons/lock.png");} +.icon.unlock { background-image: url("../../../view/theme/diabook-blue/icons/unlock.png");} +.icon.language { background-image: url("../../../view/theme/diabook-blue/icons/language.png");} + + +.camera { background-image: url("../../../view/theme/diabook-blue/icons/camera.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.attach { background-image: url("../../../view/theme/diabook-blue/icons/attach.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.video2 { background-image: url("../../../view/theme/diabook-blue/icons/video.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.video { background-image: url("../../../view/theme/diabook-blue/icons/video.png"); + display: block; width: 100%; height: 28px; background-repeat: no-repeat; + } +.audio2 { background-image: url("../../../view/theme/diabook-blue/icons/audio.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.audio { background-image: url("../../../view/theme/diabook-blue/icons/audio.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.weblink { background-image: url("../../../view/theme/diabook-blue/icons/weblink.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.globe { background-image: url("../../../view/theme/diabook-blue/icons/globe.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.unglobe { background-image: url("../../../view/theme/diabook-blue/icons/unglobe.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } +.edit {background-image: url("../../../view/theme/diabook-blue/icons/pencil2.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat;} + + + + +.article { background-position: -50px 0px;} +/*.audio { background-position: -70px 0px;}*/ +.block { background-position: -90px 0px;} +/*.drop { background-position: -110px 0px;}*/ +/*.drophide { background-position: -130px 0px;}*/ +/*.edit { background-position: -150px 0px;}*/ +/*.camera { background-position: -170px 0px;}*/ +/*.dislike { background-position: -190px 0px;}*/ +/*.like { background-position: -210px 0px;}*/ +/*.link { background-position: -230px 0px;}*/ + +/*.globe { background-position: -50px -20px;}*/ +/*.noglobe { background-position: -70px -20px;}*/ +.no { background-position: -90px -20px;} +.pause { background-position: -110px -20px;} +.play { background-position: -130px -20px;} +/*.pencil { background-position: -150px -20px;}*/ +.small-pencil { background-position: -170px -20px;} +/*.recycle { background-position: -190px -20px;}*/ +/*.remote-link { background-position: -210px -20px;}*/ +.share { background-position: -230px -20px;} + +.tools { background-position: -50px -40px;} +/*.lock { background-position: -70px -40px;}*/ + +/*.video { background-position: -110px -40px;}*/ +.youtube { background-position: -130px -40px;} + +/*.attach { background-position: -190px -40px;}*/ +/*.language { background-position: -210px -40px;}*/ + + +.icon.on { background-image: url("../../../view/theme/diabook-blue/icons/toogle_on.png"); background-repeat: no-repeat;} +.icon.off { background-image: url("../../../view/theme/diabook-blue/icons/toogle_off.png"); background-repeat: no-repeat;} +.prev { background-position: -90px -60px;} +.next { background-position: -110px -60px;} +/*.tagged { background-position: -130px -60px;}*/ + +.attachtype { + display: block; width: 20px; height: 23px; + background-image: url('../../../images/content-types.png'); +} + +.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; } + +.icon.drop, .icon.drophide { + float: left; +} + +.icon { + display: block; + width: 20px; + height: 20px; + /*background-image: url('icons.png');*/ +} + +.icon { + background-color: transparent ; + background-repeat: no-repeat; + /* background-position: left center; */ + display: block; + overflow: hidden; + text-indent: -9999px; + padding: 1px; +} + +.icon.border.camera{ + background-image: url("../../../view/theme/diabook-blue/icons/camera.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + } + +.icon.border.link{ + background-image: url("../../../view/theme/diabook-blue/icons/weblink.png"); + display: block; width: 28px; height: 28px; background-repeat: no-repeat; + margin-left: 10px; + } + +.icon.text { + text-indent: 0px; +} +.icon.s10 { + min-width: 10px; + height: 10px; +} +.icon.s10.notify { + background-image: url("../../../images/icons/10/notify_off.png"); +} +.icon.s10.gear { + background-image: url("../../../images/icons/10/gear.png"); +} +.icon.s10.add { + background-image: url("../../../images/icons/10/add.png"); +} +.icon.s10.delete { + background-image: url("../../../images/icons/10/delete.png"); +} +.icon.s10.edit { + background-image: url("../../../images/icons/10/edit.png"); +} +.icon.s10.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s10.menu { + background-image: url("../../../images/icons/10/menu.png"); +} +.icon.s10.link { + background-image: url("../../../images/icons/10/link.png"); +} +.icon.s10.lock { + background-image: url("../../../images/icons/10/lock.png"); +} +.icon.s10.unlock { + background-image: url("../../../images/icons/10/unlock.png"); +} +.icon.s10.text { + padding: 2px 0px 0px 15px; + font-size: 10px; +} +.icon.s16 { + min-width: 16px; + height: 16px; +} +.icon.s16.notify { + background-image: url("../../../images/icons/16/notify_off.png"); +} +.icon.s16.gear { + background-image: url("../../../images/icons/16/gear.png"); +} +.icon.s16.add { + background-image: url("../../../images/icons/16/add.png"); +} +.icon.s16.delete { + background-image: url("../../../images/icons/16/delete.png"); +} +/*.icon.s16.edit { + background-image: url("../../../images/icons/16/edit.png"); +}*/ +.icon.s16.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s16.menu { + background-image: url("../../../images/icons/16/menu.png"); +} +/*.icon.s16.link { + background-image: url("../../../images/icons/16/link.png"); +}*/ +.icon.s16.lock { + background-image: url("../../../images/icons/16/lock.png"); +} +.icon.s16.unlock { + background-image: url("../../../images/icons/16/unlock.png"); +} +.icon.s16.text { + padding: 4px 0px 0px 20px; + font-size: 10px; +} +.icon.s22 { + min-width: 22px; + height: 22px; +} +.icon.s22.notify { + background-image: url("../../../images/icons/22/notify_off.png"); +} +.icon.s22.gear { + background-image: url("../../../images/icons/22/gear.png"); +} +.icon.s22.add { + background-image: url("../../../images/icons/22/add.png"); +} +.icon.s22.delete { + background-image: url("../../../images/icons/22/delete.png"); +} +.icon.s22.edit { + background-image: url("../../../images/icons/22/edit.png"); +} +.icon.s22.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s22.menu { + background-image: url("../../../images/icons/22/menu.png"); +} +.icon.s22.link { + background-image: url("../../../images/icons/22/link.png"); +} +.icon.s22.lock { + background-image: url("../../../images/icons/22/lock.png"); +} +.icon.s22.unlock { + background-image: url("../../../images/icons/22/unlock.png"); +} +.icon.s22.text { + padding: 10px 0px 0px 25px; + width: 200px; +} +.icon.s48 { + width: 48px; + height: 48px; +} +.icon.s48.notify { + background-image: url("../../../images/icons/48/notify_off.png"); +} +.icon.s48.gear { + background-image: url("../../../images/icons/48/gear.png"); +} +.icon.s48.add { + background-image: url("../../../images/icons/48/add.png"); +} +.icon.s48.delete { + background-image: url("../../../images/icons/48/delete.png"); +} +.icon.s48.edit { + background-image: url("../../../images/icons/48/edit.png"); +} +.icon.s48.star { + background-image: url("../../../images/star_dummy.png"); +} +.icon.s48.menu { + background-image: url("../../../images/icons/48/menu.png"); +} +.icon.s48.link { + background-image: url("../../../images/icons/48/link.png"); +} +.icon.s48.lock { + background-image: url("../../../images/icons/48/lock.png"); +} +.icon.s48.unlock { + background-image: url("../../../images/icons/48/unlock.png"); +} + +#contact-edit-links ul { + list-style: none; + list-style-type: none; +} + +.hide-comments-outer { + margin-left: 80px; + margin-bottom: 5px; + width: 484px; + border-bottom: 1px solid #BDCDD4; + border-top: 1px solid #BDCDD4; + + padding: 8px; +} + +/* global */ +body { + font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + background-color: #ffffff; + color: #2d2d2d; + margin: 50px auto auto; + display: table; +} + +h4 { + font-size: 1.1em; +} + +a { + color: #333333; + /* color: #3e3e8c; */ + text-decoration: none; +} +a:hover { + /* color: blue; */ + text-decoration: underline +} + +.wall-item-name-link { +/* float: left;*/ +} + +.wall-item-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} + +.left { + float: left; +} +.right { + float: right; +} +.hidden { + display: none; +} +.clear { + clear: both; +} +.fakelink { + color: #1872A2; + /* color: #3e3e8c; */ + text-decoration: none; + cursor: pointer; +} +.fakelink:hover { + /* color: blue; */ + /*color: #005c94; */ + text-decoration: underline; +} +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; +} +#panel { + position: absolute; + width: 12em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 1em; + list-style: none; + border: 3px solid #364e59; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +/* tool */ +.tool { + height: auto; + overflow: auto; + padding: 3px; +} +#saved-search-ul .tool:hover, +#nets-sidebar .tool:hover, +#sidebar-group-list .tool:hover { + background: #EEE; +} +.tool .label { + float: left; +} +.tool .action { + float: right; +} +.tool a { + color: ##3F8FBA; +} +.tool a:hover { + text-decoration: none; +} +/* 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; +} +/* header */ +header { + position: fixed; + left: 0%; + right: 80%; + top: 0px; + margin: 0px; + padding: 0px; + width: 22%; + height: 32px; + background: #1872a2; + background-color: #1872a2; + z-index: 100; + border-bottom: 1px; + border-bottom-color: black; + border-bottom-style: inset; +} +header #site-location { + display: none; +} +header #banner { + overflow: hidden; + text-align: left; + width: 82%%; + margin-left: 25%; +} +header #banner a, +header #banner a:active, +header #banner a:visited, +header #banner a:link, +header #banner a:hover { + color: #ffffff; + text-decoration: none; + outline: none; + vertical-align: middle; +} +header #banner #logo-img { + height: 25px; + margin-top: 5px; +} +header #banner #logo-text { + font-size: 22px; + position: absolute; + top: 15%; +} +/* nav */ +nav { + width: 80%; + height: 32px; + position: fixed; + left: 22%; + top: 0px; + padding: 0px; + background: #1872a2; + color: #ffffff; + z-index: 99; + border-bottom: 1px; + border-bottom-color: black; + border-bottom-style: inset; +} +nav a, +nav a:active, +nav a:visited, +nav a:link, +nav a:hover { + color: #ffffff; + text-decoration: none; + outline: none; +} +nav #banner { + overflow: hidden; + /*text-align: center;*/ + width: 100%; +} +nav #banner a, +nav #banner a:active, +nav #banner a:visited, +nav #banner a:link, +nav #banner a:hover { + color: #ffffff; + text-decoration: none; + outline: none; + vertical-align: bottom; +} +nav #banner #logo-img { + height: 22px; + margin-top: 5px; +} +nav #banner #logo-text { + font-size: 22px; +} +nav #navbar{ + } +nav ul { + margin: 0px; + padding: 0px 20px; +} +nav ul li { + list-style: none; + margin: 0px; + /* padding: 1px 1px 3px 1px; */ + float: left; +} +nav ul li .menu-popup { + left: 0px; + right: auto; +} + +nav #logo-img { + height: 25px; + margin-top: 4px; + margin-left: 30px; +} + +nav #logo-text { + font-size: 22px; + margin-top: 3px; + margin-right: 15px; +} +nav .nav-menu-search { + position: relative; + + margin: 3px 17px; + margin-right: 0px; + height: 17px; + width: 180px; + +} + +nav #search-box #search-text { + background-image: url('icons/lupe.png'); + background-repeat:no-repeat; + padding-left:20px; + } + + +nav .nav-menu-icon { + position: relative; + height: 22px; + padding: 5px; + margin: 0px 5px; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +nav .nav-menu-icon:hover { + background-color: #308dbf; + position: relative; + height: 22px; + padding: 5px; + margin: 0px 5px; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +nav .nav-menu-icon.selected { + background-color: #fff; +} +nav .nav-menu-icon img { + width: 22px; + height: 22px; +} +nav .nav-menu-icon .nav-notify { + top: 3px; +} +nav .nav-menu { + position: relative; + height: 16px; + padding: 5px; + margin: 3px 15px 0px; + font-size: 13px; + /*border-bottom: 3px solid #364A84;*/ +} +nav .nav-menu.selected { + /*border-bottom: 3px solid #9eabb0;*/ +} +nav .nav-notify { + display: none; + position: absolute; + background-color: #ff0000; + /* background-color: #19aeff; */ + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + font-size: 10px; + font-weight: 900; + padding: 1px 4px; + top: 0px; + right: -6px; + min-width: 10px; + text-align: center; +} +nav .nav-notify.show { + display: block; +} +nav #nav-help-link, +nav #nav-search-link, +nav #nav-directory-link, +nav #nav-apps-link, +nav #nav-site-linkmenu, +nav #nav-home-link, +nav #nav-user-linkmenu +{ + float: right; +} +nav #nav-user-linkmenu{ + margin-right: 0px; + } +nav #nav-home-link, #nav-directory-link, #nav-apps-link{ + margin-left: 0px; + margin-right: 0px; + font-weight: bold; + margin: 3px 5px; + } +nav #nav-directory-link{ + margin-right: 0px; + } +nav #nav-home-link{ + margin-left: 0px; + } +nav #nav-help-link .menu-popup, +nav #nav-search-link .menu-popup, +nav #nav-directory-link .menu-popup, +nav #nav-apps-link .menu-popup, +nav #nav-site-linkmenu .menu-popup { + right: 0px; + left: auto; +} + +nav #nav-messages-linkmenu.on .icon.messages, nav #nav-messages-linkmenu.selected .icon.messages{ + background-image: url("../../../view/theme/diabook-blue/icons/messages2.png"); + } + +/*nav #nav-notifications-linkmenu.on .icon.notify,*/ nav #nav-notifications-linkmenu.selected .icon.notify{ + background-image: url("../../../view/theme/diabook-blue/icons/notify2.png"); + } + +nav #nav-contacts-linkmenu.on .icon.contacts, nav #nav-contacts-linkmenu.selected .icon.contacts{ + background-image: url("../../../view/theme/diabook-blue/icons/contacts2.png"); + } + +nav #nav-apps-link.selected { + background-color: #364e59; +} + +#nav-notifications-mark-all { + /* padding: 1px 1px 2px 26px; */ + /* border-bottom: 1px solid #364E59; */ + /* margin: 0px 0px 2px 0px; + padding: 5px 10px; */ +} + +#nav-notifications-see-all { + /* padding: 1px 1px 2px 26px; */ + /* border-bottom: 1px solid #364E59; */ + /* margin: 0px 0px 2px 0px; + padding: 5px 10px; */ +} + +.notify-seen { + background: none repeat scroll 0 0 #DDDDDD; + } + +ul.menu-popup { + position: absolute; + display: none; + width: 11em; + background: #ffffff; + color: #2d2d2d; + margin: 0px; + padding: 0px; + list-style: none; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +ul.menu-popup a { + display: block; + color: #2d2d2d; + padding: 5px 10px; + text-decoration: none; +} +ul.menu-popup a:hover { + background-color: #14618a; /*bdcdd4;*/ + color: #fff; +} +ul.menu-popup .menu-sep { + border-top: 1px solid #9eabb0; +} +ul.menu-popup li { + float: none; + overflow: auto; + height: auto; + display: block; +} +ul.menu-popup li img { + float: left; + width: 16px; + height: 16px; + padding-right: 5px; +} +ul.menu-popup .empty { + padding: 5px; + text-align: center; + color: #9eabb0; +} +/* autocomplete popup */ +.acpopup { + max-height: 150px; + background-color: #ffffff; + color: #2d2d2d; + border: 1px solid #MenuBorder; + overflow: auto; + z-index: 100000; + -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); +} +.acpopupitem { + color: #2d2d2d; + padding: 4px; + clear: left; +} +.acpopupitem img { + float: left; + margin-right: 4px; +} +.acpopupitem.selected { + background-color: #bdcdd4; +} +#nav-notifications-menu { + width: 400px; + max-height: 550px; + overflow: auto; +} +/* #nav-notifications-menu a { + display: inline; + padding: 5px 0px; + margin: 0px 0px 2px 0px; +} +#nav-notifications-menu li:hover { + background-color: #bdcdd4; +}*/ + +#nav-notifications-menu img { + float: left; + margin-right: 5px; +} +#nav-notifications-menu .contactname { + font-weight: bold; +} +#nav-notifications-menu .notif-when { + font-size: 10px; + color: #9eabb0; + display: block; +} + +.notif-image { + width: 32px; + height: 32px; + padding: 7px 7px 0px 0px; +} + +/*profile_side*/ +#profile_side { + margin-bottom: 30px; +} +#ps-usericon{ + height: 25px + } +#ps-username{ + font-size: 1.17em; + font-weight: bold; + vertical-align: top; + position: absolute; + padding-top: 4px; + padding-left: 5px; + } +#ps-username:hover{ + text-decoration: none; + } +.menu-profile-side{ + list-style: none; + padding-left: 0px; + min-height: 0px; + } +.menu-profile-list{ + height: auto; + overflow: auto; + padding-top: 3px; + padding-bottom: 3px; + padding-left: 16px; + min-height: 16px; + list-style: none; + } +.menu-profile-list:hover{ + background: #EEE; + } +.menu-profile-list-item{ + padding-left: 5px; + } +.menu-profile-list-item:hover{ + text-decoration: none; + } +/*http://prothemedesign.com/circular-icons/*/ +.menu-profile-list.home{ + background: url("../../../view/theme/diabook-blue/icons/home.png") no-repeat; + } +.menu-profile-list.photos{ + background: url("../../../view/theme/diabook-blue/icons/mess_side.png") no-repeat; + } +.menu-profile-list.events{ + background: url("../../../view/theme/diabook-blue/icons/events.png") no-repeat; + } +.menu-profile-list.notes{ + background: url("../../../view/theme/diabook-blue/icons/notes.png") no-repeat; + } +.menu-profile-list.foren{ + background: url("../../../view/theme/diabook-blue/icons/pubgroups.png") no-repeat; + } +.menu-profile-list.com_side{ + background: url("../../../view/theme/diabook-blue/icons/com_side.png") no-repeat; + } + +/* aside */ +aside { + display: table-cell; + vertical-align: top; + width: 160px; + padding: 0px 10px 0px 10px; + border-right: 1px solid #D2D2D2; + float: left; + /* background: #F1F1F1; */ +} + +aside .vcard .fn { + font-size: 18px; + font-weight: bold; + margin-bottom: 5px; +} +aside .vcard .title { + margin-bottom: 5px; +} +aside .vcard dl { + height: auto; + overflow: auto; +} +aside .vcard dt { + float: left; + margin-left: 0px; + /*width: 35%;*/ + text-align: right; + color: #999999; +} +aside .vcard dd { + float: left; + margin-left: 5px; + /*width: 60%;*/ +} +aside #profile-extra-links ul { + padding: 0px; + margin: 0px; +} +aside #profile-extra-links li { + padding: 0px; + margin: 0px; + list-style: none; +} +aside #dfrn-request-link { + display: block; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + color: #ffffff; + background: #005c94 url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform: uppercase; + padding: 4px 2px 2px 35px; +} +aside #dfrn-request-link:hover { + text-decoration: none; + background-color: #36c; + /* background-color: #19aeff; */ +} +aside #profiles-menu { + width: 20em; +} +aside #search-text { + width: 150px; +} +aside #side-follow-url { + width: 150px; + } +aside #side-peoplefind-url { + width: 150px; + } +#contact-block { + overflow: auto; + height: auto; +} +#contact-block .contact-block-h4 { + float: left; + margin: 5px 0px; +} +#contact-block .allcontact-link { + float: right; + margin: 5px 0px; +} +#contact-block .contact-block-content { + clear: both; + overflow: auto; + height: auto; +} +#contact-block .contact-block-link { + float: left; + margin: 0px 2px 2px 0px; +} +#contact-block .contact-block-link img { + widht: 48px; + height: 48px; +} +#lost-password-link { + float: left; + margin-right: 20px; + } +/* widget */ +.widget { + margin-bottom: 2em; + /*.action .s10 { width: 10px; overflow: hidden; padding: 0px;} + .action .s16 { width: 16px; overflow: hidden; padding: 0px;}*/ +/* font-size: 12px; */ +} +.widget h3 { + padding: 0px; + margin: 2px; +} +.widget .action { + opacity: 0.1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget input.action { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget:hover .title .action { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget .tool:hover .action { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget .tool:hover .action.ticked { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.widget ul { + padding: 0px; +} +.widget ul li { + padding-left: 16px; + min-height: 16px; + list-style: none; +} +#side-bar-photos-albums li{ +list-style-type: disc; +} +#side-bar-photos-albums ul li{ + margin-left: 30px; + padding-left: 0px; + } +#side-bar-photos-albums ul li a{ + color: #1872A2; +} +.widget .tool.selected { + background: url("../../../view/theme/diabook-blue/icons/selected.png") no-repeat left center; +} +/* widget: search */ +#add-search-popup { + width: 200px; + top: 18px; +} +/* section */ +section { + display: table-cell; + vertical-align: top; + width: auto; + padding: 0px 0px 0px 12px; +} + +body .pageheader{ + text-align: center; + margin-top: 25px; + font-size: 0px; + } + +#id_username { + width: 173px; + } +#id_password { + width: 173px; + } +#id_openid_url { + width: 173px; + } +#contact-edit-end { + } +.pager { + padding: 10px; + text-align: center; + font-size: 1.0em; + clear: both; + display: block; +} + +.tabs { + + background-position: 0 -20px; + background-repeat: repeat-x; + height: 27px; + padding: 0; + } +.tab.button { + margin-right: 5px; + margin-left: 5px; + /*background: none repeat scroll 0 0 #F8F8F8;*/ + border: 1px solid #CCCCCC; + border-radius: 3px 3px 3px 3px; + font-weight: normal; + padding: 3px; + color: #333333; + } + +#birthday-notice, #event-notice, #birthday-wrapper, #event-wrapper{ + margin-bottom: 10px; + } + +right_aside { + display: table-cell; + vertical-align: top; + width: 160px; + padding-right: 10px; + /*border-left: 1px solid #D2D2D2;*/ + + /* background: #F1F1F1; */ +} +right_aside h3 {border-bottom: 1px solid #D2D2D2; padding-top: 5px; padding-bottom: 0px; padding-left: 5px; margin-bottom: 0px; +margin-top:30px;} +right_aside .directory-item { width: 50px; height: 50px; vertical-align: center; text-align: center; } +right_aside .directory-photo { margin: 0px; } +right_aside .directory-photo-img { max-width: 45px; max-height: 45px; } +right_aside #likes { margin: 0px; padding: 0px; list-style: none; } +right_aside .items-wrapper{ overflow: auto; width: 100%; } +right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; } +right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; } + +/* wall item */ +.tread-wrapper { + border-bottom: 1px solid #D2D2D2; + position: relative; + padding: 5px; + margin-bottom: 0px; + width: 575px; +} +.tread-wrapper a{ + color: #1872A2; +} + +.wall-item-decor { + position: absolute; + left: 790px; + top: -10px; + width: 16px; +} + +.wall-item-container { + display: table; + width: 580px; +} + + +.wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom { + display: table-row; +} +.wall-item-bottom { + font-size: 13px; +} +.wall-item-container .wall-item-bottom { +/* opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; */ +} +.wall-item-container:hover .wall-item-bottom { +/* opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; */ +} +.wall-item-container .wall-item-info { + display: table-cell; + vertical-align: top; + text-align: left; + width: 80px; +} +.wall-item-container .wall-item-location { + padding-right: 40px; + display: table-cell; +} +.wall-item-container .wall-item-ago { + word-wrap: break-word; + width: 50px; + margin-left: 10px; + color: #999; +} +.wall-item-location { + + clear: both; + overflow: hidden; + + margin-bottom: 5px; +} + +.wall-item-container .wall-item-content { + font-size: 13px; + max-width: 420px; + word-wrap: break-word; + line-height: 1.4; +} + +.wall-item-container .wall-item-content img { + max-width: 500px; +} +.wall-item-container .wall-item-links, .wall-item-container .wall-item-actions { + display: table-cell; + vertical-align: middle; +} +.wall-item-container .wall-item-links .icon, .wall-item-container .wall-item-actions .icon { + opacity: 0.5; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-links .icon:hover, .wall-item-container .wall-item-actions .icon:hover { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.wall-item-container .wall-item-name { + font-weight: bold; +} +.wall-item-container .wall-item-actions-author { + width: 100%; + margin-bottom: 0.3em; +} +.wall-item-container .wall-item-actions-social { + float: left; + margin-bottom: 1px; + display: table-cell; +} +.wall-item-container .wall-item-actions-social a { + margin-right: 1em; +} +.wall-item-actions-social a { + float: left; +} +.wall-item-container .wall-item-actions-tools { + float: right; + width: 80px; + display: table-cell; +} +.wall-item-container .wall-item-actions-tools a { + float: right; +} +.wall-item-container .wall-item-actions-tools input { + float: right; +} +.wall-item-container.comment { + margin-top: 5px; + margin-bottom: 5px; + margin-left: 80px; + width: 500px; + border-bottom: 1px solid hsl(198, 21%, 79%); +} +.wall-item-container.comment .contact-photo { + width: 32px; + height: 32px; + margin-left: 16px; + /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/ + +} +.wall-item-container.comment { + top: 15px !important; + left: 15px !important; +} +.wall-item-container.comment .wall-item-links { + padding-left: 12px; +} +.wall-item-comment-wrapper { + margin: 1px 5px 1px 80px; +} +.wall-item-comment-wrapper .comment-edit-photo { + display: none; +} +.wall-item-comment-wrapper textarea { + height: 2.0em; + width: 100%; + font-size: 10px; + color: #999999; + border: 1px solid #DDD; + padding: 0.3em; + font-size: 14px; +} +.wall-item-comment-wrapper .comment-edit-text-full { + font-size: 14px; + height: 4em; + color: #2d2d2d; + border: 1px solid #2d2d2d; +} +.comment-edit-preview { + width: 710px; + border: 1px solid #2d2d2d; + margin-top: 10px; +} +.comment-edit-preview .contact-photo { + width: 32px; + height: 32px; + margin-left: 16px; + /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/ + +} +.comment-edit-preview { + top: 15px !important; + left: 15px !important; +} +.comment-edit-preview .wall-item-links { + padding-left: 12px; +} +.comment-edit-preview .wall-item-container { + width: 700px; +} +.comment-edit-preview .tread-wrapper { + width: 700px; + padding: 0; + margin: 10px 0; +} + +.shiny { + /* border-right: 10px solid #fce94f; */ + border-right: 1px solid #A7C7F7; + padding-right: 12px; +} + +#jot-preview-content{ + margin-top: 30px;} + +#jot-preview-content .tread-wrapper { + background-color: #fff797; +} + +.wall-item-tags { + padding-top: 1px; + padding-bottom: 2px; +} +.tag { + /*background: url("../../../images/tag_b.png") repeat-x center left;*/ + color: #999; + padding-left: 3px; + font-size: 12px; +} +.tag a { + padding-right: 5px; + /*background: url("../../../images/tag.png") no-repeat center right;*/ + color: #999; +} +.wwto { + position: absolute !important; + width: 25px; + height: 25px; + background: #FFFFFF; + border: 2px solid #364e59; + height: 25px; + width: 25px; + overflow: hidden; + padding: 1px; + position: absolute !important; + top: 40px; + left: 30px; + -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7); +} +.wwto .contact-photo { + width: auto; + height: 25px; +} +/* contacts menu */ +.contact-photo-wrapper { + position: relative; + width: 80px; +} + +.contact-photo-wrapper.wwto { + width: 25px; +} + +.contact-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} +.contact-photo img { + width: 48px; + height: 48px; +} + +.contact-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 15px; +} +.contact-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.contact-wrapper { + left: 0px; + top: 63px; +} +.contact-photo { + width: 48px; + height: 48px; +} +.contact-photo img { + width: 48px; + height: 48px; +} +.contact-name { + /* text-align: center; */ + /*font-weight: bold;*/ + font-size: 12px; +} +.contact-details { + color: #999999; +} +/* editor */ +.jothidden { + display: none; +} +#jot { + width: 585px; + margin: 0px 2em 20px 0px; +} +#profile-jot-form #profile-jot-text { + height: 2.0em; + width: 99%; + font-size: 15px; + color: #999999; + border: 1px solid #DDD; + padding: 0.3em; + margin-bottom: 10px; +} +#jot #jot-tools { + margin: 0px; + padding: 0px; + height: 40px; + overflow: none; + width: 583px; + background-color: #fff; + border-bottom: 2px solid #9eabb0; +} + +#jot #jot-tools li { + list-style: none; + float: left; + width: 80px; + height: 40px; + border-bottom: 2px solid #9eabb0; +} +#jot #jot-tools li a { + display: block; + color: #cccccc; + width: 100%; + height: 40px; + text-align: center; + line-height: 40px; + overflow: hidden; +} +#jot #jot-tools li:hover { + background-color: #364e59; + border-bottom: 2px solid #bdcdd4; +} +#jot #jot-tools li.perms { + float: right; + width: 40px; +} +#jot #jot-tools li.perms a.unlock { + width: 30px; + border-left: 10px solid #cccccc; + background-color: #cccccc; + background-position: left center; +} +#jot #jot-tools li.perms a.lock { + width: 30px; + border-left: 10px solid #666666; + background-color: #666666; +} +#jot #jot-tools li.submit { + float: right; + background-color: #cccccc; + border-bottom: 2px solid #cccccc; + border-right: 1px solid #666666; + border-left: 1px solid #666666; +} +#jot #jot-tools li.submit input { + border: 0px; + margin: 0px; + padding: 0px; + background-color: #cccccc; + color: #666666; + width: 80px; + height: 40px; + line-height: 40px; +} +#jot #jot-tools li.submit input:hover { + background-color: #bdcdd4; + color: #666666; +} +#jot #jot-tools li.loading { + float: right; + background-color: #ffffff; + width: 20px; + vertical-align: center; + text-align: center; + border-top: 2px solid #9eabb0; + height: 38px; +} +#jot #jot-tools li.loading img { + margin-top: 10px; +} +#profile-jot-form #jot-title { + + border-radius: 5px 5px 5px 5px; + font-weight: bold; + height: 20px; + margin: 0 0 5px; + width: 60%; + border: 1px solid #ffffff; +} +#profile-jot-form #jot-title:-webkit-input-placeholder { + font-weight: normal; +} +#profile-jot-form #jot-title:-moz-placeholder { + font-weight: normal; +} +#profile-jot-form #profile-jot-text_parent #profile-jot-text_tbl{ + width: 585px; + height: 100px; + } +#jot #jot-title:hover { + border: 1px solid #999999; +} +#jot #jot-title:focus { + border: 1px solid #999999; +} +#jot #character-counter { + width: 80px; + float: right; + text-align: right; + height: 20px; + line-height: 20px; + padding-right: 20px; +} +#jot-perms-icon, +#profile-location, +#profile-nolocation, +#profile-youtube, +#profile-video, +#profile-audio, +#profile-link, +#profile-title, +#wall-image-upload, +#wall-file-upload, +#wall-image-upload-div, +#wall-file-upload-div, +.hover, .focus { + cursor: pointer; + margin-top: 2px; +} +#profile-jot-wrapper{ + margin: 0 2em 20px 0; + width: 585px; + } + +#profile-jot-submit-wrapper { + margin-bottom: 50px; + width: 585px; +} + +#profile-jot-submit { + float: right; + margin-top: 2px; + +} +#profile-upload-wrapper { + float: left; + margin-top: 2px; + margin-left: 10px; + +} +#profile-attach-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-rotator { + float: left; + margin-left: 30px; + margin-top: 2px; +} +#profile-link-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-youtube-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-video-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-audio-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-location-wrapper { + float: left; + margin-left: 15px; + margin-top: 2px; +} +#profile-jot-perms { + float: left; + margin-left: 45px; + margin-top: 2px; +} +#jot-preview-link { + float: right; + margin-left: 10px; + margin-top: 2px; + font-size: 10px; +} +#profile-jot-perms{ + float: right; + margin-left: 10px; + margin-top: 2px; + } +/** buttons **/ +.button.creation1 { + background-color: #fff; + border: 1px solid #777777; + background-image: -moz-linear-gradient(center top , white 0%, #DDDDDD 100%); + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; +} +.button.creation2 { + background-color: #1872A2; + background-image: -moz-linear-gradient(center top , #66C1FF 0%, #0097FF 100%); + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; +} +/*input[type="submit"] { + border: 0px; + background-color: @ButtonBackgroundColor; + color: @ButtonColor; + padding: 0px 10px; + .rounded(5px); + height: 18px; +}*/ +/** acl **/ +#photo-edit-perms-select, #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper { + display: block!important; +} +#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; + color: #999999; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +#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-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 **/ +/** tab buttons 14618a**/ +ul.tabs { + list-style-type: none; + padding-bottom: 10px; + font-size: 13px; +} +ul.tabs li { + float: left; + margin-left: 5px; +} +ul.tabs li .active { + background-color: #055580; + border: 1px solid #777777; + color: white; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 1px #CFCFCF; + margin-left: 5px; +} +/** + * 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 .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; +} +.field .hidden { + display: none!important; +} +.field.radio .field_help { + margin-left: 0px; +} +#directory-search-form{ + margin-bottom: 50px; + } +#profile-edit-links-end { + clear: both; + margin-bottom: 15px; +} + +#profile-edit-links ul { margin: 20px; padding-bottom: 20px; list-style: none; } + +#profile-edit-links li { + float: left; + list-style: none; + margin-left: 10px; +} + +.profile-edit-side-div { + display: none; +} + +#register-form label, +#profile-edit-form label { + width: 300px; float: left; +} + +.required { + display: inline; + color: #B20202; +} + +/* 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; +} +/* contacts */ +.contact-entry-wrapper { + width: 120px; + height: 120px; + float: left; +} +/* photo */ +.photo { +box-shadow: 2px 2px 5px 0px #000000; +margin: 2px 5px 2px 5px; +max-height: 85%; +max-width: 85%; +} +.lframe { + float: left; + /*margin: 0px 10px 10px 0px;*/ +} +/* profile match wrapper */ +.profile-match-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 20px; +} +.profile-match-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.profile-match-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.profile-match-wrapper { + left: 0px; + top: 63px; +} + +.contact-photo-menu-button { + position: relative; + background-image: url("../../../images/icons/16/menu.png"); + background-position: top left; + background-repeat: no-repeat; + margin: 0px 0px -16px 0px; + padding: 0px; + width: 16px; + height: 16px; + top: -20px; left:0px; + overflow: hidden; + text-indent: 40px; + display: none; + +} +.contact-photo-menu { + width: 11em; + border: 3px solid #364e59; + color: #2d2d2d; + background: #FFFFFF; +/* position: absolute;*/ + position: relative; + left: 0px; top: 0px; + display: none; + z-index: 10000; +} +.contact-photo-menu ul { margin:0px; padding: 0px; list-style: none } +.contact-photo-menu li a { + display: block; + padding: 5px 10px; + color: #2d2d2d; + text-decoration: none; +} +.contact-photo-menu li a:hover { + background-color: #bdcdd4; +} + +/* page footer */ +footer { + height: 100px; + display: table-row; +} + +blockquote { + border-left: 1px solid #D2D2D2; + padding-left: 9px; + margin: 0 0 0 .8ex; +} +.aprofile dt{ +box-shadow: 1px 1px 5px 0; + color: #666666; + margin: 15px 0 5px; + padding-left: 5px; + } +/* ================== */ +/* = Contacts Block = */ +/* ================== */ + +.contact-block-img { + width: 48px; + height: 48px; + padding-right: 3px; +} +.contact-block-div { + float: left; +} + +.contact-block-textdiv { width: 150px; height: 34px; float: left; } +#contact-block-end { clear: both; } + +#group-edit-wrapper { + margin-bottom: 10px; +} + +#group-members-end { + clear: both; +} +#group-edit-desc { + margin-top: 15px; +} + +/* +#group-separator, +#prof-separator { display: none;} +*/ + +#prvmail-to-label, #prvmail-subject-label, #prvmail-message-label { + margin-bottom: 10px; + margin-top: 20px; +} + +#prvmail-submit { + float: right; + margin-top: 10px; +} + +#prvmail-subject +{ +background: none repeat scroll 0 0 #FFFFFF; +border: 1px solid #CCCCCC; +border-radius: 5px 5px 5px 5px; +font-weight: bold; +height: 20px; +margin: 0 0 5px; +vertical-align: middle; +} +#prvmail-form{ + width: 597px; + } + +#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; +} + +/* ========== */ +/* = Events = */ +/* ========== */ +.eventcal { + float: left; + font-size: 20px; +} + +.vevent { + border: 1px solid #CCCCCC; +} +.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; +} +.calendar.eventcal a { + color: #1872A2; + } +.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; +} +.lightbox{ + float: left; + } + +#photo-photo { + float: left; +} +#photo-like-div .wall-item-like-buttons { + float: left; + margin-right: 5px; + margin-top: 30px; + } +.comment-edit-text-empty { + margin: 10px 0 0; + width: 85%; +} +.comment-edit-photo { + margin: 10px 0 0; +} +.wall-item-like-buttons .icon.like { +float: left; +} + +#photo-photo-end { + clear: both; +} + +.tabs .comment-wwedit-wrapper { + display: block; + margin-top: 30px; + margin-left: 50px; + } + +.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; +} + +/* ============= */ +/* = Directory = */ +/* ============= */ +/* contacts menu */ +.contact-photo-wrapper { + position: relative; +} +.contact-photo { + width: 48px; + height: 48px; + overflow: hidden; + display: block; +} +.contact-photo img { + width: 48px; + height: 48px; +} +.contact-photo-menu-button { + display: none; + /* position: absolute; */ + /* position: absolute; */ + left: -2px; + top: -20px; +} +.contact-wrapper { + float: left; + width: 90px; + height: 90px; + margin-bottom: 15px; +} +.contact-wrapper .contact-photo { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo img { + width: 80px; + height: 80px; +} +.contact-wrapper .contact-photo-menu-button { + left: 0px; + top: 63px; +} +.directory-item { + float: left; + width: 200px; + height: 200px; +} +.directory-item .contact-photo { + width: 175px; + height: 175px; +} +.directory-item .contact-photo img { + width: 175px; + height: 175px; +} +.contact-name { + text-align: left; + font-weight: bold; + font-size: 12px; +} +.contact-details { + color: #999999; +} +#side-bar-photos-albums li{ +list-style-type: disc; +} +#side-bar-photos-albums ul li{ + margin-left: 30px; + padding-left: 0px; + } +#side-bar-photos-albums{ + margin-top: 15px; + } +.photo-top-photo, .photo-album-photo { + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.photo-album-image-wrapper, .photo-top-image-wrapper { + float: left; + -moz-box-shadow: 0 0 5px #888; + -webkit-box-shadow: 0 0 5px #888; + box-shadow: 0 0 5px #888; + background-color: #000; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding-bottom: 20px; + position: relative; + margin: 0 10px 10px 0; + width: 200px; height: 140px; + overflow: hidden; +} +.photo-top-album-name { + width: 100%; + position: absolute; + bottom: 0px; + padding-left: 3px; + background-color: #EEE; +} +.photo-top-album-link{ + color: #1872A2; + } +.photo-top-album-img{ + + } +/*.photo-top-image-wrapper { + position: relative; + float: left; + margin-top: 15px; + margin-right: 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; +} + diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php index f9128ea1f..c2475e8bc 100755 --- a/view/theme/diabook-blue/theme.php +++ b/view/theme/diabook-blue/theme.php @@ -11,114 +11,206 @@ $a->theme_info = array( 'extends' => 'diabook', ); -//fancybox: provide $photo.href to photo_top.tpl to img in org. scale +//change css on network and profilepages +$cssFile = null; -//profile_side -$nav['usermenu']=array(); -$userinfo = null; - -if(local_user()) { +/** + * prints last community activity + */ +function diabook_community_info(){ + $a = get_app(); + //right_aside at networkpages + + // last 12 users + $aside['$lastusers_title'] = t('Last users'); + $aside['$lastusers_items'] = array(); + $sql_extra = ""; + $publish = (get_config('system','publish_all') ? '' : " AND `publish` = 1 " ); + $order = " ORDER BY `register_date` DESC "; + + $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname` + FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` + WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", + 0, + 12 + ); + $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + if(count($r)) { + $photo = 'thumb'; + foreach($r as $rr) { + $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile-link' => $profile_link, + '$photo' => $rr[$photo], + '$alt-text' => $rr['name'], + )); + $aside['$lastusers_items'][] = $entry; + } + } - - -$r = q("SELECT micro FROM contact WHERE uid=%d AND self=1", intval($a->user['uid'])); + + // last 10 liked items + $aside['$like_title'] = t('Last likes'); + $aside['$like_items'] = array(); + $r = q("SELECT `T1`.`created`, `T1`.`liker`, `T1`.`liker-link`, `item`.* FROM + (SELECT `parent-uri`, `created`, `author-name` AS `liker`,`author-link` AS `liker-link` + FROM `item` WHERE `verb`='http://activitystrea.ms/schema/1.0/like' GROUP BY `parent-uri` ORDER BY `created` DESC) AS T1 + INNER JOIN `item` ON `item`.`uri`=`T1`.`parent-uri` + WHERE `T1`.`liker-link` LIKE '%s%%' OR `item`.`author-link` LIKE '%s%%' + GROUP BY `uri` + ORDER BY `T1`.`created` DESC + LIMIT 0,10", + $a->get_baseurl(),$a->get_baseurl() + ); + + foreach ($r as $rr) { + $author = '' . $rr['liker'] . ''; + $objauthor = '' . $rr['author-name'] . ''; + + //var_dump($rr['verb'],$rr['object-type']); killme(); + switch($rr['verb']){ + case 'http://activitystrea.ms/schema/1.0/post': + switch ($rr['object-type']){ + case 'http://activitystrea.ms/schema/1.0/event': + $post_type = t('event'); + break; + default: + $post_type = t('status'); + } + break; + default: + if ($rr['resource-id']){ + $post_type = t('photo'); + $m=array(); preg_match("/\[url=([^]]*)\]/", $rr['body'], $m); + $rr['plink'] = $m[1]; + } else { + $post_type = t('status'); + } + } + $plink = '' . $post_type . ''; + + $aside['$like_items'][] = sprintf( t('%1$s likes %2$s\'s %3$s'), $author, $objauthor, $plink); -$userinfo = array( - 'icon' => (count($r) ? $r[0]['micro']: $a->get_baseurl()."/images/default-profile-mm.jpg"), - 'name' => $a->user['username'], - ); + } + + + // last 12 photos + $aside['$photos_title'] = t('Last photos'); + $aside['$photos_items'] = array(); + $r = q("SELECT `photo`.`id`, `photo`.`resource-id`, `photo`.`scale`, `photo`.`desc`, `user`.`nickname`, `user`.`username` FROM + (SELECT `resource-id`, MAX(`scale`) as maxscale FROM `photo` + WHERE `profile`=0 AND `contact-id`=0 AND `album` NOT IN ('Contact Photos', '%s', 'Profile Photos', '%s') + AND `allow_cid`='' AND `allow_gid`='' AND `deny_cid`='' AND `deny_gid`='' GROUP BY `resource-id`) AS `t1` + INNER JOIN `photo` ON `photo`.`resource-id`=`t1`.`resource-id` AND `photo`.`scale` = `t1`.`maxscale`, + `user` + WHERE `user`.`uid` = `photo`.`uid` + AND `user`.`blockwall`=0 + AND `user`.`hidewall`=0 + ORDER BY `photo`.`edited` DESC + LIMIT 0, 12", + dbesc(t('Contact Photos')), + dbesc(t('Profile Photos')) + ); + if(count($r)) { + $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); + foreach($r as $rr) { + $photo_page = $a->get_baseurl() . '/photos/' . $rr['nickname'] . '/image/' . $rr['resource-id']; + $photo_url = $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['scale'] .'.jpg'; + + $entry = replace_macros($tpl,array( + '$id' => $rr['id'], + '$profile-link' => $photo_page, + '$photo' => $photo_url, + '$alt-text' => $rr['username']." : ".$rr['desc'], + )); + + $aside['$photos_items'][] = $entry; + } + } + + $fostitJS = "javascript: (function() { + the_url = '".$a->get_baseurl($ssl_state)."/view/theme/diabook-blue/fpostit/fpostit.php?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' + encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text)); + a_funct = function() { + if (!window.open(the_url, 'fpostit', 'location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) location.href = the_url}; + if (/Firefox/.test(navigator.userAgent)) {setTimeout(a_funct, 0)} + else {a_funct()}})()" ; + + $aside['$fostitJS'] = $fostitJS; + + $url = $a->get_baseurl($ssl_state); + $aside['$url'] = $url; + + $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); + $a->page['right_aside'] = replace_macros($tpl, $aside); -$ps['usermenu'][status] = Array('profile/' . $a->user['nickname'], t('Home'), "", t('Your posts and conversations')); -$ps['usermenu'][profile] = Array('profile/' . $a->user['nickname']. '?tab=profile', t('Profile'), "", t('Your profile page')); -$ps['usermenu'][photos] = Array('photos/' . $a->user['nickname'], t('Photos'), "", t('Your photos')); -$ps['usermenu'][events] = Array('events/', t('Events'), "", t('Your events')); -$ps['usermenu'][notes] = Array('notes/', t('Personal notes'), "", t('Your personal photos')); -$ps['usermenu'][community] = Array('community/', t('Community'), "", ""); - -if($is_url = preg_match ("/\bnetwork\b/i", $_SERVER['REQUEST_URI'])) { -$tpl = get_markup_template('profile_side.tpl'); - -$a->page['aside'] .= replace_macros($tpl, array( - '$userinfo' => $userinfo, - '$ps' => $ps, - )); -} } -//js scripts -$a->page['htmlhead'] .= <<< EOT - EOT; + -- cgit v1.2.3 From 8451b22d42d913d5f03b3598ed5772580844ac55 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 24 Mar 2012 08:56:26 +0100 Subject: small fix in css --- view/theme/diabook-blue/communityhome.tpl | 2 +- view/theme/diabook-blue/fpostit/fpostit.php | 2 +- view/theme/diabook/communityhome.tpl | 2 +- view/theme/diabook/fpostit/fpostit.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/view/theme/diabook-blue/communityhome.tpl b/view/theme/diabook-blue/communityhome.tpl index 13e8271bd..2a704c9fa 100755 --- a/view/theme/diabook-blue/communityhome.tpl +++ b/view/theme/diabook-blue/communityhome.tpl @@ -7,7 +7,7 @@ {{ if $lastusers_title }}

    Connectable Services

    -
    +
    Facebook StatusNet LiveJournal diff --git a/view/theme/diabook-blue/fpostit/fpostit.php b/view/theme/diabook-blue/fpostit/fpostit.php index acf77a6c8..65c43a2b9 100644 --- a/view/theme/diabook-blue/fpostit/fpostit.php +++ b/view/theme/diabook-blue/fpostit/fpostit.php @@ -21,7 +21,7 @@ if (($_POST["friendika_acct_name"] != '') && ($_POST["friendika_password"] != '' } .wrap1 { padding: 2px 5px; - background-color: #729FCF; + background-color: #000; margin-bottom: 10px; } .wrap2 { diff --git a/view/theme/diabook/communityhome.tpl b/view/theme/diabook/communityhome.tpl index 34f8ab066..78b80ab3b 100755 --- a/view/theme/diabook/communityhome.tpl +++ b/view/theme/diabook/communityhome.tpl @@ -7,7 +7,7 @@ {{ if $lastusers_title }}

    Connectable Services

    -
    +
    Facebook StatusNet LiveJournal diff --git a/view/theme/diabook/fpostit/fpostit.php b/view/theme/diabook/fpostit/fpostit.php index acf77a6c8..65c43a2b9 100644 --- a/view/theme/diabook/fpostit/fpostit.php +++ b/view/theme/diabook/fpostit/fpostit.php @@ -21,7 +21,7 @@ if (($_POST["friendika_acct_name"] != '') && ($_POST["friendika_password"] != '' } .wrap1 { padding: 2px 5px; - background-color: #729FCF; + background-color: #000; margin-bottom: 10px; } .wrap2 { -- cgit v1.2.3 From db5ec588631fe2a50eecb193c8ffdd65283254a4 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 01:33:50 -0700 Subject: network filter is now a permission group --- boot.php | 2 +- mod/network.php | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/boot.php b/boot.php index f976ef636..d2619e887 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1289' ); +define ( 'FRIENDICA_VERSION', '2.3.1290' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1133 ); diff --git a/mod/network.php b/mod/network.php index 9ec8c23b5..a5958259c 100755 --- a/mod/network.php +++ b/mod/network.php @@ -250,6 +250,20 @@ function network_content(&$a, $update = 0) { if($cid) $def_acl = array('allow_cid' => '<' . intval($cid) . '>'); + if($nets) { + $r = q("select id from contact where uid = %d and network = '%s' and self = 0", + intval(local_user()), + dbesc($nets) + ); + + $str = ''; + if(count($r)) + foreach($r as $rr) + $str .= '<' . $rr['id'] . '>'; + if(strlen($str)) + $def_acl = array('allow_cid' => $str); + } + if(! $update) { if($group) { if(($t = group_public_members($group)) && (! get_pconfig(local_user(),'system','nowarn_insecure'))) { @@ -270,7 +284,7 @@ function network_content(&$a, $update = 0) { 'default_location' => $a->user['default-location'], 'nickname' => $a->user['nickname'], 'lockstate' => ((($group) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))) ? 'lock' : 'unlock'), - 'acl' => populate_acl((($group || $cid) ? $def_acl : $a->user), $celeb), + 'acl' => populate_acl((($group || $cid || $nets) ? $def_acl : $a->user), $celeb), 'bang' => (($group || $cid) ? '!' : ''), 'visitor' => 'block', 'profile_uid' => local_user() -- cgit v1.2.3 From 8c4fbc3b4d4c578485e7aeb5d7da4b2446002c3a Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 03:11:45 -0700 Subject: add the bang --- mod/network.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mod/network.php b/mod/network.php index a5958259c..5ca0a8c7d 100755 --- a/mod/network.php +++ b/mod/network.php @@ -283,9 +283,9 @@ function network_content(&$a, $update = 0) { 'allow_location' => $a->user['allow_location'], 'default_location' => $a->user['default-location'], 'nickname' => $a->user['nickname'], - 'lockstate' => ((($group) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))) ? 'lock' : 'unlock'), + 'lockstate' => ((($group) || ($cid) || ($nets) || (is_array($a->user) && ((strlen($a->user['allow_cid'])) || (strlen($a->user['allow_gid'])) || (strlen($a->user['deny_cid'])) || (strlen($a->user['deny_gid']))))) ? 'lock' : 'unlock'), 'acl' => populate_acl((($group || $cid || $nets) ? $def_acl : $a->user), $celeb), - 'bang' => (($group || $cid) ? '!' : ''), + 'bang' => (($group || $cid || $nets) ? '!' : ''), 'visitor' => 'block', 'profile_uid' => local_user() ); -- cgit v1.2.3 From 3aacc119a1d25f7ab4089482bbba7419c1357524 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 04:16:27 -0700 Subject: block filed items from deletion --- include/diaspora.php | 4 ++-- include/items.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 1b5af42cd..84d28a7ec 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -1737,7 +1737,7 @@ function diaspora_retraction($importer,$xml) { contact_remove($contact['id']); } elseif($type === 'Post') { - $r = q("select * from item where guid = '%s' and uid = %d limit 1", + $r = q("select * from item where guid = '%s' and uid = %d and not file like '%%[%%' limit 1", dbesc('guid'), intval($importer['uid']) ); @@ -1785,7 +1785,7 @@ function diaspora_signed_retraction($importer,$xml,$msg) { } if($type === 'StatusMessage') { - $r = q("select * from item where guid = '%s' and uid = %d limit 1", + $r = q("select * from item where guid = '%s' and uid = %d and not file like '%%[%%' limit 1", dbesc($guid), intval($importer['uid']) ); diff --git a/include/items.php b/include/items.php index b96f88566..49e1ba97a 100755 --- a/include/items.php +++ b/include/items.php @@ -1437,7 +1437,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) } if($deleted && is_array($contact)) { $r = q("SELECT `item`.*, `contact`.`self` FROM `item` left join `contact` on `item`.`contact-id` = `contact`.`id` - WHERE `uri` = '%s' AND `item`.`uid` = %d AND `contact-id` = %d LIMIT 1", + WHERE `uri` = '%s' AND `item`.`uid` = %d AND `contact-id` = %d AND NOT `item`.`file` LIKE '%%[%%' LIMIT 1", dbesc($uri), intval($importer['uid']), intval($contact['id']) @@ -2038,7 +2038,7 @@ function local_delivery($importer,$data) { if($deleted) { $r = q("SELECT `item`.*, `contact`.`self` FROM `item` left join contact on `item`.`contact-id` = `contact`.`id` - WHERE `uri` = '%s' AND `item`.`uid` = %d AND `contact-id` = %d LIMIT 1", + WHERE `uri` = '%s' AND `item`.`uid` = %d AND `contact-id` = %d AND NOT `item`.`file` LIKE '%%[%%' LIMIT 1", dbesc($uri), intval($importer['importer_uid']), intval($importer['id']) -- cgit v1.2.3 From 3ae43c24487450a749942ef4c3c19fa2a61461b6 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 15:53:53 -0700 Subject: prevent duplicate friend suggestions --- boot.php | 2 +- include/items.php | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/boot.php b/boot.php index d2619e887..ea88cd39b 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1290' ); +define ( 'FRIENDICA_VERSION', '2.3.1291' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1133 ); diff --git a/include/items.php b/include/items.php index 49e1ba97a..7b9b7315f 100755 --- a/include/items.php +++ b/include/items.php @@ -1898,6 +1898,14 @@ function local_delivery($importer,$data) { ); if(count($r)) { $fid = $r[0]['id']; + + // OK, we do. Do we already have an introduction for this person ? + $r = q("select id from intro where uid = %d and fid = %d limit 1", + intval($fsugg['uid']), + intval($fid) + ); + if(count($r)) + return 0; } if(! $fid) $r = q("INSERT INTO `fcontact` ( `name`,`url`,`photo`,`request` ) VALUES ( '%s', '%s', '%s', '%s' ) ", @@ -1918,6 +1926,7 @@ function local_delivery($importer,$data) { else return 0; + $hash = random_string(); $r = q("INSERT INTO `intro` ( `uid`, `fid`, `contact-id`, `note`, `hash`, `datetime`, `blocked` ) -- cgit v1.2.3 From d06ddeb1cc6c1bbc7c1f297a917714002839cf85 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 21:26:50 -0700 Subject: bug #346 - add oembed maxwidth to oembed request --- include/oembed.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/oembed.php b/include/oembed.php index cc71f9757..1f45d2814 100755 --- a/include/oembed.php +++ b/include/oembed.php @@ -38,7 +38,8 @@ function oembed_fetch_url($embedurl){ $entries = $xpath->query("//link[@type='application/json+oembed']"); foreach($entries as $e){ $href = $e->getAttributeNode("href")->nodeValue; - $txt = fetch_url($href); + $txt = fetch_url($href . '&maxwidth=425'); + break; } } } @@ -46,7 +47,7 @@ function oembed_fetch_url($embedurl){ if ($txt==false || $txt==""){ // try oohembed service - $ourl = "http://oohembed.com/oohembed/?url=".urlencode($embedurl); + $ourl = "http://oohembed.com/oohembed/?url=".urlencode($embedurl).'&maxwidth=425'; $txt = fetch_url($ourl); } -- cgit v1.2.3 From f1cb28774230cb69b9ce8ee5b32e4e2531aa586a Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 21:50:04 -0700 Subject: bug #329 - compress the plugin list on the friendica info page --- mod/friendica.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/mod/friendica.php b/mod/friendica.php index ab92e31ed..d5dad9448 100755 --- a/mod/friendica.php +++ b/mod/friendica.php @@ -51,15 +51,20 @@ function friendica_content(&$a) { $o .= '

    '; if(count($a->plugins)) { - $o .= '

    ' . t('Installed plugins/addons/apps') . '

    '; - $o .= '
      '; - foreach($a->plugins as $p) - if(strlen($p)) - $o .= '
    • ' . $p . '
    • '; - $o .= '
    '; + $o .= '

    ' . t('Installed plugins/addons/apps:') . '

    '; + $sorted = $a->plugins; + $s = ''; + sort($sorted); + foreach($sorted as $p) { + if(strlen($p)) { + if(strlen($s)) $s .= ', '; + $s .= $p; + } + } + $o .= '
    ' . $s . '
    '; } else - $o .= '

    ' . t('No installed plugins/addons/apps'); + $o .= '

    ' . t('No installed plugins/addons/apps') . '

    '; call_hooks('about_hook', $o); -- cgit v1.2.3 From 8fe77e5b868edab07fbffe35f0f31f2b0e7543d0 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 25 Mar 2012 01:01:59 -0400 Subject: implement filer/file-as Signed-off-by: Simon L'nu --- view/theme/dispy-dark/icons.png | Bin 29024 -> 30271 bytes view/theme/dispy-dark/icons.svg | 69 ++++++++++++++++++++++-------------- view/theme/dispy-dark/style.css | 21 ++++++++--- view/theme/dispy-dark/wall_item.tpl | 9 +++-- view/theme/dispy/icons.png | Bin 18998 -> 29977 bytes view/theme/dispy/icons.svg | 22 ++++++++++-- view/theme/dispy/style.css | 13 +++++++ view/theme/dispy/wall_item.tpl | 9 +++-- 8 files changed, 105 insertions(+), 38 deletions(-) diff --git a/view/theme/dispy-dark/icons.png b/view/theme/dispy-dark/icons.png index 648811373..203568135 100644 Binary files a/view/theme/dispy-dark/icons.png and b/view/theme/dispy-dark/icons.png differ diff --git a/view/theme/dispy-dark/icons.svg b/view/theme/dispy-dark/icons.svg index 10f8cc667..2c4b3abd3 100644 --- a/view/theme/dispy-dark/icons.svg +++ b/view/theme/dispy-dark/icons.svg @@ -51,9 +51,9 @@ borderopacity="1.0" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:zoom="1.3859292" - inkscape:cx="105.02551" - inkscape:cy="107.90767" + inkscape:zoom="1.9403009" + inkscape:cx="95.950174" + inkscape:cy="115.58345" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" @@ -63,7 +63,7 @@ inkscape:window-width="1065" inkscape:window-height="742" inkscape:window-x="40" - inkscape:window-y="61" + inkscape:window-y="50" inkscape:window-maximized="0" width="0px" height="0px" @@ -330,7 +330,7 @@ sodipodi:cy="33.612183" sodipodi:rx="7.3214288" sodipodi:ry="7.3214288" - d="m 492.49999,33.612183 a 7.3214288,7.3214288 0 1 1 -14.64286,0 7.3214288,7.3214288 0 1 1 14.64286,0 z" + d="m 492.49999,33.612183 c 0,4.043513 -3.27792,7.321428 -7.32143,7.321428 -4.04352,0 -7.32143,-3.277915 -7.32143,-7.321428 0,-4.043514 3.27791,-7.321429 7.32143,-7.321429 4.04351,0 7.32143,3.277915 7.32143,7.321429 z" transform="matrix(0.43114968,0,0,0.43114968,-201.51175,889.48158)" /> @@ -1567,7 +1567,7 @@ sodipodi:end="6.2831853" sodipodi:start="3.1415927" transform="matrix(0.4523809,0,0,0.775,29.234821,888.45473)" - d="m 51.275442,143.46553 a 5.5219707,5.2590199 0 0 1 11.043942,0 l -5.521971,0 z" + d="m 51.275442,143.46553 c 0,-2.90448 2.472271,-5.25902 5.521971,-5.25902 3.0497,0 5.521971,2.35454 5.521971,5.25902 l -5.521971,0 z" sodipodi:ry="5.2590199" sodipodi:rx="5.5219707" sodipodi:cy="143.46553" @@ -1579,7 +1579,7 @@ sodipodi:end="6.2831853" sodipodi:start="3.1415927" transform="matrix(1.2380952,0,0,1.675,6.476807,759.33575)" - d="m 51.275442,143.46553 a 5.5219707,5.2590199 0 0 1 11.043942,0 l -5.521971,0 z" + d="m 51.275442,143.46553 c 0,-2.90448 2.472271,-5.25902 5.521971,-5.25902 3.0497,0 5.521971,2.35454 5.521971,5.25902 l -5.521971,0 z" sodipodi:ry="5.2590199" sodipodi:rx="5.5219707" sodipodi:cy="143.46553" @@ -1595,7 +1595,7 @@ sodipodi:cy="143.46553" sodipodi:rx="5.5219707" sodipodi:ry="5.2590199" - d="m 51.275442,143.46553 a 5.5219707,5.2590199 0 0 1 11.043942,0 l -5.521971,0 z" + d="m 51.275442,143.46553 c 0,-2.90448 2.472271,-5.25902 5.521971,-5.25902 3.0497,0 5.521971,2.35454 5.521971,5.25902 l -5.521971,0 z" transform="matrix(0.4523809,0,0,0.775,51.234821,888.45473)" sodipodi:start="3.1415927" sodipodi:end="6.2831853" /> @@ -1655,7 +1655,7 @@ sodipodi:cy="194.45924" sodipodi:rx="2.0660436" sodipodi:ry="1.5964882" - d="m 7.3250635,194.45924 a 2.0660436,1.5964882 0 1 1 -4.1320873,0 2.0660436,1.5964882 0 1 1 4.1320873,0 z" + d="m 7.3250635,194.45924 c 0,0.88172 -0.9249993,1.59649 -2.0660436,1.59649 -1.1410444,0 -2.0660437,-0.71477 -2.0660437,-1.59649 0,-0.88171 0.9249993,-1.59648 2.0660437,-1.59648 1.1410443,0 2.0660436,0.71477 2.0660436,1.59648 z" transform="matrix(0.93050058,0,0,0.90640134,0.75846434,870.02825)" /> + + + + diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index 9883b2fd7..ba0270ac9 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -947,7 +947,7 @@ aside #viewcontacts { background-color: #3e3f3e; color: #eec; border: 1px #eec solid; - border-radius: 3px; + border-radius: 5px; padding: 3px 3px 6px 10px; } #jot-preview-content .wall-item-outside-wrapper { @@ -2033,6 +2033,16 @@ div[id$="wrapper"] br { opacity: 1.0 !important; filter:alpha(opacity=100) !important; } +.filesavetags { + margin: 20px 0; + opacity: 0.5; + filter:alpha(opacity=50); +} +.filesavetags:hover { + margin: 20px 0; + opacity: 1.0 !important; + filter:alpha(opacity=100) !important; +} .item-select { opacity: 0.1; filter:alpha(opacity=10); @@ -2484,6 +2494,9 @@ div[id$="wrapper"] br { .dislike { background-position: -190px 0; } +.file-as { + background-position: -230px -60px; +} .like { background-position: -211px 0; } @@ -2570,9 +2583,9 @@ div[id$="wrapper"] br { } .border, .border:hover { border: 1px solid #babdb6; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; } .attachtype { display: block; diff --git a/view/theme/dispy-dark/wall_item.tpl b/view/theme/dispy-dark/wall_item.tpl index c67a88635..c9ac20c89 100644 --- a/view/theme/dispy-dark/wall_item.tpl +++ b/view/theme/dispy-dark/wall_item.tpl @@ -4,9 +4,7 @@
    - - $item.name - + $item.name menu
      @@ -37,6 +35,11 @@
    {{ endif }} + + {{ if $item.filer }} + + {{ endif }} + {{ if $item.plink }} {{ endif }} diff --git a/view/theme/dispy/icons.png b/view/theme/dispy/icons.png index 2f0459bd3..f42330d65 100644 Binary files a/view/theme/dispy/icons.png and b/view/theme/dispy/icons.png differ diff --git a/view/theme/dispy/icons.svg b/view/theme/dispy/icons.svg index 998e2641f..7b82b94ea 100644 --- a/view/theme/dispy/icons.svg +++ b/view/theme/dispy/icons.svg @@ -52,7 +52,7 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="1.9403009" - inkscape:cx="73.744486" + inkscape:cx="64.725266" inkscape:cy="108.36719" inkscape:document-units="px" inkscape:current-layer="layer1" @@ -63,7 +63,7 @@ inkscape:window-width="1065" inkscape:window-height="742" inkscape:window-x="40" - inkscape:window-y="61" + inkscape:window-y="50" inkscape:window-maximized="0"> + + + + diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 6547cf986..9b480385d 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -2023,6 +2023,16 @@ div[id$="wrapper"] br { opacity: 1.0 !important; filter:alpha(opacity=100) !important; } +.filesavetags { + margin: 20px 0; + opacity: 0.5; + filter:alpha(opacity=50); +} +.filesavetags:hover { + margin: 20px 0; + opacity: 1.0 !important; + filter:alpha(opacity=100) !important; +} .item-select { opacity: 0.1; filter:alpha(opacity=10); @@ -2474,6 +2484,9 @@ div[id$="wrapper"] br { .dislike { background-position: -190px 0; } +.file-as { + background-position: -230px -60px; +} .like { background-position: -211px 0; } diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl index c67a88635..c9ac20c89 100644 --- a/view/theme/dispy/wall_item.tpl +++ b/view/theme/dispy/wall_item.tpl @@ -4,9 +4,7 @@
    - - $item.name - + $item.name menu
      @@ -37,6 +35,11 @@
    {{ endif }} + + {{ if $item.filer }} + + {{ endif }} + {{ if $item.plink }} {{ endif }} -- cgit v1.2.3 From 1d56224b08fe9781a050143f14c45fd518c5ca93 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 25 Mar 2012 01:12:28 -0400 Subject: increase version to 1.0 for dispys \o/ Signed-off-by: Simon L'nu --- view/theme/dispy-dark/theme.php | 3 ++- view/theme/dispy/theme.php | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/view/theme/dispy-dark/theme.php b/view/theme/dispy-dark/theme.php index 700136173..ad7780013 100644 --- a/view/theme/dispy-dark/theme.php +++ b/view/theme/dispy-dark/theme.php @@ -3,9 +3,10 @@ /* * Name: Dispy Dark * Description: Dispy Dark, Friendica theme - * Version: 0.9 + * Version: 1.0 * Author: Simon * Maintainer: Simon + * Screenshot: screenshot */ diff --git a/view/theme/dispy/theme.php b/view/theme/dispy/theme.php index 26e07b1f7..e3f8f5b45 100644 --- a/view/theme/dispy/theme.php +++ b/view/theme/dispy/theme.php @@ -3,7 +3,7 @@ /* * Name: Dispy * Description: Dispy, Friendica theme - * Version: 0.9 + * Version: 1.0 * Author: unknown * Maintainer: Simon */ -- cgit v1.2.3 From 6780b76b0c0c8f9f250fabe2ea35ee22139ba3d1 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 23:04:18 -0700 Subject: improved the inivitations and added a bit of sales pitch. --- include/contact_widgets.php | 4 +--- mod/invite.php | 20 ++++++++++++++++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/include/contact_widgets.php b/include/contact_widgets.php index 605a3eb78..135a9e4e8 100755 --- a/include/contact_widgets.php +++ b/include/contact_widgets.php @@ -15,8 +15,6 @@ function findpeople_widget() { $a = get_app(); - $inv = (($a->config['register_policy'] != REGISTER_CLOSED) ? t('Invite Friends') : ''); - if(get_config('system','invitation_only')) { $x = get_pconfig(local_user(),'system','invites_remaining'); if($x || is_site_admin()) { @@ -34,7 +32,7 @@ function findpeople_widget() { '$findthem' => t('Find'), '$suggest' => t('Friend Suggestions'), '$similar' => t('Similar Interests'), - '$inv' => $inv + '$inv' => t('Invite Friends') )); } diff --git a/mod/invite.php b/mod/invite.php index d4eb9c5ef..ff9f83e0d 100755 --- a/mod/invite.php +++ b/mod/invite.php @@ -56,7 +56,7 @@ function invite_post(&$a) { else $nmessage = $message; - $res = mail($recip, sprintf( t('Please join my network on %s'), $a->config['sitename']), + $res = mail($recip, sprintf( t('Please join my close friends on Friendica'), $a->config['sitename']), $nmessage, "From: " . $a->user['email'] . "\n" . 'Content-type: text/plain; charset=UTF-8' . "\n" @@ -94,15 +94,27 @@ function invite_content(&$a) { } } + $dirloc = get_config('system','directory_submit_url'); + if(strlen($dirloc)) { + if($a->config['register_policy'] == REGISTER_CLOSED) + $linktxt = sprintf( t('Visit %s for a list of public sites you can join. Friendica members on other sites can all connect with each other, as well as with members of many other social networks.'), dirname($dirloc) . '/siteinfo'); + elseif($a->config['register_policy'] != REGISTER_CLOSED) + $linktxt = sprintf( t('To accept this invitation, please visit and register at %s or any other public Friendica website. They all inter-connect to create a huge privacy-enhanced social web that is owned and controlled by its members. They can also connect with many traditional social networks. See %s for a list of alternate Friendica sites.'),$a->get_baseurl(),dirname($dirloc) . '/siteinfo'); + } + else { + $o = t('Our apologies. This system is not currently configured to connect with other public sites or invite members.'); + return $o; + } $o = replace_macros($tpl, array( '$invite' => t('Send invitations'), '$addr_text' => t('Enter email addresses, one per line:'), '$msg_text' => t('Your message:'), - '$default_message' => sprintf(t('Please join my social network on %s'), $a->config['sitename']) . "\r\n" . "\r\n" - . t('To accept this invitation, please visit:') . "\r\n" . "\r\n" . $a->get_baseurl() + '$default_message' => t('Please join my close friends on Friendica, and help us to build a better social web.') . "\r\n" . "\r\n" + . $linktxt . "\r\n" . "\r\n" . (($invonly) ? t('You will need to supply this invitation code: $invite_code') . "\r\n" . "\r\n" : '') .t('Once you have registered, please connect with me via my profile page at:') - . "\r\n" . "\r\n" . $a->get_baseurl() . '/profile/' . $a->user['nickname'] , + . "\r\n" . "\r\n" . $a->get_baseurl() . '/profile/' . $a->user['nickname'] + . "\r\n" . "\r\n" . t('For more information about the Friendica project and why we feel it is important, please visit http://friendica.com') . "\r\n" . "\r\n" , '$submit' => t('Submit') )); -- cgit v1.2.3 From 329a26d62ee65322d0227504b87c3c5ebb1ee480 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sun, 25 Mar 2012 08:47:17 +0200 Subject: move community_pages to right_aside, fixes in css --- view/theme/diabook-blue/communityhome.tpl | 8 ++++-- view/theme/diabook-blue/style-network.css | 14 +++++++---- view/theme/diabook-blue/style-profile.css | 15 +++++++---- view/theme/diabook-blue/style.css | 8 +++--- view/theme/diabook-blue/theme.php | 35 ++++++++++++++++++++++++++ view/theme/diabook/communityhome.tpl | 8 ++++-- view/theme/diabook/style-network.css | 13 +++++++--- view/theme/diabook/style-profile.css | 13 +++++++--- view/theme/diabook/style.css | 8 +++--- view/theme/diabook/theme.php | 42 ++++++++++++++++++++++++++++++- 10 files changed, 135 insertions(+), 29 deletions(-) diff --git a/view/theme/diabook-blue/communityhome.tpl b/view/theme/diabook-blue/communityhome.tpl index 2a704c9fa..5b807c8ad 100755 --- a/view/theme/diabook-blue/communityhome.tpl +++ b/view/theme/diabook-blue/communityhome.tpl @@ -1,5 +1,5 @@ {{ if $lastusers_title }} -

    Help or #NewHere ?

    +

    Help or @NewHere ?

    Friendica Support
    Let's talk
    NewHere @@ -46,9 +46,13 @@
    {{ endif }} +{{ if $lastusers_title }} +
    $page
    +{{ endif }} + {{ if $lastusers_title }}

    PostIt to Friendica

    -
    Post to Friendica from anywhere by bookmarking this Link.
    +
    Post to Friendica from anywhere by bookmarking the Link.
    {{ endif }} {{ if $like_title }} diff --git a/view/theme/diabook-blue/style-network.css b/view/theme/diabook-blue/style-network.css index 66cfe0c6c..85cf23da1 100644 --- a/view/theme/diabook-blue/style-network.css +++ b/view/theme/diabook-blue/style-network.css @@ -395,7 +395,7 @@ /* global */ body { font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; + font-size: 12.5px; background-color: #ffffff; color: #2d2d2d; margin: 50px auto auto; @@ -888,6 +888,8 @@ ul.menu-popup .empty { position: absolute; padding-top: 4px; padding-left: 5px; + word-wrap: break-word; + width: 130px; } #ps-username:hover{ text-decoration: none; @@ -945,7 +947,7 @@ aside { float: left; /* background: #F1F1F1; */ } - +aside #page-sidebar{display: none;} aside .vcard .fn { font-size: 18px; font-weight: bold; @@ -1187,7 +1189,8 @@ right_aside #likes { margin: 0px; padding: 0px; list-style: none; } right_aside .items-wrapper{ overflow: auto; width: 100%; } right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; } right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; } - +#page-sidebar-right_aside{margin-top: 30px;} +#page-sidebar-right_aside ul {margin-top: 0px;} /* wall item */ .tread-wrapper { border-bottom: 1px solid #D2D2D2; @@ -1216,6 +1219,7 @@ right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: .wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom { display: table-row; } + .wall-item-bottom { font-size: 13px; } @@ -1260,10 +1264,10 @@ right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: } .wall-item-container .wall-item-content { - font-size: 13px; + font-size: 12.5px; max-width: 420px; word-wrap: break-word; - line-height: 1.4; + line-height: 1.2; } .wall-item-container .wall-item-content img { diff --git a/view/theme/diabook-blue/style-profile.css b/view/theme/diabook-blue/style-profile.css index 5209777b2..3671d963e 100644 --- a/view/theme/diabook-blue/style-profile.css +++ b/view/theme/diabook-blue/style-profile.css @@ -395,7 +395,7 @@ /* global */ body { font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; + font-size: 12.5px; background-color: #ffffff; color: #2d2d2d; margin: 50px auto auto; @@ -888,6 +888,8 @@ ul.menu-popup .empty { position: absolute; padding-top: 4px; padding-left: 5px; + word-wrap: break-word; + width: 130px; } #ps-username:hover{ text-decoration: none; @@ -1117,7 +1119,7 @@ list-style-type: disc; section { display: table-cell; vertical-align: top; - width: auto; + width: 611px; padding: 0px 0px 0px 12px; } @@ -1177,6 +1179,7 @@ right_aside { /* background: #F1F1F1; */ } +right_aside a{color: #1872A2;} right_aside h3 {border-bottom: 1px solid #D2D2D2; padding-top: 5px; padding-bottom: 0px; padding-left: 5px; margin-bottom: 0px; margin-top:30px;} right_aside .directory-item { width: 50px; height: 50px; vertical-align: center; text-align: center; } @@ -1186,7 +1189,8 @@ right_aside #likes { margin: 0px; padding: 0px; list-style: none; } right_aside .items-wrapper{ overflow: auto; width: 100%; } right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; } right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; } - +#page-sidebar-right_aside{margin-top: 30px;} +#page-sidebar-right_aside ul {margin-top: 0px;} /* wall item */ .tread-wrapper { border-bottom: 1px solid #D2D2D2; @@ -1215,6 +1219,7 @@ right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: .wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom { display: table-row; } + .wall-item-bottom { font-size: 13px; } @@ -1259,10 +1264,10 @@ right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: } .wall-item-container .wall-item-content { - font-size: 13px; + font-size: 12.5px; max-width: 420px; word-wrap: break-word; - line-height: 1.4; + line-height: 1.2; } .wall-item-container .wall-item-content img { diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index d3d3d9eb7..a05a49e67 100644 --- a/view/theme/diabook-blue/style.css +++ b/view/theme/diabook-blue/style.css @@ -395,7 +395,7 @@ /* global */ body { font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; + font-size: 12.5px; background-color: #ffffff; color: #2d2d2d; margin: 50px auto auto; @@ -887,6 +887,8 @@ ul.menu-popup .empty { position: absolute; padding-top: 4px; padding-left: 5px; + word-wrap: break-word; + width: 130px; } #ps-username:hover{ text-decoration: none; @@ -1235,10 +1237,10 @@ body .pageheader{ } .wall-item-container .wall-item-content { - font-size: 13px; + font-size: 12.5px; max-width: 720px; word-wrap: break-word; - line-height: 1.4; + line-height: 1.2; } .wall-item-container .wall-item-content img { diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php index c2475e8bc..6149b12de 100755 --- a/view/theme/diabook-blue/theme.php +++ b/view/theme/diabook-blue/theme.php @@ -138,6 +138,41 @@ function diabook_community_info(){ else {a_funct()}})()" ; $aside['$fostitJS'] = $fostitJS; + + //Community Page + $page = '
    +
    +

    '.t("Community Pages").'

    +
    '; + if (sizeof($contacts) > 0) + + $aside['$page'] = $page; + //END Community Page + + $url = $a->get_baseurl($ssl_state); $aside['$url'] = $url; diff --git a/view/theme/diabook/communityhome.tpl b/view/theme/diabook/communityhome.tpl index 78b80ab3b..c1b395dbe 100755 --- a/view/theme/diabook/communityhome.tpl +++ b/view/theme/diabook/communityhome.tpl @@ -1,5 +1,5 @@ {{ if $lastusers_title }} -

    Help or #NewHere ?

    +

    Help or @NewHere ?

    Friendica Support
    Let's talk
    NewHere @@ -46,9 +46,13 @@
    {{ endif }} +{{ if $lastusers_title }} +
    $page
    +{{ endif }} + {{ if $lastusers_title }}

    PostIt to Friendica

    -
    Post to Friendica from anywhere by bookmarking this Link.
    +
    Post to Friendica from anywhere by bookmarking this Link.
    {{ endif }} {{ if $like_title }} diff --git a/view/theme/diabook/style-network.css b/view/theme/diabook/style-network.css index 23ab0d4bf..00856c8d2 100644 --- a/view/theme/diabook/style-network.css +++ b/view/theme/diabook/style-network.css @@ -395,7 +395,7 @@ /* global */ body { font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; + font-size: 12.5px; background-color: #ffffff; color: #2d2d2d; margin: 50px auto auto; @@ -877,6 +877,8 @@ ul.menu-popup .empty { padding-top: 4px; padding-left: 5px; color: #2D2D2D; + word-wrap: break-word; + width: 130px; } #ps-username:hover{ text-decoration: none; @@ -934,6 +936,7 @@ aside { float: left; /* background: #F1F1F1; */ } +aside #page-sidebar{display: none;} aside .vcard .fn { font-size: 18px; @@ -1164,7 +1167,8 @@ right_aside #likes { margin: 0px; padding: 0px; list-style: none; } right_aside .items-wrapper{ overflow: auto; width: 100%; } right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; } right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; } - +#page-sidebar-right_aside{margin-top: 30px;} +#page-sidebar-right_aside ul {margin-top: 0px;} /* wall item */ .tread-wrapper { border-bottom: 1px solid #D2D2D2; @@ -1189,6 +1193,7 @@ right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: .wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom { display: table-row; } + .wall-item-bottom { font-size: 13px; } @@ -1233,10 +1238,10 @@ right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: } .wall-item-container .wall-item-content { - font-size: 13px; + font-size: 12.5px; max-width: 420px; word-wrap: break-word; - line-height: 1.4; + line-height: 1.2; } .wall-item-container .wall-item-content img { diff --git a/view/theme/diabook/style-profile.css b/view/theme/diabook/style-profile.css index a721d62ab..da1a7dd6d 100644 --- a/view/theme/diabook/style-profile.css +++ b/view/theme/diabook/style-profile.css @@ -395,7 +395,7 @@ /* global */ body { font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; + font-size: 12.5px; background-color: #ffffff; color: #2d2d2d; margin: 50px auto auto; @@ -877,6 +877,8 @@ ul.menu-popup .empty { padding-top: 4px; padding-left: 5px; color: #2D2D2D; + word-wrap: break-word; + width: 130px; } #ps-username:hover{ text-decoration: none; @@ -1096,7 +1098,7 @@ aside #side-peoplefind-url { section { display: table-cell; vertical-align: top; - width: auto; + width: 610px; padding: 0px 0px 0px 12px; } @@ -1164,6 +1166,8 @@ right_aside #likes { margin: 0px; padding: 0px; list-style: none; } right_aside .items-wrapper{ overflow: auto; width: 100%; } right_aside #lastusers-wrapper { padding-left: 6px; padding-top: 3px; overflow: auto; width: 100%; } right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: auto; width: 100%; } +#page-sidebar-right_aside{margin-top: 30px;} +#page-sidebar-right_aside ul {margin-top: 0px;} /* wall item */ .tread-wrapper { border-bottom: 1px solid #D2D2D2; @@ -1188,6 +1192,7 @@ right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: .wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom { display: table-row; } + .wall-item-bottom { font-size: 13px; } @@ -1232,10 +1237,10 @@ right_aside #ra-photos-wrapper { padding-left: 5px; padding-top: 3px; overflow: } .wall-item-container .wall-item-content { - font-size: 13px; + font-size: 12.5px; max-width: 420px; word-wrap: break-word; - line-height: 1.4; + line-height: 1.2; } .wall-item-container .wall-item-content img { diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index ffab5b4c4..5154459d3 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -394,7 +394,7 @@ /* global */ body { font-family: 'Lato', "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; + font-size: 12.5px; background-color: #ffffff; color: #2d2d2d; margin: 50px auto auto; @@ -876,6 +876,8 @@ ul.menu-popup .empty { padding-top: 4px; padding-left: 5px; color: #2D2D2D; + word-wrap: break-word; + width: 130px; } #ps-username:hover{ text-decoration: none; @@ -1212,10 +1214,10 @@ body .pageheader{ } .wall-item-container .wall-item-content { - font-size: 13px; + font-size: 12.5px; max-width: 720px; word-wrap: break-word; - line-height: 1.4; + line-height: 1.2; } .wall-item-container .wall-item-content img { diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php index adf31746f..29cc64c18 100755 --- a/view/theme/diabook/theme.php +++ b/view/theme/diabook/theme.php @@ -18,6 +18,9 @@ $cssFile = null; /** * prints last community activity */ + + + function diabook_community_info(){ $a = get_app(); //right_aside at networkpages @@ -139,12 +142,49 @@ function diabook_community_info(){ $aside['$fostitJS'] = $fostitJS; + //Community Page + $page = '
    +
    +

    '.t("Community Pages").'

    +
    '; + if (sizeof($contacts) > 0) + + $aside['$page'] = $page; + //END Community Page + + $url = $a->get_baseurl($ssl_state); $aside['$url'] = $url; $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); $a->page['right_aside'] = replace_macros($tpl, $aside); + + + } @@ -167,7 +207,7 @@ if ($a->argv[0] === "network"){ $ps['usermenu']['events'] = Array('events/', t('Events'), "", t('Your events')); $ps['usermenu']['notes'] = Array('notes/', t('Personal notes'), "", t('Your personal photos')); $ps['usermenu']['community'] = Array('community/', t('Community'), "", ""); - $ps['usermenu']['pgroups'] = Array('http://dir.friendika.com/directory/forum', t('Public Groups'), "", ""); + $ps['usermenu']['pgroups'] = Array('http://dir.friendica.com/directory/forum', t('Public Groups'), "", ""); $tpl = get_markup_template('profile_side.tpl'); -- cgit v1.2.3 From 2c4312012995aa3411cf5e5dbd0eb934a0801797 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 25 Mar 2012 03:22:16 -0400 Subject: dispy-dark not experimental. start implementing fpostit Signed-off-by: Simon L'nu --- view/theme/dispy-dark/communityhome.tpl | 4 + view/theme/dispy-dark/experimental | 0 view/theme/dispy-dark/fpostit/README | 8 ++ view/theme/dispy-dark/fpostit/fpostit.js | 14 +++ view/theme/dispy-dark/fpostit/fpostit.php | 134 +++++++++++++++++++++++++ view/theme/dispy-dark/fpostit/friendica-32.png | Bin 0 -> 1593 bytes view/theme/dispy-dark/fpostit/friendika-32.png | Bin 0 -> 1593 bytes view/theme/dispy-dark/style.css | 56 ++++++++--- view/theme/dispy-dark/theme.php | 27 +++++ view/theme/dispy-dark/wallwall_item.tpl | 5 +- view/theme/dispy/communityhome.tpl | 4 + view/theme/dispy/fpostit/README | 8 ++ view/theme/dispy/fpostit/fpostit.js | 14 +++ view/theme/dispy/fpostit/fpostit.php | 134 +++++++++++++++++++++++++ view/theme/dispy/fpostit/friendica-32.png | Bin 0 -> 1593 bytes view/theme/dispy/fpostit/friendika-32.png | Bin 0 -> 1593 bytes view/theme/dispy/style.css | 27 ++++- view/theme/dispy/theme.php | 28 ++++++ view/theme/dispy/wallwall_item.tpl | 5 +- 19 files changed, 452 insertions(+), 16 deletions(-) create mode 100644 view/theme/dispy-dark/communityhome.tpl delete mode 100644 view/theme/dispy-dark/experimental create mode 100644 view/theme/dispy-dark/fpostit/README create mode 100755 view/theme/dispy-dark/fpostit/fpostit.js create mode 100644 view/theme/dispy-dark/fpostit/fpostit.php create mode 100644 view/theme/dispy-dark/fpostit/friendica-32.png create mode 100644 view/theme/dispy-dark/fpostit/friendika-32.png create mode 100644 view/theme/dispy/communityhome.tpl create mode 100644 view/theme/dispy/fpostit/README create mode 100755 view/theme/dispy/fpostit/fpostit.js create mode 100644 view/theme/dispy/fpostit/fpostit.php create mode 100644 view/theme/dispy/fpostit/friendica-32.png create mode 100644 view/theme/dispy/fpostit/friendika-32.png diff --git a/view/theme/dispy-dark/communityhome.tpl b/view/theme/dispy-dark/communityhome.tpl new file mode 100644 index 000000000..0659ebe20 --- /dev/null +++ b/view/theme/dispy-dark/communityhome.tpl @@ -0,0 +1,4 @@ +{{ if $lastusers_title }} +

    PostIt to Friendica

    +
    Post to Friendica from anywhere by bookmarking this Link.
    +{{ endif }} diff --git a/view/theme/dispy-dark/experimental b/view/theme/dispy-dark/experimental deleted file mode 100644 index e69de29bb..000000000 diff --git a/view/theme/dispy-dark/fpostit/README b/view/theme/dispy-dark/fpostit/README new file mode 100644 index 000000000..39b7c5761 --- /dev/null +++ b/view/theme/dispy-dark/fpostit/README @@ -0,0 +1,8 @@ +fpostit + +original author: Devlon Duthied + +see his blog posting: +http://blog.duthied.com/2011/09/13/node-agnostic-friendika-bookmarklet/ + +original published at github https://github.com/duthied/Friendika-Bookmarklet diff --git a/view/theme/dispy-dark/fpostit/fpostit.js b/view/theme/dispy-dark/fpostit/fpostit.js new file mode 100755 index 000000000..eb593d838 --- /dev/null +++ b/view/theme/dispy-dark/fpostit/fpostit.js @@ -0,0 +1,14 @@ +javascript: (function() { + the_url = 'view/theme/dispy-dark/fpostit/fpostit.php?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' + + encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ? + document.getSelection() : document.selection.createRange().text)); + a_funct = function() { + if (!window.open(the_url, 'fpostit','location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) { + location.href = the_url + }; + if (/Firefox/.test(navigator.userAgent)) { + setTimeout(a_funct, 0) + } else { + a_funct(); + } + })();" diff --git a/view/theme/dispy-dark/fpostit/fpostit.php b/view/theme/dispy-dark/fpostit/fpostit.php new file mode 100644 index 000000000..d00182946 --- /dev/null +++ b/view/theme/dispy-dark/fpostit/fpostit.php @@ -0,0 +1,134 @@ + + + + + + + + $content); + + // echo "posting to: $url
    "; + + $c = curl_init(); + curl_setopt($c, CURLOPT_URL, $url); + curl_setopt($c, CURLOPT_USERPWD, "$username:$password"); + curl_setopt($c, CURLOPT_POSTFIELDS, $data); + curl_setopt($c, CURLOPT_RETURNTRANSFER, true); + curl_setopt($c, CURLOPT_FOLLOWLOCATION, true); + $c_result = curl_exec($c); + if(curl_errno($c)){ + $error = curl_error($c); + showForm($error, $content); + } + + curl_close($c); + if (!isset($error)) { + echo ''; + } + + } else { + $error = "Missing account name and/or password. Please try again."; + showForm($error, $content); + } + +} else { + showForm(null, $content); +} + +function showForm($error, $content) { + $username_cookie = $_COOKIE['username']; + $password_cookie = $_COOKIE['password']; + + echo << +

    Friendica Bookmarklet

    +
    + +
    +
    + Enter the email address of the Friendica Account that you want to cross-post to: (example: user@friendica.org)

    + Account ID:
    + Password:
    +
    +   $error + +

    +
    +EOF; + +} +?> + + + diff --git a/view/theme/dispy-dark/fpostit/friendica-32.png b/view/theme/dispy-dark/fpostit/friendica-32.png new file mode 100644 index 000000000..61764bf20 Binary files /dev/null and b/view/theme/dispy-dark/fpostit/friendica-32.png differ diff --git a/view/theme/dispy-dark/fpostit/friendika-32.png b/view/theme/dispy-dark/fpostit/friendika-32.png new file mode 100644 index 000000000..61764bf20 Binary files /dev/null and b/view/theme/dispy-dark/fpostit/friendika-32.png differ diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index ba0270ac9..ba8cda3c6 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -60,6 +60,9 @@ option { padding: 3px; vertical-align: middle; } +li { + padding: 0 0 0 2px; +} /* remember to define focus styles! */ :focus { outline: 0; @@ -200,6 +203,10 @@ input[type=submit] { .action { margin: 5px 0; } +.tool { + margin: 5px 0; + list-style: none; +} /** @@ -688,12 +695,17 @@ aside #viewcontacts { padding:.2em .5em; } #netsearch-box { - margin: 30px 0px; + margin: 20px 0px 30px; + width: 150px; +} +#netsearch-box #search-submit { + margin: 5px 0px 0px 0px; } .ttright { margin: 0px 0px 0px 0px; } + /** * contacts block */ @@ -1819,10 +1831,12 @@ div[id$="wrapper"] br { * contacts selector */ .group-delete-wrapper { - margin: -31px 122px 0 0; + margin: -31px 50px 0 0; float: right; } - +/*.group-delete-icon { + margin: 0 0 0 10px; +}*/ #group-edit-submit-wrapper { margin: 0 0 10px 0; display: inline; @@ -1862,6 +1876,7 @@ div[id$="wrapper"] br { display: none; } + /** * profile */ @@ -2096,13 +2111,13 @@ div[id$="wrapper"] br { #group-sidebar { margin-bottom: 10px; } -.group-selected, .nets-selected { +.group-selected, .nets-selected, .fileas-selected { padding: 3px; color: #2e2f2e; background: #88a9d2; font-weight: bold; } -.group-selected:hover, .nets-selected:hover { +.group-selected:hover, .nets-selected:hover, .fileas-selected:hover { color: #2e2f2e; } .groupsideedit { @@ -2172,13 +2187,7 @@ div[id$="wrapper"] br { .nets-all { margin-left: 0px; } -#netsearch-box { - margin-top: 20px; - width: 150px; -} -#netsearch-box #search-submit { - margin: 5px 0px 0px 0px; -} + /** * ADMIN @@ -2794,6 +2803,29 @@ footer { .network-star.icon.starred { display: inline-block; } +#fileas-sidebar { + +} +.fileas-ul { + padding: 0; +} + + + +/* + * ADDONS THEMING + */ + +#sidebar-page-list { + +} +#sidebar-page-list ul { + padding: 0; + margin: 5px 0; +} +#sidebar-page-list li { + list-style: none; +} @media handheld { diff --git a/view/theme/dispy-dark/theme.php b/view/theme/dispy-dark/theme.php index ad7780013..cded68c48 100644 --- a/view/theme/dispy-dark/theme.php +++ b/view/theme/dispy-dark/theme.php @@ -127,3 +127,30 @@ $(document).ready(function() { EOT; +function dispy_community_info() { + $a = get_app(); + + $fostitJS = "javascript: (function() { + the_url = '".$a->get_baseurl($ssl_state)."/view/theme/dispy-dark/fpostit/fpostit.php?url=' + + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' + + encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ? + document.getSelection() : document.selection.createRange().text)); + a_funct = function() { + if (!window.open(the_url, 'fpostit', 'location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) { + location.href = the_url; + } + if (/Firefox/.test(navigator.userAgent)) { + setTimeout(a_funct, 0) + } else { + a_funct(); + } + })();" ; + + $aside['$fostitJS'] = $fostitJS; + $url = $a->get_baseurl($ssl_state); + $aside['$url'] = $url; + + $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); + $a->page['right_aside'] = replace_macros($tpl, $aside); +} + diff --git a/view/theme/dispy-dark/wallwall_item.tpl b/view/theme/dispy-dark/wallwall_item.tpl index f251d7352..b25d13409 100644 --- a/view/theme/dispy-dark/wallwall_item.tpl +++ b/view/theme/dispy-dark/wallwall_item.tpl @@ -38,11 +38,14 @@ {{ if $item.vote.share }} - {{ endif }}
    {{ endif }} + {{ if $item.filer }} +
    + {{ endif }} {{ if $item.plink }} {{ endif }} diff --git a/view/theme/dispy/communityhome.tpl b/view/theme/dispy/communityhome.tpl new file mode 100644 index 000000000..0659ebe20 --- /dev/null +++ b/view/theme/dispy/communityhome.tpl @@ -0,0 +1,4 @@ +{{ if $lastusers_title }} +

    PostIt to Friendica

    +
    Post to Friendica from anywhere by bookmarking this Link.
    +{{ endif }} diff --git a/view/theme/dispy/fpostit/README b/view/theme/dispy/fpostit/README new file mode 100644 index 000000000..39b7c5761 --- /dev/null +++ b/view/theme/dispy/fpostit/README @@ -0,0 +1,8 @@ +fpostit + +original author: Devlon Duthied + +see his blog posting: +http://blog.duthied.com/2011/09/13/node-agnostic-friendika-bookmarklet/ + +original published at github https://github.com/duthied/Friendika-Bookmarklet diff --git a/view/theme/dispy/fpostit/fpostit.js b/view/theme/dispy/fpostit/fpostit.js new file mode 100755 index 000000000..d18f5d345 --- /dev/null +++ b/view/theme/dispy/fpostit/fpostit.js @@ -0,0 +1,14 @@ +javascript: (function() { + the_url = 'view/theme/dispy/fpostit/fpostit.php?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' + + encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ? + document.getSelection() : document.selection.createRange().text)); + a_funct = function() { + if (!window.open(the_url, 'fpostit','location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) { + location.href = the_url + }; + if (/Firefox/.test(navigator.userAgent)) { + setTimeout(a_funct, 0) + } else { + a_funct(); + } + })();" diff --git a/view/theme/dispy/fpostit/fpostit.php b/view/theme/dispy/fpostit/fpostit.php new file mode 100644 index 000000000..d00182946 --- /dev/null +++ b/view/theme/dispy/fpostit/fpostit.php @@ -0,0 +1,134 @@ + + + + + + + + $content); + + // echo "posting to: $url
    "; + + $c = curl_init(); + curl_setopt($c, CURLOPT_URL, $url); + curl_setopt($c, CURLOPT_USERPWD, "$username:$password"); + curl_setopt($c, CURLOPT_POSTFIELDS, $data); + curl_setopt($c, CURLOPT_RETURNTRANSFER, true); + curl_setopt($c, CURLOPT_FOLLOWLOCATION, true); + $c_result = curl_exec($c); + if(curl_errno($c)){ + $error = curl_error($c); + showForm($error, $content); + } + + curl_close($c); + if (!isset($error)) { + echo ''; + } + + } else { + $error = "Missing account name and/or password. Please try again."; + showForm($error, $content); + } + +} else { + showForm(null, $content); +} + +function showForm($error, $content) { + $username_cookie = $_COOKIE['username']; + $password_cookie = $_COOKIE['password']; + + echo << +

    Friendica Bookmarklet

    +
    + +
    +
    + Enter the email address of the Friendica Account that you want to cross-post to: (example: user@friendica.org)

    + Account ID:
    + Password:
    +
    +   $error + +

    +
    +EOF; + +} +?> + + + diff --git a/view/theme/dispy/fpostit/friendica-32.png b/view/theme/dispy/fpostit/friendica-32.png new file mode 100644 index 000000000..61764bf20 Binary files /dev/null and b/view/theme/dispy/fpostit/friendica-32.png differ diff --git a/view/theme/dispy/fpostit/friendika-32.png b/view/theme/dispy/fpostit/friendika-32.png new file mode 100644 index 000000000..61764bf20 Binary files /dev/null and b/view/theme/dispy/fpostit/friendika-32.png differ diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 9b480385d..935ca507e 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -2086,13 +2086,13 @@ div[id$="wrapper"] br { #group-sidebar { margin-bottom: 10px; } -.group-selected, .nets-selected { +.group-selected, .nets-selected, .fileas-selected { padding: 3px; color: #111; background: #f8f8f8; font-weight: bold; } -.group-selected:hover, .nets-selected:hover { +.group-selected:hover, .nets-selected:hover, .fileas-selected:hover { color: #111; } .groupsideedit { @@ -2784,6 +2784,29 @@ footer { .network-star.icon.starred { display: inline-block; } +#fileas-sidebar { + +} +.fileas-ul { + padding: 0; +} + + + +/* + * ADDONS THEMING + */ + +#sidebar-page-list { + +} +#sidebar-page-list ul { + padding: 0; + margin: 5px 0; +} +#sidebar-page-list li { + list-style: none; +} @media handheld { diff --git a/view/theme/dispy/theme.php b/view/theme/dispy/theme.php index e3f8f5b45..e898346ef 100644 --- a/view/theme/dispy/theme.php +++ b/view/theme/dispy/theme.php @@ -6,6 +6,7 @@ * Version: 1.0 * Author: unknown * Maintainer: Simon + * Screenshot: Screenshot */ @@ -126,3 +127,30 @@ $(document).ready(function() { EOT; +function dispy_community_info() { + $a = get_app(); + + $fostitJS = "javascript: (function() { + the_url = '".$a->get_baseurl($ssl_state)."/view/theme/dispy-dark/fpostit/fpostit.php?url=' + + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' + + encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ? + document.getSelection() : document.selection.createRange().text)); + a_funct = function() { + if (!window.open(the_url, 'fpostit', 'location=yes,links=no,scrollbars=no,toolbar=no,width=600,height=300')) { + location.href = the_url; + } + if (/Firefox/.test(navigator.userAgent)) { + setTimeout(a_funct, 0) + } else { + a_funct(); + } + })();" ; + + $aside['$fostitJS'] = $fostitJS; + $url = $a->get_baseurl($ssl_state); + $aside['$url'] = $url; + + $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); + $a->page['right_aside'] = replace_macros($tpl, $aside); +} + diff --git a/view/theme/dispy/wallwall_item.tpl b/view/theme/dispy/wallwall_item.tpl index f251d7352..b25d13409 100644 --- a/view/theme/dispy/wallwall_item.tpl +++ b/view/theme/dispy/wallwall_item.tpl @@ -38,11 +38,14 @@ {{ if $item.vote.share }} - {{ endif }}
    {{ endif }} + {{ if $item.filer }} +
    + {{ endif }} {{ if $item.plink }} {{ endif }} -- cgit v1.2.3 From 5bb73034088a3f69009140f6a43e0ea1d46f6a5a Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 25 Mar 2012 04:37:09 -0700 Subject: NOTIFY_SYSTEM --- boot.php | 3 +++ include/enotify.php | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/boot.php b/boot.php index ea88cd39b..19661805c 100755 --- a/boot.php +++ b/boot.php @@ -135,6 +135,9 @@ define ( 'NOTIFY_PROFILE', 0x0040 ); define ( 'NOTIFY_TAGSELF', 0x0080 ); define ( 'NOTIFY_TAGSHARE', 0x0100 ); +define ( 'NOTIFY_SYSTEM', 0x8000 ); + + /** * various namespaces we may need to parse */ diff --git a/include/enotify.php b/include/enotify.php index a505f1f04..e4617ab49 100755 --- a/include/enotify.php +++ b/include/enotify.php @@ -151,6 +151,11 @@ function notification($params) { if($params['type'] == NOTIFY_CONFIRM) { + } + + if($params['type'] == NOTIFY_SYSTEM) { + + } // from here on everything is in the recipients language @@ -223,7 +228,7 @@ function notification($params) { // send email notification if notification preferences permit require_once('bbcode.php'); - if(intval($params['notify_flags']) & intval($params['type'])) { + if((intval($params['notify_flags']) & intval($params['type'])) || $params['type'] == NOTIFY_SYSTEM) { logger('notification: sending notification email'); -- cgit v1.2.3 From 873a55e9186cdf3d92b2793cd366debf237c8cda Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 25 Mar 2012 05:06:11 -0700 Subject: enotify plugin hook --- include/enotify.php | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/include/enotify.php b/include/enotify.php index e4617ab49..1918f26df 100755 --- a/include/enotify.php +++ b/include/enotify.php @@ -154,10 +154,32 @@ function notification($params) { } if($params['type'] == NOTIFY_SYSTEM) { - - + } + $h = array( + 'params' => $params, + 'subject' => $subject, + 'preamble' => $preamble, + 'epreamble' => $epreamble, + 'body' => $body, + 'sitelink' => $sitelink, + 'tsitelink' => $tsitelink, + 'hsitelink' => $hsitelink, + 'itemlink' => $itemlink + ); + + call_hooks('enotify',$h); + + $subject = $h['subject']; + $preamble = $h['preamble']; + $epreamble = $h['epreamble']; + $body = $h['body']; + $sitelink = $h['sitelink']; + $tsitelink = $h['tsitelink']; + $hsitelink = $h['hsitelink']; + $itemlink = $h['itemlink']; + // from here on everything is in the recipients language push_lang($params['language']); -- cgit v1.2.3 From baeb7353153924489d8d79a36d9b21c28c5f2ac4 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sun, 25 Mar 2012 19:43:42 +0200 Subject: small fixes --- view/theme/diabook-blue/theme.php | 8 ++++---- view/theme/diabook/theme.php | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php index 6149b12de..2c878e6f0 100755 --- a/view/theme/diabook-blue/theme.php +++ b/view/theme/diabook-blue/theme.php @@ -33,7 +33,7 @@ function diabook_community_info(){ FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", 0, - 12 + 9 ); $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); if(count($r)) { @@ -61,7 +61,7 @@ function diabook_community_info(){ WHERE `T1`.`liker-link` LIKE '%s%%' OR `item`.`author-link` LIKE '%s%%' GROUP BY `uri` ORDER BY `T1`.`created` DESC - LIMIT 0,10", + LIMIT 0,5", $a->get_baseurl(),$a->get_baseurl() ); @@ -109,7 +109,7 @@ function diabook_community_info(){ AND `user`.`blockwall`=0 AND `user`.`hidewall`=0 ORDER BY `photo`.`edited` DESC - LIMIT 0, 12", + LIMIT 0, 9", dbesc(t('Contact Photos')), dbesc(t('Profile Photos')) ); @@ -184,7 +184,7 @@ function diabook_community_info(){ //profile_side at networkpages -if ($a->argv[0] === "network"){ +if ($a->argv[0] === "network" && local_user()){ // USER MENU if(local_user()) { diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php index 29cc64c18..5b87e3142 100755 --- a/view/theme/diabook/theme.php +++ b/view/theme/diabook/theme.php @@ -36,7 +36,7 @@ function diabook_community_info(){ FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", 0, - 12 + 9 ); $tpl = file_get_contents( dirname(__file__).'/directory_item.tpl'); if(count($r)) { @@ -64,7 +64,7 @@ function diabook_community_info(){ WHERE `T1`.`liker-link` LIKE '%s%%' OR `item`.`author-link` LIKE '%s%%' GROUP BY `uri` ORDER BY `T1`.`created` DESC - LIMIT 0,10", + LIMIT 0,5", $a->get_baseurl(),$a->get_baseurl() ); @@ -112,7 +112,7 @@ function diabook_community_info(){ AND `user`.`blockwall`=0 AND `user`.`hidewall`=0 ORDER BY `photo`.`edited` DESC - LIMIT 0, 12", + LIMIT 0, 9", dbesc(t('Contact Photos')), dbesc(t('Profile Photos')) ); @@ -189,7 +189,7 @@ function diabook_community_info(){ //profile_side at networkpages -if ($a->argv[0] === "network"){ +if ($a->argv[0] === "network" && local_user()){ // USER MENU if(local_user()) { @@ -251,6 +251,14 @@ $a->page['htmlhead'] .= <<< EOT $(function() { $('a.lightbox').fancybox(); // Select all links with lightbox class }); + + $(document).ready(function () +$('iframe').each(function() +var url = $(this).attr("src"); +$(this).attr("src",url+"?wmode=transparent"); +); +); + EOT; -- cgit v1.2.3 From ca1e2254c9bbad75d4fa479a6ad7b5f38386a7ef Mon Sep 17 00:00:00 2001 From: Michael Johnston Date: Sun, 25 Mar 2012 16:00:11 -0400 Subject: typo datarry -> datarray --- mod/item.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/item.php b/mod/item.php index fc1c5fd0f..5baae2bde 100755 --- a/mod/item.php +++ b/mod/item.php @@ -624,7 +624,7 @@ function item_post(&$a) { dbesc($datarray['attach']), intval($datarray['bookmark']), intval($datarray['origin']), - intval($datarry['moderated']) + intval($datarray['moderated']) ); $r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' LIMIT 1", -- cgit v1.2.3 -- cgit v1.2.3 From aa33815d3c73435f15b1e30721ddb0af1faf8f5e Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 25 Mar 2012 17:06:38 -0400 Subject: urgent fix to dispy-dark theme.php Signed-off-by: Simon L'nu --- view/theme/dispy-dark/theme.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/dispy-dark/theme.php b/view/theme/dispy-dark/theme.php index cded68c48..9b6ea76bf 100644 --- a/view/theme/dispy-dark/theme.php +++ b/view/theme/dispy-dark/theme.php @@ -127,7 +127,7 @@ $(document).ready(function() { EOT; -function dispy_community_info() { +function dispydark_community_info() { $a = get_app(); $fostitJS = "javascript: (function() { -- cgit v1.2.3 -- cgit v1.2.3 From 3d62cb97822e0bd9e5be0c404664667cb7cb8d98 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 25 Mar 2012 17:13:24 -0400 Subject: minor fix to dispy theme.php Signed-off-by: Simon L'nu --- view/theme/dispy/theme.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/theme/dispy/theme.php b/view/theme/dispy/theme.php index e898346ef..3fa9a3353 100644 --- a/view/theme/dispy/theme.php +++ b/view/theme/dispy/theme.php @@ -131,7 +131,7 @@ function dispy_community_info() { $a = get_app(); $fostitJS = "javascript: (function() { - the_url = '".$a->get_baseurl($ssl_state)."/view/theme/dispy-dark/fpostit/fpostit.php?url=' + + the_url = '".$a->get_baseurl($ssl_state)."/view/theme/dispy/fpostit/fpostit.php?url=' + encodeURIComponent(window.location.href) + '&title=' + encodeURIComponent(document.title) + '&text=' + encodeURIComponent(''+(window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : document.selection.createRange().text)); -- cgit v1.2.3 From 7ef1ed2d7045a381c032d2142413b3a14af0d8e3 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 25 Mar 2012 17:55:43 -0700 Subject: theme screenshots --- boot.php | 2 +- images/blank.png | Bin 0 -> 1366 bytes include/plugin.php | 10 ++++++++++ mod/admin.php | 8 +++++++- view/admin_plugins_details.tpl | 4 ++++ view/theme/comix-plain/screenshot.jpg | Bin 0 -> 323812 bytes 6 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 images/blank.png create mode 100644 view/theme/comix-plain/screenshot.jpg diff --git a/boot.php b/boot.php index 19661805c..b2f91f3f7 100755 --- a/boot.php +++ b/boot.php @@ -9,7 +9,7 @@ require_once('include/nav.php'); require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); -define ( 'FRIENDICA_VERSION', '2.3.1291' ); +define ( 'FRIENDICA_VERSION', '2.3.1292' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1133 ); diff --git a/images/blank.png b/images/blank.png new file mode 100644 index 000000000..67d391966 Binary files /dev/null and b/images/blank.png differ diff --git a/include/plugin.php b/include/plugin.php index 8280b1022..df33fd3f2 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -276,3 +276,13 @@ function get_theme_info($theme){ return $info; }} + +function get_theme_screenshot($theme) { + $a = get_app(); + $exts = array('.png','.jpg'); + foreach($exts as $ext) { + if(file_exists('view/theme/' . $theme . '/screenshot' . $ext)) + return($a->get_baseurl() . '/view/theme/' . $theme . '/screenshot' . $ext); + } + return($a->get_baseurl() . '/images/blank.png'); +} diff --git a/mod/admin.php b/mod/admin.php index a64b26903..53b5ee354 100755 --- a/mod/admin.php +++ b/mod/admin.php @@ -583,6 +583,7 @@ function admin_page_plugins(&$a){ '$admin_form' => $admin_form, '$function' => 'plugins', + '$screenshot' => '', '$readme' => $readme )); } @@ -738,7 +739,11 @@ function admin_page_themes(&$a){ } $admin_form=""; - + + $screenshot = array( get_theme_screenshot($theme), t('Screenshot')); + if(! stristr($screenshot[0],$theme)) + $screenshot = null; + $t = get_markup_template("admin_plugins_details.tpl"); return replace_macros($t, array( '$title' => t('Administration'), @@ -755,6 +760,7 @@ function admin_page_themes(&$a){ '$admin_form' => $admin_form, '$str_author' => t('Author: '), '$str_maintainer' => t('Maintainer: '), + '$screenshot' => $screenshot, '$readme' => $readme )); } diff --git a/view/admin_plugins_details.tpl b/view/admin_plugins_details.tpl index ead356f5b..cbaef2d66 100755 --- a/view/admin_plugins_details.tpl +++ b/view/admin_plugins_details.tpl @@ -16,6 +16,10 @@ {{ endfor }}

    + {{ if $screenshot }} + $screenshot.1 + {{ endif }} + {{ if $admin_form }}

    $settings

    diff --git a/view/theme/comix-plain/screenshot.jpg b/view/theme/comix-plain/screenshot.jpg new file mode 100644 index 000000000..80e66e312 Binary files /dev/null and b/view/theme/comix-plain/screenshot.jpg differ -- cgit v1.2.3 From c88674aaf23ede573f19a2b363dfccf9627a5dcb Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 25 Mar 2012 19:05:14 -0700 Subject: theme preview for end users --- js/main.js | 7 +++++++ mod/pretheme.php | 6 ++++++ view/field_themeselect.tpl | 9 +++++++++ view/settings.tpl | 2 +- 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 mod/pretheme.php create mode 100755 view/field_themeselect.tpl diff --git a/js/main.js b/js/main.js index 2b4b13791..0b5fb5cdc 100755 --- a/js/main.js +++ b/js/main.js @@ -588,3 +588,10 @@ Array.prototype.remove = function(item) { return this.push.apply(this, rest); }; +function previewTheme(elm) { + theme = $(elm).val(); + $.getJSON('pretheme?f=&theme=' + theme,function(data) { + $('#theme-preview').html('' + theme + ''); + }); + +} \ No newline at end of file diff --git a/mod/pretheme.php b/mod/pretheme.php new file mode 100644 index 000000000..5a71bbe53 --- /dev/null +++ b/mod/pretheme.php @@ -0,0 +1,6 @@ + get_theme_screenshot($_REQUEST['theme']))); + killme(); +} diff --git a/view/field_themeselect.tpl b/view/field_themeselect.tpl new file mode 100755 index 000000000..f9f99492c --- /dev/null +++ b/view/field_themeselect.tpl @@ -0,0 +1,9 @@ + +
    + + + $field.3 +
    +
    diff --git a/view/settings.tpl b/view/settings.tpl index 2b739c968..75225a0f1 100755 --- a/view/settings.tpl +++ b/view/settings.tpl @@ -28,7 +28,7 @@ $nickname_block {{inc field_custom.tpl with $field=$timezone }}{{endinc}} {{inc field_input.tpl with $field=$defloc }}{{endinc}} {{inc field_checkbox.tpl with $field=$allowloc }}{{endinc}} -{{inc field_select.tpl with $field=$theme }}{{endinc}} +{{inc field_themeselect.tpl with $field=$theme }}{{endinc}} {{inc field_input.tpl with $field=$ajaxint }}{{endinc}} {{inc field_input.tpl with $field=$itemspage_network }}{{endinc}} {{inc field_checkbox.tpl with $field=$nosmile}}{{endinc}} -- cgit v1.2.3 From 3d11c22b01e1581b4606312dcc38dfd7b7906502 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 25 Mar 2012 22:45:44 -0400 Subject: add in the search box Signed-off-by: Simon L'nu --- view/theme/dispy-dark/nav.tpl | 16 +++++++++++----- view/theme/dispy-dark/style.css | 11 ++++++++++- view/theme/dispy-dark/theme.php | 2 +- view/theme/dispy/nav.tpl | 16 +++++++++++----- view/theme/dispy/style.css | 9 +++++++++ view/theme/dispy/theme.php | 2 +- 6 files changed, 43 insertions(+), 13 deletions(-) diff --git a/view/theme/dispy-dark/nav.tpl b/view/theme/dispy-dark/nav.tpl index 11469dc66..589d68352 100644 --- a/view/theme/dispy-dark/nav.tpl +++ b/view/theme/dispy-dark/nav.tpl @@ -5,7 +5,7 @@ -
     
    - +
    @@ -162,10 +163,10 @@ - - + + <\/tr>/g, ''); return html; } diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js old mode 100755 new mode 100644 index fd9700f22..cc891c171 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js @@ -1,253 +1,345 @@ -tinyMCEPopup.requireLangPack(); - -var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false; - -var colors = [ - "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033", - "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099", - "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff", - "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033", - "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399", - "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff", - "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333", - "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399", - "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff", - "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633", - "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699", - "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff", - "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633", - "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999", - "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff", - "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933", - "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999", - "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff", - "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33", - "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99", - "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff", - "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33", - "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99", - "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff", - "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33", - "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99", - "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff" -]; - -var named = { - '#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige', - '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown', - '#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue', - '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod', - '#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen', - '#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue', - '#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue', - '#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen', - '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey', - '#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory', - '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue', - '#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen', - '#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey', - '#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon', - '#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue', - '#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin', - '#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid', - '#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff', - '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue', - '#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver', - '#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen', - '#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet', - '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen' -}; - -function init() { - var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color')); - - tinyMCEPopup.resizeToInnerSize(); - - generatePicker(); - - if (inputColor) { - changeFinalColor(inputColor); - - col = convertHexToRGB(inputColor); - - if (col) - updateLight(col.r, col.g, col.b); - } -} - -function insertAction() { - var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func'); - - tinyMCEPopup.restoreSelection(); - - if (f) - f(color); - - tinyMCEPopup.close(); -} - -function showColor(color, name) { - if (name) - document.getElementById("colorname").innerHTML = name; - - document.getElementById("preview").style.backgroundColor = color; - document.getElementById("color").value = color.toLowerCase(); -} - -function convertRGBToHex(col) { - var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi"); - - if (!col) - return col; - - var rgb = col.replace(re, "$1,$2,$3").split(','); - if (rgb.length == 3) { - r = parseInt(rgb[0]).toString(16); - g = parseInt(rgb[1]).toString(16); - b = parseInt(rgb[2]).toString(16); - - r = r.length == 1 ? '0' + r : r; - g = g.length == 1 ? '0' + g : g; - b = b.length == 1 ? '0' + b : b; - - return "#" + r + g + b; - } - - return col; -} - -function convertHexToRGB(col) { - if (col.indexOf('#') != -1) { - col = col.replace(new RegExp('[^0-9A-F]', 'gi'), ''); - - r = parseInt(col.substring(0, 2), 16); - g = parseInt(col.substring(2, 4), 16); - b = parseInt(col.substring(4, 6), 16); - - return {r : r, g : g, b : b}; - } - - return null; -} - -function generatePicker() { - var el = document.getElementById('light'), h = '', i; - - for (i = 0; i < detail; i++){ - h += '
    '; - } - - el.innerHTML = h; -} - -function generateWebColors() { - var el = document.getElementById('webcolors'), h = '', i; - - if (el.className == 'generated') - return; - - h += '
     
    - +
    diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/blank.htm b/library/tinymce/jscripts/tiny_mce/plugins/template/blank.htm old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/css/template.css b/library/tinymce/jscripts/tiny_mce/plugins/template/css/template.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/js/template.js b/library/tinymce/jscripts/tiny_mce/plugins/template/js/template.js old mode 100755 new mode 100644 index 24045d731..bc3045d24 --- a/library/tinymce/jscripts/tiny_mce/plugins/template/js/template.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/template/js/template.js @@ -42,7 +42,7 @@ var TemplateDialog = { if (e) { e.style.height = Math.abs(h) + 'px'; - e.style.width = Math.abs(w - 5) + 'px'; + e.style.width = Math.abs(w - 5) + 'px'; } }, diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js old mode 100755 new mode 100644 index 2471c3fa0..83e599d68 --- a/library/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js @@ -1,15 +1 @@ -tinyMCE.addI18n('en.template_dlg',{ -title:"Templates", -label:"Template", -desc_label:"Description", -desc:"Insert predefined template content", -select:"Select a template", -preview:"Preview", -warning:"Warning: Updating a template with a different one may cause data loss.", -mdate_format:"%Y-%m-%d %H:%M:%S", -cdate_format:"%Y-%m-%d %H:%M:%S", -months_long:"January,February,March,April,May,June,July,August,September,October,November,December", -months_short:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", -day_long:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday", -day_short:"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun" -}); \ No newline at end of file +tinyMCE.addI18n('en.template_dlg',{title:"Templates",label:"Template","desc_label":"Description",desc:"Insert Predefined Template Content",select:"Select a Template",preview:"Preview",warning:"Warning: Updating a template with a different one may cause data loss.","mdate_format":"%Y-%m-%d %H:%M:%S","cdate_format":"%Y-%m-%d %H:%M:%S","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun"}); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/template/template.htm b/library/tinymce/jscripts/tiny_mce/plugins/template/template.htm old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css new file mode 100644 index 000000000..17b9aeff1 --- /dev/null +++ b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css @@ -0,0 +1,19 @@ +p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, blockquote, address, pre {display: block; padding-top: 10px; border: 1px dashed #BBB; background: transparent no-repeat} +p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, address, pre {margin-left: 3px} +section, article, address, hgroup, aside {margin: 1em 0 0 3px} + +p {background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)} +h1 {background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)} +h2 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)} +h3 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)} +h4 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)} +h5 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)} +h6 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)} +div {background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)} +section {background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)} +article {background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)} +blockquote {background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)} +address {background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)} +pre {background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)} +hgroup {background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)} +aside {background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)} diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js new file mode 100644 index 000000000..62cc2e4ce --- /dev/null +++ b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js @@ -0,0 +1 @@ +(function(){tinymce.create("tinymce.plugins.VisualBlocks",{init:function(a,b){var c;if(!window.NodeList){return}a.addCommand("mceVisualBlocks",function(){var e=a.dom,d;if(!c){c=e.uniqueId();d=e.create("link",{id:c,rel:"stylesheet",href:b+"/css/visualblocks.css"});a.getDoc().getElementsByTagName("head")[0].appendChild(d)}else{d=e.get(c);d.disabled=!d.disabled}a.controlManager.setActive("visualblocks",!d.disabled)});a.addButton("visualblocks",{title:"visualblocks.desc",cmd:"mceVisualBlocks"});a.onInit.add(function(){if(a.settings.visualblocks_default_state){a.execCommand("mceVisualBlocks")}})},getInfo:function(){return{longname:"Visual blocks",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualblocks",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("visualblocks",tinymce.plugins.VisualBlocks)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js new file mode 100644 index 000000000..e74c0bdc0 --- /dev/null +++ b/library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js @@ -0,0 +1,63 @@ +/** + * editor_plugin_src.js + * + * Copyright 2012, Moxiecode Systems AB + * Released under LGPL License. + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function() { + tinymce.create('tinymce.plugins.VisualBlocks', { + init : function(ed, url) { + var cssId; + + // We don't support older browsers like IE6/7 and they don't provide prototypes for DOM objects + if (!window.NodeList) { + return; + } + + ed.addCommand('mceVisualBlocks', function() { + var dom = ed.dom, linkElm; + + if (!cssId) { + cssId = dom.uniqueId(); + linkElm = dom.create('link', { + id: cssId, + rel : 'stylesheet', + href : url + '/css/visualblocks.css' + }); + + ed.getDoc().getElementsByTagName('head')[0].appendChild(linkElm); + } else { + linkElm = dom.get(cssId); + linkElm.disabled = !linkElm.disabled; + } + + ed.controlManager.setActive('visualblocks', !linkElm.disabled); + }); + + ed.addButton('visualblocks', {title : 'visualblocks.desc', cmd : 'mceVisualBlocks'}); + + ed.onInit.add(function() { + if (ed.settings.visualblocks_default_state) { + ed.execCommand('mceVisualBlocks'); + } + }); + }, + + getInfo : function() { + return { + longname : 'Visual blocks', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualblocks', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + } + }); + + // Register plugin + tinymce.PluginManager.add('visualblocks', tinymce.plugins.VisualBlocks); +})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js old mode 100755 new mode 100644 index 53d31c44f..1a148e8b4 --- a/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create("tinymce.plugins.VisualChars",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceVisualChars",c._toggleVisualChars,c);a.addButton("visualchars",{title:"visualchars.desc",cmd:"mceVisualChars"});a.onBeforeGetContent.add(function(d,e){if(c.state){c.state=true;c._toggleVisualChars()}})},getInfo:function(){return{longname:"Visual characters",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_toggleVisualChars:function(){var m=this,g=m.editor,a,e,f,k=g.getDoc(),l=g.getBody(),j,n=g.selection,c;m.state=!m.state;g.controlManager.setActive("visualchars",m.state);if(m.state){a=[];tinymce.walk(l,function(b){if(b.nodeType==3&&b.nodeValue&&b.nodeValue.indexOf("\u00a0")!=-1){a.push(b)}},"childNodes");for(e=0;e$1');j=j.replace(/\u00a0/g,"\u00b7");g.dom.setOuterHTML(a[e],j,k)}}else{a=tinymce.grep(g.dom.select("span",l),function(b){return g.dom.hasClass(b,"mceVisualNbsp")});for(e=0;e$1');c=k.dom.create("div",null,l);while(node=c.lastChild){k.dom.insertAfter(node,a[g])}k.dom.remove(a[g])}}else{a=k.dom.select("span.mceItemNbsp",o);for(g=a.length-1;g>=0;g--){k.dom.remove(a[g],1)}}q.moveToBookmark(f)}});tinymce.PluginManager.add("visualchars",tinymce.plugins.VisualChars)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js old mode 100755 new mode 100644 index 0a5275fe2..df985905b --- a/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js @@ -22,9 +22,9 @@ ed.addButton('visualchars', {title : 'visualchars.desc', cmd : 'mceVisualChars'}); ed.onBeforeGetContent.add(function(ed, o) { - if (t.state) { + if (t.state && o.format != 'raw' && !o.draft) { t.state = true; - t._toggleVisualChars(); + t._toggleVisualChars(false); } }); }, @@ -41,12 +41,15 @@ // Private methods - _toggleVisualChars : function() { - var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo; + _toggleVisualChars : function(bookmark) { + var t = this, ed = t.editor, nl, i, h, d = ed.getDoc(), b = ed.getBody(), nv, s = ed.selection, bo, div, bm; t.state = !t.state; ed.controlManager.setActive('visualchars', t.state); + if (bookmark) + bm = s.getBookmark(); + if (t.state) { nl = []; tinymce.walk(b, function(n) { @@ -54,20 +57,24 @@ nl.push(n); }, 'childNodes'); - for (i=0; i$1'); - nv = nv.replace(/\u00a0/g, '\u00b7'); - ed.dom.setOuterHTML(nl[i], nv, d); + nv = nv.replace(/(\u00a0)/g, '$1'); + + div = ed.dom.create('div', null, nv); + while (node = div.lastChild) + ed.dom.insertAfter(node, nl[i]); + + ed.dom.remove(nl[i]); } } else { - nl = tinymce.grep(ed.dom.select('span', b), function(n) { - return ed.dom.hasClass(n, 'mceVisualNbsp'); - }); + nl = ed.dom.select('span.mceItemNbsp', b); - for (i=0; i= 0; i--) + ed.dom.remove(nl[i], 1); } + + s.moveToBookmark(bm); } }); diff --git a/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js old mode 100755 new mode 100644 index a099e6a8c..42ece2092 --- a/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create("tinymce.plugins.WordCount",{block:0,id:null,countre:null,cleanre:null,init:function(a,b){var c=this,d=0;c.countre=a.getParam("wordcount_countregex",/\S\s+/g);c.cleanre=a.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$¿'"_+=\\\/-]*/g);c.id=a.id+"-word-count";a.onPostRender.add(function(f,e){var g,h;h=f.getParam("wordcount_target_id");if(!h){g=tinymce.DOM.get(f.id+"_path_row");if(g){tinymce.DOM.add(g.parentNode,"div",{style:"float: right"},f.getLang("wordcount.words","Words: ")+'0')}}else{tinymce.DOM.add(h,"span",{},'0')}});a.onInit.add(function(e){e.selection.onSetContent.add(function(){c._count(e)});c._count(e)});a.onSetContent.add(function(e){c._count(e)});a.onKeyUp.add(function(f,g){if(g.keyCode==d){return}if(13==g.keyCode||8==d||46==d){c._count(f)}d=g.keyCode})},_count:function(b){var c=this,a=0;if(c.block){return}c.block=1;setTimeout(function(){var d=b.getContent({format:"raw"});if(d){d=d.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ");d=d.replace(c.cleanre,"");d.replace(c.countre,function(){a++})}tinymce.DOM.setHTML(c.id,a.toString());setTimeout(function(){c.block=0},2000)},1)},getInfo:function(){return{longname:"Word Count plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("wordcount",tinymce.plugins.WordCount)})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.WordCount",{block:0,id:null,countre:null,cleanre:null,init:function(c,d){var e=this,f=0,g=tinymce.VK;e.countre=c.getParam("wordcount_countregex",/[\w\u2019\'-]+/g);e.cleanre=c.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\'\"_+=\\\/-]*/g);e.update_rate=c.getParam("wordcount_update_rate",2000);e.update_on_delete=c.getParam("wordcount_update_on_delete",false);e.id=c.id+"-word-count";c.onPostRender.add(function(i,h){var j,k;k=i.getParam("wordcount_target_id");if(!k){j=tinymce.DOM.get(i.id+"_path_row");if(j){tinymce.DOM.add(j.parentNode,"div",{style:"float: right"},i.getLang("wordcount.words","Words: ")+'0')}}else{tinymce.DOM.add(k,"span",{},'0')}});c.onInit.add(function(h){h.selection.onSetContent.add(function(){e._count(h)});e._count(h)});c.onSetContent.add(function(h){e._count(h)});function b(h){return h!==f&&(h===g.ENTER||f===g.SPACEBAR||a(f))}function a(h){return h===g.DELETE||h===g.BACKSPACE}c.onKeyUp.add(function(h,i){if(b(i.keyCode)||e.update_on_delete&&a(i.keyCode)){e._count(h)}f=i.keyCode})},_getCount:function(c){var a=0;var b=c.getContent({format:"raw"});if(b){b=b.replace(/\.\.\./g," ");b=b.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ");b=b.replace(/(\w+)(&.+?;)+(\w+)/,"$1$3").replace(/&.+?;/g," ");b=b.replace(this.cleanre,"");var d=b.match(this.countre);if(d){a=d.length}}return a},_count:function(a){var b=this;if(b.block){return}b.block=1;setTimeout(function(){if(!a.destroyed){var c=b._getCount(a);tinymce.DOM.setHTML(b.id,c.toString());setTimeout(function(){b.block=0},b.update_rate)}},1)},getInfo:function(){return{longname:"Word Count plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("wordcount",tinymce.plugins.WordCount)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js old mode 100755 new mode 100644 index 5cb92fa0f..34b265553 --- a/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js @@ -9,17 +9,19 @@ */ (function() { - tinymce.create('tinymce.plugins.WordCount', { + tinymce.create('tinymce.plugins.WordCount', { block : 0, id : null, countre : null, cleanre : null, init : function(ed, url) { - var t = this, last = 0; + var t = this, last = 0, VK = tinymce.VK; - t.countre = ed.getParam('wordcount_countregex', /\S\s+/g); - t.cleanre = ed.getParam('wordcount_cleanregex', /[0-9.(),;:!?%#$¿'"_+=\\\/-]*/g); + t.countre = ed.getParam('wordcount_countregex', /[\w\u2019\'-]+/g); // u2019 == ’ + t.cleanre = ed.getParam('wordcount_cleanregex', /[0-9.(),;:!?%#$?\'\"_+=\\\/-]*/g); + t.update_rate = ed.getParam('wordcount_update_rate', 2000); + t.update_on_delete = ed.getParam('wordcount_update_on_delete', false); t.id = ed.id + '-word-count'; ed.onPostRender.add(function(ed, cm) { @@ -32,11 +34,12 @@ if (row) tinymce.DOM.add(row.parentNode, 'div', {'style': 'float: right'}, ed.getLang('wordcount.words', 'Words: ') + '0'); - } else + } else { tinymce.DOM.add(id, 'span', {}, '0'); + } }); - ed.onInit.add(function(ed) { + ed.onInit.add(function(ed) { ed.selection.onSetContent.add(function() { t._count(ed); }); @@ -48,19 +51,46 @@ t._count(ed); }); - ed.onKeyUp.add(function(ed, e) { - if (e.keyCode == last) - return; + function checkKeys(key) { + return key !== last && (key === VK.ENTER || last === VK.SPACEBAR || checkDelOrBksp(last)); + } - if (13 == e.keyCode || 8 == last || 46 == last) + function checkDelOrBksp(key) { + return key === VK.DELETE || key === VK.BACKSPACE; + } + + ed.onKeyUp.add(function(ed, e) { + if (checkKeys(e.keyCode) || t.update_on_delete && checkDelOrBksp(e.keyCode)) { t._count(ed); + } last = e.keyCode; }); }, + _getCount : function(ed) { + var tc = 0; + var tx = ed.getContent({ format: 'raw' }); + + if (tx) { + tx = tx.replace(/\.\.\./g, ' '); // convert ellipses to spaces + tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/ | /gi, ' '); // remove html tags and space chars + + // deal with html entities + tx = tx.replace(/(\w+)(&.+?;)+(\w+)/, "$1$3").replace(/&.+?;/g, ' '); + tx = tx.replace(this.cleanre, ''); // remove numbers and punctuation + + var wordArray = tx.match(this.countre); + if (wordArray) { + tc = wordArray.length; + } + } + + return tc; + }, + _count : function(ed) { - var t = this, tc = 0; + var t = this; // Keep multiple calls from happening at the same time if (t.block) @@ -69,21 +99,15 @@ t.block = 1; setTimeout(function() { - var tx = ed.getContent({format : 'raw'}); - - if (tx) { - tx = tx.replace(/<.[^<>]*?>/g, ' ').replace(/ | /gi, ' '); // remove html tags and space chars - tx = tx.replace(t.cleanre, ''); // remove numbers and punctuation - tx.replace(t.countre, function() {tc++;}); // count the words + if (!ed.destroyed) { + var tc = t._getCount(ed); + tinymce.DOM.setHTML(t.id, tc.toString()); + setTimeout(function() {t.block = 0;}, t.update_rate); } - - tinymce.DOM.setHTML(t.id, tc.toString()); - - setTimeout(function() {t.block = 0;}, 2000); }, 1); }, - getInfo: function() { + getInfo: function() { return { longname : 'Word Count plugin', author : 'Moxiecode Systems AB', @@ -91,8 +115,8 @@ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount', version : tinymce.majorVersion + "." + tinymce.minorVersion }; - } - }); + } + }); - tinymce.PluginManager.add('wordcount', tinymce.plugins.WordCount); + tinymce.PluginManager.add('wordcount', tinymce.plugins.WordCount); })(); diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm old mode 100755 new mode 100644 index 3aeac0deb..30a894f7c --- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm @@ -10,11 +10,12 @@ - + + @@ -23,7 +24,7 @@
    {#xhtmlxtras_dlg.fieldset_attrib_tab} -
     
    +
    @@ -41,7 +42,7 @@ - + @@ -67,7 +68,7 @@
    {#xhtmlxtras_dlg.fieldset_events_tab} -
    :
    ::
    +
    diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm old mode 100755 new mode 100644 index 31ee7b70f..c10934592 --- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm @@ -10,11 +10,12 @@ - + + @@ -23,7 +24,7 @@
    {#xhtmlxtras_dlg.fieldset_attrib_tab} -
    :
    +
    @@ -41,7 +42,7 @@ - + @@ -67,7 +68,7 @@
    {#xhtmlxtras_dlg.fieldset_events_tab} -
    :
    ::
    +
    diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm old mode 100755 new mode 100644 index 17054da3e..e8d606a34 --- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm @@ -9,12 +9,13 @@ - + + @@ -22,7 +23,7 @@
    {#xhtmlxtras_dlg.attribute_attrib_tab} -
    :
    +
    @@ -75,7 +76,7 @@
    {#xhtmlxtras_dlg.attribute_events_tab} -
    :
    +
    diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm old mode 100755 new mode 100644 index d0a3e3a8e..0ac6bdb66 --- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm @@ -10,11 +10,12 @@ - + + @@ -23,7 +24,7 @@
    {#xhtmlxtras_dlg.fieldset_attrib_tab} -
    :
    +
    @@ -67,7 +68,7 @@
    {#xhtmlxtras_dlg.fieldset_events_tab} -
    :
    +
    diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm old mode 100755 new mode 100644 index 8b07fa842..5f667510f --- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm @@ -10,11 +10,12 @@ - + + @@ -23,14 +24,14 @@
    {#xhtmlxtras_dlg.fieldset_general_tab} -
    :
    +
    @@ -43,7 +44,7 @@
    {#xhtmlxtras_dlg.fieldset_attrib_tab} -
    : - +
    - +
    +
    @@ -61,7 +62,7 @@ - + @@ -87,7 +88,7 @@
    {#xhtmlxtras_dlg.fieldset_events_tab} -
    :
    ::
    +
    diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js old mode 100755 new mode 100644 index e5195265e..9b98a5154 --- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(b,c){b.addCommand("mceCite",function(){b.windowManager.open({file:c+"/cite.htm",width:350+parseInt(b.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(b.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:c})});b.addCommand("mceAcronym",function(){b.windowManager.open({file:c+"/acronym.htm",width:350+parseInt(b.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(b.getLang("xhtmlxtras.acronym_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceAbbr",function(){b.windowManager.open({file:c+"/abbr.htm",width:350+parseInt(b.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(b.getLang("xhtmlxtras.abbr_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceDel",function(){b.windowManager.open({file:c+"/del.htm",width:340+parseInt(b.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(b.getLang("xhtmlxtras.del_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceIns",function(){b.windowManager.open({file:c+"/ins.htm",width:340+parseInt(b.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(b.getLang("xhtmlxtras.ins_delta_width",0)),inline:1},{plugin_url:c})});b.addCommand("mceAttributes",function(){b.windowManager.open({file:c+"/attributes.htm",width:380,height:370,inline:1},{plugin_url:c})});b.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});b.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});b.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});b.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});b.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});b.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});if(tinymce.isIE){function a(d,e){if(e.set){e.content=e.content.replace(/]+)>/gi,"");e.content=e.content.replace(/<\/abbr>/gi,"")}}b.onBeforeSetContent.add(a);b.onPostProcess.add(a)}b.onNodeChange.add(function(e,d,g,f){g=e.dom.getParent(g,"CITE,ACRONYM,ABBR,DEL,INS");d.setDisabled("cite",f);d.setDisabled("acronym",f);d.setDisabled("abbr",f);d.setDisabled("del",f);d.setDisabled("ins",f);d.setDisabled("attribs",g&&g.nodeName=="BODY");d.setActive("cite",0);d.setActive("acronym",0);d.setActive("abbr",0);d.setActive("del",0);d.setActive("ins",0);if(g){do{d.setDisabled(g.nodeName.toLowerCase(),0);d.setActive(g.nodeName.toLowerCase(),1)}while(g=g.parentNode)}});b.onPreInit.add(function(){b.dom.create("abbr")})},getInfo:function(){return{longname:"XHTML Xtras Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("xhtmlxtras",tinymce.plugins.XHTMLXtrasPlugin)})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(a,b){a.addCommand("mceCite",function(){a.windowManager.open({file:b+"/cite.htm",width:350+parseInt(a.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAcronym",function(){a.windowManager.open({file:b+"/acronym.htm",width:350+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.acronym_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAbbr",function(){a.windowManager.open({file:b+"/abbr.htm",width:350+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.abbr_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceDel",function(){a.windowManager.open({file:b+"/del.htm",width:340+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.del_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceIns",function(){a.windowManager.open({file:b+"/ins.htm",width:340+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.ins_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAttributes",function(){a.windowManager.open({file:b+"/attributes.htm",width:380+parseInt(a.getLang("xhtmlxtras.attr_delta_width",0)),height:370+parseInt(a.getLang("xhtmlxtras.attr_delta_height",0)),inline:1},{plugin_url:b})});a.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});a.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});a.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});a.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});a.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});a.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});a.onNodeChange.add(function(d,c,f,e){f=d.dom.getParent(f,"CITE,ACRONYM,ABBR,DEL,INS");c.setDisabled("cite",e);c.setDisabled("acronym",e);c.setDisabled("abbr",e);c.setDisabled("del",e);c.setDisabled("ins",e);c.setDisabled("attribs",f&&f.nodeName=="BODY");c.setActive("cite",0);c.setActive("acronym",0);c.setActive("abbr",0);c.setActive("del",0);c.setActive("ins",0);if(f){do{c.setDisabled(f.nodeName.toLowerCase(),0);c.setActive(f.nodeName.toLowerCase(),1)}while(f=f.parentNode)}});a.onPreInit.add(function(){a.dom.create("abbr")})},getInfo:function(){return{longname:"XHTML Xtras Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("xhtmlxtras",tinymce.plugins.XHTMLXtrasPlugin)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js old mode 100755 new mode 100644 index 9b51b8368..f24057211 --- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js @@ -27,7 +27,7 @@ ed.windowManager.open({ file : url + '/acronym.htm', width : 350 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)), - height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_width', 0)), + height : 250 + parseInt(ed.getLang('xhtmlxtras.acronym_delta_height', 0)), inline : 1 }, { plugin_url : url @@ -38,7 +38,7 @@ ed.windowManager.open({ file : url + '/abbr.htm', width : 350 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)), - height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_width', 0)), + height : 250 + parseInt(ed.getLang('xhtmlxtras.abbr_delta_height', 0)), inline : 1 }, { plugin_url : url @@ -49,7 +49,7 @@ ed.windowManager.open({ file : url + '/del.htm', width : 340 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)), - height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_width', 0)), + height : 310 + parseInt(ed.getLang('xhtmlxtras.del_delta_height', 0)), inline : 1 }, { plugin_url : url @@ -60,7 +60,7 @@ ed.windowManager.open({ file : url + '/ins.htm', width : 340 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)), - height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_width', 0)), + height : 310 + parseInt(ed.getLang('xhtmlxtras.ins_delta_height', 0)), inline : 1 }, { plugin_url : url @@ -70,8 +70,8 @@ ed.addCommand('mceAttributes', function() { ed.windowManager.open({ file : url + '/attributes.htm', - width : 380, - height : 370, + width : 380 + parseInt(ed.getLang('xhtmlxtras.attr_delta_width', 0)), + height : 370 + parseInt(ed.getLang('xhtmlxtras.attr_delta_height', 0)), inline : 1 }, { plugin_url : url @@ -86,18 +86,6 @@ ed.addButton('ins', {title : 'xhtmlxtras.ins_desc', cmd : 'mceIns'}); ed.addButton('attribs', {title : 'xhtmlxtras.attribs_desc', cmd : 'mceAttributes'}); - if (tinymce.isIE) { - function fix(ed, o) { - if (o.set) { - o.content = o.content.replace(/]+)>/gi, ''); - o.content = o.content.replace(/<\/abbr>/gi, ''); - } - }; - - ed.onBeforeSetContent.add(fix); - ed.onPostProcess.add(fix); - } - ed.onNodeChange.add(function(ed, cm, n, co) { n = ed.dom.getParent(n, 'CITE,ACRONYM,ABBR,DEL,INS'); diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm old mode 100755 new mode 100644 index 6c5470cfc..d001ac7c4 --- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm @@ -10,11 +10,12 @@ - + + @@ -23,19 +24,19 @@
    {#xhtmlxtras_dlg.fieldset_general_tab} -
    :
    +
    - + @@ -43,9 +44,9 @@
    {#xhtmlxtras_dlg.fieldset_attrib_tab} -
    : - +
    - +
    :
    +
    - + @@ -61,7 +62,7 @@ - + @@ -87,7 +88,7 @@
    {#xhtmlxtras_dlg.fieldset_events_tab} -
    ::
    ::
    +
    diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js old mode 100755 new mode 100644 index d62a219e6..9c99995ad --- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js @@ -53,7 +53,6 @@ function insertAction() { var inst = tinyMCEPopup.editor; var elm = inst.selection.getNode(); - tinyMCEPopup.execCommand("mceBeginUndoLevel"); setAllAttribs(elm); tinyMCEPopup.execCommand("mceEndUndoLevel"); tinyMCEPopup.close(); @@ -72,21 +71,7 @@ function setAttrib(elm, attrib, value) { value = valueElm.value; } - if (value != "") { - dom.setAttrib(elm, attrib.toLowerCase(), value); - - if (attrib == "style") - attrib = "style.cssText"; - - if (attrib.substring(0, 2) == 'on') - value = 'return true;' + value; - - if (attrib == "class") - attrib = "className"; - - elm[attrib]=value; - } else - elm.removeAttribute(attrib); + dom.setAttrib(elm, attrib.toLowerCase(), value); } function setAllAttribs(elm) { diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js old mode 100755 new mode 100644 index 9e5d8c571..1f957dc78 --- a/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js @@ -21,17 +21,17 @@ function setElementAttribs(elm) { setAllCommonAttribs(elm); setAttrib(elm, 'datetime'); setAttrib(elm, 'cite'); + elm.removeAttribute('data-mce-new'); } function insertDel() { var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL'); - tinyMCEPopup.execCommand('mceBeginUndoLevel'); if (elm == null) { var s = SXE.inst.selection.getContent(); if(s.length > 0) { insertInlineElement('del'); - var elementArray = tinymce.grep(SXE.inst.dom.select('del'), function(n) {return n.id == '#sxe_temp_del#';}); + var elementArray = SXE.inst.dom.select('del[data-mce-new]'); for (var i=0; i 0) { @@ -165,11 +164,11 @@ SXE.insertElement = function(element_name) { for (var i=0; i 0) { - insertInlineElement('INS'); - var elementArray = tinymce.grep(SXE.inst.dom.select('ins'), function(n) {return n.id == '#sxe_temp_ins#';}); + insertInlineElement('ins'); + var elementArray = SXE.inst.dom.select('ins[data-mce-new]'); for (var i=0; i
    :
    +
    - + - - + +
    {#advanced_dlg.anchor_title}{#advanced_dlg.anchor_title}
    {#advanced_dlg.anchor_name}:
    diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm old mode 100755 new mode 100644 index 3991b8141..d4b6bdfb7 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm @@ -5,48 +5,51 @@ - - - - - - -
    {#advanced_dlg.charmap_title}
    + + + + + + + - - - - - + + + + + + + + + +
    - - - - - - - - -
     
     
    -
    - - - - - - - - - - - - - - - - -
    HTML-Code
     
     
    NUM-Code
     
    -
    + + + + + + + +
     
     
    +
    + + + + + + + + + + + + + + + + +
     
     
     
    +
    {#advanced_dlg.charmap_usage}
    - diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm old mode 100755 new mode 100644 index 096e7550c..ad1bb0f6c --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm @@ -6,13 +6,14 @@ - + + @@ -34,7 +35,7 @@
    - {#advanced_dlg.colorpicker_palette_title} + {#advanced_dlg.colorpicker_palette_title}
    @@ -44,9 +45,9 @@
    -
    - {#advanced_dlg.colorpicker_named_title} -
    +
    + {#advanced_dlg.colorpicker_named_title} +
    @@ -65,7 +66,7 @@
    - +
    diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js old mode 100755 new mode 100644 index dc6197746..a88701812 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js @@ -1 +1 @@ -(function(e){var d=e.DOM,b=e.dom.Event,h=e.extend,f=e.each,a=e.util.Cookie,g,c=e.explode;e.ThemeManager.requireLangPack("advanced");e.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(j,k){var l=this,m,i,n;l.editor=j;l.url=k;l.onResolveName=new e.util.Dispatcher(this);l.settings=m=h({theme_advanced_path:true,theme_advanced_toolbar_location:"bottom",theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",readonly:j.settings.readonly},j.settings);if(!m.font_size_style_values){m.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(e.is(m.theme_advanced_font_sizes,"string")){m.font_size_style_values=e.explode(m.font_size_style_values);m.font_size_classes=e.explode(m.font_size_classes||"");n={};j.settings.theme_advanced_font_sizes=m.theme_advanced_font_sizes;f(j.getParam("theme_advanced_font_sizes","","hash"),function(q,p){var o;if(p==q&&q>=1&&q<=7){p=q+" ("+l.sizes[q-1]+"pt)";o=m.font_size_classes[q-1];q=m.font_size_style_values[q-1]||(l.sizes[q-1]+"pt")}if(/^\s*\./.test(q)){o=q.replace(/\./g,"")}n[p]=o?{"class":o}:{fontSize:q}});m.theme_advanced_font_sizes=n}if((i=m.theme_advanced_path_location)&&i!="none"){m.theme_advanced_statusbar_location=m.theme_advanced_path_location}if(m.theme_advanced_statusbar_location=="none"){m.theme_advanced_statusbar_location=0}j.onInit.add(function(){if(!j.settings.readonly){j.onNodeChange.add(l._nodeChanged,l)}if(j.settings.content_css!==false){j.dom.loadCSS(j.baseURI.toAbsolute("themes/advanced/skins/"+j.settings.skin+"/content.css"))}});j.onSetProgressState.add(function(q,o,r){var s,t=q.id,p;if(o){l.progressTimer=setTimeout(function(){s=q.getContainer();s=s.insertBefore(d.create("DIV",{style:"position:relative"}),s.firstChild);p=d.get(q.id+"_tbl");d.add(s,"div",{id:t+"_blocker","class":"mceBlocker",style:{width:p.clientWidth+2,height:p.clientHeight+2}});d.add(s,"div",{id:t+"_progress","class":"mceProgress",style:{left:p.clientWidth/2,top:p.clientHeight/2}})},r||0)}else{d.remove(t+"_blocker");d.remove(t+"_progress");clearTimeout(l.progressTimer)}});d.loadCSS(m.editor_css?j.documentBaseURI.toAbsolute(m.editor_css):k+"/skins/"+j.settings.skin+"/ui.css");if(m.skin_variant){d.loadCSS(k+"/skins/"+j.settings.skin+"/ui_"+m.skin_variant+".css")}},createControl:function(l,i){var j,k;if(k=i.createControl(l)){return k}switch(l){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((j=this.controls[l])){return i.createButton(l,{title:"advanced."+j[0],cmd:j[1],ui:j[2],value:j[3]})}},execCommand:function(k,j,l){var i=this["_"+k];if(i){i.call(this,j,l);return true}return false},_importClasses:function(k){var i=this.editor,j=i.controlManager.get("styleselect");if(j.getLength()==0){f(i.dom.getClasses(),function(n,l){var m="style_"+l;i.formatter.register(m,{inline:"span",attributes:{"class":n["class"]},selector:"*"});j.add(n["class"],m)})}},_createStyleSelect:function(m){var k=this,i=k.editor,j=i.controlManager,l;l=j.createListBox("styleselect",{title:"advanced.style_select",onselect:function(o){var p,n=[];f(l.items,function(q){n.push(q.value)});i.focus();i.undoManager.add();p=i.formatter.matchAll(n);if(p[0]==o){i.formatter.remove(o)}else{i.formatter.apply(o)}i.undoManager.add();i.nodeChanged();return false}});i.onInit.add(function(){var o=0,n=i.getParam("style_formats");if(n){f(n,function(p){var q,r=0;f(p,function(){r++});if(r>1){q=p.name=p.name||"style_"+(o++);i.formatter.register(q,p);l.add(p.title,q)}else{l.add(p.title)}})}else{f(i.getParam("theme_advanced_styles","","hash"),function(r,q){var p;if(r){p="style_"+(o++);i.formatter.register(p,{inline:"span",classes:r,selector:"*"});l.add(k.editor.translate(q),p)}})}});if(l.getLength()==0){l.onPostRender.add(function(o,p){if(!l.NativeListBox){b.add(p.id+"_text","focus",k._importClasses,k);b.add(p.id+"_text","mousedown",k._importClasses,k);b.add(p.id+"_open","focus",k._importClasses,k);b.add(p.id+"_open","mousedown",k._importClasses,k)}else{b.add(p.id,"focus",k._importClasses,k)}})}return l},_createFontSelect:function(){var k,j=this,i=j.editor;k=i.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(l){i.execCommand("FontName",false,l);k.select(function(m){return l==m});return false}});if(k){f(i.getParam("theme_advanced_fonts",j.settings.theme_advanced_fonts,"hash"),function(m,l){k.add(i.translate(l),m,{style:m.indexOf("dings")==-1?"font-family:"+m:""})})}return k},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(i){if(i["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:i["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,i.fontSize)}n.select(function(o){return i==o});return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(o,i){var p=o.fontSize;if(p>=1&&p<=7){p=m.sizes[parseInt(p)-1]+"pt"}n.add(i,o,{style:"font-size:"+p,"class":"mceFontSize"+(l++)+(" "+(o["class"]||""))})})}return n},_createBlockFormats:function(){var k,i={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},j=this;k=j.editor.controlManager.createListBox("formatselect",{title:"advanced.block",cmd:"FormatBlock"});if(k){f(j.editor.getParam("theme_advanced_blockformats",j.settings.theme_advanced_blockformats,"hash"),function(m,l){k.add(j.editor.translate(l!=m?l:i[m]),m,{"class":"mce_formatPreview mce_"+m})})}return k},_createForeColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_text_colors){l.colors=i}if(k.theme_advanced_default_foreground_color){l.default_color=k.theme_advanced_default_foreground_color}l.title="advanced.forecolor_desc";l.cmd="ForeColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("forecolor",l);return m},_createBackColorMenu:function(){var m,j=this,k=j.settings,l={},i;if(k.theme_advanced_more_colors){l.more_colors_func=function(){j._mceColorPicker(0,{color:m.value,func:function(n){m.setColor(n)}})}}if(i=k.theme_advanced_background_colors){l.colors=i}if(k.theme_advanced_default_background_color){l.default_color=k.theme_advanced_default_background_color}l.title="advanced.backcolor_desc";l.cmd="HiliteColor";l.scope=this;m=j.editor.controlManager.createColorSplitButton("backcolor",l);return m},renderUI:function(k){var m,l,q,v=this,r=v.editor,w=v.settings,u,j,i;m=j=d.create("span",{id:r.id+"_parent","class":"mceEditor "+r.settings.skin+"Skin"+(w.skin_variant?" "+r.settings.skin+"Skin"+v._ufirst(w.skin_variant):"")});if(!d.boxModel){m=d.add(m,"div",{"class":"mceOldBoxModel"})}m=u=d.add(m,"table",{id:r.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});m=q=d.add(m,"tbody");switch((w.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":l=v._rowLayout(w,q,k);break;case"customlayout":l=r.execCallback("theme_advanced_custom_layout",w,q,k,j);break;default:l=v._simpleLayout(w,q,k,j)}m=k.targetNode;i=d.stdMode?u.getElementsByTagName("tr"):u.rows;d.addClass(i[0],"mceFirst");d.addClass(i[i.length-1],"mceLast");f(d.select("tr",q),function(o){d.addClass(o.firstChild,"mceFirst");d.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(d.get(w.theme_advanced_toolbar_container)){d.get(w.theme_advanced_toolbar_container).appendChild(j)}else{d.insertAfter(j,m)}b.add(r.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){v._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return b.cancel(n)}});if(!r.getParam("accessibility_focus")){b.add(d.add(j,"a",{href:"#"},""),"focus",function(){tinyMCE.get(r.id).focus()})}if(w.theme_advanced_toolbar_location=="external"){k.deltaHeight=0}v.deltaHeight=k.deltaHeight;k.targetNode=null;return{iframeContainer:l,editorContainer:r.id+"_parent",sizeContainer:u,deltaHeight:k.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:e.majorVersion+"."+e.minorVersion}},resizeBy:function(i,j){var k=d.get(this.editor.id+"_tbl");this.resizeTo(k.clientWidth+i,k.clientHeight+j)},resizeTo:function(i,l){var j=this.editor,k=this.settings,m=d.get(j.id+"_tbl"),n=d.get(j.id+"_ifr");i=Math.max(k.theme_advanced_resizing_min_width||100,i);l=Math.max(k.theme_advanced_resizing_min_height||100,l);i=Math.min(k.theme_advanced_resizing_max_width||65535,i);l=Math.min(k.theme_advanced_resizing_max_height||65535,l);d.setStyle(m,"height","");d.setStyle(n,"height",l);if(k.theme_advanced_resize_horizontal){d.setStyle(m,"width","");d.setStyle(n,"width",i);if(i"))}q.push(d.createHTML("a",{href:"#",accesskey:"q",title:r.getLang("advanced.toolbar_focus")},""));for(p=1;(y=A["theme_advanced_buttons"+p]);p++){m=j.createToolbar("toolbar"+p,{"class":"mceToolbarRow"+p});if(A["theme_advanced_buttons"+p+"_add"]){y+=","+A["theme_advanced_buttons"+p+"_add"]}if(A["theme_advanced_buttons"+p+"_add_before"]){y=A["theme_advanced_buttons"+p+"_add_before"]+","+y}z._addControls(y,m);q.push(m.renderHTML());k.deltaHeight-=A.theme_advanced_row_height}q.push(d.createHTML("a",{href:"#",accesskey:"z",title:r.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+r.id+"').focus();"},""));d.setHTML(l,q.join(""))},_addStatusBar:function(m,j){var k,v=this,p=v.editor,w=v.settings,i,q,u,l;k=d.add(m,"tr");k=l=d.add(k,"td",{"class":"mceStatusbar"});k=d.add(k,"div",{id:p.id+"_path_row"},w.theme_advanced_path?p.translate("advanced.path")+": ":" ");d.add(k,"a",{href:"#",accesskey:"x"});if(w.theme_advanced_resizing){d.add(l,"a",{id:p.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize"});if(w.theme_advanced_resizing_use_cookie){p.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+p.id+"_size"),r=d.get(p.id+"_tbl");if(!n){return}v.resizeTo(n.cw,n.ch)})}p.onPostRender.add(function(){b.add(p.id+"_resize","mousedown",function(D){var t,r,s,o,C,z,A,F,n,E,x;function y(G){n=A+(G.screenX-C);E=F+(G.screenY-z);v.resizeTo(n,E)}function B(G){b.remove(d.doc,"mousemove",t);b.remove(p.getDoc(),"mousemove",r);b.remove(d.doc,"mouseup",s);b.remove(p.getDoc(),"mouseup",o);if(w.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+p.id+"_size",{cw:n,ch:E})}}D.preventDefault();C=D.screenX;z=D.screenY;x=d.get(v.editor.id+"_ifr");A=n=x.clientWidth;F=E=x.clientHeight;t=b.add(d.doc,"mousemove",y);r=b.add(p.getDoc(),"mousemove",y);s=b.add(d.doc,"mouseup",B);o=b.add(p.getDoc(),"mouseup",B)})})}j.deltaHeight-=21;k=m=null},_nodeChanged:function(r,z,l,x,j){var C=this,i,y=0,B,u,D=C.settings,A,k,w,m,q;e.each(C.stateControls,function(n){z.setActive(n,r.queryCommandState(C.controls[n][1]))});function o(p){var s,n=j.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s=1&&r<=7){q=r+" ("+m.sizes[r-1]+"pt)";o=n.font_size_classes[r-1];r=n.font_size_style_values[r-1]||(m.sizes[r-1]+"pt")}if(/^\s*\./.test(r)){o=r.replace(/\./g,"")}p[q]=o?{"class":o}:{fontSize:r}});n.theme_advanced_font_sizes=p}if((j=n.theme_advanced_path_location)&&j!="none"){n.theme_advanced_statusbar_location=n.theme_advanced_path_location}if(n.theme_advanced_statusbar_location=="none"){n.theme_advanced_statusbar_location=0}if(k.settings.content_css!==false){k.contentCSS.push(k.baseURI.toAbsolute(l+"/skins/"+k.settings.skin+"/content.css"))}k.onInit.add(function(){if(!k.settings.readonly){k.onNodeChange.add(m._nodeChanged,m);k.onKeyUp.add(m._updateUndoStatus,m);k.onMouseUp.add(m._updateUndoStatus,m);k.dom.bind(k.dom.getRoot(),"dragend",function(){m._updateUndoStatus(k)})}});k.onSetProgressState.add(function(r,o,s){var t,u=r.id,q;if(o){m.progressTimer=setTimeout(function(){t=r.getContainer();t=t.insertBefore(i.create("DIV",{style:"position:relative"}),t.firstChild);q=i.get(r.id+"_tbl");i.add(t,"div",{id:u+"_blocker","class":"mceBlocker",style:{width:q.clientWidth+2,height:q.clientHeight+2}});i.add(t,"div",{id:u+"_progress","class":"mceProgress",style:{left:q.clientWidth/2,top:q.clientHeight/2}})},s||0)}else{i.remove(u+"_blocker");i.remove(u+"_progress");clearTimeout(m.progressTimer)}});i.loadCSS(n.editor_css?k.documentBaseURI.toAbsolute(n.editor_css):l+"/skins/"+k.settings.skin+"/ui.css");if(n.skin_variant){i.loadCSS(l+"/skins/"+k.settings.skin+"/ui_"+n.skin_variant+".css")}},_isHighContrast:function(){var j,k=i.add(i.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});j=(i.getStyle(k,"background-color",true)+"").toLowerCase().replace(/ /g,"");i.remove(k);return j!="rgb(171,239,86)"&&j!="#abef56"},createControl:function(m,j){var k,l;if(l=j.createControl(m)){return l}switch(m){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((k=this.controls[m])){return j.createButton(m,{title:"advanced."+k[0],cmd:k[1],ui:k[2],value:k[3]})}},execCommand:function(l,k,m){var j=this["_"+l];if(j){j.call(this,k,m);return true}return false},_importClasses:function(l){var j=this.editor,k=j.controlManager.get("styleselect");if(k.getLength()==0){f(j.dom.getClasses(),function(q,m){var p="style_"+m,n;n={inline:"span",attributes:{"class":q["class"]},selector:"*"};j.formatter.register(p,n);k.add(q["class"],p,{style:function(){return b(j,n)}})})}},_createStyleSelect:function(o){var l=this,j=l.editor,k=j.controlManager,m;m=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(q){var r,n=[],p;f(m.items,function(s){n.push(s.value)});j.focus();j.undoManager.add();r=j.formatter.matchAll(n);h.each(r,function(s){if(!q||s==q){if(s){j.formatter.remove(s)}p=true}});if(!p){j.formatter.apply(q)}j.undoManager.add();j.nodeChanged();return false}});j.onPreInit.add(function(){var p=0,n=j.getParam("style_formats");if(n){f(n,function(q){var r,s=0;f(q,function(){s++});if(s>1){r=q.name=q.name||"style_"+(p++);j.formatter.register(r,q);m.add(q.title,r,{style:function(){return b(j,q)}})}else{m.add(q.title)}})}else{f(j.getParam("theme_advanced_styles","","hash"),function(t,s){var r,q;if(t){r="style_"+(p++);q={inline:"span",classes:t,selector:"*"};j.formatter.register(r,q);m.add(l.editor.translate(s),r,{style:function(){return b(j,q)}})}})}});if(m.getLength()==0){m.onPostRender.add(function(p,q){if(!m.NativeListBox){g.add(q.id+"_text","focus",l._importClasses,l);g.add(q.id+"_text","mousedown",l._importClasses,l);g.add(q.id+"_open","focus",l._importClasses,l);g.add(q.id+"_open","mousedown",l._importClasses,l)}else{g.add(q.id,"focus",l._importClasses,l)}})}return m},_createFontSelect:function(){var l,k=this,j=k.editor;l=j.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(m){var n=l.items[l.selectedIndex];if(!m&&n){j.execCommand("FontName",false,n.value);return}j.execCommand("FontName",false,m);l.select(function(o){return m==o});if(n&&n.value==m){l.select(null)}return false}});if(l){f(j.getParam("theme_advanced_fonts",k.settings.theme_advanced_fonts,"hash"),function(n,m){l.add(j.translate(m),n,{style:n.indexOf("dings")==-1?"font-family:"+n:""})})}return l},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(o){var p=n.items[n.selectedIndex];if(!o&&p){p=p.value;if(p["class"]){k.formatter.toggle("fontsize_class",{value:p["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,p.fontSize)}return}if(o["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}n.select(function(q){return o==q});if(p&&(p.value.fontSize==o.fontSize||p.value["class"]&&p.value["class"]==o["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(p,o){var q=p.fontSize;if(q>=1&&q<=7){q=m.sizes[parseInt(q)-1]+"pt"}n.add(o,p,{style:"font-size:"+q,"class":"mceFontSize"+(l++)+(" "+(p["class"]||""))})})}return n},_createBlockFormats:function(){var l,j={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},k=this;l=k.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(m){k.editor.execCommand("FormatBlock",false,m);return false}});if(l){f(k.editor.getParam("theme_advanced_blockformats",k.settings.theme_advanced_blockformats,"hash"),function(n,m){l.add(k.editor.translate(m!=n?m:j[n]),n,{"class":"mce_formatPreview mce_"+n,style:function(){return b(k.editor,{block:n})}})})}return l},_createForeColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_text_colors){m.colors=j}if(l.theme_advanced_default_foreground_color){m.default_color=l.theme_advanced_default_foreground_color}m.title="advanced.forecolor_desc";m.cmd="ForeColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("forecolor",m);return n},_createBackColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_background_colors){m.colors=j}if(l.theme_advanced_default_background_color){m.default_color=l.theme_advanced_default_background_color}m.title="advanced.backcolor_desc";m.cmd="HiliteColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("backcolor",m);return n},renderUI:function(l){var q,m,r,w=this,u=w.editor,x=w.settings,v,k,j;if(u.settings){u.settings.aria_label=x.aria_label+u.getLang("advanced.help_shortcut")}q=k=i.create("span",{role:"application","aria-labelledby":u.id+"_voice",id:u.id+"_parent","class":"mceEditor "+u.settings.skin+"Skin"+(x.skin_variant?" "+u.settings.skin+"Skin"+w._ufirst(x.skin_variant):"")});i.add(q,"span",{"class":"mceVoiceLabel",style:"display:none;",id:u.id+"_voice"},x.aria_label);if(!i.boxModel){q=i.add(q,"div",{"class":"mceOldBoxModel"})}q=v=i.add(q,"table",{role:"presentation",id:u.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});q=r=i.add(q,"tbody");switch((x.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":m=w._rowLayout(x,r,l);break;case"customlayout":m=u.execCallback("theme_advanced_custom_layout",x,r,l,k);break;default:m=w._simpleLayout(x,r,l,k)}q=l.targetNode;j=v.rows;i.addClass(j[0],"mceFirst");i.addClass(j[j.length-1],"mceLast");f(i.select("tr",r),function(o){i.addClass(o.firstChild,"mceFirst");i.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(i.get(x.theme_advanced_toolbar_container)){i.get(x.theme_advanced_toolbar_container).appendChild(k)}else{i.insertAfter(k,q)}g.add(u.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){w._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return false}});if(!u.getParam("accessibility_focus")){g.add(i.add(k,"a",{href:"#"},""),"focus",function(){tinyMCE.get(u.id).focus()})}if(x.theme_advanced_toolbar_location=="external"){l.deltaHeight=0}w.deltaHeight=l.deltaHeight;l.targetNode=null;u.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){if(h.isWebKit){window.focus()}w.toolbarGroup.focus();return g.cancel(n)}else{if(n.keyCode===o){i.get(p.id+"_path_row").focus();return g.cancel(n)}}}});u.addShortcut("alt+0","","mceShortcuts",w);return{iframeContainer:m,editorContainer:u.id+"_parent",sizeContainer:v,deltaHeight:l.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:h.majorVersion+"."+h.minorVersion}},resizeBy:function(j,k){var l=i.get(this.editor.id+"_ifr");this.resizeTo(l.clientWidth+j,l.clientHeight+k)},resizeTo:function(j,n,l){var k=this.editor,m=this.settings,o=i.get(k.id+"_tbl"),p=i.get(k.id+"_ifr");j=Math.max(m.theme_advanced_resizing_min_width||100,j);n=Math.max(m.theme_advanced_resizing_min_height||100,n);j=Math.min(m.theme_advanced_resizing_max_width||65535,j);n=Math.min(m.theme_advanced_resizing_max_height||65535,n);i.setStyle(o,"height","");i.setStyle(p,"height",n);if(m.theme_advanced_resize_horizontal){i.setStyle(o,"width","");i.setStyle(p,"width",j);if(j"));i.setHTML(l,q.join(""))},_addStatusBar:function(p,k){var l,w=this,q=w.editor,x=w.settings,j,u,v,m;l=i.add(p,"tr");l=m=i.add(l,"td",{"class":"mceStatusbar"});l=i.add(l,"div",{id:q.id+"_path_row",role:"group","aria-labelledby":q.id+"_path_voice"});if(x.theme_advanced_path){i.add(l,"span",{id:q.id+"_path_voice"},q.translate("advanced.path"));i.add(l,"span",{},": ")}else{i.add(l,"span",{}," ")}if(x.theme_advanced_resizing){i.add(m,"a",{id:q.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(x.theme_advanced_resizing_use_cookie){q.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+q.id+"_size"),r=i.get(q.id+"_tbl");if(!n){return}w.resizeTo(n.cw,n.ch)})}q.onPostRender.add(function(){g.add(q.id+"_resize","click",function(n){n.preventDefault()});g.add(q.id+"_resize","mousedown",function(E){var t,r,s,o,D,A,B,G,n,F,y;function z(H){H.preventDefault();n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F)}function C(H){g.remove(i.doc,"mousemove",t);g.remove(q.getDoc(),"mousemove",r);g.remove(i.doc,"mouseup",s);g.remove(q.getDoc(),"mouseup",o);n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F,true)}E.preventDefault();D=E.screenX;A=E.screenY;y=i.get(w.editor.id+"_ifr");B=n=y.clientWidth;G=F=y.clientHeight;t=g.add(i.doc,"mousemove",z);r=g.add(q.getDoc(),"mousemove",z);s=g.add(i.doc,"mouseup",C);o=g.add(q.getDoc(),"mouseup",C)})})}k.deltaHeight-=21;l=p=null},_updateUndoStatus:function(k){var j=k.controlManager,l=k.undoManager;j.setDisabled("undo",!l.hasUndo()&&!l.typing);j.setDisabled("redo",!l.hasRedo())},_nodeChanged:function(o,u,E,r,F){var z=this,D,G=0,y,H,A=z.settings,x,l,w,C,m,k,j;h.each(z.stateControls,function(n){u.setActive(n,o.queryCommandState(z.controls[n][1]))});function q(p){var s,n=F.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s0){H.mark(p)}})}if(H=u.get("formatselect")){D=q(i.isBlock);if(D){H.select(D.nodeName.toLowerCase())}}q(function(p){if(p.nodeName==="SPAN"){if(!x&&p.className){x=p.className}}if(o.dom.is(p,A.theme_advanced_font_selector)){if(!l&&p.style.fontSize){l=p.style.fontSize}if(!w&&p.style.fontFamily){w=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!C&&p.style.color){C=p.style.color}if(!m&&p.style.backgroundColor){m=p.style.backgroundColor}}return false});if(H=u.get("fontselect")){H.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==w})}if(H=u.get("fontsizeselect")){if(A.theme_advanced_runtime_fontsize&&!l&&!x){l=o.dom.getStyle(E,"fontSize",true)}H.select(function(n){if(n.fontSize&&n.fontSize===l){return true}if(n["class"]&&n["class"]===x){return true}})}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_path&&A.theme_advanced_statusbar_location){D=i.get(o.id+"_path")||i.add(o.id+"_path_row","span",{id:o.id+"_path"});if(z.statusKeyboardNavigation){z.statusKeyboardNavigation.destroy();z.statusKeyboardNavigation=null}i.setHTML(D,"");q(function(I){var p=I.nodeName.toLowerCase(),s,v,t="";if(I.nodeType!=1||p==="br"||I.getAttribute("data-mce-bogus")||i.hasClass(I,"mceItemHidden")||i.hasClass(I,"mceItemRemoved")){return}if(h.isIE&&I.scopeName!=="HTML"){p=I.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(y=i.getAttrib(I,"src")){t+="src: "+y+" "}break;case"a":if(y=i.getAttrib(I,"name")){t+="name: "+y+" ";p+="#"+y}if(y=i.getAttrib(I,"href")){t+="href: "+y+" "}break;case"font":if(y=i.getAttrib(I,"face")){t+="font: "+y+" "}if(y=i.getAttrib(I,"size")){t+="size: "+y+" "}if(y=i.getAttrib(I,"color")){t+="color: "+y+" "}break;case"span":if(y=i.getAttrib(I,"style")){t+="style: "+y+" "}break}if(y=i.getAttrib(I,"id")){t+="id: "+y+" "}if(y=I.className){y=y.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(y){t+="class: "+y+" ";if(i.isBlock(I)||p=="img"||p=="span"){p+="."+y}}}p=p.replace(/(html:)/g,"");p={name:p,node:I,title:t};z.onResolveName.dispatch(z,p);t=p.title;p=p.name;v=i.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(G++)},p);if(D.hasChildNodes()){D.insertBefore(i.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),D.firstChild);D.insertBefore(v,D.firstChild)}else{D.appendChild(v)}},o.getBody());if(i.select("a",D).length>0){z.statusKeyboardNavigation=new h.ui.KeyboardNavigation({root:o.id+"_path_row",items:i.select("a",D),excludeFromTabOrder:true,onCancel:function(){o.focus()}},i)}}},_sel:function(j){this.editor.execCommand("mceSelectNodeDepth",false,j)},_mceInsertAnchor:function(l,k){var j=this.editor;j.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(j.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(j.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var j=this.editor;j.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(j.getLang("advanced.charmap_delta_width",0)),height:265+parseInt(j.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var j=this.editor;j.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var j=this.editor;j.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(l,k){var j=this.editor;k=k||{};j.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(j.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(j.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:k.color,func:k.func,theme_url:this.url})},_mceCodeEditor:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(j.getParam("theme_advanced_source_editor_width",720)),height:parseInt(j.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(k,l){var j=this.editor;if(j.dom.getAttrib(j.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}j.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(j.getLang("advanced.image_delta_width",0)),height:275+parseInt(j.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(j.getLang("advanced.link_delta_width",0)),height:200+parseInt(j.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var j=this.editor;j.windowManager.confirm("advanced.newdocument",function(k){if(k){j.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var j=this;this._mceColorPicker(0,{color:j.fgColor,func:function(k){j.fgColor=k;j.editor.execCommand("ForeColor",false,k)}})},_mceBackColor:function(){var j=this;this._mceColorPicker(0,{color:j.bgColor,func:function(k){j.bgColor=k;j.editor.execCommand("HiliteColor",false,k)}})},_ufirst:function(j){return j.substring(0,1).toUpperCase()+j.substring(1)}});h.ThemeManager.add("advanced",h.themes.AdvancedTheme)}(tinymce)); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js old mode 100755 new mode 100644 index 279ca359c..d94c8e499 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js @@ -11,6 +11,85 @@ (function(tinymce) { var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode; + // Generates a preview for a format + function getPreviewCss(ed, fmt) { + var previewElm, dom = ed.dom, previewCss = '', parentFontSize, previewStylesName; + + previewStyles = ed.settings.preview_styles; + + // No preview forced + if (previewStyles === false) + return ''; + + // Default preview + if (!previewStyles) + previewStyles = 'font-family font-size font-weight text-decoration text-transform color background-color'; + + // Removes any variables since these can't be previewed + function removeVars(val) { + return val.replace(/%(\w+)/g, ''); + }; + + // Create block/inline element to use for preview + name = fmt.block || fmt.inline || 'span'; + previewElm = dom.create(name); + + // Add format styles to preview element + each(fmt.styles, function(value, name) { + value = removeVars(value); + + if (value) + dom.setStyle(previewElm, name, value); + }); + + // Add attributes to preview element + each(fmt.attributes, function(value, name) { + value = removeVars(value); + + if (value) + dom.setAttrib(previewElm, name, value); + }); + + // Add classes to preview element + each(fmt.classes, function(value) { + value = removeVars(value); + + if (!dom.hasClass(previewElm, value)) + dom.addClass(previewElm, value); + }); + + // Add the previewElm outside the visual area + dom.setStyles(previewElm, {position: 'absolute', left: -0xFFFF}); + ed.getBody().appendChild(previewElm); + + // Get parent container font size so we can compute px values out of em/% for older IE:s + parentFontSize = dom.getStyle(ed.getBody(), 'fontSize', true); + parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0; + + each(previewStyles.split(' '), function(name) { + var value = dom.getStyle(previewElm, name, true); + + // Old IE won't calculate the font size so we need to do that manually + if (name == 'font-size') { + if (/em|%$/.test(value)) { + if (parentFontSize === 0) { + return; + } + + // Convert font size from em/% to px + value = parseFloat(value, 10) / (/%$/.test(value) ? 100 : 1); + value = (value * parentFontSize) + 'px'; + } + } + + previewCss += name + ':' + value + ';'; + }); + + dom.remove(previewElm); + + return previewCss; + }; + // Tell it to load theme specific language pack(s) tinymce.ThemeManager.requireLangPack('advanced'); @@ -66,6 +145,9 @@ t.url = url; t.onResolveName = new tinymce.util.Dispatcher(this); + ed.forcedHighContrastMode = ed.settings.detect_highcontrast && t._isHighContrast(); + ed.settings.skin = ed.forcedHighContrastMode ? 'highcontrast' : ed.settings.skin; + // Default settings t.settings = s = extend({ theme_advanced_path : true, @@ -81,6 +163,8 @@ theme_advanced_resize_horizontal : 1, theme_advanced_resizing_use_cookie : 1, theme_advanced_font_sizes : "1,2,3,4,5,6,7", + theme_advanced_font_selector : "span", + theme_advanced_show_current_color: 0, readonly : ed.settings.readonly }, ed.settings); @@ -119,13 +203,19 @@ if (s.theme_advanced_statusbar_location == 'none') s.theme_advanced_statusbar_location = 0; + if (ed.settings.content_css !== false) + ed.contentCSS.push(ed.baseURI.toAbsolute(url + "/skins/" + ed.settings.skin + "/content.css")); + // Init editor ed.onInit.add(function() { - if (!ed.settings.readonly) + if (!ed.settings.readonly) { ed.onNodeChange.add(t._nodeChanged, t); - - if (ed.settings.content_css !== false) - ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css")); + ed.onKeyUp.add(t._updateUndoStatus, t); + ed.onMouseUp.add(t._updateUndoStatus, t); + ed.dom.bind(ed.dom.getRoot(), 'dragend', function() { + t._updateUndoStatus(ed); + }); + } }); ed.onSetProgressState.add(function(ed, b, ti) { @@ -153,6 +243,15 @@ DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css"); }, + _isHighContrast : function() { + var actualColor, div = DOM.add(DOM.getRoot(), 'div', {'style': 'background-color: rgb(171,239,86);'}); + + actualColor = (DOM.getStyle(div, 'background-color', true) + '').toLowerCase().replace(/ /g, ''); + DOM.remove(div); + + return actualColor != 'rgb(171,239,86)' && actualColor != '#abef56'; + }, + createControl : function(n, cf) { var cd, c; @@ -199,15 +298,21 @@ if (ctrl.getLength() == 0) { each(ed.dom.getClasses(), function(o, idx) { - var name = 'style_' + idx; + var name = 'style_' + idx, fmt; - ed.formatter.register(name, { + fmt = { inline : 'span', attributes : {'class' : o['class']}, selector : '*' - }); + }; + + ed.formatter.register(name, fmt); - ctrl.add(o['class'], name); + ctrl.add(o['class'], name, { + style: function() { + return getPreviewCss(ed, fmt); + } + }); }); } }, @@ -219,7 +324,7 @@ ctrl = ctrlMan.createListBox('styleselect', { title : 'advanced.style_select', onselect : function(name) { - var matches, formatNames = []; + var matches, formatNames = [], removedFormat; each(ctrl.items, function(item) { formatNames.push(item.value); @@ -228,11 +333,18 @@ ed.focus(); ed.undoManager.add(); - // Toggle off the current format + // Toggle off the current format(s) matches = ed.formatter.matchAll(formatNames); - if (matches[0] == name) - ed.formatter.remove(name); - else + tinymce.each(matches, function(match) { + if (!name || match == name) { + if (match) + ed.formatter.remove(match); + + removedFormat = true; + } + }); + + if (!removedFormat) ed.formatter.apply(name); ed.undoManager.add(); @@ -243,7 +355,7 @@ }); // Handle specified format - ed.onInit.add(function() { + ed.onPreInit.add(function() { var counter = 0, formats = ed.getParam('style_formats'); if (formats) { @@ -255,24 +367,32 @@ if (keys > 1) { name = fmt.name = fmt.name || 'style_' + (counter++); ed.formatter.register(name, fmt); - ctrl.add(fmt.title, name); + ctrl.add(fmt.title, name, { + style: function() { + return getPreviewCss(ed, fmt); + } + }); } else ctrl.add(fmt.title); }); } else { each(ed.getParam('theme_advanced_styles', '', 'hash'), function(val, key) { - var name; + var name, fmt; if (val) { name = 'style_' + (counter++); - - ed.formatter.register(name, { + fmt = { inline : 'span', classes : val, selector : '*' - }); + }; - ctrl.add(t.editor.translate(key), name); + ed.formatter.register(name, fmt); + ctrl.add(t.editor.translate(key), name, { + style: function() { + return getPreviewCss(ed, fmt); + } + }); } }); } @@ -300,6 +420,13 @@ c = ed.controlManager.createListBox('fontselect', { title : 'advanced.fontdefault', onselect : function(v) { + var cur = c.items[c.selectedIndex]; + + if (!v && cur) { + ed.execCommand('FontName', false, cur.value); + return; + } + ed.execCommand('FontName', false, v); // Fake selection, execCommand will fire a nodeChange and update the selection @@ -307,6 +434,10 @@ return v == sv; }); + if (cur && cur.value == v) { + c.select(null); + } + return false; // No auto select } }); @@ -324,6 +455,22 @@ var t = this, ed = t.editor, c, i = 0, cl = []; c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) { + var cur = c.items[c.selectedIndex]; + + if (!v && cur) { + cur = cur.value; + + if (cur['class']) { + ed.formatter.toggle('fontsize_class', {value : cur['class']}); + ed.undoManager.add(); + ed.nodeChanged(); + } else { + ed.execCommand('FontSize', false, cur.fontSize); + } + + return; + } + if (v['class']) { ed.focus(); ed.undoManager.add(); @@ -338,6 +485,10 @@ return v == sv; }); + if (cur && (cur.value.fontSize == v.fontSize || cur.value['class'] && cur.value['class'] == v['class'])) { + c.select(null); + } + return false; // No auto select }}); @@ -374,10 +525,16 @@ samp : 'advanced.samp' }, t = this; - c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'}); + c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', onselect : function(v) { + t.editor.execCommand('FormatBlock', false, v); + return false; + }}); + if (c) { each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) { - c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v}); + c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v, style: function() { + return getPreviewCss(t.editor, {block: v}); + }}); }); } @@ -445,12 +602,19 @@ renderUI : function(o) { var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl; - n = p = DOM.create('span', {id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')}); + if (ed.settings) { + ed.settings.aria_label = s.aria_label + ed.getLang('advanced.help_shortcut'); + } + + // TODO: ACC Should have an aria-describedby attribute which is user-configurable to describe what this field is actually for. + // Maybe actually inherit it from the original textara? + n = p = DOM.create('span', {role : 'application', 'aria-labelledby' : ed.id + '_voice', id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')}); + DOM.add(n, 'span', {'class': 'mceVoiceLabel', 'style': 'display:none;', id: ed.id + '_voice'}, s.aria_label); if (!DOM.boxModel) n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'}); - n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0}); + n = sc = DOM.add(n, 'table', {role : "presentation", id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0}); n = tb = DOM.add(n, 'tbody'); switch ((s.theme_advanced_layout_manager || '').toLowerCase()) { @@ -469,7 +633,7 @@ n = o.targetNode; // Add classes to first and last TRs - nl = DOM.stdMode ? sc.getElementsByTagName('tr') : sc.rows; // Quick fix for IE 8 + nl = sc.rows; DOM.addClass(nl[0], 'mceFirst'); DOM.addClass(nl[nl.length - 1], 'mceLast'); @@ -489,8 +653,7 @@ if (e.nodeName == 'A') { t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1')); - - return Event.cancel(e); + return false; } }); /* @@ -525,6 +688,28 @@ t.deltaHeight = o.deltaHeight; o.targetNode = null; + ed.onKeyDown.add(function(ed, evt) { + var DOM_VK_F10 = 121, DOM_VK_F11 = 122; + + if (evt.altKey) { + if (evt.keyCode === DOM_VK_F10) { + // Make sure focus is given to toolbar in Safari. + // We can't do this in IE as it prevents giving focus to toolbar when editor is in a frame + if (tinymce.isWebKit) { + window.focus(); + } + t.toolbarGroup.focus(); + return Event.cancel(evt); + } else if (evt.keyCode === DOM_VK_F11) { + DOM.get(ed.id + '_path_row').focus(); + return Event.cancel(evt); + } + } + }); + + // alt+0 is the UK recommended shortcut for accessing the list of access controls. + ed.addShortcut('alt+0', '', 'mceShortcuts', t); + return { iframeContainer : ic, editorContainer : ed.id + '_parent', @@ -543,12 +728,12 @@ }, resizeBy : function(dw, dh) { - var e = DOM.get(this.editor.id + '_tbl'); + var e = DOM.get(this.editor.id + '_ifr'); this.resizeTo(e.clientWidth + dw, e.clientHeight + dh); }, - resizeTo : function(w, h) { + resizeTo : function(w, h, store) { var ed = this.editor, s = this.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'); // Boundery fix box @@ -566,8 +751,18 @@ DOM.setStyle(ifr, 'width', w); // Make sure that the size is never smaller than the over all ui - if (w < e.clientWidth) + if (w < e.clientWidth) { + w = e.clientWidth; DOM.setStyle(ifr, 'width', e.clientWidth); + } + } + + // Store away the size + if (store && s.theme_advanced_resizing_use_cookie) { + Cookie.setHash("TinyMCE_" + ed.id + "_size", { + cw : w, + ch : h + }); } }, @@ -662,7 +857,7 @@ each(explode(s.theme_advanced_containers || ''), function(c, i) { var v = s['theme_advanced_container_' + c] || ''; - switch (v.toLowerCase()) { + switch (c.toLowerCase()) { case 'mceeditor': n = DOM.add(tb, 'tr'); n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'}); @@ -730,17 +925,19 @@ }, _addToolbars : function(c, o) { - var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a; + var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a, toolbarGroup; - a = s.theme_advanced_toolbar_align.toLowerCase(); - a = 'mce' + t._ufirst(a); + toolbarGroup = cf.createToolbarGroup('toolbargroup', { + 'name': ed.getLang('advanced.toolbar'), + 'tab_focus_toolbar':ed.getParam('theme_advanced_tab_focus_toolbar') + }); - n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a}); + t.toolbarGroup = toolbarGroup; - if (!ed.getParam('accessibility_focus')) - h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '')); + a = s.theme_advanced_toolbar_align.toLowerCase(); + a = 'mce' + t._ufirst(a); - h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '')); + n = DOM.add(DOM.add(c, 'tr', {role: 'presentation'}), 'td', {'class' : 'mceToolbar ' + a, "role":"presentation"}); // Create toolbar and add the controls for (i=1; (v = s['theme_advanced_buttons' + i]); i++) { @@ -753,13 +950,11 @@ v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v; t._addControls(v, tb); - - //n.appendChild(n = tb.render()); - h.push(tb.renderHTML()); + toolbarGroup.add(tb); o.deltaHeight -= s.theme_advanced_row_height; } - + h.push(toolbarGroup.renderHTML()); h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '')); DOM.setHTML(n, h.join('')); }, @@ -768,12 +963,18 @@ var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td; n = DOM.add(tb, 'tr'); - n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'}); - n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : ' '); - DOM.add(n, 'a', {href : '#', accesskey : 'x'}); + n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'}); + n = DOM.add(n, 'div', {id : ed.id + '_path_row', 'role': 'group', 'aria-labelledby': ed.id + '_path_voice'}); + if (s.theme_advanced_path) { + DOM.add(n, 'span', {id: ed.id + '_path_voice'}, ed.translate('advanced.path')); + DOM.add(n, 'span', {}, ': '); + } else { + DOM.add(n, 'span', {}, ' '); + } + if (s.theme_advanced_resizing) { - DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'}); + DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize', tabIndex:"-1"}); if (s.theme_advanced_resizing_use_cookie) { ed.onPostRender.add(function() { @@ -787,12 +988,18 @@ } ed.onPostRender.add(function() { + Event.add(ed.id + '_resize', 'click', function(e) { + e.preventDefault(); + }); + Event.add(ed.id + '_resize', 'mousedown', function(e) { var mouseMoveHandler1, mouseMoveHandler2, mouseUpHandler1, mouseUpHandler2, startX, startY, startWidth, startHeight, width, height, ifrElm; function resizeOnMove(e) { + e.preventDefault(); + width = startWidth + (e.screenX - startX); height = startHeight + (e.screenY - startY); @@ -806,13 +1013,9 @@ Event.remove(DOM.doc, 'mouseup', mouseUpHandler1); Event.remove(ed.getDoc(), 'mouseup', mouseUpHandler2); - // Store away the size - if (s.theme_advanced_resizing_use_cookie) { - Cookie.setHash("TinyMCE_" + ed.id + "_size", { - cw : width, - ch : height - }); - } + width = startWidth + (e.screenX - startX); + height = startHeight + (e.screenY - startY); + t.resizeTo(width, height, true); }; e.preventDefault(); @@ -837,8 +1040,15 @@ n = tb = null; }, + _updateUndoStatus : function(ed) { + var cm = ed.controlManager, um = ed.undoManager; + + cm.setDisabled('undo', !um.hasUndo() && !um.typing); + cm.setDisabled('redo', !um.hasRedo()); + }, + _nodeChanged : function(ed, cm, n, co, ob) { - var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn, formatNames, matches; + var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn, fc, bc, formatNames, matches; tinymce.each(t.stateControls, function(c) { cm.setActive(c, ed.queryCommandState(t.controls[c][1])); @@ -860,8 +1070,7 @@ }; cm.setActive('visualaid', ed.hasVisual); - cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing); - cm.setDisabled('redo', !ed.undoManager.hasRedo()); + t._updateUndoStatus(ed); cm.setDisabled('outdent', !ed.queryCommandState('Outdent')); p = getParent('A'); @@ -878,12 +1087,12 @@ } if (c = cm.get('anchor')) { - c.setActive(!!p && p.name); + c.setActive(!co && !!p && p.name); } p = getParent('IMG'); if (c = cm.get('image')) - c.setActive(!!p && n.className.indexOf('mceItem') == -1); + c.setActive(!co && !!p && n.className.indexOf('mceItem') == -1); if (c = cm.get('styleselect')) { t._importClasses(); @@ -895,6 +1104,11 @@ matches = ed.formatter.matchAll(formatNames); c.select(matches[0]); + tinymce.each(matches, function(match, index) { + if (index > 0) { + c.mark(match); + } + }); } if (c = cm.get('formatselect')) { @@ -909,12 +1123,20 @@ if (n.nodeName === 'SPAN') { if (!cl && n.className) cl = n.className; + } + if (ed.dom.is(n, s.theme_advanced_font_selector)) { if (!fz && n.style.fontSize) fz = n.style.fontSize; if (!fn && n.style.fontFamily) fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase(); + + if (!fc && n.style.color) + fc = n.style.color; + + if (!bc && n.style.backgroundColor) + bc = n.style.backgroundColor; } return false; @@ -940,25 +1162,53 @@ return true; }); } + + if (s.theme_advanced_show_current_color) { + function updateColor(controlId, color) { + if (c = cm.get(controlId)) { + if (!color) + color = c.settings.default_color; + if (color !== c.value) { + c.displayColor(color); + } + } + } + updateColor('forecolor', fc); + updateColor('backcolor', bc); + } + + if (s.theme_advanced_show_current_color) { + function updateColor(controlId, color) { + if (c = cm.get(controlId)) { + if (!color) + color = c.settings.default_color; + if (color !== c.value) { + c.displayColor(color); + } + } + }; + + updateColor('forecolor', fc); + updateColor('backcolor', bc); + } if (s.theme_advanced_path && s.theme_advanced_statusbar_location) { p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'}); + + if (t.statusKeyboardNavigation) { + t.statusKeyboardNavigation.destroy(); + t.statusKeyboardNavigation = null; + } + DOM.setHTML(p, ''); getParent(function(n) { var na = n.nodeName.toLowerCase(), u, pi, ti = ''; - /*if (n.getAttribute('_mce_bogus')) - return; -*/ - // Ignore non element and hidden elements - if (n.nodeType != 1 || n.nodeName === 'BR' || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved'))) + // Ignore non element and bogus/hidden elements + if (n.nodeType != 1 || na === 'br' || n.getAttribute('data-mce-bogus') || DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved')) return; - // Fake name - if (v = DOM.getAttrib(n, 'mce_name')) - na = v; - // Handle prefix if (tinymce.isIE && n.scopeName !== 'HTML') na = n.scopeName + ':' + na; @@ -1033,14 +1283,25 @@ na = na.name; //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');"; - pi = DOM.create('a', {'href' : "javascript:;", onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na); + pi = DOM.create('a', {'href' : "javascript:;", role: 'button', onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na); if (p.hasChildNodes()) { - p.insertBefore(DOM.doc.createTextNode(' \u00bb '), p.firstChild); + p.insertBefore(DOM.create('span', {'aria-hidden': 'true'}, '\u00a0\u00bb '), p.firstChild); p.insertBefore(pi, p.firstChild); } else p.appendChild(pi); }, ed.getBody()); + + if (DOM.select('a', p).length > 0) { + t.statusKeyboardNavigation = new tinymce.ui.KeyboardNavigation({ + root: ed.id + "_path_row", + items: DOM.select('a', p), + excludeFromTabOrder: true, + onCancel: function() { + ed.focus(); + } + }, DOM); + } } }, @@ -1054,7 +1315,7 @@ var ed = this.editor; ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/anchor.htm', + url : this.url + '/anchor.htm', width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)), height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)), inline : true @@ -1067,9 +1328,9 @@ var ed = this.editor; ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/charmap.htm', + url : this.url + '/charmap.htm', width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)), - height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)), + height : 265 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)), inline : true }, { theme_url : this.url @@ -1080,7 +1341,7 @@ var ed = this.editor; ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/about.htm', + url : this.url + '/about.htm', width : 480, height : 380, inline : true @@ -1089,13 +1350,25 @@ }); }, + _mceShortcuts : function() { + var ed = this.editor; + ed.windowManager.open({ + url: this.url + '/shortcuts.htm', + width: 480, + height: 380, + inline: true + }, { + theme_url: this.url + }); + }, + _mceColorPicker : function(u, v) { var ed = this.editor; v = v || {}; ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/color_picker.htm', + url : this.url + '/color_picker.htm', width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)), height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)), close_previous : false, @@ -1111,7 +1384,7 @@ var ed = this.editor; ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/source_editor.htm', + url : this.url + '/source_editor.htm', width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)), height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)), inline : true, @@ -1126,11 +1399,11 @@ var ed = this.editor; // Internal image object like a flash placeholder - if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1) + if (ed.dom.getAttrib(ed.selection.getNode(), 'class', '').indexOf('mceItem') != -1) return; ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/image.htm', + url : this.url + '/image.htm', width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)), height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)), inline : true @@ -1143,7 +1416,7 @@ var ed = this.editor; ed.windowManager.open({ - url : tinymce.baseURL + '/themes/advanced/link.htm', + url : this.url + '/link.htm', width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)), height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)), inline : true @@ -1191,4 +1464,4 @@ }); tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme); -}(tinymce)); \ No newline at end of file +}(tinymce)); diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/image.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/image.htm old mode 100755 new mode 100644 index f30d67064..b8ba729f6 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/image.htm +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/image.htm @@ -17,57 +17,57 @@
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
     
    - x -
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
     
    + x +
    diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg old mode 100755 new mode 100644 index b4c542d10..b1a377aba Binary files a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg and b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif new file mode 100644 index 000000000..dec3f7c70 Binary files /dev/null and b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif new file mode 100644 index 000000000..410c7ad08 Binary files /dev/null and b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif new file mode 100644 index 000000000..acdf4085f Binary files /dev/null and b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif new file mode 100644 index 000000000..8f10e7aa6 Binary files /dev/null and b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif new file mode 100644 index 000000000..fdfe0b9ac Binary files /dev/null and b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif new file mode 100644 index 000000000..9314d0447 Binary files /dev/null and b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif new file mode 100644 index 000000000..388486517 Binary files /dev/null and b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif new file mode 100644 index 000000000..357010407 Binary files /dev/null and b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gif new file mode 100644 index 000000000..ab50f2d88 Binary files /dev/null and b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/windowsmedia.gif differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js old mode 100755 new mode 100644 index 5cee9ed86..5b3584576 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js @@ -66,6 +66,7 @@ function insertHelpIFrame() { html = ''; document.getElementById('iframecontainer').innerHTML = html; document.getElementById('help_tab').style.display = 'block'; + document.getElementById('help_tab').setAttribute("aria-hidden", "false"); } } diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js old mode 100755 new mode 100644 index 7fe781055..2940db359 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js @@ -19,16 +19,23 @@ var AnchorDialog = { update : function() { var ed = this.editor, elm, name = document.forms[0].anchorName.value; + if (!name || !/^[a-z][a-z0-9\-\_:\.]*$/i.test(name)) { + tinyMCEPopup.alert('advanced_dlg.anchor_invalid'); + return; + } + tinyMCEPopup.restoreSelection(); if (this.action != 'update') ed.selection.collapse(1); elm = ed.dom.getParent(ed.selection.getNode(), 'A'); - if (elm) + if (elm) { + elm.setAttribute('name', name); elm.name = name; - else - ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, '')); + } else + // create with zero-sized nbsp so that in Webkit where anchor is on last line by itself caret cannot be placed after it + ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : name, 'class' : 'mceItemAnchor'}, '\uFEFF')); tinyMCEPopup.close(); } diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js old mode 100755 new mode 100644 index 8c5aea172..bb1869558 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js @@ -173,7 +173,7 @@ var charmap = [ ['ý', 'ý', true, 'y - acute'], ['þ', 'þ', true, 'thorn'], ['ÿ', 'ÿ', true, 'y - diaeresis'], - ['Α', 'Α', true, 'Alpha'], + ['Α', 'Α', true, 'Alpha'], ['Β', 'Β', true, 'Beta'], ['Γ', 'Γ', true, 'Gamma'], ['Δ', 'Δ', true, 'Delta'], @@ -258,8 +258,8 @@ var charmap = [ ['⌋', '⌋', false,'right floor'], ['⟨', '〈', false,'left-pointing angle bracket'], ['⟩', '〉', false,'right-pointing angle bracket'], - ['◊', '◊', true,'lozenge'], - ['♠', '♠', false,'black spade suit'], + ['◊', '◊', true, 'lozenge'], + ['♠', '♠', true, 'black spade suit'], ['♣', '♣', true, 'black club suit'], ['♥', '♥', true, 'black heart suit'], ['♦', '♦', true, 'black diamond suit'], @@ -275,19 +275,46 @@ var charmap = [ tinyMCEPopup.onInit.add(function() { tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML()); + addKeyboardNavigation(); }); +function addKeyboardNavigation(){ + var tableElm, cells, settings; + + cells = tinyMCEPopup.dom.select("a.charmaplink", "charmapgroup"); + + settings ={ + root: "charmapgroup", + items: cells + }; + cells[0].tabindex=0; + tinyMCEPopup.dom.addClass(cells[0], "mceFocus"); + if (tinymce.isGecko) { + cells[0].focus(); + } else { + setTimeout(function(){ + cells[0].focus(); + }, 100); + } + tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom); +} + function renderCharMapHTML() { var charsPerRow = 20, tdWidth=20, tdHeight=20, i; - var html = ''; + var html = '
    '+ + '
    '; var cols=-1; for (i=0; i' - + '' + + '' + charmap[i][1] + ''; if ((cols+1) % charsPerRow == 0) @@ -301,7 +328,8 @@ function renderCharMapHTML() { html += ''; } - html += '
     
    '; + html += '
    '; + html = html.replace(/
    ' - + ''; - - for (i=0; i' - + '' - + ''; - if ((i+1) % 18 == 0) - h += ''; - } - - h += '
    '; - - el.innerHTML = h; - el.className = 'generated'; -} - -function generateNamedColors() { - var el = document.getElementById('namedcolors'), h = '', n, v, i = 0; - - if (el.className == 'generated') - return; - - for (n in named) { - v = named[n]; - h += '' - } - - el.innerHTML = h; - el.className = 'generated'; -} - -function dechex(n) { - return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16); -} - -function computeColor(e) { - var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB; - - x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0); - y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0); - - partWidth = document.getElementById('colors').width / 6; - partDetail = detail / 2; - imHeight = document.getElementById('colors').height; - - r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255; - g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth); - b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth); - - coef = (imHeight - y) / imHeight; - r = 128 + (r - 128) * coef; - g = 128 + (g - 128) * coef; - b = 128 + (b - 128) * coef; - - changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b)); - updateLight(r, g, b); -} - -function updateLight(r, g, b) { - var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color; - - for (i=0; i=0) && (i 1 ? value : '0' + value; // Padd with leading zero + }; + + color = tinymce.trim(color); + color = color.replace(/^[#]/, '').toLowerCase(); // remove leading '#' + color = namedLookup[color] || color; + + matches = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/.exec(color); + + if (matches) { + red = toInt(matches[1]); + green = toInt(matches[2]); + blue = toInt(matches[3]); + } else { + matches = /^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/.exec(color); + + if (matches) { + red = toInt(matches[1], 16); + green = toInt(matches[2], 16); + blue = toInt(matches[3], 16); + } else { + matches = /^([0-9a-f])([0-9a-f])([0-9a-f])$/.exec(color); + + if (matches) { + red = toInt(matches[1] + matches[1], 16); + green = toInt(matches[2] + matches[2], 16); + blue = toInt(matches[3] + matches[3], 16); + } else { + return ''; + } + } + } + + return '#' + hex(red) + hex(green) + hex(blue); +} + +function insertAction() { + var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func'); + + var hexColor = toHexColor(color); + + if (hexColor === '') { + var text = tinyMCEPopup.editor.getLang('advanced_dlg.invalid_color_value'); + tinyMCEPopup.alert(text + ': ' + color); + } + else { + tinyMCEPopup.restoreSelection(); + + if (f) + f(hexColor); + + tinyMCEPopup.close(); + } +} + +function showColor(color, name) { + if (name) + document.getElementById("colorname").innerHTML = name; + + document.getElementById("preview").style.backgroundColor = color; + document.getElementById("color").value = color.toUpperCase(); +} + +function convertRGBToHex(col) { + var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi"); + + if (!col) + return col; + + var rgb = col.replace(re, "$1,$2,$3").split(','); + if (rgb.length == 3) { + r = parseInt(rgb[0]).toString(16); + g = parseInt(rgb[1]).toString(16); + b = parseInt(rgb[2]).toString(16); + + r = r.length == 1 ? '0' + r : r; + g = g.length == 1 ? '0' + g : g; + b = b.length == 1 ? '0' + b : b; + + return "#" + r + g + b; + } + + return col; +} + +function convertHexToRGB(col) { + if (col.indexOf('#') != -1) { + col = col.replace(new RegExp('[^0-9A-F]', 'gi'), ''); + + r = parseInt(col.substring(0, 2), 16); + g = parseInt(col.substring(2, 4), 16); + b = parseInt(col.substring(4, 6), 16); + + return {r : r, g : g, b : b}; + } + + return null; +} + +function generatePicker() { + var el = document.getElementById('light'), h = '', i; + + for (i = 0; i < detail; i++){ + h += '
    '; + } + + el.innerHTML = h; +} + +function generateWebColors() { + var el = document.getElementById('webcolors'), h = '', i; + + if (el.className == 'generated') + return; + + // TODO: VoiceOver doesn't seem to support legend as a label referenced by labelledby. + h += '
    ' + + ''; + + for (i=0; i' + + ''; + if (tinyMCEPopup.editor.forcedHighContrastMode) { + h += ''; + } + h += ''; + h += ''; + if ((i+1) % 18 == 0) + h += ''; + } + + h += '
    '; + + el.innerHTML = h; + el.className = 'generated'; + + paintCanvas(el); + enableKeyboardNavigation(el.firstChild); +} + +function paintCanvas(el) { + tinyMCEPopup.getWin().tinymce.each(tinyMCEPopup.dom.select('canvas.mceColorSwatch', el), function(canvas) { + var context; + if (canvas.getContext && (context = canvas.getContext("2d"))) { + context.fillStyle = canvas.getAttribute('data-color'); + context.fillRect(0, 0, 10, 10); + } + }); +} +function generateNamedColors() { + var el = document.getElementById('namedcolors'), h = '', n, v, i = 0; + + if (el.className == 'generated') + return; + + for (n in named) { + v = named[n]; + h += ''; + if (tinyMCEPopup.editor.forcedHighContrastMode) { + h += ''; + } + h += ''; + h += ''; + i++; + } + + el.innerHTML = h; + el.className = 'generated'; + + paintCanvas(el); + enableKeyboardNavigation(el); +} + +function enableKeyboardNavigation(el) { + tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', { + root: el, + items: tinyMCEPopup.dom.select('a', el) + }, tinyMCEPopup.dom); +} + +function dechex(n) { + return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16); +} + +function computeColor(e) { + var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB, pos = tinyMCEPopup.dom.getPos(e.target); + + x = e.offsetX ? e.offsetX : (e.target ? e.clientX - pos.x : 0); + y = e.offsetY ? e.offsetY : (e.target ? e.clientY - pos.y : 0); + + partWidth = document.getElementById('colors').width / 6; + partDetail = detail / 2; + imHeight = document.getElementById('colors').height; + + r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255; + g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth); + b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth); + + coef = (imHeight - y) / imHeight; + r = 128 + (r - 128) * coef; + g = 128 + (g - 128) * coef; + b = 128 + (b - 128) * coef; + + changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b)); + updateLight(r, g, b); +} + +function updateLight(r, g, b) { + var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color; + + for (i=0; i=0) && (i 0) { lst.options[lst.options.length] = new Option('', ''); @@ -77,7 +77,7 @@ var ImageDialog = { args.style = this.styleVal; tinymce.extend(args, { - src : f.src.value, + src : f.src.value.replace(/ /g, '%20'), alt : f.alt.value, width : f.width.value, height : f.height.value @@ -87,10 +87,16 @@ var ImageDialog = { if (el && el.nodeName == 'IMG') { ed.dom.setAttribs(el, args); + tinyMCEPopup.editor.execCommand('mceRepaint'); + tinyMCEPopup.editor.focus(); } else { - ed.execCommand('mceInsertContent', false, '', {skip_undo : 1}); - ed.dom.setAttribs('__mce_tmp', args); - ed.dom.setAttrib('__mce_tmp', 'id', ''); + tinymce.each(args, function(value, name) { + if (value === "") { + delete args[name]; + } + }); + + ed.execCommand('mceInsertContent', false, tinyMCEPopup.editor.dom.createHTML('img', args), {skip_undo : 1}); ed.undoManager.add(); } diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js old mode 100755 new mode 100644 index f67a5bc82..53ff409e7 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js @@ -31,7 +31,7 @@ var LinkDialog = { }, update : function() { - var f = document.forms[0], ed = tinyMCEPopup.editor, e, b; + var f = document.forms[0], ed = tinyMCEPopup.editor, e, b, href = f.href.value.replace(/ /g, '%20'); tinyMCEPopup.restoreSelection(); e = ed.dom.getParent(ed.selection.getNode(), 'A'); @@ -39,7 +39,6 @@ var LinkDialog = { // Remove element if there is no href if (!f.href.value) { if (e) { - tinyMCEPopup.execCommand("mceBeginUndoLevel"); b = ed.selection.getBookmark(); ed.dom.remove(e, 1); ed.selection.moveToBookmark(b); @@ -49,19 +48,17 @@ var LinkDialog = { } } - tinyMCEPopup.execCommand("mceBeginUndoLevel"); - // Create new anchor elements if (e == null) { ed.getDoc().execCommand("unlink", false, null); - tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1}); + tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1}); tinymce.each(ed.dom.select("a"), function(n) { if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') { e = n; ed.dom.setAttribs(e, { - href : f.href.value, + href : href, title : f.linktitle.value, target : f.target_list ? getSelectValue(f, "target_list") : null, 'class' : f.class_list ? getSelectValue(f, "class_list") : null @@ -70,7 +67,7 @@ var LinkDialog = { }); } else { ed.dom.setAttribs(e, { - href : f.href.value, + href : href, title : f.linktitle.value, target : f.target_list ? getSelectValue(f, "target_list") : null, 'class' : f.class_list ? getSelectValue(f, "class_list") : null diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js old mode 100755 new mode 100644 index 279328614..dd5e366fa --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js @@ -16,7 +16,7 @@ function onLoadInit() { document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true}); if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) { - setWrap('soft'); + turnWrapOn(); document.getElementById('wraped').checked = true; } @@ -37,26 +37,42 @@ function setWrap(val) { } } -function toggleWordWrap(elm) { - if (elm.checked) - setWrap('soft'); - else - setWrap('off'); +function setWhiteSpaceCss(value) { + var el = document.getElementById('htmlSource'); + tinymce.DOM.setStyle(el, 'white-space', value); } -var wHeight=0, wWidth=0, owHeight=0, owWidth=0; +function turnWrapOff() { + if (tinymce.isWebKit) { + setWhiteSpaceCss('pre'); + } else { + setWrap('off'); + } +} -function resizeInputs() { - var el = document.getElementById('htmlSource'); +function turnWrapOn() { + if (tinymce.isWebKit) { + setWhiteSpaceCss('pre-wrap'); + } else { + setWrap('soft'); + } +} - if (!tinymce.isIE) { - wHeight = self.innerHeight - 65; - wWidth = self.innerWidth - 16; +function toggleWordWrap(elm) { + if (elm.checked) { + turnWrapOn(); } else { - wHeight = document.body.clientHeight - 70; - wWidth = document.body.clientWidth - 16; + turnWrapOff(); } +} + +function resizeInputs() { + var vp = tinyMCEPopup.dom.getViewPort(window), el; - el.style.height = Math.abs(wHeight) + 'px'; - el.style.width = Math.abs(wWidth) + 'px'; + el = document.getElementById('htmlSource'); + + if (el) { + el.style.width = (vp.w - 20) + 'px'; + el.style.height = (vp.h - 65) + 'px'; + } } diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js old mode 100755 new mode 100644 index 502b00817..6e5848187 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js @@ -1,62 +1 @@ -tinyMCE.addI18n('en.advanced',{ -style_select:"Styles", -font_size:"Font size", -fontdefault:"Font family", -block:"Format", -paragraph:"Paragraph", -div:"Div", -address:"Address", -pre:"Preformatted", -h1:"Heading 1", -h2:"Heading 2", -h3:"Heading 3", -h4:"Heading 4", -h5:"Heading 5", -h6:"Heading 6", -blockquote:"Blockquote", -code:"Code", -samp:"Code sample", -dt:"Definition term ", -dd:"Definition description", -bold_desc:"Bold (Ctrl+B)", -italic_desc:"Italic (Ctrl+I)", -underline_desc:"Underline (Ctrl+U)", -striketrough_desc:"Strikethrough", -justifyleft_desc:"Align left", -justifycenter_desc:"Align center", -justifyright_desc:"Align right", -justifyfull_desc:"Align full", -bullist_desc:"Unordered list", -numlist_desc:"Ordered list", -outdent_desc:"Outdent", -indent_desc:"Indent", -undo_desc:"Undo (Ctrl+Z)", -redo_desc:"Redo (Ctrl+Y)", -link_desc:"Insert/edit link", -unlink_desc:"Unlink", -image_desc:"Insert/edit image", -cleanup_desc:"Cleanup messy code", -code_desc:"Edit BBcode Source", -sub_desc:"Subscript", -sup_desc:"Superscript", -hr_desc:"Insert horizontal ruler", -removeformat_desc:"Remove formatting", -custom1_desc:"Your custom description here", -forecolor_desc:"Select text color", -backcolor_desc:"Select background color", -charmap_desc:"Insert custom character", -visualaid_desc:"Toggle guidelines/invisible elements", -anchor_desc:"Insert/edit anchor", -cut_desc:"Cut", -copy_desc:"Copy", -paste_desc:"Paste", -image_props_desc:"Image properties", -newdocument_desc:"New document", -help_desc:"Help", -blockquote_desc:"Blockquote", -clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?", -path:"Path", -newdocument:"Are you sure you want clear all contents?", -toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X", -more_colors:"More colors" -}); \ No newline at end of file +tinyMCE.addI18n('en.advanced',{"underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)",dd:"Definition Description",dt:"Definition Term ",samp:"Code Sample",code:"Code",blockquote:"Block Quote",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Preformatted",address:"Address",div:"DIV",paragraph:"Paragraph",block:"Format",fontdefault:"Font Family","font_size":"Font Size","style_select":"Styles","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","more_colors":"More Colors...","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"Are you sure you want clear all contents?",path:"Path","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","blockquote_desc":"Block Quote","help_desc":"Help","newdocument_desc":"New Document","image_props_desc":"Image Properties","paste_desc":"Paste (Ctrl+V)","copy_desc":"Copy (Ctrl+C)","cut_desc":"Cut (Ctrl+X)","anchor_desc":"Insert/Edit Anchor","visualaid_desc":"show/Hide Guidelines/Invisible Elements","charmap_desc":"Insert Special Character","backcolor_desc":"Select Background Color","forecolor_desc":"Select Text Color","custom1_desc":"Your Custom Description Here","removeformat_desc":"Remove Formatting","hr_desc":"Insert Horizontal Line","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Edit HTML Source","cleanup_desc":"Cleanup Messy Code","image_desc":"Insert/Edit Image","unlink_desc":"Unlink","link_desc":"Insert/Edit Link","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","indent_desc":"Increase Indent","outdent_desc":"Decrease Indent","numlist_desc":"Insert/Remove Numbered List","bullist_desc":"Insert/Remove Bulleted List","justifyfull_desc":"Align Full","justifyright_desc":"Align Right","justifycenter_desc":"Align Center","justifyleft_desc":"Align Left","striketrough_desc":"Strikethrough","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js old mode 100755 new mode 100644 index ea5a6dae2..50cd87e3d --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js @@ -1,51 +1 @@ -tinyMCE.addI18n('en.advanced_dlg',{ -about_title:"About TinyMCE", -about_general:"About", -about_help:"Help", -about_license:"License", -about_plugins:"Plugins", -about_plugin:"Plugin", -about_author:"Author", -about_version:"Version", -about_loaded:"Loaded plugins", -anchor_title:"Insert/edit anchor", -anchor_name:"Anchor name", -code_title:"BBcode Source Editor", -code_wordwrap:"Word wrap", -colorpicker_title:"Select a color", -colorpicker_picker_tab:"Picker", -colorpicker_picker_title:"Color picker", -colorpicker_palette_tab:"Palette", -colorpicker_palette_title:"Palette colors", -colorpicker_named_tab:"Named", -colorpicker_named_title:"Named colors", -colorpicker_color:"Color:", -colorpicker_name:"Name:", -charmap_title:"Select custom character", -image_title:"Insert/edit image", -image_src:"Image URL", -image_alt:"Image description", -image_list:"Image list", -image_border:"Border", -image_dimensions:"Dimensions", -image_vspace:"Vertical space", -image_hspace:"Horizontal space", -image_align:"Alignment", -image_align_baseline:"Baseline", -image_align_top:"Top", -image_align_middle:"Middle", -image_align_bottom:"Bottom", -image_align_texttop:"Text top", -image_align_textbottom:"Text bottom", -image_align_left:"Left", -image_align_right:"Right", -link_title:"Insert/edit link", -link_url:"Link URL", -link_target:"Target", -link_target_same:"Open link in the same window", -link_target_blank:"Open link in a new window", -link_titlefield:"Title", -link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?", -link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?", -link_list:"Link list" -}); \ No newline at end of file +tinyMCE.addI18n('en.advanced_dlg', {"link_list":"Link List","link_is_external":"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?","link_is_email":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?","link_titlefield":"Title","link_target_blank":"Open Link in a New Window","link_target_same":"Open Link in the Same Window","link_target":"Target","link_url":"Link URL","link_title":"Insert/Edit Link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text Bottom","image_align_texttop":"Text Top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal Space","image_vspace":"Vertical Space","image_dimensions":"Dimensions","image_alt":"Image Description","image_list":"Image List","image_border":"Border","image_src":"Image URL","image_title":"Insert/Edit Image","charmap_title":"Select Special Character", "charmap_usage":"Use left and right arrows to navigate.","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named Colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette Colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color Picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a Color","code_wordwrap":"Word Wrap","code_title":"HTML Source Editor","anchor_name":"Anchor Name","anchor_title":"Insert/Edit Anchor","about_loaded":"Loaded Plugins","about_version":"Version","about_author":"Author","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"License","about_help":"Help","about_general":"About","about_title":"About TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage","invalid_color_value":"Invalid color value","":""}); diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/link.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/link.htm old mode 100755 new mode 100644 index 7565b9ae8..5d9dea9b8 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/link.htm +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/link.htm @@ -18,34 +18,33 @@
    - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
     
    + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
     
    diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm new file mode 100644 index 000000000..20ec2f5a3 --- /dev/null +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm @@ -0,0 +1,47 @@ + + + + {#advanced_dlg.accessibility_help} + + + + +

    {#advanced_dlg.accessibility_usage_title}

    +

    Toolbars

    +

    Press ALT-F10 to move focus to the toolbars. Navigate through the buttons using the arrow keys. + Press enter to activate a button and return focus to the editor. + Press escape to return focus to the editor without performing any actions.

    + +

    Status Bar

    +

    To access the editor status bar, press ALT-F11. Use the left and right arrow keys to navigate between elements in the path. + Press enter or space to select an element. Press escape to return focus to the editor without changing the selection.

    + +

    Context Menu

    +

    Press shift-F10 to activate the context menu. Use the up and down arrow keys to move between menu items. To open sub-menus press the right arrow key. + To close submenus press the left arrow key. Press escape to close the context menu.

    + +

    Keyboard Shortcuts

    + + + + + + + + + + + + + + + + + + + + + +
    KeystrokeFunction
    Control-BBold
    Control-IItalic
    Control-ZUndo
    Control-YRedo
    + + diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css old mode 100755 new mode 100644 index 444063a82..52a1d67e2 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css @@ -1,6 +1,7 @@ body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} body {background:#FFF;} body.mceForceColors {background:#FFF; color:#000;} +body.mceBrowserDefaults {background:transparent; color:inherit; font-size:inherit; font-family:inherit;} h1 {font-size: 2em} h2 {font-size: 1.5em} h3 {font-size: 1.17em} @@ -8,28 +9,17 @@ h4 {font-size: 1em} h5 {font-size: .83em} h6 {font-size: .75em} .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} -a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat 0 0;} +a.mceItemAnchor {display:inline-block; -webkit-user-select:all; -webkit-user-modify:read-only; -moz-user-select:all; -moz-user-modify:read-only; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat center center} +span.mceItemNbsp {background: #DDD} td.mceSelected, th.mceSelected {background-color:#3399ff !important} img {border:0;} -table {cursor:default} +table, img, hr, .mceItemAnchor {cursor:default} table td, table th {cursor:text} ins {border-bottom:1px solid green; text-decoration: none; color:green} del {color:red; text-decoration:line-through} cite {border-bottom:1px dashed blue} acronym {border-bottom:1px dotted #CCC; cursor:help} abbr {border-bottom:1px dashed #CCC; cursor:help} -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; -} - /* IE */ * html body { @@ -45,3 +35,17 @@ scrollbar-track-color:#F5F5F5; img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} font[face=mceinline] {font-family:inherit !important} +*[contentEditable]:focus {outline:0} + +.mceItemMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc} +.mceItemShockWave {background-image:url(../../img/shockwave.gif)} +.mceItemFlash {background-image:url(../../img/flash.gif)} +.mceItemQuickTime {background-image:url(../../img/quicktime.gif)} +.mceItemWindowsMedia {background-image:url(../../img/windowsmedia.gif)} +.mceItemRealMedia {background-image:url(../../img/realmedia.gif)} +.mceItemVideo {background-image:url(../../img/video.gif)} +.mceItemAudio {background-image:url(../../img/video.gif)} +.mceItemEmbeddedAudio {background-image:url(../../img/video.gif)} +.mceItemIframe {background-image:url(../../img/iframe.gif)} +.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;} +.mceHideBrInPre pre br {display: none} diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png old mode 100755 new mode 100644 index 7dd58418b..1e53560e0 Binary files a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png and b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif old mode 100755 new mode 100644 index 2eafd7954..d2f93671c Binary files a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif and b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif old mode 100755 new mode 100644 index ce4be6355..06812cb41 Binary files a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif and b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css new file mode 100644 index 000000000..fe09e2141 --- /dev/null +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css @@ -0,0 +1,25 @@ +body, td, pre { margin:8px;} +body.mceForceColors {background:#FFF; color:#000;} +h1 {font-size: 2em} +h2 {font-size: 1.5em} +h3 {font-size: 1.17em} +h4 {font-size: 1em} +h5 {font-size: .83em} +h6 {font-size: .75em} +.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} +a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;} +span.mceItemNbsp {background: #DDD} +td.mceSelected, th.mceSelected {background-color:#3399ff !important} +img {border:0;} +table, img, hr, .mceItemAnchor {cursor:default} +table td, table th {cursor:text} +ins {border-bottom:1px solid green; text-decoration: none; color:green} +del {color:red; text-decoration:line-through} +cite {border-bottom:1px dashed blue} +acronym {border-bottom:1px dotted #CCC; cursor:help} +abbr {border-bottom:1px dashed #CCC; cursor:help} + +img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} +font[face=mceinline] {font-family:inherit !important} +*[contentEditable]:focus {outline:0} +.mceHideBrInPre pre br {display: none} diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css new file mode 100644 index 000000000..b2ed097cd --- /dev/null +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css @@ -0,0 +1,105 @@ +/* Generic */ +body { +font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; +background:#F0F0EE; +color: black; +padding:0; +margin:8px 8px 0 8px; +} + +html {background:#F0F0EE; color:#000;} +td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} +textarea {resize:none;outline:none;} +a:link, a:visited {color:black;background-color:transparent;} +a:hover {color:#2B6FB6;background-color:transparent;} +.nowrap {white-space: nowrap} + +/* Forms */ +fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} +legend {color:#2B6FB6; font-weight:bold;} +label.msg {display:none;} +label.invalid {color:#EE0000; display:inline;background-color:transparent;} +input.invalid {border:1px solid #EE0000;background-color:transparent;} +input {background:#FFF; border:1px solid #CCC;color:black;} +input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} +input, select, textarea {border:1px solid #808080;} +input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} +input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} +.input_noborder {border:0;} + +/* Buttons */ +#insert, #cancel, input.button, .updateButton { +font-weight:bold; +width:94px; height:23px; +cursor:pointer; +padding-bottom:2px; +float:left; +} + +#cancel {float:right} + +/* Browse */ +a.pickcolor, a.browse {text-decoration:none} +a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} +.mceOldBoxModel a.browse span {width:22px; height:20px;} +a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} +a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} +a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} +.mceOldBoxModel a.pickcolor span {width:21px; height:17px;} +a.pickcolor:hover span {background-color:#B2BBD0;} +a.pickcolor:hover span.disabled {} + +/* Charmap */ +table.charmap {border:1px solid #AAA; text-align:center} +td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} +#charmap a {display:block; color:#000; text-decoration:none; border:0} +#charmap a:hover {background:#CCC;color:#2B6FB6} +#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} +#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} + +/* Source */ +.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} +.mceActionPanel {margin-top:5px;} + +/* Tabs classes */ +.tabs {width:100%; height:18px; line-height:normal;} +.tabs ul {margin:0; padding:0; list-style:none;} +.tabs li {float:left; border: 1px solid black; border-bottom:0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block; cursor:pointer;} +.tabs li.current {font-weight: bold; margin-right:2px;} +.tabs span {float:left; display:block; padding:0px 10px 0 0;} +.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} +.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} + +/* Panels */ +.panel_wrapper div.panel {display:none;} +.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} +.panel_wrapper {border:1px solid #919B9C; padding:10px; padding-top:5px; clear:both; background:white;} + +/* Columns */ +.column {float:left;} +.properties {width:100%;} +.properties .column1 {} +.properties .column2 {text-align:left;} + +/* Titles */ +h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} +h3 {font-size:14px;} +.title {font-size:12px; font-weight:bold; color:#2B6FB6;} + +/* Dialog specific */ +#link .panel_wrapper, #link div.current {height:125px;} +#image .panel_wrapper, #image div.current {height:200px;} +#plugintable thead {font-weight:bold; background:#DDD;} +#plugintable, #about #plugintable td {border:1px solid #919B9C;} +#plugintable {width:96%; margin-top:10px;} +#pluginscontainer {height:290px; overflow:auto;} +#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;} +#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} +#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} +#colorpicker #light div {overflow:hidden;} +#colorpicker #previewblock {float:right; padding-left:10px; height:20px;} +#colorpicker .panel_wrapper div.current {height:175px;} +#colorpicker #namedcolors {width:150px;} +#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} +#colorpicker #colornamecontainer {margin-top:5px;} diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css new file mode 100644 index 000000000..a2cfcc393 --- /dev/null +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css @@ -0,0 +1,102 @@ +/* Reset */ +.highcontrastSkin table, .highcontrastSkin tbody, .highcontrastSkin a, .highcontrastSkin img, .highcontrastSkin tr, .highcontrastSkin div, .highcontrastSkin td, .highcontrastSkin iframe, .highcontrastSkin span, .highcontrastSkin *, .highcontrastSkin .mceText {border:0; margin:0; padding:0; vertical-align:baseline; border-collapse:separate;} +.highcontrastSkin a:hover, .highcontrastSkin a:link, .highcontrastSkin a:visited, .highcontrastSkin a:active {text-decoration:none; font-weight:normal; cursor:default;} +.highcontrastSkin table td {vertical-align:middle} + +.highcontrastSkin .mceIconOnly {display: block !important;} + +/* External */ +.highcontrastSkin .mceExternalToolbar {position:absolute; border:1px solid; border-bottom:0; display:none; background-color: white;} +.highcontrastSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;} +.highcontrastSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px;} + +/* Layout */ +.highcontrastSkin table.mceLayout {border: 1px solid;} +.highcontrastSkin .mceIframeContainer {border-top:1px solid; border-bottom:1px solid} +.highcontrastSkin .mceStatusbar a:hover {text-decoration:underline} +.highcontrastSkin .mceStatusbar {display:block; line-height:1.5em; overflow:visible;} +.highcontrastSkin .mceStatusbar div {float:left} +.highcontrastSkin .mceStatusbar a.mceResize {display:block; float:right; width:20px; height:20px; cursor:se-resize; outline:0} + +.highcontrastSkin .mceToolbar td { display: inline-block; float: left;} +.highcontrastSkin .mceToolbar tr { display: block;} +.highcontrastSkin .mceToolbar table { display: block; } + +/* Button */ + +.highcontrastSkin .mceButton { display:block; margin: 2px; padding: 5px 10px;border: 1px solid; border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; -ms-border-radius: 3px; height: 2em;} +.highcontrastSkin .mceButton .mceVoiceLabel { height: 100%; vertical-align: center; line-height: 2em} +.highcontrastSkin .mceButtonDisabled .mceVoiceLabel { opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60);} +.highcontrastSkin .mceButtonActive, .highcontrastSkin .mceButton:focus, .highcontrastSkin .mceButton:active { border: 5px solid; padding: 1px 6px;-webkit-focus-ring-color:none;outline:none;} + +/* Separator */ +.highcontrastSkin .mceSeparator {display:block; width:16px; height:26px;} + +/* ListBox */ +.highcontrastSkin .mceListBox { display: block; margin:2px;-webkit-focus-ring-color:none;outline:none;} +.highcontrastSkin .mceListBox .mceText {padding: 5px 6px; line-height: 2em; width: 15ex; overflow: hidden;} +.highcontrastSkin .mceListBoxDisabled .mceText { opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60);} +.highcontrastSkin .mceListBox a.mceText { padding: 5px 10px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-right: 0; border-radius: 3px 0px 0px 3px; -moz-border-radius: 3px 0px 0px 3px; -webkit-border-radius: 3px 0px 0px 3px; -ms-border-radius: 3px 0px 0px 3px;} +.highcontrastSkin .mceListBox a.mceOpen { padding: 5px 4px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-left: 0; border-radius: 0px 3px 3px 0px; -moz-border-radius: 0px 3px 3px 0px; -webkit-border-radius: 0px 3px 3px 0px; -ms-border-radius: 0px 3px 3px 0px;} +.highcontrastSkin .mceListBox:focus a.mceText, .highcontrastSkin .mceListBox:active a.mceText { border-width: 5px; padding: 1px 10px 1px 6px;} +.highcontrastSkin .mceListBox:focus a.mceOpen, .highcontrastSkin .mceListBox:active a.mceOpen { border-width: 5px; padding: 1px 0px 1px 4px;} + +.highcontrastSkin .mceListBoxMenu {overflow-y:auto} + +/* SplitButton */ +.highcontrastSkin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} + +.highcontrastSkin .mceSplitButton { border-collapse: collapse; margin: 2px; height: 2em; line-height: 2em;-webkit-focus-ring-color:none;outline:none;} +.highcontrastSkin .mceSplitButton td { display: table-cell; float: none; margin: 0; padding: 0; height: 2em;} +.highcontrastSkin .mceSplitButton tr { display: table-row; } +.highcontrastSkin table.mceSplitButton { display: table; } +.highcontrastSkin .mceSplitButton a.mceAction { padding: 5px 10px; display: block; height: 2em; line-height: 2em; overflow: hidden; border: 1px solid; border-right: 0; border-radius: 3px 0px 0px 3px; -moz-border-radius: 3px 0px 0px 3px; -webkit-border-radius: 3px 0px 0px 3px; -ms-border-radius: 3px 0px 0px 3px;} +.highcontrastSkin .mceSplitButton a.mceOpen { padding: 5px 4px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-radius: 0px 3px 3px 0px; -moz-border-radius: 0px 3px 3px 0px; -webkit-border-radius: 0px 3px 3px 0px; -ms-border-radius: 0px 3px 3px 0px;} +.highcontrastSkin .mceSplitButton .mceVoiceLabel { height: 2em; vertical-align: center; line-height: 2em; } +.highcontrastSkin .mceSplitButton:focus a.mceAction, .highcontrastSkin .mceSplitButton:active a.mceAction { border-width: 5px; border-right-width: 1px; padding: 1px 10px 1px 6px;-webkit-focus-ring-color:none;outline:none;} +.highcontrastSkin .mceSplitButton:focus a.mceOpen, .highcontrastSkin .mceSplitButton:active a.mceOpen { border-width: 5px; border-left-width: 1px; padding: 1px 0px 1px 4px;-webkit-focus-ring-color:none;outline:none;} + +/* Menu */ +.highcontrastSkin .mceNoIcons span.mceIcon {width:0;} +.highcontrastSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid; } +.highcontrastSkin .mceMenu table {background:white; color: black} +.highcontrastSkin .mceNoIcons a .mceText {padding-left:10px} +.highcontrastSkin .mceMenu a, .highcontrastSkin .mceMenu span, .highcontrastSkin .mceMenu {display:block;background:white; color: black} +.highcontrastSkin .mceMenu td {height:2em} +.highcontrastSkin .mceMenu a {position:relative;padding:3px 0 4px 0; display: block;} +.highcontrastSkin .mceMenu .mceText {position:relative; display:block; cursor:default; margin:0; padding:0 25px 0 25px;} +.highcontrastSkin .mceMenu pre.mceText {font-family:Monospace} +.highcontrastSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:26px;} +.highcontrastSkin td.mceMenuItemSeparator {border-top:1px solid; height:1px} +.highcontrastSkin .mceMenuItemTitle a {border:0; border-bottom:1px solid} +.highcontrastSkin .mceMenuItemTitle span.mceText {font-weight:bold; padding-left:4px} +.highcontrastSkin .mceNoIcons .mceMenuItemSelected span.mceText:before {content: "\2713\A0";} +.highcontrastSkin .mceMenu span.mceMenuLine {display:none} +.highcontrastSkin .mceMenuItemSub a .mceText:after {content: "\A0\25B8"} +.highcontrastSkin .mceMenuItem td, .highcontrastSkin .mceMenuItem th {line-height: normal} + +/* ColorSplitButton */ +.highcontrastSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid; color: #000} +.highcontrastSkin .mceColorSplitMenu td {padding:2px} +.highcontrastSkin .mceColorSplitMenu a {display:block; width:16px; height:16px; overflow:hidden; color:#000; margin: 0; padding: 0;} +.highcontrastSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} +.highcontrastSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} +.highcontrastSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid; background-color:#B6BDD2} +.highcontrastSkin a.mceMoreColors:hover {border:1px solid #0A246A; color: #000;} +.highcontrastSkin .mceColorPreview {display:none;} +.highcontrastSkin .mce_forecolor span.mceAction, .highcontrastSkin .mce_backcolor span.mceAction {height:17px;overflow:hidden} + +/* Progress,Resize */ +.highcontrastSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF} +.highcontrastSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} + +/* Formats */ +.highcontrastSkin .mce_p span.mceText {} +.highcontrastSkin .mce_address span.mceText {font-style:italic} +.highcontrastSkin .mce_pre span.mceText {font-family:monospace} +.highcontrastSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} +.highcontrastSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} +.highcontrastSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} +.highcontrastSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} +.highcontrastSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} +.highcontrastSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css old mode 100755 new mode 100644 index 3cea5ff1c..3537c8bc0 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css @@ -9,9 +9,10 @@ h5 {font-size: .83em} h6 {font-size: .75em} .mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;} +span.mceItemNbsp {background: #DDD} td.mceSelected, th.mceSelected {background-color:#3399ff !important} img {border:0;} -table {cursor:default} +table, img, hr, .mceItemAnchor {cursor:default} table td, table th {cursor:text} ins {border-bottom:1px solid green; text-decoration: none; color:green} del {color:red; text-decoration:line-through} @@ -33,3 +34,16 @@ scrollbar-track-color:#F5F5F5; img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} font[face=mceinline] {font-family:inherit !important} +*[contentEditable]:focus {outline:0} + +.mceItemMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc} +.mceItemShockWave {background-image:url(../../img/shockwave.gif)} +.mceItemFlash {background-image:url(../../img/flash.gif)} +.mceItemQuickTime {background-image:url(../../img/quicktime.gif)} +.mceItemWindowsMedia {background-image:url(../../img/windowsmedia.gif)} +.mceItemRealMedia {background-image:url(../../img/realmedia.gif)} +.mceItemVideo {background-image:url(../../img/video.gif)} +.mceItemAudio {background-image:url(../../img/video.gif)} +.mceItemIframe {background-image:url(../../img/iframe.gif)} +.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;} +.mceHideBrInPre pre br {display: none} diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css old mode 100755 new mode 100644 index e3af1396e..ec0877224 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css @@ -114,3 +114,4 @@ h3 {font-size:14px;} #colorpicker #namedcolors {width:150px;} #colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} #colorpicker #colornamecontainer {margin-top:5px;} +#colorpicker #picker_panel fieldset {margin:auto;width:325px;} diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png old mode 100755 new mode 100644 index 12cfb419b..13a5cb030 Binary files a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png and b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png old mode 100755 new mode 100644 index 8996c7493..7fc57f2bc Binary files a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png and b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png old mode 100755 new mode 100644 index bd5d2550c..c0dcc6cac Binary files a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png and b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css old mode 100755 new mode 100644 index a6253976a..7b5103be2 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css @@ -4,8 +4,8 @@ .o2k7Skin table td {vertical-align:middle} /* Containers */ -.o2k7Skin table {background:#E5EFFD} -.o2k7Skin iframe {display:block; background:#FFF} +.o2k7Skin table {background:transparent} +.o2k7Skin iframe {display:block;} .o2k7Skin .mceToolbar {height:26px} /* External */ @@ -19,7 +19,8 @@ .o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD} .o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0} .o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD} -.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px} +.o2k7Skin td.mceToolbar{background:#E5EFFD} +.o2k7Skin .mceStatusbar {background:#E5EFFD; display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px} .o2k7Skin .mceStatusbar div {float:left; padding:2px} .o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0} .o2k7Skin .mceStatusbar a:hover {text-decoration:underline} @@ -50,19 +51,19 @@ .o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px} /* ListBox */ -.o2k7Skin .mceListBox {margin-left:3px} +.o2k7Skin .mceListBox {padding-left: 3px} .o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block} .o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} .o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0} .o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF} .o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px} .o2k7Skin .mceListBoxDisabled .mceText {color:gray} -.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden} +.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden; margin-left:3px} .o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px} .o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;} /* SplitButton */ -.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px} +.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px; direction:ltr} .o2k7Skin .mceSplitButton {background:url(img/button_bg.png)} .o2k7Skin .mceSplitButton a.mceAction {width:22px} .o2k7Skin .mceSplitButton span.mceAction {width:22px; background-image:url(../../img/icons.gif)} @@ -105,6 +106,7 @@ .o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center} .o2k7Skin .mceMenu span.mceMenuLine {display:none} .o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;} +.o2k7Skin .mceMenuItem td, .o2k7Skin .mceMenuItem th {line-height: normal} /* Progress,Resize */ .o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF} @@ -213,3 +215,4 @@ .o2k7Skin span.mce_pagebreak {background-position:0 -40px} .o2k7Skin span.mce_restoredraft {background-position:-20px -40px} .o2k7Skin span.mce_spellchecker {background-position:-540px -20px} +.o2k7Skin span.mce_visualblocks {background-position: -40px -40px} diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css old mode 100755 new mode 100644 index 153f0c38a..50c9b76a2 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css @@ -1,6 +1,6 @@ /* Black */ .o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)} -.o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF} +.o2k7SkinBlack td.mceToolbar, .o2k7SkinBlack td.mceStatusbar, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF} .o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0} .o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0} .o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;} diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css old mode 100755 new mode 100644 index 7fe3b45e1..960a8e475 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css @@ -1,5 +1,5 @@ /* Silver */ .o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)} -.o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee} +.o2k7SkinSilver td.mceToolbar, .o2k7SkinSilver td.mceStatusbar, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee} .o2k7SkinSilver .mceListBox .mceText {background:#FFF} .o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb} diff --git a/library/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm b/library/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm old mode 100755 new mode 100644 index 5957bbd17..3c6d65808 --- a/library/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm +++ b/library/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm @@ -6,7 +6,7 @@
    -
    {#advanced_dlg.code_title}
    +
    @@ -17,8 +17,8 @@
    - - + +
    diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js b/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js old mode 100755 new mode 100644 index ed89abc06..4b3209cc9 --- a/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js +++ b/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js @@ -1 +1 @@ -(function(){var a=tinymce.DOM;tinymce.ThemeManager.requireLangPack("simple");tinymce.create("tinymce.themes.SimpleTheme",{init:function(c,d){var e=this,b=["Bold","Italic","Underline","Strikethrough","InsertUnorderedList","InsertOrderedList"],f=c.settings;e.editor=c;c.onInit.add(function(){c.onNodeChange.add(function(h,g){tinymce.each(b,function(i){g.get(i.toLowerCase()).setActive(h.queryCommandState(i))})});c.dom.loadCSS(d+"/skins/"+f.skin+"/content.css")});a.loadCSS((f.editor_css?c.documentBaseURI.toAbsolute(f.editor_css):"")||d+"/skins/"+f.skin+"/ui.css")},renderUI:function(h){var e=this,i=h.targetNode,b,c,d=e.editor,f=d.controlManager,g;i=a.insertAfter(a.create("span",{id:d.id+"_container","class":"mceEditor "+d.settings.skin+"SimpleSkin"}),i);i=g=a.add(i,"table",{cellPadding:0,cellSpacing:0,"class":"mceLayout"});i=c=a.add(i,"tbody");i=a.add(c,"tr");i=b=a.add(a.add(i,"td"),"div",{"class":"mceIframeContainer"});i=a.add(a.add(c,"tr",{"class":"last"}),"td",{"class":"mceToolbar mceLast",align:"center"});c=e.toolbar=f.createToolbar("tools1");c.add(f.createButton("bold",{title:"simple.bold_desc",cmd:"Bold"}));c.add(f.createButton("italic",{title:"simple.italic_desc",cmd:"Italic"}));c.add(f.createButton("underline",{title:"simple.underline_desc",cmd:"Underline"}));c.add(f.createButton("strikethrough",{title:"simple.striketrough_desc",cmd:"Strikethrough"}));c.add(f.createSeparator());c.add(f.createButton("undo",{title:"simple.undo_desc",cmd:"Undo"}));c.add(f.createButton("redo",{title:"simple.redo_desc",cmd:"Redo"}));c.add(f.createSeparator());c.add(f.createButton("cleanup",{title:"simple.cleanup_desc",cmd:"mceCleanup"}));c.add(f.createSeparator());c.add(f.createButton("insertunorderedlist",{title:"simple.bullist_desc",cmd:"InsertUnorderedList"}));c.add(f.createButton("insertorderedlist",{title:"simple.numlist_desc",cmd:"InsertOrderedList"}));c.renderTo(i);return{iframeContainer:b,editorContainer:d.id+"_container",sizeContainer:g,deltaHeight:-20}},getInfo:function(){return{longname:"Simple theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add("simple",tinymce.themes.SimpleTheme)})(); \ No newline at end of file +(function(){var a=tinymce.DOM;tinymce.ThemeManager.requireLangPack("simple");tinymce.create("tinymce.themes.SimpleTheme",{init:function(c,d){var e=this,b=["Bold","Italic","Underline","Strikethrough","InsertUnorderedList","InsertOrderedList"],f=c.settings;e.editor=c;c.contentCSS.push(d+"/skins/"+f.skin+"/content.css");c.onInit.add(function(){c.onNodeChange.add(function(h,g){tinymce.each(b,function(i){g.get(i.toLowerCase()).setActive(h.queryCommandState(i))})})});a.loadCSS((f.editor_css?c.documentBaseURI.toAbsolute(f.editor_css):"")||d+"/skins/"+f.skin+"/ui.css")},renderUI:function(h){var e=this,i=h.targetNode,b,c,d=e.editor,f=d.controlManager,g;i=a.insertAfter(a.create("span",{id:d.id+"_container","class":"mceEditor "+d.settings.skin+"SimpleSkin"}),i);i=g=a.add(i,"table",{cellPadding:0,cellSpacing:0,"class":"mceLayout"});i=c=a.add(i,"tbody");i=a.add(c,"tr");i=b=a.add(a.add(i,"td"),"div",{"class":"mceIframeContainer"});i=a.add(a.add(c,"tr",{"class":"last"}),"td",{"class":"mceToolbar mceLast",align:"center"});c=e.toolbar=f.createToolbar("tools1");c.add(f.createButton("bold",{title:"simple.bold_desc",cmd:"Bold"}));c.add(f.createButton("italic",{title:"simple.italic_desc",cmd:"Italic"}));c.add(f.createButton("underline",{title:"simple.underline_desc",cmd:"Underline"}));c.add(f.createButton("strikethrough",{title:"simple.striketrough_desc",cmd:"Strikethrough"}));c.add(f.createSeparator());c.add(f.createButton("undo",{title:"simple.undo_desc",cmd:"Undo"}));c.add(f.createButton("redo",{title:"simple.redo_desc",cmd:"Redo"}));c.add(f.createSeparator());c.add(f.createButton("cleanup",{title:"simple.cleanup_desc",cmd:"mceCleanup"}));c.add(f.createSeparator());c.add(f.createButton("insertunorderedlist",{title:"simple.bullist_desc",cmd:"InsertUnorderedList"}));c.add(f.createButton("insertorderedlist",{title:"simple.numlist_desc",cmd:"InsertOrderedList"}));c.renderTo(i);return{iframeContainer:b,editorContainer:d.id+"_container",sizeContainer:g,deltaHeight:-20}},getInfo:function(){return{longname:"Simple theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add("simple",tinymce.themes.SimpleTheme)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js b/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js old mode 100755 new mode 100644 index 4b862d49d..01ce87c58 --- a/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js +++ b/library/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js @@ -19,6 +19,7 @@ var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings; t.editor = ed; + ed.contentCSS.push(url + "/skins/" + s.skin + "/content.css"); ed.onInit.add(function() { ed.onNodeChange.add(function(ed, cm) { @@ -26,8 +27,6 @@ cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c)); }); }); - - ed.dom.loadCSS(url + "/skins/" + s.skin + "/content.css"); }); DOM.loadCSS((s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css"); diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif b/library/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif old mode 100755 new mode 100644 index 16af141ff..6fcbcb5de Binary files a/library/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif and b/library/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif differ diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js b/library/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js old mode 100755 new mode 100644 index 9f08f102f..088ed0fcb --- a/library/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js +++ b/library/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js @@ -1,11 +1 @@ -tinyMCE.addI18n('en.simple',{ -bold_desc:"Bold (Ctrl+B)", -italic_desc:"Italic (Ctrl+I)", -underline_desc:"Underline (Ctrl+U)", -striketrough_desc:"Strikethrough", -bullist_desc:"Unordered list", -numlist_desc:"Ordered list", -undo_desc:"Undo (Ctrl+Z)", -redo_desc:"Redo (Ctrl+Y)", -cleanup_desc:"Cleanup messy code" -}); \ No newline at end of file +tinyMCE.addI18n('en.simple',{"cleanup_desc":"Cleanup Messy Code","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","numlist_desc":"Insert/Remove Numbered List","bullist_desc":"Insert/Remove Bulleted List","striketrough_desc":"Strikethrough","underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)"}); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css b/library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css b/library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css b/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png b/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css b/library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/tiny_mce.js b/library/tinymce/jscripts/tiny_mce/tiny_mce.js old mode 100755 new mode 100644 index e9eb3ac2f..2d09557a1 --- a/library/tinymce/jscripts/tiny_mce/tiny_mce.js +++ b/library/tinymce/jscripts/tiny_mce/tiny_mce.js @@ -1 +1 @@ -(function(c){var a=/^\s*|\s*$/g,d;var b={majorVersion:"3",minorVersion:"3.7",releaseDate:"2010-06-10",_init:function(){var r=this,o=document,m=navigator,f=m.userAgent,l,e,k,j,h,q;r.isOpera=c.opera&&opera.buildNumber;r.isWebKit=/WebKit/.test(f);r.isIE=!r.isWebKit&&!r.isOpera&&(/MSIE/gi).test(f)&&(/Explorer/gi).test(m.appName);r.isIE6=r.isIE&&/MSIE [56]/.test(f);r.isGecko=!r.isWebKit&&/Gecko/.test(f);r.isMac=f.indexOf("Mac")!=-1;r.isAir=/adobeair/i.test(f);r.isIDevice=/(iPad|iPhone)/.test(f);if(c.tinyMCEPreInit){r.suffix=tinyMCEPreInit.suffix;r.baseURL=tinyMCEPreInit.base;r.query=tinyMCEPreInit.query;return}r.suffix="";e=o.getElementsByTagName("base");for(l=0;l=c.length){for(e=0,b=g.length;e=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length=g.length||g[e]!=c[e]){f=e+1;break}}}if(f==1){return h}for(e=0,b=g.length-(f-1);e=0;c--){if(f[c].length==0||f[c]=="."){continue}if(f[c]==".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!=0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(e,b){var c=new Date();c.setTime(c.getTime()-1000);this.set(e,"",c,b,c)}})})();tinymce.create("static tinymce.util.JSON",{serialize:function(e){var c,a,d=tinymce.util.JSON.serialize,b;if(e==null){return"null"}b=typeof e;if(b=="string"){a="\bb\tt\nn\ff\rr\"\"''\\\\";return'"'+e.replace(/([\u0080-\uFFFF\x00-\x1f\"])/g,function(g,f){c=a.indexOf(f);if(c+1){return"\\"+a.charAt(c+1)}g=f.charCodeAt().toString(16);return"\\u"+"0000".substring(g.length)+g})+'"'}if(b=="object"){if(e.hasOwnProperty&&e instanceof Array){for(c=0,a="[";c0?",":"")+d(e[c])}return a+"]"}a="{";for(c in e){a+=typeof e[c]!="function"?(a.length>1?',"':'"')+c+'":'+d(e[c]):""}return a+"}"}return""+e},parse:function(s){try{return eval("("+s+")")}catch(ex){}}});tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){e.call(f.error_scope||f.scope,h,g)};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(m){var k=m.each,j=m.is,i=m.isWebKit,d=m.isIE,a=/^(H[1-6R]|P|DIV|ADDRESS|PRE|FORM|T(ABLE|BODY|HEAD|FOOT|H|R|D)|LI|OL|UL|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|MENU|ISINDEX|SAMP)$/,e=g("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),f=g("src,href,style,coords,shape"),c={"&":"&",'"':""","<":"<",">":">"},n=/[<>&\"]/g,b=/^([a-z0-9],?)+$/i,h=/<(\w+)((?:\s+\w+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)(\s*\/?)>/g,l=/(\w+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g;function g(q){var p={},o;q=q.split(",");for(o=q.length;o>=0;o--){p[q[o]]=1}return p}m.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(u,q){var p=this,o;p.doc=u;p.win=window;p.files={};p.cssFlicker=false;p.counter=0;p.boxModel=!m.isIE||u.compatMode=="CSS1Compat";p.stdMode=u.documentMode===8;p.settings=q=m.extend({keep_values:false,hex_colors:1,process_html:1},q);if(m.isIE6){try{u.execCommand("BackgroundImageCache",false,true)}catch(r){p.cssFlicker=true}}if(q.valid_styles){p._styles={};k(q.valid_styles,function(t,s){p._styles[s]=m.explode(t)})}m.addUnload(p.destroy,p)},getRoot:function(){var o=this,p=o.settings;return(p&&o.get(p.root_element))||o.doc.body},getViewPort:function(p){var q,o;p=!p?this.win:p;q=p.document;o=this.boxModel?q.documentElement:q.body;return{x:p.pageXOffset||o.scrollLeft,y:p.pageYOffset||o.scrollTop,w:p.innerWidth||o.clientWidth,h:p.innerHeight||o.clientHeight}},getRect:function(s){var r,o=this,q;s=o.get(s);r=o.getPos(s);q=o.getSize(s);return{x:r.x,y:r.y,w:q.w,h:q.h}},getSize:function(r){var p=this,o,q;r=p.get(r);o=p.getStyle(r,"width");q=p.getStyle(r,"height");if(o.indexOf("px")===-1){o=0}if(q.indexOf("px")===-1){q=0}return{w:parseInt(o)||r.offsetWidth||r.clientWidth,h:parseInt(q)||r.offsetHeight||r.clientHeight}},getParent:function(q,p,o){return this.getParents(q,p,o,false)},getParents:function(z,v,s,y){var q=this,p,u=q.settings,x=[];z=q.get(z);y=y===undefined;if(u.strict_root){s=s||q.getRoot()}if(j(v,"string")){p=v;if(v==="*"){v=function(o){return o.nodeType==1}}else{v=function(o){return q.is(o,p)}}}while(z){if(z==s||!z.nodeType||z.nodeType===9){break}if(!v||v(z)){if(y){x.push(z)}else{return z}}z=z.parentNode}return y?x:null},get:function(o){var p;if(o&&this.doc&&typeof(o)=="string"){p=o;o=this.doc.getElementById(o);if(o&&o.id!==p){return this.doc.getElementsByName(p)[1]}}return o},getNext:function(p,o){return this._findSib(p,o,"nextSibling")},getPrev:function(p,o){return this._findSib(p,o,"previousSibling")},select:function(q,p){var o=this;return m.dom.Sizzle(q,o.get(p)||o.get(o.settings.root_element)||o.doc,[])},is:function(q,o){var p;if(q.length===undefined){if(o==="*"){return q.nodeType==1}if(b.test(o)){o=o.toLowerCase().split(/,/);q=q.nodeName.toLowerCase();for(p=o.length-1;p>=0;p--){if(o[p]==q){return true}}return false}}return m.dom.Sizzle.matches(o,q.nodeType?[q]:q).length>0},add:function(s,v,o,r,u){var q=this;return this.run(s,function(y){var x,t;x=j(v,"string")?q.doc.createElement(v):v;q.setAttribs(x,o);if(r){if(r.nodeType){x.appendChild(r)}else{q.setHTML(x,r)}}return !u?y.appendChild(x):x})},create:function(q,o,p){return this.add(this.doc.createElement(q),q,o,p,1)},createHTML:function(v,p,s){var u="",r=this,q;u+="<"+v;for(q in p){if(p.hasOwnProperty(q)){u+=" "+q+'="'+r.encode(p[q])+'"'}}if(m.is(s)){return u+">"+s+""}return u+" />"},remove:function(o,p){return this.run(o,function(r){var q,s;q=r.parentNode;if(!q){return null}if(p){while(s=r.firstChild){if(!m.isIE||s.nodeType!==3||s.nodeValue){q.insertBefore(s,r)}else{r.removeChild(s)}}}return q.removeChild(r)})},setStyle:function(r,o,p){var q=this;return q.run(r,function(v){var u,t;u=v.style;o=o.replace(/-(\D)/g,function(x,s){return s.toUpperCase()});if(q.pixelStyles.test(o)&&(m.is(p,"number")||/^[\-0-9\.]+$/.test(p))){p+="px"}switch(o){case"opacity":if(d){u.filter=p===""?"":"alpha(opacity="+(p*100)+")";if(!r.currentStyle||!r.currentStyle.hasLayout){u.display="inline-block"}}u[o]=u["-moz-opacity"]=u["-khtml-opacity"]=p||"";break;case"float":d?u.styleFloat=p:u.cssFloat=p;break;default:u[o]=p||""}if(q.settings.update_styles){q.setAttrib(v,"_mce_style")}})},getStyle:function(r,o,q){r=this.get(r);if(!r){return false}if(this.doc.defaultView&&q){o=o.replace(/[A-Z]/g,function(s){return"-"+s});try{return this.doc.defaultView.getComputedStyle(r,null).getPropertyValue(o)}catch(p){return null}}o=o.replace(/-(\D)/g,function(t,s){return s.toUpperCase()});if(o=="float"){o=d?"styleFloat":"cssFloat"}if(r.currentStyle&&q){return r.currentStyle[o]}return r.style[o]},setStyles:function(u,v){var q=this,r=q.settings,p;p=r.update_styles;r.update_styles=0;k(v,function(o,s){q.setStyle(u,s,o)});r.update_styles=p;if(r.update_styles){q.setAttrib(u,r.cssText)}},setAttrib:function(q,r,o){var p=this;if(!q||!r){return}if(p.settings.strict){r=r.toLowerCase()}return this.run(q,function(u){var t=p.settings;switch(r){case"style":if(!j(o,"string")){k(o,function(s,x){p.setStyle(u,x,s)});return}if(t.keep_values){if(o&&!p._isRes(o)){u.setAttribute("_mce_style",o,2)}else{u.removeAttribute("_mce_style",2)}}u.style.cssText=o;break;case"class":u.className=o||"";break;case"src":case"href":if(t.keep_values){if(t.url_converter){o=t.url_converter.call(t.url_converter_scope||p,o,r,u)}p.setAttrib(u,"_mce_"+r,o,2)}break;case"shape":u.setAttribute("_mce_style",o);break}if(j(o)&&o!==null&&o.length!==0){u.setAttribute(r,""+o,2)}else{u.removeAttribute(r,2)}})},setAttribs:function(q,r){var p=this;return this.run(q,function(o){k(r,function(s,t){p.setAttrib(o,t,s)})})},getAttrib:function(r,s,q){var o,p=this;r=p.get(r);if(!r||r.nodeType!==1){return false}if(!j(q)){q=""}if(/^(src|href|style|coords|shape)$/.test(s)){o=r.getAttribute("_mce_"+s);if(o){return o}}if(d&&p.props[s]){o=r[p.props[s]];o=o&&o.nodeValue?o.nodeValue:o}if(!o){o=r.getAttribute(s,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(s)){if(r[p.props[s]]===true&&o===""){return s}return o?s:""}if(r.nodeName==="FORM"&&r.getAttributeNode(s)){return r.getAttributeNode(s).nodeValue}if(s==="style"){o=o||r.style.cssText;if(o){o=p.serializeStyle(p.parseStyle(o),r.nodeName);if(p.settings.keep_values&&!p._isRes(o)){r.setAttribute("_mce_style",o)}}}if(i&&s==="class"&&o){o=o.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(d){switch(s){case"rowspan":case"colspan":if(o===1){o=""}break;case"size":if(o==="+0"||o===20||o===0){o=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(o===0){o=""}break;case"hspace":if(o===-1){o=""}break;case"maxlength":case"tabindex":if(o===32768||o===2147483647||o==="32768"){o=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(o===65535){return s}return q;case"shape":o=o.toLowerCase();break;default:if(s.indexOf("on")===0&&o){o=(""+o).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1")}}}return(o!==undefined&&o!==null&&o!=="")?""+o:q},getPos:function(A,s){var p=this,o=0,z=0,u,v=p.doc,q;A=p.get(A);s=s||v.body;if(A){if(d&&!p.stdMode){A=A.getBoundingClientRect();u=p.boxModel?v.documentElement:v.body;o=p.getStyle(p.select("html")[0],"borderWidth");o=(o=="medium"||p.boxModel&&!p.isIE6)&&2||o;A.top+=p.win.self!=p.win.top?2:0;return{x:A.left+u.scrollLeft-o,y:A.top+u.scrollTop-o}}q=A;while(q&&q!=s&&q.nodeType){o+=q.offsetLeft||0;z+=q.offsetTop||0;q=q.offsetParent}q=A.parentNode;while(q&&q!=s&&q.nodeType){o-=q.scrollLeft||0;z-=q.scrollTop||0;q=q.parentNode}}return{x:o,y:z}},parseStyle:function(r){var u=this,v=u.settings,x={};if(!r){return x}function p(D,A,C){var z,B,o,y;z=x[D+"-top"+A];if(!z){return}B=x[D+"-right"+A];if(z!=B){return}o=x[D+"-bottom"+A];if(B!=o){return}y=x[D+"-left"+A];if(o!=y){return}x[C]=y;delete x[D+"-top"+A];delete x[D+"-right"+A];delete x[D+"-bottom"+A];delete x[D+"-left"+A]}function q(y,s,o,A){var z;z=x[s];if(!z){return}z=x[o];if(!z){return}z=x[A];if(!z){return}x[y]=x[s]+" "+x[o]+" "+x[A];delete x[s];delete x[o];delete x[A]}r=r.replace(/&(#?[a-z0-9]+);/g,"&$1_MCE_SEMI_");k(r.split(";"),function(s){var o,t=[];if(s){s=s.replace(/_MCE_SEMI_/g,";");s=s.replace(/url\([^\)]+\)/g,function(y){t.push(y);return"url("+t.length+")"});s=s.split(":");o=m.trim(s[1]);o=o.replace(/url\(([^\)]+)\)/g,function(z,y){return t[parseInt(y)-1]});o=o.replace(/rgb\([^\)]+\)/g,function(y){return u.toHex(y)});if(v.url_converter){o=o.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g,function(y,z){return"url("+v.url_converter.call(v.url_converter_scope||u,u.decode(z),"style",null)+")"})}x[m.trim(s[0]).toLowerCase()]=o}});p("border","","border");p("border","-width","border-width");p("border","-color","border-color");p("border","-style","border-style");p("padding","","padding");p("margin","","margin");q("border","border-width","border-style","border-color");if(d){if(x.border=="medium none"){x.border=""}}return x},serializeStyle:function(v,p){var q=this,r="";function u(s,o){if(o&&s){if(o.indexOf("-")===0){return}switch(o){case"font-weight":if(s==700){s="bold"}break;case"color":case"background-color":s=s.toLowerCase();break}r+=(r?" ":"")+o+": "+s+";"}}if(p&&q._styles){k(q._styles["*"],function(o){u(v[o],o)});k(q._styles[p.toLowerCase()],function(o){u(v[o],o)})}else{k(v,u)}return r},loadCSS:function(o){var q=this,r=q.doc,p;if(!o){o=""}p=q.select("head")[0];k(o.split(","),function(s){var t;if(q.files[s]){return}q.files[s]=true;t=q.create("link",{rel:"stylesheet",href:m._addVer(s)});if(d&&r.documentMode){t.onload=function(){r.recalc();t.onload=null}}p.appendChild(t)})},addClass:function(o,p){return this.run(o,function(q){var r;if(!p){return 0}if(this.hasClass(q,p)){return q.className}r=this.removeClass(q,p);return q.className=(r!=""?(r+" "):"")+p})},removeClass:function(q,r){var o=this,p;return o.run(q,function(t){var s;if(o.hasClass(t,r)){if(!p){p=new RegExp("(^|\\s+)"+r+"(\\s+|$)","g")}s=t.className.replace(p," ");s=m.trim(s!=" "?s:"");t.className=s;if(!s){t.removeAttribute("class");t.removeAttribute("className")}return s}return t.className})},hasClass:function(p,o){p=this.get(p);if(!p||!o){return false}return(" "+p.className+" ").indexOf(" "+o+" ")!==-1},show:function(o){return this.setStyle(o,"display","block")},hide:function(o){return this.setStyle(o,"display","none")},isHidden:function(o){o=this.get(o);return !o||o.style.display=="none"||this.getStyle(o,"display")=="none"},uniqueId:function(o){return(!o?"mce_":o)+(this.counter++)},setHTML:function(q,p){var o=this;return this.run(q,function(v){var r,t,s,z,u,r;p=o.processHTML(p);if(d){function y(){while(v.firstChild){v.firstChild.removeNode()}try{v.innerHTML="
    "+p;v.removeChild(v.firstChild)}catch(x){r=o.create("div");r.innerHTML="
    "+p;k(r.childNodes,function(B,A){if(A){v.appendChild(B)}})}}if(o.settings.fix_ie_paragraphs){p=p.replace(/

    <\/p>|]+)><\/p>|/gi,' 

    ')}y();if(o.settings.fix_ie_paragraphs){s=v.getElementsByTagName("p");for(t=s.length-1,r=0;t>=0;t--){z=s[t];if(!z.hasChildNodes()){if(!z._mce_keep){r=1;break}z.removeAttribute("_mce_keep")}}}if(r){p=p.replace(/

    ]+)>|

    /ig,'

    ');p=p.replace(/<\/p>/gi,"
    ");y();if(o.settings.fix_ie_paragraphs){s=v.getElementsByTagName("DIV");for(t=s.length-1;t>=0;t--){z=s[t];if(z._mce_tmp){u=o.doc.createElement("p");z.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi,function(A,x){var B;if(x!=="_mce_tmp"){B=z.getAttribute(x);if(!B&&x==="class"){B=z.className}u.setAttribute(x,B)}});for(r=0;r]+)\/>|/gi,"");if(q.keep_values){if(/)/g,"\n");t=t.replace(/^[\r\n]*|[\r\n]*$/g,"");t=t.replace(/^\s*(\/\/\s*|\]\]>|-->|\]\]-->)\s*$/g,"");return t}r=r.replace(/]+|)>([\s\S]*?)<\/script>/gi,function(s,x,t){if(!x){x=' type="text/javascript"'}x=x.replace(/src=\"([^\"]+)\"?/i,function(y,z){if(q.url_converter){z=p.encode(q.url_converter.call(q.url_converter_scope||p,p.decode(z),"src","script"))}return'_mce_src="'+z+'"'});if(m.trim(t)){v.push(o(t));t=""}return""+t+""});r=r.replace(/]+|)>([\s\S]*?)<\/style>/gi,function(s,x,t){if(t){v.push(o(t));t=""}return""+t+""});r=r.replace(/]+|)>([\s\S]*?)<\/noscript>/g,function(s,x,t){return""})}r=r.replace(//g,"");function u(s){return s.replace(h,function(y,z,x,t){return"<"+z+x.replace(l,function(B,A,E,D,C){var F;A=A.toLowerCase();E=E||D||C||"";if(e[A]){if(E==="false"||E==="0"){return}return A+'="'+A+'"'}if(f[A]&&x.indexOf("_mce_"+A)==-1){F=p.decode(E);if(q.url_converter&&(A=="src"||A=="href")){F=q.url_converter.call(q.url_converter_scope||p,F,A,z)}if(A=="style"){F=p.serializeStyle(p.parseStyle(F),A)}return A+'="'+E+'" _mce_'+A+'="'+p.encode(F)+'"'}return B})+t+">"})}r=u(r);r=r.replace(/MCE_SCRIPT:([0-9]+)/g,function(t,s){return v[s]})}return r},getOuterHTML:function(o){var p;o=this.get(o);if(!o){return null}if(o.outerHTML!==undefined){return o.outerHTML}p=(o.ownerDocument||this.doc).createElement("body");p.appendChild(o.cloneNode(true));return p.innerHTML},setOuterHTML:function(r,p,s){var o=this;function q(u,t,x){var y,v;v=x.createElement("body");v.innerHTML=t;y=v.lastChild;while(y){o.insertAfter(y.cloneNode(true),u);y=y.previousSibling}o.remove(u)}return this.run(r,function(u){u=o.get(u);if(u.nodeType==1){s=s||u.ownerDocument||o.doc;if(d){try{if(d&&u.nodeType==1){u.outerHTML=p}else{q(u,p,s)}}catch(t){q(u,p,s)}}else{q(u,p,s)}}})},decode:function(p){var q,r,o;if(/&[\w#]+;/.test(p)){q=this.doc.createElement("div");q.innerHTML=p;r=q.firstChild;o="";if(r){do{o+=r.nodeValue}while(r=r.nextSibling)}return o||p}return p},encode:function(o){return(""+o).replace(n,function(p){return c[p]})},insertAfter:function(o,p){p=this.get(p);return this.run(o,function(r){var q,s;q=p.parentNode;s=p.nextSibling;if(s){q.insertBefore(r,s)}else{q.appendChild(r)}return r})},isBlock:function(o){if(o.nodeType&&o.nodeType!==1){return false}o=o.nodeName||o;return a.test(o)},replace:function(s,r,p){var q=this;if(j(r,"array")){s=s.cloneNode(true)}return q.run(r,function(t){if(p){k(m.grep(t.childNodes),function(o){s.appendChild(o)})}return t.parentNode.replaceChild(s,t)})},rename:function(r,o){var q=this,p;if(r.nodeName!=o.toUpperCase()){p=q.create(o);k(q.getAttribs(r),function(s){q.setAttrib(p,s.nodeName,q.getAttrib(r,s.nodeName))});q.replace(p,r,1)}return p||r},findCommonAncestor:function(q,o){var r=q,p;while(r){p=o;while(p&&r!=p){p=p.parentNode}if(r==p){break}r=r.parentNode}if(!r&&q.ownerDocument){return q.ownerDocument.documentElement}return r},toHex:function(o){var q=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(o);function p(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}if(q){o="#"+p(q[1])+p(q[2])+p(q[3]);return o}return o},getClasses:function(){var s=this,o=[],r,u={},v=s.settings.class_filter,q;if(s.classes){return s.classes}function x(t){k(t.imports,function(y){x(y)});k(t.cssRules||t.rules,function(y){switch(y.type||1){case 1:if(y.selectorText){k(y.selectorText.split(","),function(z){z=z.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(z)||!/\.[\w\-]+$/.test(z)){return}q=z;z=z.replace(/.*\.([a-z0-9_\-]+).*/i,"$1");if(v&&!(z=v(z,q))){return}if(!u[z]){o.push({"class":z});u[z]=1}})}break;case 3:x(y.styleSheet);break}})}try{k(s.doc.styleSheets,x)}catch(p){}if(o.length>0){s.classes=o}return o},run:function(u,r,q){var p=this,v;if(p.doc&&typeof(u)==="string"){u=p.get(u)}if(!u){return false}q=q||this;if(!u.nodeType&&(u.length||u.length===0)){v=[];k(u,function(s,o){if(s){if(typeof(s)=="string"){s=p.doc.getElementById(s)}v.push(r.call(q,s,o))}});return v}return r.call(q,u)},getAttribs:function(q){var p;q=this.get(q);if(!q){return[]}if(d){p=[];if(q.nodeName=="OBJECT"){return q.attributes}if(q.nodeName==="OPTION"&&this.getAttrib(q,"selected")){p.push({specified:1,nodeName:"selected"})}q.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(o){p.push({specified:1,nodeName:o})});return p}return q.attributes},destroy:function(p){var o=this;if(o.events){o.events.destroy()}o.win=o.doc=o.root=o.events=null;if(!p){m.removeUnload(o.destroy)}},createRng:function(){var o=this.doc;return o.createRange?o.createRange():new m.dom.Range(this)},nodeIndex:function(s,t){var o=0,q,r,p;if(s){for(q=s.nodeType,s=s.previousSibling,r=s;s;s=s.previousSibling){p=s.nodeType;if(t&&p==3){if(p==q||!s.nodeValue.length){continue}}o++;q=p}}return o},split:function(u,s,y){var z=this,o=z.createRng(),v,q,x;function p(A){var t,r=A.childNodes;if(A.nodeType==1&&A.getAttribute("_mce_type")=="bookmark"){return}for(t=r.length-1;t>=0;t--){p(r[t])}if(A.nodeType!=9){if(A.nodeType==3&&A.nodeValue.length>0){return}if(A.nodeType==1){r=A.childNodes;if(r.length==1&&r[0]&&r[0].nodeType==1&&r[0].getAttribute("_mce_type")=="bookmark"){A.parentNode.insertBefore(r[0],A)}if(r.length||/^(br|hr|input|img)$/i.test(A.nodeName)){return}}z.remove(A)}return A}if(u&&s){o.setStart(u.parentNode,z.nodeIndex(u));o.setEnd(s.parentNode,z.nodeIndex(s));v=o.extractContents();o=z.createRng();o.setStart(s.parentNode,z.nodeIndex(s)+1);o.setEnd(u.parentNode,z.nodeIndex(u)+1);q=o.extractContents();x=u.parentNode;x.insertBefore(p(v),u);if(y){x.replaceChild(y,s)}else{x.insertBefore(s,u)}x.insertBefore(p(q),u);z.remove(u);return y||s}},bind:function(s,o,r,q){var p=this;if(!p.events){p.events=new m.dom.EventUtils()}return p.events.add(s,o,r,q||this)},unbind:function(r,o,q){var p=this;if(!p.events){p.events=new m.dom.EventUtils()}return p.events.remove(r,o,q)},_findSib:function(r,o,p){var q=this,s=o;if(r){if(j(s,"string")){s=function(t){return q.is(t,o)}}for(r=r[p];r;r=r[p]){if(s(r)){return r}}}return null},_isRes:function(o){return/^(top|left|bottom|right|width|height)/i.test(o)||/;\s*(top|left|bottom|right|width|height)/i.test(o)}});m.DOM=new m.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var N=this,e=c.doc,S=0,E=1,j=2,D=true,R=false,U="startOffset",h="startContainer",P="endContainer",z="endOffset",k=tinymce.extend,n=c.nodeIndex;k(N,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:D,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:I,setEndBefore:J,setEndAfter:u,collapse:A,selectNode:x,selectNodeContents:F,compareBoundaryPoints:v,deleteContents:p,extractContents:H,cloneContents:d,insertNode:C,surroundContents:M,cloneRange:K});function q(V,t){B(D,V,t)}function s(V,t){B(R,V,t)}function g(t){q(t.parentNode,n(t))}function I(t){q(t.parentNode,n(t)+1)}function J(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function A(t){if(t){N[P]=N[h];N[z]=N[U]}else{N[h]=N[P];N[U]=N[z]}N.collapsed=D}function x(t){g(t);u(t)}function F(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(W,X){var Z=N[h],Y=N[U],V=N[P],t=N[z];if(W===0){return G(Z,Y,Z,Y)}if(W===1){return G(Z,Y,V,t)}if(W===2){return G(V,t,V,t)}if(W===3){return G(V,t,Z,Y)}}function p(){m(j)}function H(){return m(S)}function d(){return m(E)}function C(Y){var V=this[h],t=this[U],X,W;if((V.nodeType===3||V.nodeType===4)&&V.nodeValue){if(!t){V.parentNode.insertBefore(Y,V)}else{if(t>=V.nodeValue.length){c.insertAfter(Y,V)}else{X=V.splitText(t);V.parentNode.insertBefore(Y,X)}}}else{if(V.childNodes.length>0){W=V.childNodes[t]}if(W){V.insertBefore(Y,W)}else{V.appendChild(Y)}}}function M(V){var t=N.extractContents();N.insertNode(V);V.appendChild(t);N.selectNode(V)}function K(){return k(new b(c),{startContainer:N[h],startOffset:N[U],endContainer:N[P],endOffset:N[z],collapsed:N.collapsed,commonAncestorContainer:N.commonAncestorContainer})}function O(t,V){var W;if(t.nodeType==3){return t}if(V<0){return t}W=t.firstChild;while(W&&V>0){--V;W=W.nextSibling}if(W){return W}return t}function l(){return(N[h]==N[P]&&N[U]==N[z])}function G(X,Z,V,Y){var aa,W,t,ab,ad,ac;if(X==V){if(Z==Y){return 0}if(Z0){N.collapse(V)}}else{N.collapse(V)}N.collapsed=l();N.commonAncestorContainer=c.findCommonAncestor(N[h],N[P])}function m(ab){var aa,X=0,ad=0,V,Z,W,Y,t,ac;if(N[h]==N[P]){return f(ab)}for(aa=N[P],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[h]){return r(aa,ab)}++X}for(aa=N[h],V=aa.parentNode;V;aa=V,V=V.parentNode){if(V==N[P]){return T(aa,ab)}++ad}Z=ad-X;W=N[h];while(Z>0){W=W.parentNode;Z--}Y=N[P];while(Z<0){Y=Y.parentNode;Z++}for(t=W.parentNode,ac=Y.parentNode;t!=ac;t=t.parentNode,ac=ac.parentNode){W=t;Y=ac}return o(W,Y,ab)}function f(Z){var ab,Y,X,aa,t,W,V;if(Z!=j){ab=e.createDocumentFragment()}if(N[U]==N[z]){return ab}if(N[h].nodeType==3){Y=N[h].nodeValue;X=Y.substring(N[U],N[z]);if(Z!=E){N[h].deleteData(N[U],N[z]-N[U]);N.collapse(D)}if(Z==j){return}ab.appendChild(e.createTextNode(X));return ab}aa=O(N[h],N[U]);t=N[z]-N[U];while(t>0){W=aa.nextSibling;V=y(aa,Z);if(ab){ab.appendChild(V)}--t;aa=W}if(Z!=E){N.collapse(D)}return ab}function r(ab,Y){var aa,Z,V,t,X,W;if(Y!=j){aa=e.createDocumentFragment()}Z=i(ab,Y);if(aa){aa.appendChild(Z)}V=n(ab);t=V-N[U];if(t<=0){if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}Z=ab.previousSibling;while(t>0){X=Z.previousSibling;W=y(Z,Y);if(aa){aa.insertBefore(W,aa.firstChild)}--t;Z=X}if(Y!=E){N.setEndBefore(ab);N.collapse(R)}return aa}function T(Z,Y){var ab,V,aa,t,X,W;if(Y!=j){ab=e.createDocumentFragment()}aa=Q(Z,Y);if(ab){ab.appendChild(aa)}V=n(Z);++V;t=N[z]-V;aa=Z.nextSibling;while(t>0){X=aa.nextSibling;W=y(aa,Y);if(ab){ab.appendChild(W)}--t;aa=X}if(Y!=E){N.setStartAfter(Z);N.collapse(D)}return ab}function o(Z,t,ac){var W,ae,Y,aa,ab,V,ad,X;if(ac!=j){ae=e.createDocumentFragment()}W=Q(Z,ac);if(ae){ae.appendChild(W)}Y=Z.parentNode;aa=n(Z);ab=n(t);++aa;V=ab-aa;ad=Z.nextSibling;while(V>0){X=ad.nextSibling;W=y(ad,ac);if(ae){ae.appendChild(W)}ad=X;--V}W=i(t,ac);if(ae){ae.appendChild(W)}if(ac!=E){N.setStartAfter(Z);N.collapse(D)}return ae}function i(aa,ab){var W=O(N[P],N[z]-1),ac,Z,Y,t,V,X=W!=N[P];if(W==aa){return L(W,X,R,ab)}ac=W.parentNode;Z=L(ac,R,R,ab);while(ac){while(W){Y=W.previousSibling;t=L(W,X,R,ab);if(ab!=j){Z.insertBefore(t,Z.firstChild)}X=D;W=Y}if(ac==aa){return Z}W=ac.previousSibling;ac=ac.parentNode;V=L(ac,R,R,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function Q(aa,ab){var X=O(N[h],N[U]),Y=X!=N[h],ac,Z,W,t,V;if(X==aa){return L(X,Y,D,ab)}ac=X.parentNode;Z=L(ac,R,D,ab);while(ac){while(X){W=X.nextSibling;t=L(X,Y,D,ab);if(ab!=j){Z.appendChild(t)}Y=D;X=W}if(ac==aa){return Z}X=ac.nextSibling;ac=ac.parentNode;V=L(ac,R,D,ab);if(ab!=j){V.appendChild(Z)}Z=V}}function L(t,Y,ab,ac){var X,W,Z,V,aa;if(Y){return y(t,ac)}if(t.nodeType==3){X=t.nodeValue;if(ab){V=N[U];W=X.substring(V);Z=X.substring(0,V)}else{V=N[z];W=X.substring(0,V);Z=X.substring(V)}if(ac!=E){t.nodeValue=Z}if(ac==j){return}aa=t.cloneNode(R);aa.nodeValue=W;return aa}if(ac==j){return}return t.cloneNode(R)}function y(V,t){if(t!=j){return t==E?V.cloneNode(D):V}V.parentNode.removeChild(V)}}a.Range=b})(tinymce.dom);(function(){function a(g){var i=this,j="\uFEFF",e,h,d=g.dom,c=true,f=false;function b(){var n=g.getRng(),k=d.createRng(),m,o;m=n.item?n.item(0):n.parentElement();if(m.ownerDocument!=d.doc){return k}if(n.item||!m.hasChildNodes()){k.setStart(m.parentNode,d.nodeIndex(m));k.setEnd(k.startContainer,k.startOffset+1);return k}o=g.isCollapsed();function l(s){var u,q,t,p,A=0,x,y,z,r,v;r=n.duplicate();r.collapse(s);u=d.create("a");z=r.parentElement();if(!z.hasChildNodes()){k[s?"setStart":"setEnd"](z,0);return}z.appendChild(u);r.moveToElementText(u);v=n.compareEndPoints(s?"StartToStart":"EndToEnd",r);if(v>0){k[s?"setStartAfter":"setEndAfter"](z);d.remove(u);return}p=tinymce.grep(z.childNodes);x=p.length-1;while(A<=x){y=Math.floor((A+x)/2);z.insertBefore(u,p[y]);r.moveToElementText(u);v=n.compareEndPoints(s?"StartToStart":"EndToEnd",r);if(v>0){A=y+1}else{if(v<0){x=y-1}else{found=true;break}}}q=v>0||y==0?u.nextSibling:u.previousSibling;if(q.nodeType==1){d.remove(u);t=d.nodeIndex(q);q=q.parentNode;if(!s||y>0){t++}}else{if(v>0||y==0){r.setEndPoint(s?"StartToStart":"EndToEnd",n);t=r.text.length}else{r.setEndPoint(s?"StartToStart":"EndToEnd",n);t=q.nodeValue.length-r.text.length}d.remove(u)}k[s?"setStart":"setEnd"](q,t)}l(true);if(!o){l()}return k}this.addRange=function(l){var t,A,z=g.dom.doc,r=z.body,u,n,y,o,s,k,p,q,x,m;this.destroy();y=l.startContainer;o=l.startOffset;s=l.endContainer;k=l.endOffset;t=r.createTextRange();if(y==z||s==z){t=r.createTextRange();t.collapse();t.select();return}if(y.nodeType==1&&y.hasChildNodes()){q=y.childNodes.length-1;if(o>q){x=1;y=y.childNodes[q]}else{y=y.childNodes[o]}if(y.nodeType==3){o=0}}if(s.nodeType==1&&s.hasChildNodes()){q=s.childNodes.length-1;if(k==0){m=1;s=s.childNodes[0]}else{s=s.childNodes[Math.min(q,k-1)];if(s.nodeType==3){k=s.nodeValue.length}}}if(y==s&&y.nodeType==1){if(/^(IMG|TABLE)$/.test(y.nodeName)&&o!=k){t=r.createControlRange();t.addElement(y)}else{t=r.createTextRange();if(!y.hasChildNodes()&&y.canHaveHTML){y.innerHTML=j}t.moveToElementText(y);if(y.innerHTML==j){t.collapse(c);y.removeChild(y.firstChild)}}if(o==k){t.collapse(k<=l.endContainer.childNodes.length-1)}t.select();t.scrollIntoView();return}t=r.createTextRange();p=z.createElement("span");p.innerHTML=" ";if(y.nodeType==3){if(x){d.insertAfter(p,y)}else{y.parentNode.insertBefore(p,y)}t.moveToElementText(p);p.parentNode.removeChild(p);if(o>0){t.move("character",o)}}else{t.moveToElementText(y);if(x){t.collapse(f)}}if(y==s&&y.nodeType==3){try{t.moveEnd("character",k-o);t.select();t.scrollIntoView()}catch(v){}return}A=r.createTextRange();if(s.nodeType==3){s.parentNode.insertBefore(p,s);A.moveToElementText(p);p.parentNode.removeChild(p);A.move("character",k);t.setEndPoint("EndToStart",A)}else{A.moveToElementText(s);A.collapse(!!m);t.setEndPoint("EndToEnd",A)}t.select();t.scrollIntoView()};this.getRangeAt=function(){if(!e||!tinymce.dom.RangeUtils.compareRanges(h,g.getRng())){e=b();h=g.getRng()}try{e.startContainer.nextSibling}catch(k){e=b();h=null}return e};this.destroy=function(){h=e=null};if(g.dom.boxModel){(function(){var q=d.doc,l=q.body,n,o;q.documentElement.unselectable=c;function p(r,u){var s=l.createTextRange();try{s.moveToPoint(r,u)}catch(t){s=null}return s}function m(s){var r;if(s.button){r=p(s.x,s.y);if(r){if(r.compareEndPoints("StartToStart",o)>0){r.setEndPoint("StartToStart",o)}else{r.setEndPoint("EndToEnd",o)}r.select()}}else{k()}}function k(){d.unbind(q,"mouseup",k);d.unbind(q,"mousemove",m);n=0}d.bind(q,"mousedown",function(r){if(r.target.nodeName==="HTML"){if(n){k()}n=1;o=p(r.x,r.y);if(o){d.bind(q,"mouseup",k);d.bind(q,"mousemove",m);o.select()}}})})()}}tinymce.dom.TridentSelection=a})();(function(){var p=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,j=0,d=Object.prototype.toString,o=false,i=true;[0,0].sort(function(){i=false;return 0});var b=function(v,e,z,A){z=z||[];e=e||document;var C=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!v||typeof v!=="string"){return z}var x=[],s,E,H,r,u=true,t=b.isXML(e),B=v,D,G,F,y;do{p.exec("");s=p.exec(B);if(s){B=s[3];x.push(s[1]);if(s[2]){r=s[3];break}}}while(s);if(x.length>1&&k.exec(v)){if(x.length===2&&f.relative[x[0]]){E=h(x[0]+x[1],e)}else{E=f.relative[x[0]]?[e]:b(x.shift(),e);while(x.length){v=x.shift();if(f.relative[v]){v+=x.shift()}E=h(v,E)}}}else{if(!A&&x.length>1&&e.nodeType===9&&!t&&f.match.ID.test(x[0])&&!f.match.ID.test(x[x.length-1])){D=b.find(x.shift(),e,t);e=D.expr?b.filter(D.expr,D.set)[0]:D.set[0]}if(e){D=A?{expr:x.pop(),set:a(A)}:b.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&e.parentNode?e.parentNode:e,t);E=D.expr?b.filter(D.expr,D.set):D.set;if(x.length>0){H=a(E)}else{u=false}while(x.length){G=x.pop();F=G;if(!f.relative[G]){G=""}else{F=x.pop()}if(F==null){F=e}f.relative[G](H,F,t)}}else{H=x=[]}}if(!H){H=E}if(!H){b.error(G||v)}if(d.call(H)==="[object Array]"){if(!u){z.push.apply(z,H)}else{if(e&&e.nodeType===1){for(y=0;H[y]!=null;y++){if(H[y]&&(H[y]===true||H[y].nodeType===1&&b.contains(e,H[y]))){z.push(E[y])}}}else{for(y=0;H[y]!=null;y++){if(H[y]&&H[y].nodeType===1){z.push(E[y])}}}}}else{a(H,z)}if(r){b(r,C,z,A);b.uniqueSort(z)}return z};b.uniqueSort=function(r){if(c){o=i;r.sort(c);if(o){for(var e=1;e":function(x,r){var u=typeof r==="string",v,s=0,e=x.length;if(u&&!/\W/.test(r)){r=r.toLowerCase();for(;s=0)){if(!s){e.push(v)}}else{if(s){r[u]=false}}}}return false},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(r,e){return r[1].toLowerCase()},CHILD:function(e){if(e[1]==="nth"){var r=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(r[1]+(r[2]||1))-0;e[3]=r[3]-0}e[0]=j++;return e},ATTR:function(u,r,s,e,v,x){var t=u[1].replace(/\\/g,"");if(!x&&f.attrMap[t]){u[1]=f.attrMap[t]}if(u[2]==="~="){u[4]=" "+u[4]+" "}return u},PSEUDO:function(u,r,s,e,v){if(u[1]==="not"){if((p.exec(u[3])||"").length>1||/^\w/.test(u[3])){u[3]=b(u[3],null,null,r)}else{var t=b.filter(u[3],r,s,true^v);if(!s){e.push.apply(e,t)}return false}}else{if(f.match.POS.test(u[0])||f.match.CHILD.test(u[0])){return true}}return u},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){e.parentNode.selectedIndex;return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(s,r,e){return !!b(e[3],s).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||e.nodeName.toLowerCase()==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)}},setFilters:{first:function(r,e){return e===0},last:function(s,r,e,t){return r===t.length-1},even:function(r,e){return e%2===0},odd:function(r,e){return e%2===1},lt:function(s,r,e){return re[3]-0},nth:function(s,r,e){return e[3]-0===r},eq:function(s,r,e){return e[3]-0===r}},filter:{PSEUDO:function(s,y,x,z){var e=y[1],r=f.filters[e];if(r){return r(s,x,y,z)}else{if(e==="contains"){return(s.textContent||s.innerText||b.getText([s])||"").indexOf(y[3])>=0}else{if(e==="not"){var t=y[3];for(var v=0,u=t.length;v=0)}}},ID:function(r,e){return r.nodeType===1&&r.getAttribute("id")===e},TAG:function(r,e){return(e==="*"&&r.nodeType===1)||r.nodeName.toLowerCase()===e},CLASS:function(r,e){return(" "+(r.className||r.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(v,t){var s=t[1],e=f.attrHandle[s]?f.attrHandle[s](v):v[s]!=null?v[s]:v.getAttribute(s),x=e+"",u=t[2],r=t[4];return e==null?u==="!=":u==="="?x===r:u==="*="?x.indexOf(r)>=0:u==="~="?(" "+x+" ").indexOf(r)>=0:!r?x&&e!==false:u==="!="?x!==r:u==="^="?x.indexOf(r)===0:u==="$="?x.substr(x.length-r.length)===r:u==="|="?x===r||x.substr(0,r.length+1)===r+"-":false},POS:function(u,r,s,v){var e=r[2],t=f.setFilters[e];if(t){return t(u,s,r,v)}}}};var k=f.match.POS,g=function(r,e){return"\\"+(e-0+1)};for(var m in f.match){f.match[m]=new RegExp(f.match[m].source+(/(?![^\[]*\])(?![^\(]*\))/.source));f.leftMatch[m]=new RegExp(/(^(?:.|\r|\n)*?)/.source+f.match[m].source.replace(/\\(\d+)/g,g))}var a=function(r,e){r=Array.prototype.slice.call(r,0);if(e){e.push.apply(e,r);return e}return r};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(l){a=function(u,t){var r=t||[],s=0;if(d.call(u)==="[object Array]"){Array.prototype.push.apply(r,u)}else{if(typeof u.length==="number"){for(var e=u.length;s";var e=document.documentElement;e.insertBefore(r,e.firstChild);if(document.getElementById(s)){f.find.ID=function(u,v,x){if(typeof v.getElementById!=="undefined"&&!x){var t=v.getElementById(u[1]);return t?t.id===u[1]||typeof t.getAttributeNode!=="undefined"&&t.getAttributeNode("id").nodeValue===u[1]?[t]:undefined:[]}};f.filter.ID=function(v,t){var u=typeof v.getAttributeNode!=="undefined"&&v.getAttributeNode("id");return v.nodeType===1&&u&&u.nodeValue===t}}e.removeChild(r);e=r=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){f.find.TAG=function(r,v){var u=v.getElementsByTagName(r[1]);if(r[1]==="*"){var t=[];for(var s=0;u[s];s++){if(u[s].nodeType===1){t.push(u[s])}}u=t}return u}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){f.attrHandle.href=function(r){return r.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=b,s=document.createElement("div");s.innerHTML="

    ";if(s.querySelectorAll&&s.querySelectorAll(".TEST").length===0){return}b=function(x,v,t,u){v=v||document;if(!u&&v.nodeType===9&&!b.isXML(v)){try{return a(v.querySelectorAll(x),t)}catch(y){}}return e(x,v,t,u)};for(var r in e){b[r]=e[r]}s=null})()}(function(){var e=document.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}f.order.splice(1,0,"CLASS");f.find.CLASS=function(r,s,t){if(typeof s.getElementsByClassName!=="undefined"&&!t){return s.getElementsByClassName(r[1])}};e=null})();function n(r,x,v,A,y,z){for(var t=0,s=A.length;t0){u=e;break}}}e=e[r]}A[t]=u}}}b.contains=document.compareDocumentPosition?function(r,e){return !!(r.compareDocumentPosition(e)&16)}:function(r,e){return r!==e&&(r.contains?r.contains(e):true)};b.isXML=function(e){var r=(e?e.ownerDocument||e:0).documentElement;return r?r.nodeName!=="HTML":false};var h=function(e,y){var t=[],u="",v,s=y.nodeType?[y]:y;while((v=f.match.PSEUDO.exec(e))){u+=v[0];e=e.replace(f.match.PSEUDO,"")}e=f.relative[e]?e+"*":e;for(var x=0,r=s.length;x=0;h--){k=g[h];if(k.obj===l){j._remove(k.obj,k.name,k.cfunc);k.obj=k.cfunc=null;g.splice(h,1)}}}},cancel:function(g){if(!g){return false}this.stop(g);return this.prevent(g)},stop:function(g){if(g.stopPropagation){g.stopPropagation()}else{g.cancelBubble=true}return false},prevent:function(g){if(g.preventDefault){g.preventDefault()}else{g.returnValue=false}return false},destroy:function(){var g=this;f(g.events,function(j,h){g._remove(j.obj,j.name,j.cfunc);j.obj=j.cfunc=null});g.events=[];g=null},_add:function(h,i,g){if(h.attachEvent){h.attachEvent("on"+i,g)}else{if(h.addEventListener){h.addEventListener(i,g,false)}else{h["on"+i]=g}}},_remove:function(i,j,h){if(i){try{if(i.detachEvent){i.detachEvent("on"+j,h)}else{if(i.removeEventListener){i.removeEventListener(j,h,false)}else{i["on"+j]=null}}}catch(g){}}},_pageInit:function(h){var g=this;if(g.domLoaded){return}g.domLoaded=true;f(g.inits,function(i){i()});g.inits=[]},_wait:function(i){var g=this,h=i.document;if(i.tinyMCE_GZ&&tinyMCE_GZ.loaded){g.domLoaded=1;return}if(h.attachEvent){h.attachEvent("onreadystatechange",function(){if(h.readyState==="complete"){h.detachEvent("onreadystatechange",arguments.callee);g._pageInit(i)}});if(h.documentElement.doScroll&&i==i.top){(function(){if(g.domLoaded){return}try{h.documentElement.doScroll("left")}catch(j){setTimeout(arguments.callee,0);return}g._pageInit(i)})()}}else{if(h.addEventListener){g._add(i,"DOMContentLoaded",function(){g._pageInit(i)})}}g._add(i,"load",function(){g._pageInit(i)})},_stoppers:{preventDefault:function(){this.returnValue=false},stopPropagation:function(){this.cancelBubble=true}}});a=d.dom.Event=new d.dom.EventUtils();a._wait(window);d.addUnload(function(){a.destroy()})})(tinymce);(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j_';if(j.startContainer==k&&j.endContainer==k){k.body.innerHTML=i}else{j.deleteContents();if(k.body.childNodes.length==0){k.body.innerHTML=i}else{j.insertNode(j.createContextualFragment(i))}}l=f.dom.get("__caret");j=k.createRange();j.setStartBefore(l);j.setEndBefore(l);f.setRng(j);f.dom.remove("__caret")}else{if(j.item){k.execCommand("Delete",false,null);j=f.getRng()}j.pasteHTML(i)}f.onSetContent.dispatch(f,g)},getStart:function(){var g=this.getRng(),h,f,j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}j=g.duplicate();j.collapse(1);h=j.parentElement();f=i=g.parentElement();while(i=i.parentNode){if(i==h){h=f;break}}if(h&&h.nodeName=="BODY"){return h.firstChild||h}return h}else{h=g.startContainer;if(h.nodeType==1&&h.hasChildNodes()){h=h.childNodes[Math.min(h.childNodes.length-1,g.startOffset)]}if(h&&h.nodeType==3){return h.parentNode}return h}},getEnd:function(){var g=this,h=g.getRng(),i,f;if(h.duplicate||h.item){if(h.item){return h.item(0)}h=h.duplicate();h.collapse(0);i=h.parentElement();if(i&&i.nodeName=="BODY"){return i.lastChild||i}return i}else{i=h.endContainer;f=h.endOffset;if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[f>0?f-1:f]}if(i&&i.nodeType==3){return i.parentNode}return i}},getBookmark:function(q,r){var u=this,m=u.dom,g,j,i,n,h,o,p,l="\uFEFF",s;function f(v,x){var t=0;d(m.select(v),function(z,y){if(z==x){t=y}});return t}if(q==2){function k(){var v=u.getRng(true),t=m.getRoot(),x={};function y(B,G){var A=B[G?"startContainer":"endContainer"],F=B[G?"startOffset":"endOffset"],z=[],C,E,D=0;if(A.nodeType==3){if(r){for(C=A.previousSibling;C&&C.nodeType==3;C=C.previousSibling){F+=C.nodeValue.length}}z.push(F)}else{E=A.childNodes;if(F>=E.length&&E.length){D=1;F=Math.max(0,E.length-1)}z.push(u.dom.nodeIndex(E[F],r)+D)}for(;A&&A!=t;A=A.parentNode){z.push(u.dom.nodeIndex(A,r))}return z}x.start=y(v,true);if(!u.isCollapsed()){x.end=y(v)}return x}return k()}if(q){return{rng:u.getRng()}}g=u.getRng();i=m.uniqueId();n=tinyMCE.activeEditor.selection.isCollapsed();s="overflow:hidden;line-height:0px";if(g.duplicate||g.item){if(!g.item){j=g.duplicate();g.collapse();g.pasteHTML(''+l+"");if(!n){j.collapse(false);j.pasteHTML(''+l+"")}}else{o=g.item(0);h=o.nodeName;return{name:h,index:f(h,o)}}}else{o=u.getNode();h=o.nodeName;if(h=="IMG"){return{name:h,index:f(h,o)}}j=g.cloneRange();if(!n){j.collapse(false);j.insertNode(m.create("span",{_mce_type:"bookmark",id:i+"_end",style:s},l))}g.collapse(true);g.insertNode(m.create("span",{_mce_type:"bookmark",id:i+"_start",style:s},l))}u.moveToBookmark({id:i,keep:1});return{id:i}},moveToBookmark:function(n){var r=this,l=r.dom,i,h,f,q,j,s,o,p;if(r.tridentSel){r.tridentSel.destroy()}if(n){if(n.start){f=l.createRng();q=l.getRoot();function g(z){var t=n[z?"start":"end"],v,x,y,u;if(t){for(x=q,v=t.length-1;v>=1;v--){u=x.childNodes;if(u.length){x=u[t[v]]}}if(z){f.setStart(x,t[0])}else{f.setEnd(x,t[0])}}}g(true);g();r.setRng(f)}else{if(n.id){function k(A){var u=l.get(n.id+"_"+A),z,t,x,y,v=n.keep;if(u){z=u.parentNode;if(A=="start"){if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}j=s=z;o=p=t}else{if(!v){t=l.nodeIndex(u)}else{z=u.firstChild;t=1}s=z;p=t}if(!v){y=u.previousSibling;x=u.nextSibling;d(c.grep(u.childNodes),function(B){if(B.nodeType==3){B.nodeValue=B.nodeValue.replace(/\uFEFF/g,"")}});while(u=l.get(n.id+"_"+A)){l.remove(u,1)}if(y&&x&&y.nodeType==x.nodeType&&y.nodeType==3){t=y.nodeValue.length;y.appendData(x.nodeValue);l.remove(x);if(A=="start"){j=s=y;o=p=t}else{s=y;p=t}}}}}function m(t){if(!a&&l.isBlock(t)&&!t.innerHTML){t.innerHTML='
    '}return t}k("start");k("end");f=l.createRng();f.setStart(m(j),o);f.setEnd(m(s),p);r.setRng(f)}else{if(n.name){r.select(l.select(n.name)[n.index])}else{if(n.rng){r.setRng(n.rng)}}}}}},select:function(k,j){var i=this,l=i.dom,g=l.createRng(),f;f=l.nodeIndex(k);g.setStart(k.parentNode,f);g.setEnd(k.parentNode,f+1);if(j){function h(m,o){var n=new c.dom.TreeWalker(m,m);do{if(m.nodeType==3&&c.trim(m.nodeValue).length!=0){if(o){g.setStart(m,0)}else{g.setEnd(m,m.nodeValue.length)}return}if(m.nodeName=="BR"){if(o){g.setStartBefore(m)}else{g.setEndBefore(m)}return}}while(m=(o?n.next():n.prev()))}h(k,1);h(k)}i.setRng(g);return k},isCollapsed:function(){var f=this,h=f.getRng(),g=f.getSel();if(!h||h.item){return false}if(h.compareEndPoints){return h.compareEndPoints("StartToEnd",h)===0}return !g||h.collapsed},collapse:function(f){var g=this,h=g.getRng(),i;if(h.item){i=h.item(0);h=this.win.document.body.createTextRange();h.moveToElementText(i)}h.collapse(!!f);g.setRng(h)},getSel:function(){var g=this,f=this.win;return f.getSelection?f.getSelection():f.document.selection},getRng:function(j){var g=this,h,i;if(j&&g.tridentSel){return g.tridentSel.getRangeAt(0)}try{if(h=g.getSel()){i=h.rangeCount>0?h.getRangeAt(0):(h.createRange?h.createRange():g.win.document.createRange())}}catch(f){}if(!i){i=g.win.document.createRange?g.win.document.createRange():g.win.document.body.createTextRange()}if(g.selectedRange&&g.explicitRange){if(i.compareBoundaryPoints(i.START_TO_START,g.selectedRange)===0&&i.compareBoundaryPoints(i.END_TO_END,g.selectedRange)===0){i=g.explicitRange}else{g.selectedRange=null;g.explicitRange=null}}return i},setRng:function(i){var h,g=this;if(!g.tridentSel){h=g.getSel();if(h){g.explicitRange=i;h.removeAllRanges();h.addRange(i);g.selectedRange=h.getRangeAt(0)}}else{if(i.cloneRange){g.tridentSel.addRange(i);return}try{i.select()}catch(f){}}},setNode:function(g){var f=this;f.setContent(f.dom.getOuterHTML(g));return g},getNode:function(){var g=this,f=g.getRng(),h=g.getSel(),i;if(f.setStart){if(!f){return g.dom.getRoot()}i=f.commonAncestorContainer;if(!f.collapsed){if(f.startContainer==f.endContainer){if(f.startOffset-f.endOffset<2){if(f.startContainer.hasChildNodes()){i=f.startContainer.childNodes[f.startOffset]}}}if(c.isWebKit&&h.anchorNode&&h.anchorNode.nodeType==1){return h.anchorNode.childNodes[h.anchorOffset]}}if(i&&i.nodeType==3){return i.parentNode}return i}return f.item?f.item(0):f.parentElement()},getSelectedBlocks:function(g,f){var i=this,j=i.dom,m,h,l,k=[];m=j.getParent(g||i.getStart(),j.isBlock);h=j.getParent(f||i.getEnd(),j.isBlock);if(m){k.push(m)}if(m&&h&&m!=h){l=m;while((l=l.nextSibling)&&l!=h){if(j.isBlock(l)){k.push(l)}}}if(h&&m!=h){k.push(h)}return k},destroy:function(g){var f=this;f.win=null;if(f.tridentSel){f.tridentSel.destroy()}if(!g){c.removeUnload(f.destroy)}}})})(tinymce);(function(a){a.create("tinymce.dom.XMLWriter",{node:null,XMLWriter:function(c){function b(){var e=document.implementation;if(!e||!e.createDocument){try{return new ActiveXObject("MSXML2.DOMDocument")}catch(d){}try{return new ActiveXObject("Microsoft.XmlDom")}catch(d){}}else{return e.createDocument("","",null)}}this.doc=b();this.valid=a.isOpera||a.isWebKit;this.reset()},reset:function(){var b=this,c=b.doc;if(c.firstChild){c.removeChild(c.firstChild)}b.node=c.appendChild(c.createElement("html"))},writeStartElement:function(c){var b=this;b.node=b.node.appendChild(b.doc.createElement(c))},writeAttribute:function(c,b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.setAttribute(c,b)},writeEndElement:function(){this.node=this.node.parentNode},writeFullEndElement:function(){var b=this,c=b.node;c.appendChild(b.doc.createTextNode(""));b.node=c.parentNode},writeText:function(b){if(this.valid){b=b.replace(/>/g,"%MCGT%")}this.node.appendChild(this.doc.createTextNode(b))},writeCDATA:function(b){this.node.appendChild(this.doc.createCDATASection(b))},writeComment:function(b){if(a.isIE){b=b.replace(/^\-|\-$/g," ")}this.node.appendChild(this.doc.createComment(b.replace(/\-\-/g," ")))},getContent:function(){var b;b=this.doc.xml||new XMLSerializer().serializeToString(this.doc);b=b.replace(/<\?[^?]+\?>||<\/html>||]+>/g,"");b=b.replace(/ ?\/>/g," />");if(this.valid){b=b.replace(/\%MCGT%/g,">")}return b}})})(tinymce);(function(a){a.create("tinymce.dom.StringWriter",{str:null,tags:null,count:0,settings:null,indent:null,StringWriter:function(b){this.settings=a.extend({indent_char:" ",indentation:0},b);this.reset()},reset:function(){this.indent="";this.str="";this.tags=[];this.count=0},writeStartElement:function(b){this._writeAttributesEnd();this.writeRaw("<"+b);this.tags.push(b);this.inAttr=true;this.count++;this.elementCount=this.count},writeAttribute:function(d,b){var c=this;c.writeRaw(" "+c.encode(d)+'="'+c.encode(b)+'"')},writeEndElement:function(){var b;if(this.tags.length>0){b=this.tags.pop();if(this._writeAttributesEnd(1)){this.writeRaw("")}if(this.settings.indentation>0){this.writeRaw("\n")}}},writeFullEndElement:function(){if(this.tags.length>0){this._writeAttributesEnd();this.writeRaw("");if(this.settings.indentation>0){this.writeRaw("\n")}}},writeText:function(b){this._writeAttributesEnd();this.writeRaw(this.encode(b));this.count++},writeCDATA:function(b){this._writeAttributesEnd();this.writeRaw("");this.count++},writeComment:function(b){this._writeAttributesEnd();this.writeRaw("");this.count++},writeRaw:function(b){this.str+=b},encode:function(b){return b.replace(/[<>&"]/g,function(c){switch(c){case"<":return"<";case">":return">";case"&":return"&";case'"':return"""}return c})},getContent:function(){return this.str},_writeAttributesEnd:function(b){if(!this.inAttr){return}this.inAttr=false;if(b&&this.elementCount==this.count){this.writeRaw(" />");return false}this.writeRaw(">");return true}})})(tinymce);(function(e){var g=e.extend,f=e.each,b=e.util.Dispatcher,d=e.isIE,a=e.isGecko;function c(h){return h.replace(/([?+*])/g,".$1")}e.create("tinymce.dom.Serializer",{Serializer:function(j){var i=this;i.key=0;i.onPreProcess=new b(i);i.onPostProcess=new b(i);try{i.writer=new e.dom.XMLWriter()}catch(h){i.writer=new e.dom.StringWriter()}i.settings=j=g({dom:e.DOM,valid_nodes:0,node_filter:0,attr_filter:0,invalid_attrs:/^(_mce_|_moz_|sizset|sizcache)/,closed:/^(br|hr|input|meta|img|link|param|area)$/,entity_encoding:"named",entities:"160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",valid_elements:"*[*]",extended_valid_elements:0,invalid_elements:0,fix_table_elements:1,fix_list_elements:true,fix_content_duplication:true,convert_fonts_to_spans:false,font_size_classes:0,apply_source_formatting:0,indent_mode:"simple",indent_char:"\t",indent_levels:1,remove_linebreaks:1,remove_redundant_brs:1,element_format:"xhtml"},j);i.dom=j.dom;i.schema=j.schema;if(j.entity_encoding=="named"&&!j.entities){j.entity_encoding="raw"}if(j.remove_redundant_brs){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/(
    \s*)+<\/(p|h[1-6]|div|li)>/gi,function(n,m,o){if(/^
    \s*<\//.test(n)){return""}return n})})}if(j.element_format=="html"){i.onPostProcess.add(function(k,l){l.content=l.content.replace(/<([^>]+) \/>/g,"<$1>")})}if(j.fix_list_elements){i.onPreProcess.add(function(v,s){var l,z,y=["ol","ul"],u,t,q,k=/^(OL|UL)$/,A;function m(r,x){var o=x.split(","),p;while((r=r.previousSibling)!=null){for(p=0;p=1767){f(i.dom.select("p table",l.node).reverse(),function(p){var o=i.dom.getParent(p.parentNode,"table,p");if(o.nodeName!="TABLE"){try{i.dom.split(o,p)}catch(m){}}})}})}},setEntities:function(o){var n=this,j,m,h={},k;if(n.entityLookup){return}j=o.split(",");for(m=0;m1){f(q[1].split("|"),function(u){var p={},t;k=k||[];u=u.replace(/::/g,"~");u=/^([!\-])?([\w*.?~_\-]+|)([=:<])?(.+)?$/.exec(u);u[2]=u[2].replace(/~/g,":");if(u[1]=="!"){r=r||[];r.push(u[2])}if(u[1]=="-"){for(t=0;t=1767)){p=j.createHTMLDocument("");f(r.nodeName=="BODY"?r.childNodes:[r],function(h){p.body.appendChild(p.importNode(h,true))});if(r.nodeName!="BODY"){r=p.body.firstChild}else{r=p.body}i=k.dom.doc;k.dom.doc=p}k.key=""+(parseInt(k.key)+1);if(!q.no_events){q.node=r;k.onPreProcess.dispatch(k,q)}k.writer.reset();k._info=q;k._serializeNode(r,q.getInner);q.content=k.writer.getContent();if(i){k.dom.doc=i}if(!q.no_events){k.onPostProcess.dispatch(k,q)}k._postProcess(q);q.node=null;return e.trim(q.content)},_postProcess:function(n){var i=this,k=i.settings,j=n.content,m=[],l;if(n.format=="html"){l=i._protect({content:j,patterns:[{pattern:/(]*>)(.*?)(<\/script>)/g},{pattern:/(]*>)(.*?)(<\/noscript>)/g},{pattern:/(]*>)(.*?)(<\/style>)/g},{pattern:/(]*>)(.*?)(<\/pre>)/g,encode:1},{pattern:/()/g}]});j=l.content;if(k.entity_encoding!=="raw"){j=i._encode(j)}if(!n.set){j=j.replace(/

    \s+<\/p>|]+)>\s+<\/p>/g,k.entity_encoding=="numeric"?" 

    ":" 

    ");if(k.remove_linebreaks){j=j.replace(/\r?\n|\r/g," ");j=j.replace(/(<[^>]+>)\s+/g,"$1 ");j=j.replace(/\s+(<\/[^>]+>)/g," $1");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object) ([^>]+)>\s+/g,"<$1 $2>");j=j.replace(/<(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>\s+/g,"<$1>");j=j.replace(/\s+<\/(p|h[1-6]|blockquote|hr|div|table|tbody|tr|td|body|head|html|title|meta|style|pre|script|link|object)>/g,"")}if(k.apply_source_formatting&&k.indent_mode=="simple"){j=j.replace(/<(\/?)(ul|hr|table|meta|link|tbody|tr|object|body|head|html|map)(|[^>]+)>\s*/g,"\n<$1$2$3>\n");j=j.replace(/\s*<(p|h[1-6]|blockquote|div|title|style|pre|script|td|li|area)(|[^>]+)>/g,"\n<$1$2>");j=j.replace(/<\/(p|h[1-6]|blockquote|div|title|style|pre|script|td|li)>\s*/g,"\n");j=j.replace(/\n\n/g,"\n")}}j=i._unprotect(j,l);j=j.replace(//g,"");if(k.entity_encoding=="raw"){j=j.replace(/

     <\/p>|]+)> <\/p>/g,"\u00a0

    ")}j=j.replace(/]+|)>([\s\S]*?)<\/noscript>/g,function(h,p,o){return""+i.dom.decode(o.replace(//g,""))+""})}n.content=j},_serializeNode:function(D,I){var z=this,A=z.settings,x=z.writer,q,j,u,F,E,H,B,h,y,k,r,C,p,m,G,o;if(!A.node_filter||A.node_filter(D)){switch(D.nodeType){case 1:if(D.hasAttribute?D.hasAttribute("_mce_bogus"):D.getAttribute("_mce_bogus")){return}p=G=false;q=D.hasChildNodes();k=D.getAttribute("_mce_name")||D.nodeName.toLowerCase();o=D.getAttribute("_mce_type");if(o){if(!z._info.cleanup){p=true;return}else{G=1}}if(d){if(D.scopeName!=="HTML"&&D.scopeName!=="html"){k=D.scopeName+":"+k}}if(k.indexOf("mce:")===0){k=k.substring(4)}if(!G){if(!z.validElementsRE||!z.validElementsRE.test(k)||(z.invalidElementsRE&&z.invalidElementsRE.test(k))||I){p=true;break}}if(d){if(A.fix_content_duplication){if(D._mce_serialized==z.key){return}D._mce_serialized=z.key}if(k.charAt(0)=="/"){k=k.substring(1)}}else{if(a){if(D.nodeName==="BR"&&D.getAttribute("type")=="_moz"){return}}}if(A.validate_children){if(z.elementName&&!z.schema.isValid(z.elementName,k)){p=true;break}z.elementName=k}r=z.findRule(k);if(!r){p=true;break}k=r.name||k;m=A.closed.test(k);if((!q&&r.noEmpty)||(d&&!k)){p=true;break}if(r.requiredAttribs){H=r.requiredAttribs;for(F=H.length-1;F>=0;F--){if(this.dom.getAttrib(D,H[F])!==""){break}}if(F==-1){p=true;break}}x.writeStartElement(k);if(r.attribs){for(F=0,B=r.attribs,E=B.length;F-1;F--){h=B[F];if(h.specified){H=h.nodeName.toLowerCase();if(A.invalid_attrs.test(H)||!r.validAttribsRE.test(H)){continue}C=z.findAttribRule(r,H);y=z._getAttrib(D,C,H);if(y!==null){x.writeAttribute(H,y)}}}}if(o&&G){x.writeAttribute("_mce_type",o)}if(k==="script"&&e.trim(D.innerHTML)){x.writeText("// ");x.writeCDATA(D.innerHTML.replace(/|<\[CDATA\[|\]\]>/g,""));q=false;break}if(r.padd){if(q&&(u=D.firstChild)&&u.nodeType===1&&D.childNodes.length===1){if(u.hasAttribute?u.hasAttribute("_mce_bogus"):u.getAttribute("_mce_bogus")){x.writeText("\u00a0")}}else{if(!q){x.writeText("\u00a0")}}}break;case 3:if(A.validate_children&&z.elementName&&!z.schema.isValid(z.elementName,"#text")){return}return x.writeText(D.nodeValue);case 4:return x.writeCDATA(D.nodeValue);case 8:return x.writeComment(D.nodeValue)}}else{if(D.nodeType==1){q=D.hasChildNodes()}}if(q&&!m){u=D.firstChild;while(u){z._serializeNode(u);z.elementName=k;u=u.nextSibling}}if(!p){if(!m){x.writeFullEndElement()}else{x.writeEndElement()}}},_protect:function(j){var i=this;j.items=j.items||[];function h(l){return l.replace(/[\r\n\\]/g,function(m){if(m==="\n"){return"\\n"}else{if(m==="\\"){return"\\\\"}}return"\\r"})}function k(l){return l.replace(/\\[\\rn]/g,function(m){if(m==="\\n"){return"\n"}else{if(m==="\\\\"){return"\\"}}return"\r"})}f(j.patterns,function(l){j.content=k(h(j.content).replace(l.pattern,function(n,o,m,p){m=k(m);if(l.encode){m=i._encode(m)}j.items.push(m);return o+""+p}))});return j},_unprotect:function(i,j){i=i.replace(/\"))}if(a&&j.ListBox){if(a.Button||a.SplitButton){e+=b.createHTML("td",{"class":"mceToolbarEnd"},b.createHTML("span",null,""))}}if(b.stdMode){e+='
    '+j.renderHTML()+""+j.renderHTML()+"
    text|text2

    text|text2