]> git.mxchange.org Git - friendica.git/commitdiff
Merge remote branch 'upstream/master'
authorzottel <github@zottel.net>
Thu, 22 Mar 2012 15:03:14 +0000 (16:03 +0100)
committerzottel <github@zottel.net>
Thu, 22 Mar 2012 15:03:14 +0000 (16:03 +0100)
22 files changed:
.htaccess
boot.php
database.sql
include/Contact.php
mod/delegate.php
mod/register.php
mod/regmod.php
tests/template_test.php [new file with mode: 0755]
tests/xss_filter_test.php
update.php
view/theme/comix-plain/wall_item.tpl
view/theme/comix-plain/wallwall_item.tpl
view/theme/comix/wall_item.tpl
view/theme/comix/wallwall_item.tpl
view/theme/duepuntozero/wall_item.tpl
view/theme/duepuntozero/wallwall_item.tpl
view/theme/quattro-green/colors.less
view/theme/quattro-green/style.css
view/theme/quattro/quattro.less
view/theme/quattro/style.css
view/wall_item.tpl
view/wallwall_item.tpl

index 28ac3dd8021c59df634ef7da5f14a042df823957..6cb3a074943c33d61c076d427ae4e5c154c4861c 100755 (executable)
--- a/.htaccess
+++ b/.htaccess
@@ -5,9 +5,6 @@ AddType audio/ogg .oga
 <FilesMatch "\.(out|log)$">
 Deny from all
 </FilesMatch>
-<Files "(include|library)">
-Deny from all
-</Files>
 
 <IfModule mod_rewrite.c>
   RewriteEngine on
index 910de6f82dd5ee0edd6e45c2f39f97db66b75c2b..04e16e64dc46682485026e6563dd6299c4d6957e 100755 (executable)
--- a/boot.php
+++ b/boot.php
@@ -11,7 +11,7 @@ require_once('include/cache.php');
 define ( 'FRIENDICA_PLATFORM',     'Friendica');
 define ( 'FRIENDICA_VERSION',      '2.3.1288' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
-define ( 'DB_UPDATE_VERSION',      1132      );
+define ( 'DB_UPDATE_VERSION',      1133      );
 
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
index f058bc59ef9b149d51251d8098b4b442b81d4ff7..327b482c0690e929417d3520ba36778050f60464 100755 (executable)
@@ -861,3 +861,9 @@ INDEX ( `term` )
 ) ENGINE = MyISAM DEFAULT CHARSET=utf8;
 
 
+CREATE TABLE IF NOT EXISTS `userd` (
+`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`username` CHAR( 255 ) NOT NULL,
+INDEX ( `username` )
+) ENGINE = MyISAM DEFAULT CHARSET=utf8;
+
index baccea30550012fc16bf2a831f47b7e572ef07cd..d9949b1ef8db45cb3167fb61e84b9d3383d39a64 100755 (executable)
@@ -15,6 +15,12 @@ function user_remove($uid) {
 
        call_hooks('remove_user',$r[0]);
 
+       // save username (actually the nickname as it is guaranteed 
+       // unique), so it cannot be re-registered in the future.
+
+       q("insert into userd ( username ) values ( '%s' )",
+               $r[0]['nickname']
+       );
 
        q("DELETE FROM `contact` WHERE `uid` = %d", intval($uid));
        q("DELETE FROM `group` WHERE `uid` = %d", intval($uid));
index c19df0681d7c5c154a4be90a7a7643682f411dc2..8c50318590532211d965a10e4f75fbf1f48c35ff 100644 (file)
@@ -86,7 +86,7 @@ function delegate_content(&$a) {
 
        $r = q("select nurl from contact where substring_index(contact.nurl,'/',3) = '%s' 
                and contact.uid = %d and contact.self = 0 and network = '%s' ",
-               dbesc($a->get_baseurl()),
+               dbesc(normalise_link($a->get_baseurl())),
                intval(local_user()),
                dbesc(NETWORK_DFRN)
        ); 
index 388b3e250767c31d6f0761acb65701d1550f657a..6d0e2700bceac58c61dab0b39658f51343782763 100755 (executable)
@@ -150,6 +150,16 @@ function register_post(&$a) {
        if(count($r))
                $err .= t('Nickname is already registered. Please choose another.') . EOL;
 
+       // Check deleted accounts that had this nickname. Doesn't matter to us,
+       // but could be a security issue for federated platforms.
+
+       $r = q("SELECT * FROM `userd`
+                       WHERE `username` = '%s' LIMIT 1",
+                       dbesc($nickname)
+       );
+       if(count($r))
+               $err .= t('Nickname was once registered here and may not be re-used. Please choose another.') . EOL;
+
        if(strlen($err)) {
                notice( $err );
                return;
index 17e728ba2d16266531c791316710e0403aae068d..21f41eb01ccc3c854443f22e3465ba50cc3797fa 100755 (executable)
@@ -64,6 +64,11 @@ function user_allow($hash) {
 
 }
 
+
+// This does not have to go through user_remove() and save the nickname
+// permanently against re-registration, as the person was not yet
+// allowed to have friends on this system
+
 function user_deny($hash) {
 
        $register = q("SELECT * FROM `register` WHERE `hash` = '%s' LIMIT 1",
diff --git a/tests/template_test.php b/tests/template_test.php
new file mode 100755 (executable)
index 0000000..1f9f805
--- /dev/null
@@ -0,0 +1,224 @@
+<?php
+/**\r
+ * this file contains tests for the template engine\r
+ *\r
+ * @package test.util\r
+ */\r
+\r
+/** required, it is the file under test */\r
+require_once('include/template_processor.php');
+require_once('include/text.php');
+
+class TemplateMockApp {
+       public $theme_info=array();
+}
+
+if(!function_exists('current_theme')) {
+function current_theme() {\r
+       return 'clean';\r
+}
+}
+
+if(!function_exists('x')) {
+function x($s,$k = NULL) {
+       return false;
+}
+}
+
+if(!function_exists('get_app')) {
+function get_app() {
+       return new TemplateMockApp();
+}
+}
+
+/**\r
+ * TestCase for the template engine\r
+ *\r
+ * @author Alexander Kampmann\r
+ * @package test.util\r
+ */\r
+class TemplateTest extends PHPUnit_Framework_TestCase {
+
+       public function setUp() {
+               global $t;
+               $t=new Template;
+       }
+
+       public function testListToShort() {
+               @list($first, $second)=array('first');
+
+               $this->assertTrue(is_null($second));
+       }
+
+       public function testSimpleVariableString() {
+               $tpl='Hello $name!';
+
+               $text=replace_macros($tpl, array('$name'=>'Anna'));
+
+               $this->assertEquals('Hello Anna!', $text);
+       }
+
+       public function testSimpleVariableInt() {\r
+               $tpl='There are $num new messages!';\r
+\r
+               $text=replace_macros($tpl, array('$num'=>172));\r
+\r
+               $this->assertEquals('There are 172 new messages!', $text);\r
+       }
+
+       public function testConditionalElse() {\r
+               $tpl='There{{ if $num!=1 }} are $num new messages{{ else }} is 1 new message{{ endif }}!';\r
+\r
+               $text1=replace_macros($tpl, array('$num'=>1));
+               $text22=replace_macros($tpl, array('$num'=>22));\r
+\r
+               $this->assertEquals('There is 1 new message!', $text1);
+               $this->assertEquals('There are 22 new messages!', $text22);\r
+       }
+
+       public function testConditionalNoElse() {\r
+               $tpl='{{ if $num!=0 }}There are $num new messages!{{ endif }}';\r
+\r
+               $text0=replace_macros($tpl, array('$num'=>0));\r
+               $text22=replace_macros($tpl, array('$num'=>22));\r
+\r
+               $this->assertEquals('', $text0);\r
+               $this->assertEquals('There are 22 new messages!', $text22);\r
+       }
+
+       public function testConditionalFail() {\r
+               $tpl='There {{ if $num!=1 }} are $num new messages{{ else }} is 1 new message{{ endif }}!';\r
+\r
+               $text1=replace_macros($tpl, array());\r
+\r
+               //$this->assertEquals('There is 1 new message!', $text1);\r
+       }
+
+       public function testSimpleFor() {\r
+               $tpl='{{ for $messages as $message }} $message {{ endfor }}';\r
+\r
+               $text=replace_macros($tpl, array('$messages'=>array('message 1', 'message 2')));\r
+\r
+               $this->assertEquals(' message 1  message 2 ', $text);\r
+       }
+
+       public function testFor() {\r
+               $tpl='{{ for $messages as $message }} from: $message.from to $message.to {{ endfor }}';\r
+\r
+               $text=replace_macros($tpl, array('$messages'=>array(array('from'=>'Mike', 'to'=>'Alex'), array('from'=>'Alex', 'to'=>'Mike'))));\r
+\r
+               $this->assertEquals(' from: Mike to Alex  from: Alex to Mike ', $text);\r
+       }
+       
+       public function testKeyedFor() {\r
+               $tpl='{{ for $messages as $from=>$to }} from: $from to $to {{ endfor }}';\r
+       \r
+               $text=replace_macros($tpl, array('$messages'=>array('Mike'=>'Alex', 'Sven'=>'Mike')));\r
+       \r
+               $this->assertEquals(' from: Mike to Alex  from: Sven to Mike ', $text);\r
+       }
+
+       public function testForEmpty() {\r
+               $tpl='messages: {{for $messages as $message}} from: $message.from to $message.to  {{ endfor }}';\r
+\r
+               $text=replace_macros($tpl, array('$messages'=>array()));\r
+\r
+               $this->assertEquals('messages: ', $text);\r
+       }
+
+       public function testForWrongType() {\r
+               $tpl='messages: {{for $messages as $message}} from: $message.from to $message.to  {{ endfor }}';\r
+\r
+               $text=replace_macros($tpl, array('$messages'=>11));\r
+\r
+               $this->assertEquals('messages: ', $text);\r
+       }
+
+       public function testForConditional() {\r
+               $tpl='new messages: {{for $messages as $message}}{{ if $message.new }} $message.text{{endif}}{{ endfor }}';\r
+\r
+               $text=replace_macros($tpl, array('$messages'=>array(
+                               array('new'=>true, 'text'=>'new message'),
+                               array('new'=>false, 'text'=>'old message'))));\r
+\r
+               $this->assertEquals('new messages:  new message', $text);\r
+       }
+       
+       public function testConditionalFor() {\r
+               $tpl='{{ if $enabled }}new messages:{{for $messages as $message}} $message.text{{ endfor }}{{endif}}';\r
+       \r
+               $text=replace_macros($tpl, array('$enabled'=>true, 
+                               '$messages'=>array(\r
+                               array('new'=>true, 'text'=>'new message'),\r
+                               array('new'=>false, 'text'=>'old message'))));\r
+       \r
+               $this->assertEquals('new messages: new message old message', $text);\r
+       }
+
+       public function testFantasy() {\r
+               $tpl='Fantasy: {{fantasy $messages}}';\r
+\r
+               $text=replace_macros($tpl, array('$messages'=>'no no'));\r
+\r
+               $this->assertEquals('Fantasy: {{fantasy no no}}', $text);\r
+       }
+
+       public function testInc() {\r
+               $tpl='{{inc field_input.tpl with $field=$myvar}}{{ endinc }}';\r
+\r
+               $text=replace_macros($tpl, array('$myvar'=>array('myfield', 'label', 'value', 'help')));\r
+\r
+               $this->assertEquals("   \n"
+                               ."      <div class='field input'>\n"
+                               ."              <label for='id_myfield'>label</label>\n"
+                               ."              <input name='myfield' id='id_myfield' value=\"value\">\n"
+                               ."              <span class='field_help'>help</span>\n"
+                               ."      </div>\n", $text);\r
+       }
+
+       public function testIncNoVar() {\r
+               $tpl='{{inc field_input.tpl }}{{ endinc }}';\r
+\r
+               $text=replace_macros($tpl, array('$field'=>array('myfield', 'label', 'value', 'help')));\r
+\r
+               $this->assertEquals("   \n      <div class='field input'>\n             <label for='id_myfield'>label</label>\n"\r
+                               ."              <input name='myfield' id='id_myfield' value=\"value\">\n"\r
+                               ."              <span class='field_help'>help</span>\n"\r
+                               ."      </div>\n", $text);\r
+       }
+       
+       public function testDoubleUse() {\r
+               $tpl='Hello $name! {{ if $enabled }} I love you! {{ endif }}';\r
+       \r
+               $text=replace_macros($tpl, array('$name'=>'Anna', '$enabled'=>false));\r
+       \r
+               $this->assertEquals('Hello Anna! ', $text);
+               
+               $tpl='Hey $name! {{ if $enabled }} I hate you! {{ endif }}';\r
+               \r
+               $text=replace_macros($tpl, array('$name'=>'Max', '$enabled'=>true));\r
+               \r
+               $this->assertEquals('Hey Max!  I hate you! ', $text);\r
+       }
+       
+       public function testIncDouble() {\r
+               $tpl='{{inc field_input.tpl with $field=$var1}}{{ endinc }}'
+               .'{{inc field_input.tpl with $field=$var2}}{{ endinc }}';\r
+       \r
+               $text=replace_macros($tpl, array('$var1'=>array('myfield', 'label', 'value', 'help'), 
+                               '$var2'=>array('myfield2', 'label2', 'value2', 'help2')));\r
+               \r
+               $this->assertEquals("   \n"\r
+                               ."      <div class='field input'>\n"\r
+                               ."              <label for='id_myfield'>label</label>\n"\r
+                               ."              <input name='myfield' id='id_myfield' value=\"value\">\n"\r
+                               ."              <span class='field_help'>help</span>\n"\r
+                               ."      </div>\n"
+                               ."      \n"
+                               ."      <div class='field input'>\n"
+                               ."              <label for='id_myfield2'>label2</label>\n"
+                               ."              <input name='myfield2' id='id_myfield2' value=\"value2\">\n"
+                               ."              <span class='field_help'>help2</span>\n"
+                               ."      </div>\n", $text);\r
+       }
+}
\ No newline at end of file
index d7dcf0472bd698c84df6487d7d1144b2d0e7b1d3..3fb6ac3109daf150c071d7d767b4ecd72a8be5a8 100644 (file)
@@ -27,11 +27,32 @@ class AntiXSSTest extends PHPUnit_Framework_TestCase {
         */
        public function testXmlify() {
                $text="<tag>I want to break\n this!11!<?hard?></tag>";
-               $xml=xmlify($text); //test whether it actually may be part of a xml document
+               $xml=xmlify($text); 
                $retext=unxmlify($text);
 
                $this->assertEquals($text, $retext);
        }
+       
+       /**\r
+        * xmlify and put in a document\r
+        */\r
+       public function testXmlifyDocument() {\r
+               $tag="<tag>I want to break</tag>";\r
+               $xml=xmlify($tag);
+               $text='<text>'.$xml.'</text>'; \r
+               
+               $xml_parser=xml_parser_create(); 
+               //should be possible to parse it
+               $values=array(); $index=array(); 
+               $this->assertEquals(1, xml_parse_into_struct($xml_parser, $text, $values, $index)); 
+               
+               $this->assertEquals(array('TEXT'=>array(0)), 
+                               $index); 
+               $this->assertEquals(array(array('tag'=>'TEXT', 'type'=>'complete', 'level'=>1, 'value'=>$tag)),\r
+                               $values);
+               
+               xml_parser_free($xml_parser); \r
+       }
 
        /**
         * test hex2bin and reverse
index 6a685a6ff0fe191f53c6e9ac40b113bee151c72d..a69742a949d8337cef19b5fba88a6d97c3b8f4e9 100755 (executable)
@@ -1,6 +1,6 @@
 <?php
 
-define( 'UPDATE_VERSION' , 1132 );
+define( 'UPDATE_VERSION' , 1133 );
 
 /**
  *
@@ -1127,3 +1127,12 @@ function update_1131() {
 }
 
 
+function update_1132() {
+       q("CREATE TABLE IF NOT EXISTS `userd` (
+`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`username` CHAR( 255 ) NOT NULL,
+INDEX ( `username` )
+) ENGINE = MYISAM ");
+
+}
+
index dae16a1c7458f05e0c05c3cb696c59a3d033e2c3..dfcd8ca96003c639eb6f13d4cca343c2ff04fd75 100755 (executable)
@@ -58,7 +58,7 @@
                        <a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a>
                        {{ endif }}
                        {{ if $item.filer }}
-                       <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.star.filer"></a>
+                       <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.filer"></a>
                        {{ endif }}                     
                        <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$item.id" >
                                {{ if $item.drop.dropping }}<a href="item/drop/$item.id" onclick="return confirmDelete();" class="icon drophide" title="$item.drop.delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
index 11decf9c45532586d6993966fced2df0bf53ebd7..abd5967b2a7d13134309367fe26c6ffffe9a242f 100755 (executable)
@@ -62,7 +62,7 @@
                        <a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a>
                        {{ endif }}
                        {{ if $item.filer }}
-                       <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.star.filer"></a>
+                       <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.filer"></a>
                        {{ endif }}                     
                        
                        <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$item.id" >
index dae16a1c7458f05e0c05c3cb696c59a3d033e2c3..dfcd8ca96003c639eb6f13d4cca343c2ff04fd75 100755 (executable)
@@ -58,7 +58,7 @@
                        <a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a>
                        {{ endif }}
                        {{ if $item.filer }}
-                       <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.star.filer"></a>
+                       <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.filer"></a>
                        {{ endif }}                     
                        <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$item.id" >
                                {{ if $item.drop.dropping }}<a href="item/drop/$item.id" onclick="return confirmDelete();" class="icon drophide" title="$item.drop.delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
index 11decf9c45532586d6993966fced2df0bf53ebd7..abd5967b2a7d13134309367fe26c6ffffe9a242f 100755 (executable)
@@ -62,7 +62,7 @@
                        <a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a>
                        {{ endif }}
                        {{ if $item.filer }}
-                       <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.star.filer"></a>
+                       <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.filer"></a>
                        {{ endif }}                     
                        
                        <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$item.id" >
index e2db70a14a3fbadd4e51c000643a0fc990229605..9d1dd7d70e45c183d353b9925c4339ec1dc5d53b 100755 (executable)
@@ -58,7 +58,7 @@
                        <a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a>
                        {{ endif }}
                        {{ if $item.filer }}
-                       <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.star.filer"></a>
+                       <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.filer"></a>
                        {{ endif }}                     
                        <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$item.id" >
                                {{ if $item.drop.dropping }}<a href="item/drop/$item.id" onclick="return confirmDelete();" class="icon drophide" title="$item.drop.delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
index 420c0e08b998037dbce38303149aae4da1236e41..bad5680c7a11c7e0bb9deb477df74b1db4e3cfb7 100755 (executable)
@@ -62,7 +62,7 @@
                        <a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a>
                        {{ endif }}
                        {{ if $item.filer }}
-                       <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.star.filer"></a>
+                       <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.filer"></a>
                        {{ endif }}                     
                        
                        <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$item.id" >
index 57fd2ef60b3d59d4ce1f6de31b919d7144ed3c13..9eee19f4cdf44cb1883bebe59e185f6ba8d55b8b 100755 (executable)
@@ -72,6 +72,8 @@
 @NoticeColor: @Grey1;
 @NoticeBackgroundColor: #511919;
 
+@FieldHelpColor: @Grey3;
+
 @ThreadBackgroundColor: #f6f7f8;
 @ShinyBorderColor: @Green4;
 
index 301477679aff60859a68f75c465fcb4d20c83378..2f463c96c786c714f60dd4c6b1e1e5d764e9d6ef 100755 (executable)
@@ -615,7 +615,7 @@ aside #profiles-menu {
 }
 #contact-block .contact-block-content {
   clear: both;
-  overflow: idden;
+  overflow: hidden;
   height: auto;
 }
 #contact-block .contact-block-link {
@@ -623,7 +623,7 @@ aside #profiles-menu {
   margin: 0px 2px 2px 0px;
 }
 #contact-block .contact-block-link img {
-  widht: 48px;
+  width: 48px;
   height: 48px;
 }
 /* mail view */
@@ -787,7 +787,7 @@ section {
 }
 .wall-item-decor {
   position: absolute;
-  left: 790px;
+  left: 97%;
   top: -10px;
   width: 16px;
 }
@@ -968,6 +968,10 @@ section {
   background: url("../../../images/tag.png") no-repeat center right;
   color: #ffffff;
 }
+.filesavetags {
+  padding: 3px 0px 3px 0px;
+  opacity: 0.5;
+}
 .wwto {
   position: absolute !important;
   width: 25px;
@@ -1304,6 +1308,37 @@ ul.tabs li {
 ul.tabs li .active {
   border-bottom: 1px solid #009100;
 }
+/** group editor **/
+#group-edit-desc {
+  margin-top: 1em;
+  color: #999999;
+}
+#group-update-wrapper {
+  height: auto;
+  overflow: auto;
+}
+#group-update-wrapper #group {
+  width: 300px;
+  float: left;
+  margin-right: 20px;
+}
+#group-update-wrapper #contacts {
+  width: 300px;
+  float: left;
+}
+#group-update-wrapper #group-separator {
+  display: none;
+}
+#group-update-wrapper .contact_list {
+  height: 300px;
+  border: 1px solid #364e59;
+  overflow: auto;
+}
+#group-update-wrapper .contact_list .contact-block-div {
+  width: 50px;
+  height: 50px;
+  float: left;
+}
 /**
  * Form fields
  */
@@ -1326,7 +1361,7 @@ ul.tabs li .active {
 .field .field_help {
   display: block;
   margin-left: 200px;
-  color: #666666;
+  color: #999999;
 }
 .field .onoff {
   float: left;
index 27c48f195223f3e83b298c223a44da11a1a762c3..fca65c90763e6cc97d6e69ca3852399f5b9b9656 100755 (executable)
@@ -113,7 +113,7 @@ header {
        
        #banner {
                overflow: hidden;
-           text-align: center;
+                text-align: center;
                width: 100%;
                a, a:active, a:visited, a:link, a:hover { color: @Grey1; text-decoration: none; outline: none; vertical-align: bottom; }
                #logo-img { height: 22px; margin-top:5px;}
@@ -448,7 +448,7 @@ section {
        margin-bottom: 20px;
        width: 780px;
 }
-.wall-item-decor { position: absolute; left: 790px; top: -10px;  width: 16px;}
+.wall-item-decor { position: absolute; left: 97%; top: -10px;  width: 16px;}
 .unstarred { display: none; }
 
 .wall-item-container {
@@ -570,6 +570,10 @@ section {
                color: @TagColor;
        }
 }
+.filesavetags {
+    padding: 3px 0px 3px 0px;
+    opacity: 0.5;
+}
 
 .wwto { 
        position: absolute !important; 
index 6087e4cd17b1ad88dcad659a091b0dcd20f52484..8f0abe86dfdad5b1fefd4089ea3ca9a3e97a1826 100755 (executable)
@@ -787,7 +787,7 @@ section {
 }
 .wall-item-decor {
   position: absolute;
-  left: 790px;
+  left: 97%;
   top: -10px;
   width: 16px;
 }
@@ -968,6 +968,10 @@ section {
   background: url("../../../images/tag.png") no-repeat center right;
   color: #ffffff;
 }
+.filesavetags {
+  padding: 3px 0px 3px 0px;
+  opacity: 0.5;
+}
 .wwto {
   position: absolute !important;
   width: 25px;
index c990775106f5efba8b9e81a1bcd076876e45ff50..e771db0682f3e48f9db8a0c12606a51bd37d1580 100755 (executable)
@@ -51,6 +51,9 @@
                                <a href="#" id="unstar-$item.id" onclick="dostar($item.id); return false;"  class="$item.star.classundo"  title="$item.star.undo">$item.star.undo</a>
                                <a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="$item.star.classtagger" title="$item.star.tagger">$item.star.tagger</a>
                        {{ endif }}
+                       {{ if $item.filer }}
+                                <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.filer">$item.filer</a>
+                       {{ endif }}                     
                        
                        {{ if $item.vote }}
                                <a href="#" id="like-$item.id" title="$item.vote.like.0" onclick="dolike($item.id,'like'); return false">$item.vote.like.1</a>
index be942f26195885a9fb95493f195f49615025c1e1..693ebaba6f3a81e082480e55770a8404224d49f2 100755 (executable)
@@ -58,6 +58,9 @@
                                <a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="$item.star.classtagger" title="$item.star.tagger">$item.star.tagger</a>
 
                        {{ endif }}
+                       {{ if $item.filer }}
+                                <a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.filer">$item.filer</a>
+                       {{ endif }}                     
                        
                        {{ if $item.vote }}
                                <a href="#" id="like-$item.id" title="$item.vote.like.0" onclick="dolike($item.id,'like'); return false">$item.vote.like.1</a>