From 3c168503834651b56b9b5de61621e8fbe958c298 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 11 Mar 2012 12:00:32 +0100 Subject: [PATCH 001/187] 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 fc52684e64..6a3e31cb7d 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 } } From 6cbd765e1ff77a1efb01b1f096a875c881c43905 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Sun, 11 Mar 2012 12:03:47 +0100 Subject: [PATCH 002/187] 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 6a3e31cb7d..fc52684e64 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 } } From c30342e2f7bde6fda899193f97ce3051cd8b2fdd Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 12 Mar 2012 15:58:59 +0100 Subject: [PATCH 003/187] 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 fc52684e64..f2975c4c6c 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()); From 29ade1d9b971bb14746bab5ec57db0e204c9e137 Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Thu, 15 Mar 2012 10:51:22 +0100 Subject: [PATCH 004/187] another test for xmlify --- tests/xss_filter_test.php | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/xss_filter_test.php b/tests/xss_filter_test.php index d7dcf0472b..3fb6ac3109 100644 --- a/tests/xss_filter_test.php +++ b/tests/xss_filter_test.php @@ -27,11 +27,32 @@ class AntiXSSTest extends PHPUnit_Framework_TestCase { */ public function testXmlify() { $text="I want to break\n this!11!"; - $xml=xmlify($text); //test whether it actually may be part of a xml document + $xml=xmlify($text); $retext=unxmlify($text); $this->assertEquals($text, $retext); } + + /** + * xmlify and put in a document + */ + public function testXmlifyDocument() { + $tag="I want to break"; + $xml=xmlify($tag); + $text=''.$xml.''; + + $xml_parser=xml_parser_create(); + //should be possible to parse it + $values=array(); $index=array(); + $this->assertEquals(1, xml_parse_into_struct($xml_parser, $text, $values, $index)); + + $this->assertEquals(array('TEXT'=>array(0)), + $index); + $this->assertEquals(array(array('tag'=>'TEXT', 'type'=>'complete', 'level'=>1, 'value'=>$tag)), + $values); + + xml_parser_free($xml_parser); + } /** * test hex2bin and reverse From 9796e99fa8378758c4fe0f655b7c192f8fc1690f Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Thu, 15 Mar 2012 11:45:06 +0100 Subject: [PATCH 005/187] added simple build-in profiling --- boot.php | 2 +- database.sql | 11 ++++++++++- index.php | 1 + update.php | 16 ++++++++++++++++ util/profiler.php | 36 ++++++++++++++++++++++++++++++++++++ 5 files changed, 64 insertions(+), 2 deletions(-) create mode 100755 util/profiler.php diff --git a/boot.php b/boot.php index b30f02c9f6..e2494092de 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.1278' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); -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 35c257f021..f8d4c7fc24 100755 --- a/database.sql +++ b/database.sql @@ -857,4 +857,13 @@ INDEX ( `ham` ), INDEX ( `term` ) ) ENGINE = MyISAM DEFAULT CHARSET=utf8; - +CREATE TABLE IF NOT EXISTS `profiling` ( +`id` INT NOT NULL AUTO_INCREMENT PRIMARY_KEY , +`function` VARCHAR(255) NOT NULL, +`file` VARCHAR(255) NOT NULL, +`line` INT NOT NULL DEFAULT '-1', +`class` VARCHAR(255), +`time` FLOAT(10, 2) NOT NULL, +INDEX(`function`), +INDEX(`file`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/index.php b/index.php index 5f6d74adb9..688eee2ee2 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); +require_once('util/profiler.php'); if(! $install) { diff --git a/update.php b/update.php index c29394b480..36116341a0 100755 --- a/update.php +++ b/update.php @@ -1122,3 +1122,19 @@ function update_1130() { q("ALTER TABLE `item` ADD `file` MEDIUMTEXT NOT NULL AFTER `inform`, ADD FULLTEXT KEY (`file`) "); } +/** + * CREATE TABLE for profiling + */ +function update_1132() { + q("CREATE TABLE IF NOT EXISTS `profiling` ( +`id` INT NOT NULL AUTO_INCREMENT PRIMARY_KEY , +`function` VARCHAR(255) NOT NULL, +`file` VARCHAR(255) NOT NULL, +`line` INT NOT NULL DEFAULT '-1', +`class` VARCHAR(255), +`time` FLOAT(10, 2) NOT NULL, +INDEX(`function`), +INDEX(`file`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; "); +} + diff --git a/util/profiler.php b/util/profiler.php new file mode 100755 index 0000000000..3a3de53739 --- /dev/null +++ b/util/profiler.php @@ -0,0 +1,36 @@ + Date: Thu, 15 Mar 2012 12:55:49 +0100 Subject: [PATCH 006/187] integrated profiler --- database.sql | 18 +++++++++--------- update.php | 22 +++++++++++----------- util/profiler.php | 27 ++++++--------------------- 3 files changed, 26 insertions(+), 41 deletions(-) diff --git a/database.sql b/database.sql index f8d4c7fc24..e07e9e0701 100755 --- a/database.sql +++ b/database.sql @@ -858,12 +858,12 @@ INDEX ( `term` ) ) ENGINE = MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `profiling` ( -`id` INT NOT NULL AUTO_INCREMENT PRIMARY_KEY , -`function` VARCHAR(255) NOT NULL, -`file` VARCHAR(255) NOT NULL, -`line` INT NOT NULL DEFAULT '-1', -`class` VARCHAR(255), -`time` FLOAT(10, 2) NOT NULL, -INDEX(`function`), -INDEX(`file`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; +`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , +`function` VARCHAR( 255 ) NOT NULL , +`file` VARCHAR( 255 ) NOT NULL , +`line` INT NOT NULL DEFAULT '-1', +`class` VARCHAR( 255 ) NOT NULL , +`time` FLOAT( 10, 2 ) NOT NULL , +INDEX ( `function` ) , +INDEX ( `file` ) +) ENGINE = MyISAM DEFAULT CHARSET=utf8; diff --git a/update.php b/update.php index 36116341a0..8c8a2a5e42 100755 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Thu, 15 Mar 2012 17:27:06 -0400 Subject: [PATCH 008/187] 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 6228e4f282..350a6ce4a9 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 2dc21817a2..6ab0c7921a 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; From 7684f63ecdfce560f24475630144f6058df15ca9 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 15 Mar 2012 16:38:26 -0700 Subject: [PATCH 009/187] 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 04f36093bf..86da3cd2eb 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 35c257f021..5f69a1d008 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 4b1523ff65..68acb45f9b 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 0bc3ea7df5..2f4fb70452 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 3dbdc5b328..71860ac3b1 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 c29394b480..6a685a6ff0 100755 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Fri, 16 Mar 2012 03:49:43 +0100 Subject: [PATCH 010/187] 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 0000000000000000000000000000000000000000..bc5969ef1afd41f0cfba08f51a0ac17356e60c3f GIT binary patch literal 680 zcmV;Z0$2TsP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyY? z0Rkbx3`0-=00JmUL_t(I%k9#=Z&Fbh2Jq)S_k-KZ1#T4r@^xEjWNEvYK;oo}sYAEM zq3K3oHHI`Dn;1778dLuQ{WDD6YBZ7>gG~UVKm(>GG`&!IODX5LD-CpTF@469_x$qa zJO{YWzYa}0SO#PPD2yS)3@ry>7N9BaIPA^G~#Tg@6?w7#SGGYWL(F?X~!*~Yxj6(t_byC0;WYDIx*FHs_d z>adTk)(4Dl9yubC_du#c$gS6%b&u*`|91x z$4@RRpN%-1CB*@C>%{$Ta1z)#K7_E7NQKj4zt*O4=q0~`rsPNrvfl%4g&-LkJU$cm zX&$EJrE;T%ap>ss9EUpF1!&7d49o=#&NLKCyO=v#L#!RW^i8kxALTa>E5j@Pn;_Hx O0000 literal 0 HcmV?d00001 diff --git a/view/theme/diabook-blue/icons/events.png b/view/theme/diabook-blue/icons/events.png new file mode 100644 index 0000000000000000000000000000000000000000..4a0b3f3f11316265ad45472244094c3fbc27147d GIT binary patch literal 663 zcmV;I0%-k-P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyY? z067OPaYLd200I|DL_t(I%k7j+OB+!XhMzl`8BGSXGpW?p)x_=se$Z*9BgdJX%NV_=NVB&JC#O|bzxpT`0kaZKN~>1mC5 zGbeX}|FE$Sj~^LE^Q>HE-*tH!hP-MvQCgEk5kFj)Q_JFQqrtPwODx&R43Es#EIpBK`&^S4Pxw-o@HaZ<>w-FJ@GLEZN_O`YN&(En>tL$uUl7pLmyN$ZK zVyNTYmWWU+7U_1oc%DbE*JEa8hJL?K6h-JeBKT_*gJ8#T07#OAcDv2^_&Bv%4G|%V zB9v0Yft6Cfhebpbfa5s$zR%Ru6k2Oar4pS^hitP=_j5V0w84ZHw6Fy002ovPDHLkV1n4c9mD_t literal 0 HcmV?d00001 diff --git a/view/theme/diabook-blue/icons/home.png b/view/theme/diabook-blue/icons/home.png new file mode 100644 index 0000000000000000000000000000000000000000..be47a48fc3638b94385eec044d6373e056890b09 GIT binary patch literal 722 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 + + $imgalt +

$desc

+
+
+
diff --git a/view/theme/diabook-blue/photo_top.tpl b/view/theme/diabook-blue/photo_top.tpl new file mode 100755 index 0000000000..98ac9c4576 --- /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 511fc73acb..902c2a0ed3 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 01da55ce1c..a65677696a 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 bdc79a350d..738dde0e5d 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 9093ac2ca2..f9128ea1fd 100755 --- a/view/theme/diabook-blue/theme.php +++ b/view/theme/diabook-blue/theme.php @@ -11,10 +11,10 @@ $a->theme_info = array( 'extends' => 'diabook', ); +//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 b7568631ff..437f323faa 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 321bbbe9ea..ebe40fd4ea 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 05ed4cc82c..e02e5a8bec 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 From 5a12383b78980d873f54ccbac2733d7267f7da36 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 15 Mar 2012 19:55:58 -0700 Subject: [PATCH 011/187] 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 10ddb00909..b79b00ef41 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 2c88fc598e..e2db70a14a 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 211906c934..420c0e08b9 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 }} From be4e4dfb0d552857c683ee7f7bf5cf0a4bdfb686 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 15 Mar 2012 20:07:30 -0700 Subject: [PATCH 012/187] 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 5f9531a7eb..28ac3dd802 100755 --- a/.htaccess +++ b/.htaccess @@ -1,4 +1,4 @@ -#Options -Indexes +Options -Indexes AddType application/x-java-archive .jar AddType audio/ogg .oga From 6bdb71f01c93c691a43caaf9686ce5ac0b687701 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 01:55:34 -0400 Subject: [PATCH 014/187] 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 6ab0c7921a..d1ec4efd73 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 From d965f73ef149e6baaf058987c146901e3cc16fa0 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 01:57:27 -0400 Subject: [PATCH 015/187] 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 b284ffb0e3..22e35dec81 --- a/view/mail_list.tpl +++ b/view/mail_list.tpl @@ -1,6 +1,6 @@
- $from_name + $from_name
$from_name
From be1bd9ff4e725f7e60b05acd415aee892e97f956 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 05:19:29 -0700 Subject: [PATCH 016/187] notification for disapora comments --- include/diaspora.php | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/include/diaspora.php b/include/diaspora.php index dca857a198..19bba52168 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; } From 805087af678f922ad75535fa8dbe0fc86d9cd566 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 05:41:29 -0700 Subject: [PATCH 017/187] whitespace --- include/items.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/items.php b/include/items.php index 68acb45f9b..5e1fec5578 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), From 224dfa848bf2659ba038b6e519692d3755eb7bed Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 05:51:04 -0700 Subject: [PATCH 018/187] 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 d34fd7fbee..cdf82ca87d 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 d0f1733f46..9ec8c23b59 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, )); From 28f941193d75ca12f4cb2a38a1c60e60ad10f2a6 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 06:02:26 -0700 Subject: [PATCH 019/187] 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 98cfb43385..07b4bfef76 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; + } + } + } } } From 7b15f27ba48f5a1b0e24290379e2524796776803 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 13:31:59 -0400 Subject: [PATCH 020/187] weee, dispys get another update Signed-off-by: Simon L'nu --- view/theme/dispy-dark/style.css | 51 ++-- 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, 293 insertions(+), 194 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 d1ec4efd73..b4aefbbf23 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;*/ + /*left: 35%; + top: 41%; + cursor: pointer;*/ } -/*.profile-edit-side-div:hover {*/ - /*display: block;*/ -/*}*/ -/*.profile-edit-side-link {*/ - /*margin: 3px 0px 0px 70px;*/ -/*}*/ +/*.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 c0611ce83d..0134b1f91b 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 fbf354b475..04968bd07d 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 516d70d5b4..10ecec2e85 100644 --- a/view/theme/dispy/group_side.tpl +++ b/view/theme/dispy/group_side.tpl @@ -1,5 +1,5 @@ -
-

$title

+
+

$title

+
$item.name 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: [PATCH 021/187] 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 67d8cebdeb..a5f5aff532 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 55e313776d..0907abd77f 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 b5c78345a3..1f8650bfe3 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 4b904cbcd6..2ce07ce6fd 100755 --- a/view/prv_message.tpl +++ b/view/prv_message.tpl @@ -10,14 +10,14 @@ $parent $select
$subject
- +
$yourmessage
- +
- +
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: [PATCH 022/187] 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 1f8650bfe3..b1fcefd247 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); 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: [PATCH 023/187] 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 b1fcefd247..098333893f 100755 --- a/view/msg-header.tpl +++ b/view/msg-header.tpl @@ -37,7 +37,7 @@ if(plaintext != 'none') { textarea.attr('tabindex', null); } }); - }, + } }); } From 91fee866b7f870b66d770c7c4e6db0afd874de33 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 16:43:34 -0400 Subject: [PATCH 025/187] 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 0134b1f91b..b57971db96 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 ac97948a38..9f0fcba828 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() { From 58940175e173c04c9bfa3498af40c65f6514a9ce Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 15:07:45 -0700 Subject: [PATCH 026/187] 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 86da3cd2eb..322340e5d7 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 19bba52168..1b5af42cd9 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'], From 949c6d47b5b9a3e796cdf6dff79d6d532f4a3159 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 15:19:38 -0700 Subject: [PATCH 027/187] 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 88ecf502b2..8ca484c9e7 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( From 82f2bfea5bbf7c35450eb8fe9ee119e0b00d3d61 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 16:05:16 -0700 Subject: [PATCH 029/187] 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 f694b5840f..3a8ad29d28 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'))), )); From 368d93625dc7ac206b3dbb85af15dc90f593fcd7 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 20:29:02 -0400 Subject: [PATCH 030/187] 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 2d3e4fd56e..3598e34f27 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"); + }); From 49540fb958376d067f44a9274f8edeb80f10da3a Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 21:20:23 -0400 Subject: [PATCH 032/187] 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 f428149e83..81ed174acc 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] : ''); From 75883b196ed222b9972c87ce00b8e7c2ab29c05e Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 21:23:24 -0400 Subject: [PATCH 033/187] 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 3598e34f27..2d3e4fd56e 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 9f0fcba828..26e07b1f76 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() { From 87fdae2dd8bdb9e01ce3d98f6ea94d83664cb4c2 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sat, 17 Mar 2012 01:55:40 -0400 Subject: [PATCH 035/187] [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 2c467c3c26..2651ea1f89 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 5dbcabadf7..732caf6900 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 f1209ec58f..732caf6900 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 b57971db96..7001361739 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() { From 511d8a30a05f76a08582f2d7a9ccd78dbd744c57 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 23:51:49 -0700 Subject: [PATCH 036/187] 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 322340e5d7..836900fc4a 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']; From 057a142b8cd01cd8ab6212e9d958989c82dfccc3 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 17 Mar 2012 00:08:52 -0700 Subject: [PATCH 037/187] 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 07b4bfef76..fe570075f2 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); From e0e008fb8d894c7fe56fbb88fa96224c0796ea75 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 17 Mar 2012 02:26:52 -0700 Subject: [PATCH 039/187] 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 7f7b0b55bd..93bf391c5f 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 88ccad6d3e..a64b269035 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), From 26258bca77aa3385dacf36874f7f5603eaef9a6b Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 17 Mar 2012 02:36:59 -0700 Subject: [PATCH 040/187] 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 836900fc4a..b0a6311703 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. From 94fac6d76725042fc176aaebd2af721ab1540ff7 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 17 Mar 2012 03:43:02 -0700 Subject: [PATCH 041/187] queue optimisation - back off delivery attempts to once per hour after the first 12 hours. --- include/queue.php | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/include/queue.php b/include/queue.php index d312b50f5a..7e92705be2 100755 --- a/include/queue.php +++ b/include/queue.php @@ -61,13 +61,18 @@ function queue_run($argv, $argc){ q("DELETE FROM `queue` WHERE `created` < UTC_TIMESTAMP() - INTERVAL 3 DAY"); } - if($queue_id) + if($queue_id) { $r = q("SELECT `id` FROM `queue` WHERE `id` = %d LIMIT 1", intval($queue_id) ); - else - $r = q("SELECT `id` FROM `queue` WHERE `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE "); + } + else { + // For the first 12 hours we'll try to deliver every 15 minutes + // After that, we'll only attempt delivery once per hour. + + $r = q("SELECT `id` FROM `queue` WHERE (( `created` > UTC_TIMESTAMP() - INTERVAL 12 HOUR && `last` < UTC_TIMESTAMP() - INTERVAL 15 MINUTE ) OR ( `last` < UTC_TIMESTAMP() - INTERVAL 1 HOUR ))"); + } if(! count($r)){ return; } From 67fd539f53756723d844dd204639146587f5bb76 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 17 Mar 2012 18:15:36 -0700 Subject: [PATCH 042/187] bug #337, call template_unescape() only at the end of template processing --- boot.php | 2 +- include/network.php | 4 ++-- include/template_processor.php | 2 +- include/text.php | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/boot.php b/boot.php index b0a6311703..b3c79079a6 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.1283' ); +define ( 'FRIENDICA_VERSION', '2.3.1284' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1132 ); diff --git a/include/network.php b/include/network.php index c72919dd8b..22157ff188 100755 --- a/include/network.php +++ b/include/network.php @@ -303,7 +303,7 @@ function webfinger_dfrn($s,&$hcard) { if(! function_exists('webfinger')) { -function webfinger($s) { +function webfinger($s, $debug = false) { $host = ''; if(strstr($s,'@')) { $host = substr($s,strpos($s,'@') + 1); @@ -328,7 +328,7 @@ function webfinger($s) { }} if(! function_exists('lrdd')) { -function lrdd($uri) { +function lrdd($uri, $debug = false) { $a = get_app(); diff --git a/include/template_processor.php b/include/template_processor.php index 93bf391c5f..4c317efe1f 100755 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -203,7 +203,7 @@ $os=$s; $count++; $s = $this->var_replace($s); } - return template_unescape($s); + return $s; } } diff --git a/include/text.php b/include/text.php index cdf82ca87d..89acbf9fab 100644 --- a/include/text.php +++ b/include/text.php @@ -20,7 +20,7 @@ function replace_macros($s,$r) { //$a = get_app(); //$a->page['debug'] .= "$tt
\n"; - return $r; + return template_unescape($r); }} From 9e731506c2ccc05cf1eab98868d5c1bdbd0967ba Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 17 Mar 2012 22:14:17 -0700 Subject: [PATCH 043/187] remove admin view of local directory --- .../plugins/bbcode/editor_plugin_src.js | 197 ++++++------------ mod/directory.php | 17 +- 2 files changed, 63 insertions(+), 151 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 183f2bc68d..e5f716b297 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 @@ -45,78 +45,34 @@ 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]"); - + s = s.replace(re, str); }; - - - - - /* oembed */ - function _h2b_cb(match) { - /* - function s_h2b(data) { - match = data; + + + + + /* 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' - }); - */ - - 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; - } + data: {text: match}, + async: false, + success: s_h2b, + dataType: 'html' + }); + 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]"); @@ -129,16 +85,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(/
                            (.*?)<\/ul>/gi,"[list=a]$1[/list]"); + rep(/
                              (.*?)<\/ul>/gi,"[list=A]$1[/list]"); + rep(/
                            • (.*?)<\/li>/gi,'[li]$1[/li]'); + rep(/(.*?)<\/code>/gi,"[code]$1[/code]"); rep(/<\/(strong|b)>/gi,"[/b]"); rep(/<(strong|b)>/gi,"[b]"); @@ -168,40 +124,9 @@ _dfrn_bbcode2html : 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]"); - - }; - - - - + function rep(re, str) { + s = s.replace(re, str); + }; // example: [b] to rep(/\n/gi,"
                              "); @@ -211,43 +136,43 @@ rep(/\[\/i\]/gi,""); rep(/\[u\]/gi,""); rep(/\[\/u\]/gi,""); - rep(/\[hr\]/gi,"
                              "); + rep(/\[hr\]/gi,"
                              "); rep(/\[bookmark=([^\]]+)\](.*?)\[\/bookmark\]/gi,"$2"); rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2"); rep(/\[url\](.*?)\[\/url\]/gi,"
                              $1"); rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,""); rep(/\[img\](.*?)\[\/img\]/gi,""); - - rep(/\[list\](.*?)\[\/list\]/gi, '
                                $1
                              '); - rep(/\[list=\](.*?)\[\/list\]/gi, '
                                $1
                              '); - rep(/\[list=1\](.*?)\[\/list\]/gi, '
                                $1
                              '); - rep(/\[list=i\](.*?)\[\/list\]/gi,'
                                $1
                              '); - rep(/\[list=I\](.*?)\[\/list\]/gi, '
                                $1
                              '); - rep(/\[list=a\](.*?)\[\/list\]/gi, '
                                $1
                              '); - rep(/\[list=A\](.*?)\[\/list\]/gi, '
                                $1
                              '); - rep(/\[li\](.*?)\[\/li\]/gi, '
                            • $1
                            • '); + + rep(/\[list\](.*?)\[\/list\]/gi, '
                                $1
                              '); + rep(/\[list=\](.*?)\[\/list\]/gi, '
                                $1
                              '); + rep(/\[list=1\](.*?)\[\/list\]/gi, '
                                $1
                              '); + rep(/\[list=i\](.*?)\[\/list\]/gi,'
                                $1
                              '); + rep(/\[list=I\](.*?)\[\/list\]/gi, '
                                $1
                              '); + rep(/\[list=a\](.*?)\[\/list\]/gi, '
                                $1
                              '); + rep(/\[list=A\](.*?)\[\/list\]/gi, '
                                $1
                              '); + rep(/\[li\](.*?)\[\/li\]/gi, '
                            • $1
                            • '); rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); rep(/\[size=(.*?)\](.*?)\[\/size\]/gi,"$2"); rep(/\[code\](.*?)\[\/code\]/gi,"$1"); rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"
                              $1
                              "); - - /* oembed */ - function _b2h_cb(match, url) { - url = bin2hex(url); - function s_b2h(data) { - match = data; - } - $.ajax({ - url: 'oembed/b2h?url=' + url, - async: false, - success: s_b2h, - dataType: 'html' - }); - return match; - } - s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb); - - /* /oembed */ + + /* oembed */ + function _b2h_cb(match, url) { + url = bin2hex(url); + function s_b2h(data) { + match = data; + } + $.ajax({ + url: 'oembed/b2h?url=' + url, + async: false, + success: s_b2h, + dataType: 'html' + }); + return match; + } + s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb); + + /* /oembed */ return s; } diff --git a/mod/directory.php b/mod/directory.php index 962188945f..7f18bd0268 100755 --- a/mod/directory.php +++ b/mod/directory.php @@ -25,10 +25,6 @@ function directory_post(&$a) { function directory_content(&$a) { - $everything = (($a->argc > 1 && $a->argv[1] === 'all' && is_site_admin()) ? true : false); - if(x($_SESSION,'submanage') && intval($_SESSION['submanage'])) - $everything = false; - if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) { notice( t('Public access denied.') . EOL); return; @@ -52,12 +48,6 @@ function directory_content(&$a) { } $admin = ''; - if(is_site_admin()) { - if($everything) - $admin = ''; - else - $admin = ''; - } $o .= replace_macros($tpl, array( '$search' => $search, @@ -73,17 +63,14 @@ function directory_content(&$a) { $search = dbesc($search); $sql_extra = ((strlen($search)) ? " AND MATCH (`profile`.`name`, `user`.`nickname`, `pdesc`, `locality`,`region`,`country-name`,`gender`,`marital`,`sexual`,`about`,`romance`,`work`,`education`,`pub_keywords`,`prv_keywords` ) AGAINST ('$search' IN BOOLEAN MODE) " : ""); - $publish = ((get_config('system','publish_all') || $everything) ? '' : " AND `publish` = 1 " ); + $publish = ((get_config('system','publish_all')) ? '' : " AND `publish` = 1 " ); $r = q("SELECT COUNT(*) AS `total` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra "); if(count($r)) $a->set_pager_total($r[0]['total']); - if($everything) - $order = " ORDER BY `register_date` DESC "; - else - $order = " ORDER BY `name` ASC "; + $order = " ORDER BY `name` ASC "; $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` 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 ", From 4bb280bc2f7068f0c1199e9f8119e25278aa3bcb Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 17 Mar 2012 22:18:21 -0700 Subject: [PATCH 044/187] lost changes to tinymce/bbcode --- .../plugins/bbcode/editor_plugin_src.js | 197 ++++++++++++------ 1 file changed, 136 insertions(+), 61 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 e5f716b297..183f2bc68d 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 @@ -45,34 +45,78 @@ s = tinymce.trim(s); function rep(re, str) { - s = s.replace(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; + + + + + /* 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]"); @@ -85,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(/
                                                        (.*?)<\/ul>/gi,"[list=a]$1[/list]"); + rep(/
                                                          (.*?)<\/ul>/gi,"[list=A]$1[/list]"); + rep(/
                                                        • (.*?)<\/li>/gi,'[li]$1[/li]'); + rep(/(.*?)<\/code>/gi,"[code]$1[/code]"); rep(/<\/(strong|b)>/gi,"[/b]"); rep(/<(strong|b)>/gi,"[b]"); @@ -124,9 +168,40 @@ _dfrn_bbcode2html : function(s) { s = tinymce.trim(s); - function rep(re, str) { - s = s.replace(re, str); - }; + + 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]"); + + }; + + + + // example: [b] to rep(/\n/gi,"
                                                          "); @@ -136,43 +211,43 @@ rep(/\[\/i\]/gi,""); rep(/\[u\]/gi,""); rep(/\[\/u\]/gi,""); - rep(/\[hr\]/gi,"
                                                          "); + rep(/\[hr\]/gi,"
                                                          "); rep(/\[bookmark=([^\]]+)\](.*?)\[\/bookmark\]/gi,"$2"); rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"$2"); rep(/\[url\](.*?)\[\/url\]/gi,"
                                                          $1"); rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,""); rep(/\[img\](.*?)\[\/img\]/gi,""); - - rep(/\[list\](.*?)\[\/list\]/gi, '
                                                            $1
                                                          '); - rep(/\[list=\](.*?)\[\/list\]/gi, '
                                                            $1
                                                          '); - rep(/\[list=1\](.*?)\[\/list\]/gi, '
                                                            $1
                                                          '); - rep(/\[list=i\](.*?)\[\/list\]/gi,'
                                                            $1
                                                          '); - rep(/\[list=I\](.*?)\[\/list\]/gi, '
                                                            $1
                                                          '); - rep(/\[list=a\](.*?)\[\/list\]/gi, '
                                                            $1
                                                          '); - rep(/\[list=A\](.*?)\[\/list\]/gi, '
                                                            $1
                                                          '); - rep(/\[li\](.*?)\[\/li\]/gi, '
                                                        • $1
                                                        • '); + + rep(/\[list\](.*?)\[\/list\]/gi, '
                                                            $1
                                                          '); + rep(/\[list=\](.*?)\[\/list\]/gi, '
                                                            $1
                                                          '); + rep(/\[list=1\](.*?)\[\/list\]/gi, '
                                                            $1
                                                          '); + rep(/\[list=i\](.*?)\[\/list\]/gi,'
                                                            $1
                                                          '); + rep(/\[list=I\](.*?)\[\/list\]/gi, '
                                                            $1
                                                          '); + rep(/\[list=a\](.*?)\[\/list\]/gi, '
                                                            $1
                                                          '); + rep(/\[list=A\](.*?)\[\/list\]/gi, '
                                                            $1
                                                          '); + rep(/\[li\](.*?)\[\/li\]/gi, '
                                                        • $1
                                                        • '); rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); rep(/\[size=(.*?)\](.*?)\[\/size\]/gi,"$2"); rep(/\[code\](.*?)\[\/code\]/gi,"$1"); rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"
                                                          $1
                                                          "); - - /* oembed */ - function _b2h_cb(match, url) { - url = bin2hex(url); - function s_b2h(data) { - match = data; - } - $.ajax({ - url: 'oembed/b2h?url=' + url, - async: false, - success: s_b2h, - dataType: 'html' - }); - return match; - } - s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb); - - /* /oembed */ + + /* oembed */ + function _b2h_cb(match, url) { + url = bin2hex(url); + function s_b2h(data) { + match = data; + } + $.ajax({ + url: 'oembed/b2h?url=' + url, + async: false, + success: s_b2h, + dataType: 'html' + }); + return match; + } + s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb); + + /* /oembed */ return s; } From 72894b0e91515461717c584879e5a4331841104a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Sun, 18 Mar 2012 10:36:49 +0000 Subject: [PATCH 045/187] replace split() by explode(); split is deprecated --- include/conversation.php | 2 +- include/email.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 8ca484c9e7..e9f024c274 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -649,7 +649,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { // template to use to render item (wall, walltowall, search) 'template' => $template, - 'type' => implode("",array_slice(split("/",$item['verb']),-1)), + 'type' => implode("",array_slice(explode("/",$item['verb']),-1)), 'tags' => $tags, 'body' => template_escape($body), 'text' => strip_tags(template_escape($body)), diff --git a/include/email.php b/include/email.php index a3449a4249..8ea8145fb6 100755 --- a/include/email.php +++ b/include/email.php @@ -56,7 +56,7 @@ function email_msg_headers($mbox,$uid) { $raw_header = (($mbox && $uid) ? @imap_fetchheader($mbox,$uid,FT_UID) : ''); $raw_header = str_replace("\r",'',$raw_header); $ret = array(); - $h = split("\n",$raw_header); + $h = explode("\n",$raw_header); if(count($h)) foreach($h as $line ) { if (preg_match("/^[a-zA-Z]/", $line)) { From 453b5b46a370e3f01f2c948ac3eddf0bcd82c741 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Sun, 18 Mar 2012 15:44:33 +0000 Subject: [PATCH 046/187] CSRF-Protection in the group-related form (creating, renaming and dropping a group, adding/removing members from it) --- include/security.php | 6 ++++++ js/main.js | 4 ++-- mod/group.php | 26 +++++++++++++++++++------- view/group_drop.tpl | 2 +- view/group_edit.tpl | 1 + 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/include/security.php b/include/security.php index 6ea515bffe..45473445a7 100755 --- a/include/security.php +++ b/include/security.php @@ -334,3 +334,9 @@ function check_form_security_token_redirectOnErr($err_redirect, $typename = "", goaway($a->get_baseurl() . $err_redirect ); } } +function check_form_security_token_ForbiddenOnErr($typename = "", $formname = 'form_security_token') { + if (!check_form_security_token($typename, $formname)) { + header('HTTP/1.1 403 Forbidden'); + killme(); + } +} \ No newline at end of file diff --git a/js/main.js b/js/main.js index c20455ad14..babd2a1c38 100755 --- a/js/main.js +++ b/js/main.js @@ -486,9 +486,9 @@ return a.join(''); } - function groupChangeMember(gid,cid) { + function groupChangeMember(gid, cid, sec_token) { $('body .fakelink').css('cursor', 'wait'); - $.get('group/' + gid + '/' + cid, function(data) { + $.get('group/' + gid + '/' + cid + "?t=" + sec_token, function(data) { $('#group-update-wrapper').html(data); $('body .fakelink').css('cursor', 'auto'); }); diff --git a/mod/group.php b/mod/group.php index 13401ef0d9..a282dbccf5 100755 --- a/mod/group.php +++ b/mod/group.php @@ -21,6 +21,8 @@ function group_post(&$a) { } if(($a->argc == 2) && ($a->argv[1] === 'new')) { + check_form_security_token_redirectOnErr('/group/new', 'group_edit'); + $name = notags(trim($_POST['groupname'])); $r = group_add(local_user(),$name); if($r) { @@ -35,6 +37,8 @@ function group_post(&$a) { return; // NOTREACHED } if(($a->argc == 2) && (intval($a->argv[1]))) { + check_form_security_token_redirectOnErr('/group', 'group_edit'); + $r = q("SELECT * FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[1]), intval(local_user()) @@ -62,7 +66,8 @@ function group_post(&$a) { } function group_content(&$a) { - + $change = false; + if(! local_user()) { notice( t('Permission denied') . EOL); return; @@ -83,14 +88,17 @@ function group_content(&$a) { return replace_macros($tpl, $context + array( '$title' => t('Create a group of contacts/friends.'), - '$gname' => array('groupname',t('Group Name: '),$group['name'], ''), + '$gname' => array('groupname',t('Group Name: '), '', ''), '$gid' => 'new', + '$form_security_token' => get_form_security_token("group_edit"), )); } if(($a->argc == 3) && ($a->argv[1] === 'drop')) { + check_form_security_token_redirectOnErr('/group', 'group_drop', 't'); + if(intval($a->argv[2])) { $r = q("SELECT `name` FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1", intval($a->argv[2]), @@ -108,6 +116,8 @@ function group_content(&$a) { } if(($a->argc > 2) && intval($a->argv[1]) && intval($a->argv[2])) { + check_form_security_token_ForbiddenOnErr('group_member_change', 't'); + $r = q("SELECT `id` FROM `contact` WHERE `id` = %d AND `uid` = %d and `self` = 0 and `blocked` = 0 AND `pending` = 0 LIMIT 1", intval($a->argv[2]), intval(local_user()) @@ -155,7 +165,8 @@ function group_content(&$a) { $drop_tpl = get_markup_template('group_drop.tpl'); $drop_txt = replace_macros($drop_tpl, array( '$id' => $group['id'], - '$delete' => t('Delete') + '$delete' => t('Delete'), + '$form_security_token' => get_form_security_token("group_drop"), )); $celeb = ((($a->user['page-flags'] == PAGE_SOAPBOX) || ($a->user['page-flags'] == PAGE_COMMUNITY)) ? true : false); @@ -166,6 +177,7 @@ function group_content(&$a) { '$gname' => array('groupname',t('Group Name: '),$group['name'], ''), '$gid' => $group['id'], '$drop' => $drop_txt, + '$form_security_token' => get_form_security_token('group_edit'), ); } @@ -177,14 +189,14 @@ function group_content(&$a) { 'label_members' => t('Members'), 'members' => array(), 'label_contacts' => t('All Contacts'), - 'contacts' => arraY(), + 'contacts' => array(), ); - + $sec_token = addslashes(get_form_security_token('group_member_change')); $textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false); foreach($members as $member) { if($member['url']) { - $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;'; + $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . ',\'' . $sec_token . '\'); return true;'; $groupeditor['members'][] = micropro($member,true,'mpgroup', $textmode); } else @@ -199,7 +211,7 @@ function group_content(&$a) { $textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : false); foreach($r as $member) { if(! in_array($member['id'],$preselected)) { - $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . '); return true;'; + $member['click'] = 'groupChangeMember(' . $group['id'] . ',' . $member['id'] . ',\'' . $sec_token . '\'); return true;'; $groupeditor['contacts'][] = micropro($member,true,'mpall', $textmode); } } diff --git a/view/group_drop.tpl b/view/group_drop.tpl index cbae1610f4..2cbebbb8e5 100755 --- a/view/group_drop.tpl +++ b/view/group_drop.tpl @@ -1,5 +1,5 @@
                                                          - + {{ inc field_input.tpl with $field=$gname }}{{ endinc }} {{ if $drop }}$drop{{ endif }} From e84095182f938682d1fef49a74a36ebf31ceeeb0 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 18 Mar 2012 18:33:38 -0400 Subject: [PATCH 047/187] fix the comment box being too wide and looking off-kilter Signed-off-by: Simon L'nu --- view/theme/dispy-dark/style.css | 2 +- view/theme/dispy/style.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index b4aefbbf23..eaaa0acbd0 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -1258,7 +1258,7 @@ section { } [class^="comment-edit-text"] { margin: 5px 0 10px 20px; - width: 86.5%; + width: 84.5%; } .comment-edit-text-empty { height: 20px; diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 26ac08c8c5..812c5ee2e6 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -1256,7 +1256,7 @@ section { } [class^="comment-edit-text"] { margin: 5px 0 10px 20px; - width: 86.5%; + width: 84.5%; } .comment-edit-text-empty { height: 20px; From 37f4cbd732de8af22038a06792087c30d4c67989 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 18 Mar 2012 17:57:29 -0700 Subject: [PATCH 048/187] revup --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index b3c79079a6..d5feaed2d1 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.1284' ); +define ( 'FRIENDICA_VERSION', '2.3.1285' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1132 ); From cca524495cdc8c1167421393f4d8e8da4a94a855 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 18 Mar 2012 22:12:36 -0700 Subject: [PATCH 050/187] community discovery cont., cleanup of DB debugging --- include/dba.php | 24 ++++++++++++------------ include/delivery.php | 3 ++- include/items.php | 31 +++++++++++++++++++++++++++++-- include/notifier.php | 4 +++- include/poller.php | 2 +- mod/dfrn_poll.php | 6 +++--- view/atom_feed.tpl | 1 + view/atom_feed_dfrn.tpl | 3 ++- 8 files changed, 53 insertions(+), 21 deletions(-) diff --git a/include/dba.php b/include/dba.php index 7455b6b3ee..5beea7a3ac 100755 --- a/include/dba.php +++ b/include/dba.php @@ -1,5 +1,7 @@ debug) - logger('dba: ' . printable(print_r($r, true)), LOGGER_DATA); + logger('dba: ' . printable(print_r($r, true))); return($r); } diff --git a/include/delivery.php b/include/delivery.php index 44a482ca28..532dcd6991 100755 --- a/include/delivery.php +++ b/include/delivery.php @@ -256,7 +256,8 @@ function delivery_run($argv, $argc){ '$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) , '$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) , '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME)) , - '$birthday' => $birthday + '$birthday' => $birthday, + '$community' => (($owner['page-flags'] == PAGE_COMMUNITY) ? '1' : '') )); foreach($items as $item) { diff --git a/include/items.php b/include/items.php index 5e1fec5578..5a297c83ef 100755 --- a/include/items.php +++ b/include/items.php @@ -28,7 +28,7 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) $sql_extra = " AND `allow_cid` = '' AND `allow_gid` = '' AND `deny_cid` = '' AND `deny_gid` = '' "; - $r = q("SELECT `contact`.*, `user`.`uid` AS `user_uid`, `user`.`nickname`, `user`.`timezone` + $r = q("SELECT `contact`.*, `user`.`uid` AS `user_uid`, `user`.`nickname`, `user`.`timezone`, `user`.`page-flags` FROM `contact` LEFT JOIN `user` ON `user`.`uid` = `contact`.`uid` WHERE `contact`.`self` = 1 AND `user`.`nickname` = '%s' LIMIT 1", dbesc($owner_nick) @@ -156,7 +156,8 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0) '$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) , '$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) , '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME)) , - '$birthday' => ((strlen($birthday)) ? '' . xmlify($birthday) . '' : '') + '$birthday' => ((strlen($birthday)) ? '' . xmlify($birthday) . '' : ''), + '$community' => (($owner['page-flags'] == PAGE_COMMUNITY) ? '1' : '') )); call_hooks('atom_feed', $atom); @@ -1404,6 +1405,19 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) } + $community_page = 0; + $rawtags = $feed->get_feed_tags( NAMESPACE_DFRN, 'community'); + if($rawtags) { + $community_page = intval($rawtags[0]['data']); + } + if(is_array($contact) && intval($contact['forum']) != $community_page) { + q("update contact set forum = %d where id = %d limit 1", + intval($community_page), + intval($contact['id']) + ); + $contact['forum'] = (string) $community_page; + } + // process any deleted entries @@ -1987,6 +2001,19 @@ function local_delivery($importer,$data) { // NOTREACHED } + + $community_page = 0; + $rawtags = $feed->get_feed_tags( NAMESPACE_DFRN, 'community'); + if($rawtags) { + $community_page = intval($rawtags[0]['data']); + } + if(intval($importer['forum']) != $community_page) { + q("update contact set forum = %d where id = %d limit 1", + intval($community_page), + intval($importer['id']) + ); + $importer['forum'] = (string) $community_page; + } logger('local_delivery: feed item count = ' . $feed->get_item_quantity()); diff --git a/include/notifier.php b/include/notifier.php index 07edc70465..d63ad7ae7c 100755 --- a/include/notifier.php +++ b/include/notifier.php @@ -337,7 +337,9 @@ function notifier_run($argv, $argc){ '$picdate' => xmlify(datetime_convert('UTC','UTC',$owner['avatar-date'] . '+00:00' , ATOM_TIME)) , '$uridate' => xmlify(datetime_convert('UTC','UTC',$owner['uri-date'] . '+00:00' , ATOM_TIME)) , '$namdate' => xmlify(datetime_convert('UTC','UTC',$owner['name-date'] . '+00:00' , ATOM_TIME)) , - '$birthday' => $birthday + '$birthday' => $birthday, + '$community' => (($owner['page-flags'] == PAGE_COMMUNITY) ? '1' : '') + )); if($mail) { diff --git a/include/poller.php b/include/poller.php index 3bc98e36ff..8262c1d605 100755 --- a/include/poller.php +++ b/include/poller.php @@ -232,7 +232,7 @@ function poller_run($argv, $argc){ $importer_uid = $contact['uid']; - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1", + $r = q("SELECT `contact`.*, `user`.`page-flags` FROM `contact` LEFT JOIN `user` on `contact`.`uid` = `user`.`uid` WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1", intval($importer_uid) ); if(! count($r)) diff --git a/mod/dfrn_poll.php b/mod/dfrn_poll.php index b12e071328..fe5cd49063 100755 --- a/mod/dfrn_poll.php +++ b/mod/dfrn_poll.php @@ -199,7 +199,7 @@ function dfrn_poll_post(&$a) { $ptype = ((x($_POST,'type')) ? $_POST['type'] : ''); $dfrn_version = ((x($_POST,'dfrn_version')) ? (float) $_POST['dfrn_version'] : 2.0); $perm = ((x($_POST,'perm')) ? $_POST['perm'] : 'r'); - + if($ptype === 'profile-check') { if((strlen($challenge)) && (strlen($sec))) { @@ -358,8 +358,8 @@ function dfrn_poll_post(&$a) { intval($contact_id) ); } - } - + } + header("Content-type: application/atom+xml"); $o = get_feed_for($a,$dfrn_id, $a->argv[1], $last_update, $direction); echo $o; diff --git a/view/atom_feed.tpl b/view/atom_feed.tpl index 72cf8e4fd8..2feb547ee2 100755 --- a/view/atom_feed.tpl +++ b/view/atom_feed.tpl @@ -16,6 +16,7 @@ $hub $salmon + $community $feed_updated diff --git a/view/atom_feed_dfrn.tpl b/view/atom_feed_dfrn.tpl index 3d6bcc5b5a..0bae62b526 100755 --- a/view/atom_feed_dfrn.tpl +++ b/view/atom_feed_dfrn.tpl @@ -12,10 +12,11 @@ $feed_id $feed_title - Friendika + Friendica $hub $salmon + $community $feed_updated From 0341078a73f03961292d2459f4e442e07b186b34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Mon, 19 Mar 2012 07:37:09 +0000 Subject: [PATCH 051/187] Existing photos could not be used as profile photos anymore - should be fixed now. And some extra logging in the CSRF-Protection to make debugging easier --- include/security.php | 20 ++++++++++++-------- mod/photos.php | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/include/security.php b/include/security.php index 45473445a7..19e91eb63d 100755 --- a/include/security.php +++ b/include/security.php @@ -299,16 +299,16 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null) * 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 = "") { +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); + $sec_hash = hash('whirlpool', $a->user['guid'] . $a->user['prvkey'] . session_id() . $timestamp . $typename); - return $timestamp . "." . $sec_hash; + return $timestamp . '.' . $sec_hash; } -function check_form_security_token($typename = "", $formname = 'form_security_token') { +function check_form_security_token($typename = '', $formname = 'form_security_token') { if (!x($_REQUEST, $formname)) return false; $hash = $_REQUEST[$formname]; @@ -316,10 +316,10 @@ function check_form_security_token($typename = "", $formname = 'form_security_to $a = get_app(); - $x = explode(".", $hash); + $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); + $sec_hash = hash('whirlpool', $a->user['guid'] . $a->user['prvkey'] . session_id() . $x[0] . $typename); return ($sec_hash == $x[1]); } @@ -327,15 +327,19 @@ function check_form_security_token($typename = "", $formname = 'form_security_to 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') { +function check_form_security_token_redirectOnErr($err_redirect, $typename = '', $formname = 'form_security_token') { if (!check_form_security_token($typename, $formname)) { $a = get_app(); + logger('check_form_security_token failed: user ' . $a->user['guid'] . ' - form element ' . $typename); + logger('check_form_security_token failed: _REQUEST data: ' . print_r($_REQUEST, true), LOGGER_DATA); notice( check_form_security_std_err_msg() ); goaway($a->get_baseurl() . $err_redirect ); } } -function check_form_security_token_ForbiddenOnErr($typename = "", $formname = 'form_security_token') { +function check_form_security_token_ForbiddenOnErr($typename = '', $formname = 'form_security_token') { if (!check_form_security_token($typename, $formname)) { + logger('check_form_security_token failed: user ' . $a->user['guid'] . ' - form element ' . $typename); + logger('check_form_security_token failed: _REQUEST data: ' . print_r($_REQUEST, true), LOGGER_DATA); header('HTTP/1.1 403 Forbidden'); killme(); } diff --git a/mod/photos.php b/mod/photos.php index e40ae0d74a..4406780d3d 100755 --- a/mod/photos.php +++ b/mod/photos.php @@ -1069,7 +1069,7 @@ function photos_content(&$a) { if($can_post && ($ph[0]['uid'] == $owner_uid)) { $tools = array( 'edit' => array($a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $datum . (($cmd === 'edit') ? '' : '/edit'), (($cmd === 'edit') ? t('View photo') : t('Edit photo'))), - 'profile'=>array($a->get_baseurl() . '/profile_photo/use/'.$ph[0]['resource-id'], t('Use as profile photo')), + 'profile'=>array($a->get_baseurl() . '/profile_photo/use/'.$ph[0]['resource-id'] . '?form_security_token=' . get_form_security_token('profile_photo'), t('Use as profile photo')), ); // lock From cf2edb5b9ad5f9bad1fa94ad577f1ab8a664e8e6 Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 19 Mar 2012 01:20:53 -0700 Subject: [PATCH 052/187] ctrl + left|right cursor keys to prev/next photos --- mod/photos.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/mod/photos.php b/mod/photos.php index 4406780d3d..b294f0a666 100755 --- a/mod/photos.php +++ b/mod/photos.php @@ -1069,7 +1069,7 @@ function photos_content(&$a) { if($can_post && ($ph[0]['uid'] == $owner_uid)) { $tools = array( 'edit' => array($a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $datum . (($cmd === 'edit') ? '' : '/edit'), (($cmd === 'edit') ? t('View photo') : t('Edit photo'))), - 'profile'=>array($a->get_baseurl() . '/profile_photo/use/'.$ph[0]['resource-id'] . '?form_security_token=' . get_form_security_token('profile_photo'), t('Use as profile photo')), + 'profile'=>array($a->get_baseurl() . '/profile_photo/use/'.$ph[0]['resource-id'], t('Use as profile photo')), ); // lock @@ -1081,6 +1081,17 @@ function photos_content(&$a) { } + if(! $cmd !== 'edit') { + $a->page['htmlhead'] .= ''; + } + if($prevlink) $prevlink = array($prevlink, '') ; From 2349852b4abd1638624b541f173f51d1fb1ea011 Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 19 Mar 2012 03:18:39 -0700 Subject: [PATCH 053/187] support "no_smilies" --- include/text.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/text.php b/include/text.php index 89acbf9fab..a0ff1600ed 100644 --- a/include/text.php +++ b/include/text.php @@ -694,8 +694,13 @@ function linkify($s) { if(! function_exists('smilies')) { function smilies($s, $sample = false) { + $a = get_app(); + if(intval(get_config('system','no_smilies')) + || (local_user() && intval(get_pconfig(local_user(),'system','no_smilies')))) + return $s; + $s = preg_replace_callback('/
                                                          (.*?)<\/pre>/ism','smile_encode',$s);
                                                           	$s = preg_replace_callback('/(.*?)<\/code>/ism','smile_encode',$s);
                                                           
                                                          
                                                          From 139a86dbd395f4601b29b9af97ac8ea190cce9f9 Mon Sep 17 00:00:00 2001
                                                          From: friendica 
                                                          Date: Mon, 19 Mar 2012 06:48:11 -0700
                                                          Subject: [PATCH 054/187] some openid fixes, use identity url from openid
                                                           server and normalise it.
                                                          
                                                          ---
                                                           boot.php         | 5 +++--
                                                           include/text.php | 3 +++
                                                           mod/openid.php   | 9 ++++++++-
                                                           mod/settings.php | 1 +
                                                           4 files changed, 15 insertions(+), 3 deletions(-)
                                                          
                                                          diff --git a/boot.php b/boot.php
                                                          index d5feaed2d1..9779bb9a8f 100755
                                                          --- a/boot.php
                                                          +++ b/boot.php
                                                          @@ -713,15 +713,16 @@ function login($register = false, $hiddens=false) {
                                                           
                                                           	$noid = get_config('system','no_openid');
                                                           	
                                                          +	$dest_url = $a->get_baseurl(true) . '/' . $a->query_string;
                                                          +
                                                           	if(local_user()) {
                                                           		$tpl = get_markup_template("logout.tpl");
                                                           	}
                                                           	else {
                                                           		$tpl = get_markup_template("login.tpl");
                                                          -
                                                          +		$_SESSION['return_url'] = $a->query_string;
                                                           	}
                                                           
                                                          -	$dest_url = $a->get_baseurl(true) . '/' . $a->query_string;
                                                           
                                                           	$o .= replace_macros($tpl,array(
                                                           
                                                          diff --git a/include/text.php b/include/text.php
                                                          index a0ff1600ed..2956c94676 100644
                                                          --- a/include/text.php
                                                          +++ b/include/text.php
                                                          @@ -1355,3 +1355,6 @@ function file_tag_unsave_file($uid,$item,$file) {
                                                           	return true;
                                                           }
                                                           
                                                          +function normalise_openid($s) {
                                                          +	return trim(str_replace(array('http://','https://'),array('',''),$s),'/');
                                                          +}
                                                          diff --git a/mod/openid.php b/mod/openid.php
                                                          index df074b299f..0be48060e6 100755
                                                          --- a/mod/openid.php
                                                          +++ b/mod/openid.php
                                                          @@ -10,6 +10,8 @@ function openid_content(&$a) {
                                                           	if($noid)
                                                           		goaway(z_root());
                                                           
                                                          +	logger('mod_openid ' . print_r($_REQUEST,true), LOGGER_DATA);
                                                          +
                                                           	if((x($_GET,'openid_mode')) && (x($_SESSION,'openid'))) {
                                                           		$openid = new LightOpenID;
                                                           
                                                          @@ -54,11 +56,16 @@ function openid_content(&$a) {
                                                           				// NOTREACHED
                                                           			} 
                                                           
                                                          +			$authid = normalise_openid($_REQUEST['openid_identity']);
                                                          +			if(! strlen($authid))
                                                          +				goaway(z_root());
                                                          +
                                                           
                                                           			$r = q("SELECT `user`.*, `user`.`pubkey` as `upubkey`, `user`.`prvkey` as `uprvkey` 
                                                           				FROM `user` WHERE `openid` = '%s' AND `blocked` = 0 AND `account_expired` = 0 AND `verified` = 1 LIMIT 1",
                                                          -				dbesc($_SESSION['openid'])
                                                          +				dbesc($authid)
                                                           			);
                                                          +
                                                           			if(! count($r)) {
                                                           				notice( t('Login failed.') . EOL );
                                                           				goaway(z_root());
                                                          diff --git a/mod/settings.php b/mod/settings.php
                                                          index 3a8ad29d28..59ede47297 100755
                                                          --- a/mod/settings.php
                                                          +++ b/mod/settings.php
                                                          @@ -322,6 +322,7 @@ function settings_post(&$a) {
                                                           	$str_contact_deny  = perms2str($_POST['contact_deny']);
                                                           
                                                           	$openidserver = $a->user['openidserver'];
                                                          +	$openid = normalise_openid($openid);
                                                           
                                                           	// If openid has changed or if there's an openid but no openidserver, try and discover it.
                                                           
                                                          
                                                          From e9b33a6f1f42899a4d46cb23421085cdc2bbbaa6 Mon Sep 17 00:00:00 2001
                                                          From: Thomas 
                                                          Date: Mon, 19 Mar 2012 21:59:06 +0000
                                                          Subject: [PATCH 055/187] 	modified:   include/text.php 	deleted:   
                                                           images/diaspora.png 	deleted:    images/smiley-bangheaddesk.gif 
                                                           deleted:    images/smiley-beard.png 	deleted:    images/smiley-shaka.gif 
                                                           deleted:    images/smiley-whitebeard.png
                                                          
                                                          Removed selected smiley per Mike's request.  Also removed deprecated smileys that were just commented out.
                                                          ---
                                                           include/text.php | 21 ---------------------
                                                           1 file changed, 21 deletions(-)
                                                          
                                                          diff --git a/include/text.php b/include/text.php
                                                          index 2956c94676..ed37326df3 100644
                                                          --- a/include/text.php
                                                          +++ b/include/text.php
                                                          @@ -709,27 +709,20 @@ function smilies($s, $sample = false) {
                                                           		'</3', 
                                                           		'<\\3', 
                                                           		':-)', 
                                                          -//		':)', 
                                                           		';-)', 
                                                          -//		';)', 
                                                           		':-(', 
                                                          -//		':(', 
                                                           		':-P', 
                                                          -//		':P', 
                                                           		':-"', 
                                                           		':-"', 
                                                           		':-x', 
                                                           		':-X', 
                                                           		':-D', 
                                                          -//		':D', 
                                                           		'8-|', 
                                                           		'8-O', 
                                                           		':-O', 
                                                           		'\\o/', 
                                                           		'o.O', 
                                                           		'O.o', 
                                                          -		'\\.../', 
                                                          -		'\\ooo/', 
                                                           		":'(", 
                                                           		":-!", 
                                                           		":-/", 
                                                          @@ -742,9 +735,6 @@ function smilies($s, $sample = false) {
                                                           		':headdesk',
                                                           		'~friendika', 
                                                           		'~friendica', 
                                                          -//		'Diaspora*' 
                                                          -		':beard',
                                                          -		':whitebeard'
                                                           
                                                           	);
                                                           
                                                          @@ -753,27 +743,20 @@ function smilies($s, $sample = false) {
                                                           		'</3',
                                                           		'<\\3',
                                                           		':-)',
                                                          -//		':)',
                                                           		';-)',
                                                          -//		';)',                
                                                           		':-(',
                                                          -//		':(',
                                                           		':-P',
                                                          -//		':P',
                                                           		':-\',
                                                           		':-\',
                                                           		':-x',
                                                           		':-X',
                                                           		':-D',
                                                          -//		':D',                
                                                           		'8-|',
                                                           		'8-O',
                                                           		':-O',                
                                                           		'\\o/',
                                                           		'o.O',
                                                           		'O.o',
                                                          -		'\\.../',
                                                          -		'\\ooo/',
                                                           		':\'(',
                                                           		':-!',
                                                           		':-/',
                                                          @@ -783,12 +766,8 @@ function smilies($s, $sample = false) {
                                                           		':homebrew',
                                                           		':coffee',
                                                           		':facepalm',
                                                          -		':headdesk',
                                                           		'~friendika ~friendika',
                                                           		'~friendica ~friendica',
                                                          -//		'DiasporaDiaspora*',
                                                          -		':beard',
                                                          -		':whitebeard'
                                                           	);
                                                           
                                                           	$params = array('texts' => $texts, 'icons' => $icons, 'string' => $s);
                                                          
                                                          From 9e133d6412945f84f858d4bfde26c69f9e1afbfd Mon Sep 17 00:00:00 2001
                                                          From: friendica 
                                                          Date: Mon, 19 Mar 2012 15:03:09 -0700
                                                          Subject: [PATCH 056/187] refactor openid logins/registrations
                                                          
                                                          ---
                                                           boot.php         |   2 +-
                                                           include/auth.php |  29 ++-----------
                                                           mod/openid.php   | 106 ++++++++++++++++++++++++-----------------------
                                                           3 files changed, 60 insertions(+), 77 deletions(-)
                                                          
                                                          diff --git a/boot.php b/boot.php
                                                          index 9779bb9a8f..be4b8ca0e0 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.1285' );
                                                          +define ( 'FRIENDICA_VERSION',      '2.3.1286' );
                                                           define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
                                                           define ( 'DB_UPDATE_VERSION',      1132      );
                                                           
                                                          diff --git a/include/auth.php b/include/auth.php
                                                          index fc52684e64..faf9221993 100755
                                                          --- a/include/auth.php
                                                          +++ b/include/auth.php
                                                          @@ -77,7 +77,7 @@ else {
                                                           
                                                           			$noid = get_config('system','no_openid');
                                                           
                                                          -			$openid_url = trim(  (strlen($_POST['openid_url'])?$_POST['openid_url']:$_POST['username']) );
                                                          +			$openid_url = trim((strlen($_POST['openid_url'])?$_POST['openid_url']:$_POST['username']) );
                                                           
                                                           			// validate_url alters the calling parameter
                                                           
                                                          @@ -99,30 +99,9 @@ else {
                                                           			$openid->identity = $openid_url;
                                                           			$_SESSION['openid'] = $openid_url;
                                                           			$a = get_app();
                                                          -			$openid->returnUrl = $a->get_baseurl() . '/openid'; 
                                                          -
                                                          -			$r = q("SELECT `uid` FROM `user` WHERE `openid` = '%s' LIMIT 1",
                                                          -				dbesc($openid_url)
                                                          -			);
                                                          -			if(count($r)) { 
                                                          -				// existing account
                                                          -				goaway($openid->authUrl());
                                                          -				// NOTREACHED	
                                                          -			}
                                                          -			else {
                                                          -				if($a->config['register_policy'] == REGISTER_CLOSED) {
                                                          -					$a = get_app();
                                                          -					notice( t('Login failed.') . EOL);
                                                          -					goaway(z_root());
                                                          -					// 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());
                                                          -				// NOTREACHED	
                                                          -			}
                                                          +			$openid->returnUrl = $a->get_baseurl(true) . '/openid'; 
                                                          +			goaway($openid->authUrl());
                                                          +			// NOTREACHED
                                                           		}
                                                           	}
                                                           	if((x($_POST,'auth-params')) && $_POST['auth-params'] === 'login') {
                                                          diff --git a/mod/openid.php b/mod/openid.php
                                                          index 0be48060e6..594a90937c 100755
                                                          --- a/mod/openid.php
                                                          +++ b/mod/openid.php
                                                          @@ -17,68 +17,72 @@ function openid_content(&$a) {
                                                           
                                                           		if($openid->validate()) {
                                                           
                                                          -			if(x($_SESSION,'register')) {
                                                          -				unset($_SESSION['register']);
                                                          -				$args = '';
                                                          -				$attr = $openid->getAttributes();
                                                          -				if(is_array($attr) && count($attr)) {
                                                          -					foreach($attr as $k => $v) {
                                                          -						if($k === 'namePerson/friendly')
                                                          -							$nick = notags(trim($v));
                                                          -						if($k === 'namePerson/first')
                                                          -							$first = notags(trim($v));
                                                          -						if($k === 'namePerson')
                                                          -							$args .= '&username=' . notags(trim($v));
                                                          -						if($k === 'contact/email')
                                                          -							$args .= '&email=' . notags(trim($v));
                                                          -						if($k === 'media/image/aspect11')
                                                          -							$photosq = bin2hex(trim($v));
                                                          -						if($k === 'media/image/default')
                                                          -							$photo = bin2hex(trim($v));
                                                          -					}
                                                          -				}
                                                          -				if($nick)
                                                          -					$args .= '&nickname=' . $nick;
                                                          -				elseif($first)
                                                          -					$args .= '&nickname=' . $first;
                                                          -
                                                          -				if($photosq)
                                                          -					$args .= '&photo=' . $photosq;
                                                          -				elseif($photo)
                                                          -					$args .= '&photo=' . $photo;
                                                          -
                                                          -				$args .= '&openid_url=' . notags(trim($_SESSION['openid']));
                                                          -				if($a->config['register_policy'] != REGISTER_CLOSED)
                                                          -					goaway($a->get_baseurl() . '/register' . $args);
                                                          -				else
                                                          -					goaway(z_root());
                                                          -
                                                          -				// NOTREACHED
                                                          -			} 
                                                          -
                                                           			$authid = normalise_openid($_REQUEST['openid_identity']);
                                                          -			if(! strlen($authid))
                                                          -				goaway(z_root());
                                                           
                                                          +			if(! strlen($authid)) {
                                                          +				logger( t('OpenID protocol error. No ID returned.') . EOL);
                                                          +				goaway(z_root());
                                                          +			}
                                                           
                                                           			$r = q("SELECT `user`.*, `user`.`pubkey` as `upubkey`, `user`.`prvkey` as `uprvkey` 
                                                          -				FROM `user` WHERE `openid` = '%s' AND `blocked` = 0 AND `account_expired` = 0 AND `verified` = 1 LIMIT 1",
                                                          +				FROM `user` WHERE `openid` = '%s' AND `blocked` = 0 
                                                          +				AND `account_expired` = 0 AND `verified` = 1 LIMIT 1",
                                                           				dbesc($authid)
                                                           			);
                                                           
                                                          -			if(! count($r)) {
                                                          -				notice( t('Login failed.') . EOL );
                                                          +			if($r && count($r)) {
                                                          +				unset($_SESSION['openid']);
                                                          +
                                                          +				require_once('include/security.php');
                                                          +				authenticate_success($r[0],true,true);
                                                          +
                                                          +				// just in case there was no return url set 
                                                          +				// and we fell through
                                                          +
                                                           				goaway(z_root());
                                                          -  			}
                                                          -			unset($_SESSION['openid']);
                                                          +			}
                                                           
                                                          -			require_once('include/security.php');
                                                          -			authenticate_success($r[0],true,true);
                                                          +			// new registration?
                                                           
                                                          -			// just in case there was no return url set 
                                                          -			// and we fell through
                                                          +			if($a->config['register_policy'] == REGISTER_CLOSED) {
                                                          +				notice( t('Account not found and OpenID registration is not permitted on this site.') . EOL);
                                                          +				goaway(z_root());
                                                          +			}
                                                           
                                                          -			goaway(z_root());
                                                          +			unset($_SESSION['register']);
                                                          +			$args = '';
                                                          +			$attr = $openid->getAttributes();
                                                          +			if(is_array($attr) && count($attr)) {
                                                          +				foreach($attr as $k => $v) {
                                                          +					if($k === 'namePerson/friendly')
                                                          +						$nick = notags(trim($v));
                                                          +					if($k === 'namePerson/first')
                                                          +						$first = notags(trim($v));
                                                          +					if($k === 'namePerson')
                                                          +						$args .= '&username=' . notags(trim($v));
                                                          +					if($k === 'contact/email')
                                                          +						$args .= '&email=' . notags(trim($v));
                                                          +					if($k === 'media/image/aspect11')
                                                          +						$photosq = bin2hex(trim($v));
                                                          +					if($k === 'media/image/default')
                                                          +						$photo = bin2hex(trim($v));
                                                          +				}
                                                          +			}
                                                          +			if($nick)
                                                          +				$args .= '&nickname=' . $nick;
                                                          +			elseif($first)
                                                          +				$args .= '&nickname=' . $first;
                                                          +
                                                          +			if($photosq)
                                                          +				$args .= '&photo=' . $photosq;
                                                          +			elseif($photo)
                                                          +				$args .= '&photo=' . $photo;
                                                          +
                                                          +			$args .= '&openid_url=' . notags(trim($authid));
                                                          +
                                                          +			goaway($a->get_baseurl() . '/register' . $args);
                                                          +
                                                          +			// NOTREACHED
                                                           		}
                                                           	}
                                                           	notice( t('Login failed.') . EOL);
                                                          
                                                          From b8f63124086e57e6930a53b322daf86a9c431763 Mon Sep 17 00:00:00 2001
                                                          From: friendica 
                                                          Date: Mon, 19 Mar 2012 15:10:14 -0700
                                                          Subject: [PATCH 057/187] cleanup after openid refactoring
                                                          
                                                          ---
                                                           mod/openid.php | 7 ++++++-
                                                           1 file changed, 6 insertions(+), 1 deletion(-)
                                                          
                                                          diff --git a/mod/openid.php b/mod/openid.php
                                                          index 594a90937c..e2cea7d851 100755
                                                          --- a/mod/openid.php
                                                          +++ b/mod/openid.php
                                                          @@ -13,6 +13,7 @@ function openid_content(&$a) {
                                                           	logger('mod_openid ' . print_r($_REQUEST,true), LOGGER_DATA);
                                                           
                                                           	if((x($_GET,'openid_mode')) && (x($_SESSION,'openid'))) {
                                                          +
                                                           		$openid = new LightOpenID;
                                                           
                                                           		if($openid->validate()) {
                                                          @@ -31,6 +32,9 @@ function openid_content(&$a) {
                                                           			);
                                                           
                                                           			if($r && count($r)) {
                                                          +
                                                          +				// successful OpenID login
                                                          +
                                                           				unset($_SESSION['openid']);
                                                           
                                                           				require_once('include/security.php');
                                                          @@ -42,7 +46,8 @@ function openid_content(&$a) {
                                                           				goaway(z_root());
                                                           			}
                                                           
                                                          -			// new registration?
                                                          +			// Successful OpenID login - but we can't match it to an existing account.
                                                          +			// New registration?
                                                           
                                                           			if($a->config['register_policy'] == REGISTER_CLOSED) {
                                                           				notice( t('Account not found and OpenID registration is not permitted on this site.') . EOL);
                                                          
                                                          From 84f8e2eaa87c90473ce79ebcd4f76f3657258f27 Mon Sep 17 00:00:00 2001
                                                          From: Thomas 
                                                          Date: Mon, 19 Mar 2012 22:32:19 +0000
                                                          Subject: [PATCH 058/187] 	modified:   include/text.php Stupid bug fixed
                                                          
                                                          ---
                                                           include/text.php | 5 ++---
                                                           1 file changed, 2 insertions(+), 3 deletions(-)
                                                          
                                                          diff --git a/include/text.php b/include/text.php
                                                          index ed37326df3..527f3a3442 100644
                                                          --- a/include/text.php
                                                          +++ b/include/text.php
                                                          @@ -732,9 +732,8 @@ function smilies($s, $sample = false) {
                                                           		':homebrew', 
                                                           		':coffee', 
                                                           		':facepalm',
                                                          -		':headdesk',
                                                           		'~friendika', 
                                                          -		'~friendica', 
                                                          +		'~friendica'
                                                           
                                                           	);
                                                           
                                                          @@ -767,7 +766,7 @@ function smilies($s, $sample = false) {
                                                           		':coffee',
                                                           		':facepalm',
                                                           		'~friendika ~friendika',
                                                          -		'~friendica ~friendica',
                                                          +		'~friendica ~friendica'
                                                           	);
                                                           
                                                           	$params = array('texts' => $texts, 'icons' => $icons, 'string' => $s);
                                                          
                                                          From 5a5aadb743e055530aa071dd3e47705a3bf5d728 Mon Sep 17 00:00:00 2001
                                                          From: friendica 
                                                          Date: Mon, 19 Mar 2012 21:58:21 -0700
                                                          Subject: [PATCH 059/187] add IP address to failed login log message
                                                          
                                                          ---
                                                           include/auth.php | 3 ++-
                                                           1 file changed, 2 insertions(+), 1 deletion(-)
                                                          
                                                          diff --git a/include/auth.php b/include/auth.php
                                                          index 4e246e3541..835616a829 100755
                                                          --- a/include/auth.php
                                                          +++ b/include/auth.php
                                                          @@ -104,6 +104,7 @@ else {
                                                           			// NOTREACHED
                                                           		}
                                                           	}
                                                          +
                                                           	if((x($_POST,'auth-params')) && $_POST['auth-params'] === 'login') {
                                                           
                                                           		$record = null;
                                                          @@ -144,7 +145,7 @@ else {
                                                           		}
                                                           
                                                           		if((! $record) || (! count($record))) {
                                                          -			logger('authenticate: failed login attempt: ' . notags(trim($_POST['username']))); 
                                                          +			logger('authenticate: failed login attempt: ' . notags(trim($_POST['username'])) . ' from IP ' . $_SERVER['REMOTE_ADDR']); 
                                                           			notice( t('Login failed.') . EOL );
                                                           			goaway(z_root());
                                                             		}
                                                          
                                                          From 9df797299320cea01c541bb4997e498f915f98fa Mon Sep 17 00:00:00 2001
                                                          From: friendica 
                                                          Date: Tue, 20 Mar 2012 01:50:20 -0700
                                                          Subject: [PATCH 060/187] bug #339 - lostpass sending to username, not email
                                                          
                                                          ---
                                                           mod/lostpass.php | 9 +++++----
                                                           1 file changed, 5 insertions(+), 4 deletions(-)
                                                          
                                                          diff --git a/mod/lostpass.php b/mod/lostpass.php
                                                          index b71398fa4b..57e6d69653 100755
                                                          --- a/mod/lostpass.php
                                                          +++ b/mod/lostpass.php
                                                          @@ -3,13 +3,13 @@
                                                           
                                                           function lostpass_post(&$a) {
                                                           
                                                          -	$email = notags(trim($_POST['login-name']));
                                                          -	if(! $email)
                                                          +	$loginame = notags(trim($_POST['login-name']));
                                                          +	if(! $loginame)
                                                           		goaway(z_root());
                                                           
                                                           	$r = q("SELECT * FROM `user` WHERE ( `email` = '%s' OR `nickname` = '%s' ) AND `verified` = 1 AND `blocked` = 0 LIMIT 1",
                                                          -		dbesc($email),
                                                          -		dbesc($email)
                                                          +		dbesc($loginame),
                                                          +		dbesc($loginame)
                                                           	);
                                                           
                                                           	if(! count($r)) {
                                                          @@ -19,6 +19,7 @@ function lostpass_post(&$a) {
                                                           
                                                           	$uid = $r[0]['uid'];
                                                           	$username = $r[0]['username'];
                                                          +	$email = $r[0]['email'];
                                                           
                                                           	$new_password = autoname(12) . mt_rand(100,9999);
                                                           	$new_password_encoded = hash('whirlpool',$new_password);
                                                          
                                                          From de0298e67ece602eb95d6a86ed5eebcb713c4dbb Mon Sep 17 00:00:00 2001
                                                          From: Simon L'nu 
                                                          Date: Tue, 20 Mar 2012 11:37:51 -0400
                                                          Subject: [PATCH 061/187] some tweakings for intro boxes (finally got an intro
                                                           i could see :). dispy synced with dispy-dark
                                                          
                                                          Signed-off-by: Simon L'nu 
                                                          ---
                                                           view/theme/dispy-dark/style.css | 67 ++++++++++++++++++++++++++-
                                                           view/theme/dispy/photo_view.tpl | 13 ++----
                                                           view/theme/dispy/style.css      | 81 +++++++++++++++++++++++++++++++--
                                                           3 files changed, 148 insertions(+), 13 deletions(-)
                                                          
                                                          diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css
                                                          index eaaa0acbd0..9883b2fd72 100644
                                                          --- a/view/theme/dispy-dark/style.css
                                                          +++ b/view/theme/dispy-dark/style.css
                                                          @@ -153,9 +153,9 @@ a:hover {
                                                               color: #729fcf;
                                                           }
                                                           input[type=submit] {
                                                          -	font-weight: bold;
                                                               background-color: #eee;
                                                           	color: #2e302e;
                                                          +	font-weight: bold;
                                                               margin-top: 10px;
                                                               height: 22px;
                                                               -webkit-border-radius: 5px;
                                                          @@ -1872,6 +1872,71 @@ div[id$="wrapper"] br {
                                                               clear:both;
                                                           }
                                                           
                                                          +
                                                          +/**
                                                          + * intros
                                                          + */
                                                          +.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;
                                                          +}
                                                          +.intro-approve-as-friend, .intro-approve-as-fan {
                                                          +    float: left;
                                                          +}
                                                          +.intro-form-end {
                                                          +    clear: both;
                                                          +    margin-bottom: 10px;
                                                          +}
                                                          +.intro-approve-as-friend-desc {
                                                          +    margin-top: 10px;
                                                          +}
                                                          +.intro-approve-as-end {
                                                          +    clear: both;
                                                          +    margin-bottom: 10px;
                                                          +}
                                                          +
                                                          +.intro-end {
                                                          +    clear: both;
                                                          +}
                                                          +
                                                          +
                                                           /**
                                                            * events
                                                            **/
                                                          diff --git a/view/theme/dispy/photo_view.tpl b/view/theme/dispy/photo_view.tpl
                                                          index f1209ec58f..732caf6900 100644
                                                          --- a/view/theme/dispy/photo_view.tpl
                                                          +++ b/view/theme/dispy/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/style.css b/view/theme/dispy/style.css index 812c5ee2e6..6547cf986f 100644 --- a/view/theme/dispy/style.css +++ b/view/theme/dispy/style.css @@ -48,7 +48,7 @@ body { body, button, input, select, textarea { font-family: sans-serif; color: #222; - background-color: rgb(254,254,254); + background-color: #efefef; } select { border: 1px #555 dotted; @@ -152,10 +152,11 @@ a:hover { color: #729fcf; } input[type=submit] { + background-color: #555753; + color: #eeeeec; + font-weight: bold; margin-top: 10px; height: 22px; - background-color: #555753; - color: #eeeeec; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; @@ -1494,6 +1495,8 @@ div[id$="wrapper"] br { } #prvmail-subject { width: 100%; + color: #eec; + background: #444; } #prvmail-submit-wrapper { margin-top: 10px; @@ -1859,6 +1862,71 @@ div[id$="wrapper"] br { clear:both; } + +/** + * intros + */ +.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; +} +.intro-approve-as-friend, .intro-approve-as-fan { + float: left; +} +.intro-form-end { + clear: both; + margin-bottom: 10px; +} +.intro-approve-as-friend-desc { + margin-top: 10px; +} +.intro-approve-as-end { + clear: both; + margin-bottom: 10px; +} + +.intro-end { + clear: both; +} + + /** * events **/ @@ -2162,11 +2230,16 @@ div[id$="wrapper"] br { width: 16px; height: 16px; } #adminpage table tr:hover { - background-color:#bbc7d7; +/* color: ;*/ + background-color: #bbc7d7; } #adminpage .selectall { text-align: right; } +#adminpage #users a { +/* color: #;*/ + text-decoration: underline; +} /** * Form fields From 92ef36ad61bc96905b062a727d1f4558ed734bdb Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 20 Mar 2012 14:55:18 -0700 Subject: [PATCH 062/187] slightly relax overly strict permissions in community and search to match those in display - tl;dr public conversations are publicly visible --- boot.php | 2 +- mod/community.php | 12 +++++++----- mod/search.php | 7 ++++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/boot.php b/boot.php index be4b8ca0e0..fa081df1b0 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.1286' ); +define ( 'FRIENDICA_VERSION', '2.3.1287' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1132 ); diff --git a/mod/community.php b/mod/community.php index a989999420..cf459617ea 100755 --- a/mod/community.php +++ b/mod/community.php @@ -41,15 +41,16 @@ function community_content(&$a, $update = 0) { // Here is the way permissions work in this module... - // Only public wall posts can be shown + // Only public posts can be shown // OR your own posts if you are a logged in member $r = q("SELECT COUNT(*) AS `total` FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid` WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 - AND `wall` = 1 AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' - AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `user`.`hidewall` = 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 `contact`.`blocked` = 0 AND `contact`.`pending` = 0 " ); @@ -69,8 +70,9 @@ function community_content(&$a, $update = 0) { FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid` WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 - AND `wall` = 1 AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' - AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `user`.`hidewall` = 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 `contact`.`blocked` = 0 AND `contact`.`pending` = 0 ORDER BY `received` DESC LIMIT %d, %d ", intval($a->pager['start']), diff --git a/mod/search.php b/mod/search.php index 386592ea19..50e7a6abc7 100755 --- a/mod/search.php +++ b/mod/search.php @@ -93,8 +93,9 @@ function search_content(&$a) { return $o; // Here is the way permissions work in the search module... - // Only public wall posts can be shown + // Only public posts can be shown // OR your own posts if you are a logged in member + // No items will be shown if the member has a blocked profile wall. $s_regx = sprintf("AND ( `item`.`body` REGEXP '%s' OR `item`.`tag` REGEXP '%s' )", dbesc(preg_quote($search)), dbesc('\\]' . preg_quote($search) . '\\[')); @@ -104,7 +105,7 @@ function search_content(&$a) { $r = q("SELECT COUNT(*) AS `total` FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid` WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 - AND (( `wall` = 1 AND `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `user`.`hidewall` = 0) + AND (( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0) OR `item`.`uid` = %d ) AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 $search_alg ", @@ -127,7 +128,7 @@ function search_content(&$a) { FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` LEFT JOIN `user` ON `user`.`uid` = `item`.`uid` WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 - AND (( `wall` = 1 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`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0 ) OR `item`.`uid` = %d ) AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 $search_alg From 894278dbcc83857a9140a03eb6064c642b5ce293 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 20 Mar 2012 15:41:06 -0700 Subject: [PATCH 063/187] change default profile photo to something more interesting than a reddish brown square --- images/person-175.jpg | Bin 0 -> 8510 bytes images/person-48.jpg | Bin 0 -> 1274 bytes images/person-80.jpg | Bin 0 -> 2303 bytes include/Photo.php | 6 +++--- include/Scrape.php | 2 +- include/nav.php | 2 +- mod/dfrn_confirm.php | 2 +- mod/notifications.php | 2 +- mod/photo.php | 6 +++--- 9 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 images/person-175.jpg create mode 100644 images/person-48.jpg create mode 100644 images/person-80.jpg diff --git a/images/person-175.jpg b/images/person-175.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fc0ec3d7717347e77b3b101ad91af04c23dcf1be GIT binary patch literal 8510 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 literal 0 HcmV?d00001 diff --git a/images/person-48.jpg b/images/person-48.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dc5eb6e6929835587e4e47a17b7d418c571502a6 GIT binary patch literal 1274 zcmex=582{JIV7_url1}3rzHwqPg5DS{P@ZkSj3_L))m;{*x8SEK$R$U8^c$_KQ zw5Ta!-T{8A+rGbN7~U>7nE52*=`q_MvWYr!2Ga!H{ziYDUG#qL^#IMRbtctioU)oL zl+;8^W#=VXZ8l(NwH4nW=T~cdw|ag?(D~rhJE0*{j_YZr7JQt3KIT}_en|$I%1cYO zA389p+xTh3v5gP(^JX4D{`X37Nz`}Kl&PD7EKiX61tfO1B?3b{1$O4wHsiHy*g^&L;7(aLAjbc4~$jI@G`_?wbDNT&*JFGlQ zcHPb`Tr*wjRh4UUtI-MZiQgpO)!pijxAoW%aM|xluWHG}h1v(b7AF3#lz$;xuyci* z%kf1jzB6Ps)fncjxs~y)@8?c;(ZmHyLi(aIHlGkJ@?-eMJMo{%^_RJ_X3y?S)^$=g zIsQ`7=i^^@sjRPIk8AJUZq@UbV5{JoI?>)qDdnU8_Tc8v*VV0FZ%tag!Pzy?TcP2S z$n+UGLPtL7K0asoC*zr}zq8-Oy9J?(iV{y}{rN2LYd+uV!y=uZ8@cwyXMg;0PcL*? z)3ob3%eDtPZMYolw(&@p6)+iiZ85nSw=VZ~?>>{g;i{}rJvNi{C6;_osLzlqZd|0x z8>?HYQ(6*gaOLu;J&UKQ^Yz&tl;vB0ImByT!^(8sZ6B9}PFeS4p$XIR!e8GT+*iLZ z-If1x6u4zlL7&5cbcy$G-+sTszfv${$>}#O z`~0Uio|to`NBYgCp{C2rZsk}T#e);8YU&hn};yRD#&p)ATyz=Qa?X962bEml5 zUGKPiydXw-=SgqVkYcxUcO1glSxV(@*#62m`@?(R^~mi@LNgNjmEv1G^E>}J;=?hrzBjE5; qQm&+_PSRH|JcZvanwKLzO~pM`*q@}-h~2aQe-i-G>hqBR literal 0 HcmV?d00001 diff --git a/images/person-80.jpg b/images/person-80.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75b8faf9227a2acd62f9f9e76b92158dd36008fd GIT binary patch literal 2303 zcmb7p2(faDMUOa8<)4(=@tA{H90)YVk ztpa3|03Lurpin3Tw$)%Tm>gUQ0pCJZQBhtAsj8-iR7E1yx9`+a*U;5OBDHsG>+0$4 z+OMv*#X)z{`&vFz~lf36b||&G)Hb3U|@(G4ECS#mJoo#kh?7$)yNDvbyi~M zM-9s?VZA0A^I}Fe0Vr){10x|wz#e!NO?Gk5q_}Cfq=n6hbNAy;|E!GaX_iy-dr~fW z6#EZ0_Qu(2zg5o5rhDpvheb(HSf;0wL>|)I@^?&Ej+qT z7^+VCtb@w68`+^7#0<$4_I{74 z@~GmulM38Q=Ig!5!D-Ow;lsyWKXzwW=?4}2voA7^F%ZY%m^lyq$Kh%ok4U!G#*c}x-d=xhXm_!Sw*b^F`(SNXQCYZvbg?I2L$K$I4M>*e;hQggko(FfE zBxrVmh%48WdrA#;HZG{Xxj43MP1Kb)g4C8W)emHVi}RUCvGG|Qya!=Wsg^>$Q~
                                                          ZbKzcS_cMTZvE@Mp)>!QMMncoQZqp8Jo0!WR_QyZhD&7y-ub&#UE4BJ9 zHeG#XaVST`pNl|!3}X+jUs```;CfPj{-&iBt453#wBhg5YKJKAJy}Q9vh@x5V7nsP z`uR%&e=V`rVp?0vg5BCO`87>mJYU~YzjVm8Axs6;|MGfG(-@|yv>&%Rh0zDXMe%ao z3#a@8c0XzkC<&Np)V-?7w|oM37XGG>c?XnLQXQ=ZvP+L1+jO=wFXg}5{#&F}k84!S z?Hwe$XrdhnarCBIY4>D<>CxXO_1|7!>~H;Pb(ndCXcXI9C=hw zfC~3^MUdF+FO?D+Wlu>pah{a1j4?zOn(eQ$-r?*lm(PBgH8328x~s{EDPO5JJCHN& zQ(kCHw3uRfp1pF_%;{F`eydbloV%DrSLw6vFDWilE@+|300YVoE}=Q>gm6H)C?_Z9 zR7S)C`I9)amCoPO&})wH?iH8+xEk2`ZZW3Z00&ZFfHE^VI+CJkYMOs{QtZs6y4Wo< zC78R^MJJ@>8E&Q|JTP&=^Lkna`qP&JLwb^ThuT7YOYfUJ^glKR$Ml^~Kt`O9k}Zsp zz3lQ}Qe)%`7Y&-Kb5Pj>xB39Dz9GMMwF|c_;|F}#e!qW?H`kd;7B;14Wge*|FOeMG zdg8kXA8e}VYzD&VW_0Y^0>fP)RJICs!*q{`&xb+la(TrTgGCX&v`yPnA$#FYuCp@0 zJz7K-WgDRqda67NEzg@j`Euvp8;pF0q_p~8HqieHr!51>qdci|Z2Wpf?>)5*oFP1l zL<@pdTI<_mO&PYN%lkimzwp6=R}FIIb3~1Tu0$VW_b1#G`pwC)q1S0)NTsqiKW}r|TWI?72nW7O znz(+L(A=~nA+KRDdGr$7_1+^^fhvUS=;=ij8%1}TI)AQdGyZHfTQ_*A?z~Rxr*_v( zsKWA|+chTbghZQWyk2X=4?`3kYEz1ZiF($>v77;~(02VG>$%WvW(4I!#dC@HJe=QV z3U1@GNSPzZ3JYz?_~vEWCd4gnKA)}heb(B0W*^$~6ychs)-&7dpC(snp@G+Y23Y1* zMiE)^cQkTB#kT^!sz=7Gzxndr^}&z~P|xWYwN>?@NkWah2_g7TFt+5@%A~MLdU(o| z#ufKY4D74OoYKLk+IQ+XZs@%qNI}KoA7?JERWK0V#GZd{ytJ2Z2y)p!} zh+9&}DM(oiY1~JrOqAp6DZmihW)>3CpYopM3AWGl@9cAIwns#d);Z_j4ky|rZy(9Y zmy!fe$KdTzWSbUc3q4OWAxNq)x$^?goMR^gSk!qL5O771ow~*!Ch(g1?>_50^XCSc zBUk5qhzWKfmvBb7P8NpM{B?!SrSx_2W0z0h0?w9tR_?(|GpCTTqxmupt#vstQ}mv zfiGkiT4Ji*&zL70;TlV{{aBmJf#?*^ZvtM~%R=#JdwiTwH|T*6gKn%9@yc*V*WKsd z9_$Pc)o&;JLG3~us&LWW`q_PMfFpsY8WaYOl5E;koOT}OvORrjL=H?-x4N(UiI75b8FKBASfJy57>%gEPUNHv>D6!=we9CwSX_`dXg8Kx-(|8^ zJu&fUa>#SuO4q3n^F??fQwGetR_5FD-Uyy{VsV)4&h#v=2}U1Al3!2($*s#TbBZCl jt-(wPHYqK+lrZJ>XB?Z5%sHF`kZjOb)bTHS*{gp8Fl^~n literal 0 HcmV?d00001 diff --git a/include/Photo.php b/include/Photo.php index 1450374ffc..4d02b5c651 100755 --- a/include/Photo.php +++ b/include/Photo.php @@ -268,9 +268,9 @@ function import_profile_photo($photo,$uid,$cid) { $photo_failure = true; if($photo_failure) { - $photo = $a->get_baseurl() . '/images/default-profile.jpg'; - $thumb = $a->get_baseurl() . '/images/default-profile-sm.jpg'; - $micro = $a->get_baseurl() . '/images/default-profile-mm.jpg'; + $photo = $a->get_baseurl() . '/images/person-175.jpg'; + $thumb = $a->get_baseurl() . '/images/person-80.jpg'; + $micro = $a->get_baseurl() . '/images/person-48.jpg'; } return(array($photo,$thumb,$micro)); diff --git a/include/Scrape.php b/include/Scrape.php index 8344aa7373..9c237916bc 100755 --- a/include/Scrape.php +++ b/include/Scrape.php @@ -684,7 +684,7 @@ function probe_url($url, $mode = PROBE_NORMAL) { if(! x($vcard,'photo')) { $a = get_app(); - $vcard['photo'] = $a->get_baseurl() . '/images/default-profile.jpg' ; + $vcard['photo'] = $a->get_baseurl() . '/images/person-175.jpg' ; } if(! $profile) diff --git a/include/nav.php b/include/nav.php index e280818399..f40e92dbce 100755 --- a/include/nav.php +++ b/include/nav.php @@ -55,7 +55,7 @@ function nav(&$a) { // user info $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($ssl_state)."/images/default-profile-mm.jpg"), + 'icon' => (count($r) ? $r[0]['micro']: $a->get_baseurl($ssl_state)."/images/person-48.jpg"), 'name' => $a->user['username'], ); diff --git a/mod/dfrn_confirm.php b/mod/dfrn_confirm.php index 2f4fb70452..efb5be3a41 100644 --- a/mod/dfrn_confirm.php +++ b/mod/dfrn_confirm.php @@ -655,7 +655,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) { if(count($r)) $photo = $r[0]['photo']; else - $photo = $a->get_baseurl() . '/images/default-profile.jpg'; + $photo = $a->get_baseurl() . '/images/person-175.jpg'; require_once("Photo.php"); diff --git a/mod/notifications.php b/mod/notifications.php index d478b51634..633d7d4ecf 100755 --- a/mod/notifications.php +++ b/mod/notifications.php @@ -143,7 +143,7 @@ function notifications_content(&$a) { '$intro_id' => $rr['intro_id'], '$madeby' => sprintf( t('suggested by %s'),$rr['name']), '$contact_id' => $rr['contact-id'], - '$photo' => ((x($rr,'fphoto')) ? $rr['fphoto'] : "images/default-profile.jpg"), + '$photo' => ((x($rr,'fphoto')) ? $rr['fphoto'] : "images/person-175.jpg"), '$fullname' => $rr['fname'], '$url' => $rr['furl'], '$hidden' => array('hidden', t('Hide this contact from others'), ($rr['hidden'] == 1), ''), diff --git a/mod/photo.php b/mod/photo.php index c4a93769af..4afdd366a4 100755 --- a/mod/photo.php +++ b/mod/photo.php @@ -23,7 +23,7 @@ function photo_init(&$a) { // NOTREACHED } - $default = 'images/default-profile.jpg'; + $default = 'images/person-175.jpg'; if(isset($type)) { @@ -39,12 +39,12 @@ function photo_init(&$a) { break; case 'micro': $resolution = 6; - $default = 'images/default-profile-mm.jpg'; + $default = 'images/person-48.jpg'; break; case 'avatar': default: $resolution = 5; - $default = 'images/default-profile-sm.jpg'; + $default = 'images/person-80.jpg'; break; } From a72a23b6d6e2bf82bbeac04db52ac2fa6f9e231f Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 20 Mar 2012 15:43:34 -0700 Subject: [PATCH 064/187] missed a default profile photo replacement in notifications --- mod/notifications.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/notifications.php b/mod/notifications.php index 633d7d4ecf..ff131010f0 100755 --- a/mod/notifications.php +++ b/mod/notifications.php @@ -191,7 +191,7 @@ function notifications_content(&$a) { '$uid' => $_SESSION['uid'], '$intro_id' => $rr['intro_id'], '$contact_id' => $rr['contact-id'], - '$photo' => ((x($rr,'photo')) ? $rr['photo'] : "images/default-profile.jpg"), + '$photo' => ((x($rr,'photo')) ? $rr['photo'] : "images/person-175.jpg"), '$fullname' => $rr['name'], '$hidden' => array('hidden', t('Hide this contact from others'), ($rr['hidden'] == 1), ''), '$activity' => array('activity', t('Post a new friend activity'), 1, t('if applicable')), From ef33cfcc9a30b7e457c94d772a520162cd6b7a35 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 20 Mar 2012 16:05:32 -0700 Subject: [PATCH 065/187] move friend suggestions to top of contact page, add default contact profile photos if missing --- mod/contacts.php | 5 +++++ mod/photo.php | 20 ++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/mod/contacts.php b/mod/contacts.php index 78c8d40928..8aa51d00ae 100755 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -395,6 +395,11 @@ function contacts_content(&$a) { $nets = ((x($_GET,'nets')) ? notags(trim($_GET['nets'])) : ''); $tabs = array( + array( + 'label' => t('Suggestions'), + 'url' => $a->get_baseurl(true) . '/suggest', + 'sel' => '', + ), array( 'label' => t('All Contacts'), 'url' => $a->get_baseurl(true) . '/contacts/all', diff --git a/mod/photo.php b/mod/photo.php index 4afdd366a4..3a70251200 100755 --- a/mod/photo.php +++ b/mod/photo.php @@ -115,8 +115,24 @@ function photo_init(&$a) { } if(! isset($data)) { - killme(); - // NOTREACHED + if(isset($resolution)) { + switch($resolution) { + + case 4: + $data = file_get_contents('images/person-175.jpg'); + break; + case 5: + $data = file_get_contents('images/person-80.jpg'); + break; + case 6: + $data = file_get_contents('images/person-48.jpg'); + break; + default: + killme(); + // NOTREACHED + break; + } + } } if(isset($customres) && $customres > 0 && $customres < 500) { From 810e69ef0a88a959ce9f5358377cdc1c7d4bd53a Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 20 Mar 2012 19:06:26 -0700 Subject: [PATCH 067/187] more friend suggestions --- include/socgraph.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/socgraph.php b/include/socgraph.php index 79d7340a4e..b2f5455094 100755 --- a/include/socgraph.php +++ b/include/socgraph.php @@ -230,7 +230,7 @@ function all_friends($uid,$cid,$start = 0, $limit = 80) { -function suggestion_query($uid, $start = 0, $limit = 40) { +function suggestion_query($uid, $start = 0, $limit = 80) { if(! $uid) return array(); From f55779fd831029f764c885bf1fd026a7e94f08eb Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 20 Mar 2012 20:47:31 -0700 Subject: [PATCH 068/187] update tinymce to 3.5b2 to fix issues with FF 11 and pasting into code blocks --- .../plugins.bbcode.editor_plugin_src.js | 258 + .../mcefixes/themes.advanced.img.icons.gif | Bin 0 -> 11776 bytes .../themes.advanced.skins.default.dialog.css | 117 + .../themes.advanced.skins.default.ui.css | 213 + library/tinymce/changelog.txt | 453 + library/tinymce/examples/accessibility.html | 101 + library/tinymce/examples/css/content.css | 0 library/tinymce/examples/css/word.css | 0 library/tinymce/examples/custom_formats.html | 8 +- library/tinymce/examples/full.html | 31 +- library/tinymce/examples/index.html | 0 library/tinymce/examples/lists/image_list.js | 0 library/tinymce/examples/lists/link_list.js | 0 library/tinymce/examples/lists/media_list.js | 6 +- .../tinymce/examples/lists/template_list.js | 0 library/tinymce/examples/media/logo.jpg | Bin library/tinymce/examples/media/logo_over.jpg | Bin library/tinymce/examples/media/sample.avi | Bin library/tinymce/examples/media/sample.dcr | Bin library/tinymce/examples/media/sample.flv | Bin 0 -> 88722 bytes library/tinymce/examples/media/sample.mov | Bin library/tinymce/examples/media/sample.ram | 0 library/tinymce/examples/media/sample.rm | Bin library/tinymce/examples/media/sample.swf | Bin library/tinymce/examples/menu.html | 3 +- library/tinymce/examples/simple.html | 6 +- library/tinymce/examples/skins.html | 14 +- .../tinymce/examples/templates/layout1.htm | 0 .../tinymce/examples/templates/snippet1.htm | 0 library/tinymce/examples/translate.html | 80 - library/tinymce/examples/word.html | 11 +- library/tinymce/jscripts/tiny_mce/langs/en.js | 171 +- library/tinymce/jscripts/tiny_mce/license.txt | 0 .../tiny_mce/plugins/advhr/css/advhr.css | 0 .../tiny_mce/plugins/advhr/editor_plugin.js | 0 .../plugins/advhr/editor_plugin_src.js | 0 .../tiny_mce/plugins/advhr/js/rule.js | 0 .../tiny_mce/plugins/advhr/langs/en_dlg.js | 6 +- .../jscripts/tiny_mce/plugins/advhr/rule.htm | 59 +- .../plugins/advimage/css/advimage.css | 0 .../plugins/advimage/editor_plugin.js | 2 +- .../plugins/advimage/editor_plugin_src.js | 2 +- .../tiny_mce/plugins/advimage/image.htm | 65 +- .../tiny_mce/plugins/advimage/img/sample.gif | Bin .../tiny_mce/plugins/advimage/js/image.js | 45 +- .../tiny_mce/plugins/advimage/langs/en_dlg.js | 44 +- .../tiny_mce/plugins/advlink/css/advlink.css | 0 .../tiny_mce/plugins/advlink/editor_plugin.js | 0 .../plugins/advlink/editor_plugin_src.js | 0 .../tiny_mce/plugins/advlink/js/advlink.js | 49 +- .../tiny_mce/plugins/advlink/langs/en_dlg.js | 53 +- .../tiny_mce/plugins/advlink/link.htm | 65 +- .../tiny_mce/plugins/advlist/editor_plugin.js | 2 +- .../plugins/advlist/editor_plugin_src.js | 40 +- .../plugins/autolink/editor_plugin.js | 1 + .../plugins/autolink/editor_plugin_src.js | 174 + .../plugins/autoresize/editor_plugin.js | 2 +- .../plugins/autoresize/editor_plugin_src.js | 72 +- .../plugins/autosave/editor_plugin.js | 2 +- .../plugins/autosave/editor_plugin_src.js | 23 +- .../tiny_mce/plugins/autosave/langs/en.js | 0 .../tiny_mce/plugins/bbcode/editor_plugin.js | 156 +- .../plugins/bbcode/editor_plugin_cmp.js | 1 - .../plugins/bbcode/editor_plugin_src.js | 0 .../plugins/contextmenu/editor_plugin.js | 2 +- .../plugins/contextmenu/editor_plugin_src.js | 56 +- .../plugins/directionality/editor_plugin.js | 0 .../directionality/editor_plugin_src.js | 0 .../plugins/emotions/editor_plugin.js | 0 .../plugins/emotions/editor_plugin_src.js | 0 .../tiny_mce/plugins/emotions/emotions.htm | 62 +- .../plugins/emotions/img/smiley-cool.gif | Bin .../plugins/emotions/img/smiley-cry.gif | Bin .../emotions/img/smiley-embarassed.gif | Bin .../emotions/img/smiley-foot-in-mouth.gif | Bin 344 -> 342 bytes .../plugins/emotions/img/smiley-frown.gif | Bin .../plugins/emotions/img/smiley-innocent.gif | Bin .../plugins/emotions/img/smiley-kiss.gif | Bin .../plugins/emotions/img/smiley-laughing.gif | Bin 344 -> 343 bytes .../emotions/img/smiley-money-mouth.gif | Bin .../plugins/emotions/img/smiley-sealed.gif | Bin 325 -> 323 bytes .../plugins/emotions/img/smiley-smile.gif | Bin 345 -> 344 bytes .../plugins/emotions/img/smiley-surprised.gif | Bin 342 -> 338 bytes .../emotions/img/smiley-tongue-out.gif | Bin .../plugins/emotions/img/smiley-undecided.gif | Bin .../plugins/emotions/img/smiley-wink.gif | Bin 351 -> 350 bytes .../plugins/emotions/img/smiley-yell.gif | Bin .../tiny_mce/plugins/emotions/js/emotions.js | 21 + .../tiny_mce/plugins/emotions/langs/en_dlg.js | 21 +- .../tiny_mce/plugins/example/dialog.htm | 0 .../tiny_mce/plugins/example/editor_plugin.js | 0 .../plugins/example/editor_plugin_src.js | 0 .../tiny_mce/plugins/example/img/example.gif | Bin .../tiny_mce/plugins/example/js/dialog.js | 0 .../tiny_mce/plugins/example/langs/en.js | 0 .../tiny_mce/plugins/example/langs/en_dlg.js | 0 .../example_dependency/editor_plugin.js | 1 + .../example_dependency/editor_plugin_src.js | 50 + .../plugins/fullpage/css/fullpage.css | 45 +- .../plugins/fullpage/editor_plugin.js | 2 +- .../plugins/fullpage/editor_plugin_src.js | 384 +- .../tiny_mce/plugins/fullpage/fullpage.htm | 348 +- .../tiny_mce/plugins/fullpage/js/fullpage.js | 613 +- .../tiny_mce/plugins/fullpage/langs/en_dlg.js | 86 +- .../plugins/fullscreen/editor_plugin.js | 2 +- .../plugins/fullscreen/editor_plugin_src.js | 16 +- .../plugins/fullscreen/fullscreen.htm | 3 +- .../tiny_mce/plugins/iespell/editor_plugin.js | 0 .../plugins/iespell/editor_plugin_src.js | 0 .../plugins/inlinepopups/editor_plugin.js | 2 +- .../plugins/inlinepopups/editor_plugin_src.js | 96 +- .../skins/clearlooks2/img/alert.gif | Bin 818 -> 810 bytes .../skins/clearlooks2/img/button.gif | Bin 280 -> 272 bytes .../skins/clearlooks2/img/buttons.gif | Bin .../skins/clearlooks2/img/confirm.gif | Bin 915 -> 907 bytes .../skins/clearlooks2/img/corners.gif | Bin 911 -> 909 bytes .../skins/clearlooks2/img/horizontal.gif | Bin .../skins/clearlooks2/img/vertical.gif | Bin 92 -> 84 bytes .../inlinepopups/skins/clearlooks2/window.css | 2 +- .../plugins/inlinepopups/template.htm | 0 .../plugins/insertdatetime/editor_plugin.js | 0 .../insertdatetime/editor_plugin_src.js | 0 .../tiny_mce/plugins/layer/editor_plugin.js | 2 +- .../plugins/layer/editor_plugin_src.js | 60 +- .../plugins/legacyoutput/editor_plugin.js | 2 +- .../plugins/legacyoutput/editor_plugin_src.js | 57 +- .../tiny_mce/plugins/lists/editor_plugin.js | 1 + .../plugins/lists/editor_plugin_src.js | 951 ++ .../tiny_mce/plugins/media/css/content.css | 6 - .../tiny_mce/plugins/media/css/media.css | 9 +- .../tiny_mce/plugins/media/editor_plugin.js | 2 +- .../plugins/media/editor_plugin_src.js | 1096 +- .../tiny_mce/plugins/media/img/flash.gif | Bin 241 -> 0 bytes .../tiny_mce/plugins/media/img/flv_player.swf | Bin 11668 -> 0 bytes .../tiny_mce/plugins/media/img/quicktime.gif | Bin 303 -> 0 bytes .../tiny_mce/plugins/media/img/shockwave.gif | Bin 387 -> 0 bytes .../tiny_mce/plugins/media/js/embed.js | 0 .../tiny_mce/plugins/media/js/media.js | 1046 +- .../tiny_mce/plugins/media/langs/en_dlg.js | 104 +- .../jscripts/tiny_mce/plugins/media/media.htm | 687 +- .../tiny_mce/plugins/media/moxieplayer.swf | Bin 0 -> 19980 bytes .../plugins/nonbreaking/editor_plugin.js | 2 +- .../plugins/nonbreaking/editor_plugin_src.js | 7 +- .../plugins/noneditable/editor_plugin.js | 2 +- .../plugins/noneditable/editor_plugin_src.js | 452 +- .../plugins/pagebreak/css/content.css | 1 - .../plugins/pagebreak/editor_plugin.js | 2 +- .../plugins/pagebreak/editor_plugin_src.js | 5 +- .../tiny_mce/plugins/pagebreak/img/trans.gif | Bin 43 -> 0 bytes .../tiny_mce/plugins/paste/editor_plugin.js | 2 +- .../plugins/paste/editor_plugin_src.js | 395 +- .../tiny_mce/plugins/paste/js/pastetext.js | 0 .../tiny_mce/plugins/paste/js/pasteword.js | 0 .../tiny_mce/plugins/paste/langs/en_dlg.js | 6 +- .../tiny_mce/plugins/paste/pastetext.htm | 0 .../tiny_mce/plugins/paste/pasteword.htm | 0 .../tiny_mce/plugins/preview/editor_plugin.js | 0 .../plugins/preview/editor_plugin_src.js | 0 .../tiny_mce/plugins/preview/example.html | 0 .../plugins/preview/jscripts/embed.js | 0 .../tiny_mce/plugins/preview/preview.html | 0 .../tiny_mce/plugins/print/editor_plugin.js | 0 .../plugins/print/editor_plugin_src.js | 0 .../tiny_mce/plugins/save/editor_plugin.js | 0 .../plugins/save/editor_plugin_src.js | 0 .../searchreplace/css/searchreplace.css | 0 .../plugins/searchreplace/editor_plugin.js | 2 +- .../searchreplace/editor_plugin_src.js | 4 + .../plugins/searchreplace/js/searchreplace.js | 24 +- .../plugins/searchreplace/langs/en_dlg.js | 17 +- .../plugins/searchreplace/searchreplace.htm | 33 +- .../plugins/spellchecker/css/content.css | 0 .../plugins/spellchecker/editor_plugin.js | 2 +- .../plugins/spellchecker/editor_plugin_src.js | 155 +- .../plugins/spellchecker/img/wline.gif | Bin .../tiny_mce/plugins/style/css/props.css | 1 + .../tiny_mce/plugins/style/editor_plugin.js | 2 +- .../plugins/style/editor_plugin_src.js | 22 +- .../tiny_mce/plugins/style/js/props.js | 90 +- .../tiny_mce/plugins/style/langs/en_dlg.js | 64 +- .../jscripts/tiny_mce/plugins/style/props.htm | 908 +- .../tiny_mce/plugins/style/readme.txt | 19 + .../plugins/tabfocus/editor_plugin.js | 2 +- .../plugins/tabfocus/editor_plugin_src.js | 234 +- .../jscripts/tiny_mce/plugins/table/cell.htm | 30 +- .../tiny_mce/plugins/table/css/cell.css | 0 .../tiny_mce/plugins/table/css/row.css | 0 .../tiny_mce/plugins/table/css/table.css | 0 .../tiny_mce/plugins/table/editor_plugin.js | 2 +- .../plugins/table/editor_plugin_src.js | 2553 ++-- .../tiny_mce/plugins/table/js/cell.js | 53 +- .../tiny_mce/plugins/table/js/merge_cells.js | 0 .../jscripts/tiny_mce/plugins/table/js/row.js | 36 +- .../tiny_mce/plugins/table/js/table.js | 88 +- .../tiny_mce/plugins/table/langs/en_dlg.js | 75 +- .../tiny_mce/plugins/table/merge_cells.htm | 22 +- .../jscripts/tiny_mce/plugins/table/row.htm | 21 +- .../jscripts/tiny_mce/plugins/table/table.htm | 107 +- .../tiny_mce/plugins/template/blank.htm | 0 .../plugins/template/css/template.css | 0 .../plugins/template/editor_plugin.js | 0 .../plugins/template/editor_plugin_src.js | 0 .../tiny_mce/plugins/template/js/template.js | 2 +- .../tiny_mce/plugins/template/langs/en_dlg.js | 16 +- .../tiny_mce/plugins/template/template.htm | 0 .../plugins/visualblocks/css/visualblocks.css | 19 + .../plugins/visualblocks/editor_plugin.js | 1 + .../plugins/visualblocks/editor_plugin_src.js | 63 + .../plugins/visualchars/editor_plugin.js | 2 +- .../plugins/visualchars/editor_plugin_src.js | 33 +- .../plugins/wordcount/editor_plugin.js | 2 +- .../plugins/wordcount/editor_plugin_src.js | 74 +- .../tiny_mce/plugins/xhtmlxtras/abbr.htm | 11 +- .../tiny_mce/plugins/xhtmlxtras/acronym.htm | 11 +- .../plugins/xhtmlxtras/attributes.htm | 11 +- .../tiny_mce/plugins/xhtmlxtras/cite.htm | 9 +- .../plugins/xhtmlxtras/css/attributes.css | 0 .../tiny_mce/plugins/xhtmlxtras/css/popup.css | 0 .../tiny_mce/plugins/xhtmlxtras/del.htm | 17 +- .../plugins/xhtmlxtras/editor_plugin.js | 2 +- .../plugins/xhtmlxtras/editor_plugin_src.js | 24 +- .../tiny_mce/plugins/xhtmlxtras/ins.htm | 21 +- .../tiny_mce/plugins/xhtmlxtras/js/abbr.js | 0 .../tiny_mce/plugins/xhtmlxtras/js/acronym.js | 0 .../plugins/xhtmlxtras/js/attributes.js | 17 +- .../tiny_mce/plugins/xhtmlxtras/js/cite.js | 0 .../tiny_mce/plugins/xhtmlxtras/js/del.js | 14 +- .../plugins/xhtmlxtras/js/element_common.js | 8 +- .../tiny_mce/plugins/xhtmlxtras/js/ins.js | 17 +- .../plugins/xhtmlxtras/langs/en_dlg.js | 33 +- .../tiny_mce/themes/advanced/about.htm | 8 +- .../tiny_mce/themes/advanced/anchor.htm | 10 +- .../tiny_mce/themes/advanced/charmap.htm | 85 +- .../tiny_mce/themes/advanced/color_picker.htm | 19 +- .../themes/advanced/editor_template.js | 2 +- .../themes/advanced/editor_template_src.js | 431 +- .../tiny_mce/themes/advanced/image.htm | 102 +- .../themes/advanced/img/colorpicker.jpg | Bin 3189 -> 2584 bytes .../tiny_mce/themes/advanced/img/flash.gif | Bin 0 -> 239 bytes .../tiny_mce/themes/advanced/img/icons.gif | Bin .../tiny_mce/themes/advanced/img/iframe.gif | Bin 0 -> 600 bytes .../advanced}/img/pagebreak.gif | Bin .../themes/advanced/img/quicktime.gif | Bin 0 -> 301 bytes .../advanced}/img/realmedia.gif | Bin .../themes/advanced/img/shockwave.gif | Bin 0 -> 384 bytes .../media => themes/advanced}/img/trans.gif | Bin .../tiny_mce/themes/advanced/img/video.gif | Bin 0 -> 597 bytes .../advanced}/img/windowsmedia.gif | Bin .../tiny_mce/themes/advanced/js/about.js | 1 + .../tiny_mce/themes/advanced/js/anchor.js | 13 +- .../tiny_mce/themes/advanced/js/charmap.js | 40 +- .../themes/advanced/js/color_picker.js | 598 +- .../tiny_mce/themes/advanced/js/image.js | 18 +- .../tiny_mce/themes/advanced/js/link.js | 11 +- .../themes/advanced/js/source_editor.js | 50 +- .../tiny_mce/themes/advanced/langs/en.js | 63 +- .../tiny_mce/themes/advanced/langs/en_dlg.js | 52 +- .../tiny_mce/themes/advanced/link.htm | 55 +- .../tiny_mce/themes/advanced/shortcuts.htm | 47 + .../themes/advanced/skins/default/content.css | 32 +- .../themes/advanced/skins/default/dialog.css | 0 .../advanced/skins/default/img/buttons.png | Bin 3274 -> 3133 bytes .../advanced/skins/default/img/items.gif | Bin 70 -> 64 bytes .../advanced/skins/default/img/menu_arrow.gif | Bin .../advanced/skins/default/img/menu_check.gif | Bin .../advanced/skins/default/img/progress.gif | Bin .../advanced/skins/default/img/tabs.gif | Bin 1326 -> 1322 bytes .../themes/advanced/skins/default/ui.css | 0 .../advanced/skins/highcontrast/content.css | 25 + .../advanced/skins/highcontrast/dialog.css | 105 + .../themes/advanced/skins/highcontrast/ui.css | 102 + .../themes/advanced/skins/o2k7/content.css | 16 +- .../themes/advanced/skins/o2k7/dialog.css | 1 + .../advanced/skins/o2k7/img/button_bg.png | Bin 5859 -> 2766 bytes .../skins/o2k7/img/button_bg_black.png | Bin 3736 -> 651 bytes .../skins/o2k7/img/button_bg_silver.png | Bin 5358 -> 2084 bytes .../themes/advanced/skins/o2k7/ui.css | 15 +- .../themes/advanced/skins/o2k7/ui_black.css | 2 +- .../themes/advanced/skins/o2k7/ui_silver.css | 2 +- .../themes/advanced/source_editor.htm | 6 +- .../tiny_mce/themes/simple/editor_template.js | 2 +- .../themes/simple/editor_template_src.js | 3 +- .../tiny_mce/themes/simple/img/icons.gif | Bin 1440 -> 806 bytes .../tiny_mce/themes/simple/langs/en.js | 12 +- .../themes/simple/skins/default/content.css | 0 .../themes/simple/skins/default/ui.css | 0 .../themes/simple/skins/o2k7/content.css | 0 .../simple/skins/o2k7/img/button_bg.png | Bin .../tiny_mce/themes/simple/skins/o2k7/ui.css | 0 library/tinymce/jscripts/tiny_mce/tiny_mce.js | 2 +- .../jscripts/tiny_mce/tiny_mce_popup.js | 2 +- .../tinymce/jscripts/tiny_mce/tiny_mce_src.js | 11522 ++++++++++------ .../tiny_mce/utils/editable_selects.js | 2 +- .../jscripts/tiny_mce/utils/form_utils.js | 18 +- .../tinymce/jscripts/tiny_mce/utils/mctabs.js | 105 +- .../jscripts/tiny_mce/utils/validate.js | 38 +- 296 files changed, 17157 insertions(+), 10477 deletions(-) create mode 100755 library/mcefixes/plugins.bbcode.editor_plugin_src.js create mode 100755 library/mcefixes/themes.advanced.img.icons.gif create mode 100755 library/mcefixes/themes.advanced.skins.default.dialog.css create mode 100755 library/mcefixes/themes.advanced.skins.default.ui.css mode change 100755 => 100644 library/tinymce/changelog.txt create mode 100644 library/tinymce/examples/accessibility.html mode change 100755 => 100644 library/tinymce/examples/css/content.css mode change 100755 => 100644 library/tinymce/examples/css/word.css mode change 100755 => 100644 library/tinymce/examples/custom_formats.html mode change 100755 => 100644 library/tinymce/examples/full.html mode change 100755 => 100644 library/tinymce/examples/index.html mode change 100755 => 100644 library/tinymce/examples/lists/image_list.js mode change 100755 => 100644 library/tinymce/examples/lists/link_list.js mode change 100755 => 100644 library/tinymce/examples/lists/media_list.js mode change 100755 => 100644 library/tinymce/examples/lists/template_list.js mode change 100755 => 100644 library/tinymce/examples/media/logo.jpg mode change 100755 => 100644 library/tinymce/examples/media/logo_over.jpg mode change 100755 => 100644 library/tinymce/examples/media/sample.avi mode change 100755 => 100644 library/tinymce/examples/media/sample.dcr create mode 100644 library/tinymce/examples/media/sample.flv mode change 100755 => 100644 library/tinymce/examples/media/sample.mov mode change 100755 => 100644 library/tinymce/examples/media/sample.ram mode change 100755 => 100644 library/tinymce/examples/media/sample.rm mode change 100755 => 100644 library/tinymce/examples/media/sample.swf mode change 100755 => 100644 library/tinymce/examples/menu.html mode change 100755 => 100644 library/tinymce/examples/simple.html mode change 100755 => 100644 library/tinymce/examples/skins.html mode change 100755 => 100644 library/tinymce/examples/templates/layout1.htm mode change 100755 => 100644 library/tinymce/examples/templates/snippet1.htm delete mode 100755 library/tinymce/examples/translate.html mode change 100755 => 100644 library/tinymce/examples/word.html mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/langs/en.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/license.txt mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js create mode 100644 library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js create mode 100644 library/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js delete mode 100755 library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_cmp.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js create mode 100644 library/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin.js create mode 100644 library/tinymce/jscripts/tiny_mce/plugins/example_dependency/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js create mode 100644 library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js create mode 100644 library/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js delete mode 100755 library/tinymce/jscripts/tiny_mce/plugins/media/css/content.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/media/css/media.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js delete mode 100755 library/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif delete mode 100755 library/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf delete mode 100755 library/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif delete mode 100755 library/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/media/js/media.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/media/media.htm create mode 100644 library/tinymce/jscripts/tiny_mce/plugins/media/moxieplayer.swf mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js delete mode 100755 library/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js delete mode 100755 library/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/preview/example.html mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/preview/preview.html mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/style/css/props.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/style/js/props.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/style/props.htm create mode 100644 library/tinymce/jscripts/tiny_mce/plugins/style/readme.txt mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/cell.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/css/row.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/css/table.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/js/row.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/js/table.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/row.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/table/table.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/template/blank.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/template/css/template.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/template/js/template.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/template/template.htm create mode 100644 library/tinymce/jscripts/tiny_mce/plugins/visualblocks/css/visualblocks.css create mode 100644 library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin.js create mode 100644 library/tinymce/jscripts/tiny_mce/plugins/visualblocks/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/about.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/image.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg create mode 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/img/flash.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif create mode 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/img/iframe.gif rename library/tinymce/jscripts/tiny_mce/{plugins/pagebreak => themes/advanced}/img/pagebreak.gif (100%) mode change 100755 => 100644 create mode 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/img/quicktime.gif rename library/tinymce/jscripts/tiny_mce/{plugins/media => themes/advanced}/img/realmedia.gif (100%) mode change 100755 => 100644 create mode 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/img/shockwave.gif rename library/tinymce/jscripts/tiny_mce/{plugins/media => themes/advanced}/img/trans.gif (100%) mode change 100755 => 100644 create mode 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/img/video.gif rename library/tinymce/jscripts/tiny_mce/{plugins/media => themes/advanced}/img/windowsmedia.gif (100%) mode change 100755 => 100644 mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/link.htm create mode 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css create mode 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css create mode 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css create mode 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/tiny_mce.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/tiny_mce_popup.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/tiny_mce_src.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/utils/editable_selects.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/utils/form_utils.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/utils/mctabs.js mode change 100755 => 100644 library/tinymce/jscripts/tiny_mce/utils/validate.js diff --git a/library/mcefixes/plugins.bbcode.editor_plugin_src.js b/library/mcefixes/plugins.bbcode.editor_plugin_src.js new file mode 100755 index 0000000000..183f2bc68d --- /dev/null +++ b/library/mcefixes/plugins.bbcode.editor_plugin_src.js @@ -0,0 +1,258 @@ +/** + * 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 + */ + +/* Macgirvin Aug-2010 changed from punbb to dfrn dialect */ + +(function() { + tinymce.create('tinymce.plugins.BBCodePlugin', { + init : function(ed, url) { + var t = this, dialect = ed.getParam('bbcode_dialect', 'dfrn').toLowerCase(); + + ed.onBeforeSetContent.add(function(ed, o) { + o.content = t['_' + dialect + '_bbcode2html'](o.content); + }); + + ed.onPostProcess.add(function(ed, o) { + if (o.set) + o.content = t['_' + dialect + '_bbcode2html'](o.content); + + if (o.get) + o.content = t['_' + dialect + '_html2bbcode'](o.content); + }); + }, + + getInfo : function() { + return { + longname : 'BBCode Plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode', + version : tinymce.majorVersion + "." + tinymce.minorVersion + }; + }, + + // Private methods + + // HTML -> BBCode in DFRN dialect + _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; + } + $.ajax({ + type:"POST", + url: 'oembed/h2b', + 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 */ + + + // example: to [b] + rep(/(.*?)<\/a>/gi,"[bookmark=$1]$2[/bookmark]"); + rep(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"); + rep(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"); + rep(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"); + rep(/(.*?)<\/font>/gi,"$1"); + rep(//gi,"[img=$1x$2]$3[/img]"); + rep(//gi,"[img=$2x$1]$3[/img]"); + 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(/(.*?)<\/code>/gi,"[code]$1[/code]"); + rep(/<\/(strong|b)>/gi,"[/b]"); + rep(/<(strong|b)>/gi,"[b]"); + rep(/<\/(em|i)>/gi,"[/i]"); + rep(/<(em|i)>/gi,"[i]"); + rep(/<\/u>/gi,"[/u]"); + rep(/(.*?)<\/span>/gi,"[u]$1[/u]"); + rep(//gi,"[u]"); + rep(/]*>/gi,"[quote]"); + rep(/<\/blockquote>/gi,"[/quote]"); + rep(/
                                                                        /gi,"[hr]"); + rep(/
                                                                        /gi,"\n\n"); + rep(//gi,"\n\n"); + rep(/
                                                                        /gi,"\n"); + rep(/

                                                                        /gi,""); + rep(/<\/p>/gi,"\n"); + rep(/ /gi," "); + rep(/"/gi,"\""); + rep(/</gi,"<"); + rep(/>/gi,">"); + rep(/&/gi,"&"); + + return s; + }, + + // BBCode -> HTML from DFRN dialect + _dfrn_bbcode2html : 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]"); + + }; + + + + + + // example: [b] to + rep(/\n/gi,"
                                                                        "); + rep(/\[b\]/gi,""); + rep(/\[\/b\]/gi,""); + rep(/\[i\]/gi,""); + rep(/\[\/i\]/gi,""); + rep(/\[u\]/gi,""); + rep(/\[\/u\]/gi,""); + rep(/\[hr\]/gi,"


                                                                        "); + rep(/\[bookmark=([^\]]+)\](.*?)\[\/bookmark\]/gi,"$2"); + rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"
                                                                        $2"); + rep(/\[url\](.*?)\[\/url\]/gi,"$1"); + rep(/\[img=(.*?)x(.*?)\](.*?)\[\/img\]/gi,""); + rep(/\[img\](.*?)\[\/img\]/gi,""); + + rep(/\[list\](.*?)\[\/list\]/gi, '
                                                                          $1
                                                                        '); + rep(/\[list=\](.*?)\[\/list\]/gi, '
                                                                          $1
                                                                        '); + rep(/\[list=1\](.*?)\[\/list\]/gi, '
                                                                          $1
                                                                        '); + rep(/\[list=i\](.*?)\[\/list\]/gi,'
                                                                          $1
                                                                        '); + rep(/\[list=I\](.*?)\[\/list\]/gi, '
                                                                          $1
                                                                        '); + rep(/\[list=a\](.*?)\[\/list\]/gi, '
                                                                          $1
                                                                        '); + rep(/\[list=A\](.*?)\[\/list\]/gi, '
                                                                          $1
                                                                        '); + rep(/\[li\](.*?)\[\/li\]/gi, '
                                                                      • $1
                                                                      • '); + rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); + rep(/\[size=(.*?)\](.*?)\[\/size\]/gi,"$2"); + rep(/\[code\](.*?)\[\/code\]/gi,"$1"); + rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"
                                                                        $1
                                                                        "); + + /* oembed */ + function _b2h_cb(match, url) { + url = bin2hex(url); + function s_b2h(data) { + match = data; + } + $.ajax({ + url: 'oembed/b2h?url=' + url, + async: false, + success: s_b2h, + dataType: 'html' + }); + return match; + } + s = s.replace(/\[embed\](.*?)\[\/embed\]/gi, _b2h_cb); + + /* /oembed */ + + return s; + } + }); + + // Register plugin + tinymce.PluginManager.add('bbcode', tinymce.plugins.BBCodePlugin); +})(); diff --git a/library/mcefixes/themes.advanced.img.icons.gif b/library/mcefixes/themes.advanced.img.icons.gif new file mode 100755 index 0000000000000000000000000000000000000000..efb356c417872141ac1ddce5916b92bc852dbd00 GIT binary patch literal 11776 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 literal 0 HcmV?d00001 diff --git a/library/mcefixes/themes.advanced.skins.default.dialog.css b/library/mcefixes/themes.advanced.skins.default.dialog.css new file mode 100755 index 0000000000..f01222650e --- /dev/null +++ b/library/mcefixes/themes.advanced.skins.default.dialog.css @@ -0,0 +1,117 @@ +/* Generic */ +body { +font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; +scrollbar-3dlight-color:#F0F0EE; +scrollbar-arrow-color:#676662; +scrollbar-base-color:#F0F0EE; +scrollbar-darkshadow-color:#DDDDDD; +scrollbar-face-color:#E0E0DD; +scrollbar-highlight-color:#F0F0EE; +scrollbar-shadow-color:#F0F0EE; +scrollbar-track-color:#F5F5F5; +background:#F0F0EE; +padding:0; +margin:8px 8px 0 8px; +} + +html {background:#F0F0EE;} +td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} +textarea {resize:none;outline:none;} +a:link, a:visited {color:black;} +a:hover {color:#2B6FB6;} +.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;} +input.invalid {border:1px solid #EE0000;} +input {background:#FFF; border:1px solid #CCC;} +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 { +border:0; margin:0; padding:0; +font-weight:bold; +width:94px; height:26px; +background:url(img/buttons.png) 0 -26px; +cursor:pointer; +padding-bottom:2px; +float:left; +} + +#insert {background:url(img/buttons.png) 0 -52px} +#cancel {background:url(img/buttons.png) 0 0; 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; background:url(img/tabs.gif) repeat-x 0 -72px;} +.tabs ul {margin:0; padding:0; list-style:none;} +.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;} +.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;} +.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;} +.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;} +.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; border-top:0px; 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;} +#colorpicker #picker_panel fieldset {margin:auto;width:325px;} diff --git a/library/mcefixes/themes.advanced.skins.default.ui.css b/library/mcefixes/themes.advanced.skins.default.ui.css new file mode 100755 index 0000000000..5f1f96448c --- /dev/null +++ b/library/mcefixes/themes.advanced.skins.default.ui.css @@ -0,0 +1,213 @@ +/* Reset */ +.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left} +.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000} +.defaultSkin table td {vertical-align:middle} + +/* Containers */ +.defaultSkin table {direction:ltr; background:#FFF} +.defaultSkin iframe {display:block; background:#FFF} +.defaultSkin .mceToolbar {height:26px} +.defaultSkin .mceLeft {text-align:left} +.defaultSkin .mceRight {text-align:right} + +/* External */ +.defaultSkin .mceExternalToolbar {position:absolute; border:2px solid #CCC; border-bottom:0; display:none;} +.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;} +.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0} + +/* Layout */ +.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC} +.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC} +.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC} +.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;} +.defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top} +.defaultSkin .mceIframeContainer { /*border-top:1px solid #CCC; border-bottom:1px solid #CCC */ border: none;} +.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px} +.defaultSkin .mceStatusbar div {float:left; margin:2px} +.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0} +.defaultSkin .mceStatusbar a:hover {text-decoration:underline} +.defaultSkin table.mceToolbar {margin-left:3px} +.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px} +.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} +.defaultSkin td.mceCenter {text-align:center;} +.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;} +.defaultSkin td.mceRight table {margin:0 0 0 auto;} + +/* Button */ +.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:10px} +.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0} +.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0} +.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +.defaultSkin .mceButtonLabeled {width:auto} +.defaultSkin .mceButtonLabeled span.mceIcon {float:left} +.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica} +.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888} + +/* Separator */ +.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px} + +/* ListBox */ +.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block} +.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} +.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;} +.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF} +.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0} +.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;} +.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden} +.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px} +.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;} +.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;} + +/* SplitButton */ +.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr} +.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block} +.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;} +.defaultSkin .mceSplitButton span.mceAction {width:20px; background-image:url(../../img/icons.gif);} +.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;} +.defaultSkin .mceSplitButton span.mceOpen {display:none} +.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0} +.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;} +.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} +.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0} +.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;} + +/* ColorSplitButton */ +.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray} +.defaultSkin .mceColorSplitMenu td {padding:2px} +.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080} +.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} +.defaultSkin .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} +.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2} +.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A} +.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a} +.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px} + +/* Menu */ +.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8} +.defaultSkin .mceNoIcons span.mceIcon {width:0;} +.defaultSkin .mceNoIcons a .mceText {padding-left:10px} +.defaultSkin .mceMenu table {background:#FFF} +.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block} +.defaultSkin .mceMenu td {height:20px} +.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0} +.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block} +.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px} +.defaultSkin .mceMenu pre.mceText {font-family:Monospace} +.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;} +.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3} +.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px} +.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD} +.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px} +.defaultSkin .mceMenuItemDisabled .mceText {color:#888} +.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)} +.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center} +.defaultSkin .mceMenu span.mceMenuLine {display:none} +.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;} + +/* Progress,Resize */ +.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF} +.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} + +/* Formats */ +.defaultSkin .mce_formatPreview a {font-size:10px} +.defaultSkin .mce_p span.mceText {} +.defaultSkin .mce_address span.mceText {font-style:italic} +.defaultSkin .mce_pre span.mceText {font-family:monospace} +.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} +.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} +.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} +.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} +.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} +.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} + +/* Theme */ +.defaultSkin span.mce_bold {background-position:0 0} +.defaultSkin span.mce_italic {background-position:-60px 0} +.defaultSkin span.mce_underline {background-position:-140px 0} +.defaultSkin span.mce_strikethrough {background-position:-120px 0} +.defaultSkin span.mce_undo {background-position:-160px 0} +.defaultSkin span.mce_redo {background-position:-100px 0} +.defaultSkin span.mce_cleanup {background-position:-40px 0} +.defaultSkin span.mce_bullist {background-position:-20px 0} +.defaultSkin span.mce_numlist {background-position:-80px 0} +.defaultSkin span.mce_justifyleft {background-position:-460px 0} +.defaultSkin span.mce_justifyright {background-position:-480px 0} +.defaultSkin span.mce_justifycenter {background-position:-420px 0} +.defaultSkin span.mce_justifyfull {background-position:-440px 0} +.defaultSkin span.mce_anchor {background-position:-200px 0} +.defaultSkin span.mce_indent {background-position:-400px 0} +.defaultSkin span.mce_outdent {background-position:-540px 0} +.defaultSkin span.mce_link {background-position:-500px 0} +.defaultSkin span.mce_unlink {background-position:-640px 0} +.defaultSkin span.mce_sub {background-position:-600px 0} +.defaultSkin span.mce_sup {background-position:-620px 0} +.defaultSkin span.mce_removeformat {background-position:-580px 0} +.defaultSkin span.mce_newdocument {background-position:-520px 0} +.defaultSkin span.mce_image {background-position:-380px 0} +.defaultSkin span.mce_help {background-position:-340px 0} +.defaultSkin span.mce_code {background-position:-260px 0} +.defaultSkin span.mce_hr {background-position:-360px 0} +.defaultSkin span.mce_visualaid {background-position:-660px 0} +.defaultSkin span.mce_charmap {background-position:-240px 0} +.defaultSkin span.mce_paste {background-position:-560px 0} +.defaultSkin span.mce_copy {background-position:-700px 0} +.defaultSkin span.mce_cut {background-position:-680px 0} +.defaultSkin span.mce_blockquote {background-position:-220px 0} +.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0} +.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0} +.defaultSkin span.mce_forecolorpicker {background-position:-720px 0} +.defaultSkin span.mce_backcolorpicker {background-position:-760px 0} + +/* Plugins */ +.defaultSkin span.mce_advhr {background-position:-0px -20px} +.defaultSkin span.mce_ltr {background-position:-20px -20px} +.defaultSkin span.mce_rtl {background-position:-40px -20px} +.defaultSkin span.mce_emotions {background-position:-60px -20px} +.defaultSkin span.mce_fullpage {background-position:-80px -20px} +.defaultSkin span.mce_fullscreen {background-position:-100px -20px} +.defaultSkin span.mce_iespell {background-position:-120px -20px} +.defaultSkin span.mce_insertdate {background-position:-140px -20px} +.defaultSkin span.mce_inserttime {background-position:-160px -20px} +.defaultSkin span.mce_absolute {background-position:-180px -20px} +.defaultSkin span.mce_backward {background-position:-200px -20px} +.defaultSkin span.mce_forward {background-position:-220px -20px} +.defaultSkin span.mce_insert_layer {background-position:-240px -20px} +.defaultSkin span.mce_insertlayer {background-position:-260px -20px} +.defaultSkin span.mce_movebackward {background-position:-280px -20px} +.defaultSkin span.mce_moveforward {background-position:-300px -20px} +.defaultSkin span.mce_media {background-position:-320px -20px} +.defaultSkin span.mce_nonbreaking {background-position:-340px -20px} +.defaultSkin span.mce_pastetext {background-position:-360px -20px} +.defaultSkin span.mce_pasteword {background-position:-380px -20px} +.defaultSkin span.mce_selectall {background-position:-400px -20px} +.defaultSkin span.mce_preview {background-position:-420px -20px} +.defaultSkin span.mce_print {background-position:-440px -20px} +.defaultSkin span.mce_cancel {background-position:-460px -20px} +.defaultSkin span.mce_save {background-position:-480px -20px} +.defaultSkin span.mce_replace {background-position:-500px -20px} +.defaultSkin span.mce_search {background-position:-520px -20px} +.defaultSkin span.mce_styleprops {background-position:-560px -20px} +.defaultSkin span.mce_table {background-position:-580px -20px} +.defaultSkin span.mce_cell_props {background-position:-600px -20px} +.defaultSkin span.mce_delete_table {background-position:-620px -20px} +.defaultSkin span.mce_delete_col {background-position:-640px -20px} +.defaultSkin span.mce_delete_row {background-position:-660px -20px} +.defaultSkin span.mce_col_after {background-position:-680px -20px} +.defaultSkin span.mce_col_before {background-position:-700px -20px} +.defaultSkin span.mce_row_after {background-position:-720px -20px} +.defaultSkin span.mce_row_before {background-position:-740px -20px} +.defaultSkin span.mce_merge_cells {background-position:-760px -20px} +.defaultSkin span.mce_table_props {background-position:-980px -20px} +.defaultSkin span.mce_row_props {background-position:-780px -20px} +.defaultSkin span.mce_split_cells {background-position:-800px -20px} +.defaultSkin span.mce_template {background-position:-820px -20px} +.defaultSkin span.mce_visualchars {background-position:-840px -20px} +.defaultSkin span.mce_abbr {background-position:-860px -20px} +.defaultSkin span.mce_acronym {background-position:-880px -20px} +.defaultSkin span.mce_attribs {background-position:-900px -20px} +.defaultSkin span.mce_cite {background-position:-920px -20px} +.defaultSkin span.mce_del {background-position:-940px -20px} +.defaultSkin span.mce_ins {background-position:-960px -20px} +.defaultSkin span.mce_pagebreak {background-position:0 -40px} +.defaultSkin span.mce_restoredraft {background-position:-20px -40px} +.defaultSkin span.mce_spellchecker {background-position:-540px -20px} diff --git a/library/tinymce/changelog.txt b/library/tinymce/changelog.txt old mode 100755 new mode 100644 index bcd3f294c4..ec712077a1 --- a/library/tinymce/changelog.txt +++ b/library/tinymce/changelog.txt @@ -1,3 +1,456 @@ +Version 3.5b2 (2012-03-15) + Rewrote the enter key logic to normalize browser behavior. + Fixed so enter within PRE elements produces a BR and shift+enter breaks/end the PRE. Can be disabled using the br_in_pre option. + Fixed bug where the selection wouldn't be correct after applying formatting and having the caret at the end of the new format node. + Fixed bug where the noneditable plugin would process contents on raw input calls for example on undo/redo calls. + Fixed bug where WebKit could produce an exception when a bookmark was requested when there wasn't a proper selection. + Fixed bug where WebKit would fail to open the image dialog since it would be returning false for a class name instead of a string. + Fixed so alignment and indentation works properly when forced_root_blocks is set to false. It will produce a DIV by default. +Version 3.5b1 (2012-03-08) + Added new event class that is faster and enables support for faking events. + Added new self_closing_elements, short_ended_elements, boolean_attributes, non_empty_elements and block_elements options to control the HTML Schema. + Added new schema option and support for the HTML5 schema. + Added new visualblocks plugin that shows html5 blocks with visual borders. + Added new types and selector options to make it easier to create editor instances with different configs. + Added new preview of formatting options in various listboxes. + Added new preview_styles option that enables control over what gets previewed. + Fixed bug where content css would be loaded twice into iframe. + Fixed bug where start elements with only whitespace in the attribute part wouldn't be correctly parsed. + Fixed bug where the advlink dialog would produce an error about the addSelectAccessibility function not being defined. + Fixed bug where the caret would be placed at an incorrect position if span was removed by the invalid_elements setting. + Fixed bug where elements inside a white space preserve element like pre didn't inherit the behavior while parsing. +Version 3.4.9.x (2012-02-xx) + Improved behaviour of backspacing into a table to be consistant across browsers and disable backspace when cursor immediately follows a table. + Improved edit CSS style plugin for single and multiple block selection and provide option to apply style to only selected text. + Fixed bug in Chrome where moving caret down in table and pasting throws errors. + Corrected reference to TinyMCE trim function. + Fixed bug where Ignore All in IE did not remove the underline from the selected word. + Fixed bug in html source editor word wrap option not wrapping text in Webkit browsers. + Fixed bug where it was possible to insert an invalid colour in the color pop-up dialog. + Fixed bug in Webkit where if anchor is on last line by itself caret can not be placed after it. +Version 3.4.9 (2012-02-23) + Added settings to wordcount plugin to configure update rate and checking wordcount on backspace and delete using wordcount_update_rate and wordcount_update_on_delete. + Fixed bug in Webkit and IE where deleting empty paragraphs would remove entire editor contents. + Fixed bug where pressing enter on end of list item with a heading would create a new item with heading. + Fixed edit css style dialog text-decoration none checkbox so it disables other text-decoration options when enabled. + Fixed bug in Gecko where undo wasn't added when focus was lost. + Fixed bug in Gecko where shift-enter in table cell ending with BR doesn't move caret to new line. + Fixed bug where right-click on formatted text in IE selected the entire line. + Fixed bug where text ending with space could not be unformatted in IE. + Fixed bug where caret formatting would be removed when moving the caret when a selector expression was used. + Fixed bug where formatting would be applied to the body element when all contents where selected and format had both inline and selector parts. + Fixed bug where the media plugin would throw errors if you had iframe set as an invalid element in config. + Fixed bug where the caret would be placed at the top of the document if you inserted a table and undo:ed that operation. Patch contributed by Wesley Walser. + Fixed bug where content css files where loaded twice into the iframe. + Fixed so elements with comments would be trated as non empty elements. Patch contributed by Arjan Scherpenisse. +Version 3.4.8 (2012-02-02) + Fixed bug in IE where selected text ending with space cannot be formatted then formatted again to get original text. + Fixed bug in IE where images larger than editor area were being deselected when toolbar buttons are clicked. + Fixed bug where wrong text align buttons are active when multiple block elements are selected. + Fixed bug where selected link not showing in target field of link dialog in some selection cases. + Use settings for remove_trailing_br so this can be turned off instead of hard coding the value. + Fixed bug in IE where the media plugin displayed null text when some values aren't filled in. + Added API method 'onSetAttrib' that fires when the attribute value on a node changes. + Fix font size dropdown value not being updated when text already has a font size in the advanced template. + Fixed bug in IE where IE doesn't use ARIA attributes properly on options - causing labels to be read out 2 times. + Fixed bug where caret cannot be placed after table if table is at end of document in IE. + Fixed bug where adding range isn't always successful so we need to check range count otherwise an exception can occur. + Added spacebar onclick handler to toolbar buttons to ensure that the accessibility behaviour works correctly. + Fixed bug where a stranded bullet point would get created in WebKit. + Fixed bug where selecting text in a blockquote and pressing backspace toggles the style. + Fixed bug where pressing enter from a heading in IE, the resulting P tag below it shares the style property. + Fix white space in between spans from being deleted. + Fixed bug where scrollbars where visible in the character map dialog on Gecko. + Fixed issue with missing translation for one of the emoticons. + Fixed bug where dots in id:s where causing problems. Patch provided by Abhishek Dev. + Fixed bug where urls with an at sign in the path wouldn't be parsed correctly. Patch contributed by Jason Grout. + Fixed bug where Opera would remove the first character of a inline formatted word if you pressed backspace. + Fixed bugs with the autoresize plugin on various browsers and removed the need for the throbber. + Fixed performance issue where the contextmenu plugin would try to remove the menu even if it was removed. Patch contributed by mhu. +Version 3.4.7 (2011-11-03) + Modified the caret formatting behavior to word similar to common desktop wordprocessors like Word or Libre Office. + Fixed bug in Webkit - Cursor positioning does not work vertically within a table cell with multiple lines of text. + Fixed bug in IE where Inserting a table in IE8 places cursor in the second cell of the first row. + Fixed bug in IE where editor in a frame doesn't give focus to the toolbar using ALT-F10. + Fix for webkit and gecko so that deleting bullet from start of list outdents inner list items and moves first item into paragraph. + Fix new list items in IE8 not displayed on a new line when list contains nested list items. + Clear formatting in table cell breaks the cell. + Made media type list localisable. + Fix out of memory error when using prototype in media dialog. + Fixed bug where could not add a space in the middle of a th cell. + Fixed bug where adding a bullet between two existing bullets adds an extra one + Fixed bug where trying to insert a new entry midway through a bulleted list fails dismally when the next entry is tabbed in. + Fixed bug where pressing enter on an empty list item does not outdent properly in FF + Fixed bug where adding a heading after a list item in a table cell changes all styles in that cell + Fixed bug where hitting enter to exit from a bullet list moves cursor to the top of the page in Firefox. + Fixed bug where pressing backspace would not delete HRs in Firefox and IE when next to an empty paragraph. + Fixed bug where deleting part of the link text can cause a link with no destination to be saved. + Fixed bug where css style border widths wasn't handled correctly in table dialog. + Fixed bug where parsing invalid html contents on IE or WebKit could produce an infinite loop. + Fixed bug where scripts with custom script types wasn't properly passed though the editor. + Fixed issue where some Japanese kanji characters wasn't properly entity encoded when numeric entity mode was enabled. + Made emoticons dialog use the keyboard naviation. + Added navigation instructions to the symbols dialog. + Added ability to set default values for the media plugin. + Added new font_size_legacy_values option for converting old font element sizes to span with font-size properties. + Fixed bug where the symbols dialog was not accessible. + Added quirk for IE ensuring that the body of the document containing tinyMCE has a role="application" for accessibility. + Fixed bug where the advanced color picker wasn't working properly on FF 7. + Fixed issue where the advanced color picker was producing uppercase hex codes. + Fixed bug where IE 8 could throw exceptions if the contents contained resizable content elements. + Fixed bug where caret formatting wouldn't be correctly applied to previous sibling on WebKit. + Fixed bug where the select boxes for font size/family would loose it's value on WebKit due to recent iOS fixes. +Version 3.4.6 (2011-09-29) + Fixed bug where list items were being created for empty divs. + Added support in Media plugin for audio media using the embed tag + Fixed accessibility bugs in WebKit and IE8 where toolbar items were not being read. + Added new use_accessible_selects option to ensure accessible list boxes are used in all browsers (custom widget in firefox native on other browsers) + Fixed bug where classid attribute was not being checked from embed objects. + Fixed bug in jsrobot tests with intermittently failing. + Fixed bug where anchors wasn't updated properly if you edited them using IE 8. + Fixed bug where input method on WebKit on Mac OS X would fail to initialize when sometimes focusing the editor. + Fixed bug where it wasn't possible to select HR elements on WebKit by simply clicking on them. + Fixed bug where the media plugin wouldn't work on IE9 when not using the inlinepopups plugin. + Fixed bug where hspace,vspace,align and bgcolor would be removed from object elements in the media plugin. + Fixed bug where the new youtube format wouldn't be properly parsed by the media plugin. + Fixed bug where the style attribute of layers wasn't properly updated on IE and Gecko. + Fixed bug where editing contents in a layer would fail on Gecko since contentEditable doesn't inherit properly. + Fixed bug where IE 6/7 would produce JS errors when serializing contents containing layers. +Version 3.4.5 (2011-09-06) + Fixed accessibility bug in WebKit where the right and left arrow keys would update native list boxes. + Added new whitespace_elements option to enable users to specify specific elements where the whitespace is preserved. + Added new merge_siblings option to formats. This option makes it possible to disable the auto merging of siblings when applying formats. + Fixed bug in IE where trailing comma in paste plugin would cause plugin to not run correctly. + Fixed bug in WebKit where console messages would be logged when deleting an empty document. + Fixed bug in IE8 where caret positioned is on list item instead of paragraph when outdent splits the list + Fixed bug with image dialogs not inserting an image if id was omitted from valid_elements. + Fixed bug where the selection normalization logic wouldn't properly handle image elements in specific config cases. + Fixed bug where the map elements coords attribute would be messed up by IE when serializing the DOM. + Fixed bug where IE wouldn't properly handle custom elements when the contents was serialized. + Fixed bug where you couldn't move the caret in Gecko if you focused the editor using the API or a UI control. + Fixed bug where adjacent links would get merged on IE due to bugs in their link command. + Fixed bug where the color split buttons would loose the selection on IE if the editor was placed in a frame/iframe. + Fixed bug where floated images in WebKit wouldn't get properly linked. + Fixed bug where the fullscreen mode in a separate window wasn't forced into IE9+ standards mode. + Fixed bug where pressing enter in an empty editor on WebKit could produce DIV elements instead of P. + Fixed bug where spans would get removed incorrectly when merging two blocks on backspace/delete on WebKit. + Fixed bug where the editor contents wouldn't be completely removed on backspace/delete on WebKit. + Fixed bug where the fullpage plugin wouldn't properly render style elements in the head on IE 6/7. + Fixed bug where the nonbreaking_force_tab option in the nonbreaking plugin wouldn't work on Gecko/WebKit. + Fixed bug where the isDirty state would become true on non IE browsers if there was an table at the end of the contents. + Fixed bug where entities wasn't properly encoded on WebKit when pasting text as plain text. + Fixed bug where empty editors would produce an exception of valid_elements didn't include body and forced_root_blocks where disabled. + Fixed bug where the fullscreen mode wouldn't retain the header/footer in the fullpage plugin. + Fixed issue where the plaintext_mode and plaintext_mode_sticky language keys where swapped. +Version 3.4.4 (2011-08-04) + Added new html5 audio support. Patch contributed by Ronald M. Clifford. + Added mute option for video elements and preload options for video/audio patch contributed by Dmitry Kalinkin. + Fixed selection to match visual selection before applying formatting changes. + Fixed browser specific bugs in lists for WebKit and IE. + Fixed bug where IE would scroll the window if you closed an inline dialog that was larger than the viewport. Patch by Laurence Keijmel. + Fixed bug where pasting contents near a span element could remove parts of that span. Patch contributed by Wesley Walser. + Fixed bug where formatting change would be lost after pressing enter. + Fixed bug in WebKit where deleting across blocks would add extra styles. + Fixed bug where moving cursor vertically in tables in WebKit wasn't working. + Fixed bug in IE where deleting would cause error in console. + Fixed bug where the formatter was not applying formats across list elements. + Fixed bug where the wordcount plugin would try and update the wordcount if tinymce had been destroyed. + Fixed bug where tabfocus plugin would attempt to focus elements not displayed when their parent element was hidden. + Fixed bug where the contentEditable state would sometimes be removed if you deleted contents in Gecko. + Fixed bug where inserting contents using mceInsertContent would fail if "span" was disabled in valid_elements. + Fixed bug where initialization might fail if some resource on gecko wouldn't load properly and fire the onload event. + Fixed bug where ctrl+7/8/9 keys wouldn't properly add the specific formats associated with them. + Fixed bug where the HTML tags wasn't properly closed in the style plugins properties dialog. + Fixed bug where the list plugin would produce an exception if the user tried to delete an element at the very first location. +Version 3.4.3.2 (2011-06-30) + Fixed bug where deleting all of a paragraph inside a table cell would behave badly in webkit. + Fixed bugs in tests in firefox5 and WebKit. + Fixed bug where selection of table cells would produce an exception on Gecko. + Fixed bug where the caret wasn't properly rendered on Gecko when the editor was hidden. + Fixed bug where pasting plain text into WebKit would produce a pre element it will now produce more semantic markup. + Fixed bug where selecting list type formats using the advlist plugin on IE8 would loose editor selection. + Fixed bug where forced root blocks logic wouldn't properly pad elements created if they contained data attributes. + Fixed bug where it would remove all contents of the editor if you inserted an image when not having a caret in the document. + Fixed bug where the YUI compressor wouldn't properly encode strings with only a quote in them. + Fixed bug where WebKit on iOS5 wouldn't call nodeChanged when the selection was changed. + Fixed bug where mceFocus command wouldn't work properly on Gecko since it didn't focus the body element. + Fixed performance issue with the noneditable plugin where it would enable/disable controls to often. +Version 3.4.3.1 (2011-06-16) + Fixed bug where listboxes were not being handled correctly by JAWS in firefox with the o2k7 skin. + Fixed bug where custom buttons were not being rendered correctly when in high contrast mode. + Added support for iOS 5 that now supporting contentEditable in it's latest beta. + Fixed bug where urls in style attributes with a _ character followed by a number would cause incorrect output. + Fixed bug where custom_elements option wasn't working properly on IE browsers. + Fixed bug where custom_elements marked as block elements wouldn't get correctly treated as block elements. + Fixed bug where attributes with wasn't properly encoded as XML entities. +Version 3.4.3 (2011-06-09) + Fixed bug where deleting backwards before an image into a list would put the cursor in the wrong location. + Fixed bug where styles plugin would not apply styles across multiple selected block elements correctly. + Fixed bug where cursor would jump to start of document when selection contained empty table cells in IE8. + Fixed bug where applied styles wouldn't be kept if you pressed enter twice to produce two paragraphs. + Fixed bug where a ghost like caret would appear on Gecko when pressing enter while having a text color applied. + Fixed bug where IE would produce absolute urls if you inserted a image/link and reloaded the page. + Fixed bug where applying a heading style to a list item would cascade style to children list items. + Fixed bug where Editor loses focus when backspacing and changing styles in WebKit. + Fixed bug where exception was thrown in tinymce.util.URI when parsing a relative URI and no base_uri setting was provided. + Fixed bug where alt-f10 was not always giving focus to the toolbar on Safari. + Added new 'allow_html_in_named_anchor' option to allow html to occur within a named anchor tag. Use at own risk. + Added plugin dependency support. Will autoload plugins specified as a dependency if they haven't been loaded. + Fixed bug where the autolink plugin didn't work with non-English keyboards when pressing ). + Added possibility to change properties of all table cells in a column. + Added external_image_list option to get images list from user-defined variable or function. + Fixed bug where the autoresize plugin wouldn't reduce the editors height on Chrome. + Fixed bug where table size inputs were to small for values with size units. + Fixed bug where table cell/row size input values were not validated. + Fixed bug where menu item line-height would be set to wrong value by external styles. + Fixed bug where hasUndo() would return wrong answer. + Fixed bug where page title would be set to undefined by fullpage plugin. + Fixed bug where HTML5 video properties were not updated in embedded media settings. + Fixed bug where HTML comment on the first line would cause an error. + Fixed bug where spellchecker menu was positioned incorrectly on IE. + Fixed bug where breaking out of list elements on WebKit would produce a DIV instead of P after the list. + Fixed bug where pasting from Word in IE9 would add extra BR elements when text was word wrapped. + Fixed bug where numeric entities with leading zeros would produce incorrect decoding. + Fixed bug where hexadecimal entities wasn't properly decoded. + Fixed bug where bookmarks wasn't properly stored/restored on undo/redo. + Fixed bug where the mceInsertCommand didn't retain the values of links if they contained non url contents. + Fixed bug where the valid_styles option wouldn't be properly used on styles for specific elements. + Fixed so contentEditable is used for the body of the editor if it's supported. + Fixed so trailing BR elements gets removed even when forced_root_blocks option was set to false/null. + Fixed performance issue with mceInsertCommand and inserting very simple contents. + Fixed performance issue with older IE version and huge documents by optimizing the forced root blocks logic. + Fixed performance issue with table plugin where it checked for selected cells to often. + Fixed bug where creating a link on centered/floated image would produce an error on WebKit browsers. + Fixed bug where Gecko would remove single paragraphs if there where contents before/after it. + Fixed bug where the scrollbar would move up/down when pasting contents using the paste plugin. +Version 3.4.2 (2011-04-07) + Added new 'paste_text_sticky_default' option to paste plugin, enables you to set the default state for paste as plain text. + Added new autoresize_bottom_margin option to autoresize plugin that enables you to add an extra margin at the bottom. Patch contributed by Andrew Ozz. + Rewritten the fullpage plugin to handle style contents better and have a more normalized behavior across browsers. + Fixed bug where contents inserted with mceInsertContent wasn't parsed using the default dom parser. + Fixed bug where blocks containing a single anchor element would be treated as empty. + Fixed bug where merging of table cells on IE 6, 7 wouldn't look correctly until the contents was refreshed. + Fixed bug where context menu wouldn't work properly on Safari since it was passing out the ctrl key as pressed. + Fixed bug where image border color/style values were overwritten by advimage plugin. + Fixed bug where setting border in advimage plugin would throw error in IE. + Fixed bug where empty anchors list in link settings wasn't hidden. + Fixed bug where xhtmlextras popups were missing localized popup-size parameters. + Fixed bug where the context menu wouldn't select images on WebKit browsers. + Fixed bug where paste plugin wouldn't properly extract the contents on WebKit due to recent changes in browser behavior. + Fixed bug where focus of the editor would get on control contents on IE lost due to a bug in the ColorSplitButton control. + Fixed bug where contextmenu wasn't disabled on noneditable elements. + Fixed bug where getStyle function would trigger error when called on element without style property. + Fixed bug where editor fail to load if Javascript Compressor was used. + Fixed bug where list-style-type=lower-greek would produce errors in IE<8. + Fixed bug where spellchecker plugin would produce errors on IE6-7. + Fixed bug where theme_advanced_containers configuration option causes error. + Fixed bug where the mceReplaceContent command would produce an error since it didn't correctly handle a return value. + Fixed bug where you couldn't enter float point values for em in dialog input fields since it wouldn't be considered a valid size. + Fixed bug in xhtmlxtras plugin where it wasn't possible to remove some attributes in the attributes dialog. +Version 3.4.1 (2011-03-24) + Added significantly improved list handling via the new 'lists' plugin. + Added 'autolink' plugin to enable automatically linking URLs. Similar to the behavior IE has by default. + Added 'theme_advanced_show_current_color' setting to enable the forecolor and backcolor buttons to continuously show the current text color. + Added 'contextmenu_never_use_native' setting to disable the ctrl-right-click showing the native browser context menu behaviour. + Added 'paste_enable_default_filters' setting to enable the default paste filters to be disabled. + Fixed bug where selection locations on undo/redo didn't work correctly on specific contents. + Fixed bug where an exception would be trown on IE when loading TinyMCE inside an iframe. + Fixed bug where some ascii numeric entities wasn't properly decoded. + Fixed bug where some non western language codes wasn't properly decoded/encoded. + Fixed bug where undo levels wasn't created when deleting contents on IE. + Fixed bug where the initial undo levels bookmark wasn't updated correctly. + Fixed bug where search/replace wouldn't be scoped to editor instances on IE8. + Fixed bug where IE9 would produce two br elements after block elements when pasting. + Fixed bug where IE would place the caret at an incorrect position after a paste operation. + Fixed bug where a paste operation using the keyboard would add an extra undo level. + Fixed bug where some attributes/elements wasn't correctly filtered when invalid contents was inserted. + Fixed bug where the table plugin couldn't correctly handle invalid table structures. + Fixed bug where charset and title of the page were handled incorrectly by the fullpage plugin. + Fixed bug where toggle states on some of the list boxes didn't update correctly. + Fixed bug where sub/sub wouldn't work correctly when done as a caret action in Chrome 10. + Fixed bug where the constrain proportions checkbox wouldn't work in the media plugin. + Fixed bug where block elements containing trailing br elements wouldn't treated properly if they where invalid. + Fixed bug where the color picker dialog wouldn't be rendered correctly when using the o2k7 theme. + Fixed bug where setting border=0 using advimage plugin invalid style attribute content was created in Chrome. + Fixed bug with references to non-existing images in css of fullpage plugin. + Fixed bug where item could be unselected in spellchecker's language selector. + Fixed bug where some mispelled words could be not highlighted using spellchecker plugin. + Fixed bug where spellchecking would merge some words on IE. + Fixed bug where spellchecker context menu was not always positioned correctly. + Fixed bug with empty anchors list in advlink popup when Invisible Elements feature was disabled. + Fixed bug where older IE versions wouldn't properly handle some elements if they where placed at the top of editor contents. + Fixed bug where selecting the whole table would enable table tools for cells and rows. + Fixed bug where it wasn't possible to replace selected contents on IE when pasting using the paste plugin. + Fixed bug where setting text color in fullpage plugin doesn't work. + Fixed bug where the state of checkboxes in media plugin wouldn't be set correctly. + Fixed bug where black spade suit character was not included in special character selector. + Fixed bug where setting invalid values for table cell size would throw an error in IE. + Fixed bug where spellchecking would remove whitespace characters from PRE block in IE. + Fixed bug where HR was inserted inside P elements instead of splitting them. + Fixed bug where extra, empty span tags were added when using a format with both selector and inline modes. + Fixed bug where bullet lists weren't always detected correctly. + Fixed bug where deleting some paragraphs on IE would cause an exception. + Fixed bug where the json encoder logic wouldn't properly encode \ characters. + Fixed bug where the onChange event would be fired when the editor was first initialized. + Fixed bug where mceSelected wouldn't be removed properly from output even if it's an internal class. + Fixed issue with table background colors not being transparent. This improves compliance with users browser color preferences. + Fixed issue where styles were not included when using the full page plugin. + Fixed issue where drag/drop operations wasn't properly added to the undo levels. + Fixed issue where colors wasn't correctly applied to elements with underline decoration. + Fixed issue where deleting some paragraphs on IE would cause an exception. +Version 3.4 (2011-03-10) + Added accessibility example with various accessibility options contributed by Ephox. + Fixed bug where attributes wasn't properly handled in the xhtmlxtras plugin. + Fixed bug where the image.htm had some strange td artifacts probably due to auto merging. + Fixed bug where the ToolbarGroup had an missing reference to this in it's destroy method. + Fixed bug with the resizeBy function in the advanced theme where it was scaled by the wrong parent. + Fixed bug where an exception would be thrown by the element if the page was served in xhtml mode. + Fixed bug where mceInsertContent would throw an exception when page was served in xhtml mode. + Fixed bug where you couldn't select a forground/background color when page was served in xhtml mode. + Fixed bug where the editor would scroll to the toolbar when clicked due to a call to focus in ListBox. + Fixed bug where pages with rtl dir wouldn't render split buttons correctly when using the o2k7 theme. + Fixed bug where anchor elements with names wasn't properly collapsed as they where in 3.3.x. + Fixed bug where WebKit wouldn't properly handle image selection if it was done left to right. + Fixed bug where the formatter would align images when the selection range was collapsed. + Fixed bug where the image button would be active when the selection range was collapsed. + Fixed bug where the element_format option wasn't used by the new (X)HTML serializer logic. + Fixed bug where the table cell/row dialogs would produce empty attributes. + Fixed bug where the tfoot wouldn't be added to the top of the table. + Fixed bug where the formatter would merge siblings with white space between them. + Fixed bug where pasting headers and paragraphs would produce an extra paragraph. + Fixed bug where the ColorSplitButton would throw an exception if you clicked out side a color. + Fixed bug where IE9 wouldn't properly produce new paragraphs on enter if the current paragraph had formatting. + Fixed bug where multiple BR elements at end of block elements where removed. + Fixed bug where fullscreen plugin wouldn't correctly display the edit area on IE6 for long pages. + Fixed bug where paste plugin wouldn't properly encode raw entities when pasting in plain text mode. + Fixed bug where the search/replace plugin wouldn't work correctly on IE 9. + Fixed so the drop menus doesn't get an outline border visible when focused, patch contributed by Ephox. + Fixed so the values entered in the color picker are forced to hex values. + Removed dialog workaround for IE 9 beta since the RC is now out and people should upgrade. + Removed obsolete calls in various plugins to the mceBeginUndoLevel command. +Version 3.4b3 (2011-02-10) + Added WAI-ARIA support for the main UI and dialogs this feature was contributed by Ephox. + Added iframe support to media plugin in order to handle the new YouTube HTML5 video formats. + Fixed bug where anchors would wrap the text contents after it due to a bug in the DomParser logic. + Fixed bug where the selected state wouldn't be removed on ListBox controls when a menu item was selected. + Fixed bug where IE could throw an unspecified error exception when the getBookmark logic was executed. + Fixed bug where IE would throw an invalid argument error when focus was applied to an empty editor instance. + Fixed bug where applying inline format wouldn't work if the start cell in the selection was empty. + Fixed bug where auto detection logic for YouTube and Google Video wouldn't work in the new media plugin. + Fixed bug where td elements would get a colspan/rowspan of 1 when created by the table plugin. + Fixed bug where removal/padding of empty elements wasn't handled correctly. + Fixed bug where internal elements would show up in element path. + Fixed bug where internal elements would get serialized as valid output. + Fixed bug where color wasn't correctly applied to anchor elements. + Fixed bug where float option in the style plugin dialog wouldn't be handled correctly on WebKit. + Fixed bug where the tinymce.dom.TreeWalker prev function wouldn't walk the DOM correctly. + Fixed bug where mceInsertContent command could produce empty block elements after the inserted content. + Fixed bug where mceInsertContent command wouldn't apply visual aids on tables and similar elements. + Fixed bug where empty block elements would get double br bogus elements in them. + Fixed bug where the color menu wouldn't apply the color correctly on IE when the viewport was to small. + Fixed bug where right clicking out side the body element of the editor iframe would prevent paste from working on IE. + Fixed bug where the onContextMenu event wouldn't fire correctly on IE if you clicked out side the body element. + Fixed bug where the onContextMenu event wouldn't fire correctly on modern Opera versions that now support it by default. + Fixed bug where legacy content wasn't converted correctly when inserted using mceInsertContent or through the source dialog. + Fixed bug where resizing images or tables wouldn't update the style attribute correctly or leave data-mce prefixed attributes. + Fixed bug where adding links wouldn't work correctly when using TinyMCE jQuery version with jQuery 1.5. + Fixed bug where single quotes inside param elements wasn't treated correctly by the media plugin. + Fixed bug where pasting plain text in WebKit wouldn't work correctly. It will now auto detect the WebKit bug and use plain text mode. + Fixed bug where the DomParser would fail to move out invalid elements within invalid elements on complex contents. + Fixed bug where paste as plain text would not decode html entities properly. + Fixed bug where large paragraphs would cause incorrect scrolling behavior if you would split them using enter. + Fixed bug where the SaxParser wouldn't properly parse some specific short ended elements. + Fixed so mceReplaceContent supports caret position and makes sure that the contents inserted gets validated. + Fixed so unnecessary traling br elements in blocks gets removed on Gecko/WebKit when using mceInsertContent command. + Moved some plugin css contents into the skin content css files to reduce the number of http requests. + Moved some plugin specific images into the theme img directory since they can then be shared. +Version 3.4b2 (2011-01-13) + Added new custom flash player, this player supports mp4 and flv and has skin support. + Fixed so mceInsertContent handles context correctly to enforce valid nesting of elements. + Fixed bug where scrolling would become jerky on IE on some contents. + Fixed bug where paste as plain text would throw exception of missing entities setting. + Fixed bug where anchor nodes where removed by the new serializer engine. + Fixed bug where IE would crash if when backspace where used on some specific contents. + Fixed bug where pasting of plain text in WebKit would result in merging of text lines. + Fixed bug where it wasn't possible to delete images or tables using backspace on IE9. + Fixed bug where urls in styles would generate a JS error due to incorrect scope. + Fixed bug where copy paste from Java applications would produce extra contents in FF on Mac. + Fixed bug where the verify_html option wouldn't allow all elements and attributes. +Version 3.4b1 (2010-12-20) + Added new serialization engine that increases performance and enforces valid output according to the specified schema settings. + Added new HTML parser logic used by the serialization engine and can handle malformed html contents. + Added new valid_children config option, enables more fine grain control of elements can be inside other elements. + Added new entities encoding logic boost performance and will only encode entities based on context i.e. attributes/text nodes. + Added new protect setting that enables users to protect template items from being removed by the serializer logic. + Added new {$caret} marker for the mceInsertContent command. Makes it possible to move the caret to a specific position when inserting contents. + Added new validation of anchor names. Only valid W3C names will be accepted. + Replaced the internal _mce_ prefixed attributes to the more standard HTML5 data-mce- prefix. This will also resolve future browser santiaztion issues. + Fixed bug where the paste plugin wouldn't convert Word lists with more than 9 items to real ol lists. Patch contributed by Mike (yogaboy). + Fixed bug where clicking on a format title would produce errors if the current selection didn't have any formats. + Fixed bug where paste of simple texts wouldn't work correctly in Gecko using the paste plugin since it keeps block formatting. + Fixed bug where confirm dialogs didn't display correctly due to resent IE9 fixes. + Fixed bug where spaces in URLs wouldn't be properly encoded to %20 if the user entered them in the link dialogs. Patch contributed by Ephox. + Fixed bug where the image alignment buttons wouldn't reposition the resize handles on FF due to a browser issue. Patch contributed by Ephox. + Fixed bug where the compareBoundaryPoints method of the IE Range class didn't work correctly. Patch contributed by Ephox. + Fixed bug where selection of elements using double click wouldn't select the clicked element but rather the parent node on FF. Patch contributed by Ephox. + Fixed bug where IE would scroll the user to the current selection causing parent document to scroll as well. Patch contributed by Ephox. + Fixed bug where style compression would incorrectly compress items with different values. It now only compresses if the values are the same. Patch contributed by Ephox. + Fixed bug where FF would add non breaking spaces outside TD elements if formatting was applied to table cells. Patch contributed by Ephox. + Fixed bug where the caret position would be lost on WebKit browsers if you pasted images multiple times. Patch contributed by Ephox. + Fixed bug where non word contents like * would be counted as words in the wordcount pluging. Patch contributed by David Balatero. + Fixed bug where the toggle absolute button in the layer plugin wouldn't remove the existing internal style attribute first. + Fixed bug where the autosave plugin would generate an exception on IE if the user had disabled userdata persistence. + Fixed bug where the paste plugin would remove dashed classes on IE since the regexps didn't include that character. + Fixed bug where applying text color would not add spans inside link elements. This is needed due to CSS style inheritance. + Fixed bug where applying block formats to empty elements wouldn't render correctly on IE. + Fixed bug where the searchreplace plugin would add a f or r character when shortcuts where used on IE while using default dialogs. + Fixed bug where Opera wouldn't load scripts correctly since the onreadystate would fire even though the script wasn't loaded. + Fixed issue where   wouldn't be handled correctly in the bbcode plugin if entity_encoding was set to raw. + Fixed issue where contents would flicker since the content css files where asynchronously loaded. + Fixed bug where WebKit wouldn't create links on images with a float style. +Version 3.3.9.3 (2010-12-20) + Fixed issue where WebKit wouldn't correctly apply ins/del in xhtmlxtras plugin. + Fixed bug where paste as plaintext on WebKit wouldn't produce br and p elements correctly. + Fixed bug where the confirm dialog texts would be incorrectly placed due to recent IE 9 workarounds in the window.css. + Fixed bug where applying text color would not add spans inside link elements. This is needed due to CSS style inheritance. +Version 3.3.9.2 (2010-09-29) + Fixed bug where placing the caret in IE 9 beta 1 would not work correctly if you clicked out side the document body element. + Fixed bug where IE 9 beta 1 wouldn't resize the editor correctly since the events didn't fire as previous versions did. + Fixed bug where FF would produce an error message when being rendered inside a hidden div element. + Fixed bug where resize logic could produce a cookie with a width/height less than the size of the container. + Fixed bug where content_css wouldn't populate the styles dropdown correctly. +Version 3.3.9.1 (2010-09-23) + Fixed bug where WebKit browsers wouldn't activate the image button when images where selected. + Fixed bug where Opera Presto 10.60 deletes elements when restoring bookmarks. + Fixed bug where IE9 beta1 doesn't handle regexp replacement values correctly. + Fixed bug where IE9 beta1 didn't render the inline dialogs correctly due to a bug with CSS clip. + Fixed bug where IE9 beta1 would produce error messages on load since they removed the document.recalc method. + Fixed bug where IE9 beta1 would produce since they haven't implemented document.implementation.createDocument correctly. + Fixed bug where IE9 beta1 would searchreplace doesn't work since their native DOM Range doesn't have a find method. + Fixed bug where IE9 beta1 would render the source view incorrectly due to incorrect viewport size measurements. + Fixed bug where IE9 beta1 would crash when running the basic functionality unit tests. + Fixed bug where IE9 beta1 would wrap elements in blocks correctly due to changes to the selection object. + Fixed bug where IE9 beta1 would fail to insert contents since they havn't implemented the createContextualFragment method in their DOM Range. + Fixed bug where IE9 beta1 would fail to handle image selection since they currently doesn't support control selections in their DOM Range. + Fixed bug where IE9 beta1 would fail to load scripts since they fire the onload event before the scripts are parsed and executed. +Version 3.3.9 (2010-09-08) + Fixed bug where inserting table rows into a table with subtable would produce an incorrect column count. + Fixed bug where the selection of cells in a table with subtables could produce invalid selections. + Fixed bug where the table plugin would produce a script error if you tried to move the caret before a first child table. + Fixed bug where the keep_styles feature on IE would move the caret to an incorrect location at the end of list blocks. + Fixed so attributes from legacy elements such as font gets retained when they get converted to spans. + Fixed minor issue where the select boxes wouldn't be set the not set by default in the table dialog. +Version 3.3.8 (2010-06-30) + On IE8+ and FireFox 3.5+, dragging an image now correctly adds an undo + event. + Fixed bug where WebKit would not move the caret to a correct position after a paste operation. + Fixed bug where WebKit would produce a div wrapper element when pasting some contents. + Fixed bug where the visual chars and nonbreaking plugin wouldn't show nbsp elements correctly. + Fixed bug where the format states would be enabled even after the format was removed. + Fixed bug where the delete key would move the caret to an incorrect position. + Fixed bug where it wasn't possible to toggle of the current font size/family/style by clicking the title item. + Fixed bug where the abbr element wouldn't get serialized correctly on IE6. + Fixed so that the examples checks if they are executed from the local file system since that might not work properly. Version 3.3.7 (2010-06-10) Fixed bug where context menu would produce an error on IE if you right clicked twice and left clicked once. Fixed bug where resizing of the window on WebKit browsers in fullscreen mode wouldn't position the statusbar correctly. diff --git a/library/tinymce/examples/accessibility.html b/library/tinymce/examples/accessibility.html new file mode 100644 index 0000000000..69059403cc --- /dev/null +++ b/library/tinymce/examples/accessibility.html @@ -0,0 +1,101 @@ + + + +Full featured example + + + + + + + + + + +
                                                                        +

                                                                        Full featured example, with Accessibility settings enabled

                                                                        + +

                                                                        + This page has got the TinyMCE set up to work with configurations related to accessiblity enabled. + In particular +

                                                                          +
                                                                        • the content_css is set to false, to ensure that all default browser styles are used,
                                                                        • +
                                                                        • the browser_preferred_colors dialog option is used to ensure that default css is used for dialogs,
                                                                        • +
                                                                        • and the detect_highcontrast option has been set to ensure that highcontrast mode in Windows browsers + is detected and the toolbars are displayed in a high contrast mode.
                                                                        • +
                                                                        +

                                                                        + + +
                                                                        + +
                                                                        + +
                                                                        + + +
                                                                        + + + + + diff --git a/library/tinymce/examples/css/content.css b/library/tinymce/examples/css/content.css old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/css/word.css b/library/tinymce/examples/css/word.css old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/custom_formats.html b/library/tinymce/examples/custom_formats.html old mode 100755 new mode 100644 index 7c475b19b1..ba9d1eb0c7 --- a/library/tinymce/examples/custom_formats.html +++ b/library/tinymce/examples/custom_formats.html @@ -10,7 +10,7 @@ // General options mode : "textareas", theme : "advanced", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave", + plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", @@ -102,6 +102,10 @@
                                                          - + diff --git a/library/tinymce/examples/full.html b/library/tinymce/examples/full.html old mode 100755 new mode 100644 index 0b24b6e48e..84b76ca7a1 --- a/library/tinymce/examples/full.html +++ b/library/tinymce/examples/full.html @@ -2,7 +2,7 @@ Full featured example - + diff --git a/library/tinymce/examples/index.html b/library/tinymce/examples/index.html old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/lists/image_list.js b/library/tinymce/examples/lists/image_list.js old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/lists/link_list.js b/library/tinymce/examples/lists/link_list.js old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/lists/media_list.js b/library/tinymce/examples/lists/media_list.js old mode 100755 new mode 100644 index 3a3836cc50..2e049587cb --- a/library/tinymce/examples/lists/media_list.js +++ b/library/tinymce/examples/lists/media_list.js @@ -6,5 +6,9 @@ var tinyMCEMediaList = [ // Name, URL ["Some Flash", "media/sample.swf"], ["Some Quicktime", "media/sample.mov"], - ["Some AVI", "media/sample.avi"] + ["Some AVI", "media/sample.avi"], + ["Some RealMedia", "media/sample.rm"], + ["Some Shockwave", "media/sample.dcr"], + ["Some Video", "media/sample.mp4"], + ["Some FLV", "media/sample.flv"] ]; \ No newline at end of file diff --git a/library/tinymce/examples/lists/template_list.js b/library/tinymce/examples/lists/template_list.js old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/media/logo.jpg b/library/tinymce/examples/media/logo.jpg old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/media/logo_over.jpg b/library/tinymce/examples/media/logo_over.jpg old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/media/sample.avi b/library/tinymce/examples/media/sample.avi old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/media/sample.dcr b/library/tinymce/examples/media/sample.dcr old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/media/sample.flv b/library/tinymce/examples/media/sample.flv new file mode 100644 index 0000000000000000000000000000000000000000..799d137e67b109d5919ef0dae8a9d13e3134eb38 GIT binary patch literal 88722 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�vucWHZL~;$=yoXvAf> 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 literal 0 HcmV?d00001 diff --git a/library/tinymce/examples/media/sample.mov b/library/tinymce/examples/media/sample.mov old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/media/sample.ram b/library/tinymce/examples/media/sample.ram old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/media/sample.rm b/library/tinymce/examples/media/sample.rm old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/media/sample.swf b/library/tinymce/examples/media/sample.swf old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/menu.html b/library/tinymce/examples/menu.html old mode 100755 new mode 100644 index a65c3104f7..e48650abd6 --- a/library/tinymce/examples/menu.html +++ b/library/tinymce/examples/menu.html @@ -13,5 +13,6 @@ a {display:block;} Skin support Word processor Custom formats +Accessibility Options - \ No newline at end of file + diff --git a/library/tinymce/examples/simple.html b/library/tinymce/examples/simple.html old mode 100755 new mode 100644 index c378398900..70720caa1c --- a/library/tinymce/examples/simple.html +++ b/library/tinymce/examples/simple.html @@ -38,6 +38,10 @@ - + diff --git a/library/tinymce/examples/skins.html b/library/tinymce/examples/skins.html old mode 100755 new mode 100644 index a39817221e..c150858858 --- a/library/tinymce/examples/skins.html +++ b/library/tinymce/examples/skins.html @@ -12,7 +12,7 @@ mode : "exact", elements : "elm1", theme : "advanced", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", + plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", @@ -47,7 +47,7 @@ elements : "elm2", theme : "advanced", skin : "o2k7", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", + plugins : "lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", @@ -83,7 +83,7 @@ theme : "advanced", skin : "o2k7", skin_variant : "silver", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", + plugins : "lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", @@ -119,7 +119,7 @@ theme : "advanced", skin : "o2k7", skin_variant : "black", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", + plugins : "lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", @@ -207,6 +207,10 @@ - + diff --git a/library/tinymce/examples/templates/layout1.htm b/library/tinymce/examples/templates/layout1.htm old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/templates/snippet1.htm b/library/tinymce/examples/templates/snippet1.htm old mode 100755 new mode 100644 diff --git a/library/tinymce/examples/translate.html b/library/tinymce/examples/translate.html deleted file mode 100755 index bdd8ac54a4..0000000000 --- a/library/tinymce/examples/translate.html +++ /dev/null @@ -1,80 +0,0 @@ - - - -Full featured example - - - - - - - - - - -
                                                          -

                                                          Translation

                                                          - -

                                                          This page enables you to translate TinyMCE by using XML files.

                                                          -

                                                          Steps to translate:

                                                          -
                                                            -
                                                          1. Download one of the language XML files from the TinyMCE site.
                                                          2. -
                                                          3. Place it in /jscripts/tiny_mce/langs directory, for example /jscripts/tiny_mce/langs/sv.xml.
                                                          4. -
                                                          5. Change the language init option in this file to match the XML file code. For example: sv
                                                          6. -
                                                          7. TinyMCE will now use the XML file instead of the .js versions.
                                                          8. -
                                                          9. Modify the XML file until everything is translated
                                                          10. -
                                                          11. Modify the author information, this is optional.
                                                          12. -
                                                          13. Upload the XML file to the TinyMCE site to share it with others.
                                                          14. -
                                                          15. You can now download the .js versions of the language pack from the TinyMCE site.
                                                          16. -
                                                          - - -
                                                          - - - diff --git a/library/tinymce/examples/word.html b/library/tinymce/examples/word.html old mode 100755 new mode 100644 index f778f983c8..d827b6fedb --- a/library/tinymce/examples/word.html +++ b/library/tinymce/examples/word.html @@ -2,7 +2,7 @@ Word processor example - + diff --git a/library/tinymce/jscripts/tiny_mce/langs/en.js b/library/tinymce/jscripts/tiny_mce/langs/en.js old mode 100755 new mode 100644 index ea4a1b0e14..19324f74cd --- a/library/tinymce/jscripts/tiny_mce/langs/en.js +++ b/library/tinymce/jscripts/tiny_mce/langs/en.js @@ -1,170 +1 @@ -tinyMCE.addI18n({en:{ -common:{ -edit_confirm:"Do you want to use the WYSIWYG mode for this textarea?", -apply:"Apply", -insert:"Insert", -update:"Update", -cancel:"Cancel", -close:"Close", -browse:"Browse", -class_name:"Class", -not_set:"-- Not set --", -clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?", -clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.", -popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.", -invalid_data:"Error: Invalid values entered, these are marked in red.", -more_colors:"More colors" -}, -contextmenu:{ -align:"Alignment", -left:"Left", -center:"Center", -right:"Right", -full:"Full" -}, -insertdatetime:{ -date_fmt:"%Y-%m-%d", -time_fmt:"%H:%M:%S", -insertdate_desc:"Insert date", -inserttime_desc:"Insert time", -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" -}, -print:{ -print_desc:"Print" -}, -preview:{ -preview_desc:"Preview" -}, -directionality:{ -ltr_desc:"Direction left to right", -rtl_desc:"Direction right to left" -}, -layer:{ -insertlayer_desc:"Insert new layer", -forward_desc:"Move forward", -backward_desc:"Move backward", -absolute_desc:"Toggle absolute positioning", -content:"New layer..." -}, -save:{ -save_desc:"Save", -cancel_desc:"Cancel all changes" -}, -nonbreaking:{ -nonbreaking_desc:"Insert non-breaking space character" -}, -iespell:{ -iespell_desc:"Run spell checking", -download:"ieSpell not detected. Do you want to install it now?" -}, -advhr:{ -advhr_desc:"Horizontal rule" -}, -emotions:{ -emotions_desc:"Emotions" -}, -searchreplace:{ -search_desc:"Find", -replace_desc:"Find/Replace" -}, -advimage:{ -image_desc:"Insert/edit image" -}, -advlink:{ -link_desc:"Insert/edit link" -}, -xhtmlxtras:{ -cite_desc:"Citation", -abbr_desc:"Abbreviation", -acronym_desc:"Acronym", -del_desc:"Deletion", -ins_desc:"Insertion", -attribs_desc:"Insert/Edit Attributes" -}, -style:{ -desc:"Edit CSS Style" -}, -paste:{ -paste_text_desc:"Paste as Plain Text", -paste_word_desc:"Paste from Word", -selectall_desc:"Select All", -plaintext_mode_sticky:"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.", -plaintext_mode:"Paste is now in plain text mode. Click again to toggle back to regular paste mode." -}, -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." -}, -table:{ -desc:"Inserts a new table", -row_before_desc:"Insert row before", -row_after_desc:"Insert row after", -delete_row_desc:"Delete row", -col_before_desc:"Insert column before", -col_after_desc:"Insert column after", -delete_col_desc:"Remove column", -split_cells_desc:"Split merged table cells", -merge_cells_desc:"Merge table cells", -row_desc:"Table row properties", -cell_desc:"Table cell properties", -props_desc:"Table properties", -paste_row_before_desc:"Paste table row before", -paste_row_after_desc:"Paste table row after", -cut_row_desc:"Cut table row", -copy_row_desc:"Copy table row", -del:"Delete table", -row:"Row", -col:"Column", -cell:"Cell" -}, -autosave:{ -unload_msg:"The changes you made will be lost if you navigate away from this page.", -restore_content:"Restore auto-saved content.", -warning_message:"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?." -}, -fullscreen:{ -desc:"Toggle fullscreen mode" -}, -media:{ -desc:"Insert / edit embedded media", -edit:"Edit embedded media" -}, -fullpage:{ -desc:"Document properties" -}, -template:{ -desc:"Insert predefined template content" -}, -visualchars:{ -desc:"Visual control characters on/off." -}, -spellchecker:{ -desc:"Toggle spellchecker", -menu:"Spellchecker settings", -ignore_word:"Ignore word", -ignore_words:"Ignore all", -langs:"Languages", -wait:"Please wait...", -sug:"Suggestions", -no_sug:"No suggestions", -no_mpell:"No misspellings found." -}, -pagebreak:{ -desc:"Insert page break." -}, -advlist:{ -types:"Types", -def:"Default", -lower_alpha:"Lower alpha", -lower_greek:"Lower greek", -lower_roman:"Lower roman", -upper_alpha:"Upper alpha", -upper_roman:"Upper roman", -circle:"Circle", -disc:"Disc", -square:"Square" -}}}); \ No newline at end of file +tinyMCE.addI18n({en:{common:{"more_colors":"More Colors...","invalid_data":"Error: Invalid values entered, these are marked in red.","popup_blocked":"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.","clipboard_no_support":"Currently not supported by your browser, use keyboard shortcuts instead.","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","not_set":"-- Not Set --","class_name":"Class",browse:"Browse",close:"Close",cancel:"Cancel",update:"Update",insert:"Insert",apply:"Apply","edit_confirm":"Do you want to use the WYSIWYG mode for this textarea?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Full",right:"Right",center:"Center",left:"Left",align:"Alignment"},insertdatetime:{"day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","inserttime_desc":"Insert Time","insertdate_desc":"Insert Date","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Print"},preview:{"preview_desc":"Preview"},directionality:{"rtl_desc":"Direction Right to Left","ltr_desc":"Direction Left to Right"},layer:{content:"New layer...","absolute_desc":"Toggle Absolute Positioning","backward_desc":"Move Backward","forward_desc":"Move Forward","insertlayer_desc":"Insert New Layer"},save:{"save_desc":"Save","cancel_desc":"Cancel All Changes"},nonbreaking:{"nonbreaking_desc":"Insert Non-Breaking Space Character"},iespell:{download:"ieSpell not detected. Do you want to install it now?","iespell_desc":"Check Spelling"},advhr:{"delta_height":"","delta_width":"","advhr_desc":"Insert Horizontal Line"},emotions:{"delta_height":"","delta_width":"","emotions_desc":"Emotions"},searchreplace:{"replace_desc":"Find/Replace","delta_width":"","delta_height":"","search_desc":"Find"},advimage:{"delta_width":"","image_desc":"Insert/Edit Image","delta_height":""},advlink:{"delta_height":"","delta_width":"","link_desc":"Insert/Edit Link"},xhtmlxtras:{"attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":"","attribs_desc":"Insert/Edit Attributes","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation"},style:{"delta_height":"","delta_width":"",desc:"Edit CSS Style"},paste:{"plaintext_mode_stick":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"Select All","paste_word_desc":"Paste from Word","paste_text_desc":"Paste as Plain Text"},"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."},table:{"merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":"",cell:"Cell",col:"Column",row:"Row",del:"Delete Table","copy_row_desc":"Copy Table Row","cut_row_desc":"Cut Table Row","paste_row_after_desc":"Paste Table Row After","paste_row_before_desc":"Paste Table Row Before","props_desc":"Table Properties","cell_desc":"Table Cell Properties","row_desc":"Table Row Properties","merge_cells_desc":"Merge Table Cells","split_cells_desc":"Split Merged Table Cells","delete_col_desc":"Delete Column","col_after_desc":"Insert Column After","col_before_desc":"Insert Column Before","delete_row_desc":"Delete Row","row_after_desc":"Insert Row After","row_before_desc":"Insert Row Before",desc:"Insert/Edit Table"},autosave:{"warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content.","unload_msg":"The changes you made will be lost if you navigate away from this page."},fullscreen:{desc:"Toggle Full Screen Mode"},media:{"delta_height":"","delta_width":"",edit:"Edit Embedded Media",desc:"Insert/Edit Embedded Media"},fullpage:{desc:"Document Properties","delta_width":"","delta_height":""},template:{desc:"Insert Predefined Template Content"},visualchars:{desc:"Show/Hide Visual Control Characters"},spellchecker:{desc:"Toggle Spell Checker",menu:"Spell Checker Settings","ignore_word":"Ignore Word","ignore_words":"Ignore All",langs:"Languages",wait:"Please wait...",sug:"Suggestions","no_sug":"No Suggestions","no_mpell":"No misspellings found.","learn_word":"Learn word"},pagebreak:{desc:"Insert Page Break for Printing"},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words:"},visualblocks:{desc:'Show/hide block elements'}}}); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/license.txt b/library/tinymce/jscripts/tiny_mce/license.txt old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css b/library/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js b/library/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js old mode 100755 new mode 100644 index 873bfd8d38..0c3bf15e6f --- a/library/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js @@ -1,5 +1 @@ -tinyMCE.addI18n('en.advhr_dlg',{ -width:"Width", -size:"Height", -noshade:"No shadow" -}); \ No newline at end of file +tinyMCE.addI18n('en.advhr_dlg',{size:"Height",noshade:"No Shadow",width:"Width",normal:"Normal",widthunits:"Units"}); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm b/library/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm old mode 100755 new mode 100644 index fc37b2aecd..843e1f8f0b --- a/library/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm @@ -8,43 +8,44 @@ - +
                                                          - - - - - - - - - - - - - -
                                                          - - -
                                                          + + + + + + + + + + + + + +
                                                          + + + +
                                                          diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css b/library/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js old mode 100755 new mode 100644 index 4c7a9c3a88..d613a61393 --- a/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js @@ -1 +1 @@ -(function(){tinymce.create("tinymce.plugins.AdvancedImagePlugin",{init:function(a,b){a.addCommand("mceAdvImage",function(){if(a.dom.getAttrib(a.selection.getNode(),"class").indexOf("mceItem")!=-1){return}a.windowManager.open({file:b+"/image.htm",width:480+parseInt(a.getLang("advimage.delta_width",0)),height:385+parseInt(a.getLang("advimage.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("image",{title:"advimage.image_desc",cmd:"mceAdvImage"})},getInfo:function(){return{longname:"Advanced image",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advimage",tinymce.plugins.AdvancedImagePlugin)})(); \ No newline at end of file +(function(){tinymce.create("tinymce.plugins.AdvancedImagePlugin",{init:function(a,b){a.addCommand("mceAdvImage",function(){if(a.dom.getAttrib(a.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}a.windowManager.open({file:b+"/image.htm",width:480+parseInt(a.getLang("advimage.delta_width",0)),height:385+parseInt(a.getLang("advimage.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("image",{title:"advimage.image_desc",cmd:"mceAdvImage"})},getInfo:function(){return{longname:"Advanced image",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advimage",tinymce.plugins.AdvancedImagePlugin)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js old mode 100755 new mode 100644 index 2625dd2131..d2678cbcf2 --- a/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js @@ -14,7 +14,7 @@ // Register commands ed.addCommand('mceAdvImage', function() { // 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({ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm b/library/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm old mode 100755 new mode 100644 index 79cff3f19f..ed16b3d4a9 --- a/library/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm @@ -10,13 +10,14 @@ - - + + + @@ -25,15 +26,15 @@
                                                          {#advimage_dlg.general} - +
                                                          - @@ -60,7 +61,7 @@
                                                          {#advimage_dlg.tab_appearance} -
                                                          +
                                                          - + - - +
                                                          - x - px + + x + + px
                                                            + - + @@ -109,7 +108,7 @@ @@ -118,7 +117,7 @@ @@ -129,7 +128,7 @@ - -
                                                          @@ -142,18 +145,18 @@
                                                          {#advimage_dlg.swap_image} - + -
                                                          +
                                                          - @@ -161,12 +164,12 @@ - @@ -178,7 +181,7 @@
                                                          {#advimage_dlg.misc} -
                                                          + +
                                                          - - + + -
                                                            
                                                          + +
                                                          - - + + -
                                                            
                                                          +
                                                          @@ -211,12 +214,12 @@ -
                                                          + +
                                                          - - + + -
                                                            
                                                          @@ -227,6 +230,6 @@ - + diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif b/library/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js b/library/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js old mode 100755 new mode 100644 index 3bda86a2d3..546b69c0de --- a/library/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js @@ -9,13 +9,13 @@ var ImageDialog = { }, init : function(ed) { - var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode(); + var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode(), fl = tinyMCEPopup.getParam('external_image_list', 'tinyMCEImageList'); tinyMCEPopup.resizeToInnerSize(); this.fillClassList('class_list'); - this.fillFileList('src_list', 'tinyMCEImageList'); - this.fillFileList('over_list', 'tinyMCEImageList'); - this.fillFileList('out_list', 'tinyMCEImageList'); + this.fillFileList('src_list', fl); + this.fillFileList('over_list', fl); + this.fillFileList('out_list', fl); TinyMCE_EditableSelects.init(); if (n.nodeName == 'IMG') { @@ -142,7 +142,7 @@ var ImageDialog = { } tinymce.extend(args, { - src : nl.src.value, + src : nl.src.value.replace(/ /g, '%20'), width : nl.width.value, height : nl.height.value, alt : nl.alt.value, @@ -171,12 +171,18 @@ var ImageDialog = { if (el && el.nodeName == 'IMG') { ed.dom.setAttribs(el, args); } 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(); } + tinyMCEPopup.editor.execCommand('mceRepaint'); + tinyMCEPopup.editor.focus(); tinyMCEPopup.close(); }, @@ -285,7 +291,7 @@ var ImageDialog = { fillFileList : function(id, l) { var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; - l = window[l]; + l = typeof(l) === 'function' ? l() : window[l]; lst.options.length = 0; if (l && l.length > 0) { @@ -359,7 +365,7 @@ var ImageDialog = { }, updateStyle : function(ty) { - var dom = tinyMCEPopup.dom, st, v, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value}); + var dom = tinyMCEPopup.dom, b, bStyle, bColor, v, isIE = tinymce.isIE, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value}); if (tinyMCEPopup.editor.settings.inline_styles) { // Handle align @@ -378,14 +384,27 @@ var ImageDialog = { // Handle border if (ty == 'border') { + b = img.style.border ? img.style.border.split(' ') : []; + bStyle = dom.getStyle(img, 'border-style'); + bColor = dom.getStyle(img, 'border-color'); + dom.setStyle(img, 'border', ''); v = f.border.value; if (v || v == '0') { if (v == '0') - img.style.border = '0'; - else - img.style.border = v + 'px solid black'; + img.style.border = isIE ? '0' : '0 none none'; + else { + if (b.length == 3 && b[isIE ? 2 : 1]) + bStyle = b[isIE ? 2 : 1]; + else if (!bStyle || bStyle == 'none') + bStyle = 'solid'; + if (b.length == 3 && b[isIE ? 0 : 2]) + bColor = b[isIE ? 0 : 2]; + else if (!bColor || bColor == 'none') + bColor = 'black'; + img.style.border = v + 'px ' + bStyle + ' ' + bColor; + } } } diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js old mode 100755 new mode 100644 index f493d196fa..5f122e2cd3 --- a/library/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js @@ -1,43 +1 @@ -tinyMCE.addI18n('en.advimage_dlg',{ -tab_general:"General", -tab_appearance:"Appearance", -tab_advanced:"Advanced", -general:"General", -title:"Title", -preview:"Preview", -constrain_proportions:"Constrain proportions", -langdir:"Language direction", -langcode:"Language code", -long_desc:"Long description link", -style:"Style", -classes:"Classes", -ltr:"Left to right", -rtl:"Right to left", -id:"Id", -map:"Image map", -swap_image:"Swap image", -alt_image:"Alternative image", -mouseover:"for mouse over", -mouseout:"for mouse out", -misc:"Miscellaneous", -example_img:"Appearance preview image", -missing_alt:"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.", -dialog_title:"Insert/edit image", -src:"Image URL", -alt:"Image description", -list:"Image list", -border:"Border", -dimensions:"Dimensions", -vspace:"Vertical space", -hspace:"Horizontal space", -align:"Alignment", -align_baseline:"Baseline", -align_top:"Top", -align_middle:"Middle", -align_bottom:"Bottom", -align_texttop:"Text top", -align_textbottom:"Text bottom", -align_left:"Left", -align_right:"Right", -image_list:"Image list" -}); \ No newline at end of file +tinyMCE.addI18n('en.advimage_dlg',{"image_list":"Image List","align_right":"Right","align_left":"Left","align_textbottom":"Text Bottom","align_texttop":"Text Top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal Space",vspace:"Vertical Space",dimensions:"Dimensions",border:"Border",list:"Image List",alt:"Image Description",src:"Image URL","dialog_title":"Insert/Edit Image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance Preview Image",misc:"Miscellaneous",mouseout:"For Mouse Out",mouseover:"For Mouse Over","alt_image":"Alternative Image","swap_image":"Swap Image",map:"Image Map",id:"ID",rtl:"Right to Left",ltr:"Left to Right",classes:"Classes",style:"Style","long_desc":"Long Description Link",langcode:"Language Code",langdir:"Language Direction","constrain_proportions":"Constrain Proportions",preview:"Preview",title:"Title",general:"General","tab_advanced":"Advanced","tab_appearance":"Appearance","tab_general":"General",width:"Width",height:"Height"}); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css b/library/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js b/library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js b/library/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js old mode 100755 new mode 100644 index b78e82f76b..9ca955c928 --- a/library/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js @@ -30,8 +30,6 @@ function init() { document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink'); document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink'); - document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href'); - document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href'); document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target'); // Link list @@ -41,6 +39,13 @@ function init() { else document.getElementById("linklisthrefcontainer").innerHTML = html; + // Anchor list + html = getAnchorListHTML('anchorlist','href'); + if (html == "") + document.getElementById("anchorlistrow").style.display = 'none'; + else + document.getElementById("anchorlistcontainer").innerHTML = html; + // Resize some elements if (isVisible('hrefbrowser')) document.getElementById('href').style.width = '260px'; @@ -49,6 +54,13 @@ function init() { document.getElementById('popupurl').style.width = '180px'; elm = inst.dom.getParent(elm, "A"); + if (elm == null) { + var prospect = inst.dom.create("p", null, inst.selection.getContent()); + if (prospect.childNodes.length === 1) { + elm = prospect.firstChild; + } + } + if (elm != null && elm.nodeName == "A") action = "update"; @@ -360,20 +372,22 @@ function setAttrib(elm, attrib, value) { } function getAnchorListHTML(id, target) { - var inst = tinyMCEPopup.editor; - var nodes = inst.dom.select('a.mceItemAnchor,img.mceItemAnchor'), name, i; - var html = ""; + var ed = tinyMCEPopup.editor, nodes = ed.dom.select('a'), name, i, len, html = ""; - html += ''; + if (html == "") + return ""; + + html = ''; return html; } @@ -389,7 +403,6 @@ function insertAction() { // Remove element if there is no href if (!document.forms[0].href.value) { - tinyMCEPopup.execCommand("mceBeginUndoLevel"); i = inst.selection.getBookmark(); inst.dom.remove(elm, 1); inst.selection.moveToBookmark(i); @@ -398,12 +411,10 @@ function insertAction() { return; } - tinyMCEPopup.execCommand("mceBeginUndoLevel"); - // Create new anchor elements if (elm == null) { inst.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}); elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';}); for (i=0; i'; html += ''; html += ''; diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js b/library/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js old mode 100755 new mode 100644 index c71ffbd0f1..3169a56580 --- a/library/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js @@ -1,52 +1 @@ -tinyMCE.addI18n('en.advlink_dlg',{ -title:"Insert/edit link", -url:"Link URL", -target:"Target", -titlefield:"Title", -is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?", -is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?", -list:"Link list", -general_tab:"General", -popup_tab:"Popup", -events_tab:"Events", -advanced_tab:"Advanced", -general_props:"General properties", -popup_props:"Popup properties", -event_props:"Events", -advanced_props:"Advanced properties", -popup_opts:"Options", -anchor_names:"Anchors", -target_same:"Open in this window / frame", -target_parent:"Open in parent window / frame", -target_top:"Open in top frame (replaces all frames)", -target_blank:"Open in new window", -popup:"Javascript popup", -popup_url:"Popup URL", -popup_name:"Window name", -popup_return:"Insert 'return false'", -popup_scrollbars:"Show scrollbars", -popup_statusbar:"Show status bar", -popup_toolbar:"Show toolbars", -popup_menubar:"Show menu bar", -popup_location:"Show location bar", -popup_resizable:"Make window resizable", -popup_dependent:"Dependent (Mozilla/Firefox only)", -popup_size:"Size", -popup_position:"Position (X/Y)", -id:"Id", -style:"Style", -classes:"Classes", -target_name:"Target name", -langdir:"Language direction", -target_langcode:"Target language", -langcode:"Language code", -encoding:"Target character encoding", -mime:"Target MIME type", -rel:"Relationship page to target", -rev:"Relationship target to page", -tabindex:"Tabindex", -accesskey:"Accesskey", -ltr:"Left to right", -rtl:"Right to left", -link_list:"Link list" -}); \ No newline at end of file +tinyMCE.addI18n('en.advlink_dlg',{"target_name":"Target Name",classes:"Classes",style:"Style",id:"ID","popup_position":"Position (X/Y)",langdir:"Language Direction","popup_size":"Size","popup_dependent":"Dependent (Mozilla/Firefox Only)","popup_resizable":"Make Window Resizable","popup_location":"Show Location Bar","popup_menubar":"Show Menu Bar","popup_toolbar":"Show Toolbars","popup_statusbar":"Show Status Bar","popup_scrollbars":"Show Scrollbars","popup_return":"Insert \'return false\'","popup_name":"Window Name","popup_url":"Popup URL",popup:"JavaScript Popup","target_blank":"Open in New Window","target_top":"Open in Top Frame (Replaces All Frames)","target_parent":"Open in Parent Window/Frame","target_same":"Open in This Window/Frame","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced Properties","event_props":"Events","popup_props":"Popup Properties","general_props":"General Properties","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"General",list:"Link List","is_external":"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?","is_email":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/Edit Link","link_list":"Link List",rtl:"Right to Left",ltr:"Left to Right",accesskey:"AccessKey",tabindex:"TabIndex",rev:"Relationship Target to Page",rel:"Relationship Page to Target",mime:"Target MIME Type",encoding:"Target Character Encoding",langcode:"Language Code","target_langcode":"Target Language",width:"Width",height:"Height"}); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm b/library/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm old mode 100755 new mode 100644 index 876669c6b3..8ab7c2a95c --- a/library/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm @@ -9,37 +9,38 @@ - -
                                                          -
                                                          + + + + -
                                                          + diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif old mode 100755 new mode 100644 index 16f68cc1e91a9b8ec6cfa0ba4e0c86f94b177f1a..c7cf1011dad0e7500e29a278b0d395b253871109 GIT binary patch delta 268 zcmV+n0rURY0@eZ$M@dFFIbjk25&-lc0J)nSkq}gWCJF-k?l%Ac03rDV1poja04x9i z000sI5&%F2)8HqHP-&K zLM9f)qQm8C1c`;hGBJ_}h73g_p=1mM^9RXLyb^bpf>AvH6dpB#1`P%p2?GxRIXezw z7zGP+3jz%k3l2poa}fvt8yf%!5pp93KMDvH92^x0V-7i+EDszR8Bewx4-y8WehLpR z33wR8E)NQeD=m2M7#-8v+{*T!alCd#3 z1p^Ir4Fi-428xUrkd&O950`xk9-RXQ4F(zs0}qJ@2n?ee0ving0HzHddj}8`MGLmU z8UhImO%o-q#)2Cf00I^Q4_>?<5El-{nhOg84HOFw7eOBf7YG&%hkqFs2p3Q(*Aoat UP6!j@HP+?<{sHjFeFy;nJK@hu1^@s6 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif old mode 100755 new mode 100644 index 1606c119e75678c4031f384e0d50849906e8f533..82c5b182e61d32bd394acae551eff180f1eebd26 GIT binary patch delta 269 zcmV+o0rLLX0@nf%M@dFFIbjk25&-lc0K%p+kq}gWQaug+`&s}103rDV1poja04x9i z000sI5&%F2)ZizIQ)!l?Xh>A$7VskoPwh#@I9<*GEDONFahaqh2L%Pf;kcR*isE3L zI2Im3A3bNpK_?^9QN%xH_GCzT(kPR|yLU7KDX_2pAAJa~A*# z2^9-;8v_d!2?_v3DRU7A5(5Jg2N7~31{ezo9uTY$9)TD+oGcI(4STm0Q4*wpwG|r; zF2ODk2{(g0w~m91nJ)p)P~b0v=TXuJkV0)pK%`hRH&5(aq`SQQ0|4*~)Y zj~;||h6NmskCzV%0uYjV3kVjWqM-;FoP`G(WCRQW7Z(8x1b=r16AlX=0u2`oB@7o0 z3LXm%B?eNu8w9Vj0v=tq9}^cH3JDbp8v_d!2?`w-K_3Pe2MZcXM;Z$U7f&hF4hJ0z U3mpdz;x*Id4FABSjR*k%I|lSgp8x;= diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif old mode 100755 new mode 100644 index b33d3cca1e7b8e62dc689880074d5c61f619520d..fe66220c24b4da4526818a5d68f75a06d9985a29 GIT binary patch delta 249 zcmVc6jM@dFFIbjk25&-lc0Klpjkq}gWQauaR#xDQ>03rDV1poja04x9i z000sI5&%F2z~Co}Q)!l?s2E!2QdA zP6EM+V$0o5egPxNVelL@nuEvS5Py&l$*VJWNgmaeBy#Fc3>i3Y6%ZGOhlmgrZX^W= z8v_Gi8wdrADnAk!5DyO!7!pA_ZyYQc4;~&as7@LN99jl)E**3kv`;r%EDsR|k-xtS zxe5rp69ipb1YdXxI|zjY71PuN7Z3uIlM@dFFIbjk25&+Z_08%{*kq}gWz^WJ3#xDQ>03rDV0RR9W04x9i z000sI5&!@N!r&*0Q)!lCN*2gA3>#8RD(M*Bp=pO_IJA@^(ve^wj|T)J=|mKx31Xqy zL>`%J1fp3WXcLY>lX-YN*)vvS;FJ&#NtObb*E5pGS7DH60e65|cm@i5WOEb=0u&Si zj}nDqhYt}3FPE1Kk%oN{C!Z4r8Io|G1cs;z1QS;X3KIcN6RD}J9RVd52oM(p6~Dj) z7Z3;+U=_R<%FD|T6+s^g3=I$w7#0>7TMZ0QDH9g~2t-Z@0md~SvlqY>7q2NH06S3N BNLv5^ diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif old mode 100755 new mode 100644 index e6a9e60d5ddd1243fbbf2197b4dc6cd9c1b58b93..fd27edfaaa29a70a8c4563c0eab9f18c74d374fd GIT binary patch delta 270 zcmV+p0rCFX0@wl&M@dFFIbjk25&-lc0C`{zkq}gWCJF+oiUI%t03rDV1poja04x9i z000sI5&%F2)!-+JP-&K7%&eE7zha(Mk#X<1{oe683qw@BL@`@2pbbn6B`H)6*`?PtqlrLxC~PZrGN+% zE&vU~#TXL^jVmoMhlVv1IR^#>3>*Rg2{s7;0vrr}2N2W=TMrHb0uEwT<0=*g4h65Q U1r7!lv`7aQ0sjH?nF;{_JD=x5hyVZp delta 271 zcmV+q0r39V0@(r(M@dFFIbjk25&+Z?0453okq}gWd0-BziUI%t03rDV0RR9W04x9i z000sI5&!@N*5D_KP-&K9N=8QJd6^MGDoHFCB1y=#5VX{x;y`RB48~-Ga8wQ>h#?`F zTrSD$M3OMjAdy9t(NHAIO37j-Eo?9tg#s>zZwlT+1~Gwm8h(Hn69^dx2V!s-3=a<+ z0|Oj(k{b($iHwq&l93aYdI$^y9-5LK0}m612L=TU90DB)k_jCG91M5|5EKp@jU52N z03D4R4iqJ;3BC^w0s;=jUAi9-78(f%i;WBz2niY%K_3Se1`Y*FM+FWB7EmeH6b2d& V4jKj&;x*Of0sjHsjr$M+06RN6NSOct diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif old mode 100755 new mode 100644 index cb99cdd9136fa30462a9f57aa6a0adeb7e4124e7..0cc9bb71cca4cdeafbb248ce7e07c3708c1cbd64 GIT binary patch delta 264 zcmV+j0r&pa0@4ByM@dFFIbjk25&-lc0Q=+`kq}gWC=3F`xI_Q|03rDV1poja04x9i z000sI5&%F2&)_GDP-&KpRzaw7*n2_6C!6#^a!K{=W%7!?bX615c=6B?o`2^cO2 zcoM=c7zsElEfNF+&d-7v$p#C7H3(h^g0}_-5C=(GGudGrRNg8V1`i7u92^)64+a;o OM+X-H`T_N$Apkpuj7YZt delta 268 zcmV+n0rURS0@eZ$M@dFFIbjk25&+Z?04NLskq}gW`{WwLxI_Q|03rDV0RR9W04x9i z000sI5&!@N)8HqHP-&K9N=AmpFq#oTDp_dDHci{26|~f$@kn?Cm5RWVcr*?ph(R$C zG%6BFr6HIo3^YhYGr?3AiY&T{^|8V7w7SrQHo z1RaiZ6q6i?idh5$nwygp7?wp6oeuy28l4>&4~Yf~qLT=v2%Qpp2M`ty9FQFur2rir z1RM_*B?nWxk+Q-ZU$-9+7Yzyt5(*g^X$cAq7eOBf7X}Xt7#tiJ3l9btP$|+D21HH< S7T-0|;sN{t?%*Fn0028#VNAdP diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif old mode 100755 new mode 100644 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif b/library/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif old mode 100755 new mode 100644 index 9faf1aff8f4b28e02f4f414975fe1859c43b6b54..0631c7616ec8624ddeee02b633326f697ee72f80 GIT binary patch delta 276 zcmV+v0qg$X0^R};M@dFFIbjk25&-lc0MWuJkq}gWC=CMr@j3ti03rDV1poja04x9i z000sI5&%F2+u$dPQfZc>h%k}mS_`xd!)9v?GD=uwG!#n1P{Bx25L@HjmHz$20{ z93>Ts1_E((z8wcwL#Z4|1qR^|i5v)w!ugXVXaI_D!lF>PGz3-%90v;n3^s`y30029B7)0Cv delta 277 zcmV+w0qXwV0^b4/i);if(f&&f[1]){l=f[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g);if(l){for(c=0,e=l.length;c",a);h.head=f.substring(0,a+1);j=f.indexOf("\n'}h.head+=d.getParam("fullpage_default_doctype",'');h.head+="\n\n\n"+d.getParam("fullpage_default_title","Untitled document")+"\n";if(g=d.getParam("fullpage_default_encoding")){h.head+='\n'}if(g=d.getParam("fullpage_default_font_family")){i+="font-family: "+g+";"}if(g=d.getParam("fullpage_default_font_size")){i+="font-size: "+g+";"}if(g=d.getParam("fullpage_default_text_color")){i+="color: "+g+";"}h.head+="\n\n";h.foot="\n\n"}},_getContent:function(a,c){var b=this;if(!c.source_view||!a.getParam("fullpage_hide_in_source_view")){c.content=tinymce.trim(b.head)+"\n"+tinymce.trim(c.content)+"\n"+tinymce.trim(b.foot)}}});tinymce.PluginManager.add("fullpage",tinymce.plugins.FullPagePlugin)})(); \ No newline at end of file +(function(){var b=tinymce.each,a=tinymce.html.Node;tinymce.create("tinymce.plugins.FullPagePlugin",{init:function(c,d){var e=this;e.editor=c;c.addCommand("mceFullPageProperties",function(){c.windowManager.open({file:d+"/fullpage.htm",width:430+parseInt(c.getLang("fullpage.delta_width",0)),height:495+parseInt(c.getLang("fullpage.delta_height",0)),inline:1},{plugin_url:d,data:e._htmlToData()})});c.addButton("fullpage",{title:"fullpage.desc",cmd:"mceFullPageProperties"});c.onBeforeSetContent.add(e._setContent,e);c.onGetContent.add(e._getContent,e)},getInfo:function(){return{longname:"Fullpage",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_htmlToData:function(){var f=this._parseHeader(),h={},c,i,g,e=this.editor;function d(l,j){var k=l.attr(j);return k||""}h.fontface=e.getParam("fullpage_default_fontface","");h.fontsize=e.getParam("fullpage_default_fontsize","");i=f.firstChild;if(i.type==7){h.xml_pi=true;g=/encoding="([^"]+)"/.exec(i.value);if(g){h.docencoding=g[1]}}i=f.getAll("#doctype")[0];if(i){h.doctype=""}i=f.getAll("title")[0];if(i&&i.firstChild){h.metatitle=i.firstChild.value}b(f.getAll("meta"),function(m){var k=m.attr("name"),j=m.attr("http-equiv"),l;if(k){h["meta"+k.toLowerCase()]=m.attr("content")}else{if(j=="Content-Type"){l=/charset\s*=\s*(.*)\s*/gi.exec(m.attr("content"));if(l){h.docencoding=l[1]}}}});i=f.getAll("html")[0];if(i){h.langcode=d(i,"lang")||d(i,"xml:lang")}i=f.getAll("link")[0];if(i&&i.attr("rel")=="stylesheet"){h.stylesheet=i.attr("href")}i=f.getAll("body")[0];if(i){h.langdir=d(i,"dir");h.style=d(i,"style");h.visited_color=d(i,"vlink");h.link_color=d(i,"link");h.active_color=d(i,"alink")}return h},_dataToHtml:function(g){var f,d,h,j,k,e=this.editor.dom;function c(n,l,m){n.attr(l,m?m:undefined)}function i(l){if(d.firstChild){d.insert(l,d.firstChild)}else{d.append(l)}}f=this._parseHeader();d=f.getAll("head")[0];if(!d){j=f.getAll("html")[0];d=new a("head",1);if(j.firstChild){j.insert(d,j.firstChild,true)}else{j.append(d)}}j=f.firstChild;if(g.xml_pi){k='version="1.0"';if(g.docencoding){k+=' encoding="'+g.docencoding+'"'}if(j.type!=7){j=new a("xml",7);f.insert(j,f.firstChild,true)}j.value=k}else{if(j&&j.type==7){j.remove()}}j=f.getAll("#doctype")[0];if(g.doctype){if(!j){j=new a("#doctype",10);if(g.xml_pi){f.insert(j,f.firstChild)}else{i(j)}}j.value=g.doctype.substring(9,g.doctype.length-1)}else{if(j){j.remove()}}j=f.getAll("title")[0];if(g.metatitle){if(!j){j=new a("title",1);j.append(new a("#text",3)).value=g.metatitle;i(j)}}if(g.docencoding){j=null;b(f.getAll("meta"),function(l){if(l.attr("http-equiv")=="Content-Type"){j=l}});if(!j){j=new a("meta",1);j.attr("http-equiv","Content-Type");j.shortEnded=true;i(j)}j.attr("content","text/html; charset="+g.docencoding)}b("keywords,description,author,copyright,robots".split(","),function(m){var l=f.getAll("meta"),n,p,o=g["meta"+m];for(n=0;n"))},_parseHeader:function(){return new tinymce.html.DomParser({validate:false,root_name:"#document"}).parse(this.head)},_setContent:function(g,d){var m=this,i,c,h=d.content,f,l="",e=m.editor.dom,j;function k(n){return n.replace(/<\/?[A-Z]+/g,function(o){return o.toLowerCase()})}if(d.format=="raw"&&m.head){return}if(d.source_view&&g.getParam("fullpage_hide_in_source_view")){return}h=h.replace(/<(\/?)BODY/gi,"<$1body");i=h.indexOf("",i);m.head=k(h.substring(0,i+1));c=h.indexOf("\n"}f=m._parseHeader();b(f.getAll("style"),function(n){if(n.firstChild){l+=n.firstChild.value}});j=f.getAll("body")[0];if(j){e.setAttribs(m.editor.getBody(),{style:j.attr("style")||"",dir:j.attr("dir")||"",vLink:j.attr("vlink")||"",link:j.attr("link")||"",aLink:j.attr("alink")||""})}e.remove("fullpage_styles");if(l){e.add(m.editor.getDoc().getElementsByTagName("head")[0],"style",{id:"fullpage_styles"},l);j=e.get("fullpage_styles");if(j.styleSheet){j.styleSheet.cssText=l}}},_getDefaultHeader:function(){var f="",c=this.editor,e,d="";if(c.getParam("fullpage_default_xml_pi")){f+='\n'}f+=c.getParam("fullpage_default_doctype",'');f+="\n\n\n";if(e=c.getParam("fullpage_default_title")){f+=""+e+"\n"}if(e=c.getParam("fullpage_default_encoding")){f+='\n'}if(e=c.getParam("fullpage_default_font_family")){d+="font-family: "+e+";"}if(e=c.getParam("fullpage_default_font_size")){d+="font-size: "+e+";"}if(e=c.getParam("fullpage_default_text_color")){d+="color: "+e+";"}f+="\n\n";return f},_getContent:function(d,e){var c=this;if(!e.source_view||!d.getParam("fullpage_hide_in_source_view")){e.content=tinymce.trim(c.head)+"\n"+tinymce.trim(e.content)+"\n"+tinymce.trim(c.foot)}}});tinymce.PluginManager.add("fullpage",tinymce.plugins.FullPagePlugin)})(); \ No newline at end of file diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js old mode 100755 new mode 100644 index a2c9df8987..23de7c5a1a --- a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js +++ b/library/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js @@ -9,6 +9,8 @@ */ (function() { + var each = tinymce.each, Node = tinymce.html.Node; + tinymce.create('tinymce.plugins.FullPagePlugin', { init : function(ed, url) { var t = this; @@ -24,7 +26,7 @@ inline : 1 }, { plugin_url : url, - head_html : t.head + data : t._htmlToData() }); }); @@ -32,7 +34,6 @@ ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'}); ed.onBeforeSetContent.add(t._setContent, t); - ed.onSetContent.add(t._setBodyAttribs, t); ed.onGetContent.add(t._getContent, t); }, @@ -48,106 +49,357 @@ // Private plugin internal methods - _setBodyAttribs : function(ed, o) { - var bdattr, i, len, kv, k, v, t, attr = this.head.match(/body(.*?)>/i); + _htmlToData : function() { + var headerFragment = this._parseHeader(), data = {}, nodes, elm, matches, editor = this.editor; - if (attr && attr[1]) { - bdattr = attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g); + function getAttr(elm, name) { + var value = elm.attr(name); - if (bdattr) { - for(i = 0, len = bdattr.length; i < len; i++) { - kv = bdattr[i].split('='); - k = kv[0].replace(/\s/,''); - v = kv[1]; + return value || ''; + }; - if (v) { - v = v.replace(/^\s+/,'').replace(/\s+$/,''); - t = v.match(/^["'](.*)["']$/); + // Default some values + data.fontface = editor.getParam("fullpage_default_fontface", ""); + data.fontsize = editor.getParam("fullpage_default_fontsize", ""); - if (t) - v = t[1]; - } else - v = k; - - ed.dom.setAttrib(ed.getBody(), 'style', v); - } - } + // Parse XML PI + elm = headerFragment.firstChild; + if (elm.type == 7) { + data.xml_pi = true; + matches = /encoding="([^"]+)"/.exec(elm.value); + if (matches) + data.docencoding = matches[1]; } + + // Parse doctype + elm = headerFragment.getAll('#doctype')[0]; + if (elm) + data.doctype = '"; + + // Parse title element + elm = headerFragment.getAll('title')[0]; + if (elm && elm.firstChild) { + data.metatitle = elm.firstChild.value; + } + + // Parse meta elements + each(headerFragment.getAll('meta'), function(meta) { + var name = meta.attr('name'), httpEquiv = meta.attr('http-equiv'), matches; + + if (name) + data['meta' + name.toLowerCase()] = meta.attr('content'); + else if (httpEquiv == "Content-Type") { + matches = /charset\s*=\s*(.*)\s*/gi.exec(meta.attr('content')); + + if (matches) + data.docencoding = matches[1]; + } + }); + + // Parse html attribs + elm = headerFragment.getAll('html')[0]; + if (elm) + data.langcode = getAttr(elm, 'lang') || getAttr(elm, 'xml:lang'); + + // Parse stylesheet + elm = headerFragment.getAll('link')[0]; + if (elm && elm.attr('rel') == 'stylesheet') + data.stylesheet = elm.attr('href'); + + // Parse body parts + elm = headerFragment.getAll('body')[0]; + if (elm) { + data.langdir = getAttr(elm, 'dir'); + data.style = getAttr(elm, 'style'); + data.visited_color = getAttr(elm, 'vlink'); + data.link_color = getAttr(elm, 'link'); + data.active_color = getAttr(elm, 'alink'); + } + + return data; }, - _createSerializer : function() { - return new tinymce.dom.Serializer({ - dom : this.editor.dom, - apply_source_formatting : true + _dataToHtml : function(data) { + var headerFragment, headElement, html, elm, value, dom = this.editor.dom; + + function setAttr(elm, name, value) { + elm.attr(name, value ? value : undefined); + }; + + function addHeadNode(node) { + if (headElement.firstChild) + headElement.insert(node, headElement.firstChild); + else + headElement.append(node); + }; + + headerFragment = this._parseHeader(); + headElement = headerFragment.getAll('head')[0]; + if (!headElement) { + elm = headerFragment.getAll('html')[0]; + headElement = new Node('head', 1); + + if (elm.firstChild) + elm.insert(headElement, elm.firstChild, true); + else + elm.append(headElement); + } + + // Add/update/remove XML-PI + elm = headerFragment.firstChild; + if (data.xml_pi) { + value = 'version="1.0"'; + + if (data.docencoding) + value += ' encoding="' + data.docencoding + '"'; + + if (elm.type != 7) { + elm = new Node('xml', 7); + headerFragment.insert(elm, headerFragment.firstChild, true); + } + + elm.value = value; + } else if (elm && elm.type == 7) + elm.remove(); + + // Add/update/remove doctype + elm = headerFragment.getAll('#doctype')[0]; + if (data.doctype) { + if (!elm) { + elm = new Node('#doctype', 10); + + if (data.xml_pi) + headerFragment.insert(elm, headerFragment.firstChild); + else + addHeadNode(elm); + } + + elm.value = data.doctype.substring(9, data.doctype.length - 1); + } else if (elm) + elm.remove(); + + // Add/update/remove title + elm = headerFragment.getAll('title')[0]; + if (data.metatitle) { + if (!elm) { + elm = new Node('title', 1); + elm.append(new Node('#text', 3)).value = data.metatitle; + addHeadNode(elm); + } + } + + // Add meta encoding + if (data.docencoding) { + elm = null; + each(headerFragment.getAll('meta'), function(meta) { + if (meta.attr('http-equiv') == 'Content-Type') + elm = meta; + }); + + if (!elm) { + elm = new Node('meta', 1); + elm.attr('http-equiv', 'Content-Type'); + elm.shortEnded = true; + addHeadNode(elm); + } + + elm.attr('content', 'text/html; charset=' + data.docencoding); + } + + // Add/update/remove meta + each('keywords,description,author,copyright,robots'.split(','), function(name) { + var nodes = headerFragment.getAll('meta'), i, meta, value = data['meta' + name]; + + for (i = 0; i < nodes.length; i++) { + meta = nodes[i]; + + if (meta.attr('name') == name) { + if (value) + meta.attr('content', value); + else + meta.remove(); + + return; + } + } + + if (value) { + elm = new Node('meta', 1); + elm.attr('name', name); + elm.attr('content', value); + elm.shortEnded = true; + + addHeadNode(elm); + } }); + + // Add/update/delete link + elm = headerFragment.getAll('link')[0]; + if (elm && elm.attr('rel') == 'stylesheet') { + if (data.stylesheet) + elm.attr('href', data.stylesheet); + else + elm.remove(); + } else if (data.stylesheet) { + elm = new Node('link', 1); + elm.attr({ + rel : 'stylesheet', + text : 'text/css', + href : data.stylesheet + }); + elm.shortEnded = true; + + addHeadNode(elm); + } + + // Update body attributes + elm = headerFragment.getAll('body')[0]; + if (elm) { + setAttr(elm, 'dir', data.langdir); + setAttr(elm, 'style', data.style); + setAttr(elm, 'vlink', data.visited_color); + setAttr(elm, 'link', data.link_color); + setAttr(elm, 'alink', data.active_color); + + // Update iframe body as well + dom.setAttribs(this.editor.getBody(), { + style : data.style, + dir : data.dir, + vLink : data.visited_color, + link : data.link_color, + aLink : data.active_color + }); + } + + // Set html attributes + elm = headerFragment.getAll('html')[0]; + if (elm) { + setAttr(elm, 'lang', data.langcode); + setAttr(elm, 'xml:lang', data.langcode); + } + + // Serialize header fragment and crop away body part + html = new tinymce.html.Serializer({ + validate: false, + indent: true, + apply_source_formatting : true, + indent_before: 'head,html,body,meta,title,script,link,style', + indent_after: 'head,html,body,meta,title,script,link,style' + }).serialize(headerFragment); + + this.head = html.substring(0, html.indexOf('')); + }, + + _parseHeader : function() { + // Parse the contents with a DOM parser + return new tinymce.html.DomParser({ + validate: false, + root_name: '#document' + }).parse(this.head); }, _setContent : function(ed, o) { - var t = this, sp, ep, c = o.content, v, st = ''; + var self = this, startPos, endPos, content = o.content, headerFragment, styles = '', dom = self.editor.dom, elm; + + function low(s) { + return s.replace(/<\/?[A-Z]+/g, function(a) { + return a.toLowerCase(); + }) + }; // Ignore raw updated if we already have a head, this will fix issues with undo/redo keeping the head/foot separate - if (o.format == 'raw' && t.head) + if (o.format == 'raw' && self.head) return; if (o.source_view && ed.getParam('fullpage_hide_in_source_view')) return; // Parse out head, body and footer - c = c.replace(/<(\/?)BODY/gi, '<$1body'); - sp = c.indexOf('', sp); - t.head = c.substring(0, sp + 1); + if (startPos != -1) { + startPos = content.indexOf('>', startPos); + self.head = low(content.substring(0, startPos + 1)); - ep = c.indexOf('\n'; + self.head = this._getDefaultHeader(); + self.foot = '\n\n'; + } - t.head += ed.getParam('fullpage_default_doctype', ''); - t.head += '\n\n\n' + ed.getParam('fullpage_default_title', 'Untitled document') + '\n'; + // Parse header and update iframe + headerFragment = self._parseHeader(); + each(headerFragment.getAll('style'), function(node) { + if (node.firstChild) + styles += node.firstChild.value; + }); - if (v = ed.getParam('fullpage_default_encoding')) - t.head += '\n'; + elm = headerFragment.getAll('body')[0]; + if (elm) { + dom.setAttribs(self.editor.getBody(), { + style : elm.attr('style') || '', + dir : elm.attr('dir') || '', + vLink : elm.attr('vlink') || '', + link : elm.attr('link') || '', + aLink : elm.attr('alink') || '' + }); + } - if (v = ed.getParam('fullpage_default_font_family')) - st += 'font-family: ' + v + ';'; + dom.remove('fullpage_styles'); - if (v = ed.getParam('fullpage_default_font_size')) - st += 'font-size: ' + v + ';'; + if (styles) { + dom.add(self.editor.getDoc().getElementsByTagName('head')[0], 'style', {id : 'fullpage_styles'}, styles); - if (v = ed.getParam('fullpage_default_text_color')) - st += 'color: ' + v + ';'; - - t.head += '\n\n'; - t.foot = '\n\n'; + // Needed for IE 6/7 + elm = dom.get('fullpage_styles'); + if (elm.styleSheet) + elm.styleSheet.cssText = styles; } }, + _getDefaultHeader : function() { + var header = '', editor = this.editor, value, styles = ''; + + if (editor.getParam('fullpage_default_xml_pi')) + header += '\n'; + + header += editor.getParam('fullpage_default_doctype', ''); + header += '\n\n\n'; + + if (value = editor.getParam('fullpage_default_title')) + header += '' + value + '\n'; + + if (value = editor.getParam('fullpage_default_encoding')) + header += '\n'; + + if (value = editor.getParam('fullpage_default_font_family')) + styles += 'font-family: ' + value + ';'; + + if (value = editor.getParam('fullpage_default_font_size')) + styles += 'font-size: ' + value + ';'; + + if (value = editor.getParam('fullpage_default_text_color')) + styles += 'color: ' + value + ';'; + + header += '\n\n'; + + return header; + }, + _getContent : function(ed, o) { - var t = this; + var self = this; if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view')) - o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot); + o.content = tinymce.trim(self.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(self.foot); } }); // Register plugin tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin); -})(); \ No newline at end of file +})(); diff --git a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm b/library/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm old mode 100755 new mode 100644 index c32afaf2d9..14ab8652ea --- a/library/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm +++ b/library/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm @@ -8,13 +8,12 @@ - -
                                                          + + @@ -72,9 +71,9 @@
                                                             -
                                                          -
                                                          - - +
                                                           
                                                          @@ -147,7 +146,7 @@
                                                          - +
                                                           
                                                          @@ -158,7 +157,7 @@
                                                          - +
                                                           
                                                          @@ -173,15 +172,15 @@ - + - + - + - +
                                                          @@ -195,7 +194,7 @@
                                                          - +
                                                          @@ -205,7 +204,7 @@
                                                          - +
                                                           
                                                          @@ -217,7 +216,7 @@
                                                          - +
                                                           
                                                          @@ -225,16 +224,6 @@
                                                             
                                                          @@ -254,318 +243,17 @@
- -
- - -
- {#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} - - - - -
-
- + 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 a1bb719a38..3f672ad3ba --- 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(); +(function() { + 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 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 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 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'; -var defaultMediaTypes = - 'all=all,' + - 'screen=screen,' + - 'print=print,' + - 'tty=tty,' + - 'tv=tv,' + - 'projection=projection,' + - 'handheld=handheld,' + - 'braille=braille,' + - 'aural=aural'; + function setVal(id, value) { + var elm = document.getElementById(id); -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'; + if (elm) { + value = value || ''; -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(/ '; - } - - return im; - }); - } - }); + 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"); - o.content = h; + return img; }, - _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'; + /** + * 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}); + }, - p.width = o.width = dom.getAttrib(n, 'width') || 100; - p.height = o.height = dom.getAttrib(n, 'height') || 100; + /** + * Converts the JSON data object to a HTML string. + */ + htmlToData : function(html) { + var fragment, img, data; - if (p.src) - p.src = ed.convertURL(p.src, 'src', n); + data = { + type : 'flash', + video: {sources:[]}, + params: {} + }; - 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 - }); - } 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 + 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); + + if (value) + data[name] = value; }); } - 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'; - - if (v) - dom.add(ob, 'span', {_mce_name : 'param', name : k, '_mce_value' : v}); - } - }); - - if (!stc) - dom.add(ob, 'span', tinymce.extend({_mce_name : 'embed', type : o.type, style : dom.getAttrib(n, 'style')}, p)); - - return ob; + return data; }, - _spansToImgs : function(p) { - var t = this, dom = t.editor.dom, im, ci; + /** + * 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; - 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, ''); + // Find type by checking the classes + values = tinymce.explode(value, ' '); + for (i = 0; i < values.length; i++) { + typeItem = this.lookup[values[i]]; - switch (ci) { - case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000': - dom.replace(t._createImg('mceItemFlash', n), n); - break; + if (typeItem) + return typeItem; + } + }, - case 'clsid:166b1bca-3f9c-11cf-8075-444553540000': - dom.replace(t._createImg('mceItemShockWave', n), n); - break; + /** + * 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; - 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; + // Adds the flash player + function addPlayer(video_src, poster_src) { + var baseUri, flashVars, flashVarsOutput, params, flashPlayer; - case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b': - dom.replace(t._createImg('mceItemQuickTime', n), n); - break; + flashPlayer = editor.getParam('flash_video_player_url', self.convertUrl(self.url + '/moxieplayer.swf')); + if (flashPlayer) { + baseUri = editor.documentBaseURI; + data.params.src = flashPlayer; - case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa': - dom.replace(t._createImg('mceItemRealMedia', n), n); - break; - - default: - dom.replace(t._createImg('mceItemFlash', n), n); + // 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); + }); + + for (name in data.params) + replacement.attr(name, data.params[name]); + + replacement.attr({ + style: style, + src: data.params.src + }); + + node.replace(replacement); + + return; + } + + // 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); + + 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 (!sources[0].type) { + video.attr('src', sources[0].src); + sources.splice(0, 1); + } + + for (i = 0; i < sources.length; i++) { + source = new Node('source', 1).attr(sources[i]); + source.shortEnded = true; + video.append(source); + } + + // Create flash fallback for video if we have a mp4 source + if (mp4Source) { + addPlayer(mp4Source, posterSrc); + typeItem = self.getType('flash'); + } else + data.params.src = ''; + } + + // 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); + } + + for (i = 0; i < sources.length; i++) { + source = new Node('source', 1).attr(sources[i]); + source.shortEnded = true; + audio.append(source); + } + + data.params.src = ''; + } + + 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') + }); + + for (name in data.params) + embed.attr(name, data.params[name]); + + tinymce.each(rootAttributes, function(name) { + if (data[name] && name != 'type') + embed.attr(name, data[name]); + }); + + 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); + } + + // 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 + }); + + 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] + }); + + for (name in data.params) + embed.attr(name, data.params[name]); + + tinymce.each(rootAttributes, function(name) { + if (data[name] && name != 'type') + embed.attr(name, data[name]); + }); + + object.append(embed); + } + + // 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(); + }, + + /** + * 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); + }; + + function lookupAttribute(o, attr) { + return lookup[(o.attr(attr) || '').toLowerCase()]; + } + + function lookupExtension(src) { + var ext = src.replace(/^.*\.([^.]+)$/, '$1'); + return lookup[ext.toLowerCase() || '']; + } + + // If node isn't in document + if (!node.parent) + return; + + // 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; + } + + // 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' + }); + + // 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 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; + // Convert the poster URL + if (attrs.poster) + attrs.poster = urlConverter.call(urlConverterScope, attrs.poster, 'poster', node.name); + } - case 'application/x-director': - dom.replace(t._createImg('mceItemShockWave', n), n); - break; + // Object element + if (node.name === 'object') { + object = node; + embed = node.getAll('embed')[0]; + } - case 'application/x-mplayer2': - dom.replace(t._createImg('mceItemWindowsMedia', n), n); - break; + // Embed element + if (node.name === 'embed') + embed = node; - case 'video/quicktime': - dom.replace(t._createImg('mceItemQuickTime', n), n); - break; + // Iframe element + if (node.name === 'iframe') { + iframe = node; + type = 'Iframe'; + } - case 'audio/x-pn-realaudio-plugin': - dom.replace(t._createImg('mceItemRealMedia', n), n); - break; + 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'); - default: - dom.replace(t._createImg('mceItemFlash', n), n); - } - } - }); - }, + // Get all object params + params = object.getAll("param"); + for (i = 0; i < params.length; i++) { + param = params[i]; + name = param.remove().attr('name'); - _createImg : function(cl, n) { - var im, dom = this.editor.dom, pa = {}, ti = '', args; + if (!excludedAttrs[name]) + data.params[name] = param.attr('value'); + } - args = ['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode', 'allowfullscreen', 'quality', 'data']; + data.params.src = data.params.src || object.attr('data'); + } - // 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 - }); + 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'); - // Setup base parameters - each(args, function(na) { - var v = dom.getAttrib(n, na); + // 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] = 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'); - // 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'); - }); + 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]; + } + } // Use src not movie - if (pa.movie) { - pa.src = pa.movie; - delete pa.movie; + if (data.params.movie) { + data.params.src = data.params.src || data.params.movie; + delete data.params.movie; } - // No src try data - if (!pa.src) { - pa.src = pa.data; - delete pa.data; + // Convert the URL to relative/absolute depending on configuration + if (data.params.src) + data.params.src = urlConverter.call(urlConverterScope, data.params.src, 'src', 'object'); + + if (video) { + if (node.name === 'video') + type = lookup.video.name; + else if (node.name === 'audio') + type = lookup.audio.name; } - // Merge with embed args - n = dom.select('.mceItemEmbed', n)[0]; - if (n) { - each(args, function(na) { - var v = dom.getAttrib(n, na); + if (object && !type) + type = (lookupAttribute(object, 'clsid') || lookupAttribute(object, 'classid') || lookupAttribute(object, 'type') || {}).name; - if (v && !pa[na]) - pa[na] = v; - }); + if (embed && !type) + type = (lookupAttribute(embed, 'type') || lookupExtension(data.params.src) || {}).name; + + // for embedded audio we preserve the original specified type + if (embed && type == 'EmbeddedAudio') { + data.params.type = embed.attr('type'); } - delete pa.width; - delete pa.height; + // Replace the video/object/embed element with a placeholder image containing the data + node.replace(img); - im.title = this._serialize(pa); + // Remove embed + if (embed) + embed.remove(); - return im; - }, + // Serialize the inner HTML of the object element + if (object) { + html = getInnerHTML(object.remove()); - _parse : function(s) { - return tinymce.util.JSON.parse('{' + s + '}'); - }, + if (html) + data.object_html = html; + } - _serialize : function(o) { - return tinymce.util.JSON.serialize(o).replace(/[{}]/g, ''); + // 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 cb192e6ceda8d19ad8e7d08dd1cfde0aa72ead2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmVOzlLa+Za}7>m0&NpCfJ0FQc3~F7DE)S%o1)Qi1n@vxX46qnD4hRS-NE*Pw!4UvE=#^N( 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 042c2ab969e98a6fdbe08848c4a73bd2c41de906..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11668 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 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 3b0499145b16138249f653a1a3f2c80230fb292c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmV+~0nq+ONk%w1VGsZi0K^{vH>m7Qv+~s9^fsC5ZpZP=*zu3F=Jxpf8k_5u%JNv6 z=md-84VLU4w)kSE=yI&-yw>b=v+SqE?+kq47pC+YrR?bJ^yu>Zyvpn;hTp*6^mM!O zu+8$^=JX7bb<~J01ZTA{q@86#&8&6~H`Ss{{?p%K!-p%L6P2TpFYz90?pD06UU# BbnE~C 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 5f235dfc7363bd4957b5fe352e16a7eee9a38574..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmZ?wbhEHb6lD-#xXJ(m|AF9|(f@B(e|&xQ_v6XWFR%Td$?$)n^p7RFzqSScKhyN< z>ipLaF8n=^^LJP4|1^gGRdo_Rl+a*grZQ1hw@Zo1ikN$oB{QbRq&z?QIckdq1aE3;Fq_(WV>Kc7gjQtQh+9OrtFhn-)LUqD<|MOIl_!(Ed#pPRE;S)g;ew3>pd zn`Wa(lc2DGa)peFw3f88dp-|`@*)AXj;@(8hwDr|7Sxsp;&YxjN*Y{PBB!TIU|!b7Zgv0OaG5)&Kwi 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 86cfa98563..733c5f6c28 --- 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); + function get(id) { + return document.getElementById(id); } - 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'); + function clone(obj) { + var i, len, copy, attr; - var html = getMediaListHTML('medialist','src','media','media'); - if (html == "") - document.getElementById("linklistrow").style.display = 'none'; - else - document.getElementById("linklistcontainer").innerHTML = html; + if (null == obj || "object" != typeof obj) + return obj; - // Resize some elements - if (isVisible('filebrowser')) - document.getElementById('src').style.width = '230px'; + // Handle Array + if ('length' in obj) { + copy = []; - // 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; - } - - f.width.value = f.width.value == "" ? 100 : f.width.value; - f.height.value = f.height.value == "" ? 100 : f.height.value; - - 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; - - case "flv": - fe.className = "mceItemFlashVideo"; - break; - - case "shockwave": - fe.className = "mceItemShockWave"; - break; - - case "qt": - fe.className = "mceItemQuickTime"; - break; - - case "wmp": - fe.className = "mceItemWindowsMedia"; - break; - - case "rmp": - fe.className = "mceItemRealMedia"; - break; - } - - 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 ""; -} - -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; - - if (e.type == "text") - e.value = pl[n]; - else - selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]); -} - -function getBool(p, n, d, tv, fv) { - var v = document.forms[0].elements[p + "_" + n].checked; - - tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'"; - fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'"; - - return (v == d) ? '' : n + (v ? ':' + tv + ',' : ":\'" + fv + "\',"); -} - -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 (n == 'src') - v = tinyMCEPopup.editor.convertURL(v, 'src', null); - - return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',"); -} - -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; - - return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ","); -} - -function jsEncode(s) { - s = s.replace(new RegExp('\\\\', 'g'), '\\\\'); - s = s.replace(new RegExp('"', 'g'), '\\"'); - s = s.replace(new RegExp("'", 'g'), "\\'"); - - return s; -} - -function generatePreview(c) { - var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh; - - p.innerHTML = ''; - - nw = parseInt(f.width.value); - nh = parseInt(f.height.value); - - 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; + for (i = 0, len = obj.length; i < len; ++i) { + copy[i] = clone(obj[i]); } + + return copy; + } + + // Handle Object + copy = {}; + for (attr in obj) { + if (obj.hasOwnProperty(attr)) + copy[attr] = clone(obj[attr]); + } + + return copy; + } + + function getVal(id) { + var elm = get(id); + + if (elm.nodeName == "SELECT") + return elm.options[elm.selectedIndex].value; + + if (elm.type == "checkbox") + return elm.checked; + + return elm.value; + } + + function setVal(id, value, name) { + if (typeof(value) != 'undefined' && value != null) { + var elm = get(id); + + if (elm.nodeName == "SELECT") + selectByValue(document.forms[0], id, value); + else if (elm.type == "checkbox") { + if (typeof(value) == 'string') { + value = value.toLowerCase(); + value = (!name && value === 'true') || (name && value === name.toLowerCase()); + } + elm.checked = !!value; + } else + elm.value = value; } } - if (f.width.value != "") - oldWidth = nw; + window.Media = { + init : function() { + var html, editor, self = this; - if (f.height.value != "") - oldHeight = nh; + self.editor = editor = tinyMCEPopup.editor; - // After constrain - pl = serializeParameters(); + // 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'); - 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; + html = self.getMediaListHTML('medialist', 'src', 'media', 'media'); + if (html == "") + get("linklistrow").style.display = 'none'; + else + get("linklistcontainer").innerHTML = html; - 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; + if (isVisible('filebrowser')) + get('src').style.width = '230px'; - 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; + if (isVisible('video_filebrowser_altsource1')) + get('video_altsource1').style.width = '220px'; - 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; + if (isVisible('video_filebrowser_altsource2')) + get('video_altsource2').style.width = '220px'; - 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; - } + if (isVisible('audio_filebrowser_altsource1')) + get('audio_altsource1').style.width = '220px'; - if (pl == '') { - p.innerHTML = ''; - return; - } + if (isVisible('audio_filebrowser_altsource2')) + get('audio_altsource2').style.width = '220px'; - pl = tinyMCEPopup.editor.plugins.media._parse(pl); + if (isVisible('filebrowser_poster')) + get('video_poster').style.width = '220px'; - if (!pl.src) { - p.innerHTML = ''; - return; - } + editor.dom.setOuterHTML(get('media_type'), self.getMediaTypeHTML(editor)); - 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; + self.setDefaultDialogSettings(editor); + self.data = clone(tinyMCEPopup.getWindowArg('data')); + self.dataToForm(); + self.preview(); - // Avoid annoying warning about insecure items - if (!tinymce.isIE || document.location.protocol != 'https:') { - h += ''; + updateColor('bgcolor_pick', 'bgcolor'); + }, - for (n in pl) { - h += ''; + insert : function() { + var editor = tinyMCEPopup.editor; - // Add extra url parameter if it's an absolute URL - if (n == 'src' && pl[n].indexOf('://') != -1) - h += ''; + 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; + } + } + } + } + } + } + + if (!to_form) { + data.type = get('media_type').options[get('media_type').selectedIndex].value; + data.width = getVal('width'); + data.height = getVal('height'); + + // 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(); + + setVal('media_type', data.type); + } + + if (data.type == "video" || data.type == "audio") { + if (!data.video.sources) + data.video.sources = []; + + data.video.sources[0] = {src: getVal('src')}; + } + } + + // 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); + } + } + }, + + getMediaListHTML : function() { + if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) { + var html = ""; + + html += ''; + + return html; + } + + return ""; + }, + + getMediaTypeHTML : function(editor) { + function option(media_type, element) { + if (!editor.schema.getElementRule(element || media_type)) { + return ''; + } + + return '' + } + + var html = ""; + + html += ''; + return html; + }, + + 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,9 +105,209 @@
+
+ +
+ {#media_dlg.html5_video_options} + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
 
+
+ + + + + +
 
+
+ + + + + +
 
+
+ +
+ + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+
+ +
+ {#media_dlg.embedded_audio_options} + + + + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+
+ +
+ {#media_dlg.html5_audio_options} + + + + + + + + + + + + + + + + +
+ + + + + +
 
+
+ + + + + +
 
+
+ +
+ + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
@@ -121,11 +315,11 @@
{#media_dlg.flash_options} - +
- @@ -137,7 +331,7 @@ - @@ -150,7 +344,7 @@
- @@ -160,7 +354,7 @@ - @@ -176,18 +370,18 @@
- +
- +
- +
- +
@@ -196,18 +390,18 @@
- +
- +
- +
- +
@@ -215,134 +409,38 @@
- +
- + - +
-
- {#media_dlg.flv_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
-
- -
+
{#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 0000000000000000000000000000000000000000..585d772d6d3c23626fddfa58c4220b056783e148 GIT binary patch literal 19980 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 b==_iWodI83J<=N literal 0 HcmV?d00001 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 f2dbbff2bb..687f548669 --- 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 e3b078bfae..d492fbefe4 --- 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 9945cd8580..e7f301dbc7 --- 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 656c971b8c..c87d241bd4 --- 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; - t.editor = ed; - editClass = ed.getParam("noneditable_editable_class", "mceEditable"); - nonEditClass = ed.getParam("noneditable_noneditable_class", "mceNonEditable"); + editClass = " " + tinymce.trim(ed.getParam("noneditable_editable_class", "mceEditable")) + " "; + nonEditClass = " " + tinymce.trim(ed.getParam("noneditable_noneditable_class", "mceNonEditable")) + " "; - ed.onNodeChange.addToTop(function(ed, cm, n) { - var sc, ec; + // Setup noneditable regexps array + nonEditableRegExps = ed.getParam("noneditable_regexp"); + if (nonEditableRegExps && !nonEditableRegExps.length) { + nonEditableRegExps = [nonEditableRegExps]; + } - // 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); + 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; + } + + while (i--) { + content = content.replace(nonEditableRegExps[i], function() { + var args = arguments; + + return '' + ed.dom.encode(typeof(args[1]) === "string" ? args[1] : args[0]) + ''; + }); + } + + 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 c949d58cc4..0000000000 --- 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 a212f69633..35085e8adc --- 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 4e1eb0a7aa..a094c19162 --- 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/trans.gif b/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif deleted file mode 100755 index 388486517fa8da13ebd150e8f65d5096c3e10c3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 ncmZ?wbhEHbWMp7un7{x9ia%KxMSyG_5FaGNz{KRj$Y2csb)f_x 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 3e7b2504f1..e47a5c630a --- 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 4c3bf6542e..73fe7fe9a4 --- 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'); + + // 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; + + // 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; }); - - // Remove apply style spans - each(dom.select('span.Apple-style-span', n), function(n) { - dom.remove(n, 1); - }); - - 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 eeac778960..bc74daf85c --- 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 cd9c985b7a..165bc12df5 --- 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 1433a06a4a..4c87e8fa79 --- 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 c0a6243297..80284b9f3f --- 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 370959afa3..8a65900977 --- 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 d0424cfc9b..5a22d8aa4d --- 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.border} +
  {#style_dlg.style} {#style_dlg.width} {#style_dlg.color}
+ + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - -
  {#style_dlg.style} {#style_dlg.width} {#style_dlg.color}
      
      
{#style_dlg.top}   - - - - - - -
 
-
  - - - - - -
 
-
{#style_dlg.top}   + + + + + + +
  + + +
+
  + + + + + +
 
+
{#style_dlg.right}   - - - - - - -
 
-
  - - - - - -
 
-
{#style_dlg.right}   + + + + + + +
  + + +
+
  + + + + + +
 
+
{#style_dlg.bottom}   - - - - - - -
 
-
  - - - - - -
 
-
{#style_dlg.bottom}   + + + + + + +
  + + +
+
  + + + + + +
 
+
{#style_dlg.left}   - - - - - - + + + + + + + + +
 
{#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 0000000000..5bac30202e --- /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 27d2440222..42a82d112c --- 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 c2be2f40a6..a1579c85f2 --- 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 d243e1d833..a72a8d6973 --- 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 266d7d5371..ad462f0e07 --- 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 c2f307f045..832b5e9433 --- 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 b5fc1fda3d..d6f3290599 --- 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 092e6c8270..1885401f6b --- 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 f269039228..b92fa741eb --- 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.iframeHTML += ''; + + // Load the CSS by injecting them into the HTML this will reduce "flicker" + for (i = 0; i < t.contentCSS.length; i++) { + t.iframeHTML += ''; + } + + t.contentCSS = []; bi = s.body_id || 'tinymce'; if (bi.indexOf('=') != -1) { @@ -9567,33 +12357,35 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { bc = bc[t.id] || ''; } - t.iframeHTML += ''; + t.iframeHTML += '
'; // Domain relaxing enabled, then set document domain - if (tinymce.relaxedDomain) { + 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 - 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();})()'; + 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();})()'; } // Create iframe - n = DOM.add(o.iframeContainer, '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 + height : h, + display : 'block' // Important for Gecko to render the iframe correctly } }); 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); - if (!isIE || !tinymce.relaxedDomain) + if (!tinymce.relaxedDomain || !u) t.setupIframe(); e = n = o = null; // Cleanup @@ -9607,30 +12399,21 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { d.open(); d.write(t.iframeHTML); d.close(); + + if (tinymce.relaxedDomain) + d.domain = tinymce.relaxedDomain; } - // 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 - } - } + // It will not steal focus while setting contentEditable + b = t.getBody(); + b.disabled = true; - // 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); + if (!s.readonly) + b.contentEditable = true; - if (!s.readonly) - b.contentEditable = true; + b.disabled = false; - DOM.show(b); - } + t.schema = new tinymce.html.Schema(s); t.dom = new tinymce.dom.DOMUtils(t.getDoc(), { keep_values : true, @@ -9640,16 +12423,85 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { class_filter : s.class_filter, update_styles : 1, fix_ie_paragraphs : 1, - valid_styles : s.valid_styles + schema : t.schema }); - t.schema = new tinymce.dom.Schema(); + t.parser = new tinymce.html.DomParser(s, t.schema); - t.serializer = new tinymce.dom.Serializer(extend(s, { - valid_elements : s.verify_html === false ? '*[*]' : s.valid_elements, - dom : t.dom, - schema : t.schema - })); + // 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); + } + } + }); + } + + // 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; + + while (i--) { + node = nodes[i]; + value = node.attr(name); + internalName = 'data-mce-' + name; + + // 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 + node.attr(internalName, t.convertURL(value, name, node.name)); + } + } + }); + + // Keep scripts from executing + t.parser.addNodeFilter('script', function(nodes, name) { + var i = nodes.length, node; + + while (i--) { + node = nodes[i]; + node.attr('type', 'mce-' + (node.attr('type') || 'text/javascript')); + } + }); + + t.parser.addNodeFilter('#cdata', function(nodes, name) { + var i = nodes.length, node; + + while (i--) { + node = nodes[i]; + node.type = 8; + node.name = '#comment'; + node.value = '[CDATA[' + node.value + ']]'; + } + }); + + t.parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function(nodes, name) { + var i = nodes.length, node, nonEmptyElements = t.schema.getNonEmptyElements(); + + while (i--) { + node = nodes[i]; + + if (node.isEmpty(nonEmptyElements)) + node.empty().append(new tinymce.html.Node('br', 1)).shortEnded = true; + } + }); + + t.serializer = new tinymce.dom.Serializer(s, t.dom, t.schema); t.selection = new tinymce.dom.Selection(t.dom, t.getWin(), t.serializer); @@ -9658,53 +12510,67 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // 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'}} + {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'}} ], 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'}} + {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'}} ], alignright : [ - {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}}, - {selector : 'img,table', styles : {'float' : 'right'}} + {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'}} ], alignfull : [ - {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}} + {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'justify'}, defaultBlock: 'div'} ], bold : [ - {inline : 'strong'}, + {inline : 'strong', remove : 'all'}, {inline : 'span', styles : {fontWeight : 'bold'}}, - {inline : 'b'} + {inline : 'b', remove : 'all'} ], italic : [ - {inline : 'em'}, + {inline : 'em', remove : 'all'}, {inline : 'span', styles : {fontStyle : 'italic'}}, - {inline : 'i'} + {inline : 'i', remove : 'all'} ], underline : [ {inline : 'span', styles : {textDecoration : 'underline'}, exact : true}, - {inline : 'u'} + {inline : 'u', remove : 'all'} ], strikethrough : [ {inline : 'span', styles : {textDecoration : 'line-through'}, exact : true}, - {inline : 'u'} + {inline : 'strike', remove : 'all'} ], - forecolor : {inline : 'span', styles : {color : '%value'}}, - hilitecolor : {inline : 'span', styles : {backgroundColor : '%value'}}, + 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'}, + + link : {inline : 'a', selector : 'a', remove : 'all', split : true, deep : true, + onmatch : function(node) { + return true; + }, + + 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}, @@ -9725,7 +12591,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // Pass through t.undoManager.onAdd.add(function(um, l) { - if (!l.initial) + if (um.hasUndo()) return t.onChange.dispatch(t, l, um); }); @@ -9737,9 +12603,8 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { return t.onRedo.dispatch(t, l, um); }); - t.forceBlocks = new tinymce.ForceBlocks(t, { - forced_root_block : s.forced_root_block - }); + t.forceBlocks = new tinymce.ForceBlocks(t); + t.enterKey = new tinymce.EnterKey(t); t.editorCommands = new tinymce.EditorCommands(t); @@ -9763,35 +12628,14 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { t.controlManager.onPostRender.dispatch(t, t.controlManager); t.onPostRender.dispatch(t); + t.quirks = new tinymce.util.Quirks(this); + if (s.directionality) t.getBody().dir = s.directionality; if (s.nowrap) t.getBody().style.whiteSpace = "nowrap"; - if (s.custom_elements) { - function handleCustom(ed, o) { - each(explode(s.custom_elements), function(v) { - var n; - - if (v.indexOf('~') === 0) { - v = v.substring(1); - n = 'span'; - } else - n = 'div'; - - o.content = o.content.replace(new RegExp('<(' + v + ')([^>]*)>', 'g'), '<' + n + ' _mce_name="$1"$2>'); - o.content = o.content.replace(new RegExp('', 'g'), ''); - }); - }; - - t.onBeforeSetContent.add(handleCustom); - t.onPostProcess.add(function(ed, o) { - if (o.set) - handleCustom(ed, o); - }); - } - 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()); @@ -9813,6 +12657,18 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }); } + 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 ''; + }); + }); + } + }); + } + if (s.convert_newlines_to_brs) { t.onBeforeSetContent.add(function(ed, o) { if (o.initial) @@ -9820,12 +12676,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }); } - if (s.fix_nesting && isIE) { - t.onBeforeSetContent.add(function(ed, o) { - o.content = t._fixNesting(o.content); - }); - } - if (s.preformatted) { t.onPostProcess.add(function(ed, o) { o.content = o.content.replace(/^\s*/, ''); @@ -9919,7 +12769,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { var pn = n.parentNode; if (ed.dom.isBlock(pn) && pn.lastChild === n) - ed.dom.add(pn, 'br', {'_mce_bogus' : 1}); + ed.dom.add(pn, 'br', {'data-mce-bogus' : 1}); }); }; @@ -9929,72 +12779,61 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }); t.onSetContent.add(t.selection.onSetContent.add(fixLinks)); - - 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 - } - } } - // A small timeout was needed since firefox will remove. Bug: #1838304 - setTimeout(function () { - if (t.removed) - return; + t.load({initial : true, format : 'html'}); + t.startContent = t.getContent({format : 'raw'}); + t.undoManager.add(); + t.initialized = true; - t.load({initial : true, format : (s.cleanup_on_startup ? 'html' : 'raw')}); - t.startContent = t.getContent({format : 'raw'}); - t.initialized = true; + 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.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}); + // Load specified content CSS last + each(t.contentCSS, function(u) { + t.dom.loadCSS(u); + }); - // Load specified content CSS last - if (s.content_css) { - tinymce.each(explode(s.content_css), function(u) { - t.dom.loadCSS(t.documentBaseURI.toAbsolute(u)); - }); - } + // Handle auto focus + if (s.auto_focus) { + setTimeout(function () { + var ed = tinymce.get(s.auto_focus); - // Handle auto focus - if (s.auto_focus) { - setTimeout(function () { - var ed = tinymce.get(s.auto_focus); + ed.selection.select(ed.getBody(), 1); + ed.selection.collapse(1); + ed.getBody().focus(); + ed.getWin().focus(); + }, 100); + } - ed.selection.select(ed.getBody(), 1); - ed.selection.collapse(1); - ed.getWin().focus(); - }, 100); - } - }, 1); - e = null; }, focus : function(sf) { - var oed, t = this, ce = t.settings.content_editable, ieRng, controlElm, doc = t.getDoc(); + var oed, t = this, selection = t.selection, ce = t.settings.content_editable, ieRng, controlElm, doc = t.getDoc(); if (!sf) { // Get selected control element - ieRng = t.selection.getRng(); + ieRng = selection.getRng(); if (ieRng.item) { controlElm = ieRng.item(0); } + t._refreshContentEditable(); + // Is not content editable if (!ce) t.getWin().focus(); + // Focus the body as well since it's contentEditable + if (tinymce.isGecko) { + t.getBody().focus(); + } + // 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 @@ -10079,7 +12918,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }, nodeChanged : function(o) { - var t = this, s = t.selection, n = (isIE ? s.getNode() : s.getStart()) || t.getBody(); + var t = this, s = t.selection, n = s.getStart() || t.getBody(); // Fix for bug #1896577 it seems that this can not be fired while the editor is loading if (t.initialized) { @@ -10112,16 +12951,16 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { t.buttons[n] = s; }, - addCommand : function(n, f, s) { - this.execCommands[n] = {func : f, scope : s || this}; + addCommand : function(name, callback, scope) { + this.execCommands[name] = {func : callback, scope : scope || this}; }, - addQueryStateHandler : function(n, f, s) { - this.queryStateCommands[n] = {func : f, scope : s || this}; + addQueryStateHandler : function(name, callback, scope) { + this.queryStateCommands[name] = {func : callback, scope : scope || this}; }, - addQueryValueHandler : function(n, f, s) { - this.queryValueCommands[n] = {func : f, scope : s || this}; + addQueryValueHandler : function(name, callback, scope) { + this.queryValueCommands[name] = {func : callback, scope : scope || this}; }, addShortcut : function(pa, desc, cmd_func, sc) { @@ -10184,9 +13023,9 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(cmd) && (!a || !a.skip_focus)) t.focus(); - o = {}; - t.onBeforeExecCommand.dispatch(t, cmd, ui, val, o); - if (o.terminate) + a = extend({}, a); + t.onBeforeExecCommand.dispatch(t, cmd, ui, val, a); + if (a.terminate) return false; // Command callback @@ -10224,12 +13063,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { return true; } - // Execute global commands - if (tinymce.GlobalCommands.execCommand(t, cmd, ui, val)) { - t.onExecCommand.dispatch(t, cmd, ui, val, a); - return true; - } - // Editor commands if (t.editorCommands.execCommand(cmd, ui, val)) { t.onExecCommand.dispatch(t, cmd, ui, val, a); @@ -10361,7 +13194,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // Add undo level will trigger onchange event if (!o.no_events) { - t.undoManager.typing = 0; + t.undoManager.typing = false; t.undoManager.add(); } @@ -10393,66 +13226,87 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { return h; }, - setContent : function(h, o) { - var t = this; + setContent : function(content, args) { + var self = this, rootNode, body = self.getBody(), forcedRootBlockName; - o = o || {}; - o.format = o.format || 'html'; - o.set = true; - o.content = h; + // Setup args object + args = args || {}; + args.format = args.format || 'html'; + args.set = true; + args.content = content; - if (!o.no_events) - t.onBeforeSetContent.dispatch(t, o); + // Do preprocessing + if (!args.no_events) + self.onBeforeSetContent.dispatch(self, args); + + content = args.content; // 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'; + if (!tinymce.isIE && (content.length === 0 || /^\s+$/.test(content))) { + forcedRootBlockName = self.settings.forced_root_block; + if (forcedRootBlockName) + content = '<' + forcedRootBlockName + '>
'; + else + content = '
'; + + body.innerHTML = content; + self.selection.select(body, true); + self.selection.collapse(true); + return; } - o.content = t.dom.setHTML(t.getBody(), tinymce.trim(o.content)); - - if (o.format != 'raw' && t.settings.cleanup) { - o.getInner = true; - o.content = t.dom.setHTML(t.getBody(), t.serializer.serialize(t.getBody(), o)); + // Parse and serialize the html + if (args.format !== 'raw') { + content = new tinymce.html.Serializer({}, self.schema).serialize( + self.parser.parse(content) + ); } - if (!o.no_events) - t.onSetContent.dispatch(t, o); + // Set the new cleaned contents to the editor + args.content = tinymce.trim(content); + self.dom.setHTML(body, args.content); - return o.content; + // Do post processing + if (!args.no_events) + self.onSetContent.dispatch(self, args); + + self.selection.normalize(); + + return args.content; }, - getContent : function(o) { - var t = this, h; + getContent : function(args) { + var self = this, content; - o = o || {}; - o.format = o.format || 'html'; - o.get = true; + // Setup args object + args = args || {}; + args.format = args.format || 'html'; + args.get = true; - if (!o.no_events) - t.onBeforeGetContent.dispatch(t, o); + // Do preprocessing + if (!args.no_events) + self.onBeforeGetContent.dispatch(self, args); - if (o.format != 'raw' && t.settings.cleanup) { - o.getInner = true; - h = t.serializer.serialize(t.getBody(), o); - } else - h = t.getBody().innerHTML; + // 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); - h = h.replace(/^\s*|\s*$/g, ''); - o.content = h; + args.content = tinymce.trim(content); - if (!o.no_events) - t.onGetContent.dispatch(t, o); + // Do post processing + if (!args.no_events) + self.onGetContent.dispatch(self, args); - return o.content; + return args.content; }, isDirty : function() { - var t = this; + var self = this; - return tinymce.trim(t.startContent) != tinymce.trim(t.getContent({format : 'raw', no_events : 1})) && !t.isNotDirty; + return tinymce.trim(self.startContent) != tinymce.trim(self.getContent({format : 'raw', no_events : 1})) && !self.isNotDirty; }, getContainer : function() { @@ -10567,17 +13421,32 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { remove : function() { var t = this, e = t.getContainer(); - t.removed = 1; // Cancels post remove event execution - t.hide(); + if (!t.removed) { + t.removed = 1; // Cancels post remove event execution + t.hide(); - t.execCallback('remove_instance_callback', t); - t.onRemove.dispatch(t); + // Remove all events - // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command - t.onExecCommand.listeners = []; + // 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()); + } - tinymce.remove(t); - DOM.remove(e); + Event.clear(t.getBody()); + Event.clear(t.formElement); + Event.unbind(e); + + t.execCallback('remove_instance_callback', t); + t.onRemove.dispatch(t); + + // Clear all execCommand listeners this is required to avoid errors if the editor was removed inside another command + t.onExecCommand.listeners = []; + + tinymce.remove(t); + DOM.remove(e); + } }, destroy : function(s) { @@ -10587,6 +13456,13 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if (t.destroyed) return; + // 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()); + } + if (!s) { tinymce.removeUnload(t.destroy); tinyMCE.onBeforeUnload.remove(t._beforeUnload); @@ -10599,18 +13475,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { t.controlManager.destroy(); t.selection.destroy(); t.dom.destroy(); - - // Remove all events - - // 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()); - } - - Event.clear(t.getBody()); - Event.clear(t.formElement); } if (t.formElement) { @@ -10630,7 +13494,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { _addEvents : function() { // 'focus', 'blur', 'dblclick', 'beforedeactivate', submit, reset - var t = this, i, s = t.settings, lo = { + var t = this, i, s = t.settings, dom = t.dom, lo = { mouseup : 'onMouseUp', mousedown : 'onMouseDown', click : 'onClick', @@ -10662,35 +13526,26 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { 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); + dom.bind(t.getDoc(), k, eventHandler); break; case 'paste': - t.dom.bind(t.getBody(), k, function(e) { + dom.bind(t.getBody(), k, function(e) { eventHandler(e); }); break; case 'submit': case 'reset': - t.dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler); + dom.bind(t.getElement().form || DOM.getParent(t.id, 'form'), k, eventHandler); break; default: - t.dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler); + dom.bind(s.content_editable ? t.getBody() : t.getDoc(), k, eventHandler); } }); - t.dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) { + dom.bind(s.content_editable ? t.getBody() : (isGecko ? t.getDoc() : t.getWin()), 'focus', function(e) { t.focus(true); }); @@ -10698,22 +13553,12 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // 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; - - if (v = e.getAttribute('_mce_src')) - e.src = t.documentBaseURI.toAbsolute(v); - }) - });*/ - - t.dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) { + dom.bind(t.getDoc(), 'DOMNodeInserted', function(e) { var v; e = e.target; - if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('_mce_src'))) + if (e.nodeType === 1 && e.nodeName === 'IMG' && (v = e.getAttribute('data-mce-src'))) e.src = t.documentBaseURI.toAbsolute(v); }); } @@ -10724,14 +13569,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { var t = this, d = t.getDoc(), s = t.settings; if (isGecko && !s.readonly) { - if (t._isHidden()) { - try { - if (!s.content_editable) - d.designMode = 'On'; - } catch (ex) { - // Fails if it's hidden - } - } + t._refreshContentEditable(); try { // Try new Gecko method @@ -10754,19 +13592,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { t.onMouseDown.add(setOpts); } - // 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; - - // 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); - }); - } - // Add node change handlers t.onMouseUp.add(t.nodeChanged); //t.onClick.add(t.nodeChanged); @@ -10777,6 +13602,37 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { t.nodeChanged(); }); + + // Add block quote deletion handler + t.onKeyDown.add(function(ed, e) { + if (e.keyCode != VK.BACKSPACE) + return; + + var rng = ed.selection.getRng(); + if (!rng.collapsed) + return; + + var n = rng.startContainer; + var offset = rng.startOffset; + + while (n && n.nodeType && n.nodeType != 1 && n.parentNode) + n = n.parentNode; + + // 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); + + // Move the caret to the beginning of n + rng.setStart(n, 0); + rng.setEnd(n, 0); + ed.selection.setRng(rng); + ed.selection.collapse(false); + } + }); + + + // Add reset handler t.onReset.add(function() { t.setContent(t.startContent, {format : 'raw'}); @@ -10798,9 +13654,9 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { for (i=1; i<=6; i++) t.addShortcut('ctrl+' + i, '', ['FormatBlock', false, 'h' + i]); - t.addShortcut('ctrl+7', '', ['FormatBlock', false, '

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

']); - t.addShortcut('ctrl+9', '', ['FormatBlock', false, '
']); + t.addShortcut('ctrl+7', '', ['FormatBlock', false, 'p']); + t.addShortcut('ctrl+8', '', ['FormatBlock', false, 'div']); + t.addShortcut('ctrl+9', '', ['FormatBlock', false, 'address']); function find(e) { var v = null; @@ -10856,7 +13712,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.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) { + dom.bind(t.getDoc(), 'controlselect', function(e) { var re = t.resizeInfo, cb; e = e.target; @@ -10866,28 +13722,28 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { return; if (re) - t.dom.unbind(re.node, re.ev, re.cb); + dom.unbind(re.node, re.ev, re.cb); - if (!t.dom.hasClass(e, 'mceItemNoResize')) { + if (!dom.hasClass(e, 'mceItemNoResize')) { ev = 'resizeend'; - cb = t.dom.bind(e, ev, function(e) { + cb = dom.bind(e, ev, function(e) { var v; e = e.target; - if (v = t.dom.getStyle(e, 'width')) { - t.dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, '')); - t.dom.setStyle(e, 'width', ''); + if (v = dom.getStyle(e, 'width')) { + dom.setAttrib(e, 'width', v.replace(/[^0-9%]+/g, '')); + dom.setStyle(e, 'width', ''); } - if (v = t.dom.getStyle(e, 'height')) { - t.dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, '')); - t.dom.setStyle(e, 'height', ''); + if (v = dom.getStyle(e, 'height')) { + dom.setAttrib(e, 'height', v.replace(/[^0-9%]+/g, '')); + dom.setStyle(e, 'height', ''); } }); } else { ev = 'resizestart'; - cb = t.dom.bind(e, 'resizestart', Event.cancel, Event); + cb = dom.bind(e, 'resizestart', Event.cancel, Event); } re = t.resizeInfo = { @@ -10896,27 +13752,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { cb : cb }; }); - - 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); - } - } - }); - - /*if (t.dom.boxModel) { - t.getBody().style.height = '100%'; - - Event.add(t.getWin(), 'resize', function(e) { - var docElm = t.getDoc().documentElement; - - docElm.style.height = (docElm.offsetHeight - 10) + 'px'; - }); - }*/ } if (tinymce.isOpera) { @@ -10928,81 +13763,62 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // Add custom undo/redo handlers if (s.custom_undo_redo) { function addUndo() { - t.undoManager.typing = 0; + t.undoManager.typing = false; t.undoManager.add(); }; - t.dom.bind(t.getDoc(), 'focusout', function(e) { + var focusLostFunc = tinymce.isGecko ? 'blur' : 'focusout'; + dom.bind(t.getDoc(), focusLostFunc, function(e){ if (!t.removed && t.undoManager.typing) addUndo(); }); + // Add undo level when contents is drag/dropped within the editor + t.dom.bind(t.dom.getRoot(), 'dragend', function(e) { + addUndo(); + }); + 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) + var keyCode = e.keyCode; + + if ((keyCode >= 33 && keyCode <= 36) || (keyCode >= 37 && keyCode <= 40) || keyCode == 13 || keyCode == 45 || e.ctrlKey) addUndo(); }); t.onKeyDown.add(function(ed, e) { - var rng, tmpRng, parent, offset; + var keyCode = e.keyCode, sel; - // 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 (keyCode == 8) { + sel = t.getDoc().selection; - if (rng.parentElement) { - parent = rng.parentElement(); + // Fix IE control + backspace browser bug + if (sel && sel.createRange && sel.createRange().item) { + t.undoManager.beforeChange(); + ed.dom.remove(sel.createRange().item(0)); + addUndo(); - // 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(); - } - - // Delete contents - t.selection.getSel().clear(); - - // 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 - } - - // Restore the caret position - tmpRng.moveToElementText(parent); - tmpRng.collapse(); - tmpRng.move('character', offset); - tmpRng.select(); - } - - // Block the default delete behavior since it might be broken - e.preventDefault(); - return; + return Event.cancel(e); } } - // Is caracter positon keys - if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45) { + // 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 (t.undoManager.typing) addUndo(); return; } - if (!t.undoManager.typing) { + // 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(); - t.undoManager.typing = 1; } }); @@ -11013,6 +13829,21 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { } }, + _refreshContentEditable : function() { + var self = this, body, parent; + + // 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; + + parent.removeChild(body); + parent.appendChild(body); + + body.focus(); + } + }, + _isHidden : function() { var s; @@ -11022,57 +13853,6 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // Weird, wheres that cursor selection? s = this.selection.getSel(); return (!s || !s.rangeCount || s.rangeCount == 0); - }, - - // Fix for bug #1867292 - _fixNesting : function(s) { - var d = [], i; - - s = s.replace(/<(\/)?([^\s>]+)[^>]*?>/g, function(a, b, c) { - var e; - - // Handle end element - if (b === '/') { - if (!d.length) - return ''; - - 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; - } - } - - return ''; - } else { - d.pop(); - - 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; - - // Ignore closed ones - if (/\/>$/.test(a)) - return a; - - d.push({tag : c}); // Push start element - } - - return a; - }); - - // End all open tags - for (i=d.length - 1; i>=0; i--) - s += ''; - - return s; } }); })(tinymce); @@ -11086,6 +13866,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { selection = editor.selection, commands = {state: {}, exec : {}, value : {}}, settings = editor.settings, + formatter = editor.formatter, bookmark; function execCommand(command, ui, value) { @@ -11151,11 +13932,11 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }; function isFormatMatch(name) { - return editor.formatter.match(name); + return formatter.match(name); }; function toggleFormat(name, value) { - editor.formatter.toggle(name, value ? {value : value} : undefined); + formatter.toggle(name, value ? {value : value} : undefined); }; function storeSelection(type) { @@ -11215,10 +13996,11 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // Remove all other alignments first each('left,center,right,full'.split(','), function(name) { if (align != name) - editor.formatter.remove('align' + name); + formatter.remove('align' + name); }); toggleFormat('align' + align); + execCommand('mceRepaint'); }, // Override list commands to fix WebKit bug @@ -11244,7 +14026,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }, // Override commands to use the text formatter engine - 'Bold,Italic,Underline,Strikethrough' : function(command) { + 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript' : function(command) { toggleFormat(command); }, @@ -11271,7 +14053,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }, RemoveFormat : function(command) { - editor.formatter.remove(command); + formatter.remove(command); }, mceBlockQuote : function(command) { @@ -11279,7 +14061,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }, FormatBlock : function(command, ui, value) { - return toggleFormat(value); + return toggleFormat(value || 'p'); }, mceCleanup : function() { @@ -11317,12 +14099,140 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }, mceInsertContent : function(command, ui, value) { - selection.setContent(value); + var parser, serializer, parentNode, rootNode, fragment, args, + marker, nodeRect, viewPortRect, rng, node, node2, bookmarkHtml, viewportBodyElement; + + //selection.normalize(); + + // Setup parser and serializer + parser = editor.parser; + serializer = new tinymce.html.Serializer({}, editor.schema); + bookmarkHtml = '\uFEFF'; + + // Run beforeSetContent handlers on the HTML to be inserted + args = {content: value, format: 'html'}; + selection.onBeforeSetContent.dispatch(selection, args); + value = args.content; + + // Add caret at end of contents if it's missing + if (value.indexOf('{$caret}') == -1) + value += '{$caret}'; + + // Replace the caret marker with a span bookmark element + value = value.replace(/\{\$caret\}/, bookmarkHtml); + + // Insert node maker where we will insert the new HTML and get it's parent + if (!selection.isCollapsed()) + editor.getDoc().execCommand('Delete', false, null); + + parentNode = selection.getNode(); + + // Parse the fragment within the context of the parent node + args = {context : parentNode.nodeName.toLowerCase()}; + fragment = parser.parse(value, args); + + // Move the caret to a more suitable location + node = fragment.lastChild; + if (node.attr('id') == 'mce_marker') { + marker = node; + + 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 parser says valid we can insert the contents into that parent + if (!args.invalid) { + value = serializer.serialize(fragment); + + // 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 bookmark node and get the parent + selection.setContent(bookmarkHtml); + parentNode = editor.selection.getNode(); + rootNode = editor.getBody(); + + // Opera will return the document node when selection is in root + if (parentNode.nodeType == 9) + parentNode = node = rootNode; + else + node = parentNode; + + // Find the ancestor just before the root element + while (node !== rootNode) { + parentNode = node; + node = node.parentNode; + } + + // 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); + } + + marker = dom.get('mce_marker'); + + // 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()); + + // 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; + } + + // Move selection before marker and remove it + rng = dom.createRng(); + + // 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); + } + + // Remove the marker node and set the new range + dom.remove(marker); + selection.setRng(rng); + + // Dispatch after event and add any visual elements needed + selection.onSetContent.dispatch(selection, args); + editor.addVisual(); }, mceInsertRawHTML : function(command, ui, value) { selection.setContent('tiny_mce_marker'); - editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, value)); + editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, function() { return value })); }, mceSetContent : function(command, ui, value) { @@ -11338,6 +14248,11 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { intentValue = parseInt(intentValue); 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); @@ -11368,11 +14283,11 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }, mceToggleFormat : function(command, ui, value) { - editor.formatter.toggle(value); + formatter.toggle(value); }, InsertHorizontalRule : function() { - selection.setContent('
'); + editor.execCommand('mceInsertContent', false, '
'); }, mceToggleVisualAid : function() { @@ -11381,33 +14296,37 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }, mceReplaceContent : function(command, ui, value) { - selection.setContent(value.replace(/\{\$selection\}/g, selection.getContent({format : 'text'}))); + editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, selection.getContent({format : 'text'}))); }, mceInsertLink : function(command, ui, value) { - var link = dom.getParent(selection.getNode(), 'a'); + var anchor; - if (tinymce.is(value, 'string')) + if (typeof(value) == 'string') value = {href : value}; - 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); + anchor = dom.getParent(selection.getNode(), 'a'); + + // 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'); + + // Remove existing links if there could be child links or that the href isn't specified + if (!anchor || !value.href) { + formatter.remove('link'); + } + + // Apply new link to selection + if (value.href) { + formatter.apply('link', value, anchor); } }, - + selectAll : function() { - var root = dom.getRoot(); - var rng = dom.createRng(); + var root = dom.getRoot(), rng = dom.createRng(); + rng.setStart(root, 0); rng.setEnd(root, root.childNodes.length); + editor.selection.setRng(rng); } }); @@ -11416,10 +14335,17 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { addCommands({ // Override justify commands 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull' : function(command) { - return isFormatMatch('align' + command.substring(7)); + 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' : function(command) { + 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript' : function(command) { return isFormatMatch(command); }, @@ -11476,23 +14402,31 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { } }; })(tinymce); + (function(tinymce) { var Dispatcher = tinymce.util.Dispatcher; tinymce.UndoManager = function(editor) { - var self, index = 0, data = []; + var self, index = 0, data = [], beforeBookmark; function getContent() { - return tinymce.trim(editor.getContent({format : 'raw', no_events : 1})); + // 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 self = { - typing : 0, + typing : false, onAdd : new Dispatcher(self), + onUndo : new Dispatcher(self), + onRedo : new Dispatcher(self), + beforeChange : function() { + beforeBookmark = editor.selection.getBookmark(2, true); + }, + add : function(level) { var i, settings = editor.settings, lastLevel; @@ -11501,10 +14435,12 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { // Add undo level if needed lastLevel = data[index]; - if (lastLevel && lastLevel.content == level.content) { - if (index > 0 || data.length == 1) - return null; - } + if (lastLevel && lastLevel.content == level.content) + return null; + + // Set before bookmark on previous level + if (data[index]) + data[index].beforeBookmark = beforeBookmark; // Time to compress if (settings.custom_undo_redo_levels) { @@ -11521,13 +14457,8 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { level.bookmark = editor.selection.getBookmark(2, true); // Crop array if needed - if (index < data.length - 1) { - // Treat first level as initial - if (index == 0) - data = []; - else - data.length = index + 1; - } + if (index < data.length - 1) + data.length = index + 1; data.push(level); index = data.length - 1; @@ -11543,14 +14474,14 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if (self.typing) { self.add(); - self.typing = 0; + self.typing = false; } if (index > 0) { level = data[--index]; editor.setContent(level.content, {format : 'raw'}); - editor.selection.moveToBookmark(level.bookmark); + editor.selection.moveToBookmark(level.beforeBookmark); self.onUndo.dispatch(self, level); } @@ -11575,758 +14506,110 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { clear : function() { data = []; - index = self.typing = 0; + index = 0; + self.typing = false; }, hasUndo : function() { - return index > 0 || self.typing; + return index > 0 || this.typing; }, hasRedo : function() { - return index < data.length - 1; + return index < data.length - 1 && !this.typing; } }; }; })(tinymce); -(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; +tinymce.ForceBlocks = function(editor) { + var settings = editor.settings, dom = editor.dom, selection = editor.selection, blockElements = editor.schema.getBlockElements(); - function cloneFormats(node) { - var clone, temp, inner; + // 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; - 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); - } + if (!node || node.nodeType !== 1 || !settings.forced_root_block) + return; - clone.removeAttribute('id'); - } - } while (node = node.parentNode); + // Check if node is wrapped in block + while (node != rootNode) { + if (blockElements[node.nodeName]) + return; - if (clone) - return {wrapper : clone, inner : inner}; - }; - - // Checks if the selection/caret is at the end of the specified block element - function isAtEnd(rng, par) { - var rng2 = par.ownerDocument.createRange(); - - rng2.setStart(rng.endContainer, rng.endOffset); - rng2.setEndAfter(par); - - // 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; - }; - - function isEmpty(n) { - n = n.innerHTML; - - n = n.replace(/<(img|hr|table|input|select|textarea)[ \>]/gi, '-'); // Keep these convert them to - chars - n = n.replace(/<[^>]+>/g, ''); // Remove all tags - - return n.replace(/[ \u00a0\t\r\n]+/g, '') == ''; - }; - - function splitList(selection, dom, li) { - var listBlock, block; - - if (isEmpty(li)) { - listBlock = dom.getParent(li, 'ul,ol'); - - if (!dom.getParent(listBlock.parentNode, 'ul,ol')) { - dom.split(listBlock, li); - block = dom.create('p', 0, '
'); - dom.replace(block, li); - selection.select(block, 1); + node = node.parentNode; } - return FALSE; - } - - return TRUE; - }; - - tinymce.create('tinymce.ForceBlocks', { - ForceBlocks : function(ed) { - var t = this, s = ed.settings, elm; - - t.editor = ed; - t.dom = ed.dom; - elm = (s.forced_root_block || 'p').toLowerCase(); - s.element = elm.toUpperCase(); - - ed.onPreInit.add(t.setup, t); - - 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'); - - function padd(ed, o) { - if (isOpera) - o.content = o.content.replace(t.reOpera, ''); - - o.content = o.content.replace(t.rePadd, '<' + elm + '$1$2$3$4$5$6>\u00a0'); - - 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'); - }; - - ed.onBeforeSetContent.add(padd); - ed.onPostProcess.add(padd); - - if (s.forced_root_block) { - ed.onInit.add(t.forceRoots, t); - ed.onSetContent.add(t.forceRoots, t); - ed.onBeforeGetContent.add(t.forceRoots, t); - } - }, - - setup : function() { - var t = this, ed = t.editor, s = ed.settings, dom = ed.dom, selection = ed.selection; - - // 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); - } - - 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); - } - }); - } - } - - 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 - }); - - ed.onKeyPress.add(function(ed, e) { - t._previousFormats = 0; - - // 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()); - }); - - 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; - - // Parent is an empty block - if (!parent.hasChildNodes()) { - parent = dom.getParent(parent, dom.isBlock); - - 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); - } - } - } - }); - } - - if (isGecko) { - ed.onKeyDown.add(function(ed, e) { - if ((e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) - t.backspaceDelete(e, e.keyCode == 8); - }); - } - } - - // 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; - - // Insert BR element - rng.insertNode(br = dom.create('br')); - - // Place caret after BR - rng.setStartAfter(br); - rng.setEndAfter(br); - selection.setRng(rng); - - // 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); - } - - // 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); - - // 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); - }; - - 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); - } - }); - } - - // 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 - } - }); - } - }); - }); - - // 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; - }); - - ed.onKeyUp.add(function(ed, e) { - var bl, n = selection.getNode(), b = ed.getBody(); - - 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'); - - if (bl) { - dom.rename(bl, s.element); - ed.nodeChanged(); - } - } - }); - } - } - }, - - find : function(n, t, s) { - var ed = this.editor, w = ed.getDoc().createTreeWalker(n, 4, null, FALSE), c = -1; - - while (n = w.nextNode()) { - c++; - - // Index by node - if (t == 0 && n == s) - return c; - - // Node by index - if (t == 1 && c == s) - return n; - } - - return -1; - }, - - 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; - - // Fix for bug #1863847 - //if (e && e.keyCode == 13) - // return TRUE; - - // Wrap non blocks into blocks - for (i = nl.length - 1; i >= 0; i--) { - nx = nl[i]; - - // Ignore internal elements - if (nx.nodeType === 1 && nx.getAttribute('_mce_type')) { - bl = null; - continue; - } - - // 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; - } - - tr = d.body.createTextRange(); - tr.moveToElementText(b); - tr.collapse(1); - bp = tr.move('character', c) * -1; - - tr = r.duplicate(); - tr.collapse(1); - sp = tr.move('character', c) * -1; - - tr = r.duplicate(); - tr.collapse(0); - le = (tr.move('character', c) * -1) - sp; - - si = sp - bp; - ei = le; - } - } - - // 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 - } - - // Restore selection - if (si != -2) { - if (!isIE) { - bl = b.getElementsByTagName(ed.settings.element)[0]; - r = d.createRange(); - - // Select last location or generated block - if (si != -1) - r.setStart(t.find(b, 1, si), so); - else - r.setStart(bl, 0); - - // Select last location or generated block - if (ei != -1) - r.setEnd(t.find(b, 1, ei), eo); - else - r.setEnd(bl, 0); - - 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 - } - } - } 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); - } - }, - - getParentBlock : function(n) { - var d = this.dom; - - return d.getParent(n, d.isBlock); - }, - - 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; - - // 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; - - // Setup before range - rb = d.createRange(); - - // 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); - - // Setup after range - ra = d.createRange(); - - // 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); - - // 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; - - // 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 - - // 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, '
'); - } - - // Move caret into the last one - r = d.createRange(); - r.selectNodeContents(aft); - r.collapse(1); - ed.selection.setRng(r); - - return FALSE; - } - - // 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); - } - - // 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; - - // Get start and end blocks - sb = t.getParentBlock(sn); - eb = t.getParentBlock(en); - bn = sb ? sb.nodeName : se.element; // Get block name to create - - // 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 TRUE; - } - - // 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; - } - - // 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; - } - - // 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; - } - - // 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); - - // Remove id from after clone - aft.removeAttribute('id'); - - // 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); - - // 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; - - sc = n; - } while ((n = n.previousSibling ? n.previousSibling : n.parentNode)); - - // 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; - - ec = n; - } while ((n = n.nextSibling ? n.nextSibling : n.parentNode)); - - // Place first chop part into before block element - if (sc.nodeName == bn) - rb.setStart(sc, 0); - else - rb.setStartBefore(sc); - - rb.setEnd(sn, so); - bef.appendChild(rb.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari - - // Place secnd chop part within new block element - try { - ra.setEndAfter(ec); - } catch(ex) { - //console.debug(s.focusNode, s.focusOffset); - } - - ra.setStart(en, eo); - aft.appendChild(ra.cloneContents() || d.createTextNode('')); // Empty text node needed for Safari - - // Create range around everything - r = d.createRange(); - if (!sc.previousSibling && sc.parentNode.nodeName == bn) { - r.setStartBefore(sc.parentNode); + // Get current selection + rng = selection.getRng(); + if (rng.setStart) { + startContainer = rng.startContainer; + startOffset = rng.startOffset; + endContainer = rng.endContainer; + endOffset = rng.endOffset; } else { - if (rb.startContainer.nodeName == bn && rb.startOffset == 0) - r.setStartBefore(rb.startContainer); - else - r.setStart(rb.startContainer, rb.startOffset); - } - - if (!ec.nextSibling && ec.parentNode.nodeName == bn) - r.setEndAfter(ec.parentNode); - else - r.setEnd(ra.endContainer, ra.endOffset); - - // Delete and replace it with new block elements - r.deleteContents(); - - if (isOpera) - ed.getWin().scrollTo(0, vp.y); - - // Never wrap blocks in blocks - if (bef.firstChild && bef.firstChild.nodeName == bn) - bef.innerHTML = bef.firstChild.innerHTML; - - if (aft.firstChild && aft.firstChild.nodeName == bn) - aft.innerHTML = aft.firstChild.innerHTML; - - // Padd empty blocks - if (isEmpty(bef)) - bef.innerHTML = '
'; - - function appendStyles(e, en) { - var nl = [], nn, n, i; - - e.innerHTML = ''; - - // 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); + // Force control range into text range + if (rng.item) { + node = rng.item(0); + rng = editor.getDoc().body.createTextRange(); + rng.moveToElementText(node); } - // Append style elements to aft - if (nl.length > 0) { - for (i = nl.length - 1, nn = e; i >= 0; i--) - nn = nn.appendChild(nl[i]); + tmpRng = rng.duplicate(); + tmpRng.collapse(true); + startOffset = tmpRng.move('character', offset) * -1; - // 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 - }; + if (!tmpRng.collapsed) { + tmpRng = rng.duplicate(); + tmpRng.collapse(false); + endOffset = (tmpRng.move('character', offset) * -1) - startOffset; + } + } - // Fill empty afterblook with current style - if (isEmpty(aft)) - car = appendStyles(aft, en); + // 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); + } - // Opera needs this one backwards for older versions - if (isOpera && parseFloat(opera.version()) < 9.5) { - r.insertNode(bef); - r.insertNode(aft); + tempNode = node; + node = node.nextSibling; + rootBlockNode.appendChild(tempNode); + } else { + rootBlockNode = null; + node = node.nextSibling; + } + } + + if (rng.setStart) { + rng.setStart(startContainer, startOffset); + rng.setEnd(endContainer, endOffset); + selection.setRng(rng); } else { - r.insertNode(aft); - r.insertNode(bef); - } + try { + rng = editor.getDoc().body.createTextRange(); + rng.moveToElementText(rootNode); + rng.collapse(true); + rng.moveStart('character', startOffset); - // Normalize - aft.normalize(); - bef.normalize(); + if (endOffset > 0) + rng.moveEnd('character', endOffset); - function first(n) { - return d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, FALSE).nextNode() || n; - }; - - // 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); - - // 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; - - // 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)); - } - - 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; - - // 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); - - // 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; - } + rng.select(); + } catch (ex) { + // Ignore } } - // 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)) ; + editor.nodeChanged(); + }; - 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; - - // 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); - - // Remove the target container - ed.dom.remove(sc); - } - - return Event.cancel(e); - } - } - } - } - }); -})(tinymce); + 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; + ed.dom.getParent(node, function(n) { + decoration = ed.dom.getStyle(n, 'text-decoration'); + return decoration && decoration !== 'none'; + }); - // Move startContainer/startOffset in to a suitable node - if (container.nodeType == 1 || container.nodeValue === "") { - container = container.nodeType == 1 ? container.childNodes[offset] : container; + return decoration; + }; - // 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; - } - } - } + 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; + } + } + }; - function applyRngStyle(rng) { - var newWrappers = [], wrapName, wrapElm; + // 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, 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; + function findParentContainer(start) { + var container, parent, child, sibling, siblingName; - root = root || dom.getRoot(); + container = parent = start ? startContainer : endContainer; + siblingName = start ? 'previousSibling' : 'nextSibling'; + root = dom.getRoot(); + + // 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 (;;) { - // Check if we can move up are we at root level or body level - parent = container.parentNode; + // Stop expanding on block elements + if (!format[0].block_expand && isBlock(parent)) + return parent; - // Stop expanding on block elements or root depending on format - if (parent == root || (!format[0].block_expand && isBlock(parent))) - return container; - - for (sibling = parent[child_name]; sibling && sibling != container; sibling = sibling[sibling_name]) { - if (sibling.nodeType == 1 && !isBookmarkNode(sibling)) - return container; - - if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling)) - return container; + // Walk left/right + for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) { + if (!isBookmarkNode(sibling) && !isWhiteSpaceNode(sibling)) { + return parent; + } } - container = container.parentNode; + // Check if we can move up are we at root level or body level + if (parent.parentNode == root) { + container = parent; + break; + } + + 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; - if (isBookmarkNode(startContainer)) + while (parent) { + if (parent.nodeType === 1 && getContentEditable(parent)) { + return getContentEditable(parent) === "false" ? parent : node; + } + + parent = parent.parentNode; + } + + return node; + }; + + // 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) { @@ -13984,7 +16578,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { if (prev && next) { function findElementSibling(node, sibling_name) { for (sibling = node; sibling; sibling = sibling[sibling_name]) { - if (sibling.nodeType == 3 && !isWhiteSpaceNode(sibling)) + if (sibling.nodeType == 3 && sibling.nodeValue.length !== 0) return node; if (sibling.nodeType == 1 && !isBookmarkNode(sibling)) @@ -14027,7 +16621,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { }; function getContainer(rng, start) { - var container, offset, lastIdx; + var container, offset, lastIdx, walker; container = rng[start ? 'startContainer' : 'endContainer']; offset = rng[start ? 'startOffset' : 'endOffset']; @@ -14041,102 +16635,312 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { 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 i, currentPendingFormats = pendingFormats[type], - otherPendingFormats = pendingFormats[type == 'apply' ? 'remove' : 'apply']; + var caretContainerId = '_mce_caret', debug = ed.settings.caret_debug; - function hasPending() { - return pendingFormats.apply.length || pendingFormats.remove.length; + // 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 resetPending() { - pendingFormats.apply = []; - pendingFormats.remove = []; + 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; + } }; - function perform(caret_node) { - // Apply pending formats - each(pendingFormats.apply.reverse(), function(item) { - apply(item.name, item.vars, caret_node); - }); + // Finds the first text node in the specified node + function findFirstTextNode(node) { + var walker; - // Remove pending formats - each(pendingFormats.remove.reverse(), function(item) { - remove(item.name, item.vars, caret_node); - }); + if (node) { + walker = new TreeWalker(node, node); - dom.remove(caret_node, 1); - resetPending(); + for (node = walker.current(); node; node = walker.next()) { + if (node.nodeType === 3) { + return node; + } + } + } }; - // Check if it already exists then ignore it - for (i = currentPendingFormats.length - 1; i >= 0; i--) { - if (currentPendingFormats[i].name == name) + // 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(); + + // Collapse bookmark range (WebKit) + rng.collapse(true); + + // Expand the range to the closest word and split it at those points + rng = expandRng(rng, get(name)); + rng = rangeUtils.split(rng); + + // Apply the format to the range + apply(name, vars, rng); + + // Move selection back to caret position + selection.moveToBookmark(bookmark); + } else { + if (!caretContainer || textNode.nodeValue !== INVISIBLE_CHAR) { + caretContainer = createCaretContainer(true); + textNode = caretContainer.firstChild; + + rng.insertNode(caretContainer); + offset = 1; + + apply(name, vars, caretContainer); + } else { + apply(name, vars, caretContainer); + } + + // Move selection to text node + selection.setCursorLocation(textNode, offset); + } + }; + + function removeCaretFormat() { + var rng = selection.getRng(true), container, offset, bookmark, + hasContentAfter, node, formatNode, parents = [], i, caretContainer; + + container = rng.startContainer; + offset = rng.startOffset; + node = container; + + if (container.nodeType == 3) { + if (offset != container.nodeValue.length || container.nodeValue === INVISIBLE_CHAR) { + hasContentAfter = true; + } + + node = node.parentNode; + } + + while (node) { + if (matchNode(node, name, vars)) { + formatNode = node; + break; + } + + if (node.nextSibling) { + hasContentAfter = true; + } + + parents.push(node); + node = node.parentNode; + } + + // Node doesn't have the specified format + if (!formatNode) { return; - } + } - currentPendingFormats.push({name : name, vars : vars}); + // Is there contents after the caret then remove the format on the element + if (hasContentAfter) { + // Get bookmark of caret position + bookmark = selection.getBookmark(); - // 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); - } + // Collapse bookmark range (WebKit) + rng.collapse(true); - // Pending apply or remove formats - if (hasPending()) { - ed.getDoc().execCommand('FontName', false, 'mceinline'); - pendingFormats.lastRng = selection.getRng(); + // Expand the range to the closest word and split it at those points + rng = expandRng(rng, get(name), true); + rng = rangeUtils.split(rng); - // IE will convert the current word - each(dom.select('font,span'), function(node) { - var bookmark; + // Remove the format from the range + remove(name, vars, rng); - if (isCaretNode(node)) { - bookmark = selection.getBookmark(); - perform(node); - selection.moveToBookmark(bookmark); - ed.nodeChanged(); + // Move selection back to caret position + selection.moveToBookmark(bookmark); + } else { + caretContainer = createCaretContainer(); + + node = caretContainer; + for (i = parents.length - 1; i >= 0; i--) { + node.appendChild(dom.clone(parents[i], false)); + node = node.firstChild; + } + + // Insert invisible character into inner most format element + node.appendChild(dom.doc.createTextNode(INVISIBLE_CHAR)); + node = node.firstChild; + + // Insert caret container after the formated node + dom.insertAfter(caretContainer, formatNode); + + // Move selection to text node + selection.setCursorLocation(node, 1); + } + }; + + // 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'); + } } }); - // 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(); - } - }); + // Remove caret container on mouse up and on key up + tinymce.each('onMouseUp onKeyUp'.split(' '), function(name) { + ed[name].addToTop(function() { + removeCaretContainer(); }); + }); + + // 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())); + } + }); + + self._hasCaretEvents = true; + } + + // Do apply or remove caret format + if (type == "apply") { + applyCaretFormat(); + } else { + removeCaretFormat(); + } + }; + + function moveStart(rng) { + var container = rng.startContainer, + offset = rng.startOffset, + walker, node, nodes, tmpNode; + + // 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; + } + + // 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); + + return; + } } } }; @@ -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 fd943c0f87..4b920f3d1a --- 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 825d4c1433..458ec86da6 --- 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 a6fcf97015..27cbfab811 --- 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: [PATCH 069/187] 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 0000000000..dca70e1c39 --- /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 From cf17606d0f6200296b1e6d67f9ae3fb797e0df69 Mon Sep 17 00:00:00 2001 From: tony baldwin Date: Wed, 21 Mar 2012 01:33:48 -0400 Subject: [PATCH 070/187] 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 0000000000000000000000000000000000000000..ab043e8806fcdcc3e94dc35ef9988148cde521bc GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/view/theme/facepark.tar.gz b/view/theme/facepark.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..0dca01cfe927f9cb5a8d0abf37d25339b2ef8882 GIT binary patch literal 112640 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 yFffCG84S!|ULJ%Z3brsR%R9! z7G_o;!OF_Y#?HgR4g~z%+?+gu{6a#4{DOkQVlv{wB2uD)f)a`nQnIr0^76vsN-9cn zDl&5Nav(z(fm+$w*!eg(_~b+cMdU~Z{|_(-axfGyFfubLF)#@-G7B>PKf)jmaz7&j zGGJk52TF(upo=pIC4w}7)T3%(WMT$Nhzg% f9U_4e8jYbYT*|B>4vQSR6atx6%@A>8_ +
+ + + + + + + +
+ $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 0000000000..48930b48ab --- /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 0000000000..43bb1dd470 --- /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 0000000000000000000000000000000000000000..3621f59148398ca78a670fd3134cf6739a346cde GIT binary patch literal 644 zcmex=O1eh6>7?=bZ znFSgDA7Kz-U}QiA96(Vy0R~1^u#GS|Rz_wPHg+ZsArVoayeLo(CIg|_LE2OV85mg@ znb?@&a!g=ttRftofimxJ#@AiifwGDncT6PBEX~+9-4*kc)Yu}|R&RLV;{NEiYL$;|B1MOl^sl}6(k*IS zxlQ=Ur&TVeCAu{?E_j{GzV(nGPg!{Enhk4Zi>()|I$g3fp)objfK9UN%lmbzCnv1m z)ypKed3oBtg3ne#r9Qd-k%`Yrg1HKQ?3PYA^0_nm?dEh3E~(EUGmk9uy>z6-@9C7x zj&oC9Pgl0pOg39|H#>fX?9z9~-bj6ms|$vz@7jA literal 0 HcmV?d00001 diff --git a/view/theme/facepark/file.gif b/view/theme/facepark/file.gif new file mode 100644 index 0000000000000000000000000000000000000000..7885b998d578d4523103e1f5dfbcd8133a7f0fe7 GIT binary patch literal 615 zcmZ?wbhEHb6krfwIF`)7#xKb(Aj2uD!Xs-asNo`J94_scC*xeG;M1rUF;y*cx?0ps z_2^mZF>^Fx=V~P{*G^rfleShbd#hf~c7uYwhQ)`B%8nbAoir{#Wm{SZR^k3H=J{9Jm=JO-lh4xYs&@q)(f6(7rfdp`gC0M@46J&eJQBta!B9h@CjEU zCtit~bTwx3)z~T5;-_9qoOUf~`t_6<*HdTSNS}2hbM}p#xi@p?-O8VTt6<^nlEt^n zm)@yZcDHury{0wy+t)wn*zmAxdicePqc2w-f4Szw%e5z8tv~f@)0x*>&c5Dp;q9)AZ+BmMxA*e9{a4-{xcdI^ z^$$mHd^mpV!>KzTPv8A?_TH!S_doro4N&~a!pOx?&!EEq1fV!!U_a7O-_+dF+SU>! zFQMYz-Xh@HBp)OYX*7MhPg@W#w~=pBQbN3eZz~TMmqFs9_?SQ)4OK-ssb;;n#j&A* zd-rW?(vFUgwX!ldG1S#kSCW^J(hQGrGYyNp5g8E{5^SNR78+&d5VFtD$HU2(Cq_BY z%_KY^(BH??#leP8tzN;;s4bxJl1t}A1>2$$i-f1=+Y}7fSVT6ZoamP|_An?=&^XL3 nuk6%xBcZXWg@e6|V^=`pp=K5i9uWlt2ZjcQz9KFz76xkoO@B#U literal 0 HcmV?d00001 diff --git a/view/theme/facepark/friendika-16.png b/view/theme/facepark/friendika-16.png new file mode 100755 index 0000000000000000000000000000000000000000..1a742ecdc1016e7033e78e37fbecade08fef6d50 GIT binary patch literal 699 zcmV;s0!00ZP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L03itg03ithOzq;@00007bV*G`2ipS$ z1Ro(nX?n5%00KKnL_t(I%Y~9nh>c+s$A9O2-|OCCKFWd^Wr4v0`G~T$Ae$*+uPn_* zN>i3(p=38qlogSkm8^({Bw6{GjAABaW^%t~?!C{)-{PHnXGY=Fd7jgG&iOshbIvh< z7~>{0+YWS*i-5R9!ykJYm^8C*nWTds#wSL8PQKl_s^|#85xggaR>ua%i+2&%+mCmS zR=vWOzU+~t)As4p#L4kD5AGd4P(;qjPDC%)CFD z4PUsl;p&-gsDwOO4#{KD0e%4#7@tT8>#8`{!UYlf2K4mGxgFX4ySG{wPwaz2kD&na ze4BAp>rE7Mz{*nO<9HVusN!9dD50!mGXZ4)uKF43Szf*r&R+h(gVGt)sDbi|_H68< ztJwm9nSlgA1`7@|zyK&Du=d~)Vs(b)qIO6}vPE<8M1r7%NYc(zk^qWkW`6@LNED|A zyE)o_ljs@%l!}QB-B=OXeauk&4*)o{w+9$obaWd-Q{4%BjtfQmCqM#ASpL_vJ)D15 zU@1WPVu>;OaE@oM%AN3H29;my={3v4P=}PYZ*?(;q!>?LmU%w-oKXJRdDiOvo>(u_ z?rTg79YAfmlCrLmNiwqpTEVdCuUNZ{5<;XBk^sq?H2_O`O58bry^1g@b3xTw#0LnC zI=(rNZ`5<0ui@rvxcREQb2j_ +

$title

+ + + + + + diff --git a/view/theme/facepark/head.jpg b/view/theme/facepark/head.jpg new file mode 100755 index 0000000000000000000000000000000000000000..6210b76befb3c2085194217e94e6b6b19d8a5a46 GIT binary patch literal 383 zcmex=LJ%Z3brsRu&*& z29a#6tZW>-931TI90J@toV>yUBEmufLP8?qvXUZVGGanPQp!>?a`K9biXxIK>M9Cq zvI>d{AVU~g+1NPPIrup^_!UHjL={K|{|_(-axl~|urf0$F)#@-G7B>PKf)jhc0V%% z5@2RyWaj`%DF^_4#>m9Zh>#OvViaUy6%7muopcGPLIUV_koOUQiIJIs1tcSgF2f)w z%*gcr76T76BhYqcK?ZwT%fkrCN0aq{`U e%N;)te=@#)^7-|oFLP{6q$G}S_`JRT|4jhcT}_Yx literal 0 HcmV?d00001 diff --git a/view/theme/facepark/jot.tpl b/view/theme/facepark/jot.tpl new file mode 100755 index 0000000000..5fe1f954ee --- /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 0000000000000000000000000000000000000000..892c5e851eedc16e9844061b199e24194cfbc370 GIT binary patch literal 4286 zcmd^C$KVDWfom`T#)dc~R#4I^Rs~r4O)`b{bmUKcqz}))c5uC(7v?)v4a2P)ZNa- z@$&T2)z|&~{r~^}A^8LV00000EC2ui01yBW000GQ;3tk`X`bk)Wk@<6#nZYULKH{p zEx|?+kif!I0vIL|#ZMubBmjWH2OtmxIFVa~6JQ7!1CK!f5W#StOTv&C3=E8h2vI1s n+#cd5;2fT3B_0kF0v!+!GARoV78n&7dMN`JIW(4+BOw4gP{MS* literal 0 HcmV?d00001 diff --git a/view/theme/facepark/nav.tpl b/view/theme/facepark/nav.tpl new file mode 100755 index 0000000000..4675c3e5c2 --- /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 0000000000..b0cb8890c5 --- /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 0000000000000000000000000000000000000000..fde5eb53524ddb12ec5642f33d0d34e14e256193 GIT binary patch literal 459 zcmex=&g!NbMF!_CFb&C4ewz{@Ad$IUGuCLky*A}T7%!!Ir&CL$pu zA}RthgpnDjhlQ1sm6cP3mz!6FWbpq0gCGZk0D}NCqY?v?AS1IN>UQrQGDKoE6M2QoDc3G+f#K-Lz&!r^Qc^B##H0%WszGMCU1W znAE#pe4KOt&Ml**OEy0VoUS}?d3@zno#;NjlP3257arA~E4nCar)(9G=iXTV|0V#| C@@!oI literal 0 HcmV?d00001 diff --git a/view/theme/facepark/profile_vcard.tpl b/view/theme/facepark/profile_vcard.tpl new file mode 100755 index 0000000000..154f22363c --- /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 0000000000..e6a0d6278d --- /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 0000000000..bfad1b7b72 --- /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 0000000000000000000000000000000000000000..994c0d05d730d7302a6de1298ba2e6514b1b2b1f GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^{2DD*GD0X#=CwqOyN|ANrXCgtsO~{o7Kx>VR49a!E110l tt5Y-2UBA!rY|*rqD|U=*i^{m~zTrK5!YQLoO7=6zm!7VEF6*2UngHobgVX>3 literal 0 HcmV?d00001 diff --git a/view/theme/facepark/style.css b/view/theme/facepark/style.css new file mode 100644 index 0000000000..6680a64347 --- /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 0000000000..701fb13491 --- /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 0000000000..2c88fc598e --- /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 0000000000..211906c934 --- /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 +
+ +
+
+ From 4d39b0658f0319aeea659e03db4bad3e77325901 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 20 Mar 2012 22:53:19 -0700 Subject: [PATCH 071/187] 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 7e2acdca57..1302b5a708 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}} From 0dc4c3f48426294dde998d46f47aacd1c9a3f370 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 20 Mar 2012 22:54:20 -0700 Subject: [PATCH 072/187] 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 0000000000..dba289031c --- /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 0000000000..534e79cf49 --- /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 0000000000..e2f7f4db38 --- /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 0000000000..dae16a1c74 --- /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 0000000000..11decf9c45 --- /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 +
+ +
+
+ From 6c7b619b34e60f391087c669732b9efd0344d41c Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 20 Mar 2012 23:57:33 -0700 Subject: [PATCH 073/187] 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 e9f024c274..5de4fcb51a 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 88df73494f..ef760abe0f 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 0000000000..dae16a1c74 --- /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 0000000000..11decf9c45 --- /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 +
+ +
+
+ From c1d6ece98e9c0793432d1046033e0b8cb93e63bb Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 21 Mar 2012 14:56:06 -0700 Subject: [PATCH 080/187] 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 cf459617ea..f8cc3305b1 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']), From 72d0756fa6a6118801ce9623aeacc760cbc93166 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Thu, 22 Mar 2012 04:33:21 +0100 Subject: [PATCH 081/187] 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 6210b76befb3c2085194217e94e6b6b19d8a5a46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmex=LJ%Z3brsRu&*& z29a#6tZW>-931TI90J@toV>yUBEmufLP8?qvXUZVGGanPQp!>?a`K9biXxIK>M9Cq zvI>d{AVU~g+1NPPIrup^_!UHjL={K|{|_(-axl~|urf0$F)#@-G7B>PKf)jhc0V%% z5@2RyWaj`%DF^_4#>m9Zh>#OvViaUy6%7muopcGPLIUV_koOUQiIJIs1tcSgF2f)w z%*gcr76T76BhYqcK?ZwT%fkrCN0aq{`U e%N;)te=@#)^7-|oFLP{6q$G}S_`JRT|4jhcT}_Yx diff --git a/view/theme/diabook-blue/photo_album.tpl b/view/theme/diabook-blue/photo_album.tpl deleted file mode 100755 index 7e6c2f6669..0000000000 --- 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 98ac9c4576..0000000000 --- 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 738dde0e5d..f88c7b9547 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 0000000000000000000000000000000000000000..bc5969ef1afd41f0cfba08f51a0ac17356e60c3f GIT binary patch literal 680 zcmV;Z0$2TsP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyY? z0Rkbx3`0-=00JmUL_t(I%k9#=Z&Fbh2Jq)S_k-KZ1#T4r@^xEjWNEvYK;oo}sYAEM zq3K3oHHI`Dn;1778dLuQ{WDD6YBZ7>gG~UVKm(>GG`&!IODX5LD-CpTF@469_x$qa zJO{YWzYa}0SO#PPD2yS)3@ry>7N9BaIPA^G~#Tg@6?w7#SGGYWL(F?X~!*~Yxj6(t_byC0;WYDIx*FHs_d z>adTk)(4Dl9yubC_du#c$gS6%b&u*`|91x z$4@RRpN%-1CB*@C>%{$Ta1z)#K7_E7NQKj4zt*O4=q0~`rsPNrvfl%4g&-LkJU$cm zX&$EJrE;T%ap>ss9EUpF1!&7d49o=#&NLKCyO=v#L#!RW^i8kxALTa>E5j@Pn;_Hx O0000 literal 0 HcmV?d00001 diff --git a/view/theme/diabook/icons/events.png b/view/theme/diabook/icons/events.png new file mode 100644 index 0000000000000000000000000000000000000000..4a0b3f3f11316265ad45472244094c3fbc27147d GIT binary patch literal 663 zcmV;I0%-k-P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyY? z067OPaYLd200I|DL_t(I%k7j+OB+!XhMzl`8BGSXGpW?p)x_=se$Z*9BgdJX%NV_=NVB&JC#O|bzxpT`0kaZKN~>1mC5 zGbeX}|FE$Sj~^LE^Q>HE-*tH!hP-MvQCgEk5kFj)Q_JFQqrtPwODx&R43Es#EIpBK`&^S4Pxw-o@HaZ<>w-FJ@GLEZN_O`YN&(En>tL$uUl7pLmyN$ZK zVyNTYmWWU+7U_1oc%DbE*JEa8hJL?K6h-JeBKT_*gJ8#T07#OAcDv2^_&Bv%4G|%V zB9v0Yft6Cfhebpbfa5s$zR%Ru6k2Oar4pS^hitP=_j5V0w84ZHw6Fy002ovPDHLkV1n4c9mD_t literal 0 HcmV?d00001 diff --git a/view/theme/diabook/icons/head.jpg b/view/theme/diabook/icons/head.jpg deleted file mode 100644 index 6210b76befb3c2085194217e94e6b6b19d8a5a46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmex=LJ%Z3brsRu&*& z29a#6tZW>-931TI90J@toV>yUBEmufLP8?qvXUZVGGanPQp!>?a`K9biXxIK>M9Cq zvI>d{AVU~g+1NPPIrup^_!UHjL={K|{|_(-axl~|urf0$F)#@-G7B>PKf)jhc0V%% z5@2RyWaj`%DF^_4#>m9Zh>#OvViaUy6%7muopcGPLIUV_koOUQiIJIs1tcSgF2f)w z%*gcr76T76BhYqcK?ZwT%fkrCN0aq{`U e%N;)te=@#)^7-|oFLP{6q$G}S_`JRT|4jhcT}_Yx diff --git a/view/theme/diabook/icons/home.png b/view/theme/diabook/icons/home.png new file mode 100644 index 0000000000000000000000000000000000000000..be47a48fc3638b94385eec044d6373e056890b09 GIT binary patch literal 722 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 diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 437f323faa..ffab5b4c4e 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 9093ac2ca2..39479ce522 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: [PATCH 082/187] 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 fe570075f2..ee6c5c9a73 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 From d81256d7b051d9a76b087feeb64ac79fb4aeff4d Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 21 Mar 2012 21:45:45 -0700 Subject: [PATCH 083/187] support lowercase :-p smilie --- include/text.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/text.php b/include/text.php index 527f3a3442..92a74eb49e 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', From e37c4f69b42cc8a278fb37d1d7cdb374bfd7d156 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Thu, 22 Mar 2012 06:54:18 +0100 Subject: [PATCH 084/187] 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 0000000000000000000000000000000000000000..16713fa5300e9590c8c57c86b81954c7091d78af GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgfk2x#UOQDEjNYe;||Cb$8Zz-I@oo z?2Ro7nV}lBP02imVy%<(4_fv)IT$+1Zku@7+?Pf4oxzb!F0r$oD}B0~{wMv#a#N4h zd*#oytG0ID++)s7y*kHDh;NzBz^nK^Ze53d9L%HZkh=d#Wzp$PzSPKbU0 literal 0 HcmV?d00001 diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index f88c7b9547..d3d3d9eb7a 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 ebe40fd4ea..20d24702b9 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 0000000000000000000000000000000000000000..16713fa5300e9590c8c57c86b81954c7091d78af GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgfk2x#UOQDEjNYe;||Cb$8Zz-I@oo z?2Ro7nV}lBP02imVy%<(4_fv)IT$+1Zku@7+?Pf4oxzb!F0r$oD}B0~{wMv#a#N4h zd*#oytG0ID++)s7y*kHDh;NzBz^nK^Ze53d9L%HZkh=d#Wzp$PzSPKbU0 literal 0 HcmV?d00001 diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index ffab5b4c4e..5841a96b36 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 ebe40fd4ea..20d24702b9 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 }} From ebdf0ee99e517c6718099fda2f1b2288c42e66da Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 22 Mar 2012 01:46:52 -0700 Subject: [PATCH 085/187] 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 910de6f82d..04e16e64dc 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 f058bc59ef..327b482c06 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 baccea3055..d9949b1ef8 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 388b3e2507..6d0e2700bc 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 17e728ba2d..21f41eb01c 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 6a685a6ff0..a69742a949 100755 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@ Date: Thu, 22 Mar 2012 04:07:37 -0700 Subject: [PATCH 086/187] 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 dae16a1c74..dfcd8ca960 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 11decf9c45..abd5967b2a 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 dae16a1c74..dfcd8ca960 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 11decf9c45..abd5967b2a 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 e2db70a14a..9d1dd7d70e 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 420c0e08b9..bad5680c7a 100755 --- a/view/theme/duepuntozero/wallwall_item.tpl +++ b/view/theme/duepuntozero/wallwall_item.tpl @@ -62,7 +62,7 @@ {{ endif }} {{ if $item.filer }} - + {{ endif }}
From 54c08b2b0fcd20522b05162ee782e2c7e09aced9 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Thu, 22 Mar 2012 12:41:51 +0100 Subject: [PATCH 087/187] 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 c990775106..1c19c4b609 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 be942f2619..e12a5fbd71 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 From f208e7af3620cb38eb5617896d788d1be61e6851 Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Thu, 22 Mar 2012 12:43:03 +0100 Subject: [PATCH 088/187] 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 8671587fc4..06c49a7083 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 0000000000..1f9f805313 --- /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 From 29900febb341cfbec6e4445d4ea1c2dc782a521a Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Thu, 22 Mar 2012 12:45:11 +0100 Subject: [PATCH 089/187] removed problem from previous commit --- .htaccess | 3 --- 1 file changed, 3 deletions(-) diff --git a/.htaccess b/.htaccess index 5f9531a7eb..1df5096702 100755 --- a/.htaccess +++ b/.htaccess @@ -5,9 +5,6 @@ AddType audio/ogg .oga Deny from all - -Deny from all - RewriteEngine on From ad9d0dadb3ade47d9ecbe5a0ffea12a8f9c4a96d Mon Sep 17 00:00:00 2001 From: Alexander Kampmann Date: Thu, 22 Mar 2012 12:52:24 +0100 Subject: [PATCH 090/187] 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 688eee2ee2..c82b203863 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 fe33fe429d..0000000000 --- a/util/profiler.php +++ /dev/null @@ -1,21 +0,0 @@ - Date: Thu, 22 Mar 2012 13:03:28 +0100 Subject: [PATCH 091/187] 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 9fc9b7f7ef..04e16e64dc 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 c82b203863..139f0a38b0 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 6231943ec3..a69742a949 100755 --- a/update.php +++ b/update.php @@ -1,6 +1,5 @@ Date: Thu, 22 Mar 2012 13:05:34 +0100 Subject: [PATCH 092/187] 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 13a4014648..327b482c06 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 139f0a38b0..5f6d74adb9 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) { /** From 6df7fae4b57540aa13c9f25976543a8511c61626 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Thu, 22 Mar 2012 13:41:41 +0100 Subject: [PATCH 093/187] 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 1c19c4b609..e158e5ef88 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 e12a5fbd71..f47b47112c 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 }} From 1e86e3fb26271a687721ed6e74055feb38b363fa Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Thu, 22 Mar 2012 13:46:05 +0100 Subject: [PATCH 094/187] 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 e158e5ef88..e771db0682 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 f47b47112c..693ebaba6f 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 }} From 07c5b0af5a09e4628b428da6071d189656d55b32 Mon Sep 17 00:00:00 2001 From: Tobias Diekershoff Date: Thu, 22 Mar 2012 14:09:21 +0100 Subject: [PATCH 095/187] 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 57fd2ef60b..9eee19f4cd 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 301477679a..2f463c96c7 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 27c48f1952..fca65c9076 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 6087e4cd17..8f0abe86df 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; From 40d19d5b8c34cdb2ad6d605e85206bbe57c0be13 Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 22 Mar 2012 06:19:27 -0700 Subject: [PATCH 096/187] 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 c19df0681d..8c50318590 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) ); From 528d795fb68a8ae53cb7b9ad8479aeaa2b1f975f Mon Sep 17 00:00:00 2001 From: friendica Date: Thu, 22 Mar 2012 16:17:10 -0700 Subject: [PATCH 097/187] 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 04e16e64dc..f976ef6368 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 5a297c83ef..b96f88566d 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 92a74eb49e..6f66cef651 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 778ac3dccd..2ddba36aad 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 ee6c5c9a73..fc1c5fd0f4 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) From bf4dd8ad1701c79a3de097b2792fa8ae2fc673b4 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Fri, 23 Mar 2012 02:36:34 +0100 Subject: [PATCH 098/187] 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 ab1cb0f092..61f5f68635 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 0000000000..876276ca85 --- /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 0000000000..db1936e4b7 --- /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 0000000000..a65677696a --- /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 5841a96b36..f7dab9ef0e 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 39479ce522..25808d7e93 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 From 687fa800942156d7020042d044e08b83ca7899f9 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Fri, 23 Mar 2012 07:02:21 +0100 Subject: [PATCH 099/187] 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 3a545f9ba6..918cfc97cb 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 f7dab9ef0e..f0cf04d651 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 { From 7706a8f9d8d71b89c791f31f957496b95b8bb31f Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Fri, 23 Mar 2012 07:28:48 +0100 Subject: [PATCH 100/187] 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 876276ca85..0fc77314dc 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 From c35b9ec24f1449a691afeeb985a41fbaf07b2af1 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Fri, 23 Mar 2012 10:16:11 +0100 Subject: [PATCH 101/187] 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 0fc77314dc..944aec2dd4 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 0000000000..f0cf04d651 --- /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 0000000000..f0cf04d651 --- /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 f0cf04d651..ffab5b4c4e 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 25808d7e93..feb140abb8 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; + From d76b052f90346b49d64aeef9024ab56f8be79f53 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 24 Mar 2012 04:05:21 +0100 Subject: [PATCH 104/187] 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 944aec2dd4..46681998d7 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 0000000000..39b7c57613 --- /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 0000000000..d183c75736 --- /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 0000000000..acf77a6c84 --- /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 0000000000000000000000000000000000000000..61764bf20a35fb21995b667e9a5e25436685a8a7 GIT binary patch literal 1593 zcmV-92FCe`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L03itg03ithOzq;@000HdNkli(P8=f+Y^Mqc1WDr}2vQk{QV2|+A}XxHfQrbj zRH(85xk;}eX_zVqV1$KI$q_6^imXtyL@uc%ce#(b_xvgD%Ji=M&inl5|IcfT zk+rnW~cVMU8ZZk781Awt_EiW&B7^A=0&%>nLiE=zTF-F`Y z?jnYe_L%k%19FkaK*b=2KJJkieXtuAdLjSn+z01=1918BWloebmi#Ot+6 zd};o$s8PJixiZ(PPAQm8s^ZmeF?Cdnz=xsAO(@FBVaF<-N=#qcy`!ug#n_pR3xd8mK3UKSz ze-_?6Il*+Li$cWY2shJyLy_ci0i--vac-j3Y_i#FQ=jYM?zlvBSqVZ}McY#^X#4s< zPrZ8T)J*laOG{I$YhS_Wkj&ZH*u~ zg0LtdDzsyb^#^N5deLU8S3bR>qYE$d)9;;xa7ct;qgt!*(277b#xPPckcsy828~XO z&Tf|&97!b$DHg11?OtGGYg+=U?e;FW|9wMW-EKqoxLKS?X(0y*BOpOH1|D_`U<2JX z0>Y_Jik*j>GN#EOR>D9xAf0TBc#I-GEMjkO5htwFbpvR{@;Ctz7((s+?@NK{Z7L&Gx6%|Jz&slFc^QS+?n-4e$MGa9s z@)DT|VVGq|!YpH4>8tMZq1g3}E2WE5-+6=B`0s%%2t$Q@gDYkQ2pf7d9>A#28t&yA8iJ_tc2^D0F%dsYBRj$WQp zbG7>-v^y!}_aha|%vLyTO)2D=B?j!700?0+-hHjc-#=O4=)(Ji5XT~&teehX+0-9f zzp_KGypG1fd|Ch|LnaPSWxVrUz}F7;X%Y_mmXUV`Vf@T7AWIAk6QlA7vSdy+jQl46 zkUc&El5rLO=peuJ|E1028PG@xrObbgPZm8P?~eyilu?aTv6^6^`ec*hx_BnWmC&u29haG4LlI rGxj`Ruw!GZjr6p}i@z8)_TTs)qHGuE{mw-x00000NkvXXu0mjfEd=xj literal 0 HcmV?d00001 diff --git a/view/theme/diabook/style-network.css b/view/theme/diabook/style-network.css index f0cf04d651..23ab0d4bfd 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 f0cf04d651..a721d62abc 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 b487b8f88a..4600c92fbc 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 20d24702b9..1238340647 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 e02e5a8bec..c5b6b36b54 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 }} From 378762fed21b4145db9a153489fc732a3d110ef5 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 24 Mar 2012 06:17:14 +0100 Subject: [PATCH 105/187] 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 46681998d7..34f8ab0661 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 0000000000000000000000000000000000000000..398bca716dcde03144eaa47f23a099939b507cfd GIT binary patch literal 1257 zcmV=P)%S4p=%D{(;%0d7K?i57Y+oq>~P+igJ=PQ*um(rRQfL4_a!4+W!c;UJ{ z7s*;Hl{);6F(j1202R-GQaC_VDR7*_R+ZLGanCu-rKr*{KwK%Rv~IF&FbZ(rg5!ly zfDOh1K;*5g+z*zp{MD;Of_L}sW$lg~R5dgZudgTn_%VOqzfbPcC7$;7B2!b#b}oSW zK9P{r5|uB&+LjhR=swYazYxK++V;_i=fsZ=@ZQ0Le01Uj zRy-amXvO2yW-=6JXBoe7qZE7)Ux}by=C;6(4p7tDN>h9LGS>4NP3`T}w6@}eXwOqi z$VVrUU}I-znYdFZaJ{30p5|tbN2ByKH*>wC1E)|Zv)kC&iIYf#Iv2olMSP3U1!}Wd zV(E05^Y6B8-y@?Q$uj|N2{w#V&XUypFYL*T6Uo=fUOj>BO{38 zl;*^1YH$Md=jVlX!K;ahl9)1vL^@4S(F#yiUym}TG-rBze92DGjtG8qMfh`Qs4S%$ z_U)q>VDE@vQmHcg-0(0GV(*9qw;{m8{{Aw-kK5X)+O#QfRbxX#yc``Z+21>N4nkHh zfEKTq7E=QcdV6{K>{&_BPA2*6+BKRE9U|G#fGa|*u8vq;-P{}zMy_5h+5g_(j{#r( zd8%(C5lQ&m1p?$nShssOncm)ieP4{p2M_qQuaAjbj!(P00r+vx9i2A%^`BAA`V z9JQ75tx%;Dqj&F;FBaLbb!%t<(KTzR-Li!Z+qaj-bR@!W7cQXi?}7sJM{z)pDiLD9 z?PJF{pUpCr%PpCSg?NAGPIPs3puPZRhcQR3fCvFJV3cC)-aQ6RpXT}KD9RWj@i;4z zNhTjX;_=O!44gW}PbW{3pPVFBTT3*RLL0;6lPCOj>lOrLKz(D|5`M|PK9~y3U7@o; z(HmEQuJ7NE<)fPi)YrBxv1O)oK9Gf{oAMm%1vW+I?h;1? zODSSrfQvDW_ayr-??K}+3>FXpT(7%yfRE7Y_)TD8R{R2R`5zg0lMpWe$6Y$Bl?uSo zF5C@!I98G_{A@l^YTSa|mHtn-7%uP%zSKvG#q%@J;=t{h;&p^wOV)6VxLq6IE TXnjt100000NkvXXu0mjfw0uI$ literal 0 HcmV?d00001 diff --git a/view/theme/diabook/icons/email.png b/view/theme/diabook/icons/email.png new file mode 100644 index 0000000000000000000000000000000000000000..240cef2c3354de7d0934026386ca9f19eefbbe2c GIT binary patch literal 880 zcmV-$1CRWPP)ZOeVvJhlkI(T<$A_7Yc>Rcs!oiWxxU^u$@?W zG#aJ5yE`zmLjY1r6EKU#;*lw`+XZgL0=5$al@DfRrvVf8Mt}+2-`|td>9m!A+6n)e z0(KJs=9>ac08H#s0EO4-bg12K)B5^4jYcDK;wA{>^Lg_5eB}50DG&(ocxh?rpFsiE zYPC25+~snS+v8yjU~2`ox3}r$=7wLsxVT_;i;Ihz3?j%qXIEEO)Mzvq5U$P|2E}5w zwzl}%;cze}#yE_)H=_@Dyj#w{oK*6XtPY0BabHxJIn}g-3`jPcP1@Yt)bq}gkZ(=7Fd&ag zgQ+Bv_)Db#c|1HkXH>olf&M>-BniKA974JT6WvAWcD1AdG*i+^140 zT3ub`4}|sK{vBi+%L+mIV3|w?;>V085$0UygLL#a5MoFj6A@8jzl8dDy{jQ^?AVJV(2eeOiigEKfZ7|3#Jr6 z#bX?g$6xdeKoKXC$te|{qyX$dV1IvK?}V4Mot+&{Df$D=)&S%{yG64>(Y%(SsL|Td zAD*ND{W}~Ezv^*}rUiwo)#}p}WV2aYeni&R)+iQ>O%bT#0!Oi3wz07xDfod-_+I7Z z+xhwVs}$e7|3MVJvX3C}T@iSv{EHfgZ4#lZ{1dQ$3oroPHf)f9@g0Ex0000 zo3r8`Ze3#otZ8V3Vqy4NTsO%|O-n%Edl|gyMb&dLI4bkNqiirg1e&JN*E;9hG_Bya zQryIt${)@`U<^XutEaLo%X!nBhV1}lSe$?eGC);xRsRsw{r1C{o&;j*oc?%1gJf!n z^Da4{o2GCI&so89QPHB}fw(gW2ug!r-}5jrIt)#Xt6|B~G#7NmOh8%BI&)0RbRDn< zOx1@A@Nw~Jlq$2BHX2)P#x+Hh)87odh^B z`5W#(&+$FKl_$8+ElbpZVbB`uOIH;9@X;;gomedc1?NK%Zr$sZ!s&e*ZstWWAjcn+ z;J#8T7~PZoPzBT_)&arZSB{71O3Ep`5Qx8<8M%}q5q&>2k8W_nv<%dtDm%;Md z?Q$B@0qPAQ;iXuW5#F4;H_yYi&Fe!&w{cxPlyXmayXSR3oa}zV*m3bRN|8rLFlT(! zAxL#MocP%cWe1%25fVB{CIfxUAS?hq@N20tT1oIn(C>%>IGM`K89bTF1`ex97l)v` z;7iItSdL$Kz{g%aJS{CReJw*<*KJ`*5Jz)#O^Awo#SKJANySQPBj3vGDi`H|Du;uU z(f5c3S7|5c0ECG!Oal?Xs8;-JS2Rt!&L}pU7em2v7%5Dr5RH$O=aRZgAXPP>_2uXI z=qwJ{*1B*1Y{@&HZf=Xy8Q8P;fO7oVlSd&Tm{T!#6_ zLZwmx^xy6OG5E|(g+2=LL_BtOaG>Aom=`EUm2ulrHCZKi-o~`;OpI<&+kC3sB6yAd zuQtbA47HXmYkhaZX~^YEVN(kfywrQ+@gD&O0NAi&Jcysk6#xJL07*qoM6N<$g32lW A82|tP literal 0 HcmV?d00001 diff --git a/view/theme/diabook/icons/livejournal.png b/view/theme/diabook/icons/livejournal.png new file mode 100644 index 0000000000000000000000000000000000000000..6d27d265eed3e0ce3ad46a089059073427977ef6 GIT binary patch literal 2029 zcmV>pZ>C9HU{^_62blqRAopzkvb-cBu zuu!!XFUVL0M4-t1VhA^hBm@Gvo@C#1gb*dpUVgCO%u5dEJLi4g?|Gm1{k|h$5;lRx z9TqyRqV0x&WRgV{L;R%>urj4pw@G;#sJ=k*}q_hU5&hsg~-0I%B(1lUy# zfX56C;8_gFq+)1d1n^iU!8qq&o|#8l=2|@TM8WQG|63rjh=D*r>+=WTW&Pm;@VH&{ zz)A)ZV`YdA%)-~zk2i9Y&^0B*s2ym$-i)0UWoUEw!II<95g!wUyfh68vy+fzR3kwp z10xh*!R5usLpvJUMo@oun8yrZfc|+Z0I5U-rPvAC;2;kEBn^MLJBq~IESx{O14Dxk z@VgKGfr8Q(&^~14pU+BBqjFmoHfL%fB*1}DD?0ioF}L7`Btiszf&yD}^z=+72FGmJ z_s28OW`LtCT^EbKJ9qGYVKUykHG=YrLVS2=ADlj*v#SpQN=+5d~7V?8S_GIX@ysh!l+!w!U6O%cOXDcOec| z!2cLZ11V@AtWiOTB+P7CBXJ_%s&N7_+t^>9?Ct@iDC3yy9Kd(VjLJSl#31%EF z^qMTVc&m??nTGK>6=tk<4Bz>BF$EqHgkKm8fTfC%Ma81UGLNEkJ@%Jx#20lfIQG{% zl$QS#?;d=eXa&+zQ*i9aF+?=BA(Cj`|Epr8>f(6XO%paUD;QdgjskhLG!uvR72>1Q z4fw382{PvKf*GMq`$1H^5k5{!0Y7g6vMH+r8*_}9G>tB*^e0bWMQ&*c3O46c1M#7~y&Y>a)95)dQc|^; zpZB7!`Vw4%2uxb+Pxx6fmSxd=-^5qVfy%A;?EFnEOg{k6yU*_F!wMvc~P2Et+C8*r>0^pcN z z$X%nw?Y2I6NNK+or84c6{^@e0*=VXJC$ndib0{ptv0|^^|M6SfSt8&;E z+$(%?qku}gqu0b^1_NLg83-LonpmRRi=mN8?0Rtn+-?t=I|lfel_JuLe}&IzStQnH=yBq2mwC)!3LXcrTq;o#25HG^baW5%IonZ` zjjt}>4$k)tk0INj!nx1SV6Ailo3m6@%X|yvohGOl>WpH_v;PUdua>PxC#~KzI{8!p zbR-K^YEpudN(&gDe1xJ6X;kYT{Ma)boVVF#NyUD|Nj>s$7RJ|JIl*UtE*7Fthi}I~J=2IzHc0OgX zVr=3Ozrh%FYP59?g;li4Jc*Xp`(WL6M5|-*&rTBKhux^VHbG@M4-P}CR-*FdLY%E> z!03bpDM|4t-9WJ5_cf1$PkgCyn%nm@9?0$*Kh3^K4-1x(l@nL-|k2x7tIa)+INdU)I{1_n+1 zfkvZ_gOJ|&^4puR6C2z(yuXq*D;v&KUq@QjrjP)54fw;HU`SU{k)ST|Ume@IT9_aW zov*nbym#m~yOFGo#~+TLBr;hZ^NBtX?pSUmT4h9GVtfoNkF5Xm5&ZXW?m5a5s literal 0 HcmV?d00001 diff --git a/view/theme/diabook/icons/posterous.png b/view/theme/diabook/icons/posterous.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e86078e43e9060f752e7d414a323bb39bf6a10 GIT binary patch literal 2783 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 M07*qoM6N<$g69C9qyPW_ literal 0 HcmV?d00001 diff --git a/view/theme/diabook/icons/twitter.png b/view/theme/diabook/icons/twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..b7a687b9f2d60f0b2c2857f1aef7f3e7b1551ce7 GIT binary patch literal 964 zcmV;#13UbQP)h#-vFXjmC}simu)FKloF0*QBY7CXG$nrj50>HMOm^v;x&CmXBeWH?QxZ zAmGe^l5mq7VSK!M=ALuUo3TB9vjY}OELT~^(4W|6xx#W?W!TIK*&=ORH!f(@I0i+urbFW>>M$pEZ!05QAGhLVz62IA+D4yxK-KG7Z=1KSZByU~zFC zq9pYMK+&545C*_x;rrtM)e3TlhaHRfgF%Q6 z$;1oVI-r@{k> zebwjc9Ds!n>-tp+2JAXQUZ-VYx7~)jVF_Wk(74;S@wx<{S_5&);T zK=fK#g;@VkwHm`V0A*Fhfl}?sh#bt|8UVQ2n2C@WOaZZ2-))GX%^k3CLIVoQXL+_h z+8Y8J+B;w~Zk5LadZx5o`>i{$v+)$Z;fT2jd1VYnCtx?RV%jW1D+(q@19<%_-E!>= z61M3uJO`)d9BUa2ynBn=59c9y@CkT0unIYc-` z;}@D+As+~{?4p4iQe1+#^WBZ zGJ&0-$Do%}u+PtdDSNecMD`0@214>fgeCVU`#p(+&HgO}O^}+f=5K$0UsHWCv5Jf}; zjjSq*Gsx0=F7q3IGab<6r8Q6%F}8=Wt8 zI44MxRjdPW9j+wBOH44fZ6=zQ>`Ng7b|^XGW@@F9jJ zpt$&WiOKT$0L15~09>xm2EeRezIcJ0HEUp>JsXc6JwnB$OXz+7UNfcc$jR$|tySqKtt`3*pPdIE6CKg___hK7dF+0lW*J$q39_%TY)oWaVhEc~)> zpE?V6AI@x=o;}mr{&Ds!Qq$A1ckfrc6OtXsCW?P_=jNVEgv%cqRdueHa`Fm^ov{uQMfDBM6R|*jPoOLo%R63XzsC zUyh%4@7C7h-$bBQ5Q>^M4cXb**tv73uAM%8x{{HIa!p)ZoMsy$Jn5BgF?`r;HoRbX0%k^-!%#x2K{|7E3YlciK-R8XhXKiknX)4c(^9Nhq3hY_w{G3?%u%9Q zw#39lL`xuH!V4l~_CcSY5D+0TPZ~NvBN<6Vet#}f+a)b!*pnwu(9zzma}5m*3b~S4 zq?q4V3;ZTw@h*W|imgUA=1FG6h$*qGX)`lplp>ZI4KOrGO=bk=&s+_2+t3#SdFH00IHRc>kLS!gD znVFfomo3RwWmlPfjEg{v^rwB!9EG%9YRUO5X*-sH=u}ixpj%)i!)eq7GX9;s6)s-9 z2$!IhEw7&5-d^0ic@uNz&h;SS7Xh-}w*<^4QL;X8;D9b%B?nq%6W10O7b8;OCCs$% za&tXpC@CpHilD*^>fphH+65FWmygyMm(y4PJ|*BJwV(F^UqDBW98qVKTAi2m6e7de zZgzR381no5#*H|A`t%q{-tBy{Q_X%qc1*9iY{TXl9zvWuDnGx`3bPyF4h3e{R+`fHV zYbrlvG%E@fEz~XBWO}tAM$Mpl8r|j33B|NH0pzXA*Z>J-#L4(V}T00000NkvXXu0mjfget_baseurl($ssl_state); + $aside['$url'] = $url; $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); $a->page['right_aside'] = replace_macros($tpl, $aside); From ba027f174d593e31a24d6bcbaab490639169d312 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 24 Mar 2012 08:13:48 +0100 Subject: [PATCH 106/187] 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 + .../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 | 276 +- 20 files changed, 5444 insertions(+), 95 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 0000000000..13e8271bd8 --- /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 0000000000..db1936e4b7 --- /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 0000000000..39b7c57613 --- /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 0000000000..d183c75736 --- /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 0000000000..acf77a6c84 --- /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 0000000000000000000000000000000000000000..61764bf20a35fb21995b667e9a5e25436685a8a7 GIT binary patch literal 1593 zcmV-92FCe`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L03itg03ithOzq;@000HdNkli(P8=f+Y^Mqc1WDr}2vQk{QV2|+A}XxHfQrbj zRH(85xk;}eX_zVqV1$KI$q_6^imXtyL@uc%ce#(b_xvgD%Ji=M&inl5|IcfT zk+rnW~cVMU8ZZk781Awt_EiW&B7^A=0&%>nLiE=zTF-F`Y z?jnYe_L%k%19FkaK*b=2KJJkieXtuAdLjSn+z01=1918BWloebmi#Ot+6 zd};o$s8PJixiZ(PPAQm8s^ZmeF?Cdnz=xsAO(@FBVaF<-N=#qcy`!ug#n_pR3xd8mK3UKSz ze-_?6Il*+Li$cWY2shJyLy_ci0i--vac-j3Y_i#FQ=jYM?zlvBSqVZ}McY#^X#4s< zPrZ8T)J*laOG{I$YhS_Wkj&ZH*u~ zg0LtdDzsyb^#^N5deLU8S3bR>qYE$d)9;;xa7ct;qgt!*(277b#xPPckcsy828~XO z&Tf|&97!b$DHg11?OtGGYg+=U?e;FW|9wMW-EKqoxLKS?X(0y*BOpOH1|D_`U<2JX z0>Y_Jik*j>GN#EOR>D9xAf0TBc#I-GEMjkO5htwFbpvR{@;Ctz7((s+?@NK{Z7L&Gx6%|Jz&slFc^QS+?n-4e$MGa9s z@)DT|VVGq|!YpH4>8tMZq1g3}E2WE5-+6=B`0s%%2t$Q@gDYkQ2pf7d9>A#28t&yA8iJ_tc2^D0F%dsYBRj$WQp zbG7>-v^y!}_aha|%vLyTO)2D=B?j!700?0+-hHjc-#=O4=)(Ji5XT~&teehX+0-9f zzp_KGypG1fd|Ch|LnaPSWxVrUz}F7;X%Y_mmXUV`Vf@T7AWIAk6QlA7vSdy+jQl46 zkUc&El5rLO=peuJ|E1028PG@xrObbgPZm8P?~eyilu?aTv6^6^`ec*hx_BnWmC&u29haG4LlI rGxj`Ruw!GZjr6p}i@z8)_TTs)qHGuE{mw-x00000NkvXXu0mjfEd=xj literal 0 HcmV?d00001 diff --git a/view/theme/diabook-blue/icons/StatusNet.png b/view/theme/diabook-blue/icons/StatusNet.png new file mode 100644 index 0000000000000000000000000000000000000000..398bca716dcde03144eaa47f23a099939b507cfd GIT binary patch literal 1257 zcmV=P)%S4p=%D{(;%0d7K?i57Y+oq>~P+igJ=PQ*um(rRQfL4_a!4+W!c;UJ{ z7s*;Hl{);6F(j1202R-GQaC_VDR7*_R+ZLGanCu-rKr*{KwK%Rv~IF&FbZ(rg5!ly zfDOh1K;*5g+z*zp{MD;Of_L}sW$lg~R5dgZudgTn_%VOqzfbPcC7$;7B2!b#b}oSW zK9P{r5|uB&+LjhR=swYazYxK++V;_i=fsZ=@ZQ0Le01Uj zRy-amXvO2yW-=6JXBoe7qZE7)Ux}by=C;6(4p7tDN>h9LGS>4NP3`T}w6@}eXwOqi z$VVrUU}I-znYdFZaJ{30p5|tbN2ByKH*>wC1E)|Zv)kC&iIYf#Iv2olMSP3U1!}Wd zV(E05^Y6B8-y@?Q$uj|N2{w#V&XUypFYL*T6Uo=fUOj>BO{38 zl;*^1YH$Md=jVlX!K;ahl9)1vL^@4S(F#yiUym}TG-rBze92DGjtG8qMfh`Qs4S%$ z_U)q>VDE@vQmHcg-0(0GV(*9qw;{m8{{Aw-kK5X)+O#QfRbxX#yc``Z+21>N4nkHh zfEKTq7E=QcdV6{K>{&_BPA2*6+BKRE9U|G#fGa|*u8vq;-P{}zMy_5h+5g_(j{#r( zd8%(C5lQ&m1p?$nShssOncm)ieP4{p2M_qQuaAjbj!(P00r+vx9i2A%^`BAA`V z9JQ75tx%;Dqj&F;FBaLbb!%t<(KTzR-Li!Z+qaj-bR@!W7cQXi?}7sJM{z)pDiLD9 z?PJF{pUpCr%PpCSg?NAGPIPs3puPZRhcQR3fCvFJV3cC)-aQ6RpXT}KD9RWj@i;4z zNhTjX;_=O!44gW}PbW{3pPVFBTT3*RLL0;6lPCOj>lOrLKz(D|5`M|PK9~y3U7@o; z(HmEQuJ7NE<)fPi)YrBxv1O)oK9Gf{oAMm%1vW+I?h;1? zODSSrfQvDW_ayr-??K}+3>FXpT(7%yfRE7Y_)TD8R{R2R`5zg0lMpWe$6Y$Bl?uSo zF5C@!I98G_{A@l^YTSa|mHtn-7%uP%zSKvG#q%@J;=t{h;&p^wOV)6VxLq6IE TXnjt100000NkvXXu0mjfw0uI$ literal 0 HcmV?d00001 diff --git a/view/theme/diabook-blue/icons/email.png b/view/theme/diabook-blue/icons/email.png new file mode 100644 index 0000000000000000000000000000000000000000..240cef2c3354de7d0934026386ca9f19eefbbe2c GIT binary patch literal 880 zcmV-$1CRWPP)ZOeVvJhlkI(T<$A_7Yc>Rcs!oiWxxU^u$@?W zG#aJ5yE`zmLjY1r6EKU#;*lw`+XZgL0=5$al@DfRrvVf8Mt}+2-`|td>9m!A+6n)e z0(KJs=9>ac08H#s0EO4-bg12K)B5^4jYcDK;wA{>^Lg_5eB}50DG&(ocxh?rpFsiE zYPC25+~snS+v8yjU~2`ox3}r$=7wLsxVT_;i;Ihz3?j%qXIEEO)Mzvq5U$P|2E}5w zwzl}%;cze}#yE_)H=_@Dyj#w{oK*6XtPY0BabHxJIn}g-3`jPcP1@Yt)bq}gkZ(=7Fd&ag zgQ+Bv_)Db#c|1HkXH>olf&M>-BniKA974JT6WvAWcD1AdG*i+^140 zT3ub`4}|sK{vBi+%L+mIV3|w?;>V085$0UygLL#a5MoFj6A@8jzl8dDy{jQ^?AVJV(2eeOiigEKfZ7|3#Jr6 z#bX?g$6xdeKoKXC$te|{qyX$dV1IvK?}V4Mot+&{Df$D=)&S%{yG64>(Y%(SsL|Td zAD*ND{W}~Ezv^*}rUiwo)#}p}WV2aYeni&R)+iQ>O%bT#0!Oi3wz07xDfod-_+I7Z z+xhwVs}$e7|3MVJvX3C}T@iSv{EHfgZ4#lZ{1dQ$3oroPHf)f9@g0Ex0000 zo3r8`Ze3#otZ8V3Vqy4NTsO%|O-n%Edl|gyMb&dLI4bkNqiirg1e&JN*E;9hG_Bya zQryIt${)@`U<^XutEaLo%X!nBhV1}lSe$?eGC);xRsRsw{r1C{o&;j*oc?%1gJf!n z^Da4{o2GCI&so89QPHB}fw(gW2ug!r-}5jrIt)#Xt6|B~G#7NmOh8%BI&)0RbRDn< zOx1@A@Nw~Jlq$2BHX2)P#x+Hh)87odh^B z`5W#(&+$FKl_$8+ElbpZVbB`uOIH;9@X;;gomedc1?NK%Zr$sZ!s&e*ZstWWAjcn+ z;J#8T7~PZoPzBT_)&arZSB{71O3Ep`5Qx8<8M%}q5q&>2k8W_nv<%dtDm%;Md z?Q$B@0qPAQ;iXuW5#F4;H_yYi&Fe!&w{cxPlyXmayXSR3oa}zV*m3bRN|8rLFlT(! zAxL#MocP%cWe1%25fVB{CIfxUAS?hq@N20tT1oIn(C>%>IGM`K89bTF1`ex97l)v` z;7iItSdL$Kz{g%aJS{CReJw*<*KJ`*5Jz)#O^Awo#SKJANySQPBj3vGDi`H|Du;uU z(f5c3S7|5c0ECG!Oal?Xs8;-JS2Rt!&L}pU7em2v7%5Dr5RH$O=aRZgAXPP>_2uXI z=qwJ{*1B*1Y{@&HZf=Xy8Q8P;fO7oVlSd&Tm{T!#6_ zLZwmx^xy6OG5E|(g+2=LL_BtOaG>Aom=`EUm2ulrHCZKi-o~`;OpI<&+kC3sB6yAd zuQtbA47HXmYkhaZX~^YEVN(kfywrQ+@gD&O0NAi&Jcysk6#xJL07*qoM6N<$g32lW A82|tP literal 0 HcmV?d00001 diff --git a/view/theme/diabook-blue/icons/livejournal.png b/view/theme/diabook-blue/icons/livejournal.png new file mode 100644 index 0000000000000000000000000000000000000000..6d27d265eed3e0ce3ad46a089059073427977ef6 GIT binary patch literal 2029 zcmV>pZ>C9HU{^_62blqRAopzkvb-cBu zuu!!XFUVL0M4-t1VhA^hBm@Gvo@C#1gb*dpUVgCO%u5dEJLi4g?|Gm1{k|h$5;lRx z9TqyRqV0x&WRgV{L;R%>urj4pw@G;#sJ=k*}q_hU5&hsg~-0I%B(1lUy# zfX56C;8_gFq+)1d1n^iU!8qq&o|#8l=2|@TM8WQG|63rjh=D*r>+=WTW&Pm;@VH&{ zz)A)ZV`YdA%)-~zk2i9Y&^0B*s2ym$-i)0UWoUEw!II<95g!wUyfh68vy+fzR3kwp z10xh*!R5usLpvJUMo@oun8yrZfc|+Z0I5U-rPvAC;2;kEBn^MLJBq~IESx{O14Dxk z@VgKGfr8Q(&^~14pU+BBqjFmoHfL%fB*1}DD?0ioF}L7`Btiszf&yD}^z=+72FGmJ z_s28OW`LtCT^EbKJ9qGYVKUykHG=YrLVS2=ADlj*v#SpQN=+5d~7V?8S_GIX@ysh!l+!w!U6O%cOXDcOec| z!2cLZ11V@AtWiOTB+P7CBXJ_%s&N7_+t^>9?Ct@iDC3yy9Kd(VjLJSl#31%EF z^qMTVc&m??nTGK>6=tk<4Bz>BF$EqHgkKm8fTfC%Ma81UGLNEkJ@%Jx#20lfIQG{% zl$QS#?;d=eXa&+zQ*i9aF+?=BA(Cj`|Epr8>f(6XO%paUD;QdgjskhLG!uvR72>1Q z4fw382{PvKf*GMq`$1H^5k5{!0Y7g6vMH+r8*_}9G>tB*^e0bWMQ&*c3O46c1M#7~y&Y>a)95)dQc|^; zpZB7!`Vw4%2uxb+Pxx6fmSxd=-^5qVfy%A;?EFnEOg{k6yU*_F!wMvc~P2Et+C8*r>0^pcN z z$X%nw?Y2I6NNK+or84c6{^@e0*=VXJC$ndib0{ptv0|^^|M6SfSt8&;E z+$(%?qku}gqu0b^1_NLg83-LonpmRRi=mN8?0Rtn+-?t=I|lfel_JuLe}&IzStQnH=yBq2mwC)!3LXcrTq;o#25HG^baW5%IonZ` zjjt}>4$k)tk0INj!nx1SV6Ailo3m6@%X|yvohGOl>WpH_v;PUdua>PxC#~KzI{8!p zbR-K^YEpudN(&gDe1xJ6X;kYT{Ma)boVVF#NyUD|Nj>s$7RJ|JIl*UtE*7Fthi}I~J=2IzHc0OgX zVr=3Ozrh%FYP59?g;li4Jc*Xp`(WL6M5|-*&rTBKhux^VHbG@M4-P}CR-*FdLY%E> z!03bpDM|4t-9WJ5_cf1$PkgCyn%nm@9?0$*Kh3^K4-1x(l@nL-|k2x7tIa)+INdU)I{1_n+1 zfkvZ_gOJ|&^4puR6C2z(yuXq*D;v&KUq@QjrjP)54fw;HU`SU{k)ST|Ume@IT9_aW zov*nbym#m~yOFGo#~+TLBr;hZ^NBtX?pSUmT4h9GVtfoNkF5Xm5&ZXW?m5a5s literal 0 HcmV?d00001 diff --git a/view/theme/diabook-blue/icons/posterous.png b/view/theme/diabook-blue/icons/posterous.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e86078e43e9060f752e7d414a323bb39bf6a10 GIT binary patch literal 2783 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 M07*qoM6N<$g69C9qyPW_ literal 0 HcmV?d00001 diff --git a/view/theme/diabook-blue/icons/twitter.png b/view/theme/diabook-blue/icons/twitter.png new file mode 100644 index 0000000000000000000000000000000000000000..b7a687b9f2d60f0b2c2857f1aef7f3e7b1551ce7 GIT binary patch literal 964 zcmV;#13UbQP)h#-vFXjmC}simu)FKloF0*QBY7CXG$nrj50>HMOm^v;x&CmXBeWH?QxZ zAmGe^l5mq7VSK!M=ALuUo3TB9vjY}OELT~^(4W|6xx#W?W!TIK*&=ORH!f(@I0i+urbFW>>M$pEZ!05QAGhLVz62IA+D4yxK-KG7Z=1KSZByU~zFC zq9pYMK+&545C*_x;rrtM)e3TlhaHRfgF%Q6 z$;1oVI-r@{k> zebwjc9Ds!n>-tp+2JAXQUZ-VYx7~)jVF_Wk(74;S@wx<{S_5&);T zK=fK#g;@VkwHm`V0A*Fhfl}?sh#bt|8UVQ2n2C@WOaZZ2-))GX%^k3CLIVoQXL+_h z+8Y8J+B;w~Zk5LadZx5o`>i{$v+)$Z;fT2jd1VYnCtx?RV%jW1D+(q@19<%_-E!>= z61M3uJO`)d9BUa2ynBn=59c9y@CkT0unIYc-` z;}@D+As+~{?4p4iQe1+#^WBZ zGJ&0-$Do%}u+PtdDSNecMD`0@214>fgeCVU`#p(+&HgO}O^}+f=5K$0UsHWCv5Jf}; zjjSq*Gsx0=F7q3IGab<6r8Q6%F}8=Wt8 zI44MxRjdPW9j+wBOH44fZ6=zQ>`Ng7b|^XGW@@F9jJ zpt$&WiOKT$0L15~09>xm2EeRezIcJ0HEUp>JsXc6JwnB$OXz+7UNfcc$jR$|tySqKtt`3*pPdIE6CKg___hK7dF+0lW*J$q39_%TY)oWaVhEc~)> zpE?V6AI@x=o;}mr{&Ds!Qq$A1ckfrc6OtXsCW?P_=jNVEgv%cqRdueHa`Fm^ov{uQMfDBM6R|*jPoOLo%R63XzsC zUyh%4@7C7h-$bBQ5Q>^M4cXb**tv73uAM%8x{{HIa!p)ZoMsy$Jn5BgF?`r;HoRbX0%k^-!%#x2K{|7E3YlciK-R8XhXKiknX)4c(^9Nhq3hY_w{G3?%u%9Q zw#39lL`xuH!V4l~_CcSY5D+0TPZ~NvBN<6Vet#}f+a)b!*pnwu(9zzma}5m*3b~S4 zq?q4V3;ZTw@h*W|imgUA=1FG6h$*qGX)`lplp>ZI4KOrGO=bk=&s+_2+t3#SdFH00IHRc>kLS!gD znVFfomo3RwWmlPfjEg{v^rwB!9EG%9YRUO5X*-sH=u}ixpj%)i!)eq7GX9;s6)s-9 z2$!IhEw7&5-d^0ic@uNz&h;SS7Xh-}w*<^4QL;X8;D9b%B?nq%6W10O7b8;OCCs$% za&tXpC@CpHilD*^>fphH+65FWmygyMm(y4PJ|*BJwV(F^UqDBW98qVKTAi2m6e7de zZgzR381no5#*H|A`t%q{-tBy{Q_X%qc1*9iY{TXl9zvWuDnGx`3bPyF4h3e{R+`fHV zYbrlvG%E@fEz~XBWO}tAM$Mpl8r|j33B|NH0pzXA*Z>J-#L4(V}T00000NkvXXu0mjf$ps.usermenu.photos.1 - +
- \ 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 3a545f9ba6..918cfc97cb 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 0000000000..a65677696a --- /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 0000000000..66cfe0c6c4 --- /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 0000000000..5209777b2f --- /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 f9128ea1fd..c2475e8bca 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; +/** + * prints last community activity + */ +function diabook_community_info(){ + $a = get_app(); + //right_aside at networkpages -if(local_user()) { + // 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() + ); - -$r = q("SELECT micro FROM contact WHERE uid=%d AND self=1", intval($a->user['uid'])); + foreach ($r as $rr) { + $author = '' . $rr['liker'] . ''; + $objauthor = '' . $rr['author-name'] . ''; -$userinfo = array( - 'icon' => (count($r) ? $r[0]['micro']: $a->get_baseurl()."/images/default-profile-mm.jpg"), - 'name' => $a->user['username'], - ); + //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); + + } -$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'), "", ""); + + // 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'], + )); -if($is_url = preg_match ("/\bnetwork\b/i", $_SERVER['REQUEST_URI'])) { -$tpl = get_markup_template('profile_side.tpl'); + $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; -$a->page['aside'] .= replace_macros($tpl, array( - '$userinfo' => $userinfo, - '$ps' => $ps, - )); + $tpl = file_get_contents(dirname(__file__).'/communityhome.tpl'); + $a->page['right_aside'] = replace_macros($tpl, $aside); + } + + +//profile_side at networkpages +if ($a->argv[0] === "network"){ + + // USER MENU + 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 = array('usermenu'=>array()); + $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'), "", ""); + $ps['usermenu']['pgroups'] = Array('http://dir.friendika.com/directory/forum', t('Public Groups'), "", ""); + + $tpl = get_markup_template('profile_side.tpl'); + + $a->page['aside'] .= replace_macros($tpl, array( + '$userinfo' => $userinfo, + '$ps' => $ps, + )); + + } + + // COMMUNITY + diabook_community_info(); + + // CUSTOM CSS + $cssFile = $a->get_baseurl($ssl_state)."/view/theme/diabook-blue/style-network.css"; + } + + +//right_aside at profile pages +if ($a->argv[0] === "profile"){ + + // COMMUNITY + diabook_community_info(); + + // CUSTOM CSS + $cssFile = $a->get_baseurl($ssl_state)."/view/theme/diabook-blue/style-profile.css"; + +} + + +// custom css +if (!is_null($cssFile)) $a->page['htmlhead'] .= sprintf('', $cssFile); + //js scripts + $a->page['htmlhead'] .= <<< EOT EOT; + From 8451b22d42d913d5f03b3598ed5772580844ac55 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sat, 24 Mar 2012 08:56:26 +0100 Subject: [PATCH 107/187] 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 13e8271bd8..2a704c9faa 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 acf77a6c84..65c43a2b9f 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 34f8ab0661..78b80ab3bc 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 acf77a6c84..65c43a2b9f 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 { From db5ec588631fe2a50eecb193c8ffdd65283254a4 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 01:33:50 -0700 Subject: [PATCH 108/187] 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 f976ef6368..d2619e8870 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 9ec8c23b59..a5958259c4 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() From 8c4fbc3b4d4c578485e7aeb5d7da4b2446002c3a Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 03:11:45 -0700 Subject: [PATCH 109/187] 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 a5958259c4..5ca0a8c7d6 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() ); From 3aacc119a1d25f7ab4089482bbba7419c1357524 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 04:16:27 -0700 Subject: [PATCH 110/187] 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 1b5af42cd9..84d28a7ecf 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 b96f88566d..49e1ba97aa 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']) From 3ae43c24487450a749942ef4c3c19fa2a61461b6 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 15:53:53 -0700 Subject: [PATCH 111/187] 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 d2619e8870..ea88cd39b6 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 49e1ba97aa..7b9b7315fd 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` ) From d06ddeb1cc6c1bbc7c1f297a917714002839cf85 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 21:26:50 -0700 Subject: [PATCH 112/187] 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 cc71f9757c..1f45d28143 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); } From f1cb28774230cb69b9ce8ee5b32e4e2531aa586a Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 21:50:04 -0700 Subject: [PATCH 113/187] 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 ab92e31ed9..d5dad94484 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); From 8fe77e5b868edab07fbffe35f0f31f2b0e7543d0 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 25 Mar 2012 01:01:59 -0400 Subject: [PATCH 114/187] 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 648811373a41b2328cd76eb596adf0a02a15187a..2035681353fdbafe577d2fe7fa24b650e6e803ef 100644 GIT binary patch literal 30271 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 vZehDAn;Flj3^V literal 29024 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

I=1NS{N(A%g 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 H=0X1l9mi^o diff --git a/view/theme/dispy-dark/icons.svg b/view/theme/dispy-dark/icons.svg index 10f8cc667d..2c4b3abd36 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 9883b2fd72..ba0270ac92 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 c67a88635c..c9ac20c894 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 2f0459bd38507cfb9d8f84247a45f88d00c9d79e..f42330d6503a3777a3eaec361d465ecf21f26fb6 100644 GIT binary patch literal 29977 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 literal 18998 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 diff --git a/view/theme/dispy/icons.svg b/view/theme/dispy/icons.svg index 998e2641f3..7b82b94eaa 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 6547cf986f..9b480385d9 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 c67a88635c..c9ac20c894 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 }} From 1d56224b08fe9781a050143f14c45fd518c5ca93 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 25 Mar 2012 01:12:28 -0400 Subject: [PATCH 115/187] 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 7001361739..ad7780013a 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 26e07b1f76..e3f8f5b457 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 */ From 6780b76b0c0c8f9f250fabe2ea35ee22139ba3d1 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 24 Mar 2012 23:04:18 -0700 Subject: [PATCH 116/187] 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 605a3eb78e..135a9e4e86 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 d4eb9c5ef1..ff9f83e0d4 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') )); From 329a26d62ee65322d0227504b87c3c5ebb1ee480 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sun, 25 Mar 2012 08:47:17 +0200 Subject: [PATCH 117/187] 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 2a704c9faa..5b807c8ad4 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 66cfe0c6c4..85cf23da1b 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 5209777b2f..3671d963eb 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 d3d3d9eb7a..a05a49e677 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 c2475e8bca..6149b12ded 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 78b80ab3bc..c1b395dbef 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 23ab0d4bfd..00856c8d2a 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 a721d62abc..da1a7dd6d4 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 ffab5b4c4e..5154459d3a 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 adf31746fd..29cc64c187 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'); From 2c4312012995aa3411cf5e5dbd0eb934a0801797 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 25 Mar 2012 03:22:16 -0400 Subject: [PATCH 118/187] 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 ++++++++++++++++++ .../theme/dispy-dark/fpostit/friendica-32.png | Bin 0 -> 1593 bytes .../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 0000000000..0659ebe206 --- /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 e69de29bb2..0000000000 diff --git a/view/theme/dispy-dark/fpostit/README b/view/theme/dispy-dark/fpostit/README new file mode 100644 index 0000000000..39b7c57613 --- /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 0000000000..eb593d838e --- /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 0000000000..d00182946c --- /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 0000000000000000000000000000000000000000..61764bf20a35fb21995b667e9a5e25436685a8a7 GIT binary patch literal 1593 zcmV-92FCe`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L03itg03ithOzq;@000HdNkli(P8=f+Y^Mqc1WDr}2vQk{QV2|+A}XxHfQrbj zRH(85xk;}eX_zVqV1$KI$q_6^imXtyL@uc%ce#(b_xvgD%Ji=M&inl5|IcfT zk+rnW~cVMU8ZZk781Awt_EiW&B7^A=0&%>nLiE=zTF-F`Y z?jnYe_L%k%19FkaK*b=2KJJkieXtuAdLjSn+z01=1918BWloebmi#Ot+6 zd};o$s8PJixiZ(PPAQm8s^ZmeF?Cdnz=xsAO(@FBVaF<-N=#qcy`!ug#n_pR3xd8mK3UKSz ze-_?6Il*+Li$cWY2shJyLy_ci0i--vac-j3Y_i#FQ=jYM?zlvBSqVZ}McY#^X#4s< zPrZ8T)J*laOG{I$YhS_Wkj&ZH*u~ zg0LtdDzsyb^#^N5deLU8S3bR>qYE$d)9;;xa7ct;qgt!*(277b#xPPckcsy828~XO z&Tf|&97!b$DHg11?OtGGYg+=U?e;FW|9wMW-EKqoxLKS?X(0y*BOpOH1|D_`U<2JX z0>Y_Jik*j>GN#EOR>D9xAf0TBc#I-GEMjkO5htwFbpvR{@;Ctz7((s+?@NK{Z7L&Gx6%|Jz&slFc^QS+?n-4e$MGa9s z@)DT|VVGq|!YpH4>8tMZq1g3}E2WE5-+6=B`0s%%2t$Q@gDYkQ2pf7d9>A#28t&yA8iJ_tc2^D0F%dsYBRj$WQp zbG7>-v^y!}_aha|%vLyTO)2D=B?j!700?0+-hHjc-#=O4=)(Ji5XT~&teehX+0-9f zzp_KGypG1fd|Ch|LnaPSWxVrUz}F7;X%Y_mmXUV`Vf@T7AWIAk6QlA7vSdy+jQl46 zkUc&El5rLO=peuJ|E1028PG@xrObbgPZm8P?~eyilu?aTv6^6^`ec*hx_BnWmC&u29haG4LlI rGxj`Ruw!GZjr6p}i@z8)_TTs)qHGuE{mw-x00000NkvXXu0mjfEd=xj literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..61764bf20a35fb21995b667e9a5e25436685a8a7 GIT binary patch literal 1593 zcmV-92FCe`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L03itg03ithOzq;@000HdNkli(P8=f+Y^Mqc1WDr}2vQk{QV2|+A}XxHfQrbj zRH(85xk;}eX_zVqV1$KI$q_6^imXtyL@uc%ce#(b_xvgD%Ji=M&inl5|IcfT zk+rnW~cVMU8ZZk781Awt_EiW&B7^A=0&%>nLiE=zTF-F`Y z?jnYe_L%k%19FkaK*b=2KJJkieXtuAdLjSn+z01=1918BWloebmi#Ot+6 zd};o$s8PJixiZ(PPAQm8s^ZmeF?Cdnz=xsAO(@FBVaF<-N=#qcy`!ug#n_pR3xd8mK3UKSz ze-_?6Il*+Li$cWY2shJyLy_ci0i--vac-j3Y_i#FQ=jYM?zlvBSqVZ}McY#^X#4s< zPrZ8T)J*laOG{I$YhS_Wkj&ZH*u~ zg0LtdDzsyb^#^N5deLU8S3bR>qYE$d)9;;xa7ct;qgt!*(277b#xPPckcsy828~XO z&Tf|&97!b$DHg11?OtGGYg+=U?e;FW|9wMW-EKqoxLKS?X(0y*BOpOH1|D_`U<2JX z0>Y_Jik*j>GN#EOR>D9xAf0TBc#I-GEMjkO5htwFbpvR{@;Ctz7((s+?@NK{Z7L&Gx6%|Jz&slFc^QS+?n-4e$MGa9s z@)DT|VVGq|!YpH4>8tMZq1g3}E2WE5-+6=B`0s%%2t$Q@gDYkQ2pf7d9>A#28t&yA8iJ_tc2^D0F%dsYBRj$WQp zbG7>-v^y!}_aha|%vLyTO)2D=B?j!700?0+-hHjc-#=O4=)(Ji5XT~&teehX+0-9f zzp_KGypG1fd|Ch|LnaPSWxVrUz}F7;X%Y_mmXUV`Vf@T7AWIAk6QlA7vSdy+jQl46 zkUc&El5rLO=peuJ|E1028PG@xrObbgPZm8P?~eyilu?aTv6^6^`ec*hx_BnWmC&u29haG4LlI rGxj`Ruw!GZjr6p}i@z8)_TTs)qHGuE{mw-x00000NkvXXu0mjfEd=xj literal 0 HcmV?d00001 diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index ba0270ac92..ba8cda3c61 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 ad7780013a..cded68c489 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 f251d7352b..b25d13409b 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 0000000000..0659ebe206 --- /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 0000000000..39b7c57613 --- /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 0000000000..d18f5d3451 --- /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 0000000000..d00182946c --- /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 0000000000000000000000000000000000000000..61764bf20a35fb21995b667e9a5e25436685a8a7 GIT binary patch literal 1593 zcmV-92FCe`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L03itg03ithOzq;@000HdNkli(P8=f+Y^Mqc1WDr}2vQk{QV2|+A}XxHfQrbj zRH(85xk;}eX_zVqV1$KI$q_6^imXtyL@uc%ce#(b_xvgD%Ji=M&inl5|IcfT zk+rnW~cVMU8ZZk781Awt_EiW&B7^A=0&%>nLiE=zTF-F`Y z?jnYe_L%k%19FkaK*b=2KJJkieXtuAdLjSn+z01=1918BWloebmi#Ot+6 zd};o$s8PJixiZ(PPAQm8s^ZmeF?Cdnz=xsAO(@FBVaF<-N=#qcy`!ug#n_pR3xd8mK3UKSz ze-_?6Il*+Li$cWY2shJyLy_ci0i--vac-j3Y_i#FQ=jYM?zlvBSqVZ}McY#^X#4s< zPrZ8T)J*laOG{I$YhS_Wkj&ZH*u~ zg0LtdDzsyb^#^N5deLU8S3bR>qYE$d)9;;xa7ct;qgt!*(277b#xPPckcsy828~XO z&Tf|&97!b$DHg11?OtGGYg+=U?e;FW|9wMW-EKqoxLKS?X(0y*BOpOH1|D_`U<2JX z0>Y_Jik*j>GN#EOR>D9xAf0TBc#I-GEMjkO5htwFbpvR{@;Ctz7((s+?@NK{Z7L&Gx6%|Jz&slFc^QS+?n-4e$MGa9s z@)DT|VVGq|!YpH4>8tMZq1g3}E2WE5-+6=B`0s%%2t$Q@gDYkQ2pf7d9>A#28t&yA8iJ_tc2^D0F%dsYBRj$WQp zbG7>-v^y!}_aha|%vLyTO)2D=B?j!700?0+-hHjc-#=O4=)(Ji5XT~&teehX+0-9f zzp_KGypG1fd|Ch|LnaPSWxVrUz}F7;X%Y_mmXUV`Vf@T7AWIAk6QlA7vSdy+jQl46 zkUc&El5rLO=peuJ|E1028PG@xrObbgPZm8P?~eyilu?aTv6^6^`ec*hx_BnWmC&u29haG4LlI rGxj`Ruw!GZjr6p}i@z8)_TTs)qHGuE{mw-x00000NkvXXu0mjfEd=xj literal 0 HcmV?d00001 diff --git a/view/theme/dispy/fpostit/friendika-32.png b/view/theme/dispy/fpostit/friendika-32.png new file mode 100644 index 0000000000000000000000000000000000000000..61764bf20a35fb21995b667e9a5e25436685a8a7 GIT binary patch literal 1593 zcmV-92FCe`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L03itg03ithOzq;@000HdNkli(P8=f+Y^Mqc1WDr}2vQk{QV2|+A}XxHfQrbj zRH(85xk;}eX_zVqV1$KI$q_6^imXtyL@uc%ce#(b_xvgD%Ji=M&inl5|IcfT zk+rnW~cVMU8ZZk781Awt_EiW&B7^A=0&%>nLiE=zTF-F`Y z?jnYe_L%k%19FkaK*b=2KJJkieXtuAdLjSn+z01=1918BWloebmi#Ot+6 zd};o$s8PJixiZ(PPAQm8s^ZmeF?Cdnz=xsAO(@FBVaF<-N=#qcy`!ug#n_pR3xd8mK3UKSz ze-_?6Il*+Li$cWY2shJyLy_ci0i--vac-j3Y_i#FQ=jYM?zlvBSqVZ}McY#^X#4s< zPrZ8T)J*laOG{I$YhS_Wkj&ZH*u~ zg0LtdDzsyb^#^N5deLU8S3bR>qYE$d)9;;xa7ct;qgt!*(277b#xPPckcsy828~XO z&Tf|&97!b$DHg11?OtGGYg+=U?e;FW|9wMW-EKqoxLKS?X(0y*BOpOH1|D_`U<2JX z0>Y_Jik*j>GN#EOR>D9xAf0TBc#I-GEMjkO5htwFbpvR{@;Ctz7((s+?@NK{Z7L&Gx6%|Jz&slFc^QS+?n-4e$MGa9s z@)DT|VVGq|!YpH4>8tMZq1g3}E2WE5-+6=B`0s%%2t$Q@gDYkQ2pf7d9>A#28t&yA8iJ_tc2^D0F%dsYBRj$WQp zbG7>-v^y!}_aha|%vLyTO)2D=B?j!700?0+-hHjc-#=O4=)(Ji5XT~&teehX+0-9f zzp_KGypG1fd|Ch|LnaPSWxVrUz}F7;X%Y_mmXUV`Vf@T7AWIAk6QlA7vSdy+jQl46 zkUc&El5rLO=peuJ|E1028PG@xrObbgPZm8P?~eyilu?aTv6^6^`ec*hx_BnWmC&u29haG4LlI rGxj`Ruw!GZjr6p}i@z8)_TTs)qHGuE{mw-x00000NkvXXu0mjfEd=xj literal 0 HcmV?d00001 diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css index 9b480385d9..935ca507ec 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 e3f8f5b457..e898346ef5 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 f251d7352b..b25d13409b 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 }} From 5bb73034088a3f69009140f6a43e0ea1d46f6a5a Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 25 Mar 2012 04:37:09 -0700 Subject: [PATCH 119/187] 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 ea88cd39b6..19661805c2 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 a505f1f040..e4617ab496 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'); From 873a55e9186cdf3d92b2793cd366debf237c8cda Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 25 Mar 2012 05:06:11 -0700 Subject: [PATCH 120/187] 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 e4617ab496..1918f26df3 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']); From baeb7353153924489d8d79a36d9b21c28c5f2ac4 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Sun, 25 Mar 2012 19:43:42 +0200 Subject: [PATCH 121/187] 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 6149b12ded..2c878e6f05 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 29cc64c187..5b87e31424 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; From ca1e2254c9bbad75d4fa479a6ad7b5f38386a7ef Mon Sep 17 00:00:00 2001 From: Michael Johnston Date: Sun, 25 Mar 2012 16:00:11 -0400 Subject: [PATCH 122/187] 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 fc1c5fd0f4..5baae2bde7 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", From aa33815d3c73435f15b1e30721ddb0af1faf8f5e Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 25 Mar 2012 17:06:38 -0400 Subject: [PATCH 124/187] 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 cded68c489..9b6ea76bf3 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() { From 3d62cb97822e0bd9e5be0c404664667cb7cb8d98 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 25 Mar 2012 17:13:24 -0400 Subject: [PATCH 126/187] 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 e898346ef5..3fa9a33531 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)); From 7ef1ed2d7045a381c032d2142413b3a14af0d8e3 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 25 Mar 2012 17:55:43 -0700 Subject: [PATCH 127/187] 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 19661805c2..b2f91f3f7b 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 0000000000000000000000000000000000000000..67d391966763854a8c119c50d2f828e13ac36aaf GIT binary patch literal 1366 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV4T3g1Qgjg(X9wbF%}28J29*~C-V}>;Vkfo zEM{Qf76xHPhFNnY7#LW7d%8G=RNQ)d)liUuf#Zn5f&I^qvocTjcyY-uh~dE6i3|)p z5+G!d073^E7=eg^nGJ*>5+hj-5-8ZiWn{=f5(IjhfcSl+$f+`*WC&!>LnYvuWdzC% e)>7g}HlwEun{3LdHNSynBZH@_pUXO@geCxH1n0s4 literal 0 HcmV?d00001 diff --git a/include/plugin.php b/include/plugin.php index 8280b1022e..df33fd3f20 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 a64b269035..53b5ee3544 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 ead356f5b9..cbaef2d66c 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 0000000000000000000000000000000000000000..80e66e3124b8c8b4a799f1766c5cd04d65d73e0b GIT binary patch literal 323812 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 z

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

UXS{a>r1PH(#LC#<$d4 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

aepao`5cFpKMdAm*xbO>0O`?nNa34&i8^8T~zb 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

+ + + $field.3 +
+
diff --git a/view/settings.tpl b/view/settings.tpl index 2b739c968a..75225a0f1b 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}} From 3d11c22b01e1581b4606312dcc38dfd7b7906502 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 25 Mar 2012 22:45:44 -0400 Subject: [PATCH 129/187] 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 11469dc661..589d683521 100644 --- a/view/theme/dispy-dark/nav.tpl +++ b/view/theme/dispy-dark/nav.tpl @@ -5,7 +5,7 @@ -

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%0AKp}9;yf!)KRr!Ro*&Xm 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%0D)?{*F8Zt8LuODpjIn}S*O3<$uS0A;!*9=PX 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 literal 0 HcmV?d00001 From c88674aaf23ede573f19a2b363dfccf9627a5dcb Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 25 Mar 2012 19:05:14 -0700 Subject: [PATCH 128/187] 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 2b4b13791a..0b5fb5cdc0 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 0000000000..5a71bbe53e --- /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 0000000000..f9f99492c3 --- /dev/null +++ b/view/field_themeselect.tpl @@ -0,0 +1,9 @@ + +

 
- +
@@ -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 fd9700f222..cc891c1711 --- 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 24045d7311..bc3045d244 --- 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 2471c3fa04..83e599d68f --- 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 0000000000..17b9aeff16 --- /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 0000000000..62cc2e4ced --- /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 0000000000..e74c0bdc0d --- /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 53d31c44fa..1a148e8b4f --- 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 0a5275fe28..df985905b6 --- 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 a099e6a8c5..42ece2092f --- 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 5cb92fa0f0..34b265553f --- 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 3aeac0deba..30a894f7c3 --- 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 31ee7b70f3..c109345928 --- 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 17054da3ed..e8d606a340 --- 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 d0a3e3a8e5..0ac6bdb667 --- 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 8b07fa8429..5f667510f5 --- 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 e5195265e0..9b98a5154b --- 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 9b51b8368d..f24057211c --- 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 6c5470cfcc..d001ac7c4d --- 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 d62a219e6b..9c99995adb --- 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 9e5d8c5717..1f957dc786 --- 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 3991b8141b..d4b6bdfb7b --- 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 096e7550c3..ad1bb0f6cc --- 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 dc61977461..a887018125 --- 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 279ca359ce..d94c8e4992 --- 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 : '*' - }); + }; - ctrl.add(o['class'], name); + ed.formatter.register(name, fmt); + + 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; + + toolbarGroup = cf.createToolbarGroup('toolbargroup', { + 'name': ed.getLang('advanced.toolbar'), + 'tab_focus_toolbar':ed.getParam('theme_advanced_tab_focus_toolbar') + }); + + t.toolbarGroup = toolbarGroup; a = s.theme_advanced_toolbar_align.toLowerCase(); a = 'mce' + t._ufirst(a); - n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a}); - - if (!ed.getParam('accessibility_focus')) - h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '')); - - 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,24 +1162,52 @@ 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')) + // 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; -*/ - // Ignore non element and hidden elements - if (n.nodeType != 1 || n.nodeName === 'BR' || (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') @@ -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 f30d670641..b8ba729f6f --- 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 b4c542d107b25f68a9d4f9d7a109d0565d1f1437..b1a377aba7784d3a0a0fabb4d22b8114cde25ace GIT binary patch delta 2365 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 W2*l#|Pa-Y~b(9+&nY$I(8UGuz^kRPi literal 3189 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 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 0000000000000000000000000000000000000000..dec3f7c7028df98657860529461af29b8793601c GIT binary patch literal 239 zcmVM~p;I&fgwbZVtlRJPxC7uw?yFxEX;uVr4IeWCJ^(5m4hjYVM>G^+2V)FnXE$mS p86yHh03AmHCKD}bWutOkFce4&0zF5CG_Myp4hRT+ig>^g06S0cRV@Gj literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..410c7ad084db698e9f35e3230233aa4040682566 GIT binary patch literal 600 zcmZ?wbhEHb6krfwcoxm@|NsB$<##6SeDUYszh8g<{{H*-%a7k_-3KZc-T3+YPwBiX zzyAIE^Y`z!U%$Wp{QdX;|FQ*Fw;jIy{pasbUw?o3{yVB>Q_sRgx-G9iegFLZcfrha#d9w;%sU=Zx~6K$tw~$%z4`#O^Y@3Z zKV#~)MpSKh@#b63l#}6=>yq2|{`&JLqwny)|NnC)o%r$l&-Y)yKYjo8?#quSuRaGB zt_&<%`RV)bl#YEr{`~p)?RU|v^Y1_Z`u*?Ux8J`*N>>+5JlMAOZr+qr@y$D{mfVhO z+zt#7208-8pDc_F4ABfaAUi>E!oa?@A-bu#r8Qd6oKeb*Lx9UTz)0QBL@+vxY38ii zvqGa87c5+~h&?)zVa3W-D;=U$88}^qMBJ^ERU|z17!;#97+4%Rd1XcXJq#>t8KR;E z7zr5i6BgH5y=gAD)sAQlGB zh8au?j!n~E(Pks?@!j1fR&j*RWY8GF(-=x H6d0@lT&58X literal 0 HcmV?d00001 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif old mode 100755 new mode 100644 similarity index 100% rename from library/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif rename to library/tinymce/jscripts/tiny_mce/themes/advanced/img/pagebreak.gif 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 0000000000000000000000000000000000000000..8f10e7aa6b6ab40ee69a1a41a961c092168d6fda GIT binary patch literal 301 zcmV+|0n+|QNk%w1VGsZi0Q4UK+~)L6v+~s9^fsC5ZpZP=*zu3F=Jxpf8k_5u%JNv6 z=md-84VLU4w)kSE=yI&-yw>b=v+SqE?+kq47pC+YrR?bJ^yu>Zyvpn;hTp*6^mM!O zu+8!}sO$`q%8%`=C5EEn#1d#z95FHtK5(^#(cp^e+Y!d=4FCrFbY9A3U z4-O0-4kHJPJ2(jk13n5879s!!3Q`V>8VwW`9my3H#|R8ZD+fdx0E-+693cQZ;!k;* literal 0 HcmV?d00001 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif old mode 100755 new mode 100644 similarity index 100% rename from library/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif rename to library/tinymce/jscripts/tiny_mce/themes/advanced/img/realmedia.gif 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 0000000000000000000000000000000000000000..9314d044709c9845876e08003cf94526fd69177f GIT binary patch literal 384 zcmZ?wbhEHb6lD-#_^Qe9?Af#b->&}n`s(k;lb>H+`#+Q6|3c{>OLTv23;utm>DSfy zuOD3adm!iUuGar)4FAhzel5=UwZ7*6(K(+k@BP_g{o}}@k7u_2k7W2iGwlom!+#Z( z|Hj5w_4MwTo8QaHxm#EFYX1DUOO|}vvgQBb!_ST${rmj+`+Fep|C$j4HGtwz7FGrZ zO$Hs1VIV&_u+2R%#bJV$RKJIcL*N7vss0Y-EsB{gGlSJaTr>sRLKbLj5HMTpyK;)l zJcfpaMYltBZdEK6Kht6+BPy*VtthFMtIoqFC=#Tu$e^eaDXCC7U0vOYOJjNk(;P!VagC#fQ*?7otVO)-#9rK#nB%ry4`E_DHQ Wm01j~^6E13^D1O7+^=wCum%9s<%z=p literal 0 HcmV?d00001 diff --git a/library/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif b/library/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif old mode 100755 new mode 100644 similarity index 100% rename from library/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif rename to library/tinymce/jscripts/tiny_mce/themes/advanced/img/trans.gif 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 0000000000000000000000000000000000000000..3570104077a3b3585f11403c8d4c3fc9351f35d2 GIT binary patch literal 597 zcmZ?wbhEHb6krfwc$UTx9v<%P?Ok48Ze?YanwpxCkzrwBk(ZYzB_&l;Qw!gmM(Ep^QBwbzIoSdAh>*2n> zz9l6k0Xw#(?);y5^ls9w|LObxXI*si^YfcEYu3*P8J(S-PEJlaNB-yTd}C^Ax@_69 zzP`Ryt5)S5`=P3;TDk9SbaeFk_3NiTjGA~aFd-pf@}tlxQ>GLb7jM|Gp`oFHlaq7F zk|nvhxjsHV=g+oST3Rl6T(N1>rn0iK*Ed>3MMVn>3vF#}**q!otE>Sy|^jDoRUBoBANRc=wyaJged$+}u3x zK}ld>puWET{||NozXdO-0f3nK$V8iNkVNKl+Guy1NeYie$3 zZB}=&Zex!RYq8YfVwgNdMpdFkN|rU!Fha}0m66q>CDxczOhH^pM9qvxw1p`;Rftzu zQJ&9}g>iErlc2ORw;aC_=l*6UJ=st%r*ISVV2jgDT<)w>rXHGL<21Kdo z#'; 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 7fe7810558..2940db3591 --- 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 8c5aea1721..bb1869558c --- 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 f67a5bc828..53ff409e79 --- 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 279328614c..dd5e366fa9 --- 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 turnWrapOn() { + if (tinymce.isWebKit) { + setWhiteSpaceCss('pre-wrap'); + } else { + setWrap('soft'); + } +} + +function toggleWordWrap(elm) { + if (elm.checked) { + turnWrapOn(); + } else { + turnWrapOff(); + } +} function resizeInputs() { - var el = document.getElementById('htmlSource'); + var vp = tinyMCEPopup.dom.getViewPort(window), el; - if (!tinymce.isIE) { - wHeight = self.innerHeight - 65; - wWidth = self.innerWidth - 16; - } else { - wHeight = document.body.clientHeight - 70; - wWidth = document.body.clientWidth - 16; + el = document.getElementById('htmlSource'); + + if (el) { + el.style.width = (vp.w - 20) + 'px'; + el.style.height = (vp.h - 65) + 'px'; } - - el.style.height = Math.abs(wHeight) + 'px'; - el.style.width = Math.abs(wWidth) + '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 502b008176..6e58481874 --- 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 ea5a6dae28..50cd87e3d0 --- 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 7565b9ae8b..5d9dea9b8c --- 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 0000000000..20ec2f5a34 --- /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 444063a828..52a1d67e26 --- 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 7dd58418ba7cfe58ae7efdf174e0b223fe3aa6a0..1e53560e0aa7bb1b9a0373fc2f330acab7d1d51f GIT binary patch delta 2525 zcmV<32_p8&8NC>gBe7Up0)GjqNklW6KNnY z5Dmy?f+RtfI3miXgUZ$l3N2OYxbJnZTdVCj)}{MCZD&hL34hpp-*fJkN9^6-rttRd_kS0lKeglM98q|x zSXg)|clwtWRQ;MY1qEx?toa>1R4`M3mjVKlOJfdD-oUKKN?soPS!gqP#L^XT4aOn{ z<|RX4N|~K3sI#VE=T7#D$4&spi{!Bt^$m?o{QUC{rr%gvO7{Aqylm?0S+zX;7S)5x zYH`$|q9m`!4|np5D1R_fYSKe+^>SWz0Y7FK1ysuqN>D&2@AB2F{;N0@haxPiQCh0& zhw4lG5r0WZQ4t;*Lqq;NdgWD1{6j!LBHsQN0n-H)T^-WjVH5Nl`Db5R>T*R~PM05_ zz&}62x_GwK&EQ;@DGPWTGSzxvULAk)dDV>VGDjevLnadS|zjKJgNr z`bf8#+LA20zq{MdV;qyd)>%W;u2b1cxN5qol8KVq;TnzZb$VIutgWfp%2Ix?b*q1c zp^rpdy`U!2+}vDCtV5;l-Wsivb|!ywlycE%FI3t1UC}6o*QwN+^e&e(+6tmh&IV$* zwKr1BS*PP_Wq6=`xrq%|~+T_C5$Ej&(aBhffVASe$q7B6G zIup%|XhSd0Mu0Qgpy>-sR}42bHT5AGzmv^*wAx7)^Unf>~5$T9%lO1CJm!P4FXMOHKz$z zM=wnfkZ6UWhyVA>%nC?#J^af}srE1Jej#Va#*O+2?4ajYUZim8X-e~b+=1AA=!;Li z{LVWs=YIfLPf;Us>ZKfUYN0sSZPfdXhr^3GA$+*;eW5Y@_20p3+g{(S@;An7+c>-4 zzH{fVD(lz(Woh*EW|q5i=WXKKaHDYeKe^uY^@!eVA} zU?3JNw_3}~%v4||MYYOBD+pBBK=CiB2=GM=ZK74QsnEWGf%6%rzj!7P2v}t?l}eTC zl$E#0Ct|T!SuA#?$iibMaNC?>Kiw?CEKd zzJCvBq=2zAM1~_he8t?66 zfn&!4^f)$wyn6yk5sZ(EV*dOH)4w{O@AEl)KA*H@%a$t8Lb%;&pMYYFvGMV7tDQ2w z^uMR<7J&^Nb)p7@Ek2(-Hpb#JGc#^?{(Oh7_Y#hyQXS{kEm_{u>HP%tcr7sFmVeV; zGlCm7l_N*oN4?%UH-)z_WRu>~d7~W&AKja>6GxBYOY^mRsgg|aEiHo5uHm)287)vU zr_lbNqZGYW2PCP^q)&h2+XLDKi)GP5+_T)9>fh5og-X&n zYuzV%<`96qIK=6}-Q;lqal;oUona*U5Yva9&^5?HCzQCBYQePB^} z1G^QI{#~E1|9S|__B%kDaVhkfLtwn|hPKge|6hpk+D-7KxzMN35)ad9$LArF{=NSG z{!d2}qobpb=6s;j0hH0v{xnBWfu(a4gfKE85W&$|9{#7pap|+sgr+|~pMU?=SC_nV zeSOzIPT)Rt_LyM34W+BD~pYLNtW_A6!EA8z!ZnXCe z{-Cr!8XWBV0fzy~;NTt~fi0#gpAQZWzL(Ahi@v_WS(w3%#Nc3J&U@vYs=s*VZae6k zo>dfO@8IF5}l ze2%BrIIn|UoVTuFde>WwT^d-P#5C>en7nrF8d*jxYW`2>4Sop9r3$7^9D z0|tV3X(>MKmaTjdTktrvwvFjGojrtexg~ch8%eTiL$?HEDrQFQ(o|zg&NduBtLhIO zr!H+##_1SX!$S-&LZ~82VT&b<_XeVjKkdaT)8&MZn3s@_Ho}t76Fe-_-RMhe8N;d)Q7$ zgh%o6N^}7$y zR~4_W4h0it*_&N5iO~AmA~pIUX&|1-eOHt8eKM$d&WQn~arrTISYK3<2LI5tZb~ra4Vor00000NkvXXu0mjf6xaGA delta 2666 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 literal 70 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 m$9hVqYNgZs*94epU`y6#e2-qmp8{7)K 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 8996c7493e8a58c9c40845cbe8abdc3e6730716d..7fc57f2bc2d63a3ad6fbf98b663f336539f011ec GIT binary patch delta 618 zcmV-w0+s!k9g78!83+Ra0086$;ro#x7k>cEP)t-s0002HySo4Y08>*_a&~-=k(7~{ zq?n(no1(0rrmv!@vZk!Hsjs-Lv%9dizO=c)x4gu=z{b14$GpMFzQf7C#LL0P%)`gc z#L3Ub%FxKn(aFuz%g@yRt3Us-P5-h`|Fl&9wO9YQTmQIT|GHxTyJi2qY5%`%|9`=9 z|HF3w#e4t9fd9#a|I3O0&5r-ub^qLY|J{H8--Q3*iT~k_|KpSYd|L3Cr z=%)YbtN-h;|LwH@@45f*zW?&W|MbWI_00eO|F&Wq@&Et;0(4SNQveU|I_8w5<1)+Sxjy>khxmTZ^UMAPuDhl=nJ%xacLVXE zN31WKSh0P^hawhnw)jf}#5_+GPu2e^5c51aiV00%6xVrr#$!*$V|i{OPJb2GYE{RI zUk${E_f%7X#d{l5O*06LqA`1W{A{z-KcE#qKx)lR6a_=R{wHo}S^x<1c*Pfemr)l5 zdENxVv+rLvA{OzVh(9zy{H9446TMvi`r@7X*kwhrq7{r{OWVwhm!6C_^4vrmA^ryB ziMy8mgg|d`WSser1qE6f|5sqVKRBqtZ!0b!I11C^6r?oOYvK8FsKs4z{;LqNh=&nh z+Biyl2i(R3MA5bJ5E*aeRfzb1#Gw{<#77AJa-hW>&Xefx-T2hw#sB~S07*qoM6N<$ Eg3||6=l}o! delta 3727 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 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 bd5d2550c06d83c1141b78c5af7217e89559fc32..c0dcc6cac2003f7405fff3ea5df7bcf276243596 GIT binary patch delta 2072 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 M07*qoM6N<$f@g#ZbN~PV 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 a6253976af..7b5103be29 --- 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 153f0c38a6..50c9b76a2d --- 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 7fe3b45e12..960a8e4755 --- 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 5957bbd178..3c6d65808a --- 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 ed89abc067..4b3209cc92 --- 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 4b862d49d6..01ce87c58a --- 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 16af141ff0eea376a889b1e8d28e9c1cacaaab16..6fcbcb5dedf16a5fa1d15c2aa127bceb612f1e71 GIT binary patch literal 806 zcmZ?wbhEHbJi#Es@KuxH{{08bHy>kQU|4+kcV*u?6Yu2z|Nk2X_I-c9E~4fBsnb_x z&7Ngzq1inB@Woqi-rnfiGF7yw9zM z^p;~=3MY4TT)2AY!iC=7fBwej_wPS(UDm1P!}|}9?`#au+qhx#R?Fl=KuakHia%Lc z85lGfbU;Rd{N%v)|G<<24;`ug6HAIt=2*?Yu%d)ZG@><(acbwmDSj%f4MMZ#%vkt3 z%+g~)i8kP^LLB_(WJHBo z)4eilyozQ8a&qqSt%<6xpa0;xA7k;M?mchbzI*>+`RnL~M?L!{MDwZt;o_B2F2$0=pQSpQ!u@RcUGT{(44KaY91N#ws_nDH9G%Qf=ZF z5o_THWH`G~`GwyilS^z$ZvV~I`dh4Lx_8c>?R@8gr-07UIgFjp0y#A&c{B)cE>2kS zL5I1;i$zoEA)6qV`HGJvVWE!{8MZ6ST|PC}d%Kid7{KiD{l18xziSGKuWtj9AkWy-*`}#c~0`Lrjq> z-;O-o=3A#@&dst%_SasuJq0xZW;OwR3vM!diY%Es?;J~Pp}LYununP(i|XxU>#u=* zSvNC^0?cJ=S?=UK4&2DdcCO^BsHxjWc4vR-Z64x&8r#>V9!JMd4O!Z*d@mNrgX=jUy;0|T>ZntHjDU$=-I8y`|tN~Y9 literal 1440 zcmV;R1z-9{Nk%w1VaNa!0QUd@Ib*`7v&H}b0P*i`B{WZ*I4YI8{iDPCZ*XyWj;?N! z&ooP8CcKTM%}ImAk&d@bUef&=iA% zhPA3sm56OYcjMRI^s}jof~E0n!SIozxs`y)bZpaM%~elOt(xIz_1F@`xREtxwxO@X zElsNLx;f_MIwnTOux@bk@5r<-;@s){f~fMSskU>S&vlpdmZGk)n^Ks084*pfMo5}`Y)@uBrt7q^ z_xb)XxI@^-XhLVQWPPfUtMQSg&Xb6UQhU2=S3pa1!Lhs1Kwz1)!P59aI6r5pthLM4 zE-ud4`aC>8zybolqcQ$sRq*)W>+kl^)!br%x2LJkVv+Dui1Oh7|6z>ag023Luhg%= z;=sbh)RP30t>V}2$H?fg=;-%zOTU8v0MO8l85I$+z}bYP#G9DS_#hs}n3hj*tissz zAwYQh{QX~VkH5&*9YTcu{{H^`{_yYcW|;u|{Qilm^upTyi?sd!nVG)6{{LrW`s5%! zQETJeu@Y0sB3Qy+jGVB@-BWO)C1U{h_4v@?@UEu*S8lPiucH6>|4vxO2|0#LaF@v0 z@ZaCy@c8hkxVXaB{z|fT@U~;Hv$d$T$J*xpqPpE8TH+G^0=vlI+KzIEuZN}B@UYO} z&dtoGp5{=vw)ErQRcDJbQgSxGf8JYL_`X^{uFH_9uqY`f`}_Of)zF}&w4mVd!0r05 zoM3>k!2kdMA^8LW00930EC2ui0LTCo000R80RIUbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVW@EluM+^lPFV4B&kwhfCK?JZW}S8Lq-x8D(>2KU{_0tBn}8A zagb%p1Q&P-6u`78(}*2LRH3FT;{^Z%ooYoWl!#X%K7Tem@Rf*AgGMWAZK^N;uLKrJ zgqs_6Dufyfw<06~AZA3KR{>nO09GJYj!yq2Mo2^;St0-;UpPxp*8_}f6+Z>JE!?&a z+dPb*b~hYDra%-%J`C}|)xna%9$;-yz|zc`Z6DmMS)p07fiENwe4t=jwVQEwY|=zo zxL=@s=&E6Qp)TGXT_1)l*emUVx)m?~6;Hl)c5^2e&KlH&3v877L9rfP;Fp}T4iu?af8AOXd@5C0(U&fK3z8Av u{UxbK=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