]> git.mxchange.org Git - friendica.git/commitdiff
Merge branch 'chriscase-master'
authorFriendika <info@friendika.com>
Sun, 20 Feb 2011 09:42:11 +0000 (01:42 -0800)
committerFriendika <info@friendika.com>
Sun, 20 Feb 2011 09:42:11 +0000 (01:42 -0800)
Conflicts:
mod/dfrn_notify.php

44 files changed:
addon/statusnet/statusnet.php
addon/tictac/tictac.php [new file with mode: 0644]
boot.php
database.sql
images/remote-link.gif [new file with mode: 0644]
images/smiley-brokenheart.gif [new file with mode: 0644]
include/items.php
include/main.js
include/nav.php
include/oembed.php
index.php
mod/apps.php [new file with mode: 0644]
mod/display.php
mod/follow.php
mod/item.php
mod/message.php
mod/network.php
mod/photos.php
mod/profile.php
mod/update_network.php
simplepie/simplepie.inc
tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif
update.php
util/string_translator.php
util/strings.php
view/comment_item.tpl
view/de/mail_received_html_body_eml.tpl
view/de/msg-header.tpl
view/de/strings.php
view/de/wallwall_item.tpl
view/en/mail_received_html_body_eml.tpl
view/en/msg-header.tpl
view/en/wallwall_item.tpl
view/fr/mail_received_html_body_eml.tpl
view/fr/msg-header.tpl
view/fr/wallwall_item.tpl
view/it/mail_received_html_body_eml.tpl
view/it/msg-header.tpl
view/it/settings_nick_unset.tpl
view/it/strings.php
view/it/wallwall_item.tpl
view/theme/duepuntozero/style.css
view/theme/loozah/style.css
view/wall_item.tpl

index bc47242fcc149cfdc264e9464b9bfb86090ab746..c7e16b56e9cc3b421635f9054570caf2ad39fea6 100644 (file)
@@ -133,7 +133,7 @@ function statusnet_settings(&$a,&$s) {
                $s .= '<input id="statusnet-consumerkey" type="text" name="statusnet-consumerkey" size="35" /><br />';
                 $s .= '<label id="statusnet-consumersecret-label" for="statusnet-consumersecret">'. t('OAuth Consumer Secret') .'</label>';
                $s .= '<input id="statusnet-consumersecret" type="text" name="statusnet-consumersecret" size="35" /><br />';
-                $s .= '<label id="statusnet-baseapi-label" for="statusnet-baseapi">'. t('Base API Path (remember the trailing /)') .'</label>';
+                $s .= '<label id="statusnet-baseapi-label" for="statusnet-baseapi">'. t("Base API Path \x28remember the trailing /\x29") .'</label>';
                $s .= '<input id="statusnet-baseapi" type="text" name="statusnet-baseapi" size="35" /><br  />';
                 $s .= '</div><div class="clear"></div>';
                 $s .= '<div class="settings-submit-wrapper" ><input type="submit" name="submit" class="settings-submit" value="' . t('Submit') . '" /></div>';
diff --git a/addon/tictac/tictac.php b/addon/tictac/tictac.php
new file mode 100644 (file)
index 0000000..d442544
--- /dev/null
@@ -0,0 +1,661 @@
+<?php
+
+
+function tictac_install() {
+       register_hook('app_menu', 'addon/tictac/tictac.php', 'tictac_app_menu');
+}
+
+function tictac_uninstall() {
+       unregister_hook('app_menu', 'addon/tictac/tictac.php', 'tictac_app_menu');
+
+}
+
+function tictac_app_menu($a,&$b) {
+       $b['app_menu'] .= '<a href="tictac">Three Dimensional Tic-Tac-Toe</a><br />'; 
+}
+
+
+function tictac_module() {
+       return;
+}
+
+
+
+
+
+function tictac_content(&$a) {
+
+       $o = '';
+
+  if($_POST['move']) {
+    $handicap = $a->argv[1];
+    $mefirst = $a->argv[2];
+    $dimen = $a->argv[3];
+    $yours = $a->argv[4];
+    $mine  = $a->argv[5];
+    
+    $yours .= $_POST['move'];
+  }
+  elseif($a->argc > 1) {
+    $handicap = $a->argv[1];
+    $dimen = 3;
+  }
+  else {
+   $dimen = 3;
+  }
+
+  $o .=  '<h3>3D Tic-Tac-Toe</h3><br />';
+
+  $t = new tictac($dimen,$handicap,$mefirst,$yours,$mine);
+  $o .= $t->play();
+
+  $o .=  '<a href="tictac">New game</a><br />';
+  $o .=  '<a href="tictac/1">New game with handicap</a><br />';
+$o .=  <<< EOT
+<p>
+Three dimensional tic-tac-toe is just like the traditional game except that it is played on multiple levels simultaneously. In this case there are three levels. You win by getting three in a row on any level, as well as up, down, and diagonally across the different levels. 
+</p>
+<p>
+The handicap game disables the center position on the middle level because the player claiming this square often has an unfair advantage.
+</p>
+EOT;
+return $o;
+
+}
+
+class tictac {
+  private $dimen;
+  private $first_move = true;
+  private $handicap = 0;
+  private $yours;
+  private $mine;
+  private $winning_play;  
+  private $you;
+  private $me;
+  private $debug = 1;
+  private $crosses = array('011','101','110','112','121','211');
+
+/*
+    '001','010','011','012','021',
+    '101','110','111','112','121',
+    '201','210','211','212','221');
+*/
+
+  private $corners = array(
+    '000','002','020','022',
+    '200','202','220','222');
+
+  private $planes = array(
+    array('000','001','002','010','011','012','020','021','022'), // horiz 1
+    array('100','101','102','110','111','112','120','121','122'), // 2
+    array('200','201','202','210','211','212','220','221','222'), // 3
+    array('000','010','020','100','110','120','200','210','220'), // vert left
+    array('000','001','002','100','101','102','200','201','202'), // vert top
+    array('002','012','022','102','112','122','202','212','222'), // vert right
+    array('020','021','022','120','121','122','220','221','222'), // vert bot
+    array('010','011','012','110','111','112','210','211','212'), // left vertx
+    array('001','011','021','101','111','221','201','211','221'), // top vertx
+    array('000','001','002','110','111','112','220','221','222'), // diag top
+    array('020','021','022','110','111','112','200','201','202'), // diag bot
+    array('000','010','020','101','111','121','202','212','222'), // diag left
+    array('002','012','022','101','111','121','200','210','220'), // diag right
+    array('002','011','020','102','111','120','202','211','220'), // diag x
+    array('000','011','022','100','111','122','200','211','222')  // diag x
+    
+  );
+
+
+  private $winner = array(
+     array('000','001','002'),         // board 0 winners  - left corner across
+     array('000','010','020'),         // down
+     array('000','011','022'),         // diag
+     array('001','011','021'),         // middle-top down
+     array('010','011','012'),         // middle-left across
+     array('002','011','020'),         // right-top diag
+     array('002','012','022'),         // right-top down
+     array('020','021','022'),        // bottom-left across
+     array('100','101','102'),      // board 1 winners
+     array('100','110','120'),
+     array('100','111','122'),
+     array('101','111','121'),
+     array('110','111','112'),
+     array('102','111','120'),
+     array('102','112','122'),
+     array('120','121','122'),
+     array('200','201','202'),    // board 2 winners
+     array('200','210','220'),
+     array('200','211','222'),
+     array('201','211','221'),
+     array('210','211','212'),
+     array('202','211','220'),
+     array('202','212','222'),
+     array('220','221','222'),
+     array('000','100','200'),      // top-left corner 3d
+     array('000','101','202'),
+     array('000','110','220'),
+     array('000','111','222'),
+     array('001','101','201'),      // top-middle 3d
+     array('001','111','221'),
+     array('002','102','202'),      // top-right corner 3d
+     array('002','101','200'),
+     array('002','112','222'),
+     array('002','111','220'),
+     array('010','110','210'),      // left-middle 3d
+     array('010','111','212'),
+     array('011','111','211'),      // middle-middle 3d
+     array('012','112','212'),      // right-middle 3d
+     array('012','111','210'),
+     array('020','120','220'),      // bottom-left corner 3d
+     array('020','110','200'),
+     array('020','121','222'),
+     array('020','111','202'),
+     array('021','121','221'),      // bottom-middle 3d
+     array('021','111','201'),
+     array('022','122','222'),      // bottom-right corner 3d
+     array('022','121','220'),
+     array('022','112','202'),
+     array('022','111','200')
+
+  );
+
+  function __construct($dimen,$handicap,$mefirst,$yours,$mine) {
+    $this->dimen = 3;
+    $this->handicap = (($handicap) ? 1 : 0);
+    $this->mefirst = (($mefirst) ? 1 : 0);
+    $this->yours = str_replace('XXX','',$yours);
+    $this->mine  = $mine;
+    $this->you = $this->parse_moves('you');
+    $this->me  = $this->parse_moves('me');
+
+    if(strlen($yours))
+      $this->first_move = false;
+  }
+
+  function play() {
+
+     if($this->first_move) {
+       if(rand(0,1) == 1) {
+         $o .=  '<div class="errmsg">You go first...</div><br />';
+         $this->mefirst = 0;
+         $o .= $this->draw_board();
+         return $o;
+       }
+       $o .=  '<div class="errmsg">I\'m going first this time...</div><br />';
+       $this->mefirst = 1;
+
+     }
+
+     if($this->check_youwin()) {
+       $o .=  '<div class="errmsg">You won!</div><br />';
+       $o .= $this->draw_board();
+       return $o;
+     }
+
+     if($this->fullboard())
+       $o .=  'Cat game!';
+
+     $move = $this->winning_move();
+     if(strlen($move)) {
+       $this->mine .= $move;
+       $this->me = $this->parse_moves('me');
+     }
+     else {
+       $move = $this->defensive_move();
+       if(strlen($move)) {
+         $this->mine .= $move;
+         $this->me = $this->parse_moves('me');
+       }
+       else {  
+         $move = $this->offensive_move();
+         if(strlen($move)) {
+           $this->mine .= $move;
+           $this->me = $this->parse_moves('me');
+         }
+       }
+     }
+
+     if($this->check_iwon())
+       $o .=  '<div class="errmsg">I won!</div><br />';
+     if($this->fullboard())
+       $o .=  'Cat game!';
+     $o .= $this->draw_board();
+       return $o;
+  }
+
+  function parse_moves($player) {
+    if($player == 'me')
+      $str = $this->mine;
+    if($player == 'you')
+      $str = $this->yours;
+    $ret = array();
+      while(strlen($str)) {
+         $ret[] = substr($str,0,3);
+         $str = substr($str,3);
+      }
+    return $ret;
+  }
+
+
+  function check_youwin() {
+    for($x = 0; $x < count($this->winner); $x ++) {
+      if(in_array($this->winner[$x][0],$this->you) && in_array($this->winner[$x][1],$this->you) && in_array($this->winner[$x][2],$this->you)) {
+        $this->winning_play = $this->winner[$x];
+        return true;
+      }
+    }
+    return false;
+  }
+  function check_iwon() {
+    for($x = 0; $x < count($this->winner); $x ++) {
+      if(in_array($this->winner[$x][0],$this->me) && in_array($this->winner[$x][1],$this->me) && in_array($this->winner[$x][2],$this->me)) {
+        $this->winning_play = $this->winner[$x];
+        return true;
+      }
+    }
+    return false;
+  }
+  function defensive_move() {
+
+    for($x = 0; $x < count($this->winner); $x ++) {
+      if(($this->handicap) && in_array('111',$this->winner[$x]))
+        continue;
+      if(in_array($this->winner[$x][0],$this->you) && in_array($this->winner[$x][1],$this->you) && (! in_array($this->winner[$x][2],$this->me)))
+        return($this->winner[$x][2]);
+      if(in_array($this->winner[$x][0],$this->you) && in_array($this->winner[$x][2],$this->you) && (! in_array($this->winner[$x][1],$this->me)))
+        return($this->winner[$x][1]);
+      if(in_array($this->winner[$x][1],$this->you) && in_array($this->winner[$x][2],$this->you) && (! in_array($this->winner[$x][0],$this->me)))
+        return($this->winner[$x][0]);
+     }
+     return '';
+  }
+
+function winning_move() {
+
+    for($x = 0; $x < count($this->winner); $x ++) {
+      if(($this->handicap) && in_array('111',$this->winner[$x]))
+        continue;
+      if(in_array($this->winner[$x][0],$this->me) && in_array($this->winner[$x][1],$this->me) && (! in_array($this->winner[$x][2],$this->you)))
+        return($this->winner[$x][2]);
+      if(in_array($this->winner[$x][0],$this->me) && in_array($this->winner[$x][2],$this->me) && (! in_array($this->winner[$x][1],$this->you)))
+        return($this->winner[$x][1]);
+      if(in_array($this->winner[$x][1],$this->me) && in_array($this->winner[$x][2],$this->me) && (! in_array($this->winner[$x][0],$this->you)))
+        return($this->winner[$x][0]);
+     }
+
+}
+
+  function offensive_move() {
+
+    shuffle($this->planes);
+    shuffle($this->winner);
+    shuffle($this->corners);
+    shuffle($this->crosses);
+
+    if(! count($this->me)) {
+      if($this->handicap) {
+        $p = $this->uncontested_plane();
+        foreach($this->corners as $c)
+          if((in_array($c,$p)) 
+            && (! $this->is_yours($c)) && (! $this->is_mine($c)))
+              return($c);
+      }
+      else {
+        if((! $this->marked_yours(1,1,1)) && (! $this->marked_mine(1,1,1)))
+          return '111';
+        $p = $this->uncontested_plane();
+        foreach($this->crosses as $c)
+          if((in_array($c,$p))
+            && (! $this->is_yours($c)) && (! $this->is_mine($c)))
+            return($c);
+      }
+    }
+
+    if($this->handicap) {
+      if(count($this->me) >= 1) {
+        if(count($this->get_corners($this->me)) == 1) {
+          if(in_array($this->me[0],$this->corners)) {
+            $p = $this->my_best_plane();
+            foreach($this->winner as $w) {
+              if((in_array($w[0],$this->you)) 
+              || (in_array($w[1],$this->you))
+              || (in_array($w[2],$this->you)))
+                continue;        
+              if(in_array($w[0],$this->corners) 
+                && in_array($w[2],$this->corners)
+                && in_array($w[0],$p) && in_array($w[2],$p)) {
+                  if($this->me[0] == $w[0])
+                    return($w[2]);
+                  elseif($this->me[0] == $w[2])
+                    return($w[0]);
+              }
+            }
+          }
+        }
+        else {
+          $r = $this->get_corners($this->me);
+          if(count($r) > 1) {
+            $w1 = array(); $w2 = array();
+            foreach($this->winner as $w) {
+              if(in_array('111',$w))
+                continue;
+              if(($r[0] == $w[0]) || ($r[0] == $w[2]))
+                $w1[] = $w;
+              if(($r[1] == $w[0]) || ($r[1] == $w[2]))
+                $w2[] = $w;
+            }
+            if(count($w1) && count($w2)) {
+              foreach($w1 as $a) {
+                foreach($w2 as $b) {
+                  if((in_array($a[0],$this->you)) 
+                  || (in_array($a[1],$this->you))
+                  || (in_array($a[2],$this->you))
+                  || (in_array($b[0],$this->you))
+                  || (in_array($b[1],$this->you))
+                  || (in_array($b[2],$this->you)))
+                    continue; 
+                  if(($a[0] == $b[0]) && ! $this->is_mine($a[0])) {
+                    return $a[0];
+                  }
+                  elseif(($a[2] == $b[2]) && ! $this->is_mine($a[2])) {
+                    return $a[2];
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+
+ //&& (count($this->me) == 1) && (count($this->you) == 1)
+ //     && in_array($this->you[0],$this->corners)
+ //     && $this->is_neighbor($this->me[0],$this->you[0])) {
+
+      // Yuck. You foiled my plan. Since you obviously aren't playing to win, 
+      // I'll try again. You may keep me busy for a few rounds, but I'm 
+      // gonna' get you eventually.
+
+//      $p = $this->uncontested_plane();
+ //     foreach($this->crosses as $c)
+   //     if(in_array($c,$p))
+     //     return($c);
+
+//    }
+
+
+    // find all the winners containing my points.
+    $mywinners = array();
+    foreach($this->winner as $w)
+      foreach($this->me as $m)
+        if((in_array($m,$w)) && (! in_array($w,$mywinners)))
+          $mywinners[] = $w;
+
+    // find all the rules where my points are in the center.
+      $trythese = array();
+      if(count($mywinners)) {
+        foreach($mywinners as $w) {
+          foreach($this->me as $m) {
+            if(($m == $w[1]) && ($this->uncontested_winner($w))
+              && (! in_array($w,$trythese)))
+            $trythese[] = $w;
+          }
+        }
+      }
+
+      $myplanes = array();
+      for($p = 0; $p < count($this->planes); $p ++) {
+        if($this->handicap && in_array('111',$this->planes[$p]))
+          continue;
+        foreach($this->me as $m)
+          if((in_array($m,$this->planes[$p])) 
+            && (! in_array($this->planes[$p],$myplanes)))
+              $myplanes[] = $this->planes[$p];
+      }
+      shuffle($myplanes);
+
+    // find all winners which share an endpoint, and which are uncontested
+      $candidates = array();
+      if(count($trythese) && count($myplanes)) {
+        foreach($trythese as $t) {
+          foreach($this->winner as $w) {
+            if(! $this->uncontested_winner($w))
+              continue;
+            if((in_array($t[0],$w)) || (in_array($t[2],$w))) {
+              foreach($myplanes as $p)
+                if(in_array($w[0],$p) && in_array($w[1],$p) && in_array($w[2],$p) && ($w[1] != $this->me[0]))
+                  if(! in_array($w,$candidates))
+                    $candidates[] = $w;
+            }
+          }
+        }
+      }
+
+      // Find out if we are about to force a win.
+      // Looking for two winning vectors with a common endpoint
+      // and where we own the middle of both - we are now going to 
+      // grab the endpoint. The game isn't yet over but we've already won.
+
+      if(count($candidates)) {
+        foreach($candidates as $c) {
+          if(in_array($c[1],$this->me)) {
+            // return endpoint
+            foreach($trythese as $t)
+              if($t[0] == $c[0])
+                return($t[0]);
+              elseif($t[2] == $c[2])
+                return($t[2]);
+          }
+       }
+
+       // find opponents planes
+      $yourplanes = array();
+      for($p = 0; $p < count($this->planes); $p ++) {
+        if($this->handicap && in_array('111',$this->planes[$p]))
+          continue;
+        if(in_array($this->you[0],$this->planes[$p]))
+          $yourplanes[] = $this->planes[$p];
+      }
+
+      shuffle($this->winner);
+      foreach($candidates as $c) {
+
+         // We now have a list of winning strategy vectors for our second point
+         // Pick one that will force you into defensive mode.
+         // Pick a point close to you so we don't risk giving you two
+         // in a row when you block us. That would force *us* into 
+         // defensive mode.
+         // We want:        or:         not:
+         //           X|O|     X| |       X| |
+         //            |0|     O|O|        |O|
+         //            | |      | |        |O|
+
+         if(count($this->you) == 1) {
+           foreach($this->winner as $w) {
+             if(in_array($this->me[0], $w) && in_array($c[1],$w) 
+               && $this->uncontested_winner($w) 
+               && $this->is_neighbor($this->you[0],$c[1])) {
+                 return($c[1]);
+             }  
+           }
+         }
+       }         
+
+       // You're somewhere else entirely or have made more than one move 
+       // - any strategy vector which puts you on the defense will have to do
+
+       foreach($candidates as $c) {
+         foreach($this->winner as $w) {
+           if(in_array($this->me[0], $w) && in_array($c[1],$w) 
+             && $this->uncontested_winner($w)) {
+                   return($c[1]);
+           }  
+         }
+       }
+     }
+
+    // worst case scenario, no strategy we can play, 
+    // just find an empty space and take it
+
+    for($x = 0; $x < $this->dimen; $x ++)
+      for($y = 0; $y < $this->dimen; $y ++)
+        for($z = 0; $z < $this->dimen; $z ++)
+          if((! $this->marked_yours($x,$y,$z)) 
+            && (! $this->marked_mine($x,$y,$z))) {
+            if($this->handicap && $x == 1 && $y == 1 && $z == 1)
+              continue;
+            return(sprintf("%d%d%d",$x,$y,$z));
+          }
+       
+  return '';
+  }
+
+  function marked_yours($x,$y,$z) {
+   $str = sprintf("%d%d%d",$x,$y,$z);
+   if(in_array($str,$this->you))
+     return true;
+   return false;
+  }
+
+  function marked_mine($x,$y,$z) {
+   $str = sprintf("%d%d%d",$x,$y,$z);
+   if(in_array($str,$this->me))
+     return true;
+   return false;
+  }
+
+  function is_yours($str) {
+   if(in_array($str,$this->you))
+     return true;
+   return false;
+  }
+
+  function is_mine($str) {
+   if(in_array($str,$this->me))
+     return true;
+   return false;
+  }
+
+  function get_corners($a) {
+    $total = array();
+    if(count($a))
+      foreach($a as $b)
+        if(in_array($b,$this->corners))
+          $total[] = $b;
+    return $total;
+  }
+
+  function uncontested_winner($w) {
+    if($this->handicap && in_array('111',$w))
+      return false;
+    $contested = false;
+    if(count($this->you)) {
+      foreach($this->you as $you)
+        if(in_array($you,$w))
+          $contested = true;
+    }
+    return (($contested) ? false : true);
+  }
+
+
+  function is_neighbor($p1,$p2) {
+   list($x1,$y1,$z1) = sscanf($p1, "%1d%1d%1d");
+   list($x2,$y2,$z2) = sscanf($p2, "%1d%1d%1d");
+
+   if((($x1 == $x2) || ($x1 == $x2+1) || ($x1 == $x2-1)) &&
+      (($y1 == $y2) || ($y1 == $y2+1) || ($y1 == $y2-1)) &&
+      (($z1 == $z2) || ($z1 == $z2+1) || ($z1 == $z2-1)))
+     return true;
+   return false;
+
+  }
+
+  function my_best_plane() {
+
+    $second_choice = array();
+    shuffle($this->planes);
+    for($p = 0; $p < count($this->planes); $p ++ ) {
+      $contested = 0;
+      if($this->handicap && in_array('111',$this->planes[$p]))
+        continue;
+      if(! in_array($this->me[0],$this->planes[$p]))
+        continue;
+      foreach($this->you as $m) {
+        if(in_array($m,$this->planes[$p]))
+          $contested ++;   
+      }
+      if(! $contested)
+        return($this->planes[$p]);
+      if($contested == 1)
+        $second_choice = $this->planes[$p];
+    }
+    return $second_choice;
+  }
+
+
+
+
+
+
+
+  function uncontested_plane() {
+    $freeplane = true;
+    shuffle($this->planes);
+    $pl = $this->planes;
+
+    for($p = 0; $p < count($pl); $p ++ ) {
+        if($this->handicap && in_array('111',$pl[$p]))
+          continue;
+       foreach($this->you as $m) {
+         if(in_array($m,$pl[$p]))   
+           $freeplane = false;         
+       }
+       if(! $freeplane) {
+         $freeplane = true;
+         continue;
+       }
+       if($freeplane)
+         return($pl[$p]);
+    }
+    return array();
+  }
+
+  function fullboard() {
+   return false;
+  }
+
+  function draw_board() {
+    if(! strlen($this->yours))
+      $this->yours = 'XXX';
+    $o .=  "<form action=\"tictac/{$this->handicap}/{$this->mefirst}/{$this->dimen}/{$this->yours}/{$this->mine}\" method=\"post\" />";
+    for($x = 0; $x < $this->dimen; $x ++) {
+      $o .=  '<table>';
+      for($y = 0; $y < $this->dimen; $y ++) {
+        $o .=  '<tr>';
+        for($z = 0; $z < $this->dimen; $z ++) {
+          $s = sprintf("%d%d%d",$x,$y,$z);
+          $winner = ((is_array($this->winning_play) && in_array($s,$this->winning_play)) ? " color: #FF0000; " : "");
+          $bordertop = (($y != 0) ? " border-top: 2px solid #000;" : "");
+          $borderleft = (($z != 0) ? " border-left: 2px solid #000;" : "");
+          if($this->handicap && $x == 1 && $y == 1 && $z == 1)
+            $o .=  "<td style=\"width: 25px; height: 25px; $bordertop $borderleft\" align=\"center\">&nbsp;</td>";                  
+          elseif($this->marked_yours($x,$y,$z))
+            $o .=  "<td style=\"width: 25px; height: 25px; $bordertop $borderleft $winner\" align=\"center\">X</td>";
+          elseif($this->marked_mine($x,$y,$z))
+            $o .=  "<td style=\"width: 25px; height: 25px; $bordertop $borderleft $winner\" align=\"center\">O</td>";
+          else {
+            $val = sprintf("%d%d%d",$x,$y,$z);
+            $o .=  "<td style=\"width: 25px; height: 25px; $bordertop $borderleft\" align=\"center\"><input type=\"checkbox\" name=\"move\" value=\"$val\" onclick=\"this.form.submit();\" /></td>";
+          }
+        }
+        $o .=  '</tr>';
+      }
+      $o .=  '</table><br />';
+    }
+    $o .=  '</form>';
+       return $o;
+
+  }
+
+
+}
+
index 6a1d3a04b41ce2365b9fb15c31ef66bb69c81d60..7f68689360f75e373ab1542e962b9b40c45833fa 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -2,8 +2,8 @@
 
 set_time_limit(0);
 
-define ( 'BUILD_ID',               1038   );
-define ( 'FRIENDIKA_VERSION',      '2.10.0906' );
+define ( 'BUILD_ID',               1039   );
+define ( 'FRIENDIKA_VERSION',      '2.10.0907' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.1'  );
 
 define ( 'EOL',                    "<br />\r\n"     );
@@ -196,6 +196,7 @@ class App {
        public  $timezone;
        public  $interactive = true;
        public  $plugins;
+       public  $apps;
 
        private $scheme;
        private $hostname;
@@ -1804,7 +1805,7 @@ function like_puller($a,$item,&$arr,$mode) {
 
        if((activity_match($item['verb'],$verb)) && ($item['id'] != $item['parent'])) {
                $url = $item['author-link'];
-               if(($item['network'] === 'dfrn') && (! $item['self']) && ($item['author-link'] == $item['url'])) {
+               if((local_user()) && (local_user() == $item['uid']) && ($item['network'] === 'dfrn') && (! $item['self']) && (link_compare($item['author-link'],$item['url']))) {
                        $url = $a->get_baseurl() . '/redir/' . $item['contact-id'];
                        $sparkle = ' class="sparkle" ';
                }
@@ -1978,9 +1979,11 @@ function smilies($s) {
        $a = get_app();
 
        return str_replace(
-       array( '&lt;3', ':-)', ';-)', ':-(', ':(', ':-P', ':-"', ':-x', ':-X', ':-D', '8-|', '8-O'),
+       array( '&lt;3', '&lt;/3', '&lt;\\3', ':-)', ';-)', ':-(', ':(', ':-P', ':-"', ':-x', ':-X', ':-D', '8-|', '8-O'),
        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-wink.gif" alt=";-)" />',
                '<img src="' . $a->get_baseurl() . '/images/smiley-frown.gif" alt=":-(" />',
@@ -2447,3 +2450,16 @@ function feed_salmonlinks($nick) {
        return $salmon;
 }}
 
+if(! function_exists('get_plink')) {
+function get_plink($item) {
+       $a = get_app(); 
+       $plink = (((x($item,'plink')) && (! $item['private'])) ? '<div class="wall-item-links-wrapper"><a href="' 
+                       . $item['plink'] . '" title="' . t('link to source') . '" target="external-link" ><img src="' . $a->get_baseurl() . '/images/remote-link.gif" alt="' . t('link to source') . '" /></a></div>' : '');
+       return $plink;
+}}
+
+if(! function_exists('unamp')) {
+function unamp($s) {
+       return str_replace('&amp;', '&', $s);
+}}
+
index 55671db851e18ff6984d9789e0c47949a9841480..93e444b6b80254053be81b07479dc17d130e7052 100644 (file)
@@ -181,6 +181,7 @@ CREATE TABLE IF NOT EXISTS `item` (
   `object` text NOT NULL,
   `target-type` char(255) NOT NULL,
   `target` text NOT NULL,
+  `plink` char(255) NOT NULL, 
   `resource-id` char(255) NOT NULL,
   `tag` mediumtext NOT NULL,
   `inform` mediumtext NOT NULL,
diff --git a/images/remote-link.gif b/images/remote-link.gif
new file mode 100644 (file)
index 0000000..008397f
Binary files /dev/null and b/images/remote-link.gif differ
diff --git a/images/smiley-brokenheart.gif b/images/smiley-brokenheart.gif
new file mode 100644 (file)
index 0000000..79ca0c3
Binary files /dev/null and b/images/smiley-brokenheart.gif differ
index b5bdd783354f8ee7c8982900f4eb52792f29ee49..0951adbae1b0873f5c4101cac1fd002f94274aa6 100644 (file)
@@ -246,7 +246,7 @@ function get_atom_elements($feed,$item) {
        $res['uri'] = unxmlify($item->get_id());
        $res['title'] = unxmlify($item->get_title());
        $res['body'] = unxmlify($item->get_content());
-
+       $res['plink'] = unxmlify($item->get_link(0));
 
        // look for a photo. We should check media size and find the best one,
        // but for now let's just find any author photo
@@ -350,7 +350,7 @@ function get_atom_elements($feed,$item) {
                        '[youtube]$1[/youtube]', $res['body']);
 
                $res['body'] = oembed_html2bbcode($res['body']);
-       
+
                $config = HTMLPurifier_Config::createDefault();
                $config->set('Cache.DefinitionImpl', null);
 
@@ -363,7 +363,7 @@ function get_atom_elements($feed,$item) {
 
                $res['body'] = html2bbcode($res['body']);
        }
-       
+
        $allow = $item->get_item_tags(NAMESPACE_DFRN,'comment-allow');
        if($allow && $allow[0]['data'] == 1)
                $res['last-child'] = 1;
@@ -591,6 +591,7 @@ function item_store($arr,$force_parent = false) {
        $arr['object']        = ((x($arr,'object'))        ? trim($arr['object'])                : '');
        $arr['target-type']   = ((x($arr,'target-type'))   ? notags(trim($arr['target-type']))   : '');
        $arr['target']        = ((x($arr,'target'))        ? trim($arr['target'])                : '');
+       $arr['plink']         = ((x($arr,'plink'))         ? notags(trim($arr['plink']))         : '');
        $arr['allow_cid']     = ((x($arr,'allow_cid'))     ? trim($arr['allow_cid'])             : '');
        $arr['allow_gid']     = ((x($arr,'allow_gid'))     ? trim($arr['allow_gid'])             : '');
        $arr['deny_cid']      = ((x($arr,'deny_cid'))      ? trim($arr['deny_cid'])              : '');
@@ -1418,7 +1419,7 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
        $o .= '<updated>' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '</updated>' . "\r\n";
        $o .= '<dfrn:env>' . base64url_encode($item['body'], true) . '</dfrn:env>' . "\r\n";
        $o .= '<content type="' . $type . '" >' . xmlify(($type === 'html') ? bbcode($item['body']) : $item['body']) . '</content>' . "\r\n";
-       $o .= '<link rel="alternate" href="' . xmlify($a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id']) . '" />' . "\r\n";
+       $o .= '<link rel="alternate" type="text/html" href="' . xmlify($a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id']) . '" />' . "\r\n";
        if($comment)
                $o .= '<dfrn:comment-allow>' . intval($item['last-child']) . '</dfrn:comment-allow>' . "\r\n";
 
index abd097e54a07bcfd7442377823039f264b52e8b4..824f2dfdfcce3843880a2e5a83ee3bc5dfd46a28 100644 (file)
                prev = 'live-' + src;
 
                in_progress = true;
-               $.get('update_' + src + '?p=' + profile_uid + '&msie=' + ((msie) ? 1 : 0),function(data) {
+               var udargs = ((netargs.length) ? '/' + netargs : '');
+               var update_url = 'update_' + src + udargs + '?p=' + profile_uid + '&page=' + profile_page + '&msie=' + ((msie) ? 1 : 0);
+
+               $.get(update_url,function(data) {
                        in_progress = false;
                        $('.wall-item-outside-wrapper',data).each(function() {
                                var ident = $(this).attr('id');
                                        if(timer) clearTimeout(timer);
                                        timer = setTimeout(NavUpdate,10);
                                }
+                               if(data.reload) {
+                                       window.location.href=data.reload;
+                               }
+                                       
                        },
                        "json"  
          );  
index 94a71d227a474e1e4eb91d7cd1079298b2648996..228774d95851b06dbd104bb621ea3a21e36a5063 100644 (file)
                $a->page['nav'] .= '<a id="nav-register-link" class="nav-commlink" href="register" >' 
                        . t('Register') . "</a>\r\n";
 
+       if(strlen($a->apps)) {
+               $a->page['nav'] .= '<a id="nav-apps-link" class="nav-link" href="apps">' . t('Apps') . "</a>\r\n";
+       }
+
        $a->page['nav'] .= '<a id="nav-search-link" class="nav-link" href="search">' . t('Search') . "</a>\r\n";
        $a->page['nav'] .= '<a id="nav-directory-link" class="nav-link" href="directory">' . t('Directory') . "</a>\r\n";
 
index 4d6b0af16c7581b1f7cbf7b58bebc9be7915a2d2..4d2b7185e9a43d2f516a46e62461b605f0150d97 100644 (file)
@@ -79,22 +79,31 @@ function oe_get_inner_html( $node ) {
  * and replace it with [embed]url[/embed]
  */
 function oembed_html2bbcode($text) {
-       // If it doesn't parse at all, just return the text.
-       $dom = @DOMDocument::loadHTML($text);
-       if(! $dom)
+       // start parser only if 'oembed' is in text
+       if (strpos($text, "oembed")){
+               
+               // convert non ascii chars to html entities
+               $html_text = mb_convert_encoding($text, 'HTML-ENTITIES', mb_detect_encoding($text));
+               
+               // If it doesn't parse at all, just return the text.
+               $dom = @DOMDocument::loadHTML($html_text);
+               if(! $dom)
+                       return $text;
+               $xpath = new DOMXPath($dom);
+               $attr = "oembed";
+               
+               $xattr = oe_build_xpath("class","oembed");
+               $entries = $xpath->query("//span[$xattr]");
+               
+               $xattr = oe_build_xpath("rel","oembed");
+               foreach($entries as $e) {
+                       $href = $xpath->evaluate("a[$xattr]/@href", $e)->item(0)->nodeValue;
+                       if(!is_null($href)) $e->parentNode->replaceChild(new DOMText("[embed]".$href."[embed]"), $e);
+               }
+               return oe_get_inner_html( $dom->getElementsByTagName("body")->item(0) );
+       } else {
                return $text;
-       $xpath = new DOMXPath($dom);
-       $attr = "oembed";
-       
-       $xattr = oe_build_xpath("class","oembed");
-       $entries = $xpath->query("//span[$xattr]");
-       
-       $xattr = oe_build_xpath("rel","oembed");
-       foreach($entries as $e) {
-               $href = $xpath->evaluate("a[$xattr]/@href", $e)->item(0)->nodeValue;
-               if(!is_null($href)) $e->parentNode->replaceChild(new DOMText("[embed]".$href."[embed]"), $e);
-       }
-       return oe_get_inner_html( $dom->getElementsByTagName("body")->item(0) ); 
+       } 
 }
 
 ?>
\ No newline at end of file
index 661676bfd83d766b9ffb0ab1357cd2934392fa60..55edd072e4d9512e937178257f500b7ac1d99968 100644 (file)
--- a/index.php
+++ b/index.php
@@ -113,6 +113,13 @@ else
        check_config($a);
 
 
+$arr = array('app_menu' => $a->apps);
+
+call_hooks('app_menu', $arr);
+
+$a->apps = $arr['app_menu'];
+
+
 /**
  *
  * We have already parsed the server path into $->argc and $a->argv
@@ -132,10 +139,9 @@ else
  * further processing.
  */
 
-
 if(strlen($a->module)) {
        if(is_array($a->plugins) && in_array($a->module,$a->plugins) && file_exists("addon/{$a->module}/{$a->module}.php")) {
-               include("addon/{$a->module}/{$a->module}.php");
+               include_once("addon/{$a->module}/{$a->module}.php");
                if(function_exists($a->module . '_module'))
                        $a->module_loaded = true;
        }
@@ -155,6 +161,8 @@ if(strlen($a->module)) {
        }
 }
 
+
+
 /* initialise content region */
 
 if(! x($a->page,'content'))
diff --git a/mod/apps.php b/mod/apps.php
new file mode 100644 (file)
index 0000000..1d08d2e
--- /dev/null
@@ -0,0 +1,14 @@
+<?php
+
+
+function apps_content(&$a) {
+
+       $o .= '<h3>' . t('Applications') . '</h3>';
+
+       if($a->apps)
+               $o .= $a->apps;
+
+
+       return $o;
+
+}
\ No newline at end of file
index 3215ae90a04958352fac8b7eb3e74298e731e7fa..bdf6a6f974f4a19c0f99645c14d00ccdda14a4e5 100644 (file)
@@ -153,7 +153,8 @@ function display_content(&$a) {
                                }
                                if($item['last-child']) {
                                        $comment = replace_macros($cmnt_tpl,array(
-                                               '$return_path' => $_SESSION['return_url'],
+                                               '$return_path' => '', 
+                                               '$jsreload' => $_SESSION['return_url'],
                                                '$type' => 'wall-comment',
                                                '$id' => $item['item_id'],
                                                '$parent' => $item['parent'],
@@ -272,6 +273,7 @@ function display_content(&$a) {
                                '$owner_url' => $owner_url,
                                '$owner_photo' => $owner_photo,
                                '$owner_name' => $owner_name,
+                               '$plink' => get_plink($item),
                                '$drop' => $drop,
                                '$vote' => $likebuttons,
                                '$like' => $like,
index eaee7d5aca2f0002fa56f2dcd9f7fb69afc53782..28441eae8fbd589010019a86e3a637b56cd6332b 100644 (file)
@@ -19,15 +19,15 @@ function follow_post(&$a) {
                if(count($links)) {
                        foreach($links as $link) {
                                if($link['@attributes']['rel'] === NAMESPACE_DFRN)
-                                       $dfrn = $link['@attributes']['href'];
+                                       $dfrn = unamp($link['@attributes']['href']);
                                if($link['@attributes']['rel'] === 'salmon')
-                                       $notify = $link['@attributes']['href'];
+                                       $notify = unamp($link['@attributes']['href']);
                                if($link['@attributes']['rel'] === NAMESPACE_FEED)
-                                       $poll = $link['@attributes']['href'];
+                                       $poll = unamp($link['@attributes']['href']);
                                if($link['@attributes']['rel'] === 'http://microformats.org/profile/hcard')
-                                       $hcard = $link['@attributes']['href'];
+                                       $hcard = unamp($link['@attributes']['href']);
                                if($link['@attributes']['rel'] === 'http://webfinger.net/rel/profile-page')
-                                       $profile = $link['@attributes']['href'];
+                                       $profile = unamp($link['@attributes']['href']);
 
                        }
 
@@ -43,10 +43,10 @@ function follow_post(&$a) {
                                        if(strpos($link['@attributes']['href'],'@') === false) {
                                                if(isset($profile)) {
                                                        if($link['@attributes']['href'] !== $profile)
-                                                               $alias = $link['@attributes']['href'];
+                                                               $alias = unamp($link['@attributes']['href']);
                                                }
                                                else
-                                                       $profile = $link['@attributes']['href'];
+                                                       $profile = unamp($link['@attributes']['href']);
                                        }
                                }
                        }
@@ -103,7 +103,7 @@ function follow_post(&$a) {
                $ret = scrape_feed($url);
 
                if(count($ret) && ($ret['feed_atom'] || $ret['feed_rss'])) {
-                       $poll = ((x($ret,'feed_atom')) ? $ret['feed_atom'] : $ret['feed_rss']);
+                       $poll = ((x($ret,'feed_atom')) ? unamp($ret['feed_atom']) : unamp($ret['feed_rss']));
                        $vcard = array();
                        require_once('simplepie/simplepie.inc');
                    $feed = new SimplePie();
@@ -116,27 +116,35 @@ function follow_post(&$a) {
                        $vcard['photo'] = $feed->get_image_url();
                        $author = $feed->get_author();
                        if($author) {                   
-                               $vcard['fn'] = trim($author->get_name());
-                               $vcard['nick'] = strtolower($vcard['fn']);
+                               $vcard['fn'] = unxmlify(trim($author->get_name()));
+                               if(! $vcard['fn'])
+                                       $vcard['fn'] = trim(unxmlify($author->get_email()));
+                               if(strpos($vcard['fn'],'@') !== false)
+                                       $vcard['fn'] = substr($vcard['fn'],0,strpos($vcard['fn'],'@'));
+                               $vcard['nick'] = strtolower(notags(unxmlify($vcard['fn'])));
                                if(strpos($vcard['nick'],' '))
                                        $vcard['nick'] = trim(substr($vcard['nick'],0,strpos($vcard['nick'],' ')));
-                               $email = $author->get_email();
+                               $email = unxmlify($author->get_email());
                        }
                        else {
                                $item = $feed->get_item(0);
                                if($item) {
                                        $author = $item->get_author();
                                        if($author) {                   
-                                               $vcard['fn'] = trim($author->get_name());
-                                               $vcard['nick'] = strtolower($vcard['fn']);
+                                               $vcard['fn'] = trim(unxmlify($author->get_name()));
+                                               if(! $vcard['fn'])
+                                                       $vcard['fn'] = trim(unxmlify($author->get_email()));
+                                               if(strpos($vcard['fn'],'@') !== false)
+                                                       $vcard['fn'] = substr($vcard['fn'],0,strpos($vcard['fn'],'@'));
+                                               $vcard['nick'] = strtolower(unxmlify($vcard['fn']));
                                                if(strpos($vcard['nick'],' '))
                                                        $vcard['nick'] = trim(substr($vcard['nick'],0,strpos($vcard['nick'],' ')));
-                                               $email = $author->get_email();
+                                               $email = unxmlify($author->get_email());
                                        }
                                        if(! $vcard['photo']) {
                                                $rawmedia = $item->get_item_tags('http://search.yahoo.com/mrss/','thumbnail');
                                                if($rawmedia && $rawmedia[0]['attribs']['']['url'])
-                                                       $vcard['photo'] = $rawmedia[0]['attribs']['']['url'];
+                                                       $vcard['photo'] = unxmlify($rawmedia[0]['attribs']['']['url']);
                                        }
                                }
                        }
@@ -150,6 +158,9 @@ function follow_post(&$a) {
 
        logger('follow: poll=' . $poll . ' notify=' . $notify . ' profile=' . $profile . ' vcard=' . print_r($vcard,true));
 
+       $vcard['fn'] = notags($vcard['fn']);
+       $vcard['nick'] = notags($vcard['nick']);
+
        // do we have enough information?
        
        if(! ((x($vcard['fn'])) && ($poll) && ($profile))) {
@@ -157,6 +168,7 @@ function follow_post(&$a) {
                goaway($_SESSION['return_url']);
        }
 
+
        if(! $notify) {
                notice( t('Limited profile. This person will be unable to receive direct/personal notifications from you.') . EOL);
        }
index 2cc2b9eb2cd9a1564cc8cedbb7e0224283a550c3..8c6b181c0d557dfdbd4631e45fb09359d0375877 100644 (file)
@@ -35,7 +35,9 @@ function item_post(&$a) {
                );
                if(! count($r)) {
                        notice( t('Unable to locate original post.') . EOL);
-                       goaway($a->get_baseurl() . "/" . $_POST['return'] );
+                       if(x($_POST,'return')) 
+                               goaway($a->get_baseurl() . "/" . $_POST['return'] );
+                       killme();
                }
                $parent_item = $r[0];
                if($parent_item['contact-id'] && $uid) {
@@ -53,7 +55,9 @@ function item_post(&$a) {
 
        if(! can_write_wall($a,$profile_uid)) {
                notice( t('Permission denied.') . EOL) ;
-               return;
+               if(x($_POST,'return')) 
+                       goaway($a->get_baseurl() . "/" . $_POST['return'] );
+               killme();
        }
 
        $user = null;
@@ -92,8 +96,9 @@ function item_post(&$a) {
 
        if(! strlen($body)) {
                notice( t('Empty post discarded.') . EOL );
-               goaway($a->get_baseurl() . "/" . $_POST['return'] );
-
+               if(x($_POST,'return')) 
+                       goaway($a->get_baseurl() . "/" . $_POST['return'] );
+               killme();
        }
 
        // get contact info for poster
@@ -429,10 +434,11 @@ function item_post(&$a) {
                        }
                }
 
-               $r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s', `changed` = '%s', `last-child` = 1, `visible` = 1
+               $r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s', `plink` = '%s', `changed` = '%s', `last-child` = 1, `visible` = 1
                        WHERE `id` = %d LIMIT 1",
                        intval($parent),
                        dbesc(($parent == $post_id) ? $uri : $parent_item['uri']),
+                       dbesc($a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id),
                        dbesc(datetime_convert()),
                        intval($post_id)
                );
@@ -490,10 +496,17 @@ function item_post(&$a) {
                }
        }
 
-       if((x($_POST,'return')) && strlen($_POST['return']))
+       logger('post_complete');
+       if((x($_POST,'return')) && strlen($_POST['return'])) {
+               logger('return: ' . $_POST['return']);
                goaway($a->get_baseurl() . "/" . $_POST['return'] );
-
+       }
        $json = array('success' => 1);
+       if(x($_POST,'jsreload') && strlen($_POST['jsreload']))
+               $json['reload'] = $a->get_baseurl() . '/' . $_POST['jsreload'];
+
+       logger('post_json: ' . print_r($json,true), LOGGER_DEBUG);
+
        echo json_encode($json);
        killme();
        // NOTREACHED
@@ -544,7 +557,7 @@ function item_content(&$a) {
                        // generate a resource-id and therefore aren't intimately linked to the item. 
 
                        if(strlen($item['resource-id'])) {
-                               $q("DELETE FROM `photo` WHERE `resource-id` = '%s' AND `uid` = %d ",
+                               q("DELETE FROM `photo` WHERE `resource-id` = '%s' AND `uid` = %d ",
                                        dbesc($item['resource-id']),
                                        intval($item['uid'])
                                );
index 7615f22bec727ff4ec22b63ba3e8d83296f56221..ef3be2c5e9cd05a7e5e7a89cff96c1c480c16bfc 100644 (file)
@@ -2,11 +2,6 @@
 
 require_once('include/acl_selectors.php');
 
-function message_init(&$a) {
-
-
-}
-
 function message_post(&$a) {
 
        if(! local_user()) {
@@ -69,6 +64,43 @@ function message_post(&$a) {
        if(count($r))
                $post_id = $r[0]['id'];
 
+       /**
+        *
+        * When a photo was uploaded into the message using the (profile wall) ajax 
+        * uploader, The permissions are initially set to disallow anybody but the
+        * owner from seeing it. This is because the permissions may not yet have been
+        * set for the post. If it's private, the photo permissions should be set
+        * appropriately. But we didn't know the final permissions on the post until
+        * now. So now we'll look for links of uploaded messages that are in the
+        * post and set them to the same permissions as the post itself.
+        *
+        */
+
+       $match = null;
+
+       if(preg_match_all("/\[img\](.+?)\[\/img\]/",$body,$match)) {
+               $images = $match[1];
+               if(count($images)) {
+                       foreach($images as $image) {
+                               if(! stristr($image,$a->get_baseurl() . '/photo/'))
+                                       continue;
+                               $image_uri = substr($image,strrpos($image,'/') + 1);
+                               $image_uri = substr($image_uri,0, strpos($image_uri,'-'));
+                               $r = q("UPDATE `photo` SET `allow_cid` = '%s'
+                                       WHERE `resource-id` = '%s' AND `album` = '%s' AND `uid` = %d ",
+                                       dbesc('<' . $recipient . '>'),
+                                       dbesc($image_uri),
+                                       dbesc( t('Wall Photos')),
+                                       intval(local_user())
+                               ); 
+                       }
+               }
+       }
+
+
+
+
+
        $php_path = ((strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
        
        if($post_id) {
@@ -80,7 +112,6 @@ function message_post(&$a) {
                notice( t('Message could not be sent.') . EOL );
        }
        return;
-
 }
 
 function message_content(&$a) {
index f09b302e9bbdece1fbc10807856a38aafdcfed0d..79a2f2b3896c6490acc789abc7b705b197ff3e7d 100644 (file)
@@ -39,22 +39,22 @@ function network_content(&$a, $update = 0) {
        $group = 0;
 
        $nouveau = false;
+       require_once('include/acl_selectors.php');
 
-       if(! $update) {
-               $o .= '<script> $(document).ready(function() { $(\'#nav-network-link\').addClass(\'nav-selected\'); });</script>';
+       if(($a->argc > 2) && $a->argv[2] === 'new')
+               $nouveau = true;
 
-               if(($a->argc > 2) && $a->argv[2] === 'new')
+       if($a->argc > 1) {
+               if($a->argv[1] === 'new')
                        $nouveau = true;
-
-                       // pull out the group here because the updater might have different args
-               if($a->argc > 1) {
-                       if($a->argv[1] === 'new')
-                               $nouveau = true;
-                       else {
-                               $group = intval($a->argv[1]);
-                               $group_acl = array('allow_gid' => '<' . $group . '>');
-                       }
+               else {
+                       $group = intval($a->argv[1]);
+                       $group_acl = array('allow_gid' => '<' . $group . '>');
                }
+       }
+
+       if(! $update) {
+               $o .= '<script> $(document).ready(function() { $(\'#nav-network-link\').addClass(\'nav-selected\'); });</script>';
 
                $_SESSION['return_url'] = $a->cmd;
 
@@ -68,7 +68,6 @@ function network_content(&$a, $update = 0) {
                        '$nickname' => $a->user['nickname']
                ));
 
-               require_once('include/acl_selectors.php');
 
                $tpl = load_view_file("view/jot.tpl");
                
@@ -106,10 +105,10 @@ function network_content(&$a, $update = 0) {
                // filtering by group and also you aren't writing a comment (the last
                // criteria is discovered in javascript).
 
-               if($a->pager['start'] == 0 && $a->argc == 1) {
                        $o .= '<div id="live-network"></div>' . "\r\n";
-                       $o .= "<script> var profile_uid = " . $_SESSION['uid'] . "; </script>\r\n";
-               }
+                       $o .= "<script> var profile_uid = " . $_SESSION['uid'] 
+                               . "; var netargs = '" . substr($a->cmd,8) 
+                               . "'; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
 
        }
 
@@ -134,6 +133,8 @@ function network_content(&$a, $update = 0) {
                        intval($_SESSION['uid'])
                );
                if(! count($r)) {
+                       if($update)
+                               killme();
                        notice( t('No such group') . EOL );
                        goaway($a->get_baseurl() . '/network');
                        return; // NOTREACHED
@@ -340,7 +341,8 @@ function network_content(&$a, $update = 0) {
 
                        if($item['last-child']) {
                                $comment = replace_macros($cmnt_tpl,array(
-                                       '$return_path' => '', // $_SESSION['return_url'],
+                                       '$return_path' => '', 
+                                       '$jsreload' => '', // $_SESSION['return_url'],
                                        '$type' => 'net-comment',
                                        '$id' => $item['item_id'],
                                        '$parent' => $item['parent'],
@@ -425,6 +427,7 @@ function network_content(&$a, $update = 0) {
                                '$owner_url' => $owner_url,
                                '$owner_photo' => $owner_photo,
                                '$owner_name' => $owner_name,
+                               '$plink' => get_plink($item),
                                '$drop' => $drop,
                                '$vote' => $likebuttons,
                                '$like' => $like,
index 9acde458df4df001efcc35fee5d818dd5a2744f7..27cb1beb1f12a009020541057036bb43046224f3 100644 (file)
@@ -1048,7 +1048,8 @@ function photos_content(&$a) {
                                if($can_post || can_write_wall($a,$owner_uid)) {
                                        if($link_item['last-child']) {
                                                $o .= replace_macros($cmnt_tpl,array(
-                                                       '$return_path' => $return_url,
+                                                       '$return_path' => '', 
+                                                       '$jsreload' => $return_url,
                                                        '$type' => 'wall-comment',
                                                        '$id' => $link_item['id'],
                                                        '$parent' => $link_item['id'],
@@ -1087,7 +1088,8 @@ function photos_content(&$a) {
                                if($can_post || can_write_wall($a,$owner_uid)) {
                                        if($link_item['last-child']) {
                                                $o .= replace_macros($cmnt_tpl,array(
-                                                       '$return_path' => $return_url,
+                                                       '$return_path' => '',
+                                                       '$jsreload' => $return_url,
                                                        '$type' => 'wall-comment',
                                                        '$id' => $link_item['id'],
                                                        '$parent' => $link_item['id'],
@@ -1115,7 +1117,8 @@ function photos_content(&$a) {
 
                                                if($item['last-child']) {
                                                        $comment = replace_macros($cmnt_tpl,array(
-                                                               '$return_path' => $return_url,
+                                                               '$return_path' => '',
+                                                               '$jsreload' => $return_url,
                                                                '$type' => 'wall-comment',
                                                                '$id' => $item['item_id'],
                                                                '$parent' => $item['parent'],
index 57abc479d72fd344fd1e1692473a952dea67bf5b..46d13298e004e6eb22c35f1401be1f6c41f4437d 100644 (file)
@@ -82,7 +82,6 @@ function profile_content(&$a, $update = 0) {
 
        $is_owner = ((local_user()) && (local_user() == $a->profile['profile_uid']) ? true : false);
        
-
        if(! $update) {
                if(x($_GET,'tab'))
                        $tab = notags(trim($_GET['tab']));
@@ -161,11 +160,11 @@ function profile_content(&$a, $update = 0) {
                // This is ugly, but we can't pass the profile_uid through the session to the ajax updater,
                // because browser prefetching might change it on us. We have to deliver it with the page.
 
-               if($tab === 'posts' && (! $a->pager['start'])) {
+               if($tab === 'posts') {
                        $o .= '<div id="live-profile"></div>' . "\r\n";
-                       $o .= "<script> var profile_uid = " . $a->profile['profile_uid'] . "; </script>\r\n";
+                       $o .= "<script> var profile_uid = " . $a->profile['profile_uid'] 
+                               . "; var netargs = ''; var profile_page = " . $a->pager['page'] . "; </script>\r\n";
                }
-
        }
 
        // Construct permissions
@@ -293,7 +292,8 @@ function profile_content(&$a, $update = 0) {
                                }
                                if($item['last-child']) {
                                        $comment = replace_macros($cmnt_tpl,array(
-                                               '$return_path' => '', // $_SESSION['return_url'],
+                                               '$return_path' => '', 
+                                               '$jsreload' => '', // $_SESSION['return_url'],
                                                '$type' => 'wall-comment',
                                                '$id' => $item['item_id'],
                                                '$parent' => $item['parent'],
@@ -371,6 +371,7 @@ function profile_content(&$a, $update = 0) {
                                '$lock' => $lock,
                                '$location' => $location, 
                                '$indent' => $indent, 
+                               '$plink' => get_plink($item),
                                '$drop' => $drop,
                                '$like' => $like,
                                '$vote' => $likebuttons,
index 35e968dba994a61aaf50ffec1ba37d959d710f24..cf9f11f586f734d4967a12fbd2c094ac5e39549c 100644 (file)
@@ -3,7 +3,7 @@
 // See update_profile.php for documentation
 
 require_once('mod/network.php');
-
+require_once('include/group.php');
 
 function update_network_content(&$a) {
 
index 185e17bccf4b56c47d9689e1d83f392212cc3921..c3ba02b7db9531d63ff49c815baec37827e21798 100644 (file)
@@ -9226,6 +9226,7 @@ class SimplePie_Misc
 
        function absolutize_url($relative, $base)
        {
+return $relative;
                $iri = SimplePie_IRI::absolutize(new SimplePie_IRI($base), $relative);
                return $iri->get_iri();
        }
index e46de5333082869b9bdab2576a554a2f9d01a966..c6a75fc13aa5383080f25558bb2030776b773178 100644 (file)
Binary files a/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif and b/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif differ
index 84eaebe185c947728e7897b0197aede140d15a64..131014d4a4424864b81f85abc19463c685066cb1 100644 (file)
@@ -370,3 +370,7 @@ function update_1037() {
 
 }
 
+function update_1038() {
+ q("ALTER TABLE `item` ADD `plink` CHAR( 255 ) NOT NULL AFTER `target` ");
+}
+
index 4d24f7a6f603c33a21c93b61d724860ff0fe28a2..4112d9506a77cc3d8b658468cd344d0b099b772c 100644 (file)
@@ -4,6 +4,7 @@
 <style>
        textarea { width: 100% }
        .no { background: #ffdddd; }
+       label { border-bottom: 1px solid #888; }
 </style>
 </head>
 <body> 
@@ -78,14 +79,13 @@ function strhex($string) {
 
 
 echo "<h1>Translator</h1>";
-echo "<p>Utility to translate <code>string.php</code> file.";
-echo " Need write permission to language file you want to modify</p>";
+echo "<small>Utility to translate <code>string.php</code> file.";
+echo " Need write permission to language file you want to modify</small>";
 echo "<p>Installed languages:";
-echo "<ul>";
 foreach($LANGS as $l){
-       echo "<li><a href='?lang=$l'>$l</a></li>";
+       echo "<a href='?lang=$l'>$l</a>, ";
 }
-echo "</ul></p>";
+echo "</p>";
 
 
 $strings['en'] = loadstrings();
@@ -156,7 +156,7 @@ if (isset($_GET['lang'])){
                
                $istranslate = $translation != '' ? 'yes':'no';
                echo "<dl class='$istranslate'>";
-               echo "<dt><label for='$id'>".htmlspecialchars($v)."</label></dt>";
+               echo "<dt><pre><label for='$id'>".htmlspecialchars($v)."</label></pre></dt>";
                echo "<dd><textarea id='$id' name='$id'>$translation</textarea></dd>";
                echo "</dl>";
        }
index b6360e971822aaa47d8fa185f7f9485d7447c2b2..a7ef2361ac50f2323c3cb45a70e9014a477bf625 100644 (file)
@@ -57,18 +57,6 @@ $a->strings['December'] = 'December';
 $a->strings['Birthdays this week:'] = 'Birthdays this week:';
 $a->strings["\x28Adjusted for local time\x29"] = "\x28Adjusted for local time\x29";
 $a->strings['[today]'] = '[today]';
-$a->strings['Unable to locate original post.'] = 'Unable to locate original post.';
-$a->strings['Empty post discarded.'] = 'Empty post discarded.';
-$a->strings['Wall Photos'] = 'Wall Photos';
-$a->strings[" commented on your item at "] = " commented on your item at ";
-$a->strings[" posted on your profile wall at "] = " posted on your profile wall at ";
-$a->strings['System error. Post not saved.'] = 'System error. Post not saved.';
-$a->strings['This message was sent to you by '] = 'This message was sent to you by ';
-$a->strings[', a member of the Friendika social network.'] = ', a member of the Friendika social network.';
-$a->strings['You may visit them online at'] = 'You may visit them online at';
-$a->strings['Please contact the sender by replying to this post if you do not wish to receive these messages.'] = 'Please contact the sender by replying to this post if you do not wish to receive these messages.';
-$a->strings['posted an update.'] = 'posted an update.';
-$a->strings['Item not found.'] = 'Item not found.';
 $a->strings["Invite Friends"] = "Invite Friends";
 $a->strings['Connect/Follow [profile address]'] = 'Connect/Follow [profile address]';
 $a->strings['Example: bob@example.com, http://example.com/barbara'] = 'Example: bob@example.com, http://example.com/barbara';
@@ -130,7 +118,7 @@ $a->strings['Unable to set your contact credentials on our system.'] = 'Unable t
 $a->strings['Unable to update your contact profile details on our system'] = 'Unable to update your contact profile details on our system';
 $a->strings["Connection accepted at "] = "Connection accepted at ";
 $a->strings['Administrator'] = 'Administrator';
-$a->strings['New mail received at '] = 'New mail received at ';
+$a->strings['noreply'] = 'noreply';
 $a->strings[' commented on an item at '] = ' commented on an item at ';
 $a->strings[" commented on an item at "] = " commented on an item at ";
 $a->strings[' welcomes '] = ' welcomes ';
@@ -173,6 +161,7 @@ $a->strings['Your profile address:'] = 'Your profile address:';
 $a->strings['Submit Request'] = 'Submit Request';
 $a->strings['Cancel'] = 'Cancel';
 $a->strings['Global Directory'] = 'Global Directory';
+$a->strings['Item not found.'] = 'Item not found.';
 $a->strings['Private Message'] = 'Private Message';
 $a->strings['This is you'] = 'This is you';
 $a->strings['View $name\'s profile'] = 'View $name\'s profile';
@@ -228,6 +217,17 @@ $a->strings['Your message:'] = 'Your message:';
 $a->strings['Please join my social network on '] = 'Please join my social network on ';
 $a->strings['To accept this invitation, please visit:'] = 'To accept this invitation, please visit:';
 $a->strings['Once you have registered, please connect with me via my profile page at:'] = 'Once you have registered, please connect with me via my profile page at:';
+$a->strings['Unable to locate original post.'] = 'Unable to locate original post.';
+$a->strings['Empty post discarded.'] = 'Empty post discarded.';
+$a->strings['Wall Photos'] = 'Wall Photos';
+$a->strings[" commented on your item at "] = " commented on your item at ";
+$a->strings[" posted on your profile wall at "] = " posted on your profile wall at ";
+$a->strings['System error. Post not saved.'] = 'System error. Post not saved.';
+$a->strings['This message was sent to you by '] = 'This message was sent to you by ';
+$a->strings[', a member of the Friendika social network.'] = ', a member of the Friendika social network.';
+$a->strings['You may visit them online at'] = 'You may visit them online at';
+$a->strings['Please contact the sender by replying to this post if you do not wish to receive these messages.'] = 'Please contact the sender by replying to this post if you do not wish to receive these messages.';
+$a->strings['posted an update.'] = 'posted an update.';
 $a->strings['photo'] = 'photo';
 $a->strings['status'] = 'status';
 $a->strings['likes'] = 'likes';
@@ -480,7 +480,13 @@ $a->strings['Uncertain'] = 'Uncertain';
 $a->strings['Complicated'] = 'Complicated';
 $a->strings['Don\'t care'] = 'Don\'t care';
 $a->strings['Ask me'] = 'Ask me';
-$a->strings['Facebook status update failed.'] = 'Facebook status update failed.';
+$a->strings['Facebook disabled'] = 'Facebook disabled';
+$a->strings['Facebook API key is missing.'] = 'Facebook API key is missing.';
+$a->strings['Facebook Connect'] = 'Facebook Connect';
+$a->strings['Install Facebook posting'] = 'Install Facebook posting';
+$a->strings['Remove Facebook posting'] = 'Remove Facebook posting';
+$a->strings['Post to Facebook'] = 'Post to Facebook';
+$a->strings['Image: '] = 'Image: ';
 $a->strings['Select files to upload: '] = 'Select files to upload: ';
 $a->strings['Use the following controls only if the Java uploader [above] fails to launch.'] = 'Use the following controls only if the Java uploader [above] fails to launch.';
 $a->strings['Upload a file'] = 'Upload a file';
@@ -496,7 +502,7 @@ $a->strings['Enable Randplace Plugin'] = 'Enable Randplace Plugin';
 $a->strings['No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation.'] = 'No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation.';
 $a->strings['OAuth Consumer Key'] = 'OAuth Consumer Key';
 $a->strings['OAuth Consumer Secret'] = 'OAuth Consumer Secret';
-$a->strings['Base API Path (remember the trailing /] = 'Base API Path (remember the trailing /;
+$a->strings["Base API Path \x28remember the trailing /\x29"] = "Base API Path \x28remember the trailing /\x29";
 $a->strings['To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet.'] = 'To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet.';
 $a->strings['Log in with StatusNet'] = 'Log in with StatusNet';
 $a->strings['Copy the security code from StatusNet here'] = 'Copy the security code from StatusNet here';
@@ -504,6 +510,7 @@ $a->strings['Currently connected to: '] = 'Currently connected to: ';
 $a->strings['If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well.'] = 'If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well.';
 $a->strings['Send public postings to StatusNet'] = 'Send public postings to StatusNet';
 $a->strings['Clear OAuth configuration'] = 'Clear OAuth configuration';
+$a->strings['Post to Twitter'] = 'Post to Twitter';
 $a->strings['Twitter Posting Settings'] = 'Twitter Posting Settings';
 $a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'No consumer key pair for Twitter found. Please contact your site administrator.';
 $a->strings['At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.';
@@ -658,7 +665,6 @@ $a->strings['America/Managua'] = 'America/Managua';
 $a->strings['America/Manaus'] = 'America/Manaus';
 $a->strings['America/Marigot'] = 'America/Marigot';
 $a->strings['America/Martinique'] = 'America/Martinique';
-$a->strings['America/Matamoros'] = 'America/Matamoros';
 $a->strings['America/Mazatlan'] = 'America/Mazatlan';
 $a->strings['America/Mendoza'] = 'America/Mendoza';
 $a->strings['America/Menominee'] = 'America/Menominee';
@@ -677,7 +683,6 @@ $a->strings['America/Nome'] = 'America/Nome';
 $a->strings['America/Noronha'] = 'America/Noronha';
 $a->strings['America/North_Dakota/Center'] = 'America/North_Dakota/Center';
 $a->strings['America/North_Dakota/New_Salem'] = 'America/North_Dakota/New_Salem';
-$a->strings['America/Ojinaga'] = 'America/Ojinaga';
 $a->strings['America/Panama'] = 'America/Panama';
 $a->strings['America/Pangnirtung'] = 'America/Pangnirtung';
 $a->strings['America/Paramaribo'] = 'America/Paramaribo';
@@ -694,7 +699,6 @@ $a->strings['America/Regina'] = 'America/Regina';
 $a->strings['America/Resolute'] = 'America/Resolute';
 $a->strings['America/Rio_Branco'] = 'America/Rio_Branco';
 $a->strings['America/Rosario'] = 'America/Rosario';
-$a->strings['America/Santa_Isabel'] = 'America/Santa_Isabel';
 $a->strings['America/Santarem'] = 'America/Santarem';
 $a->strings['America/Santiago'] = 'America/Santiago';
 $a->strings['America/Santo_Domingo'] = 'America/Santo_Domingo';
@@ -723,7 +727,6 @@ $a->strings['America/Yellowknife'] = 'America/Yellowknife';
 $a->strings['Antarctica/Casey'] = 'Antarctica/Casey';
 $a->strings['Antarctica/Davis'] = 'Antarctica/Davis';
 $a->strings['Antarctica/DumontDUrville'] = 'Antarctica/DumontDUrville';
-$a->strings['Antarctica/Macquarie'] = 'Antarctica/Macquarie';
 $a->strings['Antarctica/Mawson'] = 'Antarctica/Mawson';
 $a->strings['Antarctica/McMurdo'] = 'Antarctica/McMurdo';
 $a->strings['Antarctica/Palmer'] = 'Antarctica/Palmer';
@@ -786,7 +789,6 @@ $a->strings['Asia/Makassar'] = 'Asia/Makassar';
 $a->strings['Asia/Manila'] = 'Asia/Manila';
 $a->strings['Asia/Muscat'] = 'Asia/Muscat';
 $a->strings['Asia/Nicosia'] = 'Asia/Nicosia';
-$a->strings['Asia/Novokuznetsk'] = 'Asia/Novokuznetsk';
 $a->strings['Asia/Novosibirsk'] = 'Asia/Novosibirsk';
 $a->strings['Asia/Omsk'] = 'Asia/Omsk';
 $a->strings['Asia/Oral'] = 'Asia/Oral';
index 885d735eda1b473134dcb780df77e50466cda687..dabbd6e87bc4c6b7f64acd58dd2ab889b6443be0 100644 (file)
@@ -4,6 +4,7 @@
                                <input type="hidden" name="profile_uid" value="$profile_uid" />
                                <input type="hidden" name="parent" value="$parent" />
                                <input type="hidden" name="return" value="$return_path" />
+                               <input type="hidden" name="jsreload" value="$jsreload" />
 
                                <div class="comment-edit-photo" id="comment-edit-photo-$id" >
                                        <a class="comment-edit-photo-link" href="$mylink" title="$mytitle"><img class="my-comment-photo" src="$myphoto" alt="$mytitle" title="$mytitle" /></a>
index b2d914f248bacda778c7923aa3dd126d3fd74baf..32c5a651a27ee3979c23533677ae79fd93b5ec1d 100644 (file)
@@ -7,7 +7,7 @@
 <body>
 <table style="border:1px solid #ccc">
        <tbody>
-       <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$hostname/images/ff-32.jpg'><span style="padding:7px;">Friendika</span></td></tr>
+       <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/ff-32.jpg'><span style="padding:7px;">Friendika</span></td></tr>
 
        <tr><td style="padding-top:22px;" colspan="2">Du hast eine neue private Nachricht von '$from' auf '$siteName' erhhalten.</td></tr>
 
@@ -16,7 +16,7 @@
                <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
        <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
        <tr><td style="padding-right:22px;">$htmlversion</td></tr>
-       <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Bitte melde dich unter $siteurl an um deine privaten Nachrichte zu lesen und zu beantworten.</td></tr>
+       <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Bitte melde dich unter <a href="$siteurl"$siteurl</a> an um deine privaten Nachrichte zu lesen und zu beantworten.</td></tr>
        <tr><td></td><td>Viele Grüße,</td></tr>
        <tr><td></td><td>$siteName Administrator</td></tr>
        </tbody>
index 3d2567f62737c36744379d2b7945cd65d1e6f837..174e6c985f15aaee715dd9e005eaeb151afe35a7 100644 (file)
@@ -6,14 +6,14 @@ tinyMCE.init({
        theme : "advanced",
        mode : "specific_textareas",
        editor_selector: /(profile-jot-text|prvmail-text)/,
-       plugins : "bbcode",
+       plugins : "bbcode,paste",
        theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor",
        theme_advanced_buttons2 : "",
        theme_advanced_buttons3 : "",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "center",
-       theme_advanced_styles : "Code=codeStyle;Quote=quoteStyle",
-       content_css : "bbcode.css",
+       theme_advanced_blockformats : "blockquote,code",
+       paste_text_sticky : true,
        entity_encoding : "raw",
        add_unload_trigger : false,
        remove_linebreaks : false,
@@ -44,8 +44,12 @@ tinyMCE.init({
                                $('#character-counter').addClass('red');
                        }
                        $('#character-counter').text(text);
-               });
-       }
+       });
+
+               ed.onInit.add(function(ed) {
+                       ed.pasteAsPlainText = true;
+               });
+       }
 });
 
 </script>
index bc31fab78a1cb990eec844f4fd10418e14a85d93..ef6892e8d06ac511b32784e469f111b4a393bc3b 100644 (file)
@@ -57,6 +57,18 @@ $a->strings['December'] = 'Dezember';
 $a->strings['Birthdays this week:'] = 'Geburtstage diese Woche:';
 $a->strings["\x28Adjusted for local time\x29"] = "\x28an die lokale Zeit angepasst\x29";
 $a->strings['[today]'] = '[heute]';
+$a->strings['Unable to locate original post.'] = 'Unable to locate original post.';
+$a->strings['Empty post discarded.'] = 'Empty post discarded.';
+$a->strings['Wall Photos'] = 'Wall Photos';
+$a->strings[" commented on your item at "] = " commented on your item at ";
+$a->strings[" posted on your profile wall at "] = " posted on your profile wall at ";
+$a->strings['System error. Post not saved.'] = 'System error. Post not saved.';
+$a->strings['This message was sent to you by '] = 'This message was sent to you by ';
+$a->strings[', a member of the Friendika social network.'] = ', a member of the Friendika social network.';
+$a->strings['You may visit them online at'] = 'You may visit them online at';
+$a->strings['Please contact the sender by replying to this post if you do not wish to receive these messages.'] = 'Please contact the sender by replying to this post if you do not wish to receive these messages.';
+$a->strings['posted an update.'] = 'posted an update.';
+$a->strings['Item not found.'] = 'Item not found.';
 $a->strings["Invite Friends"] = "Freunde einladen";
 $a->strings['Connect/Follow [profile address]'] = 'Kontaktiere/Folge [Profil Adresse]';
 $a->strings['Example: bob@example.com, http://example.com/barbara'] = 'Beispiel: bob@example.com, http://example.com/barbara';
@@ -76,6 +88,9 @@ $a->strings['Contact not found.'] = 'Kontakt nicht gefunden.';
 $a->strings['Mutual Friendship'] = 'Beidseitige Freundschaft';
 $a->strings['is a fan of yours'] = 'ist ein Fan von dir';
 $a->strings['you are a fan of'] = 'du bist Fan von';
+$a->strings['Never'] = 'Niemals';
+$a->strings["\x28Update was successful\x29"] = "\x28Aktualisierung war erfolgreich\x29";
+$a->strings["\x28Update was not successful\x29"] = "\x28Aktualisierung war nicht erfolgreich\x29";
 $a->strings['Contact Editor'] = 'Kontakt Editor';
 $a->strings['Visit $name\'s profile'] = 'Besuche das Profil von $name';
 $a->strings['Block/Unblock contact'] = 'Kontakt blockieren/freischalten';
@@ -83,7 +98,6 @@ $a->strings['Ignore contact'] = 'Ignoriere den Kontakt';
 $a->strings['Delete contact'] = 'Lösche den Kontakt';
 $a->strings['Last updated: '] = 'Letzte Aktualisierung: ';
 $a->strings['Update public posts: '] = 'Aktualisierung öffentlicher Nachrichten: ';
-$a->strings['Never'] = 'Niemals';
 $a->strings['Update now'] = 'Jetzt aktualisieren';
 $a->strings['Unblock this contact'] = 'Blockade dieses Kontakts aufheben';
 $a->strings['Block this contact'] = 'Diesen Kontakt blockieren';
@@ -159,7 +173,6 @@ $a->strings['Your profile address:'] = 'Deine Profiladresse:';
 $a->strings['Submit Request'] = 'Anfrage abschicken';
 $a->strings['Cancel'] = 'Abbrechen';
 $a->strings['Global Directory'] = 'Weltweites Verzeichnis';
-$a->strings['Item not found.'] = 'Eintrag nicht gefunden.';
 $a->strings['Private Message'] = 'Private Nachricht';
 $a->strings['This is you'] = 'Das bist du';
 $a->strings['View $name\'s profile'] = 'Profile von $name';
@@ -215,16 +228,6 @@ $a->strings['Your message:'] = 'Deine Nachricht:';
 $a->strings['Please join my social network on '] = 'Bitte trete meinem sozialen Netzwerk bei ';
 $a->strings['To accept this invitation, please visit:'] = 'Um diese Einladung anzunehmen beuche bitte:';
 $a->strings['Once you have registered, please connect with me via my profile page at:'] = 'Sobald du registriert bist kontaktiere mich bitte auf meiner Profilseite:';
-$a->strings['Unable to locate original post.'] = 'Konnte das original Posting nicht finden.';
-$a->strings['Empty post discarded.'] = 'Leere Nachricht verworfen.';
-$a->strings['Wall Photos'] = 'Pinnwand Fotos';
-$a->strings[" commented on your item at "] = " kommentierte eines deiner Postings auf ";
-$a->strings[" posted on your profile wall at "] = " schrieb an deine Profilwand auf ";
-$a->strings['This message was sent to you by '] = 'This message was sent to you by ';
-$a->strings[', a member of the Friendika social network.'] = ', a member of the Friendika social network.';
-$a->strings['You may visit them online at'] = 'You may visit them online at';
-$a->strings['Please contact the sender by replying to this post if you do not wish to receive these messages.'] = 'Please contact the sender by replying to this post if you do not wish to receive these messages.';
-$a->strings['posted an update.'] = 'posted an update.';
 $a->strings['photo'] = 'Foto';
 $a->strings['status'] = 'Status';
 $a->strings['likes'] = 'mag das';
@@ -356,7 +359,9 @@ $a->strings['Register'] = 'Registrieren';
 $a->strings['Please login.'] = 'Bitte melde dich an.';
 $a->strings['Registration revoked for '] = 'Registration zurückgezogen ';
 $a->strings['Account approved.'] = 'Account freigegeben.';
-$a->strings['View in context'] = 'Im Kontext betrachten';
+$a->strings['Remove My Account'] = 'Remove My Account';
+$a->strings['This will completely remove your account. Once this has been done it is not recoverable.'] = 'This will completely remove your account. Once this has been done it is not recoverable.';
+$a->strings['Please enter your password for verification:'] = 'Please enter your password for verification:';
 $a->strings['Passwords do not match. Password unchanged.'] = 'Die Passwörter stimmen nicht überein. Das Passwort bleibt unverändert.';
 $a->strings['Empty passwords are not allowed. Password unchanged.'] = 'Leere Passwörter sind nicht erlaubt. Passwort bleibt unverändert.';
 $a->strings['Password changed.'] = 'Passwort ändern.';
@@ -364,6 +369,7 @@ $a->strings['Password update failed. Please try again.'] = 'Aktualisierung des P
 $a->strings[' Please use a shorter name.'] = ' Bitte verwende einen kürzeren Namen.';
 $a->strings[' Name too short.'] = ' Name ist zu kurz.';
 $a->strings[' Not valid email.'] = ' Keine gültige EMail.';
+$a->strings[' Cannot change to that email.'] = ' Cannot change to that email.';
 $a->strings['Settings updated.'] = 'Einstellungen aktualisiert.';
 $a->strings['Plugin Settings'] = 'Plugin Einstellungen';
 $a->strings['Account Settings'] = 'Account Einstellungen';
@@ -487,6 +493,23 @@ $a->strings['File has an invalid extension, it should be one of '] = 'Die Dateie
 $a->strings['Upload was cancelled, or server error encountered'] = 'Upload abgebrochen oder Serverfehler aufgetreten';
 $a->strings['Randplace Settings'] = 'Randplace Settings';
 $a->strings['Enable Randplace Plugin'] = 'Randplace Erweiterung aktivieren';
+$a->strings['No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation.'] = 'No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation.';
+$a->strings['OAuth Consumer Key'] = 'OAuth Consumer Key';
+$a->strings['OAuth Consumer Secret'] = 'OAuth Consumer Secret';
+$a->strings['Base API Path (remember the trailing /] = 'Base API Path (remember the trailing /;
+$a->strings['To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet.'] = 'To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet.';
+$a->strings['Log in with StatusNet'] = 'Log in with StatusNet';
+$a->strings['Copy the security code from StatusNet here'] = 'Copy the security code from StatusNet here';
+$a->strings['Currently connected to: '] = 'Currently connected to: ';
+$a->strings['If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well.'] = 'If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well.';
+$a->strings['Send public postings to StatusNet'] = 'Send public postings to StatusNet';
+$a->strings['Clear OAuth configuration'] = 'Clear OAuth configuration';
+$a->strings['Twitter Posting Settings'] = 'Twitter Posting Settings';
+$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'No consumer key pair for Twitter found. Please contact your site administrator.';
+$a->strings['At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.';
+$a->strings['Copy the PIN from Twitter here'] = 'Copy the PIN from Twitter here';
+$a->strings['If enabled all your <strong>public</strong> postings will be posted to the associated Twitter account as well.'] = 'If enabled all your <strong>public</strong> postings will be posted to the associated Twitter account as well.';
+$a->strings['Send public postings to Twitter'] = 'Send public postings to Twitter';
 $a->strings['Africa/Abidjan'] = 'Africa/Abidjan';
 $a->strings['Africa/Accra'] = 'Africa/Accra';
 $a->strings['Africa/Addis_Ababa'] = 'Africa/Addis_Ababa';
index fd05a74ace75b9f4cf841f947837500b4f969ab7..67b6006cf0ce3aae752cf18126746a2778a3a28a 100644 (file)
@@ -21,6 +21,7 @@
                        <div class="wall-item-title" id="wall-item-title-$id">$title</div>
                        <div class="wall-item-body" id="wall-item-body-$id" >$body</div>
                </div>
+               $plink
                $drop
        </div>  
        <div class="wall-item-wrapper-end"></div>
index 981aa46e75e55939de18adeae5499bb4954f85b0..56cbf1d7c95e7dd5a3f63709fb7d01b887967291 100644 (file)
@@ -7,7 +7,7 @@
 <body>
 <table style="border:1px solid #ccc">
        <tbody>
-       <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$hostname/images/ff-32.jpg'><span style="padding:7px;">Friendika</span></td></tr>
+       <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/ff-32.jpg'><span style="padding:7px;">Friendika</span></td></tr>
 
        <tr><td style="padding-top:22px;" colspan="2">$from sent you a new private message at $siteName.</td></tr>
 
@@ -16,7 +16,7 @@
                <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
        <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
        <tr><td style="padding-right:22px;">$htmlversion</td></tr>
-       <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Please login at $siteurl to read and reply to your private messages.</td></tr>
+       <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Please login at <a href="$siteurl">$siteurl</a> to read and reply to your private messages.</td></tr>
        <tr><td></td><td>Thank You,</td></tr>
        <tr><td></td><td>$siteName Administrator</td></tr>
        </tbody>
index 3d2567f62737c36744379d2b7945cd65d1e6f837..174e6c985f15aaee715dd9e005eaeb151afe35a7 100644 (file)
@@ -6,14 +6,14 @@ tinyMCE.init({
        theme : "advanced",
        mode : "specific_textareas",
        editor_selector: /(profile-jot-text|prvmail-text)/,
-       plugins : "bbcode",
+       plugins : "bbcode,paste",
        theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor",
        theme_advanced_buttons2 : "",
        theme_advanced_buttons3 : "",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "center",
-       theme_advanced_styles : "Code=codeStyle;Quote=quoteStyle",
-       content_css : "bbcode.css",
+       theme_advanced_blockformats : "blockquote,code",
+       paste_text_sticky : true,
        entity_encoding : "raw",
        add_unload_trigger : false,
        remove_linebreaks : false,
@@ -44,8 +44,12 @@ tinyMCE.init({
                                $('#character-counter').addClass('red');
                        }
                        $('#character-counter').text(text);
-               });
-       }
+       });
+
+               ed.onInit.add(function(ed) {
+                       ed.pasteAsPlainText = true;
+               });
+       }
 });
 
 </script>
index f8affd1c56741e2f31d8aa5eb7535da45dc6518b..9c6ad60708bef026491bbf1a6ba10bcae5792de9 100644 (file)
@@ -21,6 +21,7 @@
                        <div class="wall-item-title" id="wall-item-title-$id">$title</div>
                        <div class="wall-item-body" id="wall-item-body-$id" >$body</div>
                </div>
+               $plink
                $drop
        </div>  
        <div class="wall-item-wrapper-end"></div>
index 43584a4c4f772ed7a809e564676a7fc6aaa2a387..d60bbe70c9edac05ed78ae40de2e1b8c4ade0372 100644 (file)
@@ -7,7 +7,7 @@
 <body>
 <table style="border:1px solid #ccc">
        <tbody>
-       <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$hostname/images/ff-32.jpg'><span style="padding:7px;">Friendika</span></td></tr>
+       <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/ff-32.jpg'><span style="padding:7px;">Friendika</span></td></tr>
 
        <tr><td style="padding-top:22px;" colspan="2">$from t'a envoyŽ un message ˆ $siteName.</td></tr>
 
@@ -16,7 +16,7 @@
                <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
        <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
        <tr><td style="padding-right:22px;">$htmlversion</td></tr>
-       <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Ouvrez une session svp ˆ $siteurl pour lire et rŽpondre ˆ vos messages privŽs.</td></tr>
+       <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Ouvrez une session svp ˆ <a href="$siteurl">$siteurl</a> pour lire et rŽpondre ˆ vos messages privŽs.</td></tr>
        <tr><td></td><td>Merci,</td></tr>
        <tr><td></td><td>$siteName Administrateur</td></tr>
        </tbody>
index 3d2567f62737c36744379d2b7945cd65d1e6f837..174e6c985f15aaee715dd9e005eaeb151afe35a7 100644 (file)
@@ -6,14 +6,14 @@ tinyMCE.init({
        theme : "advanced",
        mode : "specific_textareas",
        editor_selector: /(profile-jot-text|prvmail-text)/,
-       plugins : "bbcode",
+       plugins : "bbcode,paste",
        theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor",
        theme_advanced_buttons2 : "",
        theme_advanced_buttons3 : "",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "center",
-       theme_advanced_styles : "Code=codeStyle;Quote=quoteStyle",
-       content_css : "bbcode.css",
+       theme_advanced_blockformats : "blockquote,code",
+       paste_text_sticky : true,
        entity_encoding : "raw",
        add_unload_trigger : false,
        remove_linebreaks : false,
@@ -44,8 +44,12 @@ tinyMCE.init({
                                $('#character-counter').addClass('red');
                        }
                        $('#character-counter').text(text);
-               });
-       }
+       });
+
+               ed.onInit.add(function(ed) {
+                       ed.pasteAsPlainText = true;
+               });
+       }
 });
 
 </script>
index f8affd1c56741e2f31d8aa5eb7535da45dc6518b..9c6ad60708bef026491bbf1a6ba10bcae5792de9 100644 (file)
@@ -21,6 +21,7 @@
                        <div class="wall-item-title" id="wall-item-title-$id">$title</div>
                        <div class="wall-item-body" id="wall-item-body-$id" >$body</div>
                </div>
+               $plink
                $drop
        </div>  
        <div class="wall-item-wrapper-end"></div>
index a3c71cef9ec54be21a508a7c00b645ffc46c8b3e..7510f2b30336b9f9c7026dd63d4556c8ee7e53d9 100644 (file)
@@ -7,7 +7,7 @@
 <body>
 <table style="border:1px solid #ccc">
        <tbody>
-       <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$hostname/images/ff-32.jpg'><span style="padding:7px;">Friendika</span></td></tr>
+       <tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/ff-32.jpg'><span style="padding:7px;">Friendika</span></td></tr>
 
        <tr><td style="padding-top:22px;" colspan="2">Hai ricevuto un nuovo messsaggio privato su $siteName da '$from'.</td></tr>
 
@@ -16,7 +16,7 @@
                <td style="padding-top:22px;"><a href="$url">$from</a></td></tr>
        <tr><td style="font-weight:bold;padding-bottom:5px;">$title</td></tr>
        <tr><td style="padding-right:22px;">$htmlversion</td></tr>
-       <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Accedi a $siteurl per leggere e rispondere ai tuoi messaggi privati.</td></tr>
+       <tr><td style="padding-top:11px;padding-bottom:11px;" colspan="2">Accedi a <a href="$siteurl">$siteurl</a> per leggere e rispondere ai tuoi messaggi privati.</td></tr>
        <tr><td></td><td>Grazie,</td></tr>
        <tr><td></td><td>L'amministratore di $siteName</td></tr>
        </tbody>
index f6f4378649fd703f75554888bd91b044b34a9f5a..69e813ae26a2109a68ac89392b3f8234001adb6a 100644 (file)
@@ -6,14 +6,14 @@ tinyMCE.init({
        theme : "advanced",
        mode : "specific_textareas",
        editor_selector: /(profile-jot-text|prvmail-text)/,
-       plugins : "bbcode",
+       plugins : "bbcode,paste",
        theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor",
        theme_advanced_buttons2 : "",
        theme_advanced_buttons3 : "",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "center",
-       theme_advanced_styles : "Code=codeStyle;Quote=quoteStyle",
-       content_css : "bbcode.css",
+       theme_advanced_blockformats : "blockquote,code",
+       paste_text_sticky : true,
        entity_encoding : "raw",
        add_unload_trigger : false,
        remove_linebreaks : false,
@@ -44,8 +44,12 @@ tinyMCE.init({
                                $('#character-counter').addClass('red');
                        }
                        $('#character-counter').text(text);
-               });
-       }
+       });
+
+               ed.onInit.add(function(ed) {
+                       ed.pasteAsPlainText = true;
+               });
+       }
 });
 
 </script>
index 903768b5943680443f4907d94a3f010d9d6e58ba..8f4cba4757fcf434d6704a11dc46d1e6034a8114 100644 (file)
@@ -1,13 +1,14 @@
 
 <div id="settings-nick-wrapper" >
 <p id="settings-nickname-desc">
-Your profile URL is currently <strong>'$baseurl/profile/$uid'</strong>.
-Setting a nickname will allow a friendly profile URL such as
-<strong>'nickname@$basepath'</strong>.
+L'URL del tuo profilo &egrave; <strong>'$baseurl/profile/$uid'</strong>.
+Impostare un soprannome permetter&agrave; di avere un URL più aimchevole, come
+<strong>'soprannome@$basepath'</strong>.
 <br />
-Once set, it can never be changed. The nickname <strong>must</strong> start with a letter; and only letters, numbers, dashes, and underscores are allowed.
+Una volta impostato, non potr&agreve; pi&ugrave; essere cambiato. Il soprannome <strong>deve</strong>
+cominciare con una lettera; nel soprannome sono permessi solo lettere, numeri, trattini (-) e underscore (_).
 </p>
-<label id="settings-nick-label" for="settings-nick" >URL Nickname: </label>
+<label id="settings-nick-label" for="settings-nick" >Soprannome: </label>
 <input type="text" name="nick" id="settings-nick" value="$nickname" />
 </div>
 <div id="settings-nick-end" ></div>
index 2c429cc8a963c00d04c8064727a2f3c6b6f98a42..d04e021675875cbd535695284c614d340f14183e 100644 (file)
@@ -1052,4 +1052,37 @@ $a->strings['File has an invalid extension, it should be one of '] = 'Il file ha
 $a->strings['Upload was cancelled, or server error encountered'] = 'Il caricamento è stato cancellato, o si è verificato un errore sul server';
 $a->strings['Randplace Settings'] = 'Impostazioni Randplace';
 $a->strings['Enable Randplace Plugin'] = 'Abilita il plugin Randplace';
+$a->strings['System error. Post not saved.'] = 'Errore di sistema. Messaggio non salvato.';
+$a->strings['(Update was successful)'] = '(L\'aggiornamento è stato completato)';
+$a->strings['(Update was not successful)'] = '(L\'aggiornamento non è stato completato)';
+$a->strings['Remove My Account'] = 'Rimuovi il mio Account';
+$a->strings['This will completely remove your account. Once this has been done it is not recoverable.'] = 'Questo rimuoverà completamente il tuo account. Una volta rimosso non si potrà recuperarlo.';
+$a->strings['Please enter your password for verification:'] = 'Inserisci la tua password per verifica:';
+$a->strings['No consumer key pair for StatusNet found. Register your Friendika Account as an desktop client on your StatusNet account, copy the consumer key pair here and enter the API base root.<br />Before you register your own OAuth key pair ask the administrator if there is already a key pair for this Friendika installation at your favorited StatusNet installation.'] = 'Nessuna coppia di chiavi consumer per StatusNet trovata. Regitstra il tuo Account Friendika come un client desktop sul tuo account StatusNet, copia la coppia di chiavi qui e inserisci l\'url di base delle API.<br />Prima di registrare la tua coppia di chiavi OAuth, chiedi all\'amministratore se esiste già una coppia di chiavi per questa installazione di Friendika sulla installazione di StatusNet che ti interessa.';
+$a->strings['OAuth Consumer Key'] = 'OAuth Consumer Key';
+$a->strings['OAuth Consumer Secret'] = 'OAuth Consumer Secret';
+$a->strings['Base API Path (remember the trailing /)'] = 'Indirizzo di base per le API (ricorda la / alla fine)';
+$a->strings['To connect to your StatusNet account click the button below to get a security code from StatusNet which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to StatusNet.'] = 'Per collegare il tuo account StatusNet, clicca sul bottone qui sotto per ottenere un codice di sicurezza da StatusNet, che dovrai copiare nel box più sotto per poi inviare la form. Solo i tuoi messaggi <strong>pubblci</strong> saranno inviati a StatusNet.';
+$a->strings['Log in with StatusNet'] = 'Login con StatuNet';
+$a->strings['Copy the security code from StatusNet here'] = 'Copia il codice di sicurezza da StatusNet qui';
+$a->strings['Currently connected to: '] = 'Al momento collegato con:';
+$a->strings['If enabled all your <strong>public</strong> postings will be posted to the associated StatusNet account as well.'] = 'Se abilitato tutti i tuoi messaggi <strong>pubblici</strong> verranno inviati anche sull\'account StatusNet associato.';
+$a->strings['Send public postings to StatusNet'] = 'Invia messaggi pubblici su StatusNet';
+$a->strings['Clear OAuth configuration'] = 'Cancella la configurazione OAuth';
+$a->strings['Twitter Posting Settings'] = 'Impostazioni Invio a Twitter';
+$a->strings['No consumer key pair for Twitter found. Please contact your site administrator.'] = 'Nessuna coopia di chiavi per Twitter trovata. Contatta il tuo amministratore del sito.';
+$a->strings['At this Friendika instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter.'] = 'Questa installazione di Friendika ha il plugin Twitter abilitato, ma non hai ancora collegato il tuo account locale con il tuo account su Twitter. Per farlo, clicca il bottone qui sotto per ottenere un PIN da Twitter, che dovrai copiare nel box più sotto per poi inviare la form. Solo i tuoi messaggi <strong>pubblici</strong> verranno inviati anche su Twitter.';
+$a->strings['Copy the PIN from Twitter here'] = 'Copia il PIN da Twitter qui';
+$a->strings['If enabled all your <strong>public</strong> postings will be posted to the associated Twitter account as well.'] = 'Se abilitato tutti i tuoi messaggi <strong>pubblici</strong> verranno inviati anche sull\'account Twitter associato.';
+$a->strings['Send public postings to Twitter'] = 'Invia messaggi pubblici su Twitter';
+$a->strings['noreply'] = 'nessuna risposta';
+$a->strings['Facebook disabled'] = 'Facebook disabilitato';
+$a->strings['Facebook API key is missing.'] = 'Chiave API Facebook mancante.';
+$a->strings['Facebook Connect'] = 'Facebook Connect';
+$a->strings['Install Facebook posting'] = 'Installa invio a Facebook';
+$a->strings['Remove Facebook posting'] = 'Rimuovi invio a Facebook';
+$a->strings['Post to Facebook'] = 'Invia a Facebook';
+$a->strings['Image: '] = 'Immagine: ';
+$a->strings['Base API Path \x28remember the trailing &#47;\x29'] = 'Indirizzo base API \x28ricorda il &#47; alla fine\x29';
+$a->strings['Post to Twitter'] = 'Inva a Twitter';
 ?>
index bc2d3f2ecbd54d52a8391068bb18914e3357e316..3c7883fc81b00ed55fa7702d4a5ec4e141756932 100644 (file)
@@ -21,6 +21,7 @@
                        <div class="wall-item-title" id="wall-item-title-$id">$title</div>
                        <div class="wall-item-body" id="wall-item-body-$id" >$body</div>
                </div>
+               $plink
                $drop
        </div>  
        <div class="wall-item-wrapper-end"></div>
index ac3562d1c06762a8613236dc7619f92c48abfae0..e3a5fd3e72431a02dca7ad966421d95aab4cf325 100644 (file)
@@ -833,6 +833,13 @@ input#dfrn-url {
 .wall-item-like-buttons img {
        cursor: pointer;
 }
+
+.wall-item-links-wrapper {
+       float: left;
+       margin-bottom: 5px;
+       margin-left: 5px;
+}
+
 .wall-item-delete-wrapper {
        float: right;
        margin-top: 5px;
index a87252016f4601b3a060c13c7ec016dba84b0e41..d34c81a45d94168f7fec517ef43565b748541f23 100644 (file)
@@ -962,6 +962,13 @@ input#dfrn-url {
 .wall-item-like-buttons img {
        cursor: pointer;
 }
+
+.wall-item-links-wrapper {
+       float: left;
+       margin-top: 100px;
+       margin-left: 10px;
+}
+
 .wall-item-delete-wrapper {
        float: right;
        margin-top: 20px;
index 67fce415262c060bfde3f4d9ee64dcaaee7dbaec..b9f27ed4ad9aa15d47af4949e1d81ca6c35da123 100644 (file)
@@ -16,6 +16,7 @@
                        <div class="wall-item-title" id="wall-item-title-$id">$title</div>
                        <div class="wall-item-body" id="wall-item-body-$id" >$body</div>
                </div>
+               $plink
                $drop
        </div>
        <div class="wall-item-wrapper-end"></div>