aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xboot.php4
-rwxr-xr-xdatabase.sql28
-rwxr-xr-xdoc/Plugins.md40
-rwxr-xr-xinclude/bb2diaspora.php2
-rwxr-xr-xinclude/bbcode.php6
-rwxr-xr-xinclude/conversation.php28
-rwxr-xr-xinclude/text.php81
-rwxr-xr-xlibrary/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js2
-rwxr-xr-xmod/contacts.php95
-rwxr-xr-xmod/network.php6
-rwxr-xr-xupdate.php30
-rwxr-xr-xview/comment_item.tpl6
-rwxr-xr-xview/contacts-top.tpl9
-rwxr-xr-xview/head.tpl12
-rwxr-xr-xview/install_checks.tpl2
-rwxr-xr-xview/mail_conv.tpl2
-rwxr-xr-xview/theme/dispy/wall_item.tpl2
-rwxr-xr-xview/theme/dispy/wallwall_item.tpl2
-rwxr-xr-xview/theme/duepuntozero/style.css17
-rwxr-xr-xview/theme/duepuntozero/wall_item.tpl2
-rwxr-xr-xview/theme/duepuntozero/wallwall_item.tpl2
-rwxr-xr-xview/theme/loozah/wall_item.tpl2
-rwxr-xr-xview/theme/loozah/wallwall_item.tpl2
-rwxr-xr-xview/theme/quattro-green/colors.less94
-rwxr-xr-xview/theme/quattro-green/contact_template.tpl21
-rwxr-xr-xview/theme/quattro-green/experimental0
-rwxr-xr-xview/theme/quattro-green/style.css1374
-rwxr-xr-xview/theme/quattro-green/style.less14
-rwxr-xr-xview/theme/testbubble/wall_item.tpl2
-rwxr-xr-xview/theme/testbubble/wallwall_item.tpl2
30 files changed, 1816 insertions, 73 deletions
diff --git a/boot.php b/boot.php
index 7a43549bd..df835f0c1 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.1250' );
+define ( 'FRIENDICA_VERSION', '2.3.1252' );
define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
-define ( 'DB_UPDATE_VERSION', 1121 );
+define ( 'DB_UPDATE_VERSION', 1122 );
define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
diff --git a/database.sql b/database.sql
index 0b03149e9..32d7cf40b 100755
--- a/database.sql
+++ b/database.sql
@@ -781,3 +781,31 @@ INDEX ( `uid` ),
INDEX ( `mid` )
) ENGINE = MyISAM DEFAULT CHARSET=utf8;
+CREATE TABLE IF NOT EXISTS `poll_result` (
+`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`poll_id` INT NOT NULL ,
+`choice` INT NOT NULL ,
+INDEX ( `poll_id` ),
+INDEX ( `choice` )
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
+
+
+CREATE TABLE IF NOT EXISTS `poll` (
+`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`uid` INT NOT NULL ,
+`q0` MEDIUMTEXT NOT NULL ,
+`q1` MEDIUMTEXT NOT NULL ,
+`q2` MEDIUMTEXT NOT NULL ,
+`q3` MEDIUMTEXT NOT NULL ,
+`q4` MEDIUMTEXT NOT NULL ,
+`q5` MEDIUMTEXT NOT NULL ,
+`q6` MEDIUMTEXT NOT NULL ,
+`q7` MEDIUMTEXT NOT NULL ,
+`q8` MEDIUMTEXT NOT NULL ,
+`q9` MEDIUMTEXT NOT NULL ,
+INDEX ( `uid` )
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
+
+
+
+
diff --git a/doc/Plugins.md b/doc/Plugins.md
index 70a8726c7..29dff3187 100755
--- a/doc/Plugins.md
+++ b/doc/Plugins.md
@@ -1,11 +1,20 @@
**Friendica Addon/Plugin development**
-This is an early specification and hook details may be subject to change.
-
Please see the sample addon 'randplace' for a working example of using some of these features. The facebook addon provides an example of integrating both "addon" and "module" functionality. Addons work by intercepting event hooks - which must be registered. Modules work by intercepting specific page requests (by URL path).
-Plugin names cannot contain spaces and are used as filenames. Each addon must contain both an install and an uninstall function based on the addon/plugin name. For instance "plugin1name_install()". These two functions take no arguments and are usually responsible for registering (and unregistering) event hooks that your plugin will require. The install and uninstall functions will also be called (i.e. re-installed) if the plugin changes after installation - therefore your uninstall should not destroy data and install should consider that data may already exist. Future extensions may provide for "setup" amd "remove".
+Plugin names cannot contain spaces or other punctuation and are used as filenames and function names. You may supply a "friendly" name within the comment block. Each addon must contain both an install and an uninstall function based on the addon/plugin name. For instance "plugin1name_install()". These two functions take no arguments and are usually responsible for registering (and unregistering) event hooks that your plugin will require. The install and uninstall functions will also be called (i.e. re-installed) if the plugin changes after installation - therefore your uninstall should not destroy data and install should consider that data may already exist. Future extensions may provide for "setup" amd "remove".
+
+Plugins should contain a comment block with the four following parameters:
+
+ /*
+ * Name: My Great Plugin
+ * Description: This is what my plugin does. It's really cool
+ * Version: 1.0
+ * Author: John Q. Public <john@myfriendicasite.com>
+ */
+
+
Register your plugin hooks during installation.
@@ -160,7 +169,8 @@ Your module functions will often contain the function plugin_name_content(&$a),
$b is (string) HTML of content div
-A complete list of all hook callbacks with file locations (generated 09-Nov-2011): Please see the source for details of any hooks not documented above.
+A complete list of all hook callbacks with file locations (generated 14-Feb-2012): Please see the source for details of any hooks not documented above.
+
boot.php: call_hooks('login_hook',$o);
@@ -170,7 +180,7 @@ boot.php: call_hooks('profile_sidebar', $arr);
boot.php: call_hooks("proc_run", $arr);
-include/contact_selectors.php: call_hooks('network_to_name', $s);
+include/contact_selectors.php: call_hooks('network_to_name', $nets);
include/api.php: call_hooks('logged_in', $a->user);
@@ -194,8 +204,6 @@ include/nav.php: call_hooks('page_header', $a->page['nav']);
include/auth.php: call_hooks('authenticate', $addon_auth);
-include/auth.php: call_hooks('logged_in', $a->user);
-
include/bbcode.php: call_hooks('bbcode',$Text);
include/oauth.php: call_hooks('logged_in', $a->user);
@@ -236,19 +244,29 @@ include/bb2diaspora.php: call_hooks('bb2diaspora',$Text);
include/cronhooks.php: call_hooks('cron', $d);
+include/security.php: call_hooks('logged_in', $a->user);
+
include/html2bbcode.php: call_hooks('html2bbcode', $text);
+include/Contact.php: call_hooks('remove_user',$r[0]);
+
include/Contact.php: call_hooks('contact_photo_menu', $args);
+include/conversation.php: call_hooks('conversation_start',$cb);
+
+include/conversation.php: call_hooks('render_location',$locate);
+
include/conversation.php: call_hooks('display_item', $arr);
+include/conversation.php: call_hooks('render_location',$locate);
+
include/conversation.php: call_hooks('display_item', $arr);
include/conversation.php: call_hooks('item_photo_menu', $args);
-include/conversation.php: call_hooks('jot_tool', $jotplugins);
+include/conversation.php: call_hooks('jot_tool', $jotplugins);
-include/conversation.php: call_hooks('jot_networks', $jotnets);
+include/conversation.php: call_hooks('jot_networks', $jotnets);
include/plugin.php:if(! function_exists('call_hooks')) {
@@ -282,6 +300,8 @@ mod/editpost.php: call_hooks('jot_networks', $jotnets);
mod/parse_url.php: call_hooks('parse_link', $arr);
+mod/home.php: call_hooks('home_init',$ret);
+
mod/home.php: call_hooks("home_content",$o);
mod/contacts.php: call_hooks('contact_edit_post', $_POST);
@@ -306,7 +326,7 @@ mod/like.php: call_hooks('post_local_end', $arr);
mod/xrd.php: call_hooks('personal_xrd', $arr);
-mod/item.php: call_hooks('post_local_start', $_POST);
+mod/item.php: call_hooks('post_local_start', $_REQUEST);
mod/item.php: call_hooks('post_local',$datarray);
diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php
index 9a29b05a2..c26b0c334 100755
--- a/include/bb2diaspora.php
+++ b/include/bb2diaspora.php
@@ -212,7 +212,7 @@ function bb2diaspora($Text,$preserve_nl = false) {
$Text = preg_replace("/\[vimeo\]([0-9]+)(.*?)\[\/vimeo\]/ism", 'http://vimeo.com/$1',$Text);
-
+ $Text = str_replace('[nosmile]','',$Text);
// oembed tag
// $Text = oembed_bbcode2html($Text);
diff --git a/include/bbcode.php b/include/bbcode.php
index 118be1298..cae867eb8 100755
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -173,7 +173,11 @@ upper-alpha;">$2</ul>' ,$Text);
$Text = preg_replace("/\[table border=1\](.*?)\[\/table\]/sm", '<table border="1" >$1</table>' ,$Text);
$Text = preg_replace("/\[table border=0\](.*?)\[\/table\]/sm", '<table border="0" >$1</table>' ,$Text);
-
+ $Text = str_replace('[hr]','<hr />', $Text);
+
+ // This is actually executed in prepare_body()
+
+ $Text = str_replace('[nosmile]','',$Text);
// Check for font change text
$Text = preg_replace("/\[font=(.*?)\](.*?)\[\/font\]/sm","<span style=\"font-family: $1;\">$2</span>",$Text);
diff --git a/include/conversation.php b/include/conversation.php
index b44d4acd6..2ea9b603f 100755
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -4,6 +4,28 @@
* Render actions localized
*/
function localize_item(&$item){
+
+ $Text = $item['body'];
+ $saved_image = '';
+ $img_start = strpos($Text,'[img]data:');
+ $img_end = strpos($Text,'[/img]');
+
+ if($img_start !== false && $img_end !== false && $img_end > $img_start) {
+ $start_fragment = substr($Text,0,$img_start);
+ $img_start += strlen('[img]');
+ $saved_image = substr($Text,$img_start,$img_end - $img_start);
+ $end_fragment = substr($Text,$img_end + strlen('[/img]'));
+ $Text = $start_fragment . '[!#saved_image#!]' . $end_fragment;
+ $search = '/\[url\=(.*?)\]\[!#saved_image#!\]\[\/url\]' . '/is';
+ $replace = '[url=' . z_path() . '/redir/' . $item['contact-id']
+ . '?f=1&url=' . '$1' . '][!#saved_image#!][/url]' ;
+
+ $Text = preg_replace($search,$replace,$Text);
+
+ if(strlen($saved_image))
+ $item['body'] = str_replace('[!#saved_image#!]', '[img]' . $saved_image . '[/img]',$Text);
+ }
+
$xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
if ($item['verb']=== ACTIVITY_LIKE || $item['verb']=== ACTIVITY_DISLIKE){
@@ -500,6 +522,9 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
if ($shareable) $likebuttons['share'] = array( t('Share this'), t('share'));
}
+// $qcomment = array(':-)','LOL','ROTFL','[smile]');
+ $qcomment = null;
+
if(($show_comment_box) || (($show_comment_box == false) && ($override_comment_box == false) && ($item['last-child']))) {
$comment = replace_macros($cmnt_tpl,array(
'$return_path' => '',
@@ -507,6 +532,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
'$type' => (($mode === 'profile') ? 'wall-comment' : 'net-comment'),
'$id' => $item['item_id'],
'$parent' => $item['parent'],
+ '$qcomment' => $qcomment,
'$profile_uid' => $profile_owner,
'$mylink' => $a->contact['url'],
'$mytitle' => t('This is you'),
@@ -609,11 +635,9 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
if ($tag!="") $tags[] = bbcode($tag);
}
-
// Build the HTML
$body = prepare_body($item,true);
-
$tmp_item = replace_macros($template,array(
'$type' => implode("",array_slice(split("/",$item['verb']),-1)),
diff --git a/include/text.php b/include/text.php
index 6beb5c9b2..0d99e6f4a 100755
--- a/include/text.php
+++ b/include/text.php
@@ -678,21 +678,56 @@ function linkify($s) {
*/
if(! function_exists('smilies')) {
-function smilies($s) {
+function smilies($s, $sample = false) {
$a = get_app();
- $s = str_replace(
- array( '&lt;3', '&lt;/3', '&lt;\\3', ':-)', ':)', ';-)', ';)', ':-(', ':(', ':-P', ':P', ':-"', ':-&quot;', ':-x', ':-X', ':-D', ':D', '8-|', '8-O', ':-O', '\\o/', 'o.O', 'O.o', '\\.../', '\\ooo/',
- ':beer', ':homebrew', ':coffee',
- '~friendika', '~friendica', 'Diaspora*' ),
- array(
+ $texts = array(
+ '&lt;3',
+ '&lt;/3',
+ '&lt;\\3',
+ ':-)',
+ ':)',
+ ';-)',
+ ';)',
+ ':-(',
+ ':(',
+ ':-P',
+ ':P',
+ ':-"',
+ ':-&quot;',
+ ':-x',
+ ':-X',
+ ':-D',
+ ':D',
+ '8-|',
+ '8-O',
+ ':-O',
+ '\\o/',
+ 'o.O',
+ 'O.o',
+ '\\.../',
+ '\\ooo/',
+ ":'(",
+ ":-!",
+ ":-/",
+ ":-[",
+ "8-)",
+ ':beer',
+ ':homebrew',
+ ':coffee',
+ '~friendika',
+ '~friendica',
+ 'Diaspora*'
+ );
+
+ $icons = array(
'<img src="' . $a->get_baseurl() . '/images/smiley-heart.gif" alt="<3" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-brokenheart.gif" alt="</3" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-brokenheart.gif" alt="<\\3" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-smile.gif" alt=":-)" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-smile.gif" alt=":)" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-wink.gif" alt=";-)" />',
- '<img src="' . $a->get_baseurl() . '/images/smiley-wink.gif" alt=";)"/>',
+ '<img src="' . $a->get_baseurl() . '/images/smiley-wink.gif" alt=";)"/>',
'<img src="' . $a->get_baseurl() . '/images/smiley-frown.gif" alt=":-(" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-frown.gif" alt=":(" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-tongue-out.gif" alt=":-P" />',
@@ -702,7 +737,7 @@ function smilies($s) {
'<img src="' . $a->get_baseurl() . '/images/smiley-kiss.gif" alt=":-x" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-kiss.gif" alt=":-X" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-laughing.gif" alt=":-D" />',
- '<img src="' . $a->get_baseurl() . '/images/smiley-laughing.gif" alt=":D"/>',
+ '<img src="' . $a->get_baseurl() . '/images/smiley-laughing.gif" alt=":D"/>',
'<img src="' . $a->get_baseurl() . '/images/smiley-surprised.gif" alt="8-|" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-surprised.gif" alt="8-O" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-surprised.gif" alt=":-O" />',
@@ -710,19 +745,34 @@ function smilies($s) {
'<img src="' . $a->get_baseurl() . '/images/smiley-Oo.gif" alt="o.O" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-Oo.gif" alt="O.o" />',
'<img src="' . $a->get_baseurl() . '/images/smiley-shaka.gif" alt="\\.../" />',
- '<img src="' . $a->get_baseurl() . '/images/smiley-shaka.gif" alt="\\ooo/" />',
-
+ '<img src="' . $a->get_baseurl() . '/images/smiley-shaka.gif" alt="\\ooo/" />',
+ '<img src="' . $a->get_baseurl() . '/images/smiley-cry.gif" alt=":\'(" />',
+ '<img src="' . $a->get_baseurl() . '/images/smiley-foot-in-mouth.gif" alt=":-!" />',
+ '<img src="' . $a->get_baseurl() . '/images/smiley-undecided.gif" alt=":-/" />',
+ '<img src="' . $a->get_baseurl() . '/images/smiley-embarassed.gif" alt=":-[" />',
+ '<img src="' . $a->get_baseurl() . '/images/smiley-cool.gif" alt="8-)" />',
'<img src="' . $a->get_baseurl() . '/images/beer_mug.gif" alt=":beer" />',
'<img src="' . $a->get_baseurl() . '/images/beer_mug.gif" alt=":homebrew" />',
'<img src="' . $a->get_baseurl() . '/images/coffee.gif" alt=":coffee" />',
-
'<a href="http://project.friendika.com">~friendika <img src="' . $a->get_baseurl() . '/images/friendika-16.png" alt="~friendika" /></a>',
'<a href="http://friendica.com">~friendica <img src="' . $a->get_baseurl() . '/images/friendika-16.png" alt="~friendica" /></a>',
'<a href="http://diasporafoundation.org">Diaspora<img src="' . $a->get_baseurl() . '/images/diaspora.png" alt="Diaspora*" /></a>',
- ), $s);
+ );
+
+ $params = array('texts' => $texts, 'icons' => $icons, 'string' => $s);
+ call_hooks('smilie', $params);
- call_hooks('smilie', $s);
+ if($sample) {
+ $s = '<div class="smiley-sample">';
+ for($x = 0; $x < count($params['texts']); $x ++) {
+ $s .= '<dl><dt>' . $params['texts'][$x] . '</dt><dd>' . $params['icons'][$x] . '</dd></dl>';
+ }
+ }
+ else {
+ $s = str_replace($params['texts'],$params['icons'],$params['string']);
+ }
+
return $s;
}}
@@ -828,7 +878,10 @@ function prepare_text($text) {
require_once('include/bbcode.php');
- $s = smilies(bbcode($text));
+ if(stristr($text,'[nosmile]'))
+ $s = bbcode($text);
+ else
+ $s = smilies(bbcode($text));
return $s;
}}
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 b8a3abb31..e5f716b29 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
@@ -105,6 +105,7 @@
rep(/<u>/gi,"[u]");
rep(/<blockquote[^>]*>/gi,"[quote]");
rep(/<\/blockquote>/gi,"[/quote]");
+ rep(/<hr \/>/gi,"[hr]");
rep(/<br \/>/gi,"\n\n");
rep(/<br\/>/gi,"\n\n");
rep(/<br>/gi,"\n");
@@ -135,6 +136,7 @@
rep(/\[\/i\]/gi,"</em>");
rep(/\[u\]/gi,"<u>");
rep(/\[\/u\]/gi,"</u>");
+ rep(/\[hr\]/gi,"<hr />");
rep(/\[bookmark=([^\]]+)\](.*?)\[\/bookmark\]/gi,"<a class=\"bookmark\" href=\"$1\">$2</a>");
rep(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,"<a href=\"$1\">$2</a>");
rep(/\[url\](.*?)\[\/url\]/gi,"<a href=\"$1\">$1</a>");
diff --git a/mod/contacts.php b/mod/contacts.php
index ef77366da..418cddf17 100755
--- a/mod/contacts.php
+++ b/mod/contacts.php
@@ -366,40 +366,76 @@ function contacts_content(&$a) {
}
$blocked = false;
+ $hidden = false;
+ $ignored = false;
+ $all = false;
$_SESSION['return_url'] = $a->query_string;
- if(($a->argc == 2) && ($a->argv[1] === 'all'))
+ if(($a->argc == 2) && ($a->argv[1] === 'all')) {
$sql_extra = '';
- else {
- if(($a->argc == 2) && ($a->argv[1] === 'blocked')) {
- $sql_extra = " AND `blocked` = 1 ";
- $blocked = true;
- }
- else
- $sql_extra = " AND `blocked` = 0 ";
+ $all = true;
+ }
+ elseif(($a->argc == 2) && ($a->argv[1] === 'blocked')) {
+ $sql_extra = " AND `blocked` = 1 ";
+ $blocked = true;
+ }
+ elseif(($a->argc == 2) && ($a->argv[1] === 'hidden')) {
+ $sql_extra = " AND `hidden` = 1 ";
+ $hidden = true;
+ }
+ elseif(($a->argc == 2) && ($a->argv[1] === 'ignored')) {
+ $sql_extra = " AND `readonly` = 1 ";
+ $ignored = true;
}
+ else
+ $sql_extra = " AND `blocked` = 0 ";
+
$search = ((x($_GET,'search')) ? notags(trim($_GET['search'])) : '');
$nets = ((x($_GET,'nets')) ? notags(trim($_GET['nets'])) : '');
- $tpl = get_markup_template("contacts-top.tpl");
- $o .= replace_macros($tpl,array(
- '$header' => t('Contacts') . (($nets) ? ' - ' . network_to_name($nets) : ''),
- '$hide_url' => (($blocked) ? 'contacts' : 'contacts/blocked'),
- '$hide_text' => (($blocked) ? t('Show Unblocked Contacts') : t('Show Blocked Contacts')),
- '$all_url' => 'contacts/all',
- '$all_text' => t('Show All Contacts'),
- '$search' => $search,
- '$desc' => t('Search your contacts'),
- '$finding' => (strlen($search) ? '<h4>' . t('Finding: ') . "'" . $search . "'" . '</h4>' : ""),
- '$submit' => t('Find'),
- '$cmd' => $a->cmd
+ $tabs = array(
+ array(
+ 'label' => t('All Contacts'),
+ 'url' => $a->get_baseurl() . '/contacts/all',
+ 'sel' => ($all) ? 'active' : '',
+ ),
+ array(
+ 'label' => t('Unblocked Contacts'),
+ 'url' => $a->get_baseurl() . '/contacts',
+ 'sel' => ((! $all) && (! $blocked) && (! $hidden) && (! $search) && (! $nets) && (! $ignored)) ? 'active' : '',
+ ),
+
+ array(
+ 'label' => t('Blocked Contacts'),
+ 'url' => $a->get_baseurl() . '/contacts/blocked',
+ 'sel' => ($blocked) ? 'active' : '',
+ ),
+
+ array(
+ 'label' => t('Ignored Contacts'),
+ 'url' => $a->get_baseurl() . '/contacts/ignored',
+ 'sel' => ($ignored) ? 'active' : '',
+ ),
+
+ array(
+ 'label' => t('Hidden Contacts'),
+ 'url' => $a->get_baseurl() . '/contacts/hidden',
+ 'sel' => ($hidden) ? 'active' : '',
+ ),
+
+ );
+ $tab_tpl = get_markup_template('common_tabs.tpl');
+ $t = replace_macros($tab_tpl, array('$tabs'=>$tabs));
- ));
- if($search)
+
+
+ if($search) {
+ $search_hdr = $search;
$search = dbesc($search.'*');
+ }
$sql_extra .= ((strlen($search)) ? " AND MATCH `name` AGAINST ('$search' IN BOOLEAN MODE) " : "");
if($nets)
@@ -414,6 +450,21 @@ function contacts_content(&$a) {
if(count($r))
$a->set_pager_total($r[0]['total']);
+
+ $tpl = get_markup_template("contacts-top.tpl");
+ $o .= replace_macros($tpl,array(
+ '$header' => t('Contacts') . (($nets) ? ' - ' . network_to_name($nets) : ''),
+ '$tabs' => $t,
+ '$total' => $r[0]['total'],
+ '$search' => $search_hdr,
+ '$desc' => t('Search your contacts'),
+ '$finding' => (strlen($search) ? '<h4>' . t('Finding: ') . "'" . $search . "'" . '</h4>' : ""),
+ '$submit' => t('Find'),
+ '$cmd' => $a->cmd
+
+
+ ));
+
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `pending` = 0 $sql_extra $sql_extra2 ORDER BY `name` ASC LIMIT %d , %d ",
intval($_SESSION['uid']),
intval($a->pager['start']),
diff --git a/mod/network.php b/mod/network.php
index 8f10ace77..03a671b61 100755
--- a/mod/network.php
+++ b/mod/network.php
@@ -287,11 +287,7 @@ function network_content(&$a, $update = 0) {
$sql_nets = (($nets) ? sprintf(" and `contact`.`network` = '%s' ", dbesc($nets)) : '');
- // We'll need the following line if starred/bookmarks are allowed in comments in the future
- // $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` $sql_options ) ";
-
- // Otherwise, this is a bit faster:
- $sql_extra = $sql_options;
+ $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` $sql_options ) ";
if($group) {
$r = q("SELECT `name`, `id` FROM `group` WHERE `id` = %d AND `uid` = %d LIMIT 1",
diff --git a/update.php b/update.php
index 9e3f22ef1..24138450a 100755
--- a/update.php
+++ b/update.php
@@ -1,6 +1,6 @@
<?php
-define( 'UPDATE_VERSION' , 1121 );
+define( 'UPDATE_VERSION' , 1122 );
/**
*
@@ -1037,3 +1037,31 @@ function update_1120() {
q("ALTER TABLE `item` ADD `spam` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `visible` , ADD INDEX (`spam`) ");
}
+
+function update_1121() {
+ q("CREATE TABLE IF NOT EXISTS `poll_result` (
+ `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+ `poll_id` INT NOT NULL ,
+ `choice` INT NOT NULL ,
+ INDEX ( `poll_id` ),
+ INDEX ( `choice` )
+ ) ENGINE = MYISAM ");
+
+ q("CREATE TABLE IF NOT EXISTS `poll` (
+ `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+ `uid` INT NOT NULL ,
+ `q0` MEDIUMTEXT NOT NULL ,
+ `q1` MEDIUMTEXT NOT NULL ,
+ `q2` MEDIUMTEXT NOT NULL ,
+ `q3` MEDIUMTEXT NOT NULL ,
+ `q4` MEDIUMTEXT NOT NULL ,
+ `q5` MEDIUMTEXT NOT NULL ,
+ `q6` MEDIUMTEXT NOT NULL ,
+ `q7` MEDIUMTEXT NOT NULL ,
+ `q8` MEDIUMTEXT NOT NULL ,
+ `q9` MEDIUMTEXT NOT NULL ,
+ INDEX ( `uid` )
+ ) ENGINE = MYISAM ");
+
+}
+
diff --git a/view/comment_item.tpl b/view/comment_item.tpl
index a28fc411a..b29735227 100755
--- a/view/comment_item.tpl
+++ b/view/comment_item.tpl
@@ -12,6 +12,12 @@
</div>
<div class="comment-edit-photo-end"></div>
<textarea id="comment-edit-text-$id" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,$id);" onBlur="commentClose(this,$id);" >$comment</textarea>
+ {{ if $qcomment }}
+ {{ for $qcomment as $qc }}
+ <span class="fakelink qcomment" onclick="commentInsert(this,$id); return false;" >$qc</span>
+ &nbsp;
+ {{ endfor }}
+ {{ endif }}
<div class="comment-edit-text-end"></div>
<div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-$id" style="display: none;" >
diff --git a/view/contacts-top.tpl b/view/contacts-top.tpl
index b8972834c..fca3efd54 100755
--- a/view/contacts-top.tpl
+++ b/view/contacts-top.tpl
@@ -1,4 +1,4 @@
-<h1>$header</h1>
+<h1>$header{{ if $total }} ($total){{ endif }}</h1>
$finding
@@ -11,9 +11,8 @@ $finding
</div>
<div id="contacts-search-end"></div>
+$tabs
+
+
-<div id="contacts-main" >
-<a href="$hide_url" id="contacts-show-hide-link">$hide_text</a><br />
-<a href="$all_url" id="contacts-show-all-link">$all_text</a><br />
-</div>
diff --git a/view/head.tpl b/view/head.tpl
index 9fe5a63b3..70d830faa 100755
--- a/view/head.tpl
+++ b/view/head.tpl
@@ -46,6 +46,18 @@
}
}
+
+ function commentInsert(obj,id) {
+ var tmpStr = $("#comment-edit-text-" + id).val();
+ if(tmpStr == '$comment') {
+ tmpStr = '';
+ $("#comment-edit-text-" + id).addClass("comment-edit-text-full");
+ $("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
+ openMenu("comment-edit-submit-wrapper-" + id);
+ }
+ $("#comment-edit-text-" + id).val(tmpStr + $(obj).html());
+ }
+
function showHideComments(id) {
if( $('#collapsed-comments-' + id).is(':visible')) {
$('#collapsed-comments-' + id).hide();
diff --git a/view/install_checks.tpl b/view/install_checks.tpl
index 538bdf0ba..a1a75ade6 100755
--- a/view/install_checks.tpl
+++ b/view/install_checks.tpl
@@ -1,6 +1,6 @@
<h1>$title</h1>
<h2>$pass</h2>
-<form action="$baseurl/install" method="POST">
+<form action="$baseurl/install" method="post">
<table>
{{ for $checks as $check }}
<tr><td>$check.title </td><td><span class="icon s22 {{if $check.status}}on{{else}}off{{endif}}"></td><td>{{if $check.required}}(required){{endif}}</td></tr>
diff --git a/view/mail_conv.tpl b/view/mail_conv.tpl
index be0632620..ed36a7bb2 100755
--- a/view/mail_conv.tpl
+++ b/view/mail_conv.tpl
@@ -7,7 +7,7 @@
<div class="mail-conv-date">$date</div>
<div class="mail-conv-subject">$subject</div>
<div class="mail-conv-body">$body</div>
- <div class="mail-conv-delete-wrapper" id="mail-conv-delete-wrapper-$id" ><a href="message/drop/$id" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" id="mail-conv-delete-icon-$id" class="mail-conv-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a></div><div class="mail-conv-delete-end"></div>
+ <div class="mail-conv-delete-wrapper" id="mail-conv-delete-wrapper-$id" ><a href="message/drop/$id" class="icon drophide delete-icon mail-list-delete-icon" onclick="return confirmDelete();" title="$delete" id="mail-conv-delete-icon-$id" class="mail-conv-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a></div><div class="mail-conv-delete-end"></div>
<div class="mail-conv-outside-wrapper-end"></div>
</div>
</div>
diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl
index 51431d4eb..9c3703f5f 100755
--- a/view/theme/dispy/wall_item.tpl
+++ b/view/theme/dispy/wall_item.tpl
@@ -29,7 +29,7 @@
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
<a href="#" class="icon like" title="$vote.like.0" onclick="dolike($id,'like'); return false"></a>
<a href="#" class="icon dislike" title="$vote.dislike.0" onclick="dolike($id,'dislike'); return false"></a>
- {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title=""$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
+ {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
</div>
{{ endif }}
diff --git a/view/theme/dispy/wallwall_item.tpl b/view/theme/dispy/wallwall_item.tpl
index 4b2b52b85..95c68220a 100755
--- a/view/theme/dispy/wallwall_item.tpl
+++ b/view/theme/dispy/wallwall_item.tpl
@@ -34,7 +34,7 @@
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
<a href="#" class="icon like" title="$vote.like.0" onclick="dolike($id,'like'); return false"></a>
<a href="#" class="icon dislike" title="$vote.dislike.0" onclick="dolike($id,'dislike'); return false"></a>
- {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title=""$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
+ {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
</div>
{{ endif }}
diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css
index 60fe4fb28..cf7505ad0 100755
--- a/view/theme/duepuntozero/style.css
+++ b/view/theme/duepuntozero/style.css
@@ -809,6 +809,9 @@ input#dfrn-url {
width: 120px;
height: 120px;
}
+#contacts-search-end {
+ margin-bottom: 10px;
+}
.contact-entry-direction-icon {
margin-top: 24px;
@@ -2950,3 +2953,17 @@ div.jGrowl div.info {
color: #ffffff;
padding-left: 58px;
}
+
+.qcomment {
+ border: 1px solid #EEE;
+ padding: 3px;
+}
+
+.qcomment {
+ opacity: 0;
+ filter:alpha(opacity=0);
+}
+.qcomment:hover {
+ opacity: 1.0;
+ filter:alpha(opacity=100);
+}
diff --git a/view/theme/duepuntozero/wall_item.tpl b/view/theme/duepuntozero/wall_item.tpl
index 5d54a1d6a..a5136eed3 100755
--- a/view/theme/duepuntozero/wall_item.tpl
+++ b/view/theme/duepuntozero/wall_item.tpl
@@ -42,7 +42,7 @@
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
<a href="#" class="icon like" title="$vote.like.0" onclick="dolike($id,'like'); return false"></a>
<a href="#" class="icon dislike" title="$vote.dislike.0" onclick="dolike($id,'dislike'); return false"></a>
- {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title=""$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
+ {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
</div>
{{ endif }}
diff --git a/view/theme/duepuntozero/wallwall_item.tpl b/view/theme/duepuntozero/wallwall_item.tpl
index 3ccd1224b..ea9a218b4 100755
--- a/view/theme/duepuntozero/wallwall_item.tpl
+++ b/view/theme/duepuntozero/wallwall_item.tpl
@@ -46,7 +46,7 @@
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
<a href="#" class="icon like" title="$vote.like.0" onclick="dolike($id,'like'); return false"></a>
<a href="#" class="icon dislike" title="$vote.dislike.0" onclick="dolike($id,'dislike'); return false"></a>
- {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title=""$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
+ {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
</div>
{{ endif }}
diff --git a/view/theme/loozah/wall_item.tpl b/view/theme/loozah/wall_item.tpl
index e2b7c9c5a..727e3d1c2 100755
--- a/view/theme/loozah/wall_item.tpl
+++ b/view/theme/loozah/wall_item.tpl
@@ -36,7 +36,7 @@
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
<a href="#" class="icon like" title="$vote.like.0" onclick="dolike($id,'like'); return false"></a>
<a href="#" class="icon dislike" title="$vote.dislike.0" onclick="dolike($id,'dislike'); return false"></a>
- {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title=""$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
+ {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
</div>
{{ endif }}
diff --git a/view/theme/loozah/wallwall_item.tpl b/view/theme/loozah/wallwall_item.tpl
index aaa542760..09de86c7b 100755
--- a/view/theme/loozah/wallwall_item.tpl
+++ b/view/theme/loozah/wallwall_item.tpl
@@ -40,7 +40,7 @@
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
<a href="#" class="icon like" title="$vote.like.0" onclick="dolike($id,'like'); return false"></a>
<a href="#" class="icon dislike" title="$vote.dislike.0" onclick="dolike($id,'dislike'); return false"></a>
- {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title=""$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
+ {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
</div>
{{ endif }}
diff --git a/view/theme/quattro-green/colors.less b/view/theme/quattro-green/colors.less
new file mode 100755
index 000000000..fd32b1043
--- /dev/null
+++ b/view/theme/quattro-green/colors.less
@@ -0,0 +1,94 @@
+// Quattro Theme LESS file
+
+// "Echo" palette from Inkscape
+@Blue1:rgb(25,174,255);
+@Blue2:rgb(0,132,200);
+@Blue3:rgb(0,92,148);
+@Red1:rgb(255,65,65);
+@Red2:rgb(220,0,0);
+@Red3:rgb(181,0,0);
+@Orange1:rgb(255,255,62);
+@Orange2:rgb(255,153,0);
+@Orange3:rgb(255,102,0);
+@Brown1:rgb(255,192,34);
+@Brown2:rgb(184,129,0);
+@Brown3:rgb(128,77,0);
+@Green1:rgb(204,255,66);
+@Green2:rgb(154,222,0);
+@Green3:rgb(0,145,0);
+@Purple1:rgb(241,202,255);
+@Purple2:rgb(215,108,255);
+@Purple3:rgb(186,0,255);
+@Metalic1:rgb(189,205,212);
+@Metalic2:rgb(158,171,176);
+@Metalic3:rgb(54,78,89);
+@Metalic4:rgb(14,35,46);
+@Grey1:rgb(255,255,255);
+@Grey2:rgb(204,204,204);
+@Grey3:rgb(153,153,153);
+@Grey4:rgb(102,102,102);
+@Grey5:rgb(45,45,45);
+
+
+// Theme colors
+@BodyBackground: @Grey1;
+@BodyColor: @Grey5;
+
+@Link: @Green3;
+@LinkHover: @Green3;
+@LinkVisited: @Green3;
+
+
+@ButtonColor: @Grey1;
+@ButtonBackgroundColor: @Grey5;
+
+@Banner: @Grey1;
+
+@NavbarBackground:@Green3;
+@NavbarSelectedBg:@Metalic3;
+@NavbarSelectedBorder: @Metalic2;
+@NavbarNotifBg: @Red2;
+
+@Menu: @Grey5;
+@MenuBg: @Grey1;
+@MenuBorder: @Metalic3;
+@MenuItem: @Grey5;
+@MenuItemHoverBg: @Green1;
+@MenuItemSeparator: @Metalic2;
+@MenuEmpty: @Metalic2;
+@MenuItemDetail: @Metalic2;
+
+@AsideBorder: @Metalic1;
+@AsideConnect: @Grey1;
+@AsideConnectBg: @Green3;
+@AsideConnectHoverBg: @Green1;
+@VCardLabelColor: @Grey3;
+
+@InfoColor: @Grey1;
+@InfoBackgroundColor: @Metalic3;
+
+@NoticeColor: @Grey1;
+@NoticeBackgroundColor: #511919;
+
+@ThreadBackgroundColor: #f6f7f8;
+
+@CommentBoxEmptyColor: @Grey3;
+@CommentBoxEmptyBorderColor: @Grey3;
+@CommentBoxFullColor: @Grey5;
+@CommentBoxFullBorderColor: @Grey5;
+
+@TagColor: @Grey1;
+
+@JotToolsBackgroundColor: @Green3;
+@JotToolsBorderColor: @Metalic2;
+@JotToolsOverBackgroundColor: @Green2;
+@JotToolsOverBorderColor: @Metalic1;
+@JotToolsText: @Grey5;
+@JotSubmitBackgroundColor: @Grey2;
+@JotSubmitText: @Grey4;
+@JotSubmitOverBackgroundColor: @Green1;
+@JotSubmitOverText: @Grey4;
+@JotPermissionUnlockBackgroundColor: @Grey2;
+@JotPermissionLockBackgroundColor: @Grey4;
+@JotLoadingBackgroundColor: @Grey1;
+
diff --git a/view/theme/quattro-green/contact_template.tpl b/view/theme/quattro-green/contact_template.tpl
new file mode 100755
index 000000000..f2749656a
--- /dev/null
+++ b/view/theme/quattro-green/contact_template.tpl
@@ -0,0 +1,21 @@
+
+<div class="contact-wrapper" id="contact-entry-wrapper-$id" >
+ <div class="contact-photo-wrapper" >
+ <div class="contact-photo mframe" id="contact-entry-photo-$id"
+ onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('contact-photo-menu-button-$id')" onmouseout="t$id=setTimeout('closeMenu(\'contact-photo-menu-button-$id\'); closeMenu(\'contact-photo-menu-$id\');',200)" >
+
+ <a href="$url" title="$img_hover" /><img src="$thumb" $sparkle alt="$name" /></a>
+
+ <a href="#" rel="#contact-photo-menu-$id" class="contact-photo-menu-button icon s16 menu" id="contact-photo-menu-button-$id">menu</a>
+ <ul class="contact-photo-menu menu-popup" id="contact-photo-menu-$id">
+ $contact_photo_menu
+ </ul>
+
+ </div>
+
+ </div>
+ <div class="contact-name" id="contact-entry-name-$id" >$name</div>
+
+
+</div>
+
diff --git a/view/theme/quattro-green/experimental b/view/theme/quattro-green/experimental
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/view/theme/quattro-green/experimental
diff --git a/view/theme/quattro-green/style.css b/view/theme/quattro-green/style.css
new file mode 100755
index 000000000..8dad50971
--- /dev/null
+++ b/view/theme/quattro-green/style.css
@@ -0,0 +1,1374 @@
+/**
+ * Fabio Comuni <http://kirgroup.com/profile/fabrixxm>
+ **/
+/* icons */
+.icon {
+ background-color: transparent ;
+ background-repeat: no-repeat;
+ background-position: left center;
+ display: block;
+ overflow: hidden;
+ text-indent: -9999px;
+ padding: 1px;
+}
+.icon.text {
+ text-indent: 0px;
+}
+.icon.s10 {
+ min-width: 10px;
+ height: 10px;
+}
+.icon.s10.notify {
+ background-image: url("../../../images/icons/10/notify_off.png");
+}
+.icon.s10.gear {
+ background-image: url("../../../images/icons/10/gear.png");
+}
+.icon.s10.add {
+ background-image: url("../../../images/icons/10/add.png");
+}
+.icon.s10.delete {
+ background-image: url("../../../images/icons/10/delete.png");
+}
+.icon.s10.edit {
+ background-image: url("../../../images/icons/10/edit.png");
+}
+.icon.s10.star {
+ background-image: url("../../../images/icons/10/star.png");
+}
+.icon.s10.menu {
+ background-image: url("../../../images/icons/10/menu.png");
+}
+.icon.s10.link {
+ background-image: url("../../../images/icons/10/link.png");
+}
+.icon.s10.lock {
+ background-image: url("../../../images/icons/10/lock.png");
+}
+.icon.s10.unlock {
+ background-image: url("../../../images/icons/10/unlock.png");
+}
+.icon.s10.text {
+ padding: 2px 0px 0px 15px;
+}
+.icon.s16 {
+ min-width: 16px;
+ height: 16px;
+}
+.icon.s16.notify {
+ background-image: url("../../../images/icons/16/notify_off.png");
+}
+.icon.s16.gear {
+ background-image: url("../../../images/icons/16/gear.png");
+}
+.icon.s16.add {
+ background-image: url("../../../images/icons/16/add.png");
+}
+.icon.s16.delete {
+ background-image: url("../../../images/icons/16/delete.png");
+}
+.icon.s16.edit {
+ background-image: url("../../../images/icons/16/edit.png");
+}
+.icon.s16.star {
+ background-image: url("../../../images/icons/16/star.png");
+}
+.icon.s16.menu {
+ background-image: url("../../../images/icons/16/menu.png");
+}
+.icon.s16.link {
+ background-image: url("../../../images/icons/16/link.png");
+}
+.icon.s16.lock {
+ background-image: url("../../../images/icons/16/lock.png");
+}
+.icon.s16.unlock {
+ background-image: url("../../../images/icons/16/unlock.png");
+}
+.icon.s16.text {
+ padding: 4px 0px 0px 20px;
+}
+.icon.s22 {
+ min-width: 22px;
+ height: 22px;
+}
+.icon.s22.notify {
+ background-image: url("../../../images/icons/22/notify_off.png");
+}
+.icon.s22.gear {
+ background-image: url("../../../images/icons/22/gear.png");
+}
+.icon.s22.add {
+ background-image: url("../../../images/icons/22/add.png");
+}
+.icon.s22.delete {
+ background-image: url("../../../images/icons/22/delete.png");
+}
+.icon.s22.edit {
+ background-image: url("../../../images/icons/22/edit.png");
+}
+.icon.s22.star {
+ background-image: url("../../../images/icons/22/star.png");
+}
+.icon.s22.menu {
+ background-image: url("../../../images/icons/22/menu.png");
+}
+.icon.s22.link {
+ background-image: url("../../../images/icons/22/link.png");
+}
+.icon.s22.lock {
+ background-image: url("../../../images/icons/22/lock.png");
+}
+.icon.s22.unlock {
+ background-image: url("../../../images/icons/22/unlock.png");
+}
+.icon.s22.text {
+ padding: 10px 0px 0px 25px;
+}
+.icon.s48 {
+ width: 48px;
+ height: 48px;
+}
+.icon.s48.notify {
+ background-image: url("../../../images/icons/48/notify_off.png");
+}
+.icon.s48.gear {
+ background-image: url("../../../images/icons/48/gear.png");
+}
+.icon.s48.add {
+ background-image: url("../../../images/icons/48/add.png");
+}
+.icon.s48.delete {
+ background-image: url("../../../images/icons/48/delete.png");
+}
+.icon.s48.edit {
+ background-image: url("../../../images/icons/48/edit.png");
+}
+.icon.s48.star {
+ background-image: url("../../../images/icons/48/star.png");
+}
+.icon.s48.menu {
+ background-image: url("../../../images/icons/48/menu.png");
+}
+.icon.s48.link {
+ background-image: url("../../../images/icons/48/link.png");
+}
+.icon.s48.lock {
+ background-image: url("../../../images/icons/48/lock.png");
+}
+.icon.s48.unlock {
+ background-image: url("../../../images/icons/48/unlock.png");
+}
+/* global */
+body {
+ font-family: Liberation Sans, helvetica, arial, clean, sans-serif;
+ font-size: 11px;
+ background-color: #ffffff;
+ color: #2d2d2d;
+ margin: 50px 0px 0px 0px;
+ display: table;
+}
+h4 {
+ font-size: 1.1em;
+}
+a, a:link {
+ color: #009100;
+ text-decoration: none;
+}
+a:visited {
+ color: #009100;
+ text-decoration: none;
+}
+a:hover {
+ color: #009100;
+ text-decoration: underline;
+}
+.left {
+ float: left;
+}
+.right {
+ float: right;
+}
+.hidden {
+ display: none;
+}
+.clear {
+ clear: both;
+}
+.fakelink {
+ color: #009100;
+ text-decoration: none;
+ cursor: pointer;
+}
+.fakelink:hover {
+ color: #009100;
+ text-decoration: underline;
+}
+code {
+ font-family: Courier, monospace;
+ white-space: pre;
+ display: block;
+ overflow: auto;
+ border: 1px solid #444;
+ background: #EEE;
+ color: #444;
+ padding: 10px;
+ margin-top: 20px;
+}
+#panel {
+ position: absolute;
+ width: 10em;
+ background: #ffffff;
+ color: #2d2d2d;
+ margin: 0px;
+ padding: 1em;
+ list-style: none;
+ border: 3px solid #364e59;
+ z-index: 100000;
+ -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
+ -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
+ box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
+}
+/* tool */
+.tool {
+ height: auto;
+ overflow: auto;
+}
+.tool .label {
+ float: left;
+}
+.tool .action {
+ float: right;
+}
+/* popup notifications */
+div.jGrowl div.notice {
+ background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
+ color: #ffffff;
+ padding-left: 58px;
+}
+div.jGrowl div.info {
+ background: #364e59 url("../../../images/icons/48/info.png") no-repeat 5px center;
+ color: #ffffff;
+ padding-left: 58px;
+}
+/* header */
+header {
+ position: fixed;
+ left: 43%;
+ right: 43%;
+ top: 0px;
+ margin: 0px;
+ padding: 0px;
+ /*width: 100%; height: 12px; */
+
+ z-index: 110;
+ color: #ffffff;
+}
+header #site-location {
+ display: none;
+}
+header #banner {
+ overflow: hidden;
+ text-align: center;
+ width: 100%;
+}
+header #banner a,
+header #banner a:active,
+header #banner a:visited,
+header #banner a:link,
+header #banner a:hover {
+ color: #ffffff;
+ text-decoration: none;
+ outline: none;
+ vertical-align: bottom;
+}
+header #banner #logo-img {
+ height: 22px;
+ margin-top: 5px;
+}
+header #banner #logo-text {
+ font-size: 22px;
+}
+/* nav */
+nav {
+ width: 100%;
+ height: 32px;
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ padding: 0px;
+ background-color: #009100;
+ color: #ffffff;
+ z-index: 100;
+ -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7);
+ -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7);
+ box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7);
+}
+nav a,
+nav a:active,
+nav a:visited,
+nav a:link,
+nav a:hover {
+ color: #ffffff;
+ text-decoration: none;
+ outline: none;
+}
+nav ul {
+ margin: 0px;
+ padding: 0px 20px;
+}
+nav ul li {
+ list-style: none;
+ margin: 0px;
+ padding: 0px;
+ float: left;
+}
+nav ul li .menu-popup {
+ left: 0px;
+ right: auto;
+}
+nav .nav-menu-icon {
+ position: relative;
+ height: 22px;
+ padding: 5px;
+ margin: 0px 10px;
+ -moz-border-radius: 5px 5px 0 0;
+ -webkit-border-radius: 5px 5px 0 0;
+ border-radius: 5px 5px 0 0;
+}
+nav .nav-menu-icon.selected {
+ background-color: #364e59;
+}
+nav .nav-menu-icon img {
+ width: 22px;
+ height: 22px;
+}
+nav .nav-menu-icon .nav-notify {
+ top: 3px;
+}
+nav .nav-menu {
+ position: relative;
+ height: 16px;
+ padding: 5px;
+ margin: 3px 15px 0px;
+ font-size: 14px;
+ border-bottom: 3px solid #009100;
+}
+nav .nav-menu.selected {
+ border-bottom: 3px solid #9eabb0;
+}
+nav .nav-notify {
+ display: none;
+ position: absolute;
+ background-color: #dc0000;
+ -moz-border-radius: 5px 5px 5px 5px;
+ -webkit-border-radius: 5px 5px 5px 5px;
+ border-radius: 5px 5px 5px 5px;
+ font-size: 10px;
+ padding: 1px 3px;
+ top: 0px;
+ right: -10px;
+ min-width: 15px;
+ text-align: right;
+}
+nav .nav-notify.show {
+ display: block;
+}
+nav #nav-help-link,
+nav #nav-search-link,
+nav #nav-directory-link,
+nav #nav-apps-link,
+nav #nav-site-linkmenu {
+ float: right;
+}
+nav #nav-help-link .menu-popup,
+nav #nav-search-link .menu-popup,
+nav #nav-directory-link .menu-popup,
+nav #nav-apps-link .menu-popup,
+nav #nav-site-linkmenu .menu-popup {
+ right: 0px;
+ left: auto;
+}
+nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-linkmenu.selected .icon.s22.notify {
+ background-image: url("../../../images/icons/22/notify_on.png");
+}
+nav #nav-apps-link.selected {
+ background-color: #364e59;
+}
+ul.menu-popup {
+ position: absolute;
+ display: none;
+ width: 10em;
+ background: #ffffff;
+ color: #2d2d2d;
+ margin: 0px;
+ padding: 0px;
+ list-style: none;
+ border: 3px solid #364e59;
+ z-index: 100000;
+ -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
+ -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
+ box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
+}
+ul.menu-popup a {
+ display: block;
+ color: #2d2d2d;
+ padding: 5px 10px;
+ text-decoration: none;
+}
+ul.menu-popup a:hover {
+ background-color: #ccff42;
+}
+ul.menu-popup .menu-sep {
+ border-top: 1px solid #9eabb0;
+}
+ul.menu-popup li {
+ float: none;
+ overflow: auto;
+ height: auto;
+ display: block;
+}
+ul.menu-popup li img {
+ float: left;
+ width: 16px;
+ height: 16px;
+ padding-right: 5px;
+}
+ul.menu-popup .empty {
+ padding: 5px;
+ text-align: center;
+ color: #9eabb0;
+}
+/* autocomplete popup */
+.acpopup {
+ max-height: 150px;
+ background-color: #ffffff;
+ color: #2d2d2d;
+ border: 1px solid #MenuBorder;
+ overflow: auto;
+ z-index: 100000;
+ -webkit-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
+ -moz-box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
+ box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.7);
+}
+.acpopupitem {
+ color: #2d2d2d;
+ padding: 4px;
+ clear: left;
+}
+.acpopupitem img {
+ float: left;
+ margin-right: 4px;
+}
+.acpopupitem.selected {
+ background-color: #ccff42;
+}
+#nav-notifications-menu {
+ width: 400px;
+ max-height: 550px;
+ overflow: auto;
+}
+#nav-notifications-menu img {
+ float: left;
+ margin-right: 5px;
+}
+#nav-notifications-menu .contactname {
+ font-weight: bold;
+}
+#nav-notifications-menu .notif-when {
+ font-size: 10px;
+ color: #9eabb0;
+ display: block;
+}
+/* aside */
+aside {
+ display: table-cell;
+ vertical-align: top;
+ width: 200px;
+ padding: 0px 10px 0px 20px;
+ border-right: 1px solid #bdcdd4;
+}
+aside .vcard .fn {
+ font-size: 16px;
+ font-weight: bold;
+ margin-bottom: 5px;
+}
+aside .vcard .title {
+ margin-bottom: 5px;
+}
+aside .vcard dl {
+ height: auto;
+ overflow: auto;
+}
+aside .vcard dt {
+ float: left;
+ margin-left: 0px;
+ width: 35%;
+ text-align: right;
+ color: #999999;
+}
+aside .vcard dd {
+ float: left;
+ margin-left: 4px;
+ width: 60%;
+}
+aside #profile-extra-links ul {
+ padding: 0px;
+ margin: 0px;
+}
+aside #profile-extra-links li {
+ padding: 0px;
+ margin: 0px;
+ list-style: none;
+}
+aside #dfrn-request-link {
+ display: block;
+ -moz-border-radius: 5px 5px 5px 5px;
+ -webkit-border-radius: 5px 5px 5px 5px;
+ border-radius: 5px 5px 5px 5px;
+ color: #ffffff;
+ background: #009100 url('../../../images/connect-bg.png') no-repeat left center;
+ font-weight: bold;
+ text-transform: uppercase;
+ padding: 4px 2px 2px 35px;
+}
+aside #dfrn-request-link:hover {
+ text-decoration: none;
+ background-color: #ccff42;
+}
+aside #profiles-menu {
+ width: 20em;
+}
+#contact-block {
+ overflow: auto;
+ height: auto;
+}
+#contact-block .contact-block-h4 {
+ float: left;
+ margin: 5px 0px;
+}
+#contact-block .allcontact-link {
+ float: right;
+ margin: 5px 0px;
+}
+#contact-block .contact-block-content {
+ clear: both;
+ overflow: auto;
+ height: auto;
+}
+#contact-block .contact-block-link {
+ float: left;
+ margin: 0px 2px 2px 0px;
+}
+#contact-block .contact-block-link img {
+ widht: 48px;
+ height: 58px;
+}
+/* group member */
+#contact-edit-drop-link, .mail-list-delete-wrapper, .group-delete-wrapper {
+ float: right;
+ margin-right: 50px;
+}
+#contact-edit-drop-link .drophide, .mail-list-delete-wrapper .drophide, .group-delete-wrapper .drophide {
+ background-image: url('../../../images/icons/22/delete.png');
+ display: block;
+ width: 22px;
+ height: 22px;
+ opacity: 0.3;
+ position: relative;
+ top: -50px;
+}
+#contact-edit-drop-link .drop, .mail-list-delete-wrapper .drop, .group-delete-wrapper .drop {
+ background-image: url('../../../images/icons/22/delete.png');
+ display: block;
+ width: 22px;
+ height: 22px;
+ position: relative;
+ top: -50px;
+}
+#group-members {
+ margin-top: 20px;
+ padding: 10px;
+ height: 250px;
+ overflow: auto;
+ border: 1px solid #ddd;
+}
+#group-members-end {
+ clear: both;
+}
+#group-all-contacts {
+ padding: 10px;
+ height: 450px;
+ overflow: auto;
+ border: 1px solid #ddd;
+}
+#group-all-contacts-end {
+ clear: both;
+ margin-bottom: 10px;
+}
+.contact-block-div {
+ float: left;
+ width: 52px;
+ height: 52px;
+}
+/* widget */
+.widget {
+ margin-bottom: 2em;
+ /*.action .s10 { width: 10px; overflow: hidden; padding: 0px;}
+ .action .s16 { width: 16px; overflow: hidden; padding: 0px;}*/
+
+}
+.widget h3 {
+ padding: 0px;
+ margin: 2px;
+}
+.widget .action {
+ opacity: 0.1;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+.widget input.action {
+ opacity: 0.5;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+.widget:hover .title .action {
+ opacity: 1;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+.widget .tool:hover .action {
+ opacity: 1;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+.widget .tool:hover .action.ticked {
+ opacity: 1;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+.widget ul {
+ padding: 0px;
+}
+.widget ul li {
+ padding-left: 16px;
+ min-height: 16px;
+ list-style: none;
+}
+.widget .tool.selected {
+ background: url('../../../images/selected.png') no-repeat left center;
+}
+/* widget: search */
+#add-search-popup {
+ width: 200px;
+ top: 18px;
+}
+/* section */
+section {
+ display: table-cell;
+ vertical-align: top;
+ width: 800px;
+ padding: 0px 20px 0px 10px;
+}
+/* wall item */
+.tread-wrapper {
+ background-color: #f6f7f8;
+ position: relative;
+ padding: 10px;
+ margin-bottom: 20px;
+ width: 780px;
+}
+.wall-item-decor {
+ position: absolute;
+ left: 790px;
+ top: -10px;
+ width: 16px;
+}
+.unstarred {
+ display: none;
+}
+.wall-item-container {
+ display: table;
+ width: 780px;
+}
+.wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom {
+ display: table-row;
+}
+.wall-item-container .wall-item-bottom {
+ opacity: 0.5;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+.wall-item-container:hover .wall-item-bottom {
+ opacity: 1;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+.wall-item-container .wall-item-info {
+ display: table-cell;
+ vertical-align: top;
+ text-align: left;
+ width: 60px;
+}
+.wall-item-container .wall-item-location {
+ word-wrap: break-word;
+ width: 50px;
+}
+.wall-item-container .wall-item-content {
+ display: table-cell;
+ font-size: 12px;
+ max-width: 720px;
+ word-wrap: break-word;
+}
+.wall-item-container .wall-item-content img {
+ max-width: 710px;
+}
+.wall-item-container .wall-item-links, .wall-item-container .wall-item-actions {
+ display: table-cell;
+ vertical-align: middle;
+}
+.wall-item-container .wall-item-links .icon, .wall-item-container .wall-item-actions .icon {
+ opacity: 0.5;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+.wall-item-container .wall-item-links .icon:hover, .wall-item-container .wall-item-actions .icon:hover {
+ opacity: 1;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+.wall-item-container .wall-item-ago {
+ padding-right: 40px;
+}
+.wall-item-container .wall-item-name {
+ font-weight: bold;
+}
+.wall-item-container .wall-item-actions-author {
+ float: left;
+ width: 20em;
+ margin-top: 0.5em;
+}
+.wall-item-container .wall-item-actions-social {
+ float: left;
+ margin-top: 0.5em;
+}
+.wall-item-container .wall-item-actions-social a {
+ margin-right: 3em;
+}
+.wall-item-container .wall-item-actions-tools {
+ float: right;
+ width: 15%;
+}
+.wall-item-container .wall-item-actions-tools a {
+ float: right;
+}
+.wall-item-container .wall-item-actions-tools input {
+ float: right;
+}
+.wall-item-container.comment {
+ /*margin-top: 50px;*/
+
+}
+.wall-item-container.comment .contact-photo {
+ width: 32px;
+ height: 32px;
+ margin-left: 16px;
+ /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/
+
+}
+.wall-item-container.comment .contact-photo-menu-button {
+ top: 15px !important;
+ left: 15px !important;
+}
+.wall-item-container.comment .wall-item-links {
+ padding-left: 12px;
+}
+.wall-item-comment-wrapper {
+ margin: 30px 2em 2em 60px;
+}
+.wall-item-comment-wrapper .comment-edit-photo {
+ display: none;
+}
+.wall-item-comment-wrapper textarea {
+ height: 1em;
+ width: 100%;
+ font-size: 10px;
+ color: #999999;
+ border: 1px solid #999999;
+ padding: 0.3em;
+}
+.wall-item-comment-wrapper .comment-edit-text-full {
+ font-size: 14px;
+ height: 4em;
+ color: #2d2d2d;
+ border: 1px solid #2d2d2d;
+}
+.comment-edit-preview {
+ width: 710px;
+ border: 1px solid #2d2d2d;
+ margin-top: 10px;
+}
+.comment-edit-preview .contact-photo {
+ width: 32px;
+ height: 32px;
+ margin-left: 16px;
+ /*background: url(../../../images/icons/22/user.png) no-repeat center center;*/
+
+}
+.comment-edit-preview .contact-photo-menu-button {
+ top: 15px !important;
+ left: 15px !important;
+}
+.comment-edit-preview .wall-item-links {
+ padding-left: 12px;
+}
+.comment-edit-preview .wall-item-container {
+ width: 700px;
+}
+.comment-edit-preview .tread-wrapper {
+ width: 700px;
+ padding: 0;
+ margin: 10px 0;
+}
+.wall-item-tags {
+ padding-top: 5px;
+}
+.tag {
+ background: url("../../../images/tag_b.png") no-repeat center left;
+ color: #ffffff;
+ padding-left: 3px;
+}
+.tag a {
+ padding-right: 8px;
+ background: url("../../../images/tag.png") no-repeat center right;
+ color: #ffffff;
+}
+.wwto {
+ position: absolute !important;
+ width: 25px;
+ height: 25px;
+ background: #FFFFFF;
+ border: 2px solid #364e59;
+ height: 25px;
+ width: 25px;
+ overflow: hidden;
+ padding: 1px;
+ position: absolute !important;
+ top: 40px;
+ left: 30px;
+ -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7);
+ -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7);
+ box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.7);
+}
+.wwto .contact-photo {
+ width: 25px;
+ height: 25px;
+}
+#pause {
+ position: fixed;
+ bottom: 5px;
+ right: 5px;
+}
+/* contacts menu */
+.contact-photo-wrapper {
+ position: relative;
+}
+.contact-photo {
+ width: 48px;
+ height: 48px;
+ overflow: hidden;
+ display: block;
+}
+.contact-photo img {
+ width: 48px;
+ height: 48px;
+}
+.contact-photo-menu-button {
+ display: none;
+ position: absolute;
+ left: -2px;
+ top: 31px;
+}
+.contact-wrapper {
+ float: left;
+ width: 90px;
+ height: 90px;
+ margin-bottom: 15px;
+}
+.contact-wrapper .contact-photo {
+ width: 80px;
+ height: 80px;
+}
+.contact-wrapper .contact-photo img {
+ width: 80px;
+ height: 80px;
+}
+.contact-wrapper .contact-photo-menu-button {
+ left: 0px;
+ top: 63px;
+}
+.directory-item {
+ float: left;
+ width: 200px;
+ height: 200px;
+}
+.directory-item .contact-photo {
+ width: 175px;
+ height: 175px;
+}
+.directory-item .contact-photo img {
+ width: 175px;
+ height: 175px;
+}
+.contact-name {
+ text-align: center;
+ font-weight: bold;
+}
+.contact-details {
+ color: #999999;
+}
+/* editor */
+.jothidden {
+ display: none;
+}
+#jot {
+ width: 100%;
+ margin: 0px 2em 20px 0px;
+}
+#jot .profile-jot-text {
+ height: 1em;
+ width: 99%;
+ font-size: 10px;
+ color: #999999;
+ border: 1px solid #999999;
+ padding: 0.3em;
+}
+#jot #jot-tools {
+ margin: 0px;
+ padding: 0px;
+ height: 40px;
+ overflow: none;
+ width: 800px;
+ background-color: #009100;
+ border-bottom: 2px solid #9eabb0;
+}
+#jot #jot-tools li {
+ list-style: none;
+ float: left;
+ width: 80px;
+ height: 40px;
+ border-bottom: 2px solid #9eabb0;
+}
+#jot #jot-tools li a {
+ display: block;
+ color: #2d2d2d;
+ width: 100%;
+ height: 40px;
+ text-align: center;
+ line-height: 40px;
+ overflow: hidden;
+}
+#jot #jot-tools li:hover {
+ background-color: #9ade00;
+ border-bottom: 2px solid #bdcdd4;
+}
+#jot #jot-tools li.perms {
+ float: right;
+ width: 40px;
+}
+#jot #jot-tools li.perms a.unlock {
+ width: 30px;
+ border-left: 10px solid #cccccc;
+ background-color: #cccccc;
+}
+#jot #jot-tools li.perms a.lock {
+ width: 30px;
+ border-left: 10px solid #666666;
+ background-color: #666666;
+}
+#jot #jot-tools li.submit {
+ float: right;
+ background-color: #cccccc;
+ border-bottom: 2px solid #cccccc;
+ border-right: 1px solid #666666;
+ border-left: 1px solid #666666;
+}
+#jot #jot-tools li.submit input {
+ border: 0px;
+ margin: 0px;
+ padding: 0px;
+ background-color: #cccccc;
+ color: #666666;
+ width: 80px;
+ height: 40px;
+ line-height: 40px;
+}
+#jot #jot-tools li.submit input:hover {
+ background-color: #ccff42;
+ color: #666666;
+}
+#jot #jot-tools li.loading {
+ float: right;
+ background-color: #ffffff;
+ width: 20px;
+ vertical-align: center;
+ text-align: center;
+ border-top: 2px solid #9eabb0;
+ height: 38px;
+}
+#jot #jot-tools li.loading img {
+ margin-top: 10px;
+}
+#jot #jot-title {
+ border: 0px;
+ margin: 0px;
+ height: 20px;
+ width: 700px;
+ font-weight: bold;
+ border: 1px solid #ffffff;
+}
+#jot #jot-title:-webkit-input-placeholder {
+ font-weight: normal;
+}
+#jot #jot-title:-moz-placeholder {
+ font-weight: normal;
+}
+#jot #jot-title:hover {
+ border: 1px solid #999999;
+}
+#jot #jot-title:focus {
+ border: 1px solid #999999;
+}
+#jot #character-counter {
+ width: 80px;
+ float: right;
+ text-align: right;
+ height: 20px;
+ line-height: 20px;
+ padding-right: 20px;
+}
+/** buttons **/
+/*input[type="submit"] {
+ border: 0px;
+ background-color: @ButtonBackgroundColor;
+ color: @ButtonColor;
+ padding: 0px 10px;
+ .rounded(5px);
+ height: 18px;
+}*/
+/** acl **/
+#photo-edit-perms-select, #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper {
+ display: block!important;
+}
+#acl-wrapper {
+ width: 690px;
+ float: left;
+}
+#acl-search {
+ float: right;
+ background: #ffffff url("../../../images/search_18.png") no-repeat right center;
+ padding-right: 20px;
+}
+#acl-showall {
+ float: left;
+ display: block;
+ width: auto;
+ height: 18px;
+ background-color: #cccccc;
+ background-image: url("../../../images/show_all_off.png");
+ background-position: 7px 7px;
+ background-repeat: no-repeat;
+ padding: 7px 5px 0px 30px;
+ color: #999999;
+ -moz-border-radius: 5px 5px 5px 5px;
+ -webkit-border-radius: 5px 5px 5px 5px;
+ border-radius: 5px 5px 5px 5px;
+}
+#acl-showall.selected {
+ color: #000000;
+ background-color: #ff9900;
+ background-image: url("../../../images/show_all_on.png");
+}
+#acl-list {
+ height: 210px;
+ border: 1px solid #cccccc;
+ clear: both;
+ margin-top: 30px;
+ overflow: auto;
+}
+.acl-list-item {
+ display: block;
+ width: 150px;
+ height: 30px;
+ border: 1px solid #cccccc;
+ margin: 5px;
+ float: left;
+}
+.acl-list-item img {
+ width: 22px;
+ height: 22px;
+ float: left;
+ margin: 4px;
+}
+.acl-list-item p {
+ height: 12px;
+ font-size: 10px;
+ margin: 0px;
+ padding: 2px 0px 1px;
+ overflow: hidden;
+}
+.acl-list-item a {
+ font-size: 8px;
+ display: block;
+ width: 40px;
+ height: 10px;
+ float: left;
+ color: #999999;
+ background-color: #cccccc;
+ background-position: 3px 3px;
+ background-repeat: no-repeat;
+ margin-right: 5px;
+ -webkit-border-radius: 2px ;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ padding-left: 15px;
+}
+#acl-wrapper a:hover {
+ text-decoration: none;
+ color: #000000;
+}
+.acl-button-show {
+ background-image: url("../../../images/show_off.png");
+}
+.acl-button-hide {
+ background-image: url("../../../images/hide_off.png");
+}
+.acl-button-show.selected {
+ color: #000000;
+ background-color: #9ade00;
+ background-image: url("../../../images/show_on.png");
+}
+.acl-button-hide.selected {
+ color: #000000;
+ background-color: #ff4141;
+ background-image: url("../../../images/hide_on.png");
+}
+.acl-list-item.groupshow {
+ border-color: #9ade00;
+}
+.acl-list-item.grouphide {
+ border-color: #ff4141;
+}
+/** /acl **/
+/** tab buttons **/
+ul.tabs {
+ list-style-type: none;
+ padding-bottom: 10px;
+}
+ul.tabs li {
+ float: left;
+ margin-left: 20px;
+}
+ul.tabs li .active {
+ border-bottom: 1px solid #009100;
+}
+/**
+ * Form fields
+ */
+.field {
+ margin-bottom: 10px;
+ padding-bottom: 10px;
+ overflow: auto;
+ width: 100%;
+}
+.field label {
+ float: left;
+ width: 200px;
+}
+.field input, .field textarea {
+ width: 400px;
+}
+.field textarea {
+ height: 100px;
+}
+.field .field_help {
+ display: block;
+ margin-left: 200px;
+ color: #666666;
+}
+.field .onoff {
+ float: left;
+ width: 80px;
+}
+.field .onoff a {
+ display: block;
+ border: 1px solid #666666;
+ background-image: url("../../../images/onoff.jpg");
+ background-repeat: no-repeat;
+ padding: 4px 2px 2px 2px;
+ height: 16px;
+ text-decoration: none;
+}
+.field .onoff .off {
+ border-color: #666666;
+ padding-left: 40px;
+ background-position: left center;
+ background-color: #cccccc;
+ color: #666666;
+ text-align: right;
+}
+.field .onoff .on {
+ border-color: #204A87;
+ padding-right: 40px;
+ background-position: right center;
+ background-color: #D7E3F1;
+ color: #204A87;
+ text-align: left;
+}
+.field .hidden {
+ display: none!important;
+}
+.field.radio .field_help {
+ margin-left: 0px;
+}
+#profile-edit-links li {
+ list-style: none;
+ margin-top: 10px;
+}
+#profile-edit-default-desc {
+ color: #FF0000;
+ border: 1px solid #FF8888;
+ background-color: #FFEEEE;
+ padding: 7px;
+}
+#profile-edit-profile-name-label,
+#profile-edit-name-label,
+#profile-edit-pdesc-label,
+#profile-edit-gender-label,
+#profile-edit-dob-label,
+#profile-edit-address-label,
+#profile-edit-locality-label,
+#profile-edit-region-label,
+#profile-edit-postal-code-label,
+#profile-edit-country-name-label,
+#profile-edit-marital-label,
+#profile-edit-with-label,
+#profile-edit-sexual-label,
+#profile-edit-politic-label,
+#profile-edit-religion-label,
+#profile-edit-pubkeywords-label,
+#profile-edit-prvkeywords-label,
+#profile-edit-gender-select,
+#profile-edit-homepage-label {
+ float: left;
+ width: 175px;
+ padding-top: 7px;
+}
+#profile-edit-profile-name,
+#profile-edit-name,
+#gender-select,
+#profile-edit-pdesc,
+#profile-edit-gender,
+#profile-edit-dob,
+#profile-edit-address,
+#profile-edit-locality,
+#profile-edit-region,
+#profile-edit-postal-code,
+#profile-edit-country-name,
+#profile-edit-marital,
+#profile-edit-with,
+#profile-edit-sexual,
+#profile-edit-politic,
+#profile-edit-religion,
+#profile-edit-pubkeywords,
+#profile-edit-prvkeywords,
+#profile-edit-homepage {
+ margin-top: 5px;
+}
+/* oauth */
+.oauthapp {
+ height: auto;
+ overflow: auto;
+ border-bottom: 2px solid #cccccc;
+ padding-bottom: 1em;
+ margin-bottom: 1em;
+}
+.oauthapp img {
+ float: left;
+ width: 48px;
+ height: 48px;
+ margin: 10px;
+}
+.oauthapp img.noicon {
+ background-image: url("../../../images/icons/48/plugin.png");
+ background-position: center center;
+ background-repeat: no-repeat;
+}
+.oauthapp a {
+ float: left;
+}
+/* contacts */
+.contact-entry-wrapper {
+ width: 50px;
+ float: left;
+}
+/* photo */
+.lframe {
+ float: left;
+ margin: 0px 10px 10px 0px;
+}
+/* profile match wrapper */
+.profile-match-wrapper {
+ float: left;
+ width: 90px;
+ height: 90px;
+ margin-bottom: 20px;
+}
+.profile-match-wrapper .contact-photo {
+ width: 80px;
+ height: 80px;
+}
+.profile-match-wrapper .contact-photo img {
+ width: 80px;
+ height: 80px;
+}
+.profile-match-wrapper .contact-photo-menu-button {
+ left: 0px;
+ top: 63px;
+}
+/* page footer */
+footer {
+ height: 100px;
+ display: table-row;
+}
+.pager {
+ margin-top: 25px;
+ clear: both;
+}
diff --git a/view/theme/quattro-green/style.less b/view/theme/quattro-green/style.less
new file mode 100755
index 000000000..f8b0bb31c
--- /dev/null
+++ b/view/theme/quattro-green/style.less
@@ -0,0 +1,14 @@
+/**
+ * Fabio Comuni <http://kirgroup.com/profile/fabrixxm>
+ **/
+// Less file http://lesscss.org/
+// compile with lessc
+// $ lessc style.less > style.css
+
+@import "colors";
+@import "../quattro/icons";
+@import "../quattro/quattro";
+
+
+
+
diff --git a/view/theme/testbubble/wall_item.tpl b/view/theme/testbubble/wall_item.tpl
index 4fe819f4b..2b0e6740a 100755
--- a/view/theme/testbubble/wall_item.tpl
+++ b/view/theme/testbubble/wall_item.tpl
@@ -39,7 +39,7 @@
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
<a href="#" class="icon like" title="$vote.like.0" onclick="dolike($id,'like'); return false"></a>
<a href="#" class="icon dislike" title="$vote.dislike.0" onclick="dolike($id,'dislike'); return false"></a>
- {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title=""$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
+ {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
</div>
{{ endif }}
diff --git a/view/theme/testbubble/wallwall_item.tpl b/view/theme/testbubble/wallwall_item.tpl
index e29b66c57..cd4def7fc 100755
--- a/view/theme/testbubble/wallwall_item.tpl
+++ b/view/theme/testbubble/wallwall_item.tpl
@@ -42,7 +42,7 @@
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
<a href="#" class="icon like" title="$vote.like.0" onclick="dolike($id,'like'); return false"></a>
<a href="#" class="icon dislike" title="$vote.dislike.0" onclick="dolike($id,'dislike'); return false"></a>
- {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title=""$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
+ {{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
</div>
{{ endif }}