From 35128ef2c95d8f76afd3edea594623cc265da673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Mon, 27 Feb 2012 22:01:17 +0000 Subject: [PATCH 001/133] Avoid a Notice --- include/event.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/event.php b/include/event.php index 4a9a9a0041..29202baddf 100755 --- a/include/event.php +++ b/include/event.php @@ -163,7 +163,7 @@ function bbtoevent($s) { if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match)) $ev['adjust'] = $match[1]; $match = ''; - $ev['nofinish'] = (($ev['start'] && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0); + $ev['nofinish'] = (((x($ev, 'start') && $ev['start']) && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0); return $ev; } From e33c2b8f89d0174b6b2bcbd31d8d89c2ee664340 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Mon, 27 Feb 2012 22:08:00 +0000 Subject: [PATCH 002/133] Avoid a Notice --- include/items.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/items.php b/include/items.php index 7d52571c25..5452dfbdab 100755 --- a/include/items.php +++ b/include/items.php @@ -682,7 +682,7 @@ function item_store($arr,$force_parent = false) { unset($arr['dsprsig']); } - if($arr['gravity']) + if(x($arr, 'gravity')) $arr['gravity'] = intval($arr['gravity']); elseif($arr['parent-uri'] === $arr['uri']) $arr['gravity'] = 0; @@ -800,6 +800,8 @@ function item_store($arr,$force_parent = false) { logger('item_store: item parent was not found - ignoring item'); return 0; } + + $parent_deleted = 0; } } From 7c30fca98186538eff731519bdd0c76527237192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Mon, 27 Feb 2012 22:17:57 +0000 Subject: [PATCH 003/133] Avoid a Notice --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 54f318e5e9..c89dae27cc 100755 --- a/boot.php +++ b/boot.php @@ -1335,7 +1335,7 @@ function profile_tabs($a, $is_owner=False, $nickname=Null){ array( 'label' => t('Profile'), 'url' => $url.'/?tab=profile', - 'sel' => (($tab=='profile')?'active':''), + 'sel' => ((isset($tab) && $tab=='profile')?'active':''), ), array( 'label' => t('Photos'), From e55d13c2b4425183dde64da8ca27c794f4c04900 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Tue, 28 Feb 2012 12:56:16 +0000 Subject: [PATCH 004/133] Avoid a notice --- include/items.php | 1 + 1 file changed, 1 insertion(+) diff --git a/include/items.php b/include/items.php index 5452dfbdab..5268dfc1d8 100755 --- a/include/items.php +++ b/include/items.php @@ -742,6 +742,7 @@ function item_store($arr,$force_parent = false) { if($arr['parent-uri'] === $arr['uri']) { $parent_id = 0; + $parent_deleted = 0; $allow_cid = $arr['allow_cid']; $allow_gid = $arr['allow_gid']; $deny_cid = $arr['deny_cid']; From 1204210c69eade767bb19af5a5a18cee4a9db215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Tue, 28 Feb 2012 13:01:58 +0000 Subject: [PATCH 005/133] wasn't actually changed before --- include/conversation.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 53369cf20f..6f0dc3687e 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -976,8 +976,8 @@ function conv_sort($arr,$order) { usort($parents,'sort_thr_commented'); if(count($parents)) - foreach($parents as $x) - $x['children'] = array(); + foreach($parents as $i=>$_x) + $parents[$i]['children'] = array(); foreach($arr as $x) { if($x['id'] != $x['parent']) { From f48556cbc08c0600e256f5964a553c666ee66372 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Tue, 28 Feb 2012 13:40:41 +0000 Subject: [PATCH 006/133] contact.network is used later to check if a direct link or a redirect by /redir/contactid should be used --- mod/message.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/message.php b/mod/message.php index 4b494e906f..e293d62d9d 100755 --- a/mod/message.php +++ b/mod/message.php @@ -176,7 +176,7 @@ function message_content(&$a) { $a->set_pager_total($r[0]['total']); $r = q("SELECT max(`mail`.`created`) AS `mailcreated`, min(`mail`.`seen`) AS `mailseen`, - `mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` + `mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` , `contact`.`network` FROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` WHERE `mail`.`uid` = %d AND `from-url` $eq '%s' GROUP BY `parent-uri` ORDER BY `created` DESC LIMIT %d , %d ", intval(local_user()), From 36a1a43f06dc2a0d55463c83154cce55fa3948ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Tue, 28 Feb 2012 13:42:12 +0000 Subject: [PATCH 007/133] Avoid notices --- boot.php | 2 +- mod/dfrn_request.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/boot.php b/boot.php index c89dae27cc..e39504e11c 100755 --- a/boot.php +++ b/boot.php @@ -1209,7 +1209,7 @@ function current_theme(){ $a = get_app(); $system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : ''); - $theme_name = ((is_array($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme); + $theme_name = ((isset($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme); if($theme_name && file_exists('view/theme/' . $theme_name . '/style.css')) return($theme_name); diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index bc159137df..452fec1669 100755 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -43,7 +43,7 @@ function dfrn_request_post(&$a) { return; - if($_POST['cancel']) { + if(x($_POST, 'cancel')) { goaway(z_root()); } From 5bb8ed4b8b5310acc8556ef2fba7b3958284b2a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Tue, 28 Feb 2012 21:56:42 +0000 Subject: [PATCH 008/133] Mostly some checks in order to avoid Notices; 1 real bugfix in /mod/network.php --- include/conversation.php | 5 +++-- include/oembed.php | 2 +- include/template_processor.php | 9 +++++++-- mod/network.php | 14 ++++++++------ 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 9f564843e9..bd9b11bee6 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -373,7 +373,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $comments[$item['parent']] = 1; else $comments[$item['parent']] += 1; - } + } elseif(! x($comments,$item['parent'])) + $comments[$item['parent']] = 0; // avoid notices later on } // map all the like/dislike activities for each parent item @@ -921,7 +922,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { $o .= replace_macros($tpl,array( '$return_path' => $a->cmd, '$action' => $a->get_baseurl().'/item', - '$share' => (($x['button']) ? $x['button'] : t('Share')), + '$share' => (x($x,'button') ? $x['button'] : t('Share')), '$upload' => t('Upload photo'), '$shortupload' => t('upload photo'), '$attach' => t('Attach file'), diff --git a/include/oembed.php b/include/oembed.php index 5c3c595f57..52068efc76 100755 --- a/include/oembed.php +++ b/include/oembed.php @@ -62,7 +62,7 @@ function oembed_fetch_url($embedurl){ function oembed_format_object($j){ $embedurl = $j->embedurl; - $jhtml = oembed_iframe($j->embedurl,$j->width,$j->height ); + $jhtml = oembed_iframe($j->embedurl,(isset($j->width) ? $j->width : null), (isset($j->height) ? $j->height : null) ); $ret=""; switch ($j->type) { case "video": { diff --git a/include/template_processor.php b/include/template_processor.php index 28c3f07ddd..7a4cba64e9 100755 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -92,8 +92,13 @@ */ private function _replcb_for($args){ $m = array_map('trim', explode(" as ", $args[2])); - list($keyname, $varname) = explode("=>",$m[1]); - if (is_null($varname)) { $varname=$keyname; $keyname=""; } + $x = explode("=>",$m[1]); + if (count($x) == 1) { + $varname = $x[0]; + $keyname = ""; + } else { + list($keyname, $varname) = $x; + } if ($m[0]=="" || $varname=="" || is_null($varname)) die("template error: 'for ".$m[0]." as ".$varname."'") ; //$vals = $this->r[$m[0]]; $vals = $this->_get_var($m[0]); diff --git a/mod/network.php b/mod/network.php index 03a671b615..26265f5a0f 100755 --- a/mod/network.php +++ b/mod/network.php @@ -44,7 +44,7 @@ function network_init(&$a) { } $a->page['aside'] .= group_side('network','network',true,$group_id); - $a->page['aside'] .= networks_widget($a->get_baseurl() . '/network',(($_GET['nets']) ? $_GET['nets'] : '')); + $a->page['aside'] .= networks_widget($a->get_baseurl() . '/network',(x($_GET, 'nets') ? $_GET['nets'] : '')); $a->page['aside'] .= saved_searches($search); } @@ -130,15 +130,15 @@ function network_content(&$a, $update = 0) { $starred_active = 'active'; } - if($_GET['bmark']) { + if(x($_GET,'bmark')) { $bookmarked_active = 'active'; } - if($_GET['conv']) { + if(x($_GET,'conv')) { $conv_active = 'active'; } - if($_GET['spam']) { + if(x($_GET,'spam')) { $spam_active = 'active'; } @@ -245,7 +245,7 @@ function network_content(&$a, $update = 0) { $def_acl = array('allow_cid' => '<' . intval($cid) . '>'); if(! $update) { - if(group) { + if($group) { if(($t = group_public_members($group)) && (! get_pconfig(local_user(),'system','nowarn_insecure'))) { notice( sprintf( tt('Warning: This group contains %s member from an insecure network.', 'Warning: This group contains %s members from an insecure network.', @@ -492,7 +492,9 @@ function network_content(&$a, $update = 0) { $items = conv_sort($items,$ordering); - } + } else { + $items = array(); + } } From 52ea842e872cc004fd012496c828e9fb6186bec9 Mon Sep 17 00:00:00 2001 From: Michael Date: Fri, 2 Mar 2012 10:33:39 +0100 Subject: [PATCH 009/133] html2bbcode: don't convert sizes and fonts. --- include/html2bbcode.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/include/html2bbcode.php b/include/html2bbcode.php index 65920380b5..442e386911 100755 --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -10,7 +10,7 @@ Originally made for the syncom project: http://wiki.piratenpartei.de/Syncom function node2bbcode(&$doc, $oldnode, $attributes, $startbb, $endbb) { do { - $done = node2bbcodesub(&$doc, $oldnode, $attributes, $startbb, $endbb); + $done = node2bbcodesub($doc, $oldnode, $attributes, $startbb, $endbb); } while ($done); } @@ -150,10 +150,14 @@ function html2bbcode($message) node2bbcode($doc, 'font', array('size'=>'/(\d+)/'), '[size=$1]', '[/size]'); node2bbcode($doc, 'font', array('color'=>'/(.+)/'), '[color=$1]', '[/color]'); - node2bbcode($doc, 'span', array('style'=>'/.*color:\s*(.+?)[,;].*/'), '[color="$1"]', '[/color]'); - node2bbcode($doc, 'span', array('style'=>'/.*font-size:\s*(\d+)/'), '[size=$1]', '[/size]'); + // Untested + //node2bbcode($doc, 'span', array('style'=>'/.*font-size:\s*(.+?)[,;].*font-family:\s*(.+?)[,;].*color:\s*(.+?)[,;].*/'), '[size=$1][font=$2][color=$3]', '[/color][/font][/size]'); + //node2bbcode($doc, 'span', array('style'=>'/.*font-size:\s*(\d+)[,;].*/'), '[size=$1]', '[/size]'); + //node2bbcode($doc, 'span', array('style'=>'/.*font-size:\s*(.+?)[,;].*/'), '[size=$1]', '[/size]'); + node2bbcode($doc, 'span', array('style'=>'/.*color:\s*(.+?)[,;].*/'), '[color="$1"]', '[/color]'); //node2bbcode($doc, 'span', array('style'=>'/.*font-family:\s*(.+?)[,;].*/'), '[font=$1]', '[/font]'); + //node2bbcode($doc, 'div', array('style'=>'/.*font-family:\s*(.+?)[,;].*font-size:\s*(\d+?)pt.*/'), '[font=$1][size=$2]', '[/size][/font]'); //node2bbcode($doc, 'div', array('style'=>'/.*font-family:\s*(.+?)[,;].*font-size:\s*(\d+?)px.*/'), '[font=$1][size=$2]', '[/size][/font]'); //node2bbcode($doc, 'div', array('style'=>'/.*font-family:\s*(.+?)[,;].*/'), '[font=$1]', '[/font]'); From 02a9fd5dc1d1d9e848e2f406f2e13c4cf0ce228b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Sat, 3 Mar 2012 10:44:34 +0000 Subject: [PATCH 010/133] A 'PHP Fatal error: Call to a member function getElementsByTagName() on a non-object in mod/parse_url.php on line 191' occurred when the linked HTML-File doesn't have a HEAD. The HTML-file couln't be link to in the editor therefore. --- mod/parse_url.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/parse_url.php b/mod/parse_url.php index e0b378f685..27dac4d5d3 100755 --- a/mod/parse_url.php +++ b/mod/parse_url.php @@ -188,7 +188,7 @@ function parse_url_content(&$a) { if(! $text) { logger('parsing meta'); - $items = $domhead->getElementsByTagName('meta'); + $items = (isset($domhead) && is_object($domhead) ? $domhead->getElementsByTagName('meta') : null); if($items) { foreach($items as $item) { $property = $item->getAttribute('property'); From cb1ecf2c5ad649eb372db9eb3bd1da756f207fb6 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 10 Mar 2012 00:15:27 +0100 Subject: [PATCH 011/133] diabook: Moving the location between the icons --- view/theme/diabook/style.css | 3 +++ view/theme/diabook/wall_item.tpl | 3 +-- view/theme/diabook/wallwall_item.tpl | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index bccfea149e..2d4670dca4 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -1113,6 +1113,7 @@ section { } .wall-item-container .wall-item-location { padding-right: 40px; + display: table-cell; } .wall-item-container .wall-item-ago { word-wrap: break-word; @@ -1168,6 +1169,7 @@ section { .wall-item-container .wall-item-actions-social { float: left; margin-bottom: 1px; + display: table-cell; } .wall-item-container .wall-item-actions-social a { margin-right: 1em; @@ -1178,6 +1180,7 @@ section { .wall-item-container .wall-item-actions-tools { float: right; width: 80px; + display: table-cell; } .wall-item-container .wall-item-actions-tools a { float: right; diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index b1a0149490..8c892fd2a9 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -46,7 +46,6 @@
-
$item.location 
@@ -82,7 +81,7 @@ {{ endif }}
- +
$item.location 
diff --git a/view/theme/diabook/wallwall_item.tpl b/view/theme/diabook/wallwall_item.tpl index 603a908c5a..3b103745bb 100644 --- a/view/theme/diabook/wallwall_item.tpl +++ b/view/theme/diabook/wallwall_item.tpl @@ -52,7 +52,6 @@
-
$item.location 
@@ -88,7 +87,8 @@ {{ endif }}
- +
$item.location 
+
@@ -100,4 +100,4 @@
$item.comment -
\ No newline at end of file +
From 15916a2cb717828367fc7e0bb74137942836a772 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 10 Mar 2012 09:52:20 +0100 Subject: [PATCH 012/133] Mail: Removing signatures, gpg, unnecessary line breaks --- include/email.php | 14 +++ include/msgclean.php | 225 +++++++++++++++++++++++++++++++++++++++++++ include/poller.php | 3 +- 3 files changed, 240 insertions(+), 2 deletions(-) create mode 100644 include/msgclean.php diff --git a/include/email.php b/include/email.php index 659978b6ee..a3449a4249 100755 --- a/include/email.php +++ b/include/email.php @@ -1,5 +1,7 @@ parts) { $ret['body'] = email_get_part($mbox,$uid,$struc,0, 'html'); + $html = $ret['body']; if (trim($ret['body']) == '') $ret['body'] = email_get_part($mbox,$uid,$struc,0, 'plain'); @@ -107,6 +110,17 @@ function email_get_msg($mbox,$uid) { else $ret['body'] = $text; } + + $ret['body'] = removegpg($ret['body']); + $msg = removesig($ret['body']); + $ret['body'] = $msg['body']; + $ret['body'] = convertquote($ret['body'], false); + + if (trim($html) != '') + $ret['body'] = removelinebreak($ret['body']); + + $ret['body'] = unifyattributionline($ret['body']); + return $ret; } diff --git a/include/msgclean.php b/include/msgclean.php new file mode 100644 index 0000000000..284ad1ce4b --- /dev/null +++ b/include/msgclean.php @@ -0,0 +1,225 @@ +\s.*?To: (.*?)\s*?Cc: (.*?)\s*?Sent: (.*?)\s.*?Subject: ([^\n].*)\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/----- Original Message -----\s.*?From: "([^<"].*?)" <(.*?)>\s.*?To: (.*?)\s*?Sent: (.*?)\s.*?Subject: ([^\n].*)\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/-------- Original-Nachricht --------\s*\['.$quote.'\]\nDatum: (.*?)\nVon: (.*?) <(.*?)>\nAn: (.*?)\nBetreff: (.*?)\n/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/-------- Original-Nachricht --------\s*\['.$quote.'\]\sDatum: (.*?)\s.*Von: "([^<"].*?)" <(.*?)>\s.*An: (.*?)\n.*/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/-------- Original-Nachricht --------\s*\['.$quote.'\]\nDatum: (.*?)\nVon: (.*?)\nAn: (.*?)\nBetreff: (.*?)\n/i', "[".$quote."='$2']\n", $message); + + $message = savereplace('/-----Urspr.*?ngliche Nachricht-----\sVon: "([^<"].*?)" <(.*?)>\s.*Gesendet: (.*?)\s.*An: (.*?)\s.*Betreff: ([^\n].*?).*:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/-----Urspr.*?ngliche Nachricht-----\sVon: "([^<"].*?)" <(.*?)>\s.*Gesendet: (.*?)\s.*An: (.*?)\s.*Betreff: ([^\n].*?)\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/Am (.*?), schrieb (.*?):\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + + $message = savereplace('/Am .*?, \d+ .*? \d+ \d+:\d+:\d+ \+\d+\sschrieb\s(.*?)\s<(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/Am (.*?) schrieb (.*?) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/Am (.*?) schrieb <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/Am (.*?) schrieb (.*?):\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/Am (.*?) schrieb (.*?)\n(.*?):\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + + $message = savereplace('/(\d+)\/(\d+)\/(\d+) ([^<"].*?) <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + + $message = savereplace('/On .*?, \d+ .*? \d+ \d+:\d+:\d+ \+\d+\s(.*?)\s<(.*?)>\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/On (.*?) at (.*?), (.*?)\s<(.*?)>\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$3']\n", $message); + $message = savereplace('/On (.*?)\n([^<].*?)\s<(.*?)>\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/On (.*?), (.*?), (.*?)\s<(.*?)>\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$3']\n", $message); + $message = savereplace('/On ([^,].*?), (.*?)\swrote:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/On (.*?), (.*?)\swrote\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + + // Der loescht manchmal den Body - was eigentlich unmoeglich ist + $message = savereplace('/On (.*?),(.*?),(.*?),(.*?), (.*?) wrote:\s*\['.$quote.'\]/i', "[".$quote."='$5']\n", $message); + + $message = savereplace('/Zitat von ([^<].*?) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/Quoting ([^<].*?) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/From: "([^<"].*?)" <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/From: <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/Du \(([^)].*?)\) schreibst:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/--- (.*?) <.*?> schrieb am (.*?):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/--- (.*?) schrieb am (.*?):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/\* (.*?) <(.*?)> hat geschrieben:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/(.*?) <(.*?)> schrieb (.*?)\):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) <(.*?)> schrieb am (.*?) um (.*):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) schrieb am (.*?) um (.*):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) \((.*?)\) schrieb:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/(.*?) schrieb:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/(.*?) <(.*?)> writes:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) \((.*?)\) writes:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + $message = savereplace('/(.*?) writes:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/\* (.*?) wrote:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) wrote \(.*?\):\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) wrote:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/([^<].*?) <.*?> hat am (.*?)\sum\s(.*)\sgeschrieben:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + + $message = savereplace('/(\d+)\/(\d+)\/(\d+) ([^<"].*?) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + $message = savereplace('/(\d+)\/(\d+)\/(\d+) (.*?) <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + $message = savereplace('/(\d+)\/(\d+)\/(\d+) <(.*?)>:\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + $message = savereplace('/(\d+)\/(\d+)\/(\d+) <(.*?)>\s*\['.$quote.'\]/i', "[".$quote."='$4']\n", $message); + + $message = savereplace('/(.*?) <(.*?)> schrubselte:\s*\['.$quote.'\]/i', "[".$quote."='$1']\n", $message); + $message = savereplace('/(.*?) \((.*?)\) schrubselte:\s*\['.$quote.'\]/i', "[".$quote."='$2']\n", $message); + + } + return($message); +} + +function removegpg($message) +{ + + $pattern = '/(.*)\s*-----BEGIN PGP SIGNED MESSAGE-----\s*[\r\n].*Hash:.*?[\r\n](.*)'. + '[\r\n]\s*-----BEGIN PGP SIGNATURE-----\s*[\r\n].*'. + '[\r\n]\s*-----END PGP SIGNATURE-----(.*)/is'; + + preg_match($pattern, $message, $result); + + $cleaned = trim($result[1].$result[2].$result[3]); + + $cleaned = str_replace(array("\n- --\n", "\n- -"), array("\n-- \n", "\n-"), $cleaned); + + + if ($cleaned == '') + $cleaned = $message; + + return($cleaned); +} + +function removesig($message) +{ + $sigpos = strrpos($message, "\n-- \n"); + $quotepos = strrpos($message, "[/quote]"); + + if ($sigpos == 0) { + // Speziell fuer web.de, die das als Trenner verwenden + $message = str_replace("\n___________________________________________________________\n", "\n-- \n", $message); + $sigpos = strrpos($message, "\n-- \n"); + $quotepos = strrpos($message, "[/quote]"); + } + + // Sollte sich der Signaturtrenner innerhalb eines Quotes befinden + // wird keine Signaturtrennung ausgefuehrt + if (($sigpos < $quotepos) and ($sigpos != 0)) + return(array('body' => $message, 'sig' => '')); + + // To-Do: Regexp umstellen, so dass auf 1 oder kein Leerzeichen + // geprueft wird + //$message = str_replace("\n--\n", "\n-- \n", $message); + + $pattern = '/(.*)[\r\n]-- [\r\n](.*)/is'; + + preg_match($pattern, $message, $result); + + if (($result[1] != '') and ($result[2] != '')) { + $cleaned = trim($result[1])."\n"; + $sig = trim($result[2]); + // '[hr][size=x-small][color=darkblue]'.trim($result[2]).'[/color][/size]'; + } else { + $cleaned = $message; + $sig = ''; + } + + return(array('body' => $cleaned, 'sig' => $sig)); +} + +function removelinebreak($message) +{ + $arrbody = explode("\n", trim($message)); + + $lines = array(); + $lineno = 0; + + foreach($arrbody as $i => $line) { + $currquotelevel = 0; + $currline = $line; + while ((strlen($currline)>0) and ((substr($currline, 0, 1) == '>') + or (substr($currline, 0, 1) == ' '))) { + if (substr($currline, 0, 1) == '>') + $currquotelevel++; + + $currline = ltrim(substr($currline, 1)); + } + + $quotelevel = 0; + $nextline = trim($arrbody[$i+1]); + while ((strlen($nextline)>0) and ((substr($nextline, 0, 1) == '>') + or (substr($nextline, 0, 1) == ' '))) { + if (substr($nextline, 0, 1) == '>') + $quotelevel++; + + $nextline = ltrim(substr($nextline, 1)); + } + + $len = strlen($line); + $firstword = strpos($nextline.' ', ' '); + + $specialchars = ((substr(trim($nextline), 0, 1) == '-') or + (substr(trim($nextline), 0, 1) == '=') or + (substr(trim($nextline), 0, 1) == '*') or + (substr(trim($nextline), 0, 1) == '·') or + (substr(trim($nextline), 0, 4) == '[url') or + (substr(trim($nextline), 0, 5) == '[size') or + (substr(trim($nextline), 0, 7) == 'http://') or + (substr(trim($nextline), 0, 8) == 'https://')); + + if (!$specialchars) + $specialchars = ((substr(rtrim($line), -1) == '-') or + (substr(rtrim($line), -1) == '=') or + (substr(rtrim($line), -1) == '*') or + (substr(rtrim($line), -1) == '·') or + (substr(rtrim($line), -6) == '[/url]') or + (substr(rtrim($line), -7) == '[/size]')); + + //if ($specialchars) + // echo ("Special\n"); + + if ($lines[$lineno] != '') { + if (substr($lines[$lineno], -1) != ' ') + $lines[$lineno] .= ' '; + + while ((strlen($line)>0) and ((substr($line, 0, 1) == '>') + or (substr($line, 0, 1) == ' '))) { + + $line = ltrim(substr($line, 1)); + } + + } + //else + // $lines[$lineno] = $quotelevel.'-'.$len.'-'.$firstword.'-'; + + $lines[$lineno] .= $line; + //if ((($len + $firstword < 68) and (substr($line, -1, 1) != ' ')) + // or ($quotelevel != $currquotelevel) or $specialchars) + if (((substr($line, -1, 1) != ' ')) + or ($quotelevel != $currquotelevel)) + $lineno++; + } + return(implode("\n", $lines)); + +} +?> diff --git a/include/poller.php b/include/poller.php index cfbc46b87e..3be6caebd7 100755 --- a/include/poller.php +++ b/include/poller.php @@ -1,7 +1,6 @@ Date: Sat, 10 Mar 2012 11:29:40 +0100 Subject: [PATCH 013/133] New config options if ostatus polling should use the priority in the contacts --- include/poller.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/poller.php b/include/poller.php index 3be6caebd7..f165ad5905 100755 --- a/include/poller.php +++ b/include/poller.php @@ -140,7 +140,10 @@ function poller_run($argv, $argc){ if($manual_id) $contact['last-update'] = '0000-00-00 00:00:00'; - if($contact['network'] === NETWORK_DFRN || $contact['network'] === NETWORK_OSTATUS) + if($contact['network'] === NETWORK_DFRN) + $contact['priority'] = 2; + + if(!get_config('system','ostatus_use_priority') and ($contact['network'] === NETWORK_OSTATUS)) $contact['priority'] = 2; if($contact['priority'] || $contact['subhub']) { From 74b3e9f273b019729d213f3ccaeba1bb11d61d24 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 10 Mar 2012 15:50:35 +0100 Subject: [PATCH 014/133] Enabled Caching for items. Changed color of tags in diabook. --- include/text.php | 17 ++++++++++++++++- view/theme/diabook/style.css | 4 ++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/include/text.php b/include/text.php index 5ad0154d7a..38736d8364 100644 --- a/include/text.php +++ b/include/text.php @@ -874,6 +874,14 @@ function link_compare($a,$b) { if(! function_exists('prepare_body')) { function prepare_body($item,$attach = false) { + $cache = get_config('system','itemcache'); + + if (($cache != '')) { + $cachefile = $cache."/".$item["guid"]."-".strtotime($item["edited"])."-".$attach; + if (file_exists($cachefile)) + return(file_get_contents($cachefile)); + } + call_hooks('prepare_body_init', $item); $s = prepare_text($item['body']); @@ -882,8 +890,11 @@ function prepare_body($item,$attach = false) { call_hooks('prepare_body', $prep_arr); $s = $prep_arr['html']; - if(! $attach) + if(! $attach) { + if ($cache != '') + file_put_contents($cachefile, $s); return $s; + } $arr = explode(',',$item['attach']); if(count($arr)) { @@ -917,6 +928,10 @@ function prepare_body($item,$attach = false) { $prep_arr = array('item' => $item, 'html' => $s); call_hooks('prepare_body_final', $prep_arr); + + if ($cache != '') + file_put_contents($cachefile, $prep_arr['html']); + return $prep_arr['html']; }} diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index 2d4670dca4..0504ce96a9 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -1277,14 +1277,14 @@ section { } .tag { /*background: url("../../../images/tag_b.png") repeat-x center left;*/ - color: #3465A4; + color: #999; padding-left: 3px; font-size: 12px; } .tag a { padding-right: 5px; /*background: url("../../../images/tag.png") no-repeat center right;*/ - color: #3465A4; + color: #999; } .wwto { position: absolute !important; From 670b571c8ac0532cc80fff6351f91b1b0fa58e0c Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sat, 10 Mar 2012 18:19:00 +0100 Subject: [PATCH 015/133] Caching improved. --- include/text.php | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/include/text.php b/include/text.php index 38736d8364..5bf815105b 100644 --- a/include/text.php +++ b/include/text.php @@ -874,25 +874,27 @@ function link_compare($a,$b) { if(! function_exists('prepare_body')) { function prepare_body($item,$attach = false) { + call_hooks('prepare_body_init', $item); + $cache = get_config('system','itemcache'); if (($cache != '')) { - $cachefile = $cache."/".$item["guid"]."-".strtotime($item["edited"])."-".$attach; + $cachefile = $cache."/".$item["guid"]."-".strtotime($item["edited"])."-".$attach."-".hash("crc32", $item['body']); + if (file_exists($cachefile)) - return(file_get_contents($cachefile)); - } - - call_hooks('prepare_body_init', $item); - - $s = prepare_text($item['body']); + $s = file_get_contents($cachefile); + else { + $s = prepare_text($item['body']); + file_put_contents($cachefile, $s); + } + } else + $s = prepare_text($item['body']); $prep_arr = array('item' => $item, 'html' => $s); call_hooks('prepare_body', $prep_arr); $s = $prep_arr['html']; if(! $attach) { - if ($cache != '') - file_put_contents($cachefile, $s); return $s; } @@ -925,13 +927,9 @@ function prepare_body($item,$attach = false) { $s .= '
'; } - $prep_arr = array('item' => $item, 'html' => $s); call_hooks('prepare_body_final', $prep_arr); - if ($cache != '') - file_put_contents($cachefile, $prep_arr['html']); - return $prep_arr['html']; }} From eb3b211461906c405c7d016401cb3cd6d7d03b83 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 14:22:19 +0100 Subject: [PATCH 016/133] New plugin that shows community pages in the sidebar --- addon/pages/README | 3 +++ addon/pages/pages.php | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100755 addon/pages/README create mode 100755 addon/pages/pages.php diff --git a/addon/pages/README b/addon/pages/README new file mode 100755 index 0000000000..6ec314b702 --- /dev/null +++ b/addon/pages/README @@ -0,0 +1,3 @@ +Pages + +Shows lists of community pages diff --git a/addon/pages/pages.php b/addon/pages/pages.php new file mode 100755 index 0000000000..13e6c4b593 --- /dev/null +++ b/addon/pages/pages.php @@ -0,0 +1,39 @@ + + * + */ + +function pages_install() { + register_hook('page_end', 'addon/pages/pages.php', 'pages_page_end'); +} + +function pages_uninstall() { + unregister_hook('page_end', 'addon/pages/pages.php', 'pages_page_end'); +} + +function pages_page_end($a,&$b) { + if (($a->module != "network") OR ($a->user['uid'] == 0)) + return; + + $pages = '

'.t("Community").'

    '; + $contacts = q("SELECT `contact`.`id`, `contact`.`url`, `contact`.`Name` FROM `contact`, `user` + WHERE `network`= 'dfrn' AND `duplex` + AND `contact`.`nick`=`user`.`nickname` + AND `user`.`page-flags`= %d + AND `contact`.`uid` = %d", + intval(PAGE_COMMUNITY), + intval($a->user['uid'])); + foreach($contacts as $contact) { + $pages .= '
  • '.$contact["Name"]."
  • "; + } + $pages .= "
"; + if (sizeof($contacts) > 0) + $a->page['aside'] = $pages.$a->page['aside']; + +} + +?> From b879a1ddf1575a3bd355edcee634be4a8d179c25 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 17:45:12 +0100 Subject: [PATCH 017/133] Pages: Show every community page - even from foreign servers (with caching) --- addon/pages/pages.php | 70 +++++++++++++++++++++++++++++------- view/theme/diabook/style.css | 3 ++ 2 files changed, 61 insertions(+), 12 deletions(-) diff --git a/addon/pages/pages.php b/addon/pages/pages.php index 13e6c4b593..6b242be316 100755 --- a/addon/pages/pages.php +++ b/addon/pages/pages.php @@ -15,25 +15,71 @@ function pages_uninstall() { unregister_hook('page_end', 'addon/pages/pages.php', 'pages_page_end'); } +function pages_iscommunity($url, &$pagelist) { + // check every week for the status - should be enough + if ($pagelist[$url]["checked"]') != 0); + + $pagelist[$url] = array("community" => $iscommunity, "checked" => time()); + } else // Fetch from cache + $iscommunity = $pagelist[$url]["community"]; + return($iscommunity); +} + +function pages_getpages($uid) { + + // Fetch cached pagelist from configuration + $pagelist = get_pconfig($uid,'pages','pagelist'); + + if (sizeof($pagelist) == 0) + $pagelist = array(); + + $contacts = q("SELECT `id`, `url`, `Name` FROM `contact` + WHERE `network`= 'dfrn' AND `uid` = %d", + intval($uid)); + + $pages = array(); + + // Look if the profile is a community page + foreach($contacts as $contact) { + if (pages_iscommunity($contact["url"], $pagelist)) + $pages[] = array("url"=>$contact["url"], "Name"=>$contact["Name"]); + } + + // Write back cached pagelist + set_pconfig($uid,'pages','pagelist', $pagelist); + return($pages); +} + function pages_page_end($a,&$b) { + // Only move on if if it's the "network" module and there is a logged on user if (($a->module != "network") OR ($a->user['uid'] == 0)) return; - $pages = '

'.t("Community").'

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

    '.t("Community").'

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

    '.t("Community").'

    -
    "; - if (sizeof($contacts) > 0) - $a->page['aside'] = $pages.$a->page['aside']; -} -?> From 9ca5de8c281fa0a7b2323f33765bca25b64bc29d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 19:45:28 +0100 Subject: [PATCH 020/133] Item cache now is one day. --- include/poller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/poller.php b/include/poller.php index 65fafda4c8..3bc98e36ff 100755 --- a/include/poller.php +++ b/include/poller.php @@ -75,7 +75,7 @@ function poller_run($argv, $argc){ if ($dh = opendir($cache)) { while (($file = readdir($dh)) !== false) { $fullpath = $cache."/".$file; - if ((filetype($fullpath) == "file") and filectime($fullpath) < (time() - 1800)) + if ((filetype($fullpath) == "file") and filectime($fullpath) < (time() - 86400)) unlink($fullpath); } closedir($dh); From ebdf4842184cc8d0576abe99b29650c6b6512167 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 19:50:51 +0100 Subject: [PATCH 021/133] Added config options for the item cache and the ostatus priority --- htconfig.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/htconfig.php b/htconfig.php index f52aed2b10..9d9c8a2c79 100755 --- a/htconfig.php +++ b/htconfig.php @@ -79,3 +79,9 @@ $a->config['system']['theme'] = 'duepuntozero'; // By default allow pseudonyms $a->config['system']['no_regfullname'] = true; + +// If set to true the priority settings of ostatus contacts are used +$a->config['system']['ostatus_use_priority'] = false; + +// If enabled all items are cached in the given directory +$a->config['system']['itemcache'] = ""; From 7235d5466a4f54cd80d1b661b142ec99230afbf2 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 20:24:55 +0100 Subject: [PATCH 022/133] Removed changes --- view/theme/diabook/wall_item.tpl | 14 +++++--------- view/theme/diabook/wallwall_item.tpl | 16 ++++++---------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/view/theme/diabook/wall_item.tpl b/view/theme/diabook/wall_item.tpl index 6cbab0a715..321bbbe9ea 100644 --- a/view/theme/diabook/wall_item.tpl +++ b/view/theme/diabook/wall_item.tpl @@ -13,7 +13,8 @@ $item.name - menu + menu @@ -21,7 +22,8 @@
    - $item.name + $item.name - {{ if $item.plink }}$item.ago{{ else }} $item.ago {{ endif }} {{ if $item.lock }} - $item.lock {{ endif }} @@ -46,10 +48,7 @@
    -<<<<<<< HEAD:view/theme/diabook/wall_item.tpl -======= ->>>>>>> upstream/master:view/theme/diabook/wall_item.tpl
    @@ -85,11 +84,7 @@ {{ endif }}
    -<<<<<<< HEAD:view/theme/diabook/wall_item.tpl -
    $item.location 
    -=======
    $item.location 
    ->>>>>>> upstream/master:view/theme/diabook/wall_item.tpl
    @@ -102,3 +97,4 @@
    $item.comment
    + diff --git a/view/theme/diabook/wallwall_item.tpl b/view/theme/diabook/wallwall_item.tpl index 4f0a2e25fd..05ed4cc82c 100644 --- a/view/theme/diabook/wallwall_item.tpl +++ b/view/theme/diabook/wallwall_item.tpl @@ -18,7 +18,8 @@ $item.name - menu + menu @@ -26,8 +27,10 @@
    - $item.name - $item.to $item.owner_name + $item.name + $item.to $item.owner_name $item.vwall -   {{ if $item.plink }}$item.ago{{ else }} $item.ago {{ endif }} {{ if $item.lock }} - $item.lock {{ endif }} @@ -52,10 +55,7 @@
    -<<<<<<< HEAD:view/theme/diabook/wallwall_item.tpl -======= ->>>>>>> upstream/master:view/theme/diabook/wallwall_item.tpl
    @@ -92,10 +92,6 @@ {{ endif }}
    $item.location 
    -<<<<<<< HEAD:view/theme/diabook/wallwall_item.tpl - -======= ->>>>>>> upstream/master:view/theme/diabook/wallwall_item.tpl
    From 905ba5ba1d5d8e2d0caa5c0208357672ee527b7d Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 22:39:40 +0100 Subject: [PATCH 023/133] Missing field in database.sql --- database.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/database.sql b/database.sql index 35c257f021..2add8bd856 100755 --- a/database.sql +++ b/database.sql @@ -636,6 +636,7 @@ CREATE TABLE IF NOT EXISTS `mailacct` ( `mailbox` CHAR( 255 ) NOT NULL, `user` CHAR( 255 ) NOT NULL , `pass` TEXT NOT NULL , +`reply_to` CHAR( 255 ) NOT NULL , `action` INT NOT NULL , `movetofolder` CHAR(255) NOT NULL , `pubmail` TINYINT(1) NOT NULL DEFAULT '0', From 2ed6b3531eb1a9b778dfd87614fd824480a135e2 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Sun, 11 Mar 2012 23:29:59 +0100 Subject: [PATCH 024/133] Removing test exports --- include/delivery.php | 4 ++-- include/notifier.php | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/delivery.php b/include/delivery.php index c1ff07bd54..41869988dc 100755 --- a/include/delivery.php +++ b/include/delivery.php @@ -435,8 +435,8 @@ function delivery_run($argv, $argc){ $headers .= 'Reply-to: ' . $reply_to . "\n"; // for testing purposes: Collect exported mails - $file = tempnam("/tmp/friendica/", "mail-out-"); - file_put_contents($file, json_encode($it)); + // $file = tempnam("/tmp/friendica/", "mail-out-"); + // file_put_contents($file, json_encode($it)); $headers .= 'Message-Id: <' . iri2msgid($it['uri']). '>' . "\n"; diff --git a/include/notifier.php b/include/notifier.php index 5b23406fce..c0a98c8eb3 100755 --- a/include/notifier.php +++ b/include/notifier.php @@ -648,8 +648,8 @@ function notifier_run($argv, $argc){ $headers .= 'Reply-to: ' . $reply_to . "\n"; // for testing purposes: Collect exported mails - $file = tempnam("/tmp/friendica/", "mail-out2-"); - file_put_contents($file, json_encode($it)); + //$file = tempnam("/tmp/friendica/", "mail-out2-"); + //file_put_contents($file, json_encode($it)); $headers .= 'Message-Id: <' . iri2msgid($it['uri']) . '>' . "\n"; From 6e7a190e9197bcf4d00accc5d85ccca4a080bec8 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Mon, 12 Mar 2012 00:22:12 +0100 Subject: [PATCH 025/133] Mail: Subject are now with working "Re:" --- include/delivery.php | 28 +++++++--------------------- include/notifier.php | 31 ++++++++----------------------- 2 files changed, 15 insertions(+), 44 deletions(-) diff --git a/include/delivery.php b/include/delivery.php index 41869988dc..44a482ca28 100755 --- a/include/delivery.php +++ b/include/delivery.php @@ -446,30 +446,16 @@ function delivery_run($argv, $argc){ if($it['uri'] !== $it['parent-uri']) { $headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n"; - if(! strlen($it['title'])) { + if(!strlen($it['title'])) { $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1", - dbesc($it['parent-uri']) - ); - if(count($r)) { - $subtitle = $r[0]['title']; - if($subtitle) { - if(strncasecmp($subtitle,'RE:',3)) - $subject = $subtitle; - else - $subject = 'Re: ' . $subtitle; - } - } + dbesc($it['parent-uri'])); + + if(count($r) AND ($r[0]['title'] != '')) + $subject = $r[0]['title']; } + if(strncasecmp($subject,'RE:',3)) + $subject = 'Re: '.$subject; } - /*$headers .= 'MIME-Version: 1.0' . "\n"; - //$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n"; - $headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n"; - $headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n"; - $html = prepare_body($it); - //$message = '' . $html . ''; - $message = html2plain($html); - logger('notifier: email delivery to ' . $addr); - mail($addr, $subject, $message, $headers);*/ email_send($addr, $subject, $headers, $it); } break; diff --git a/include/notifier.php b/include/notifier.php index c0a98c8eb3..07edc70465 100755 --- a/include/notifier.php +++ b/include/notifier.php @@ -655,31 +655,16 @@ function notifier_run($argv, $argc){ if($it['uri'] !== $it['parent-uri']) { $headers .= 'References: <' . iri2msgid($it['parent-uri']) . '>' . "\n"; - if(! strlen($it['title'])) { + if(!strlen($it['title'])) { $r = q("SELECT `title` FROM `item` WHERE `parent-uri` = '%s' LIMIT 1", - dbesc($it['parent-uri']) - ); - if(count($r)) { - $subtitle = $r[0]['title']; - if($subtitle) { - if(strncasecmp($subtitle,'RE:',3)) - $subject = $subtitle; - else - $subject = 'Re: ' . $subtitle; - } - } - } - } + dbesc($it['parent-uri'])); - /*$headers .= 'MIME-Version: 1.0' . "\n"; - //$headers .= 'Content-Type: text/html; charset=UTF-8' . "\n"; - $headers .= 'Content-Type: text/plain; charset=UTF-8' . "\n"; - $headers .= 'Content-Transfer-Encoding: 8bit' . "\n\n"; - $html = prepare_body($it); - //$message = '' . $html . ''; - $message = html2plain($html); - logger('notifier: email delivery to ' . $addr); - mail($addr, $subject, $message, $headers);*/ + if(count($r) AND ($r[0]['title'] != '')) + $subject = $r[0]['title']; + } + if(strncasecmp($subject,'RE:',3)) + $subject = 'Re: '.$subject; + } email_send($addr, $subject, $headers, $it); } break; From c30342e2f7bde6fda899193f97ce3051cd8b2fdd Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 12 Mar 2012 15:58:59 +0100 Subject: [PATCH 026/133] 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 59766b944c9ea3a45b1d7e8593f7bb5d4a0b8445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Mon, 12 Mar 2012 20:17:37 +0000 Subject: [PATCH 027/133] Some security against XSRF-attacks --- include/security.php | 46 +++++++++++++++++++++++++ mod/profile_photo.php | 18 ++++++---- mod/profiles.php | 26 ++++++++++++--- mod/settings.php | 59 +++++++++++++++++++++------------ view/cropbody.tpl | 1 + view/profile_edit.tpl | 5 +-- view/profile_listing_header.tpl | 2 +- view/profile_photo.tpl | 1 + view/settings.tpl | 2 +- view/settings_addons.tpl | 1 + view/settings_connectors.tpl | 1 + view/settings_oauth.tpl | 5 +-- view/settings_oauth_edit.tpl | 2 ++ 13 files changed, 131 insertions(+), 38 deletions(-) diff --git a/include/security.php b/include/security.php index 8c536b656a..6ea515bffe 100755 --- a/include/security.php +++ b/include/security.php @@ -288,3 +288,49 @@ function item_permissions_sql($owner_id,$remote_verified = false,$groups = null) } +/* + * Functions used to protect against Cross-Site Request Forgery + * The security token has to base on at least one value that an attacker can't know - here it's the session ID and the private key. + * In this implementation, a security token is reusable (if the user submits a form, goes back and resubmits the form, maybe with small changes; + * or if the security token is used for ajax-calls that happen several times), but only valid for a certain amout of time (3hours). + * The "typename" seperates the security tokens of different types of forms. This could be relevant in the following case: + * A security token is used to protekt a link from CSRF (e.g. the "delete this profile"-link). + * If the new page contains by any chance external elements, then the used security token is exposed by the referrer. + * Actually, important actions should not be triggered by Links / GET-Requests at all, but somethimes they still are, + * so this mechanism brings in some damage control (the attacker would be able to forge a request to a form of this type, but not to forms of other types). + */ +function get_form_security_token($typename = "") { + $a = get_app(); + + $timestamp = time(); + $sec_hash = hash('whirlpool', $a->user["guid"] . $a->user["prvkey"] . session_id() . $timestamp . $typename); + + return $timestamp . "." . $sec_hash; +} + +function check_form_security_token($typename = "", $formname = 'form_security_token') { + if (!x($_REQUEST, $formname)) return false; + $hash = $_REQUEST[$formname]; + + $max_livetime = 10800; // 3 hours + + $a = get_app(); + + $x = explode(".", $hash); + if (time() > (IntVal($x[0]) + $max_livetime)) return false; + + $sec_hash = hash('whirlpool', $a->user["guid"] . $a->user["prvkey"] . session_id() . $x[0] . $typename); + + return ($sec_hash == $x[1]); +} + +function check_form_security_std_err_msg() { + return t('The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before subitting it.') . EOL; +} +function check_form_security_token_redirectOnErr($err_redirect, $typename = "", $formname = 'form_security_token') { + if (!check_form_security_token($typename, $formname)) { + $a = get_app(); + notice( check_form_security_std_err_msg() ); + goaway($a->get_baseurl() . $err_redirect ); + } +} diff --git a/mod/profile_photo.php b/mod/profile_photo.php index e3dbdaf39c..d1fd08eba6 100755 --- a/mod/profile_photo.php +++ b/mod/profile_photo.php @@ -15,11 +15,13 @@ function profile_photo_init(&$a) { function profile_photo_post(&$a) { - if(! local_user()) { - notice ( t('Permission denied.') . EOL ); - return; - } - + if(! local_user()) { + notice ( t('Permission denied.') . EOL ); + return; + } + + check_form_security_token_redirectOnErr('/profile_photo', 'profile_photo'); + if((x($_POST,'cropfinal')) && ($_POST['cropfinal'] == 1)) { // phase 2 - we have finished cropping @@ -148,7 +150,9 @@ function profile_photo_content(&$a) { notice( t('Permission denied.') . EOL ); return; }; - + + check_form_security_token_redirectOnErr('/profile_photo', 'profile_photo'); + $resource_id = $a->argv[2]; //die(":".local_user()); $r=q("SELECT * FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' ORDER BY `scale` ASC", @@ -203,6 +207,7 @@ function profile_photo_content(&$a) { '$lbl_upfile' => t('Upload File:'), '$title' => t('Upload Profile Photo'), '$submit' => t('Upload'), + '$form_security_token' => get_form_security_token("profile_photo"), '$select' => sprintf('%s %s', t('or'), ($newuser) ? '' . t('skip this step') . '' : '' . t('select a photo from your photo albums') . '') )); @@ -218,6 +223,7 @@ function profile_photo_content(&$a) { '$image_url' => $a->get_baseurl() . '/photo/' . $filename, '$title' => t('Crop Image'), '$desc' => t('Please adjust the image cropping for optimum viewing.'), + '$form_security_token' => get_form_security_token("profile_photo"), '$done' => t('Done Editing') )); return $o; diff --git a/mod/profiles.php b/mod/profiles.php index ccd7d54741..b307a2d43b 100755 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -21,6 +21,9 @@ function profiles_post(&$a) { notice( t('Profile not found.') . EOL); return; } + + check_form_security_token_redirectOnErr('/profiles', 'profile_edit'); + $is_default = (($orig[0]['is-default']) ? 1 : 0); $profile_name = notags(trim($_POST['profile_name'])); @@ -240,6 +243,8 @@ function profiles_content(&$a) { goaway($a->get_baseurl() . '/profiles'); return; // NOTREACHED } + + check_form_security_token_redirectOnErr('/profiles', 'profile_drop', 't'); // move every contact using this profile as their default to the user default @@ -264,6 +269,8 @@ function profiles_content(&$a) { if(($a->argc > 1) && ($a->argv[1] === 'new')) { + + check_form_security_token_redirectOnErr('/profiles', 'profile_new', 't'); $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d", intval(local_user())); @@ -291,10 +298,13 @@ function profiles_content(&$a) { info( t('New profile created.') . EOL); if(count($r3) == 1) goaway($a->get_baseurl() . '/profiles/' . $r3[0]['id']); + goaway($a->get_baseurl() . '/profiles'); - } + } if(($a->argc > 2) && ($a->argv[1] === 'clone')) { + + check_form_security_token_redirectOnErr('/profiles', 'profile_clone', 't'); $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d", intval(local_user())); @@ -330,9 +340,11 @@ function profiles_content(&$a) { info( t('New profile created.') . EOL); if(count($r3) == 1) goaway($a->get_baseurl() . '/profiles/' . $r3[0]['id']); - goaway($a->get_baseurl() . '/profiles'); - return; // NOTREACHED - } + + goaway($a->get_baseurl() . '/profiles'); + + return; // NOTREACHED + } if(($a->argc > 1) && (intval($a->argv[1]))) { @@ -371,6 +383,9 @@ function profiles_content(&$a) { $is_default = (($r[0]['is-default']) ? 1 : 0); $tpl = get_markup_template("profile_edit.tpl"); $o .= replace_macros($tpl,array( + '$form_security_token' => get_form_security_token("profile_edit"), + '$profile_clone_link' => 'profiles/clone/' . $r[0]['id'] . '?t=' . get_form_security_token("profile_clone"), + '$profile_drop_link' => 'profiles/drop/' . $r[0]['id'] . '?t=' . get_form_security_token("profile_drop"), '$banner' => t('Edit Profile Details'), '$submit' => t('Submit'), '$viewprof' => t('View this profile'), @@ -460,7 +475,8 @@ function profiles_content(&$a) { $o .= replace_macros($tpl_header,array( '$header' => t('Edit/Manage Profiles'), '$chg_photo' => t('Change profile photo'), - '$cr_new' => t('Create New Profile') + '$cr_new' => t('Create New Profile'), + '$cr_new_link' => 'profiles/new?t=' . get_form_security_token("profile_new") )); diff --git a/mod/settings.php b/mod/settings.php index 2ef582fdfe..f42fdb3973 100755 --- a/mod/settings.php +++ b/mod/settings.php @@ -53,6 +53,8 @@ function settings_post(&$a) { $old_page_flags = $a->user['page-flags']; if(($a->argc > 1) && ($a->argv[1] === 'oauth') && x($_POST,'remove')){ + check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth'); + $key = $_POST['remove']; q("DELETE FROM tokens WHERE id='%s' AND uid=%d", dbesc($key), @@ -63,6 +65,8 @@ function settings_post(&$a) { if(($a->argc > 2) && ($a->argv[1] === 'oauth') && ($a->argv[2] === 'edit'||($a->argv[2] === 'add')) && x($_POST,'submit')) { + check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth'); + $name = ((x($_POST,'name')) ? $_POST['name'] : ''); $key = ((x($_POST,'key')) ? $_POST['key'] : ''); $secret = ((x($_POST,'secret')) ? $_POST['secret'] : ''); @@ -105,13 +109,18 @@ function settings_post(&$a) { } if(($a->argc > 1) && ($a->argv[1] == 'addon')) { + check_form_security_token_redirectOnErr('/settings/addon', 'settings_addon'); + call_hooks('plugin_settings_post', $_POST); return; } if(($a->argc > 1) && ($a->argv[1] == 'connectors')) { - - if(x($_POST['imap-submit'])) { + + check_form_security_token_redirectOnErr('/settings/connectors', 'settings_connectors'); + + if(x($_POST, 'imap-submit')) { + $mail_server = ((x($_POST,'mail_server')) ? $_POST['mail_server'] : ''); $mail_port = ((x($_POST,'mail_port')) ? $_POST['mail_port'] : ''); $mail_ssl = ((x($_POST,'mail_ssl')) ? strtolower(trim($_POST['mail_ssl'])) : ''); @@ -185,7 +194,8 @@ function settings_post(&$a) { return; } - + check_form_security_token_redirectOnErr('/settings', 'settings'); + call_hooks('settings_post', $_POST); if((x($_POST,'npassword')) || (x($_POST,'confirm'))) { @@ -460,6 +470,7 @@ function settings_content(&$a) { if(($a->argc > 2) && ($a->argv[2] === 'add')) { $tpl = get_markup_template("settings_oauth_edit.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_oauth"), '$tabs' => $tabs, '$title' => t('Add application'), '$submit' => t('Submit'), @@ -486,6 +497,7 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_oauth_edit.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_oauth"), '$tabs' => $tabs, '$title' => t('Add application'), '$submit' => t('Update'), @@ -500,6 +512,8 @@ function settings_content(&$a) { } if(($a->argc > 3) && ($a->argv[2] === 'delete')) { + check_form_security_token_redirectOnErr('/settings/oauth', 'settings_oauth', 't'); + $r = q("DELETE FROM clients WHERE client_id='%s' AND uid=%d", dbesc($a->argv[3]), local_user()); @@ -518,6 +532,7 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_oauth.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_oauth"), '$baseurl' => $a->get_baseurl(), '$title' => t('Connected Apps'), '$add' => t('Add application'), @@ -544,6 +559,7 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_addons.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_addons"), '$title' => t('Plugin Settings'), '$tabs' => $tabs, '$settings_addons' => $settings_addons @@ -586,28 +602,28 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_connectors.tpl"); $o .= replace_macros($tpl, array( + '$form_security_token' => get_form_security_token("settings_connectors"), + '$title' => t('Connector Settings'), '$tabs' => $tabs, - '$diasp_enabled' => $diasp_enabled, - '$ostat_enabled' => $ostat_enabled, - - '$h_imap' => t('Email/Mailbox Setup'), - '$imap_desc' => t("If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."), - '$imap_lastcheck' => array('imap_lastcheck', t('Last successful email check:'), $mail_chk,''), - '$mail_disabled' => (($mail_disabled) ? t('Email access is disabled on this site.') : ''), - '$mail_server' => array('mail_server', t('IMAP server name:'), $mail_server, ''), - '$mail_port' => array('mail_port', t('IMAP port:'), $mail_port, ''), - '$mail_ssl' => array('mail_ssl', t('Security:'), strtoupper($mail_ssl), '', array( ''=>t('None'), 'TLS'=>'TLS', 'SSL'=>'SSL')), - '$mail_user' => array('mail_user', t('Email login name:'), $mail_user, ''), - '$mail_pass' => array('mail_pass', t('Email password:'), '', ''), - '$mail_replyto' => array('mail_replyto', t('Reply-to address:'), '', 'Optional'), - '$mail_pubmail' => array('mail_pubmail', t('Send public posts to all email contacts:'), $mail_pubmail, ''), - '$mail_action' => array('mail_action', t('Action after import:'), $mail_action, '', array(0=>t('None'), 1=>t('Delete'), 2=>t('Mark as seen'), 3=>t('Move to folder'))), - '$mail_movetofolder' => array('mail_movetofolder', t('Move to folder:'), $mail_movetofolder, ''), - '$submit' => t('Submit'), - + '$diasp_enabled' => $diasp_enabled, + '$ostat_enabled' => $ostat_enabled, + '$h_imap' => t('Email/Mailbox Setup'), + '$imap_desc' => t("If you wish to communicate with email contacts using this service \x28optional\x29, please specify how to connect to your mailbox."), + '$imap_lastcheck' => array('imap_lastcheck', t('Last successful email check:'), $mail_chk,''), + '$mail_disabled' => (($mail_disabled) ? t('Email access is disabled on this site.') : ''), + '$mail_server' => array('mail_server', t('IMAP server name:'), $mail_server, ''), + '$mail_port' => array('mail_port', t('IMAP port:'), $mail_port, ''), + '$mail_ssl' => array('mail_ssl', t('Security:'), strtoupper($mail_ssl), '', array( ''=>t('None'), 'TLS'=>'TLS', 'SSL'=>'SSL')), + '$mail_user' => array('mail_user', t('Email login name:'), $mail_user, ''), + '$mail_pass' => array('mail_pass', t('Email password:'), '', ''), + '$mail_replyto' => array('mail_replyto', t('Reply-to address:'), '', 'Optional'), + '$mail_pubmail' => array('mail_pubmail', t('Send public posts to all email contacts:'), $mail_pubmail, ''), + '$mail_action' => array('mail_action', t('Action after import:'), $mail_action, '', array(0=>t('None'), 1=>t('Delete'), 2=>t('Mark as seen'), 3=>t('Move to folder'))), + '$mail_movetofolder' => array('mail_movetofolder', t('Move to folder:'), $mail_movetofolder, ''), + '$submit' => t('Submit'), '$settings_connectors' => $settings_connectors )); @@ -805,6 +821,7 @@ function settings_content(&$a) { '$submit' => t('Submit'), '$baseurl' => $a->get_baseurl(), '$uid' => local_user(), + '$form_security_token' => get_form_security_token("settings"), '$nickname_block' => $prof_addr, diff --git a/view/cropbody.tpl b/view/cropbody.tpl index c9c0f84de1..b484d15bf7 100755 --- a/view/cropbody.tpl +++ b/view/cropbody.tpl @@ -40,6 +40,7 @@ $desc
    + diff --git a/view/profile_edit.tpl b/view/profile_edit.tpl index 8dab726492..e5c7162d03 100755 --- a/view/profile_edit.tpl +++ b/view/profile_edit.tpl @@ -5,9 +5,9 @@ $default @@ -17,6 +17,7 @@ $default
    +
    diff --git a/view/profile_listing_header.tpl b/view/profile_listing_header.tpl index 09e4fc9b24..61a2737929 100755 --- a/view/profile_listing_header.tpl +++ b/view/profile_listing_header.tpl @@ -3,6 +3,6 @@ $chg_photo

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

    $title

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

    $h_pass

    diff --git a/view/settings_addons.tpl b/view/settings_addons.tpl index 2cbfd17e92..28fca53620 100755 --- a/view/settings_addons.tpl +++ b/view/settings_addons.tpl @@ -4,6 +4,7 @@ $tabs + $settings_addons diff --git a/view/settings_connectors.tpl b/view/settings_connectors.tpl index 9493c8bf77..43c0346bba 100755 --- a/view/settings_connectors.tpl +++ b/view/settings_connectors.tpl @@ -6,6 +6,7 @@ $tabs
    $ostat_enabled
    + $settings_connectors diff --git a/view/settings_oauth.tpl b/view/settings_oauth.tpl index 0de0dbe98a..da1398ab96 100755 --- a/view/settings_oauth.tpl +++ b/view/settings_oauth.tpl @@ -4,7 +4,8 @@ $tabs - + + {{ endfor }} diff --git a/view/settings_oauth_edit.tpl b/view/settings_oauth_edit.tpl index 98b7457aa4..d293413867 100755 --- a/view/settings_oauth_edit.tpl +++ b/view/settings_oauth_edit.tpl @@ -3,6 +3,8 @@ $tabs

    $title

    + + {{ inc field_input.tpl with $field=$name }}{{ endinc }} {{ inc field_input.tpl with $field=$key }}{{ endinc }} {{ inc field_input.tpl with $field=$secret }}{{ endinc }} From 5a1e2c32fe4a36b1dbbaa6b224c8ced6cb3358c4 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Mon, 12 Mar 2012 17:12:01 -0400 Subject: [PATCH 028/133] Merge branch 'master', remote-tracking branch 'remotes/upstream/master' * remotes/upstream/master: add lightbox, fixex in css more save to file backend backend for "save to file" feature * master: From acf75e85c86a2e47549ee74d60c7d82dcc5c8cc4 Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 12 Mar 2012 19:12:00 -0700 Subject: [PATCH 029/133] revup --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index b30f02c9f6..ace358faa7 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.1278' ); +define ( 'FRIENDICA_VERSION', '2.3.1279' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DB_UPDATE_VERSION', 1131 ); From bf7425c591de360a97c37544f777d7d69791420c Mon Sep 17 00:00:00 2001 From: friendica Date: Mon, 12 Mar 2012 20:21:32 -0700 Subject: [PATCH 030/133] click anywhere to close notifications -> zeros and bubbles --- view/theme/darkbubble/theme.php | 18 ++++++++++++++++++ view/theme/darkzero-NS/theme.php | 2 ++ view/theme/darkzero/theme.php | 2 ++ view/theme/duepuntozero/theme.php | 2 ++ view/theme/greenzero/theme.php | 2 ++ view/theme/purplezero/theme.php | 2 ++ view/theme/slackr/theme.php | 2 ++ view/theme/testbubble/theme.php | 9 +++++++++ 8 files changed, 39 insertions(+) diff --git a/view/theme/darkbubble/theme.php b/view/theme/darkbubble/theme.php index 326c98bbda..053730c21a 100755 --- a/view/theme/darkbubble/theme.php +++ b/view/theme/darkbubble/theme.php @@ -1,4 +1,22 @@ + */ + + $a->theme_info = array( 'extends' => 'testbubble', ); + + +$a->page['htmlhead'] .= <<< EOT + +EOT; diff --git a/view/theme/darkzero-NS/theme.php b/view/theme/darkzero-NS/theme.php index 521b1859e9..2d3e4fd56e 100755 --- a/view/theme/darkzero-NS/theme.php +++ b/view/theme/darkzero-NS/theme.php @@ -15,6 +15,8 @@ $a->page['htmlhead'] .= <<< EOT +EOT; From 5a4167646553e589cf9647c0e0d0446e3f5fd672 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 13 Mar 2012 04:04:26 -0700 Subject: [PATCH 031/133] initial tag display for categories and save-to-file - suitable for testing but needs cleanup, links to delete term, and theming. --- include/text.php | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/include/text.php b/include/text.php index 011006b764..2663bdebaa 100644 --- a/include/text.php +++ b/include/text.php @@ -913,6 +913,33 @@ function prepare_body($item,$attach = false) { } $s .= '
    '; } + $matches = false; + $cnt = preg_match_all('/<(.*?)>/',$item['file'],$matches,PREG_SET_ORDER); + if($cnt) { + logger('prepare_text: categories: ' . print_r($matches,true), LOGGER_DEBUG); + foreach($matches as $mtch) { + if(strlen($x)) + $x .= ','; + $x .= file_tag_decode($mtch[1]); + } + if(strlen($x)) + $s .= '
    ' . t('Categories:') . ' ' . $x . '
    '; + + + } + $matches = false; + $x = ''; + $cnt = preg_match_all('/\[(.*?)\]/',$item['file'],$matches,PREG_SET_ORDER); + if($cnt) { + logger('prepare_text: filed_under: ' . print_r($matches,true), LOGGER_DEBUG); + foreach($matches as $mtch) { + if(strlen($x)) + $x .= ','; + $x .= file_tag_decode($mtch[1]); + } + if(strlen($x) && (local_user() == $item['uid'])) + $s .= '
    ' . t('Filed under:') . ' ' . $x . '
    '; + } $prep_arr = array('item' => $item, 'html' => $s); From 7868e3897b0f282611f1ccb1715a30a93404ddc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B6=C3=9Fl?= Date: Tue, 13 Mar 2012 21:46:57 +0000 Subject: [PATCH 032/133] In HTML2BBCode: fetch the URL of [EMBED] using JavaScript instead of an ajax-call to a php-script. Once there actually is embedded Code in the HTML, this function is called after every single keypress. Not only is making an ajax-call every keypress bandith intensive - it also made typing hard / slow. Making a lot of JavaScript-RegExp-Computation every keypress isn't exactly great either, but still performs better. --- .../plugins/bbcode/editor_plugin_src.js | 262 ++++++++++-------- 1 file changed, 140 insertions(+), 122 deletions(-) diff --git a/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js b/library/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js index 44d1473a99..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 @@ -44,61 +44,79 @@ _dfrn_html2bbcode : function(s) { s = tinymce.trim(s); - function rep(re, str) { - - //modify code to keep stuff intact within [code][/code] blocks - //Waitman Gobble NO WARRANTY - - - var o = new Array(); - var x = s.split("[code]"); - var i = 0; - - var si = ""; - si = x.shift(); - si = si.replace(re,str); - o.push(si); - - for (i = 0; i < x.length; i++) { - var no = new Array(); - var j = x.shift(); - var g = j.split("[/code]"); - no.push(g.shift()); - si = g.shift(); - si = si.replace(re,str); - no.push(si); - o.push(no.join("[/code]")); - } - - s = o.join("[code]"); - - }; - - - - - /* oembed */ - function _h2b_cb(match) { - function s_h2b(data) { - match = data; + function rep(re, str) { + + //modify code to keep stuff intact within [code][/code] blocks + //Waitman Gobble NO WARRANTY + + + var o = new Array(); + var x = s.split("[code]"); + var i = 0; + + var si = ""; + si = x.shift(); + si = si.replace(re,str); + o.push(si); + + for (i = 0; i < x.length; i++) { + var no = new Array(); + var j = x.shift(); + var g = j.split("[/code]"); + no.push(g.shift()); + si = g.shift(); + si = si.replace(re,str); + no.push(si); + o.push(no.join("[/code]")); + } + + s = o.join("[code]"); + + }; + + + + + /* oembed */ + function _h2b_cb(match) { + /* + function s_h2b(data) { + match = data; } $.ajax({ - type:"POST", + type:"POST", url: 'oembed/h2b', - data: {text: match}, - async: false, - success: s_h2b, - dataType: 'html' - }); - return match; - } + data: {text: match}, + async: false, + success: s_h2b, + dataType: 'html' + }); + */ + + var f, g, tof = [], tor = []; + var find_spanc = /]*class *= *[\"'](?:[^\"']* )*oembed(?: [^\"']*)*[\"'][^>]*>(.*?(?:]*>(.*?)<\/span *>)*.*?)<\/span *>/ig; + while (f = find_spanc.exec(match)) { + var find_a = /]* rel=[\"']oembed[\"'][^>]*)>.*?<\/a *>/ig; + if (g = find_a.exec(f[1])) { + var find_href = /href=[\"']([^\"']*)[\"']/ig; + var m2 = find_href.exec(g[1]); + if (m2[1]) { + tof.push(f[0]); + tor.push("[EMBED]" + m2[1] + "[/EMBED]"); + } + } + } + for (var i = 0; i < tof.length; i++) match = match.replace(tof[i], tor[i]); + + return match; + } if (s.indexOf('class="oembed')>=0){ //alert("request oembed html2bbcode"); s = _h2b_cb(s); } - - /* /oembed */ - + + /* /oembed */ + // example: to [b] rep(/(.*?)<\/a>/gi,"[bookmark=$1]$2[/bookmark]"); @@ -111,16 +129,16 @@ rep(//gi,"[img=$3x$2]$1[/img]"); rep(//gi,"[img=$2x$3]$1[/img]"); rep(//gi,"[img]$1[/img]"); - - rep(/
      (.*?)<\/ul>/gi,"[list]$1[/list]"); - rep(/
        (.*?)<\/ul>/gi,"[list=]$1[/list]"); - rep(/
          (.*?)<\/ul>/gi,"[list=1]$1[/list]"); - rep(/
            (.*?)<\/ul>/gi,"[list=i]$1[/list]"); - rep(/
              (.*?)<\/ul>/gi,"[list=I]$1[/list]"); - rep(/
                (.*?)<\/ul>/gi,"[list=a]$1[/list]"); - rep(/
                  (.*?)<\/ul>/gi,"[list=A]$1[/list]"); - rep(/
                • (.*?)<\/li>/gi,'[li]$1[/li]'); - + + rep(/
                    (.*?)<\/ul>/gi,"[list]$1[/list]"); + rep(/
                      (.*?)<\/ul>/gi,"[list=]$1[/list]"); + rep(/
                        (.*?)<\/ul>/gi,"[list=1]$1[/list]"); + rep(/
                          (.*?)<\/ul>/gi,"[list=i]$1[/list]"); + rep(/
                            (.*?)<\/ul>/gi,"[list=I]$1[/list]"); + rep(/ +$invite_desc +

                            +

                            $desc

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

                            $title

                            +
                            $desc
                            + + + +
                            diff --git a/view/jot-header.tpl b/view/jot-header.tpl index d6b172b6af..88df73494f 100755 --- a/view/jot-header.tpl +++ b/view/jot-header.tpl @@ -262,6 +262,18 @@ function enableOnUser(){ } } + function itemFiler(id) { + reply = prompt("$fileas"); + if(reply && reply.length) { + commentBusy = true; + $('body').css('cursor', 'wait'); + $.get('filer/' + id + '?term=' + reply); + if(timer) clearTimeout(timer); + timer = setTimeout(NavUpdate,3000); + liking = 1; + } + } + function jotClearLocation() { $('#jot-coord').val(''); $('#profile-nolocation-wrapper').hide(); diff --git a/view/theme/duepuntozero/file.gif b/view/theme/duepuntozero/file.gif new file mode 100644 index 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/duepuntozero/style.css b/view/theme/duepuntozero/style.css index acd97eb941..10ddb00909 100755 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -309,7 +309,7 @@ div.wall-item-content-wrapper.shiny { margin-bottom: 10px; } -.group-selected, .nets-selected { +.group-selected, .nets-selected, .fileas-selected { padding: 3px; -moz-border-radius: 3px; border-radius: 3px; @@ -1024,6 +1024,10 @@ input#dfrn-url { float: left; } +.filer-item { + margin-left: 10px; + float: left; +} .wall-item-links-wrapper { float: left; @@ -1864,11 +1868,11 @@ a.mail-list-link { margin-top: 10px; } -.nets-ul { +.nets-ul, .fileas-ul { list-style-type: none; } -.nets-ul li { +.nets-ul li, .fileas-ul li { margin-top: 10px; } @@ -1879,6 +1883,14 @@ a.mail-list-link { margin-left: 42px; } +.fileas-link { + margin-left: 24px; +} + +.fileas-all { + margin-left: 0px; +} + #search-save { margin-left: 5px; } @@ -2902,6 +2914,11 @@ aside input[type='text'] { .tagged { background-position: -48px -48px; } +.filer-icon { + display: block; width: 16px; height: 16px; + background-image: url('file.gif'); +} + .icon.dim { opacity: 0.3;filter:alpha(opacity=30); } .attachtype { diff --git a/view/theme/duepuntozero/wall_item.tpl b/view/theme/duepuntozero/wall_item.tpl index 51e36b6f4f..2c88fc598e 100755 --- a/view/theme/duepuntozero/wall_item.tpl +++ b/view/theme/duepuntozero/wall_item.tpl @@ -56,6 +56,7 @@ {{ if $item.star }} + {{ endif }}
                            diff --git a/view/theme/greenzero/file.gif b/view/theme/greenzero/file.gif new file mode 100644 index 0000000000000000000000000000000000000000..e388a13c0b99d0afa18c2fb51a90610923cb6917 GIT binary patch literal 614 zcmZ?wbhEHb6krfwI2OvlF38Fu!p0@V!LQ0AY9c7@BBmTJqY^2rnXY6|u5MVVVN|1O zRHtcNuVvP*YtgM|J=xG^ilN;sV~6>sjtfnl7MnRQGk0EY?z-C2b&aLlI!pHr)*hRz zJvLi=Zng2+Ve7ry&S$T^-+l-G{fKja;G*eCjkf9#QfgkvFz$3jz% zN2DH)Og|BwaUv%BR6^eApq}v;FC&ozJ%HdbV}X^X+?| z@7VWz=fM|y4!_)Y^wq%=uaBI5bNt-fQ~w7VDE?$&@$@$$FP^Yppll?vo%ZL41t4=Oe}0%0ul-g4h-%VtgK87)&N@+JAVKG literal 0 HcmV?d00001 From de017d1ed76500c01fd11c8e1d36cf4ebd70172d Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 13 Mar 2012 19:27:52 -0700 Subject: [PATCH 036/133] sort inbox by recently replied conversations first --- mod/message.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/message.php b/mod/message.php index 37f92e8d9d..65f692f3d5 100755 --- a/mod/message.php +++ b/mod/message.php @@ -194,7 +194,7 @@ function message_content(&$a) { $r = q("SELECT max(`mail`.`created`) AS `mailcreated`, min(`mail`.`seen`) AS `mailseen`, `mail`.* , `contact`.`name`, `contact`.`url`, `contact`.`thumb` , `contact`.`network` FROM `mail` LEFT JOIN `contact` ON `mail`.`contact-id` = `contact`.`id` - WHERE `mail`.`uid` = %d AND `from-url` $eq '%s' GROUP BY `parent-uri` ORDER BY `created` DESC LIMIT %d , %d ", + WHERE `mail`.`uid` = %d AND `from-url` $eq '%s' GROUP BY `parent-uri` ORDER BY `mailcreated` DESC LIMIT %d , %d ", intval(local_user()), dbesc($myprofile), intval($a->pager['start']), From 1ae740535d8a5b455395d51c01adef74e9dbb1ae Mon Sep 17 00:00:00 2001 From: Tony Baldwin Date: Tue, 13 Mar 2012 23:05:04 -0400 Subject: [PATCH 037/133] added slack-NS, non-scrolly, slackr-based theme. --- view/theme/slack-NS/style.css | 51 +++++++++++++++++++++++++++++++++++ view/theme/slack-NS/theme.php | 51 +++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) create mode 100755 view/theme/slack-NS/style.css create mode 100755 view/theme/slack-NS/theme.php diff --git a/view/theme/slack-NS/style.css b/view/theme/slack-NS/style.css new file mode 100755 index 0000000000..82bceeac8f --- /dev/null +++ b/view/theme/slack-NS/style.css @@ -0,0 +1,51 @@ +@import url('../duepuntozero/style.css'); + +.wall-item-content-wrapper { + border: none; +} + +.wall-item-content-wrapper.comment { + background: #ffffff !important; + border-left: 1px solid #EEE; +} + +.wall-item-tools { + background: none; +} + +.wall-item-content { + max-height: 20000px; + overflow: none; +} + +.comment-edit-text-empty, .comment-edit-text-full { + border: none; + border-left: 1px solid #EEE; + background: #EEEEEE; +} + +.comment-edit-wrapper, .comment-wwedit-wrapper { + background: #ffffff !important; +} + +section { + margin: 0px 32px; +} + +aside { + margin-left: 32px; +} +nav { + margin-left: 32px; + margin-right: 32px; +} + +nav #site-location { + top: 80px; + right: 36px; +} + +.wall-item-photo, .photo, .contact-block-img, .my-comment-photo { + border-radius: 3px; + -moz-border-radius: 3px; +} diff --git a/view/theme/slack-NS/theme.php b/view/theme/slack-NS/theme.php new file mode 100755 index 0000000000..ceec4dd976 --- /dev/null +++ b/view/theme/slack-NS/theme.php @@ -0,0 +1,51 @@ +theme_info = array( + 'extends' => 'duepuntozero', +); + +$a->page['htmlhead'] .= <<< EOT + +EOT; From 4972d7ef6ee740f6eb09d8c7efa9a76ee40973c1 Mon Sep 17 00:00:00 2001 From: friendica Date: Tue, 13 Mar 2012 20:46:37 -0700 Subject: [PATCH 038/133] more work on filer, comment level and file tag removal --- include/conversation.php | 32 +++++++++++++---------- include/oembed.php | 5 +++- include/text.php | 9 ++++--- mod/filerm.php | 21 +++++++++++++++ view/theme/duepuntozero/style.css | 4 +-- view/theme/duepuntozero/wall_item.tpl | 6 +++-- view/theme/duepuntozero/wallwall_item.tpl | 3 +++ 7 files changed, 57 insertions(+), 23 deletions(-) create mode 100644 mod/filerm.php diff --git a/include/conversation.php b/include/conversation.php index a420e9923a..117127a287 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -560,25 +560,28 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { ); $star = false; + $filer = false; + $isstarred = "unstarred"; - if ($profile_owner == local_user() && $toplevelpost) { - $isstarred = (($item['starred']) ? "starred" : "unstarred"); + if ($profile_owner == local_user()) { + if($toplevelpost) { + $isstarred = (($item['starred']) ? "starred" : "unstarred"); - $star = array( - 'do' => t("add star"), - 'undo' => t("remove star"), - 'toggle' => t("toggle star status"), - 'classdo' => (($item['starred']) ? "hidden" : ""), - 'classundo' => (($item['starred']) ? "" : "hidden"), - 'starred' => t('starred'), - 'tagger' => t("add tag"), - 'filer' => t("file as"), - 'classtagger' => "", - ); + $star = array( + 'do' => t("add star"), + 'undo' => t("remove star"), + 'toggle' => t("toggle star status"), + 'classdo' => (($item['starred']) ? "hidden" : ""), + 'classundo' => (($item['starred']) ? "" : "hidden"), + 'starred' => t('starred'), + 'tagger' => t("add tag"), + 'classtagger' => "", + ); + } + $filer = t("file as"); } - $photo = $item['photo']; $thumb = $item['thumb']; @@ -672,6 +675,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'edpost' => $edpost, 'isstarred' => $isstarred, 'star' => $star, + 'filer' => $filer, 'drop' => $drop, 'vote' => $likebuttons, 'like' => $like, diff --git a/include/oembed.php b/include/oembed.php index 52068efc76..cc71f9757c 100755 --- a/include/oembed.php +++ b/include/oembed.php @@ -1,6 +1,6 @@ /',$item['file'],$matches,PREG_SET_ORDER); if($cnt) { - logger('prepare_text: categories: ' . print_r($matches,true), LOGGER_DEBUG); +// logger('prepare_text: categories: ' . print_r($matches,true), LOGGER_DEBUG); foreach($matches as $mtch) { if(strlen($x)) $x .= ','; @@ -931,11 +932,11 @@ function prepare_body($item,$attach = false) { $x = ''; $cnt = preg_match_all('/\[(.*?)\]/',$item['file'],$matches,PREG_SET_ORDER); if($cnt) { - logger('prepare_text: filed_under: ' . print_r($matches,true), LOGGER_DEBUG); +// logger('prepare_text: filed_under: ' . print_r($matches,true), LOGGER_DEBUG); foreach($matches as $mtch) { if(strlen($x)) - $x .= ','; - $x .= file_tag_decode($mtch[1]); + $x .= '   '; + $x .= file_tag_decode($mtch[1]). ' ' . t('[remove]') . ''; } if(strlen($x) && (local_user() == $item['uid'])) $s .= '
                            ' . t('Filed under:') . ' ' . $x . '
                            '; diff --git a/mod/filerm.php b/mod/filerm.php new file mode 100644 index 0000000000..66b684dc96 --- /dev/null +++ b/mod/filerm.php @@ -0,0 +1,21 @@ +argc > 1) ? notags(trim($a->argv[1])) : 0); + + logger('filerm: tag ' . $term . ' item ' . $item_id); + + if($item_id && strlen($term)) + file_tag_unsave_file(local_user(),$item_id,$term); + + if(x($_SESSION,'return_url')) + goaway($a->get_baseurl() . '/' . $_SESSION['return_url']); + + killme(); +} diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index 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..6cb018b7bc 100755 --- a/view/theme/duepuntozero/wall_item.tpl +++ b/view/theme/duepuntozero/wall_item.tpl @@ -56,9 +56,11 @@ {{ if $item.star }} - {{ endif }} - + {{ if $item.filer }} + + {{ endif }} +
                            {{ if $item.drop.dropping }}{{ endif }}
                            diff --git a/view/theme/duepuntozero/wallwall_item.tpl b/view/theme/duepuntozero/wallwall_item.tpl index 211906c934..c37bcb4a28 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 975781d3e23e6beb2ac86b191c7c12b7347c1705 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Wed, 14 Mar 2012 01:05:08 -0400 Subject: [PATCH 039/133] massive work done to both dispys, mostly -dark Signed-off-by: Simon L'nu --- view/theme/dispy-dark/icons.png | Bin 19513 -> 29024 bytes view/theme/dispy-dark/icons.svg | 50 +++--- view/theme/dispy-dark/nav.tpl | 16 +- view/theme/dispy-dark/photo_view.tpl | 2 +- view/theme/dispy-dark/profile_vcard.tpl | 10 +- view/theme/dispy-dark/style.css | 207 ++++++++++++++---------- view/theme/dispy-dark/theme.php | 46 +++++- view/theme/dispy/style.css | 3 +- view/theme/dispy/theme.php | 41 ++++- 9 files changed, 247 insertions(+), 128 deletions(-) diff --git a/view/theme/dispy-dark/icons.png b/view/theme/dispy-dark/icons.png index eb84b8d8e7ad56e28ae5360cb13d4e98e352dbcc..648811373a41b2328cd76eb596adf0a02a15187a 100644 GIT binary patch literal 29024 zcmYg&1yEGq`}d_$T9ED%X<1s@ML^0`mXeb0?k=U}3n(R_3nC)jog%e}I(_B*5hbpOXHP()g>Ve59QXpv)`wZyD+Zjt$^`@ zLZ=+R7b5b0E^8ZKG#klVBdC(n)1zer{?2y~3Mq|N`~RNWWe`l;G&jb~5&TD6&?^Pi z^;TYNm-)VEliKnQut88I_Ej>r9-p#o;B5q|*)Ypm;|5E6GhRh> zq|s_1_1pEusyy3(k;kAIt%#*69qf9_z9yI^MjP?gSCPE5QlCG7{hft1MW_~>;+j?b zy#RAN68y?O_jh}``*%wKrjJIzNKh}t7^8D*wS5hax#H7EMjlS~Hv!VoszPD*MM!+PLuq zx|%p$j1!U*O8Vy~J6Zk`r?hS79N*(2nH4plgA7tfyp>mZp@JMA@G`#MdPQTRI#cV! z04}6A7h@7Y@?P9YgmPE~tZTn(U@WSdV6UchbC)l+a_LWBirUNmnx|CD7HI>=FPU+kKiNAO13CAN+IvC7;Sl9jWQIuScn8U<9@PYYFtDhpp5;AtJtSKqH z@XPfOZ_g9YHg0_$o$9s}Vd6yHg`8<{7noD}jv7!rUlRP7j4`?Fs7+kOH7ikid28!O z76&TfY=VNMpKR2J)Z^bt25pEg4qmmX8yPV^QD=xbIkHQqL?hlIsjSlZ2N=Mu&+4>mU%Ynpk(wi=q6UgLFEBcj_(&@N$k zxens(fTcmO^fNysQpjfIM8bI{z1*UQl$IDjoUdD6E@God$Me^2X$eLVE zH5Y0YGN*tJ(yMJ?dE@r{!1q&9FSb7npPql#63);#J>M+j z&~4qWo!;vrlW$-5eC$m(HV;Cu8Vf{=LqoehUZwuk>{Zyyk$7D@0aj3FqT6@B2} z0zDOsH5U)P>g(&9gLzc)#JZukaQ0X!YS>UwEhf8kNTdhWR`g%Psi`UMhz?;jj91gR zJ=2n>w9Wlk5u?=Q)kp92kjL(tqrXj?yqy-Cc3X+^hNJC93l>Jyg-VbU<`t}LY*-#E z=#H;tt+&fC4$R_?lgvn@%UjMb8w=nxD9509T(D@#by_}^ZU!KcOoD17aj~eGg3a@< zQ21P`W_p8AsC{Raw3mI%pfypSP1V%vX~$X`C-E1ma!}1FO7X*T7AIk6b$)(+hFq>o zD=VS=TBF==GhrFZ0C{i?|o#g5RT4K{!)M;IDaq&UsJ)+yU@3fe>P{VQw z<(z8_ZB~|-TMF%djYEskYdU7WwRaREBDLT>kP#__4x|qK!X`tasQR(z`*-t>aJ+O8 zt0(#uCmZ8LWbzlnj}w`hj=Rk@K;dyF)-BOz(%r($`7-&RG>{Rk2*zeg(4uF?);;Cm z;Iw~%dm4>ali?}WleZH&58(QZIC(|T{uDP=|{p?PW$U8pO<>h5n4GqT029MQ+v$M0hg3q6u!W(3mhu*<;Y-!B@ACV!6D2{+b3sjIzs_Db zZ-+JcAAd8N4y->opx^U?3{tyV{H$@WE?G}MaH=`nRcmcJHSO5uhx_{A3Tvc=;hF_ zFvn{>T_if%ookz*<>ur2I=SxomlLHuA7Y0L2OXHa+A6bPHsjqpB;!V=`1=yyA6Zhe zVwzvO30OHEv|AxW=|vF4eXnbanq z-S2v)L3mYD@%u|X9722O-b!N4QP-n2M7878om;nV9d*-~dhSe=Om7IEu#88tP@L%? z1$3yoZ(qj=*cTR^^H6X-Nj_qP#T6CxGbgGf=zOlPuU`+tAz+>m-A;gN#BUNo z=SLhj_0|}3TzG2zBa1Gnj5}NzG>HNgK6fN?^bMm_visjHgBkzLlKTDc3~Yqh{R5XR z2XEg}ZB5sam9<^@BeR`n8y6;CxO9VUTB-CjhXb|79SR8_-h=$1(}1_jYKXTgkOr=+ z0L2-VvK=YwZ(Gr;e4c(b_H!FIw|$rxL*~ivfZe(G5-vNxKB=c+r}XKJM?9tCdce(H zFsH&2Bx-;;=KiWzmP5h9QU(?^RX6oZVIg_j<=^Rl%z=9yO;|=WZWCn%lU!<@|FJz1 zcK_3hAJcqCtUD()bA#qA>yT0kMg+RKG<1)jTHQHFesy`-t6HC5K60sUdbpl=dB2~T={nATaPRr7=xesf*%fK+LK3a{zRjg-f_YmVLba$_GU;FuA8Qo4Kr<&>g zSa%pKL<#=j<;I(2&h>Y;f}&tcm#zHB4yYPh{fB#18lc*m0ke7Btrrs>j@`FC(`g+Oc{l~{9r#87kuiv}0(q$Hm zpOb>kM4t36qgxe&2Z2T#lOYDB7ztv;42+P3* zht$JZQ11?`$02jVfU5foXiX~%yC z&@jmd%PeL4{5Bwkz$w_z$jB&-6Ku2{Wb&D*fcD6Q=6shDeB9mLMZ$!QPt0^;gN`@G z_k3jl{3G1@>wj#hgnG91JSPwvpt0KZss;CKQ+4OMX#xC*m-MjR+Uf20410dJi?o%H zipX)kbU%tvGEOyrK37L(*pT&#Q$s_;wK#o(1hy>;3riacJY0BkUK7gJYvm)cnr4{^ z%)DunA~Mut*5-yye9jJ*-E4kjWhDG$C!lyI;xQHo{g<2TvVRt+EpliHjf!ecTMN?$ zqGdFa^P|}l@f%B{jMl#pFBZk1(P%~_lI%-SBY8%(J|9{`l0oO9el5Ro70GF%mDV8FVP%?+ zC=@n+1eSndwJp_09EAaDfqAz8)@XMAP4L7KndZ5s;Lde)s@xN7owW)sUQE*&MNE0 zy5`L4HV+#(KFoTdq=ap5Veu&S9(c*z$0GX>s0#8#P$`q+E>OpHSKb4US`^BhCNx)r zd-T=)`}b`&8VT4(m`I~E$s<>})NV78AX{YkV%-@P43{fz;6vS9@V}p_0xz5|4hDpL zh{B&DTbr91jT=4PjJ(E?c{0q}quTP9p6f{*Dx6KTziF=Ck=bUx29+*0`11Uc2&~~d zi-Ra;e?suX^lKgIKn06Ql)tJkEuwH65Rh0ZZQ2cW`pzioG(nZ9%^0;hQQXtI`&S|z zCj3`Q4IW~%VnA|w5yn5@WdBo68Sdv?_wP++(lhust$}pr5cZ!`9jIWYkUO$(X=+O^skY+gP`)VzEVui$A)@`hUS*`eWjlzq((+R;Z!@P zE_}4s5^z#VpEAAeJ-O|zkuJQ@-2FRG#b?Irgz4%*10R{79&?UK<3V$`;DEbek$mLw zrP1?0KfQutSP4TO`s`#e`|4lcHp8XB6B4TVDO!>?Zhsk7ROGFU5Q!<&b;W|^HXZcy zQG%MWhlUN^z*s#aH|1};N9&(+%?C5ZpiueCb!}GENT!tz(imsHlzd#?a>WZ?eQO-! z7{wQR@P>bY%>ti&A4{L$19k48bwH1G)vE->r^p(4iYcggOw=j6!)(tkQ(QN7*-iJW z*hXqIXs$aPDsKXr0slUjY4E5qDab5fyLXQOeAL%{mf<~1VO0^2BCmlt3F)(iC(K-*IqF6immF66Ka_u{zwv zKLbv75(roV%b)ytH(BR0=NHqWlDM@Y|fp~cC?RpQxTq(_<5jy_Cp5U$VaSvsSKIMt+aAp$byEW^XA^s`1R z9Q;6P8XAn_()R>Wm)|nr9${gOeT;i|4?750%(`Rm{`6uB`uDdx6bmO-Ota}heLRZi zITmplVw|9zTWv&%eFTu(FQuDh5aCW+sl4C89|EzZ5*x7i?=l?rDUwRSi-`aj%$sto zeFn$?HNXB|$Jm$W4&5#=5Aa?-y_GT_%FA8JVJ>DXFe@voMA7^vW=hJ#pYQZc{Qe%T zkLr;ls#LAKj8{Qr?X(`ubOM;bt5>1GjEaWl9=5B`*5q&=PyaHynJ;t4pSBP`Vu2os zOz||XBTrHxj|`%Y-@vl{r%iu(2qV5H?Zuw|GvH_~4A5wEbov9fo~3_(x4WwC zMumNLjAX7(mrfU=$|=XkU6FNsZbLyn79BIn;7KZ^EZv#NA#?QPuzsVj)Eld7s&FnD zAix+E6}=huk}V6%wTWD`TCoe;xxAy6EdKb=^|fJ2oneUzm2$(mP{`T9XV6j9{I_c` zdq<<%k48l;t&pZ?Qf`a56U7EN#+d!IwhKHQd}5vnua+0q)+@vG)nbRS9)PL4ROri< z$(U8>dw(hNXMpWS%7>FcTHt;)>*}R~WyV^Q2mFm!?)_k`!{4o`y7fkrgrRNks4aRR zEf|nTnh2&jkiZ_s*w%5X3EfG0sB_jxPOFsQs5;v?f9x*?vBMasl%*8mb>eU1qOZQA zDY10O5zL{I#+au2v6YXK^AUvLWppXe#D=^BrwXTQ#piIr4_&X6xN7M&2+baX8+blz05Qo-5@zqm~Y-cOz43DG&J7gft z8eQ0(mYqHO%~AXzR3Bq21S30d`JBredmsc!!&WH~Hh_CX2~AKcD=TZxIG>0^_||ey z;569vxb3(GsS*+sUiO{PSPsb>Z{5pj7l+Sk1kWjo4j(`K8hqNrQRBC7TDHpz;ITg9 z?Ryr09mz=WADI`kGQmgp#nef}RG!C|5V!-DYSVAY?fJkf{Xh>&GQTzjQys_?G9~2`@SR`G|R9~>L^WMc>5RB_~ z{~*}f2sgdHeHa^(RQ=d)eEA}la zt{O-rgBo8RlG3FT$LF5X{@wZ;mAu*bhV1%~?fV<1I1&bNoz35vI0+7%C1$25<0fyh z!mC|6tkv|Dw&S1+igxtt&d$#I>gwvMw&RuyX2lyp6u=svzZ)@prS*&z6(j>$d;$Vp z1Oam22m*rNkO|Wg`_6|ExNeJKUX$n-5&>aral3Br`@`MSuHkD!i=*q0`yYAwv8`K& zEJbG1Gc)Ope;-|QJS~^{6M}Qqt3<|6M$f6{J|;nOkQlx^kk-S+$tiO$cJc606lsF} z_5@&#bQ!N&<_hpV3fe(OLRB_u}wwptkkoYMqIf){x0W>DSYs+XNm=n0nN zJI?h_*V-u4I_KHB3_o&;yMW~d08Smi@y$U@&koCJ5zbg8;`z*T*w_fPm9IqTe}K-K+FOmiBEf#36L&4*n}G_+5stN~cU zPoYV$hfmS+11*n5+lTG}niH@i1Ro>4diw(oeHPVhx(4Nflul^JRkD#G;c-OirnBbg zTi1caVN_wEt(w_v(;b)2YajB6H!VDboq6B`+Wh$JHPqJ^a~GG56f!qA&%7PZ>f2%x zQDBERoc>s(s$Z*seP-Sb!U+FSksK5VJs z7g$-Toa%ChE8`Le-A0nU=#z~&f?9dwtu`0y_?Xr zfo!2lXohpZJ^N8AxE_5#hKbt-ky5bFk7Kn@A2qfE<+cK91O+8XQ~jPn>Z)3DH9iCo z@feT-rXkM4B734935SVd@TBy?mCXocQYe`dxv%+NT=SJY1?R%gkB?rSc^c2*-y8=Z zLSDWo{Qa%MqQ`u4cb!|LDlEfv)pS^l>WVS+H;RY(8I_f>qGH&Qy0I;2=qK&h|9s=3 zSF&USym3RN&=Q9Rqk_&9XLuSKC(t9CYn+Y%U5ulwygyF)J z3a;Pg?&l5D4nv|;(Y+2L8U8qv+VB)hgEuKwQc`=PBL8V1Z?hJy)$5iRA_>EPMn!8; zB61tU|BHMoSiZmFd*nACe8jK^-Jx{Y75G_gM>*rV@(6y36%Wu?%}5_m znR#JD;5oaL+ACc6)iNSc*Df8g-~WkTT4Gz7!PG)AlIlo5eN)zzMk zfq@sMF+4tFg@{X)H;e|GSlp;VsPyD4uxZFf!z5xfEjhXJPWv+ahypgm#;%Du_J+cH z{-^_I;@5`{q-B_CY=z3w%^GIww1Ib|A+(M!w=+K`B_-_(LH7ix)w3OjlnNt8ZRBEn zJ!Ehd+qe8+!_@}QJzJ`Yo{c_xDc)mo*3Si&PWEvkUCayTO^R3)H5~CR{ETS6)U}KE z#s2A1B8QmRUE?NC<hO!*X4oJ$qJ}l9E!U4Yngb z^ySMJ)BJ*hTHtqlY99(;TwI)vi;ewler-*Q=veps{b}=@nVsIH#?VP@2<8z0pUTu@ z7ZMUu2Ev#LaZO`*IO_+$Lw=3yBP!^_YIfbrW!Qk*e7mCO+D}rJovAn$GN$iU4ig`( zzNXRwlkMvAM}U_J4;L36Q0IKXP6Wc4xXbT&Wg?n|y@jqDXHD+%=y~(?)j!{}`Y zS-*P9PS)5KB65fZAEyAE0k#yCU@lI|VI>4r4{vNG(DMIG*=mYKRDgojie`KSzka!5 z_vzCoi$Uu{Gxk^>a8|Xo6YCu`t9$$Vd4+g+rTfwE7<4#+Z6uqOnc2vza|YVFH#D)< z7)%KPEKi1CUU3j;hG)fAr2QM~>KhB#n(7WG4zkC!*R&$3hYWG14zTJ$tf4uE|e zpp>pnR&d}G(?ThIkvIgT^RF44qop|naSaK>|6}?RT2$mhOZ+;lqpClgm2upwMfuUG zqxdv~o0}WXJ?$Ju8TBBltL3`+%>pR;9?Gz)D+xFTjioGX>>bP*YJEJ$78q+eG zphEGvb~FmbvwJJtOpj{W*t*m|2MC(-IA8DM+*SSpv#K+U`@O$NN-O8iQ=sL4+s`jJ zYLKC6E>!B!W}(Gr?opjXW5?$4A|NhLjf}9_J7-URziJ?|UW(a&K7aTsxWUM0)@#i# z09hN@_kURc?RXaXR^H=k)3)FnsYveX)M5sRnLuUfiXu}nFrWh^@Iyz0u-}0t8W^~x zyH6>5u(C$HW{Zl7s8r{&@;4iwz&Y>~^-Ju2;eZ43;;ynm9?uhE3faeShIA~9Hu6n7xf7c-@a3366N+VO`xFFjemk|y*1ay0xFTD`yawgQ9Eq4gR*%b?P)Sd zbl8e6Hp)kNo8BT|_a}gCtgTybs5O=HzH?&FVFoK9DKvK;*ow=Zi8Bu(7IKw_B@e9( zTGcSef2lgzYLZ<5J=+~hf3WljLA5KMp^-~Rj872ig2f5!OoH}9>#8#jK*2|?t7dUO z$cBbs=FLyH(|63RKNj=?o8)n%iV!qcV?Vx87vJAcAbe9pvpLnu##H_=h&!qR*3Uw* z{*GN+RrQnz+Kr~*Fu7WGmXi5Z>$Lg0?e696c8PFSTRc2G4&IR1*w{=6oRkF|h?|Cr zDxMWZ3AJMF-KA(@o+l(yOU~hB4*&$2=$(K&xLd^o%fImEopXmUz)Q;~3-#erD-tIK z*RMk1yH1|OOW3KZIa;vZ*h;S0C1L&J8P#%Yrmjv$q5bfSTKijxJrNvHmtBAY3tRo- zM8B^h?+H1V(&Fe!4x2i(Mimzm%QGJgFgzhyF|8$h}YtmT`S!qcbo+I3Et zQYL2qH8zcG>6#7N`MG?v{MEq>g7*1%7=9I@aEaDc!B>`)$J1aHB125NIRWDY>qT~o8X&IJ_D z#3D!A^FePUGAah;%Yq_rC@PZ8ID4W)HghWG_BvygA>q5&`uci}%qA+Vz|H~?h1ZR< zJ1TI*jDz@l0*HrR%zjLMv-pB2Jj0X~MTVU#M8ZsW7T7uqv~FkU5UU!sA=oTUA*(|p zPvPe6{g=FI>LLflL!_M})6i}!+WG^Hp%_N@lW&1Xlf&cMPx<*-_j!2M7D1)DtGu80 zVLQLlSP)avSel6E`rTHv^yn;*>_%!YDk6&E(Zd|)&nKuA86J@`O

                            I=1NS{N(A%g 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 H=0X1l9mi^o literal 19513 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 IN5iiC4{1nb9RL6T diff --git a/view/theme/dispy-dark/icons.svg b/view/theme/dispy-dark/icons.svg index 05a00d93c4..10f8cc667d 100644 --- a/view/theme/dispy-dark/icons.svg +++ b/view/theme/dispy-dark/icons.svg @@ -51,9 +51,9 @@ borderopacity="1.0" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:zoom="1.9403009" - inkscape:cx="100.08061" - inkscape:cy="113.21269" + inkscape:zoom="1.3859292" + inkscape:cx="105.02551" + inkscape:cy="107.90767" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" @@ -107,7 +107,7 @@ image/svg+xml - + @@ -572,7 +572,7 @@ inkscape:connector-curvature="0" id="rect4428-4" d="m 118.03127,895.15627 0,0.3125 c 0,1.2601 -0.0643,3.4345 -0.35937,5.75 l -1.5625,1e-4 c -0.80183,0.011 -1.64766,4.0737 -1.60938,8.0625 l 8.25,0 c -0.057,-5.5479 1.56902,-11.5211 1.75,-5.6563 0.21453,6.9525 1.74237,-5.1823 1.75,-8.4687 z" - style="fill:none;stroke:#1a1a1a;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> + style="fill:none;stroke:#e6e6e6;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" /> {{ endif }} -{{ if $userinfo }} -

                            -{{ endif }} - {{ if $nav.contacts }}
                          • $nav.contacts.1
                          • {{ endif }} @@ -94,6 +86,14 @@ works -->
    +{{ if $userinfo }} + +{{ endif }} +
    {{ if $nav.home }} diff --git a/view/theme/dispy-dark/photo_view.tpl b/view/theme/dispy-dark/photo_view.tpl index 4582751c60..f1209ec58f 100644 --- a/view/theme/dispy-dark/photo_view.tpl +++ b/view/theme/dispy-dark/photo_view.tpl @@ -17,7 +17,7 @@
    -
    $desc
    +
    $desc
    {{ if $tags }}
    $tags.0
    $tags.1
    diff --git a/view/theme/dispy-dark/profile_vcard.tpl b/view/theme/dispy-dark/profile_vcard.tpl index 0c289d982b..5cb567f5af 100644 --- a/view/theme/dispy-dark/profile_vcard.tpl +++ b/view/theme/dispy-dark/profile_vcard.tpl @@ -6,13 +6,17 @@
    $profile.pdesc
    {{ endif }}
    - $profile.name + $profile.name +
    + +
    +
    {{ if $location }}
    $location -
    +
    {{ if $profile.address }}
    $profile.address
    {{ endif }} $profile.zip @@ -20,7 +24,7 @@ $profile.region $profile.postal-code {{ if $profile.country-name }}$profile.country-name{{ endif }} -
    +
    {{ endif }} diff --git a/view/theme/dispy-dark/style.css b/view/theme/dispy-dark/style.css index 7a57628b94..c590042f11 100644 --- a/view/theme/dispy-dark/style.css +++ b/view/theme/dispy-dark/style.css @@ -520,11 +520,13 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-link position: fixed; left: 28px; bottom: 6px; + z-index: 10; } #language-selector { position: fixed; bottom: 2px; left: 52px; + z-index: 10; } .menu-popup { position: absolute; @@ -810,6 +812,9 @@ aside #viewcontacts { border-bottom: 0; padding: 5px; } +#profile-jot-net { + margin: 5px 0; +} #jot-preview-link { margin: 0 0 0 10px; border: 0; @@ -831,12 +836,12 @@ aside #viewcontacts { background-color: #555753; height: 22px; width: 20px; - -webkit-border-radius: 5px 0px 0px 5px; - -moz-border-radius: 5px 0px 0px 5px; - border-radius: 5px 0px 0px 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; overflow: hidden; border: 0px; - margin: 0 -4px 0 10px; + margin: 0 10px 0 10px; } #profile-jot-plugin-wrapper { width: 1px; @@ -854,23 +859,21 @@ aside #viewcontacts { height: 22px; background-color: #555753; color: #eeeeec; - -webkit-border-radius: 0 5px 5px 0; - -moz-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; border: 0; margin: 0; float: right; } -#jot-perms-icons { - background-color: #555753; +#jot-perms-icon { height: 22px; width: 20px; - -webkit-border-radius: 0 5px 5px 0; - -moz-border-radius: 0 5px 5px 0; - border-radius: 0 5px 5px 0; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; overflow: hidden; border: 0; - margin: 0 0 0 94.4%; } #profile-jot-acl-wrapper { margin: 0 10px; @@ -916,7 +919,8 @@ aside #viewcontacts { color: #cccccc; } #profile-jot-desc { - color: #a00; + color: #ff2000; + margin: 5px 0; } #jot-title-wrapper { margin-bottom: 5px; @@ -1503,20 +1507,26 @@ div[id$="wrapper"] br { } .mail-list-sender-name { display: inline; + font-size: 1.1em; } .mail-list-date { display: inline; - font-size: 0.8em; + font-size: 0.9em; padding-left: 10px; } +.mail-list-sender-name, .mail-list-date { + font-style: italic; +} .mail-list-subject { - font-size: 1.5em; + font-size: 1.2em; + font-weight: bold; } .mail-list-delete-wrapper { float: right; } .mail-list-outside-wrapper-end { clear: both; + border-bottom: 1px #eec dotted; } .mail-conv-sender { float: left; @@ -1734,11 +1744,21 @@ div[id$="wrapper"] br { margin: 30px 0px; } .profile-edit-side-div { - margin: 5px 2px 0 0; + background: #2e2f2e; + border-radius: 5px 5px 0 0; + width: 175px; + height: 20px; + position: relative; + margin: -25px -30px 0px 0px; + display: none; +} +.profile-edit-side-div:hover { + /*margin: 0px 0px 0px 0px;*/ + display: inline; } .profile-edit-side-link { - margin: 0 20px -18px 0; - float: right; + margin: 0 0px 0px 155px; + /*float: right;*/ } .profile-listing { float: left; @@ -1749,6 +1769,9 @@ div[id$="wrapper"] br { padding: 0; list-style: none; } +.marital { + margin-top: 5px; +} #register-sitename { display: inline; font-weight: bold; @@ -1970,6 +1993,9 @@ div[id$="wrapper"] br { background: #88a9d2; font-weight: bold; } +.group-selected:hover, .nets-selected:hover { + color: #2e2f2e; +} .groupsideedit { margin-right: 10px; } @@ -2115,11 +2141,16 @@ div[id$="wrapper"] br { width: 16px; height: 16px; } #adminpage table tr:hover { - background-color:#bbc7d7; + color: #2e2f2e; + background-color: #eec; } #adminpage .selectall { text-align: right; } +#adminpage #users a { + color: #2e2f2e; + text-decoration: underline; +} /** * Form fields @@ -2397,7 +2428,7 @@ div[id$="wrapper"] br { background-position: -70px -40px; } .unlock { - background-position: -90px -40px; + background-position: -88px -40px; } .video { background-position: -110px -40px; @@ -2481,8 +2512,8 @@ footer { } #profile-jot-text { height: 20px; - color: #666; - border: 1px solid #ccc; + color: #eec; + border: 1px solid #eec; border-radius: 5px; width: 99.5%; } @@ -2493,113 +2524,117 @@ footer { #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper { display: block !important; + background: #2e2f2e; + color: #eec; } #acl-wrapper { - width: 690px; - float: left; + width: 660px; + margin: 0 auto; } #acl-search { float: right; background: #fff url("../../../images/search_18.png") no-repeat right center; padding-right: 20px; + margin: 6px; } #acl-showall { - float:left; - display:block; - width:auto; - height:18px; - background-color:#CCC; - background-image:url("../../../images/show_all_off.png"); - background-position:7px 7px; - background-repeat:no-repeat; - padding:7px 10px 7px 30px; - -webkit-border-radius:5px; - -moz-border-radius:5px; - border-radius:5px; - color:#999; + float: left; + display: block; + width: auto; + height: 18px; + background: #eec url("../../../images/show_all_off.png") 8px 8px no-repeat; + padding: 7px 10px 7px 30px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + color: #999; + margin: 5px 0; } #acl-showall.selected { - color:#000; - background-color:#F90; - background-image:url(../../../images/show_all_on.png); + color: #000; + background: #f90 url(../../../images/show_all_on.png) 8px 8px no-repeat; } #acl-list { - height:210px; - border:1px solid #ccc; - clear:both; - margin-top:30px; - overflow:auto; -} -#acl-list-content { + height: 210px; + border: 1px solid #ccc; + clear: both; + margin-top: 30px; + overflow: auto; } +/*#acl-list-content {*/ +/*}*/ .acl-list-item { - display:block; - width:150px; - height:30px; - border:1px solid #ccc; - margin:5px; - float:left; + border: 1px solid #eec; + display: block; + float: left; + height: 110px; + margin: 3px 0 5px 5px; + width: 120px; } .acl-list-item img { - width:22px; - height:22px; - float:left; - margin:4px; + width: 22px; + height: 22px; + float: left; + margin: 5px 5px 20px; } .acl-list-item p { height: 12px; font-size: 10px; - margin: 0; + margin: 0 0 22px; padding: 2px 0 1px; } .acl-list-item a { - font-size:8px; - display:block; - width:40px; - height:10px; - float:left; - color:#999; - background-color:#CCC; - background-position:3px 3px; - background-repeat:no-repeat; - margin-right:5px; - -webkit-border-radius:2px; - -moz-border-radius:2px; - border-radius:2px; - padding-left:15px; + background: #eec 3px 3px no-repeat; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + clear: both; + font-size: 10px; + display: block; + width: 55px; + height: 20px; + color: #2e2f2e; + margin: 5px auto 0; + padding: 0 3px; + text-align: center; + vertical-align: middle; } #acl-wrapper a:hover { - text-decoration:none; - color:#000; + text-decoration: none; + color: #2e2f2e; + border: 0; } .acl-button-show { - background-image:url('../../../images/show_off.png'); + background-image: url('../../../images/show_off.png'); + margin: 0 auto; } .acl-button-hide { - background-image:url('../../../images/hide_off.png'); + background-image: url('../../../images/hide_off.png'); + margin: 0 auto; } .acl-button-show.selected { - color:#000; - background-color:#9ade00; - background-image:url(../../../images/show_on.png); + color: #2e2f2e; + background-color: #9ade00; + background-image: url(../../../images/show_on.png); } .acl-button-hide.selected { - color:#000; - background-color:#ff4141; - background-image:url(../../../images/hide_on.png); + color: #2e2f2e; + background-color: #ff4141; + background-image: url(../../../images/hide_on.png); } .acl-list-item.groupshow { - border-color:#9ade00; + border-color: #9ade00; } .acl-list-item.grouphide { - border-color:#ff4141; + border-color: #ff4141; } /** /acl **/ /* autocomplete popup */ .acpopup { - max-height: 150px; + max-height: 175px; + max-width: 42%; background-color: #555753; color: #fff; overflow: auto; diff --git a/view/theme/dispy-dark/theme.php b/view/theme/dispy-dark/theme.php index a7aec1c1a4..6f82430587 100644 --- a/view/theme/dispy-dark/theme.php +++ b/view/theme/dispy-dark/theme.php @@ -1,5 +1,17 @@ theme_info = array(); + +/* + * Name: Dispy Dark + * Description: Dispy Dark, Friendica theme + * Version: 0.9 + * Author: Simon + * Maintainer: Simon + */ + + +$a->theme_info = array( + 'extends' => 'dispy-dark' +); $a->page['htmlhead'] .= <<< EOT EOT; -$a->page['footer'] .= <<theme_info = array(); + +/* + * Name: Dispy + * Description: Dispy, Friendica theme + * Version: 0.9 + * Author: unknown + * Maintainer: Simon + */ + + +$a->theme_info = array( + 'extends' => 'dispy' +); $a->page['htmlhead'] .= <<< EOT + EOT; $a->page['footer'] .= << Date: Tue, 13 Mar 2012 23:52:13 -0700 Subject: [PATCH 040/133] addon settings form error --- mod/network.php | 2 +- mod/settings.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mod/network.php b/mod/network.php index 4f58fc4fbc..e9f3913ff4 100755 --- a/mod/network.php +++ b/mod/network.php @@ -192,7 +192,7 @@ function network_content(&$a, $update = 0) { 'sel'=>$starred_active, ), array( - 'label' => t('Bookmarks'), + 'label' => t('Shared Links'), 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1', 'sel'=>$bookmarked_active, ), diff --git a/mod/settings.php b/mod/settings.php index f42fdb3973..15fd0c352e 100755 --- a/mod/settings.php +++ b/mod/settings.php @@ -559,7 +559,7 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_addons.tpl"); $o .= replace_macros($tpl, array( - '$form_security_token' => get_form_security_token("settings_addons"), + '$form_security_token' => get_form_security_token("settings_addon"), '$title' => t('Plugin Settings'), '$tabs' => $tabs, '$settings_addons' => $settings_addons From f03c57007a2a9ec73902acfb2d951528e68e3117 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Wed, 14 Mar 2012 12:56:59 +0100 Subject: [PATCH 041/133] fix in nav --- view/theme/diabook/nav.tpl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/view/theme/diabook/nav.tpl b/view/theme/diabook/nav.tpl index 8b32ebe6ca..5776b6cf75 100644 --- a/view/theme/diabook/nav.tpl +++ b/view/theme/diabook/nav.tpl @@ -152,10 +152,6 @@ - - {# From 0bf9595ab19f3af772d20a88eac86dc8cf962c3e Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Wed, 14 Mar 2012 11:00:20 -0400 Subject: [PATCH 042/133] PHP Fatal error: Call-time pass-by-reference has been removed in mod/item.php on line 630 Signed-off-by: Simon L'nu --- mod/item.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/item.php b/mod/item.php index 81d7c753b4..6f31f917f2 100755 --- a/mod/item.php +++ b/mod/item.php @@ -627,7 +627,7 @@ function item_post(&$a) { if($preview) { require_once('include/conversation.php'); - $o = conversation(&$a,array(array_merge($contact_record,$datarray)),'search',false,true); + $o = conversation($a,array(array_merge($contact_record,$datarray)),'search',false,true); logger('preview: ' . $o); echo json_encode(array('preview' => $o)); killme(); From ebccf13c4c883e1438f4446d6aeba070ce6ee967 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Wed, 14 Mar 2012 11:02:14 -0400 Subject: [PATCH 043/133] Merge branch 'master', remote-tracking branch 'remotes/upstream/master' * remotes/upstream/master: fix in nav add links to home, profile, photos, events, notes to aside in network-stream * master: From 64e3e3590b8ef04a1fdb1cccabc3970295ef92f2 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 14 Mar 2012 16:09:13 -0700 Subject: [PATCH 044/133] revup --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 749ef6e3f3..ba731ddee2 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.1280' ); +define ( 'FRIENDICA_VERSION', '2.3.1281' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DB_UPDATE_VERSION', 1131 ); From f0a62d8908cef31982c1c2b24fc9dbc8b59b8bdb Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 14 Mar 2012 20:36:23 -0700 Subject: [PATCH 045/133] ssl_policy stuff --- boot.php | 19 +++++++++++--- include/items.php | 17 +++++++++++++ mod/admin.php | 17 +++++++------ mod/dfrn_notify.php | 60 +++++++++++++++++++++++++++++++++++++++++++++ view/admin_site.tpl | 1 + 5 files changed, 103 insertions(+), 11 deletions(-) diff --git a/boot.php b/boot.php index ba731ddee2..22a4e39be5 100755 --- a/boot.php +++ b/boot.php @@ -379,11 +379,22 @@ class App { $scheme = $this->scheme; - if(x($this->config,'ssl_policy')) { - if(($ssl) || ($this->config['ssl_policy'] == SSL_POLICY_FULL)) - $scheme = 'https'; - if(($this->config['ssl_policy'] == SSL_POLICY_SELFSIGN) && (local_user() || x($_POST,'auth-params'))) + if((x($this->config,'system')) && (x($this->config['system'],'ssl_policy'))) { + if($this->config['system']['ssl_policy'] == SSL_POLICY_FULL) $scheme = 'https'; + +// We need to populate the $ssl flag across the entire program before turning this on. +// Basically, we'll have $ssl = true on any links which can only be seen by a logged in user +// (and also the login link). Anything seen by an outsider will have it turned off. +// At present, setting SSL_POLICY_SELFSIGN will only force remote contacts to update their +// contact links to this site with "http:" if they are currently using "https:" + +// if($this->config['system']['ssl_policy'] == SSL_POLICY_SELFSIGN) { +// if($ssl) +// $scheme = 'https'; +// else +// $scheme = 'http'; +// } } $this->baseurl = $scheme . "://" . $this->hostname . ((isset($this->path) && strlen($this->path)) ? '/' . $this->path : '' ); diff --git a/include/items.php b/include/items.php index 70c72ae165..4b1523ff65 100755 --- a/include/items.php +++ b/include/items.php @@ -1046,6 +1046,21 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { if(! $rino_enable) $rino = 0; + $ssl_val = intval(get_config('system','ssl_policy')); + $ssl_policy = ''; + switch($ssl_val){ + case SSL_POLICY_FULL: + $ssl_policy = 'full'; + break; + case SSL_POLICY_SELFSIGN: + $ssl_policy = 'self'; + break; + case SSL_POLICY_NONE: + default: + $ssl_policy = 'none'; + break; + } + $url = $contact['notify'] . '&dfrn_id=' . $idtosend . '&dfrn_version=' . DFRN_PROTOCOL_VERSION . (($rino) ? '&rino=1' : ''); logger('dfrn_deliver: ' . $url); @@ -1118,6 +1133,8 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) { $postvars['perm'] = 'r'; } + $postvars['ssl_policy'] = $ssl_policy; + if($rino && $rino_allowed && (! $dissolve)) { $key = substr(random_string(),0,16); $data = bin2hex(aes_encrypt($postvars['data'],$key)); diff --git a/mod/admin.php b/mod/admin.php index 93714bb5f9..2b8d9bcd23 100755 --- a/mod/admin.php +++ b/mod/admin.php @@ -151,11 +151,7 @@ function admin_page_summary(&$a) { $r = q("SELECT COUNT(id) as `count` FROM `register`"); $pending = $r[0]['count']; - - - - - + $t = get_markup_template("admin_summary.tpl"); return replace_macros($t, array( '$title' => t('Administration'), @@ -210,7 +206,7 @@ function admin_page_site_post(&$a){ $dfrn_only = ((x($_POST,'dfrn_only')) ? True : False); $ostatus_disabled = !((x($_POST,'ostatus_disabled')) ? True : False); $diaspora_enabled = ((x($_POST,'diaspora_enabled')) ? True : False); - + $ssl_policy = ((x($_POST,'ssl_policy')) ? intval($_POST['ssl_policy']) : 0); set_config('config','sitename',$sitename); if ($banner==""){ @@ -222,6 +218,7 @@ function admin_page_site_post(&$a){ } else { set_config('system','banner', $banner); } + set_config('system','ssl_policy',$ssl_policy); set_config('system','language', $language); set_config('system','theme', $theme); set_config('system','maximagesize', $maximagesize); @@ -305,6 +302,12 @@ function admin_page_site(&$a) { REGISTER_APPROVE => t("Requires approval"), REGISTER_OPEN => t("Open") ); + + $ssl_choices = array( + SSL_POLICY_NONE => t("No SSL policy, links will track page SSL state"), + 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( @@ -322,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), '$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), diff --git a/mod/dfrn_notify.php b/mod/dfrn_notify.php index 0c0c27e3d6..3dbdc5b328 100755 --- a/mod/dfrn_notify.php +++ b/mod/dfrn_notify.php @@ -14,6 +14,7 @@ function dfrn_notify_post(&$a) { $key = ((x($_POST,'key')) ? $_POST['key'] : ''); $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'); $writable = (-1); if($dfrn_version >= 2.21) { @@ -94,6 +95,65 @@ function dfrn_notify_post(&$a) { $importer['writable'] = $writable; } + // if contact's ssl policy changed, update our links + + $ssl_changed = false; + + if($ssl_policy == 'self' && strstr($importer['url'],'https:')) { + $ssl_changed = true; + $importer['url'] = str_replace('https:','http:',$importer['url']); + $importer['nurl'] = normalise_link($importer['url']); + $importer['photo'] = str_replace('https:','http:',$importer['photo']); + $importer['thumb'] = str_replace('https:','http:',$importer['thumb']); + $importer['micro'] = str_replace('https:','http:',$importer['micro']); + $importer['request'] = str_replace('https:','http:',$importer['request']); + $importer['notify'] = str_replace('https:','http:',$importer['notify']); + $importer['poll'] = str_replace('https:','http:',$importer['poll']); + $importer['confirm'] = str_replace('https:','http:',$importer['confirm']); + $importer['poco'] = str_replace('https:','http:',$importer['poco']); + } + + if($ssl_policy == 'full' && strstr($importer['url'],'http:')) { + $ssl_changed = true; + $importer['url'] = str_replace('http:','https:',$importer['url']); + $importer['nurl'] = normalise_link($importer['url']); + $importer['photo'] = str_replace('http:','https:',$importer['photo']); + $importer['thumb'] = str_replace('http:','https:',$importer['thumb']); + $importer['micro'] = str_replace('http:','https:',$importer['micro']); + $importer['request'] = str_replace('http:','https:',$importer['request']); + $importer['notify'] = str_replace('http:','https:',$importer['notify']); + $importer['poll'] = str_replace('http:','https:',$importer['poll']); + $importer['confirm'] = str_replace('http:','https:',$importer['confirm']); + $importer['poco'] = str_replace('http:','https:',$importer['poco']); + } + + if($ssl_changed) { + q("update contact set + url = '%s', + nurl = '%s', + photo = '%s', + thumb = '%s', + micro = '%s', + request = '%s', + notify = '%s', + poll = '%s', + confirm = '%s', + poco = '%s' + where id = %d limit 1", + dbesc($importer['url']), + dbesc($importer['nurl']), + dbesc($importer['photo']), + dbesc($importer['thumb']), + dbesc($importer['micro']), + dbesc($importer['request']), + dbesc($importer['notify']), + dbesc($importer['poll']), + dbesc($importer['confirm']), + dbesc($importer['poco']), + intval($importer['id']) + ); + } + logger('dfrn_notify: received notify from ' . $importer['name'] . ' for ' . $importer['username']); logger('dfrn_notify: data: ' . $data, LOGGER_DATA); diff --git a/view/admin_site.tpl b/view/admin_site.tpl index 9a12298454..01fe893c65 100755 --- a/view/admin_site.tpl +++ b/view/admin_site.tpl @@ -7,6 +7,7 @@ {{ inc field_textarea.tpl with $field=$banner }}{{ endinc }} {{ inc field_select.tpl with $field=$language }}{{ endinc }} {{ inc field_select.tpl with $field=$theme }}{{ endinc }} + {{ inc field_select.tpl with $field=$ssl_policy }}{{ endinc }}
    From 110e8f29197e0824d555b82c05c31f36b87ab7ae Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 14 Mar 2012 21:20:20 -0700 Subject: [PATCH 046/133] basic ssl_policy for important modules --- include/conversation.php | 40 ++++++++++++++++++-------------- include/nav.php | 8 ++++--- mod/admin.php | 50 ++++++++++++++++++++-------------------- mod/contacts.php | 34 +++++++++++++-------------- mod/manage.php | 2 +- mod/message.php | 20 ++++++++-------- mod/network.php | 26 +++++++++++---------- mod/notifications.php | 44 +++++++++++++++++------------------ mod/notify.php | 4 ++-- mod/profiles.php | 18 +++++++-------- mod/settings.php | 24 +++++++++---------- 11 files changed, 140 insertions(+), 130 deletions(-) diff --git a/include/conversation.php b/include/conversation.php index 117127a287..88ecf502b2 100755 --- a/include/conversation.php +++ b/include/conversation.php @@ -186,6 +186,8 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { require_once('bbcode.php'); + $ssl_state = ((local_user()) ? true : false); + $profile_owner = 0; $page_writeable = false; @@ -345,7 +347,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { 'like' => '', 'dislike' => '', 'comment' => '', - 'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl() . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))), + 'conv' => (($preview) ? '' : array('href'=> $a->get_baseurl($ssl_state) . '/display/' . $nickname . '/' . $item['id'], 'title'=> t('View in context'))), 'previewing' => $previewing, 'wait' => t('Please wait'), ); @@ -461,7 +463,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $comment_lastcollapsed = true; } - $redirect_url = $a->get_baseurl() . '/redir/' . $item['cid'] ; + $redirect_url = $a->get_baseurl($ssl_state) . '/redir/' . $item['cid'] ; $lock = ((($item['private']) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) @@ -543,7 +545,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { } $edpost = (((($profile_owner == local_user()) && ($toplevelpost) && (intval($item['wall']) == 1)) || ($mode === 'notes')) - ? array($a->get_baseurl()."/editpost/".$item['id'], t("Edit")) + ? array($a->get_baseurl($ssl_state)."/editpost/".$item['id'], t("Edit")) : False); @@ -697,7 +699,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { $page_template = get_markup_template("conversation.tpl"); $o .= replace_macros($page_template, array( - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl($ssl_state), '$mode' => $mode, '$user' => $a->user, '$threads' => $threads, @@ -707,7 +709,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) { return $o; }} -function best_link_url($item,&$sparkle) { +function best_link_url($item,&$sparkle,$ssl_state = false) { $a = get_app(); @@ -719,7 +721,7 @@ function best_link_url($item,&$sparkle) { if((local_user()) && (local_user() == $item['uid'])) { if(isset($a->contacts) && x($a->contacts,$clean_url)) { if($a->contacts[$clean_url]['network'] === NETWORK_DFRN) { - $best_url = $a->get_baseurl() . '/redir/' . $a->contacts[$clean_url]['id']; + $best_url = $a->get_baseurl($ssl_state) . '/redir/' . $a->contacts[$clean_url]['id']; $sparkle = true; } else @@ -740,10 +742,14 @@ function best_link_url($item,&$sparkle) { if(! function_exists('item_photo_menu')){ function item_photo_menu($item){ $a = get_app(); - - if (local_user() && (! count($a->contacts))) - load_contact_links(local_user()); + $ssl_state = false; + + if(local_user()) { + $ssl_state = true; + if(! count($a->contacts)) + load_contact_links(local_user()); + } $contact_url=""; $pm_url=""; $status_link=""; @@ -751,7 +757,7 @@ function item_photo_menu($item){ $posts_link=""; $sparkle = false; - $profile_link = best_link_url($item,$sparkle); + $profile_link = best_link_url($item,$sparkle,$ssl_state); if($profile_link === 'mailbox') $profile_link = ''; @@ -760,7 +766,7 @@ function item_photo_menu($item){ $status_link = $profile_link . "?url=status"; $photos_link = $profile_link . "?url=photos"; $profile_link = $profile_link . "?url=profile"; - $pm_url = $a->get_baseurl() . '/message/new/' . $cid; + $pm_url = $a->get_baseurl($ssl_state) . '/message/new/' . $cid; } else { if(local_user() && local_user() == $item['uid'] && link_compare($item['url'],$item['author-link'])) { @@ -771,8 +777,8 @@ function item_photo_menu($item){ } } if(($cid) && (! $item['self'])) { - $contact_url = $a->get_baseurl() . '/contacts/' . $cid; - $posts_link = $a->get_baseurl() . '/network/?cid=' . $cid; + $contact_url = $a->get_baseurl($ssl_state) . '/contacts/' . $cid; + $posts_link = $a->get_baseurl($ssl_state) . '/network/?cid=' . $cid; } $menu = Array( @@ -808,7 +814,7 @@ function like_puller($a,$item,&$arr,$mode) { if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) { $url = $item['author-link']; if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === 'dfrn') && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) { - $url = $a->get_baseurl() . '/redir/' . $item['contact-id']; + $url = $a->get_baseurl(true) . '/redir/' . $item['contact-id']; $sparkle = ' class="sparkle" '; } if(! ((isset($arr[$item['parent'] . '-l'])) && (is_array($arr[$item['parent'] . '-l'])))) @@ -870,7 +876,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { $a->page['htmlhead'] .= replace_macros($tpl, array( '$newpost' => 'true', - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'), '$geotag' => $geotag, '$nickname' => $x['nickname'], @@ -921,7 +927,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { $o .= replace_macros($tpl,array( '$return_path' => $a->cmd, - '$action' => $a->get_baseurl().'/item', + '$action' => $a->get_baseurl(true) . '/item', '$share' => (x($x,'button') ? $x['button'] : t('Share')), '$upload' => t('Upload photo'), '$shortupload' => t('upload photo'), @@ -945,7 +951,7 @@ function status_editor($a,$x, $notes_cid = 0, $popup=false) { '$ptyp' => (($notes_cid) ? 'note' : 'wall'), '$content' => '', '$post_id' => '', - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$defloc' => $x['default_location'], '$visitor' => $x['visitor'], '$pvisit' => (($notes_cid) ? 'none' : $x['visitor']), diff --git a/include/nav.php b/include/nav.php index aadfa82fd8..e280818399 100755 --- a/include/nav.php +++ b/include/nav.php @@ -8,6 +8,8 @@ function nav(&$a) { * */ + $ssl_state = ((local_user()) ? true : false); + if(!(x($a->page,'nav'))) $a->page['nav'] = ''; @@ -27,7 +29,7 @@ function nav(&$a) { $myident = ((is_array($a->user) && isset($a->user['nickname'])) ? $a->user['nickname'] . '@' : ''); - $sitelocation = $myident . substr($a->get_baseurl(),strpos($a->get_baseurl(),'//') + 2 ); + $sitelocation = $myident . substr($a->get_baseurl($ssl_state),strpos($a->get_baseurl($ssl_state),'//') + 2 ); // nav links: array of array('href', 'text', 'extra css classes', 'title') @@ -53,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()."/images/default-profile-mm.jpg"), + 'icon' => (count($r) ? $r[0]['micro']: $a->get_baseurl($ssl_state)."/images/default-profile-mm.jpg"), 'name' => $a->user['username'], ); @@ -76,7 +78,7 @@ function nav(&$a) { if(($a->config['register_policy'] == REGISTER_OPEN) && (! local_user()) && (! remote_user())) $nav['register'] = array('register',t('Register'), "", t('Create an account')); - $help_url = $a->get_baseurl() . '/help'; + $help_url = $a->get_baseurl($ssl_state) . '/help'; if(! get_config('system','hide_help')) $nav['help'] = array($help_url, t('Help'), "", t('Help and documentation')); diff --git a/mod/admin.php b/mod/admin.php index 2b8d9bcd23..88ccad6d3e 100755 --- a/mod/admin.php +++ b/mod/admin.php @@ -37,7 +37,7 @@ function admin_post(&$a){ $func($a); } } - goaway($a->get_baseurl() . '/admin/plugins/' . $a->argv[2] ); + goaway($a->get_baseurl(true) . '/admin/plugins/' . $a->argv[2] ); return; // NOTREACHED break; case 'logs': @@ -49,7 +49,7 @@ function admin_post(&$a){ } } - goaway($a->get_baseurl() . '/admin' ); + goaway($a->get_baseurl(true) . '/admin' ); return; // NOTREACHED } @@ -68,11 +68,11 @@ function admin_content(&$a) { // array( url, name, extra css classes ) $aside = Array( - 'site' => Array($a->get_baseurl()."/admin/site/", t("Site") , "site"), - 'users' => Array($a->get_baseurl()."/admin/users/", t("Users") , "users"), - 'plugins'=> Array($a->get_baseurl()."/admin/plugins/", t("Plugins") , "plugins"), - 'themes' => Array($a->get_baseurl()."/admin/themes/", t("Themes") , "themes"), - 'update' => Array($a->get_baseurl()."/admin/update/", t("Update") , "update") + 'site' => Array($a->get_baseurl(true)."/admin/site/", t("Site") , "site"), + 'users' => Array($a->get_baseurl(true)."/admin/users/", t("Users") , "users"), + 'plugins'=> Array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"), + 'themes' => Array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"), + 'update' => Array($a->get_baseurl(true)."/admin/update/", t("Update") , "update") ); /* get plugins admin page */ @@ -81,18 +81,18 @@ function admin_content(&$a) { $aside['plugins_admin']=Array(); foreach ($r as $h){ $plugin =$h['name']; - $aside['plugins_admin'][] = Array($a->get_baseurl()."/admin/plugins/".$plugin, $plugin, "plugin"); + $aside['plugins_admin'][] = Array($a->get_baseurl(true)."/admin/plugins/".$plugin, $plugin, "plugin"); // temp plugins with admin $a->plugins_admin[] = $plugin; } - $aside['logs'] = Array($a->get_baseurl()."/admin/logs/", t("Logs"), "logs"); + $aside['logs'] = Array($a->get_baseurl(true)."/admin/logs/", t("Logs"), "logs"); $t = get_markup_template("admin_aside.tpl"); $a->page['aside'] = replace_macros( $t, array( '$admin' => $aside, '$h_pending' => t('User registrations waiting for confirmation'), - '$admurl'=> $a->get_baseurl()."/admin/" + '$admurl'=> $a->get_baseurl(true)."/admin/" )); @@ -255,7 +255,7 @@ function admin_page_site_post(&$a){ set_config('system','diaspora_enabled', $diaspora_enabled); info( t('Site settings updated.') . EOL); - goaway($a->get_baseurl() . '/admin/site' ); + goaway($a->get_baseurl(true) . '/admin/site' ); return; // NOTREACHED } @@ -319,7 +319,7 @@ function admin_page_site(&$a) { '$corporate' => t('Policies'), '$advanced' => t('Advanced'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), // name, label, value, help string, extra data... '$sitename' => array('sitename', t("Site name"), htmlentities($a->config['sitename'], ENT_QUOTES), ""), '$banner' => array('banner', t("Banner/Logo"), $banner, ""), @@ -392,7 +392,7 @@ function admin_page_users_post(&$a){ user_deny($hash); } } - goaway($a->get_baseurl() . '/admin/users' ); + goaway($a->get_baseurl(true) . '/admin/users' ); return; // NOTREACHED } @@ -402,7 +402,7 @@ function admin_page_users(&$a){ $user = q("SELECT * FROM `user` WHERE `uid`=%d", intval($uid)); if (count($user)==0){ notice( 'User not found' . EOL); - goaway($a->get_baseurl() . '/admin/users' ); + goaway($a->get_baseurl(true) . '/admin/users' ); return; // NOTREACHED } switch($a->argv[2]){ @@ -421,7 +421,7 @@ function admin_page_users(&$a){ notice( sprintf( ($user[0]['blocked']?t("User '%s' unblocked"):t("User '%s' blocked")) , $user[0]['username']) . EOL); }; break; } - goaway($a->get_baseurl() . '/admin/users' ); + goaway($a->get_baseurl(true) . '/admin/users' ); return; // NOTREACHED } @@ -500,7 +500,7 @@ function admin_page_users(&$a){ // values // - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$pending' => $pending, '$users' => $users, @@ -539,7 +539,7 @@ function admin_page_plugins(&$a){ info( sprintf( t("Plugin %s enabled."), $plugin ) ); } set_config("system","addon", implode(", ",$a->plugins)); - goaway($a->get_baseurl() . '/admin/plugins' ); + goaway($a->get_baseurl(true) . '/admin/plugins' ); return; // NOTREACHED } // display plugin details @@ -572,7 +572,7 @@ function admin_page_plugins(&$a){ '$page' => t('Plugins'), '$toggle' => t('Toggle'), '$settings' => t('Settings'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$plugin' => $plugin, '$status' => $status, @@ -610,7 +610,7 @@ function admin_page_plugins(&$a){ '$title' => t('Administration'), '$page' => t('Plugins'), '$submit' => t('Submit'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$function' => 'plugins', '$plugins' => $plugins )); @@ -716,7 +716,7 @@ function admin_page_themes(&$a){ info( sprintf('Theme %s disabled.',$theme)); set_config('system','allowed_themes',$s); - goaway($a->get_baseurl() . '/admin/themes' ); + goaway($a->get_baseurl(true) . '/admin/themes' ); return; // NOTREACHED } @@ -745,7 +745,7 @@ function admin_page_themes(&$a){ '$page' => t('Themes'), '$toggle' => t('Toggle'), '$settings' => t('Settings'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$plugin' => $theme, '$status' => $status, @@ -777,7 +777,7 @@ function admin_page_themes(&$a){ '$title' => t('Administration'), '$page' => t('Themes'), '$submit' => t('Submit'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$function' => 'themes', '$plugins' => $xthemes, '$experimental' => t('[Experimental]'), @@ -805,7 +805,7 @@ function admin_page_logs_post(&$a) { } info( t("Log settings updated.") ); - goaway($a->get_baseurl() . '/admin/logs' ); + goaway($a->get_baseurl(true) . '/admin/logs' ); return; // NOTREACHED } @@ -859,7 +859,7 @@ readable."); '$submit' => t('Submit'), '$clear' => t('Clear'), '$data' => $data, - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$logname' => get_config('system','logfile'), // name, label, value, help string, extra data... @@ -904,7 +904,7 @@ function admin_page_remoteupdate(&$a) { $tpl = get_markup_template("admin_remoteupdate.tpl"); return replace_macros($tpl, array( - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$submit' => t("Update now"), '$close' => t("Close"), '$localversion' => FRIENDICA_VERSION, diff --git a/mod/contacts.php b/mod/contacts.php index 38ca570ddf..78c8d40928 100755 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -61,7 +61,7 @@ function contacts_post(&$a) { if(! count($orig_record)) { notice( t('Could not access contact record.') . EOL); - goaway($a->get_baseurl() . '/contacts'); + goaway($a->get_baseurl(true) . '/contacts'); return; // NOTREACHED } @@ -141,7 +141,7 @@ function contacts_content(&$a) { if(! count($orig_record)) { notice( t('Could not access contact record.') . EOL); - goaway($a->get_baseurl() . '/contacts'); + goaway($a->get_baseurl(true) . '/contacts'); return; // NOTREACHED } @@ -149,7 +149,7 @@ function contacts_content(&$a) { // pull feed and consume it, which should subscribe to the hub. proc_run('php',"include/poller.php","$contact_id"); - goaway($a->get_baseurl() . '/contacts/' . $contact_id); + goaway($a->get_baseurl(true) . '/contacts/' . $contact_id); // NOTREACHED } @@ -164,7 +164,7 @@ function contacts_content(&$a) { //notice( t('Contact has been ') . (($blocked) ? t('blocked') : t('unblocked')) . EOL ); info( (($blocked) ? t('Contact has been blocked') : t('Contact has been unblocked')) . EOL ); } - goaway($a->get_baseurl() . '/contacts/' . $contact_id); + goaway($a->get_baseurl(true) . '/contacts/' . $contact_id); return; // NOTREACHED } @@ -178,7 +178,7 @@ function contacts_content(&$a) { if($r) { info( (($readonly) ? t('Contact has been ignored') : t('Contact has been unignored')) . EOL ); } - goaway($a->get_baseurl() . '/contacts/' . $contact_id); + goaway($a->get_baseurl(true) . '/contacts/' . $contact_id); return; // NOTREACHED } @@ -220,9 +220,9 @@ function contacts_content(&$a) { contact_remove($orig_record[0]['id']); info( t('Contact has been removed.') . EOL ); if(x($_SESSION,'return_url')) - goaway($a->get_baseurl() . '/' . $_SESSION['return_url']); + goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']); else - goaway($a->get_baseurl() . '/contacts'); + goaway($a->get_baseurl(true) . '/contacts'); return; // NOTREACHED } } @@ -233,7 +233,7 @@ function contacts_content(&$a) { $contact = $a->data['contact']; $tpl = get_markup_template('contact_head.tpl'); - $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl())); + $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl(true))); require_once('include/contact_selectors.php'); @@ -295,17 +295,17 @@ function contacts_content(&$a) { $tabs = array( array( 'label' => (($contact['blocked']) ? t('Unblock') : t('Block') ), - 'url' => $a->get_baseurl() . '/contacts/' . $contact_id . '/block', + 'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/block', 'sel' => '', ), array( 'label' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ), - 'url' => $a->get_baseurl() . '/contacts/' . $contact_id . '/ignore', + 'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/ignore', 'sel' => '', ), array( 'label' => t('Repair'), - 'url' => $a->get_baseurl() . '/crepair/' . $contact_id, + 'url' => $a->get_baseurl(true) . '/crepair/' . $contact_id, 'sel' => '', ) ); @@ -322,7 +322,7 @@ function contacts_content(&$a) { '$lbl_info1' => t('Contact Information / Notes'), '$infedit' => t('Edit contact notes'), '$common_text' => $common_text, - '$common_link' => $a->get_baseurl() . '/common/' . $contact['id'], + '$common_link' => $a->get_baseurl(true) . '/common/' . $contact['id'], '$all_friends' => $all_friends, '$relation_text' => $relation_text, '$visit' => sprintf( t('Visit %s\'s profile [%s]'),$contact['name'],$contact['url']), @@ -397,30 +397,30 @@ function contacts_content(&$a) { $tabs = array( array( 'label' => t('All Contacts'), - 'url' => $a->get_baseurl() . '/contacts/all', + 'url' => $a->get_baseurl(true) . '/contacts/all', 'sel' => ($all) ? 'active' : '', ), array( 'label' => t('Unblocked Contacts'), - 'url' => $a->get_baseurl() . '/contacts', + 'url' => $a->get_baseurl(true) . '/contacts', 'sel' => ((! $all) && (! $blocked) && (! $hidden) && (! $search) && (! $nets) && (! $ignored)) ? 'active' : '', ), array( 'label' => t('Blocked Contacts'), - 'url' => $a->get_baseurl() . '/contacts/blocked', + 'url' => $a->get_baseurl(true) . '/contacts/blocked', 'sel' => ($blocked) ? 'active' : '', ), array( 'label' => t('Ignored Contacts'), - 'url' => $a->get_baseurl() . '/contacts/ignored', + 'url' => $a->get_baseurl(true) . '/contacts/ignored', 'sel' => ($ignored) ? 'active' : '', ), array( 'label' => t('Hidden Contacts'), - 'url' => $a->get_baseurl() . '/contacts/hidden', + 'url' => $a->get_baseurl(true) . '/contacts/hidden', 'sel' => ($hidden) ? 'active' : '', ), diff --git a/mod/manage.php b/mod/manage.php index ec4dcd8a00..84dfa6917c 100755 --- a/mod/manage.php +++ b/mod/manage.php @@ -74,7 +74,7 @@ function manage_post(&$a) { if($limited_id) $_SESSION['submanage'] = $original_id; - goaway($a->get_baseurl() . '/profile/' . $a->user['nickname']); + goaway($a->get_baseurl(true) . '/profile/' . $a->user['nickname']); // NOTREACHED } diff --git a/mod/message.php b/mod/message.php index 65f692f3d5..55e313776d 100755 --- a/mod/message.php +++ b/mod/message.php @@ -56,23 +56,23 @@ function message_content(&$a) { return; } - $myprofile = $a->get_baseurl() . '/profile/' . $a->user['nickname']; + $myprofile = $a->get_baseurl(true) . '/profile/' . $a->user['nickname']; $tabs = array( array( 'label' => t('Inbox'), - 'url'=> $a->get_baseurl() . '/message', + 'url'=> $a->get_baseurl(true) . '/message', 'sel'=> (($a->argc == 1) ? 'active' : ''), ), array( 'label' => t('Outbox'), - 'url' => $a->get_baseurl() . '/message/sent', + 'url' => $a->get_baseurl(true) . '/message/sent', 'sel'=> (($a->argv[1] == 'sent') ? 'active' : ''), ), array( 'label' => t('New Message'), - 'url' => $a->get_baseurl() . '/message/new', + 'url' => $a->get_baseurl(true) . '/message/new', 'sel'=> (($a->argv[1] == 'new') ? 'active' : ''), ), ); @@ -99,7 +99,7 @@ function message_content(&$a) { if($r) { info( t('Message deleted.') . EOL ); } - goaway($a->get_baseurl() . '/message' ); + goaway($a->get_baseurl(true) . '/message' ); } else { $r = q("SELECT `parent-uri`,`convid` FROM `mail` WHERE `id` = %d AND `uid` = %d LIMIT 1", @@ -129,7 +129,7 @@ function message_content(&$a) { if($r) info( t('Conversation removed.') . EOL ); } - goaway($a->get_baseurl() . '/message' ); + goaway($a->get_baseurl(true) . '/message' ); } } @@ -146,7 +146,7 @@ function message_content(&$a) { $tpl = get_markup_template('msg-header.tpl'); $a->page['htmlhead'] .= replace_macros($tpl, array( - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'), '$nickname' => $a->user['nickname'], '$linkurl' => t('Please enter a link URL:') @@ -210,7 +210,7 @@ function message_content(&$a) { $o .= replace_macros($tpl, array( '$id' => $rr['id'], '$from_name' =>$rr['from-name'], - '$from_url' => (($rr['network'] === NETWORK_DFRN) ? $a->get_baseurl() . '/redir/' . $rr['contact-id'] : $rr['url']), + '$from_url' => (($rr['network'] === NETWORK_DFRN) ? $a->get_baseurl(true) . '/redir/' . $rr['contact-id'] : $rr['url']), '$sparkle' => ' sparkle', '$from_photo' => $rr['thumb'], '$subject' => template_escape((($rr['mailseen']) ? $rr['title'] : '' . $rr['title'] . '')), @@ -267,7 +267,7 @@ function message_content(&$a) { $a->page['htmlhead'] .= replace_macros($tpl, array( '$nickname' => $a->user['nickname'], - '$baseurl' => $a->get_baseurl() + '$baseurl' => $a->get_baseurl(true) )); @@ -278,7 +278,7 @@ function message_content(&$a) { $sparkle = ''; } else { - $from_url = $a->get_baseurl() . '/redir/' . $message['contact-id']; + $from_url = $a->get_baseurl(true) . '/redir/' . $message['contact-id']; $sparkle = ' sparkle'; } $o .= replace_macros($tpl, array( diff --git a/mod/network.php b/mod/network.php index e9f3913ff4..d0f1733f46 100755 --- a/mod/network.php +++ b/mod/network.php @@ -44,14 +44,16 @@ function network_init(&$a) { } $a->page['aside'] .= group_side('network','network',true,$group_id); - $a->page['aside'] .= networks_widget($a->get_baseurl() . '/network',(x($_GET, 'nets') ? $_GET['nets'] : '')); + $a->page['aside'] .= networks_widget($a->get_baseurl(true) . '/network',(x($_GET, 'nets') ? $_GET['nets'] : '')); $a->page['aside'] .= saved_searches($search); - $a->page['aside'] .= fileas_widget($a->get_baseurl() . '/network',(x($_GET, 'file') ? $_GET['file'] : '')); + $a->page['aside'] .= fileas_widget($a->get_baseurl(true) . '/network',(x($_GET, 'file') ? $_GET['file'] : '')); } function saved_searches($search) { + $a = get_app(); + $srchurl = '/network?f=' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : '') . ((x($_GET,'star')) ? '&star=' . $_GET['star'] : '') @@ -88,7 +90,7 @@ function saved_searches($search) { $o = replace_macros($tpl, array( '$title' => t('Saved Searches'), '$add' => t('add'), - '$searchbox' => search($search,'netsearch-box',$srchurl,true), + '$searchbox' => search($search,'netsearch-box',$a->get_baseurl(true) . $srchurl,true), '$saved' => $saved, )); @@ -167,38 +169,38 @@ function network_content(&$a, $update = 0) { $tabs = array( array( 'label' => t('Commented Order'), - 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '?f=&cid=' . $_GET['cid'] : ''), + 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '?f=&cid=' . $_GET['cid'] : ''), 'sel'=>$all_active, ), array( 'label' => t('Posted Order'), - 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''), + 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''), 'sel'=>$postord_active, ), array( 'label' => t('Personal'), - 'url' => $a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&conv=1', + 'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&conv=1', 'sel' => $conv_active, ), array( 'label' => t('New'), - 'url' => $a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . '/new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''), + 'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . '/new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''), 'sel' => $new_active, ), array( 'label' => t('Starred'), - 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1', + 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1', 'sel'=>$starred_active, ), array( 'label' => t('Shared Links'), - 'url'=>$a->get_baseurl() . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1', + 'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1', 'sel'=>$bookmarked_active, ), // array( // 'label' => t('Spam'), -// 'url'=>$a->get_baseurl() . '/network?f=&spam=1' +// 'url'=>$a->get_baseurl(true) . '/network?f=&spam=1' // 'sel'=> $spam_active, // ), @@ -300,7 +302,7 @@ function network_content(&$a, $update = 0) { if($update) killme(); notice( t('No such group') . EOL ); - goaway($a->get_baseurl() . '/network'); + goaway($a->get_baseurl(true) . '/network'); // NOTREACHED } @@ -332,7 +334,7 @@ function network_content(&$a, $update = 0) { } else { notice( t('Invalid contact.') . EOL); - goaway($a->get_baseurl() . '/network'); + goaway($a->get_baseurl(true) . '/network'); // NOTREACHED } } diff --git a/mod/notifications.php b/mod/notifications.php index 99031a1d59..d478b51634 100755 --- a/mod/notifications.php +++ b/mod/notifications.php @@ -42,12 +42,12 @@ function notifications_post(&$a) { intval(local_user()) ); } - goaway($a->get_baseurl() . '/notifications/intros'); + goaway($a->get_baseurl(true) . '/notifications/intros'); } if($_POST['submit'] == t('Ignore')) { $r = q("UPDATE `intro` SET `ignore` = 1 WHERE `id` = %d LIMIT 1", intval($intro_id)); - goaway($a->get_baseurl() . '/notifications/intros'); + goaway($a->get_baseurl(true) . '/notifications/intros'); } } } @@ -69,32 +69,32 @@ function notifications_content(&$a) { $tabs = array( array( 'label' => t('System'), - 'url'=>$a->get_baseurl() . '/notifications/system', + 'url'=>$a->get_baseurl(true) . '/notifications/system', 'sel'=> (($a->argv[1] == 'system') ? 'active' : ''), ), array( 'label' => t('Network'), - 'url'=>$a->get_baseurl() . '/notifications/network', + 'url'=>$a->get_baseurl(true) . '/notifications/network', 'sel'=> (($a->argv[1] == 'network') ? 'active' : ''), ), array( 'label' => t('Personal'), - 'url'=>$a->get_baseurl() . '/notifications/personal', + 'url'=>$a->get_baseurl(true) . '/notifications/personal', 'sel'=> (($a->argv[1] == 'personal') ? 'active' : ''), ), array( 'label' => t('Home'), - 'url' => $a->get_baseurl() . '/notifications/home', + 'url' => $a->get_baseurl(true) . '/notifications/home', 'sel'=> (($a->argv[1] == 'home') ? 'active' : ''), ), array( 'label' => t('Introductions'), - 'url' => $a->get_baseurl() . '/notifications/intros', + 'url' => $a->get_baseurl(true) . '/notifications/intros', 'sel'=> (($a->argv[1] == 'intros') ? 'active' : ''), ), array( 'label' => t('Messages'), - 'url' => $a->get_baseurl() . '/message', + 'url' => $a->get_baseurl(true) . '/message', 'sel'=> '', ), ); @@ -244,7 +244,7 @@ function notifications_content(&$a) { switch($it['verb']){ case ACTIVITY_LIKE: $notif_content .= replace_macros($tpl_item_likes,array( - '$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], + '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_image' => $it['author-avatar'], '$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) @@ -253,7 +253,7 @@ function notifications_content(&$a) { case ACTIVITY_DISLIKE: $notif_content .= replace_macros($tpl_item_dislikes,array( - '$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], + '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_image' => $it['author-avatar'], '$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) @@ -267,7 +267,7 @@ function notifications_content(&$a) { $it['fname'] = $obj->title; $notif_content .= replace_macros($tpl_item_friends,array( - '$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], + '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_image' => $it['author-avatar'], '$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']), '$item_when' => relative_date($it['created']) @@ -281,7 +281,7 @@ function notifications_content(&$a) { $tpl = (($it['id'] == $it['parent']) ? $tpl_item_posts : $tpl_item_comments); $notif_content .= replace_macros($tpl,array( - '$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], + '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_image' => $it['author-avatar'], '$item_text' => $item_text, '$item_when' => relative_date($it['created']) @@ -314,7 +314,7 @@ function notifications_content(&$a) { if (count($r) > 0) { foreach ($r as $it) { $notif_content .= replace_macros($not_tpl,array( - '$item_link' => $a->get_baseurl().'/notify/view/'. $it['id'], + '$item_link' => $a->get_baseurl(true).'/notify/view/'. $it['id'], '$item_image' => $it['photo'], '$item_text' => strip_tags(bbcode($it['msg'])), '$item_when' => relative_date($it['date']) @@ -334,7 +334,7 @@ function notifications_content(&$a) { $notif_tpl = get_markup_template('notifications.tpl'); - $myurl = $a->get_baseurl() . '/profile/'. $a->user['nickname']; + $myurl = $a->get_baseurl(true) . '/profile/'. $a->user['nickname']; $myurl = substr($myurl,strpos($myurl,'://')+3); $myurl = str_replace(array('www.','.'),array('','\\.'),$myurl); $diasp_url = str_replace('/profile/','/u/',$myurl); @@ -369,7 +369,7 @@ function notifications_content(&$a) { switch($it['verb']){ case ACTIVITY_LIKE: $notif_content .= replace_macros($tpl_item_likes,array( - '$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], + '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_image' => $it['author-avatar'], '$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) @@ -378,7 +378,7 @@ function notifications_content(&$a) { case ACTIVITY_DISLIKE: $notif_content .= replace_macros($tpl_item_dislikes,array( - '$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], + '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_image' => $it['author-avatar'], '$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) @@ -392,7 +392,7 @@ function notifications_content(&$a) { $it['fname'] = $obj->title; $notif_content .= replace_macros($tpl_item_friends,array( - '$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], + '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_image' => $it['author-avatar'], '$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']), '$item_when' => relative_date($it['created']) @@ -406,7 +406,7 @@ function notifications_content(&$a) { $tpl = (($it['id'] == $it['parent']) ? $tpl_item_posts : $tpl_item_comments); $notif_content .= replace_macros($tpl,array( - '$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], + '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_image' => $it['author-avatar'], '$item_text' => $item_text, '$item_when' => relative_date($it['created']) @@ -456,7 +456,7 @@ function notifications_content(&$a) { switch($it['verb']){ case ACTIVITY_LIKE: $notif_content .= replace_macros($tpl_item_likes,array( - '$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], + '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_image' => $it['author-avatar'], '$item_text' => sprintf( t("%s liked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) @@ -465,7 +465,7 @@ function notifications_content(&$a) { break; case ACTIVITY_DISLIKE: $notif_content .= replace_macros($tpl_item_dislikes,array( - '$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], + '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_image' => $it['author-avatar'], '$item_text' => sprintf( t("%s disliked %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) @@ -479,7 +479,7 @@ function notifications_content(&$a) { $it['fname'] = $obj->title; $notif_content .= replace_macros($tpl_item_friends,array( - '$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], + '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_image' => $it['author-avatar'], '$item_text' => sprintf( t("%s is now friends with %s"), $it['author-name'], $it['fname']), '$item_when' => relative_date($it['created']) @@ -488,7 +488,7 @@ function notifications_content(&$a) { break; default: $notif_content .= replace_macros($tpl_item_comments,array( - '$item_link' => $a->get_baseurl().'/display/'.$a->user['nickname']."/".$it['parent'], + '$item_link' => $a->get_baseurl(true).'/display/'.$a->user['nickname']."/".$it['parent'], '$item_image' => $it['author-avatar'], '$item_text' => sprintf( t("%s commented on %s's post"), $it['author-name'], $it['pname']), '$item_when' => relative_date($it['created']) diff --git a/mod/notify.php b/mod/notify.php index a572b15344..ae8273a1d3 100644 --- a/mod/notify.php +++ b/mod/notify.php @@ -20,7 +20,7 @@ function notify_init(&$a) { goaway($r[0]['link']); } - goaway($a->get_baseurl()); + goaway($a->get_baseurl(true)); } if($a->argc > 2 && $a->argv[1] === 'mark' && $a->argv[2] === 'all' ) { @@ -51,7 +51,7 @@ function notify_content(&$a) { if (count($r) > 0) { foreach ($r as $it) { $notif_content .= replace_macros($not_tpl,array( - '$item_link' => $a->get_baseurl().'/notify/view/'. $it['id'], + '$item_link' => $a->get_baseurl(true).'/notify/view/'. $it['id'], '$item_image' => $it['photo'], '$item_text' => strip_tags(bbcode($it['msg'])), '$item_when' => relative_date($it['date']) diff --git a/mod/profiles.php b/mod/profiles.php index b307a2d43b..7b3b6ccc1e 100755 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -240,7 +240,7 @@ function profiles_content(&$a) { ); if(! count($r)) { notice( t('Profile not found.') . EOL); - goaway($a->get_baseurl() . '/profiles'); + goaway($a->get_baseurl(true) . '/profiles'); return; // NOTREACHED } @@ -260,7 +260,7 @@ function profiles_content(&$a) { if($r) info( t('Profile deleted.') . EOL); - goaway($a->get_baseurl() . '/profiles'); + goaway($a->get_baseurl(true) . '/profiles'); return; // NOTREACHED } @@ -297,9 +297,9 @@ function profiles_content(&$a) { info( t('New profile created.') . EOL); if(count($r3) == 1) - goaway($a->get_baseurl() . '/profiles/' . $r3[0]['id']); + goaway($a->get_baseurl(true) . '/profiles/' . $r3[0]['id']); - goaway($a->get_baseurl() . '/profiles'); + goaway($a->get_baseurl(true) . '/profiles'); } if(($a->argc > 2) && ($a->argv[1] === 'clone')) { @@ -339,9 +339,9 @@ function profiles_content(&$a) { ); info( t('New profile created.') . EOL); if(count($r3) == 1) - goaway($a->get_baseurl() . '/profiles/' . $r3[0]['id']); + goaway($a->get_baseurl(true) . '/profiles/' . $r3[0]['id']); - goaway($a->get_baseurl() . '/profiles'); + goaway($a->get_baseurl(true) . '/profiles'); return; // NOTREACHED } @@ -373,7 +373,7 @@ function profiles_content(&$a) { )); - $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl())); + $a->page['htmlhead'] .= replace_macros($tpl, array('$baseurl' => $a->get_baseurl(true))); $a->page['htmlhead'] .= ""; $f = get_config('system','birthday_input_format'); @@ -425,7 +425,7 @@ function profiles_content(&$a) { '$lbl_work' => t('Work/employment'), '$lbl_school' => t('School/education'), '$disabled' => (($is_default) ? 'onclick="return false;" style="color: #BBBBFF;"' : ''), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$profile_id' => $r[0]['id'], '$profile_name' => $r[0]['profile-name'], '$default' => (($is_default) ? '

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

    ' : ""), @@ -489,7 +489,7 @@ function profiles_content(&$a) { '$alt' => t('Profile Image'), '$profile_name' => $rr['profile-name'], '$visible' => (($rr['is-default']) ? '' . t('visible to everybody') . '' - : '' . t('Edit visibility') . '') + : '' . t('Edit visibility') . '') )); } } diff --git a/mod/settings.php b/mod/settings.php index 15fd0c352e..f694b5840f 100755 --- a/mod/settings.php +++ b/mod/settings.php @@ -59,7 +59,7 @@ function settings_post(&$a) { q("DELETE FROM tokens WHERE id='%s' AND uid=%d", dbesc($key), local_user()); - goaway($a->get_baseurl()."/settings/oauth/"); + goaway($a->get_baseurl(true)."/settings/oauth/"); return; } @@ -104,7 +104,7 @@ function settings_post(&$a) { local_user()); } } - goaway($a->get_baseurl()."/settings/oauth/"); + goaway($a->get_baseurl(true)."/settings/oauth/"); return; } @@ -411,7 +411,7 @@ function settings_post(&$a) { } - goaway($a->get_baseurl() . '/settings' ); + goaway($a->get_baseurl(true) . '/settings' ); return; // NOTREACHED } @@ -435,27 +435,27 @@ function settings_content(&$a) { $tabs = array( array( 'label' => t('Account settings'), - 'url' => $a->get_baseurl().'/settings', + 'url' => $a->get_baseurl(true).'/settings', 'sel' => (($a->argc == 1)?'active':''), ), array( 'label' => t('Connector settings'), - 'url' => $a->get_baseurl().'/settings/connectors', + 'url' => $a->get_baseurl(true).'/settings/connectors', 'sel' => (($a->argc > 1) && ($a->argv[1] === 'connectors')?'active':''), ), array( 'label' => t('Plugin settings'), - 'url' => $a->get_baseurl().'/settings/addon', + 'url' => $a->get_baseurl(true).'/settings/addon', 'sel' => (($a->argc > 1) && ($a->argv[1] === 'addon')?'active':''), ), array( 'label' => t('Connections'), - 'url' => $a->get_baseurl() . '/settings/oauth', + 'url' => $a->get_baseurl(true) . '/settings/oauth', 'sel' => (($a->argc > 1) && ($a->argv[1] === 'oauth')?'active':''), ), array( 'label' => t('Export personal data'), - 'url' => $a->get_baseurl() . '/uexport', + 'url' => $a->get_baseurl(true) . '/uexport', 'sel' => '' ) ); @@ -517,7 +517,7 @@ function settings_content(&$a) { $r = q("DELETE FROM clients WHERE client_id='%s' AND uid=%d", dbesc($a->argv[3]), local_user()); - goaway($a->get_baseurl()."/settings/oauth/"); + goaway($a->get_baseurl(true)."/settings/oauth/"); return; } @@ -533,7 +533,7 @@ function settings_content(&$a) { $tpl = get_markup_template("settings_oauth.tpl"); $o .= replace_macros($tpl, array( '$form_security_token' => get_form_security_token("settings_oauth"), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$title' => t('Connected Apps'), '$add' => t('Add application'), '$edit' => t('Edit'), @@ -789,7 +789,7 @@ function settings_content(&$a) { $theme_selected = (!x($_SESSION,'theme')? $default_theme : $_SESSION['theme']); - $subdir = ((strlen($a->get_path())) ? '
    ' . t('or') . ' ' . $a->get_baseurl() . '/profile/' . $nickname : ''); + $subdir = ((strlen($a->get_path())) ? '
    ' . t('or') . ' ' . $a->get_baseurl(true) . '/profile/' . $nickname : ''); $tpl_addr = get_markup_template("settings_nick_set.tpl"); @@ -819,7 +819,7 @@ function settings_content(&$a) { '$ptitle' => t('Account Settings'), '$submit' => t('Submit'), - '$baseurl' => $a->get_baseurl(), + '$baseurl' => $a->get_baseurl(true), '$uid' => local_user(), '$form_security_token' => get_form_security_token("settings"), From 93a8907f435e1b6ca55fa816ffb81b47a018db03 Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 14 Mar 2012 21:29:44 -0700 Subject: [PATCH 047/133] force login to ssl on SSL_POLICY_SELFSIGN --- boot.php | 18 +++++++++++------- view/login.tpl | 2 +- view/logout.tpl | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/boot.php b/boot.php index 22a4e39be5..c4cfbe5bf8 100755 --- a/boot.php +++ b/boot.php @@ -696,6 +696,7 @@ function get_guid($size=16) { if(! function_exists('login')) { function login($register = false, $hiddens=false) { + $a = get_app(); $o = ""; $reg = false; if ($register) { @@ -715,23 +716,26 @@ function login($register = false, $hiddens=false) { } + $dest_url = $a->get_baseurl(true) . '/' . $a->query_string; $o .= replace_macros($tpl,array( - '$logout' => t('Logout'), - '$login' => t('Login'), + + '$dest_url' => $dest_url, + '$logout' => t('Logout'), + '$login' => t('Login'), '$lname' => array('username', t('Nickname or Email address: ') , '', ''), '$lpassword' => array('password', t('Password: '), '', ''), '$openid' => !$noid, - '$lopenid' => array('openid_url', t('Or login using OpenID: '),'',''), + '$lopenid' => array('openid_url', t('Or login using OpenID: '),'',''), - '$hiddens' => $hiddens, + '$hiddens' => $hiddens, - '$register' => $reg, + '$register' => $reg, - '$lostpass' => t('Forgot your password?'), - '$lostlink' => t('Password Reset'), + '$lostpass' => t('Forgot your password?'), + '$lostlink' => t('Password Reset'), )); call_hooks('login_hook',$o); diff --git a/view/login.tpl b/view/login.tpl index 5349fa3d83..4cbbb16240 100755 --- a/view/login.tpl +++ b/view/login.tpl @@ -1,5 +1,5 @@ - +
    diff --git a/view/logout.tpl b/view/logout.tpl index 6a84a5bbcf..efc971df84 100755 --- a/view/logout.tpl +++ b/view/logout.tpl @@ -1,4 +1,4 @@ - +
    From b44533e9fb685bb4b38073a90003d61911e1e24e Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 14 Mar 2012 21:40:36 -0700 Subject: [PATCH 048/133] roll protocol version due to ssl_policy settings --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index c4cfbe5bf8..04f36093bf 100755 --- a/boot.php +++ b/boot.php @@ -10,7 +10,7 @@ require_once('include/cache.php'); define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_VERSION', '2.3.1281' ); -define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); +define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DB_UPDATE_VERSION', 1131 ); define ( 'EOL', "
    \r\n" ); From b06c5983a4dae26dd24aecd7473bad98558cd6fc Mon Sep 17 00:00:00 2001 From: friendica Date: Wed, 14 Mar 2012 21:58:54 -0700 Subject: [PATCH 049/133] don't allow multiple friends with http/https same person, don't show mail2 coming soon unless person is allowed to have email contacts --- mod/dfrn_request.php | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/mod/dfrn_request.php b/mod/dfrn_request.php index 4acb5c9bb5..c2d37dac7e 100755 --- a/mod/dfrn_request.php +++ b/mod/dfrn_request.php @@ -77,9 +77,10 @@ function dfrn_request_post(&$a) { * Lookup the contact based on their URL (which is the only unique thing we have at the moment) */ - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' AND `self` = 0 LIMIT 1", + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND (`url` = '%s' OR `nurl` = '%s') AND `self` = 0 LIMIT 1", intval(local_user()), - dbesc($dfrn_url) + dbesc($dfrn_url), + dbesc(normalise_link($dfrn_url)) ); if(count($r)) { @@ -668,7 +669,21 @@ function dfrn_request_content(&$a) { $page_desc .= t("Please enter your 'Identity Address' from one of the following supported communications networks:"); - $emailnet = t("Connect as an email follower \x28Coming soon\x29"); + // see if we are allowed to have NETWORK_MAIL2 contacts + + $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1); + if(get_config('system','dfrn_only')) + $mail_disabled = 1; + + if(! $mail_disabled) { + $r = q("SELECT * FROM `mailacct` WHERE `uid` = %d LIMIT 1", + intval($a->profile['uid']) + ); + if(! count($r)) + $mail_disabled = 1; + } + + $emailnet = (($mail_disabled) ? '' : t("Connect as an email follower \x28Coming soon\x29")); $invite_desc = t('If you are not yet a member of the free social web, follow this link to find a public Friendica site and join us today.'); From 6dbee45d92450131bad7a8381a0339a880dacfd9 Mon Sep 17 00:00:00 2001 From: tommy tomson Date: Thu, 15 Mar 2012 08:29:39 +0100 Subject: [PATCH 050/133] add links to wall, photos, events, etc to aside on networkpage, fixes in css --- view/theme/diabook-blue/icons/toogle_off.png | Bin 391 -> 834 bytes view/theme/diabook-blue/icons/toogle_on.png | Bin 429 -> 715 bytes view/theme/diabook-blue/profile_side.tpl | 3 +- view/theme/diabook-blue/style.css | 40 +++++++++++++++---- view/theme/diabook-blue/theme.php | 2 +- view/theme/diabook/icons/toogle_off.png | Bin 391 -> 834 bytes view/theme/diabook/icons/toogle_on.png | Bin 429 -> 715 bytes view/theme/diabook/profile_side.tpl | 3 +- view/theme/diabook/style.css | 38 +++++++++++++++--- view/theme/diabook/theme.php | 9 ++--- 10 files changed, 74 insertions(+), 21 deletions(-) mode change 100755 => 100644 view/theme/diabook-blue/icons/toogle_off.png mode change 100755 => 100644 view/theme/diabook-blue/icons/toogle_on.png mode change 100755 => 100644 view/theme/diabook/icons/toogle_off.png mode change 100755 => 100644 view/theme/diabook/icons/toogle_on.png diff --git a/view/theme/diabook-blue/icons/toogle_off.png b/view/theme/diabook-blue/icons/toogle_off.png old mode 100755 new mode 100644 index 99490bcd956d9ab7359265a6ecd0aa4a6e5d77b8..0fcce4d5abe02fd91f47054311ee2cc6c567eaa3 GIT binary patch delta 750 zcmVVi|K~y-))s#UjgqunmtsnRllyr(QYC_X&pQVSnFY|gZKVIR)neJ2PVVTTDdiF z=ZBy74c2Sljy8v0-afpIt4T~sNe~gFlq?A3LU@f4YOf!8cjoq$3!9+odFS%&?-M2E zJGCUa=++6v^G;wMa^7z6~Meba3xY8L0p;=-7JST=9_2F=I`_c0>B4v z9h~WA`hUz?H_fxckn@3+QWRLA(3aY1j*U!TT3A{;{mH2*{f|%Yv*{b>8jZm-FO7}T z&h1Tf*1Pz1aTzP^_QT1BIQr(>$2xykCwc*YTh}v->t<2<^_d`k;Y)-m9Zw8jVhISf>x!X;y51f_h)T-cG&5r*W*aF_l%8Tyje$cu!>3? zBX~dipMY0CKlx;})BW_pFLO_SnrmbJ_b#;7U*%bLz8_HaOSambODaxoiKL#Sg+;FO g_Vn2gQ@qgj2lFC%_ar^g;{X5v07*qoM6N<$g2`%WssI20 delta 304 zcmV-00nh%z28RQXV1EM-2m;Zz57Phu0S8G$K~y-)y_7o+!axi}Unr0$B50wYp`xIp zTnptG60P#t%WGS&dv-a9+Xjp<5z8)|FX23wU6OaNq zaQWn*SilmvdRodCzeCgowgy}S1#p%YvN``&n5SaNa$o~Yfq%YqDqHT6J}uJ)9f9!0 z!69%k@$sVuq$aZv7y}uQsCj|DGxt1Iq=FV1Et`2`&qpUcvwX0!v9mK~y-))s#y}RB;r>f9F5rj5$6AGc`pk z%I1pVwZ8)D1nu-6vvlu>O8c-77Qy}i_9s{^p@q*X`58f@3Aw_J zwR!VLiKfPvY(0#0o)kJyLEC=F4ng}MWCxLseL{A(YQU&IqPsrO508*YLF|H;16CoC zfK&@)Iv}$hT7UY4L^B#PzBZoxZQT2GsvoDt$w7G;$>D)@0Lju#LF0fCzLn*tgmxy8IiM_aR+hO{_UpTG|Qrq%dvb_*5h*ULRN~crLHuVpG>E4UCP5nLH+bpZ#Up;+rf&X4V0Ovpo9U(9z QwEzGB07*qoM6N<$f;kHy?*IS* delta 342 zcmV-c0jd7W1+4>+V1EM-2OO*+E`I<30WC>HK~y-)z0@&ELqQM*;7=0;ix|N!tstcE z7^0;I2xt@W2sUD&hX`Wj8N7(R!W#r^qA8+9FwbUQSRQ$a8siVc+c!J^zdN(D%O7KH z&fFGSIKWQ$-jJb>kDn~m3E~)e$;L6)`Hs*gdI@=g5r$!-@P8Haz2HRFZm(pBEiU4Nnz2v*=K&+NOqwBApq%SlKq^#vUx& o*ekhuD|sB2e!l+gf&DeU01zaMNb{IjV*mgE07*qoM6N<$g36Me00000 diff --git a/view/theme/diabook-blue/profile_side.tpl b/view/theme/diabook-blue/profile_side.tpl index 595684bf51..01da55ce1c 100644 --- a/view/theme/diabook-blue/profile_side.tpl +++ b/view/theme/diabook-blue/profile_side.tpl @@ -8,10 +8,11 @@
    diff --git a/view/theme/diabook-blue/style.css b/view/theme/diabook-blue/style.css index 5143140497..bdc79a350d 100644 --- a/view/theme/diabook-blue/style.css +++ b/view/theme/diabook-blue/style.css @@ -461,7 +461,7 @@ code { } #panel { position: absolute; - width: 10em; + width: 12em; background: #ffffff; color: #2d2d2d; margin: 0px; @@ -780,8 +780,6 @@ ul.menu-popup { margin: 0px; padding: 0px; list-style: none; - border: 1px solid #364e59; - border-top-color: transparent; z-index: 100000; -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); @@ -1922,7 +1920,7 @@ max-width: 85%; } .lframe { float: left; - margin: 0px 10px 10px 0px; + /*margin: 0px 10px 10px 0px;*/ } /* profile match wrapper */ .profile-match-wrapper { @@ -2362,8 +2360,36 @@ float: left; .contact-details { color: #999999; } - -.photo-top-image-wrapper { +#side-bar-photos-albums{ + margin-top: 15px; + } +.photo-top-photo, .photo-album-photo { + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.photo-album-image-wrapper, .photo-top-image-wrapper { + float: left; + -moz-box-shadow: 0 0 5px #888; + -webkit-box-shadow: 0 0 5px #888; + box-shadow: 0 0 5px #888; + background-color: #EEE; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding-bottom: 20px; + position: relative; + margin: 0 10px 10px 0; +} +.photo-top-album-name { + position: absolute; + bottom: 0; + padding: 0 5px; +} +.photo-top-album-link{ + color: #1872A2; + } +/*.photo-top-image-wrapper { position: relative; float: left; margin-top: 15px; @@ -2379,7 +2405,7 @@ float: left; padding: 0px 3px; padding-top: 0.5em; background-color: rgb(255, 255, 255); -} +}*/ #photo-top-end { clear: both; } diff --git a/view/theme/diabook-blue/theme.php b/view/theme/diabook-blue/theme.php index 75abb2fdf1..9093ac2ca2 100755 --- a/view/theme/diabook-blue/theme.php +++ b/view/theme/diabook-blue/theme.php @@ -34,7 +34,7 @@ $ps['usermenu'][profile] = Array('profile/' . $a->user['nickname']. '?tab=profil $ps['usermenu'][photos] = Array('photos/' . $a->user['nickname'], t('Photos'), "", t('Your photos')); $ps['usermenu'][events] = Array('events/', t('Events'), "", t('Your events')); $ps['usermenu'][notes] = Array('notes/', t('Personal notes'), "", t('Your personal photos')); - +$ps['usermenu'][community] = Array('community/', t('Community'), "", ""); if($is_url = preg_match ("/\bnetwork\b/i", $_SERVER['REQUEST_URI'])) { $tpl = get_markup_template('profile_side.tpl'); diff --git a/view/theme/diabook/icons/toogle_off.png b/view/theme/diabook/icons/toogle_off.png old mode 100755 new mode 100644 index 99490bcd956d9ab7359265a6ecd0aa4a6e5d77b8..0fcce4d5abe02fd91f47054311ee2cc6c567eaa3 GIT binary patch delta 750 zcmVVi|K~y-))s#UjgqunmtsnRllyr(QYC_X&pQVSnFY|gZKVIR)neJ2PVVTTDdiF z=ZBy74c2Sljy8v0-afpIt4T~sNe~gFlq?A3LU@f4YOf!8cjoq$3!9+odFS%&?-M2E zJGCUa=++6v^G;wMa^7z6~Meba3xY8L0p;=-7JST=9_2F=I`_c0>B4v z9h~WA`hUz?H_fxckn@3+QWRLA(3aY1j*U!TT3A{;{mH2*{f|%Yv*{b>8jZm-FO7}T z&h1Tf*1Pz1aTzP^_QT1BIQr(>$2xykCwc*YTh}v->t<2<^_d`k;Y)-m9Zw8jVhISf>x!X;y51f_h)T-cG&5r*W*aF_l%8Tyje$cu!>3? zBX~dipMY0CKlx;})BW_pFLO_SnrmbJ_b#;7U*%bLz8_HaOSambODaxoiKL#Sg+;FO g_Vn2gQ@qgj2lFC%_ar^g;{X5v07*qoM6N<$g2`%WssI20 delta 304 zcmV-00nh%z28RQXV1EM-2m;Zz57Phu0S8G$K~y-)y_7o+!axi}Unr0$B50wYp`xIp zTnptG60P#t%WGS&dv-a9+Xjp<5z8)|FX23wU6OaNq zaQWn*SilmvdRodCzeCgowgy}S1#p%YvN``&n5SaNa$o~Yfq%YqDqHT6J}uJ)9f9!0 z!69%k@$sVuq$aZv7y}uQsCj|DGxt1Iq=FV1Et`2`&qpUcvwX0!v9mK~y-))s#y}RB;r>f9F5rj5$6AGc`pk z%I1pVwZ8)D1nu-6vvlu>O8c-77Qy}i_9s{^p@q*X`58f@3Aw_J zwR!VLiKfPvY(0#0o)kJyLEC=F4ng}MWCxLseL{A(YQU&IqPsrO508*YLF|H;16CoC zfK&@)Iv}$hT7UY4L^B#PzBZoxZQT2GsvoDt$w7G;$>D)@0Lju#LF0fCzLn*tgmxy8IiM_aR+hO{_UpTG|Qrq%dvb_*5h*ULRN~crLHuVpG>E4UCP5nLH+bpZ#Up;+rf&X4V0Ovpo9U(9z QwEzGB07*qoM6N<$f;kHy?*IS* delta 342 zcmV-c0jd7W1+4>+V1EM-2OO*+E`I<30WC>HK~y-)z0@&ELqQM*;7=0;ix|N!tstcE z7^0;I2xt@W2sUD&hX`Wj8N7(R!W#r^qA8+9FwbUQSRQ$a8siVc+c!J^zdN(D%O7KH z&fFGSIKWQ$-jJb>kDn~m3E~)e$;L6)`Hs*gdI@=g5r$!-@P8Haz2HRFZm(pBEiU4Nnz2v*=K&+NOqwBApq%SlKq^#vUx& o*ekhuD|sB2e!l+gf&DeU01zaMNb{IjV*mgE07*qoM6N<$g36Me00000 diff --git a/view/theme/diabook/profile_side.tpl b/view/theme/diabook/profile_side.tpl index 595684bf51..01da55ce1c 100644 --- a/view/theme/diabook/profile_side.tpl +++ b/view/theme/diabook/profile_side.tpl @@ -8,10 +8,11 @@
    diff --git a/view/theme/diabook/style.css b/view/theme/diabook/style.css index df692cbc65..437f323faa 100644 --- a/view/theme/diabook/style.css +++ b/view/theme/diabook/style.css @@ -462,7 +462,7 @@ code { } #panel { position: absolute; - width: 10em; + width: 12em; background: #ffffff; color: #2d2d2d; margin: 0px; @@ -769,8 +769,6 @@ ul.menu-popup { margin: 0px; padding: 0px; list-style: none; - border: 1px solid #364e59; - border-top-color: transparent; z-index: 100000; -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7); @@ -1904,7 +1902,6 @@ ul.tabs li .active { /* photo */ .lframe { float: left; - margin: 0px 10px 10px 0px; } /* profile match wrapper */ .profile-match-wrapper { @@ -2352,7 +2349,36 @@ float: left; color: #999999; } -.photo-top-image-wrapper { +#side-bar-photos-albums{ + margin-top: 15px; + } +.photo-top-photo, .photo-album-photo { + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.photo-album-image-wrapper, .photo-top-image-wrapper { + float: left; + -moz-box-shadow: 0 0 5px #888; + -webkit-box-shadow: 0 0 5px #888; + box-shadow: 0 0 5px #888; + background-color: #EEE; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + padding-bottom: 20px; + position: relative; + margin: 0 10px 10px 0; +} +.photo-top-album-name { + position: absolute; + bottom: 0; + padding: 0 5px; +} +.photo-top-album-link{ + color: #1872A2; + } +/*.photo-top-image-wrapper { position: relative; float: left; margin-top: 15px; @@ -2368,7 +2394,7 @@ float: left; padding: 0px 3px; padding-top: 0.5em; background-color: rgb(255, 255, 255); -} +}*/ #photo-top-end { clear: both; } diff --git a/view/theme/diabook/theme.php b/view/theme/diabook/theme.php index 9b3ed30b06..9093ac2ca2 100755 --- a/view/theme/diabook/theme.php +++ b/view/theme/diabook/theme.php @@ -1,8 +1,8 @@ user['nickname']. '?tab=profil $ps['usermenu'][photos] = Array('photos/' . $a->user['nickname'], t('Photos'), "", t('Your photos')); $ps['usermenu'][events] = Array('events/', t('Events'), "", t('Your events')); $ps['usermenu'][notes] = Array('notes/', t('Personal notes'), "", t('Your personal photos')); - +$ps['usermenu'][community] = Array('community/', t('Community'), "", ""); if($is_url = preg_match ("/\bnetwork\b/i", $_SERVER['REQUEST_URI'])) { $tpl = get_markup_template('profile_side.tpl'); @@ -46,8 +46,7 @@ $a->page['aside'] .= replace_macros($tpl, array( } } -//js script - +//js scripts $a->page['htmlhead'] .= <<< EOT diff --git a/view/theme/dispy-dark/jot-header.tpl b/view/theme/dispy-dark/jot-header.tpl index 43dcdbb841..4c8f59d796 100644 --- a/view/theme/dispy-dark/jot-header.tpl +++ b/view/theme/dispy-dark/jot-header.tpl @@ -114,6 +114,7 @@ function enableOnUser(){ $(this).val(""); initEditor(); } + EOT; diff --git a/view/theme/dispy-dark/wall_item.tpl b/view/theme/dispy-dark/wall_item.tpl index b013cfeef4..c67a88635c 100644 --- a/view/theme/dispy-dark/wall_item.tpl +++ b/view/theme/dispy-dark/wall_item.tpl @@ -26,11 +26,14 @@ {{ endif }} + {{ if $item.vote }} {{ endif }} diff --git a/view/theme/dispy-dark/wallwall_item.tpl b/view/theme/dispy-dark/wallwall_item.tpl index 86453fad21..f251d7352b 100644 --- a/view/theme/dispy-dark/wallwall_item.tpl +++ b/view/theme/dispy-dark/wallwall_item.tpl @@ -31,11 +31,15 @@ {{ endif }} + {{ if $item.vote }} {{ endif }} @@ -63,6 +67,7 @@ {{ endfor }}
    +
    $item.name diff --git a/view/theme/dispy/theme.php b/view/theme/dispy/theme.php index 75297290cd..cbfcb09e67 100644 --- a/view/theme/dispy/theme.php +++ b/view/theme/dispy/theme.php @@ -111,6 +111,3 @@ $(document).ready(function() { }); EOT; - -$a->page['footer'] .= << + {{ endif }} - {{ if $item.filer }} - - {{ endif }} - +
    {{ if $item.drop.dropping }}{{ endif }}
    diff --git a/view/theme/duepuntozero/wallwall_item.tpl b/view/theme/duepuntozero/wallwall_item.tpl index c37bcb4a28..211906c934 100755 --- a/view/theme/duepuntozero/wallwall_item.tpl +++ b/view/theme/duepuntozero/wallwall_item.tpl @@ -61,9 +61,6 @@ {{ endif }} - {{ if $item.filer }} - - {{ endif }}
    {{ if $item.drop.dropping }}{{ endif }} From b5120888cf6e3aac29aa2a8d80bddcab73822e1e Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 15 Mar 2012 21:17:51 +0100 Subject: [PATCH 054/133] html2bbcode: Disabled size conversion --- include/html2bbcode.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/html2bbcode.php b/include/html2bbcode.php index 0dafecc71f..69ccf41b71 100755 --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -142,14 +142,14 @@ function html2bbcode($message) node2bbcode($doc, 'span', array('style'=>'font-style: italic;'), '[i]', '[/i]'); node2bbcode($doc, 'span', array('style'=>'font-weight: bold;'), '[b]', '[/b]'); - node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/', 'size'=>'/(\d+)/', 'color'=>'/(.+)/'), '[font=$1][size=$2][color=$3]', '[/color][/size][/font]'); + /*node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/', 'size'=>'/(\d+)/', 'color'=>'/(.+)/'), '[font=$1][size=$2][color=$3]', '[/color][/size][/font]'); node2bbcode($doc, 'font', array('size'=>'/(\d+)/', 'color'=>'/(.+)/'), '[size=$1][color=$2]', '[/color][/size]'); node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/', 'size'=>'/(.+)/'), '[font=$1][size=$2]', '[/size][/font]'); node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/', 'color'=>'/(.+)/'), '[font=$1][color=$3]', '[/color][/font]'); node2bbcode($doc, 'font', array('face'=>'/([\w ]+)/'), '[font=$1]', '[/font]'); node2bbcode($doc, 'font', array('size'=>'/(\d+)/'), '[size=$1]', '[/size]'); node2bbcode($doc, 'font', array('color'=>'/(.+)/'), '[color=$1]', '[/color]'); - +*/ // Untested //node2bbcode($doc, 'span', array('style'=>'/.*font-size:\s*(.+?)[,;].*font-family:\s*(.+?)[,;].*color:\s*(.+?)[,;].*/'), '[size=$1][font=$2][color=$3]', '[/color][/font][/size]'); //node2bbcode($doc, 'span', array('style'=>'/.*font-size:\s*(\d+)[,;].*/'), '[size=$1]', '[/size]'); @@ -191,13 +191,13 @@ function html2bbcode($message) node2bbcode($doc, 'hr', array(), "[hr]", ""); - //node2bbcode($doc, 'table', array(), "", ""); - //node2bbcode($doc, 'tr', array(), "\n", ""); - //node2bbcode($doc, 'td', array(), "\t", ""); - node2bbcode($doc, 'table', array(), "[table]", "[/table]"); - node2bbcode($doc, 'th', array(), "[th]", "[/th]"); - node2bbcode($doc, 'tr', array(), "[tr]", "[/tr]"); - node2bbcode($doc, 'td', array(), "[td]", "[/td]"); + node2bbcode($doc, 'table', array(), "", ""); + node2bbcode($doc, 'tr', array(), "\n", ""); + node2bbcode($doc, 'td', array(), "\t", ""); + //node2bbcode($doc, 'table', array(), "[table]", "[/table]"); + //node2bbcode($doc, 'th', array(), "[th]", "[/th]"); + //node2bbcode($doc, 'tr', array(), "[tr]", "[/tr]"); + //node2bbcode($doc, 'td', array(), "[td]", "[/td]"); node2bbcode($doc, 'h1', array(), "\n\n[size=xx-large][b]", "[/b][/size]\n"); node2bbcode($doc, 'h2', array(), "\n\n[size=x-large][b]", "[/b][/size]\n"); From eee2eed5882336dbae92f0ac799f87999e9a5d98 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Thu, 15 Mar 2012 17:25:22 -0400 Subject: [PATCH 055/133] Merge branch 'master', remote-tracking branch 'remotes/upstream/master' * remotes/upstream/master: * master: From 5c75d40c0b6bee04d8c58a6f88ecbbe34684874a Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Thu, 15 Mar 2012 17:27:06 -0400 Subject: [PATCH 056/133] 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 057/133] 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 058/133] 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 059/133] 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 060/133] 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 f727b44c08b4c6051cd8b81e1b3076af5878a921 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 01:51:25 -0400 Subject: [PATCH 061/133] Merge branch 'master', remote-tracking branch 'remotes/upstream/master' * remotes/upstream/master: (21 commits) turn indexes back off (this is from an errant checkin a year or more ago) undo git stuffup added icons to profile_side, fixes in css track whether contact is a community page or not html2bbcode: Disabled size conversion Mail: Subject are now with working "Re:" Removing test exports Missing field in database.sql Removed changes Added config options for the item cache and the ostatus priority Item cache now is one day. Corrected some git problems Cache: item cache now has an autodelete of old files. The pages plugin now sets a link via redirection. So posting works. Pages: Show every community page - even from foreign servers (with caching) New plugin that shows community pages in the sidebar Caching improved. Enabled Caching for items. Changed color of tags in diabook. New config options if ostatus polling should use the priority in the contacts Mail: Removing signatures, gpg, unnecessary line breaks diabook: Moving the location between the icons ... * master: From 6bdb71f01c93c691a43caaf9686ce5ac0b687701 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 01:55:34 -0400 Subject: [PATCH 062/133] 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 063/133] 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 064/133] 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 065/133] 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 066/133] 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 067/133] 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 068/133] 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 069/133] 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 070/133] 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 071/133] 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 01f87108324eb6b45f3649400557ada4e54502f7 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 16:41:19 -0400 Subject: [PATCH 072/133] Merge branch 'master', remote-tracking branch 'remotes/upstream/master' * remotes/upstream/master: Bugfix of old IEs Forgot to remove a debug line 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 * master: From 91fee866b7f870b66d770c7c4e6db0afd874de33 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 16:43:34 -0400 Subject: [PATCH 073/133] 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 074/133] 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 075/133] 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 0e9d5e0ce869a75498e1f5eff847b6037d6c1f67 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 18:35:50 -0400 Subject: [PATCH 076/133] Merge branch 'master', remote-tracking branch 'remotes/upstream/master' * remotes/upstream/master: wrong link in d* comment notifications * master: From 82f2bfea5bbf7c35450eb8fe9ee119e0b00d3d61 Mon Sep 17 00:00:00 2001 From: friendica Date: Fri, 16 Mar 2012 16:05:16 -0700 Subject: [PATCH 077/133] 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 078/133] 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 030c8a089a7b5757d8ec2faf61d1021138eb9de4 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 21:19:17 -0400 Subject: [PATCH 079/133] Merge branch 'master', remote-tracking branch 'remotes/upstream/master' * remotes/upstream/master: * master: From 49540fb958376d067f44a9274f8edeb80f10da3a Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Fri, 16 Mar 2012 21:20:23 -0400 Subject: [PATCH 080/133] 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 081/133] 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 2b06b081d32666ed62e47e7e224c8b4b27d4e9d5 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sat, 17 Mar 2012 01:47:53 -0400 Subject: [PATCH 082/133] Merge branch 'master', remote-tracking branch 'remotes/upstream/master' * remotes/upstream/master: * master: From 87fdae2dd8bdb9e01ce3d98f6ea94d83664cb4c2 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sat, 17 Mar 2012 01:55:40 -0400 Subject: [PATCH 083/133] [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 084/133] 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 085/133] 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 c7759af8c5375d3201b8185b61b6fc6feef98df0 Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sat, 17 Mar 2012 03:23:46 -0400 Subject: [PATCH 086/133] Merge branch 'master', remote-tracking branch 'remotes/upstream/master' * remotes/upstream/master: cut/paste error scheme checking for webservers without $_SERVER['HTTPS'] * master: From e0e008fb8d894c7fe56fbb88fa96224c0796ea75 Mon Sep 17 00:00:00 2001 From: friendica Date: Sat, 17 Mar 2012 02:26:52 -0700 Subject: [PATCH 087/133] 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 088/133] 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 089/133] 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 090/133] 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 091/133] 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 092/133] 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 093/133] 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 094/133] 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 095/133] 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 096/133] 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 5e2a9c99a64dc75dd70320859b093d132e823f1f Mon Sep 17 00:00:00 2001 From: Simon L'nu Date: Sun, 18 Mar 2012 21:09:25 -0400 Subject: [PATCH 097/133] Merge branch 'master', remote-tracking branch 'remotes/upstream/master' * remotes/upstream/master: revup CSRF-Protection in the group-related form (creating, renaming and dropping a group, adding/removing members from it) * master: From cca524495cdc8c1167421393f4d8e8da4a94a855 Mon Sep 17 00:00:00 2001 From: friendica Date: Sun, 18 Mar 2012 22:12:36 -0700 Subject: [PATCH 098/133] 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 099/133] 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 100/133] 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 101/133] 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 102/133] 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 103/133] 	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 104/133] 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 105/133] 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 106/133] 	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 107/133] 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 108/133] 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 109/133] 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 110/133] 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 111/133] 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 112/133] 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 113/133] 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 114/133] 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 115/133] 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(/