Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
4196b6a96c
69 changed files with 13160 additions and 657 deletions
.gitignoreboot.php
include
conversation.phpcronhooks.phpdba.phpdelivery.phpdirectory.phpexpire.phpgprobe.phpitems.phpnotifier.phponepoll.phppoller.phpqueue.phpuimport.php
index.phpjs
mod
util
view
atom_relocate.tpluexport.tpluimport.tpl
de
field_checkbox.tplpl
follow_notify_eml.tplfriend_complete_eml.tplintro_complete_eml.tpllostpass_eml.tplmessages.popasschanged_eml.tplregister_open_eml.tplregister_verify_eml.tplrequest_notify_eml.tplstrings.phpupdate_fail_eml.tpl
register.tpltheme
frost-mobile
default.phpend.tplfield_checkbox.tplhead.tpl
js
login-style.csslogin_head.tplstyle.csstheme.phpwall_thread.tplfrost
53
.gitignore
vendored
53
.gitignore
vendored
|
@ -1,26 +1,27 @@
|
|||
favicon.*
|
||||
.htconfig.php
|
||||
\#*
|
||||
include/jquery-1.4.2.min.js
|
||||
*.log
|
||||
*.out
|
||||
*.version*
|
||||
favicon.*
|
||||
home.html
|
||||
addon
|
||||
*~
|
||||
|
||||
#ignore documentation, it should be newly built
|
||||
doc/api
|
||||
|
||||
#ignore reports, should be generted with every build
|
||||
report/
|
||||
|
||||
#ignore config files from eclipse, we don't want IDE files in our repository
|
||||
.project
|
||||
.buildpath
|
||||
.externalToolBuilders
|
||||
.settings
|
||||
#ignore OSX .DS_Store files
|
||||
.DS_Store
|
||||
|
||||
favicon.*
|
||||
.htconfig.php
|
||||
\#*
|
||||
include/jquery-1.4.2.min.js
|
||||
*.log
|
||||
*.out
|
||||
*.version*
|
||||
favicon.*
|
||||
home.html
|
||||
addon
|
||||
*~
|
||||
|
||||
#ignore documentation, it should be newly built
|
||||
doc/api
|
||||
|
||||
#ignore reports, should be generted with every build
|
||||
report/
|
||||
|
||||
#ignore config files from eclipse, we don't want IDE files in our repository
|
||||
.project
|
||||
.buildpath
|
||||
.externalToolBuilders
|
||||
.settings
|
||||
#ignore OSX .DS_Store files
|
||||
.DS_Store
|
||||
|
||||
/nbproject/private/
|
49
boot.php
49
boot.php
|
@ -11,7 +11,7 @@ require_once('include/cache.php');
|
|||
require_once('library/Mobile_Detect/Mobile_Detect.php');
|
||||
|
||||
define ( 'FRIENDICA_PLATFORM', 'Friendica');
|
||||
define ( 'FRIENDICA_VERSION', '3.0.1517' );
|
||||
define ( 'FRIENDICA_VERSION', '3.0.1518' );
|
||||
define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
|
||||
define ( 'DB_UPDATE_VERSION', 1156 );
|
||||
|
||||
|
@ -361,17 +361,26 @@ if(! class_exists('App')) {
|
|||
|
||||
// Allow themes to control internal parameters
|
||||
// by changing App values in theme.php
|
||||
//
|
||||
// Possibly should make these part of the plugin
|
||||
// system, but it seems like overkill to invoke
|
||||
// all the plugin machinery just to change a couple
|
||||
// of values
|
||||
|
||||
public $sourcename = '';
|
||||
public $videowidth = 425;
|
||||
public $videoheight = 350;
|
||||
public $force_max_items = 0;
|
||||
public $theme_thread_allow = true;
|
||||
|
||||
// An array for all theme-controllable parameters
|
||||
// Mostly unimplemented yet. Only options 'stylesheet' and
|
||||
// beyond are used.
|
||||
|
||||
public $theme = array(
|
||||
'sourcename' => '',
|
||||
'videowidth' => 425,
|
||||
'videoheight' => 350,
|
||||
'force_max_items' => 0,
|
||||
'thread_allow' => true,
|
||||
'stylesheet' => ''
|
||||
);
|
||||
|
||||
private $scheme;
|
||||
private $hostname;
|
||||
private $baseurl;
|
||||
|
@ -385,7 +394,7 @@ if(! class_exists('App')) {
|
|||
|
||||
function __construct() {
|
||||
|
||||
global $default_timezone;
|
||||
global $default_timezone, $argv, $argc;
|
||||
|
||||
$this->timezone = ((x($default_timezone)) ? $default_timezone : 'UTC');
|
||||
|
||||
|
@ -428,6 +437,9 @@ if(! class_exists('App')) {
|
|||
if(isset($path) && strlen($path) && ($path != $this->path))
|
||||
$this->path = $path;
|
||||
}
|
||||
if (is_array($argv) && $argc>1 && !x($_SERVER,'SERVER_NAME') && substr(end($argv), 0, 4)=="http" ) {
|
||||
$this->set_baseurl(array_pop($argv) );
|
||||
}
|
||||
|
||||
set_include_path(
|
||||
"include/$this->hostname" . PATH_SEPARATOR
|
||||
|
@ -436,6 +448,7 @@ if(! class_exists('App')) {
|
|||
. 'library/phpsec' . PATH_SEPARATOR
|
||||
. 'library/langdet' . PATH_SEPARATOR
|
||||
. '.' );
|
||||
|
||||
|
||||
if((x($_SERVER,'QUERY_STRING')) && substr($_SERVER['QUERY_STRING'],0,2) === "q=") {
|
||||
$this->query_string = substr($_SERVER['QUERY_STRING'],2);
|
||||
|
@ -576,6 +589,13 @@ if(! class_exists('App')) {
|
|||
$interval = 40000;
|
||||
|
||||
$this->page['title'] = $this->config['sitename'];
|
||||
|
||||
/* put the head template at the beginning of page['htmlhead']
|
||||
* since the code added by the modules frequently depends on it
|
||||
* being first
|
||||
*/
|
||||
if(!isset($this->page['htmlhead']))
|
||||
$this->page['htmlhead'] = '';
|
||||
$tpl = get_markup_template('head.tpl');
|
||||
$this->page['htmlhead'] = replace_macros($tpl,array(
|
||||
'$baseurl' => $this->get_baseurl(), // FIXME for z_path!!!!
|
||||
|
@ -586,14 +606,16 @@ if(! class_exists('App')) {
|
|||
'$showmore' => t('show more'),
|
||||
'$showfewer' => t('show fewer'),
|
||||
'$update_interval' => $interval
|
||||
));
|
||||
)) . $this->page['htmlhead'];
|
||||
}
|
||||
|
||||
function init_page_end() {
|
||||
if(!isset($this->page['end']))
|
||||
$this->page['end'] = '';
|
||||
$tpl = get_markup_template('end.tpl');
|
||||
$this->page['end'] = replace_macros($tpl,array(
|
||||
'$baseurl' => $this->get_baseurl() // FIXME for z_path!!!!
|
||||
));
|
||||
)) . $this->page['end'];
|
||||
}
|
||||
|
||||
function set_curl_code($code) {
|
||||
|
@ -913,6 +935,7 @@ if(! function_exists('login')) {
|
|||
|
||||
$tpl = get_markup_template("login.tpl");
|
||||
$_SESSION['return_url'] = $a->query_string;
|
||||
$a->module = 'login';
|
||||
}
|
||||
|
||||
|
||||
|
@ -1501,9 +1524,15 @@ if(! function_exists('proc_run')) {
|
|||
|
||||
if(count($args) && $args[0] === 'php')
|
||||
$args[0] = ((x($a->config,'php_path')) && (strlen($a->config['php_path'])) ? $a->config['php_path'] : 'php');
|
||||
for($x = 0; $x < count($args); $x ++)
|
||||
|
||||
// add baseurl to args. cli scripts can't construct it
|
||||
$args[] = $a->get_baseurl();
|
||||
|
||||
for($x = 0; $x < count($args); $x ++)
|
||||
$args[$x] = escapeshellarg($args[$x]);
|
||||
|
||||
|
||||
|
||||
$cmdline = implode($args," ");
|
||||
if(get_config('system','proc_windows'))
|
||||
proc_close(proc_open('cmd /c start /b ' . $cmdline,array(),$foo,dirname(__FILE__)));
|
||||
|
|
|
@ -865,11 +865,15 @@ function format_like($cnt,$arr,$type,$id) {
|
|||
$total = count($arr);
|
||||
if($total >= MAX_LIKERS)
|
||||
$arr = array_slice($arr, 0, MAX_LIKERS - 1);
|
||||
if($total < MAX_LIKERS)
|
||||
$arr[count($arr)-1] = t('and') . ' ' . $arr[count($arr)-1];
|
||||
$str = implode(', ', $arr);
|
||||
if($total >= MAX_LIKERS)
|
||||
if($total < MAX_LIKERS) {
|
||||
$last = t('and') . ' ' . $arr[count($arr)-1];
|
||||
$arr2 = array_slice($arr, 0, -1);
|
||||
$str = implode(', ', $arr2) . ' ' . $last;
|
||||
}
|
||||
if($total >= MAX_LIKERS) {
|
||||
$str = implode(', ', $arr);
|
||||
$str .= sprintf( t(', and %d other people'), $total - MAX_LIKERS );
|
||||
}
|
||||
$str = (($type === 'like') ? sprintf( t('%s like this.'), $str) : sprintf( t('%s don\'t like this.'), $str));
|
||||
$o .= "\t" . '<div id="' . $type . 'list-' . $id . '" style="display: none;" >' . $str . '</div>';
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require_once("boot.php");
|
||||
|
||||
|
||||
function cronhooks_run($argv, $argc){
|
||||
function cronhooks_run(&$argv, &$argc){
|
||||
global $a, $db;
|
||||
|
||||
if(is_null($a)) {
|
||||
|
|
|
@ -232,8 +232,9 @@ function q($sql) {
|
|||
|
||||
if($db && $db->connected) {
|
||||
$stmt = vsprintf($sql,$args);
|
||||
//logger("dba: q: $stmt", LOGGER_ALL);
|
||||
if($stmt === false)
|
||||
logger('dba: vsprintf error: ' . print_r(debug_backtrace(),true));
|
||||
logger('dba: vsprintf error: ' . print_r(debug_backtrace(),true), LOGGER_DEBUG);
|
||||
return $db->q($stmt);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ require_once("boot.php");
|
|||
require_once('include/queue_fn.php');
|
||||
require_once('include/html2plain.php');
|
||||
|
||||
function delivery_run($argv, $argc){
|
||||
function delivery_run(&$argv, &$argc){
|
||||
global $a, $db;
|
||||
|
||||
if(is_null($a)){
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
require_once("boot.php");
|
||||
|
||||
function directory_run($argv, $argc){
|
||||
function directory_run(&$argv, &$argc){
|
||||
global $a, $db;
|
||||
|
||||
if(is_null($a)) {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require_once("boot.php");
|
||||
|
||||
function expire_run($argv, $argc){
|
||||
function expire_run(&$argv, &$argc){
|
||||
global $a, $db;
|
||||
|
||||
if(is_null($a)) {
|
||||
|
|
|
@ -4,7 +4,7 @@ require_once("boot.php");
|
|||
require_once('include/Scrape.php');
|
||||
require_once('include/socgraph.php');
|
||||
|
||||
function gprobe_run($argv, $argc){
|
||||
function gprobe_run(&$argv, &$argc){
|
||||
global $a, $db;
|
||||
|
||||
if(is_null($a)) {
|
||||
|
|
|
@ -2174,9 +2174,10 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
|
|||
}
|
||||
|
||||
function local_delivery($importer,$data) {
|
||||
|
||||
$a = get_app();
|
||||
|
||||
logger(__function__, LOGGER_TRACE);
|
||||
|
||||
if($importer['readonly']) {
|
||||
// We aren't receiving stuff from this person. But we will quietly ignore them
|
||||
// rather than a blatant "go away" message.
|
||||
|
@ -2311,7 +2312,7 @@ function local_delivery($importer,$data) {
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
// Currently unsupported - needs a lot of work
|
||||
$reloc = $feed->get_feed_tags( NAMESPACE_DFRN, 'relocate' );
|
||||
if(isset($reloc[0]['child'][NAMESPACE_DFRN])) {
|
||||
|
@ -2321,23 +2322,79 @@ function local_delivery($importer,$data) {
|
|||
$newloc['cid'] = $importer['id'];
|
||||
$newloc['name'] = notags(unxmlify($base['name'][0]['data']));
|
||||
$newloc['photo'] = notags(unxmlify($base['photo'][0]['data']));
|
||||
$newloc['thumb'] = notags(unxmlify($base['thumb'][0]['data']));
|
||||
$newloc['micro'] = notags(unxmlify($base['micro'][0]['data']));
|
||||
$newloc['url'] = notags(unxmlify($base['url'][0]['data']));
|
||||
$newloc['request'] = notags(unxmlify($base['request'][0]['data']));
|
||||
$newloc['confirm'] = notags(unxmlify($base['confirm'][0]['data']));
|
||||
$newloc['notify'] = notags(unxmlify($base['notify'][0]['data']));
|
||||
$newloc['poll'] = notags(unxmlify($base['poll'][0]['data']));
|
||||
$newloc['site-pubkey'] = notags(unxmlify($base['site-pubkey'][0]['data']));
|
||||
$newloc['pubkey'] = notags(unxmlify($base['pubkey'][0]['data']));
|
||||
$newloc['prvkey'] = notags(unxmlify($base['prvkey'][0]['data']));
|
||||
$newloc['sitepubkey'] = notags(unxmlify($base['sitepubkey'][0]['data']));
|
||||
/** relocated user must have original key pair */
|
||||
/*$newloc['pubkey'] = notags(unxmlify($base['pubkey'][0]['data']));
|
||||
$newloc['prvkey'] = notags(unxmlify($base['prvkey'][0]['data']));*/
|
||||
|
||||
logger("items:relocate contact ".print_r($newloc, true).print_r($importer, true), LOGGER_DEBUG);
|
||||
|
||||
// update contact
|
||||
$r = q("SELECT photo, url FROM contact WHERE id=%d AND uid=%d;",
|
||||
intval($importer['id']),
|
||||
intval($importer['importer_uid']));
|
||||
if ($r === false)
|
||||
return 1;
|
||||
$old = $r[0];
|
||||
|
||||
$x = q("UPDATE contact SET
|
||||
name = '%s',
|
||||
photo = '%s',
|
||||
thumb = '%s',
|
||||
micro = '%s',
|
||||
url = '%s',
|
||||
request = '%s',
|
||||
confirm = '%s',
|
||||
notify = '%s',
|
||||
poll = '%s',
|
||||
`site-pubkey` = '%s'
|
||||
WHERE id=%d AND uid=%d;",
|
||||
dbesc($newloc['name']),
|
||||
dbesc($newloc['photo']),
|
||||
dbesc($newloc['thumb']),
|
||||
dbesc($newloc['micro']),
|
||||
dbesc($newloc['url']),
|
||||
dbesc($newloc['request']),
|
||||
dbesc($newloc['confirm']),
|
||||
dbesc($newloc['notify']),
|
||||
dbesc($newloc['poll']),
|
||||
dbesc($newloc['sitepubkey']),
|
||||
intval($importer['id']),
|
||||
intval($importer['importer_uid']));
|
||||
|
||||
if ($x === false)
|
||||
return 1;
|
||||
// update items
|
||||
$fields = array(
|
||||
'owner-link' => array($old['url'], $newloc['url']),
|
||||
'author-link' => array($old['url'], $newloc['url']),
|
||||
'owner-avatar' => array($old['photo'], $newloc['photo']),
|
||||
'author-avatar' => array($old['photo'], $newloc['photo']),
|
||||
);
|
||||
foreach ($fields as $n=>$f){
|
||||
$x = q("UPDATE item SET `%s`='%s' WHERE `%s`='%s' AND uid=%d",
|
||||
$n, dbesc($f[1]),
|
||||
$n, dbesc($f[0]),
|
||||
intval($importer['importer_uid']));
|
||||
if ($x === false)
|
||||
return 1;
|
||||
}
|
||||
|
||||
// TODO
|
||||
// merge with current record, current contents have priority
|
||||
// update record, set url-updated
|
||||
// update profile photos
|
||||
// schedule a scan?
|
||||
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
// handle friend suggestion notification
|
||||
|
||||
|
@ -3238,7 +3295,7 @@ function new_follower($importer,$contact,$datarray,$item,$sharing = false) {
|
|||
if(is_array($contact)) {
|
||||
if(($contact['network'] == NETWORK_OSTATUS && $contact['rel'] == CONTACT_IS_SHARING)
|
||||
|| ($sharing && $contact['rel'] == CONTACT_IS_FOLLOWER)) {
|
||||
$r = q("UPDATE `contact` SET `rel` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
$r = q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||
intval(CONTACT_IS_FRIEND),
|
||||
intval($contact['id']),
|
||||
intval($importer['uid'])
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<?php
|
||||
|
||||
require_once("boot.php");
|
||||
require_once('include/queue_fn.php');
|
||||
require_once('include/html2plain.php');
|
||||
|
@ -43,7 +42,7 @@ require_once('include/html2plain.php');
|
|||
*/
|
||||
|
||||
|
||||
function notifier_run($argv, $argc){
|
||||
function notifier_run(&$argv, &$argc){
|
||||
global $a, $db;
|
||||
|
||||
if(is_null($a)){
|
||||
|
@ -89,6 +88,7 @@ function notifier_run($argv, $argc){
|
|||
$expire = false;
|
||||
$mail = false;
|
||||
$fsuggest = false;
|
||||
$relocate = false;
|
||||
$top_level = false;
|
||||
$recipients = array();
|
||||
$url_recipients = array();
|
||||
|
@ -136,11 +136,15 @@ function notifier_run($argv, $argc){
|
|||
}
|
||||
elseif($cmd === 'removeme') {
|
||||
$r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval($item_id));
|
||||
if (! $r)
|
||||
return;
|
||||
$user = $r[0];
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1", intval($item_id));
|
||||
if (! $r)
|
||||
return;
|
||||
$self = $r[0];
|
||||
$r = q("SELECT * FROM `contact` WHERE `self` = 0 AND `uid` = %d", intval($item_id));
|
||||
if(! count($r))
|
||||
if(! $r)
|
||||
return;
|
||||
require_once('include/Contact.php');
|
||||
foreach($r as $contact) {
|
||||
|
@ -148,8 +152,12 @@ function notifier_run($argv, $argc){
|
|||
}
|
||||
return;
|
||||
}
|
||||
elseif($cmd === 'relocate') {
|
||||
$normal_mode = false;
|
||||
$relocate = true;
|
||||
$uid = $item_id;
|
||||
}
|
||||
else {
|
||||
|
||||
// find ancestors
|
||||
$r = q("SELECT * FROM `item` WHERE `id` = %d and visible = 1 and moderated = 0 LIMIT 1",
|
||||
intval($item_id)
|
||||
|
@ -214,7 +222,7 @@ function notifier_run($argv, $argc){
|
|||
// fill this in with a single salmon slap if applicable
|
||||
$slap = '';
|
||||
|
||||
if(! ($mail || $fsuggest)) {
|
||||
if(! ($mail || $fsuggest || $relocate)) {
|
||||
|
||||
require_once('include/group.php');
|
||||
|
||||
|
@ -418,6 +426,45 @@ function notifier_run($argv, $argc){
|
|||
);
|
||||
|
||||
}
|
||||
elseif($relocate) {
|
||||
$public_message = false; // suggestions are not public
|
||||
|
||||
$sugg_template = get_markup_template('atom_relocate.tpl');
|
||||
|
||||
/* get site pubkey. this could be a new installation with no site keys*/
|
||||
$pubkey = get_config('system','site_pubkey');
|
||||
if(! $pubkey) {
|
||||
$res = new_keypair(1024);
|
||||
set_config('system','site_prvkey', $res['prvkey']);
|
||||
set_config('system','site_pubkey', $res['pubkey']);
|
||||
}
|
||||
|
||||
$rp = q("SELECT `resource-id` , `scale`, type FROM `photo`
|
||||
WHERE `profile` = 1 AND `uid` = %d ORDER BY scale;", $uid);
|
||||
$photos = array();
|
||||
$ext = Photo::supportedTypes();
|
||||
foreach($rp as $p){
|
||||
$photos[$p['scale']] = $a->get_baseurl().'/photo/'.$p['resource-id'].'-'.$p['scale'].'.'.$ext[$p['type']];
|
||||
}
|
||||
unset($rp, $ext);
|
||||
|
||||
$atom .= replace_macros($sugg_template, array(
|
||||
'$name' => xmlify($owner['name']),
|
||||
'$photo' => xmlify($photos[4]),
|
||||
'$thumb' => xmlify($photos[5]),
|
||||
'$micro' => xmlify($photos[6]),
|
||||
'$url' => xmlify($owner['url']),
|
||||
'$request' => xmlify($owner['request']),
|
||||
'$confirm' => xmlify($owner['confirm']),
|
||||
'$notify' => xmlify($owner['notify']),
|
||||
'$poll' => xmlify($owner['poll']),
|
||||
'$sitepubkey' => xmlify(get_config('system','site_pubkey')),
|
||||
//'$pubkey' => xmlify($owner['pubkey']),
|
||||
//'$prvkey' => xmlify($owner['prvkey']),
|
||||
));
|
||||
$recipients_relocate = q("SELECT * FROM contact WHERE uid = %d AND self = 0 AND network = '%s'" , intval($uid), NETWORK_DFRN);
|
||||
unset($photos);
|
||||
}
|
||||
else {
|
||||
if($followup) {
|
||||
foreach($items as $item) { // there is only one item
|
||||
|
@ -493,9 +540,12 @@ function notifier_run($argv, $argc){
|
|||
else
|
||||
$recip_str = implode(', ', $recipients);
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `id` IN ( %s ) AND `blocked` = 0 AND `pending` = 0 ",
|
||||
dbesc($recip_str)
|
||||
);
|
||||
if ($relocate)
|
||||
$r = $recipients_relocate;
|
||||
else
|
||||
$r = q("SELECT * FROM `contact` WHERE `id` IN ( %s ) AND `blocked` = 0 AND `pending` = 0 ",
|
||||
dbesc($recip_str)
|
||||
);
|
||||
|
||||
|
||||
require_once('include/salmon.php');
|
||||
|
@ -507,7 +557,7 @@ function notifier_run($argv, $argc){
|
|||
if(count($r)) {
|
||||
|
||||
foreach($r as $contact) {
|
||||
if((! $mail) && (! $fsuggest) && (! $followup) && (! $contact['self'])) {
|
||||
if((! $mail) && (! $fsuggest) && (! $followup) && (!$relocate) && (! $contact['self'])) {
|
||||
if(($contact['network'] === NETWORK_DIASPORA) && ($public_message))
|
||||
continue;
|
||||
q("insert into deliverq ( `cmd`,`item`,`contact` ) values ('%s', %d, %d )",
|
||||
|
@ -544,7 +594,7 @@ function notifier_run($argv, $argc){
|
|||
// potentially more than one recipient. Start a new process and space them out a bit.
|
||||
// we will deliver single recipient types of message and email recipients here.
|
||||
|
||||
if((! $mail) && (! $fsuggest) && (! $followup)) {
|
||||
if((! $mail) && (! $fsuggest) && (!$relocate) && (! $followup)) {
|
||||
|
||||
$this_batch[] = $contact['id'];
|
||||
|
||||
|
@ -559,7 +609,7 @@ function notifier_run($argv, $argc){
|
|||
|
||||
$deliver_status = 0;
|
||||
|
||||
logger("main delivery by notifier: followup=$followup mail=$mail fsuggest=$fsuggest");
|
||||
logger("main delivery by notifier: followup=$followup mail=$mail fsuggest=$fsuggest relocate=$relocate");
|
||||
|
||||
switch($contact['network']) {
|
||||
case NETWORK_DFRN:
|
||||
|
@ -916,6 +966,7 @@ function notifier_run($argv, $argc){
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
if (array_search(__file__,get_included_files())===0){
|
||||
notifier_run($argv,$argc);
|
||||
killme();
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require_once("boot.php");
|
||||
|
||||
function onepoll_run($argv, $argc){
|
||||
function onepoll_run(&$argv, &$argc){
|
||||
global $a, $db;
|
||||
|
||||
if(is_null($a)) {
|
||||
|
@ -294,34 +294,147 @@ function onepoll_run($argv, $argc){
|
|||
$metas = email_msg_meta($mbox,implode(',',$msgs));
|
||||
if(count($metas) != count($msgs)) {
|
||||
logger("onepoll: for " . $mailconf[0]['user'] . " there are ". count($msgs) . " messages but received " . count($metas) . " metas", LOGGER_DEBUG);
|
||||
break;
|
||||
}
|
||||
$msgs = array_combine($msgs, $metas);
|
||||
else {
|
||||
$msgs = array_combine($msgs, $metas);
|
||||
|
||||
foreach($msgs as $msg_uid => $meta) {
|
||||
logger("Mail: Parsing mail ".$msg_uid, LOGGER_DATA);
|
||||
foreach($msgs as $msg_uid => $meta) {
|
||||
logger("Mail: Parsing mail ".$msg_uid, LOGGER_DATA);
|
||||
|
||||
$datarray = array();
|
||||
// $meta = email_msg_meta($mbox,$msg_uid);
|
||||
// $headers = email_msg_headers($mbox,$msg_uid);
|
||||
$datarray = array();
|
||||
// $meta = email_msg_meta($mbox,$msg_uid);
|
||||
// $headers = email_msg_headers($mbox,$msg_uid);
|
||||
|
||||
$datarray['uri'] = msgid2iri(trim($meta->message_id,'<>'));
|
||||
$datarray['uri'] = msgid2iri(trim($meta->message_id,'<>'));
|
||||
|
||||
// Have we seen it before?
|
||||
$r = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
|
||||
intval($importer_uid),
|
||||
dbesc($datarray['uri'])
|
||||
);
|
||||
// Have we seen it before?
|
||||
$r = q("SELECT * FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
|
||||
intval($importer_uid),
|
||||
dbesc($datarray['uri'])
|
||||
);
|
||||
|
||||
if(count($r)) {
|
||||
logger("Mail: Seen before ".$msg_uid." for ".$mailconf[0]['user'],LOGGER_DEBUG);
|
||||
if($meta->deleted && ! $r[0]['deleted']) {
|
||||
q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
dbesc(datetime_convert()),
|
||||
intval($r[0]['id'])
|
||||
);
|
||||
if(count($r)) {
|
||||
logger("Mail: Seen before ".$msg_uid." for ".$mailconf[0]['user'],LOGGER_DEBUG);
|
||||
if($meta->deleted && ! $r[0]['deleted']) {
|
||||
q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
dbesc(datetime_convert()),
|
||||
intval($r[0]['id'])
|
||||
);
|
||||
}
|
||||
/*switch ($mailconf[0]['action']) {
|
||||
case 0:
|
||||
logger("Mail: Seen before ".$msg_uid." for ".$mailconf[0]['user'].". Doing nothing.", LOGGER_DEBUG);
|
||||
break;
|
||||
case 1:
|
||||
logger("Mail: Deleting ".$msg_uid." for ".$mailconf[0]['user']);
|
||||
imap_delete($mbox, $msg_uid, FT_UID);
|
||||
break;
|
||||
case 2:
|
||||
logger("Mail: Mark as seen ".$msg_uid." for ".$mailconf[0]['user']);
|
||||
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
|
||||
break;
|
||||
case 3:
|
||||
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']." for ".$mailconf[0]['user']);
|
||||
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
|
||||
if ($mailconf[0]['movetofolder'] != "")
|
||||
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
|
||||
break;
|
||||
}*/
|
||||
continue;
|
||||
}
|
||||
/*switch ($mailconf[0]['action']) {
|
||||
|
||||
|
||||
// look for a 'references' or an 'in-reply-to' header and try to match with a parent item we have locally.
|
||||
|
||||
// $raw_refs = ((x($headers,'references')) ? str_replace("\t",'',$headers['references']) : '');
|
||||
$raw_refs = ((property_exists($meta,'references')) ? str_replace("\t",'',$meta->references) : '');
|
||||
if(! trim($raw_refs))
|
||||
$raw_refs = ((property_exists($meta,'in_reply_to')) ? str_replace("\t",'',$meta->in_reply_to) : '');
|
||||
$raw_refs = trim($raw_refs); // Don't allow a blank reference in $refs_arr
|
||||
|
||||
if($raw_refs) {
|
||||
$refs_arr = explode(' ', $raw_refs);
|
||||
if(count($refs_arr)) {
|
||||
for($x = 0; $x < count($refs_arr); $x ++)
|
||||
$refs_arr[$x] = "'" . msgid2iri(str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x]))) . "'";
|
||||
}
|
||||
$qstr = implode(',',$refs_arr);
|
||||
$r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `uri` IN ( $qstr ) AND `uid` = %d LIMIT 1",
|
||||
intval($importer_uid)
|
||||
);
|
||||
if(count($r))
|
||||
$datarray['parent-uri'] = $r[0]['parent-uri']; // Set the parent as the top-level item
|
||||
// $datarray['parent-uri'] = $r[0]['uri'];
|
||||
}
|
||||
|
||||
|
||||
if(! x($datarray,'parent-uri'))
|
||||
$datarray['parent-uri'] = $datarray['uri'];
|
||||
|
||||
// Decoding the header
|
||||
$subject = imap_mime_header_decode($meta->subject);
|
||||
$datarray['title'] = "";
|
||||
foreach($subject as $subpart)
|
||||
if ($subpart->charset != "default")
|
||||
$datarray['title'] .= iconv($subpart->charset, 'UTF-8//IGNORE', $subpart->text);
|
||||
else
|
||||
$datarray['title'] .= $subpart->text;
|
||||
|
||||
$datarray['title'] = notags(trim($datarray['title']));
|
||||
|
||||
//$datarray['title'] = notags(trim($meta->subject));
|
||||
$datarray['created'] = datetime_convert('UTC','UTC',$meta->date);
|
||||
|
||||
// Is it reply?
|
||||
$reply = ((substr(strtolower($datarray['title']), 0, 3) == "re:") or
|
||||
(substr(strtolower($datarray['title']), 0, 3) == "re-") or
|
||||
(raw_refs != ""));
|
||||
|
||||
$r = email_get_msg($mbox,$msg_uid, $reply);
|
||||
if(! $r) {
|
||||
logger("Mail: can't fetch msg ".$msg_uid." for ".$mailconf[0]['user']);
|
||||
continue;
|
||||
}
|
||||
$datarray['body'] = escape_tags($r['body']);
|
||||
|
||||
logger("Mail: Importing ".$msg_uid." for ".$mailconf[0]['user']);
|
||||
|
||||
// some mailing lists have the original author as 'from' - add this sender info to msg body.
|
||||
// todo: adding a gravatar for the original author would be cool
|
||||
|
||||
if(! stristr($meta->from,$contact['addr'])) {
|
||||
$from = imap_mime_header_decode($meta->from);
|
||||
$fromdecoded = "";
|
||||
foreach($from as $frompart)
|
||||
if ($frompart->charset != "default")
|
||||
$fromdecoded .= iconv($frompart->charset, 'UTF-8//IGNORE', $frompart->text);
|
||||
else
|
||||
$fromdecoded .= $frompart->text;
|
||||
|
||||
$datarray['body'] = "[b]".t('From: ') . escape_tags($fromdecoded) . "[/b]\n\n" . $datarray['body'];
|
||||
}
|
||||
|
||||
$datarray['uid'] = $importer_uid;
|
||||
$datarray['contact-id'] = $contact['id'];
|
||||
if($datarray['parent-uri'] === $datarray['uri'])
|
||||
$datarray['private'] = 1;
|
||||
if(($contact['network'] === NETWORK_MAIL) && (! get_pconfig($importer_uid,'system','allow_public_email_replies'))) {
|
||||
$datarray['private'] = 1;
|
||||
$datarray['allow_cid'] = '<' . $contact['id'] . '>';
|
||||
}
|
||||
$datarray['author-name'] = $contact['name'];
|
||||
$datarray['author-link'] = 'mailbox';
|
||||
$datarray['author-avatar'] = $contact['photo'];
|
||||
|
||||
$stored_item = item_store($datarray);
|
||||
q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d",
|
||||
dbesc($datarray['parent-uri']),
|
||||
intval($importer_uid)
|
||||
);
|
||||
q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
|
||||
intval($stored_item)
|
||||
);
|
||||
switch ($mailconf[0]['action']) {
|
||||
case 0:
|
||||
logger("Mail: Seen before ".$msg_uid." for ".$mailconf[0]['user'].". Doing nothing.", LOGGER_DEBUG);
|
||||
break;
|
||||
|
@ -339,119 +452,7 @@ function onepoll_run($argv, $argc){
|
|||
if ($mailconf[0]['movetofolder'] != "")
|
||||
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
|
||||
break;
|
||||
}*/
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// look for a 'references' or an 'in-reply-to' header and try to match with a parent item we have locally.
|
||||
|
||||
// $raw_refs = ((x($headers,'references')) ? str_replace("\t",'',$headers['references']) : '');
|
||||
$raw_refs = ((property_exists($meta,'references')) ? str_replace("\t",'',$meta->references) : '');
|
||||
if(! trim($raw_refs))
|
||||
$raw_refs = ((property_exists($meta,'in_reply_to')) ? str_replace("\t",'',$meta->in_reply_to) : '');
|
||||
$raw_refs = trim($raw_refs); // Don't allow a blank reference in $refs_arr
|
||||
|
||||
if($raw_refs) {
|
||||
$refs_arr = explode(' ', $raw_refs);
|
||||
if(count($refs_arr)) {
|
||||
for($x = 0; $x < count($refs_arr); $x ++)
|
||||
$refs_arr[$x] = "'" . msgid2iri(str_replace(array('<','>',' '),array('','',''),dbesc($refs_arr[$x]))) . "'";
|
||||
}
|
||||
$qstr = implode(',',$refs_arr);
|
||||
$r = q("SELECT `uri` , `parent-uri` FROM `item` WHERE `uri` IN ( $qstr ) AND `uid` = %d LIMIT 1",
|
||||
intval($importer_uid)
|
||||
);
|
||||
if(count($r))
|
||||
$datarray['parent-uri'] = $r[0]['parent-uri']; // Set the parent as the top-level item
|
||||
// $datarray['parent-uri'] = $r[0]['uri'];
|
||||
}
|
||||
|
||||
|
||||
if(! x($datarray,'parent-uri'))
|
||||
$datarray['parent-uri'] = $datarray['uri'];
|
||||
|
||||
// Decoding the header
|
||||
$subject = imap_mime_header_decode($meta->subject);
|
||||
$datarray['title'] = "";
|
||||
foreach($subject as $subpart)
|
||||
if ($subpart->charset != "default")
|
||||
$datarray['title'] .= iconv($subpart->charset, 'UTF-8//IGNORE', $subpart->text);
|
||||
else
|
||||
$datarray['title'] .= $subpart->text;
|
||||
|
||||
$datarray['title'] = notags(trim($datarray['title']));
|
||||
|
||||
//$datarray['title'] = notags(trim($meta->subject));
|
||||
$datarray['created'] = datetime_convert('UTC','UTC',$meta->date);
|
||||
|
||||
// Is it reply?
|
||||
$reply = ((substr(strtolower($datarray['title']), 0, 3) == "re:") or
|
||||
(substr(strtolower($datarray['title']), 0, 3) == "re-") or
|
||||
(raw_refs != ""));
|
||||
|
||||
$r = email_get_msg($mbox,$msg_uid, $reply);
|
||||
if(! $r) {
|
||||
logger("Mail: can't fetch msg ".$msg_uid." for ".$mailconf[0]['user']);
|
||||
continue;
|
||||
}
|
||||
$datarray['body'] = escape_tags($r['body']);
|
||||
|
||||
logger("Mail: Importing ".$msg_uid." for ".$mailconf[0]['user']);
|
||||
|
||||
// some mailing lists have the original author as 'from' - add this sender info to msg body.
|
||||
// todo: adding a gravatar for the original author would be cool
|
||||
|
||||
if(! stristr($meta->from,$contact['addr'])) {
|
||||
$from = imap_mime_header_decode($meta->from);
|
||||
$fromdecoded = "";
|
||||
foreach($from as $frompart)
|
||||
if ($frompart->charset != "default")
|
||||
$fromdecoded .= iconv($frompart->charset, 'UTF-8//IGNORE', $frompart->text);
|
||||
else
|
||||
$fromdecoded .= $frompart->text;
|
||||
|
||||
$datarray['body'] = "[b]".t('From: ') . escape_tags($fromdecoded) . "[/b]\n\n" . $datarray['body'];
|
||||
}
|
||||
|
||||
$datarray['uid'] = $importer_uid;
|
||||
$datarray['contact-id'] = $contact['id'];
|
||||
if($datarray['parent-uri'] === $datarray['uri'])
|
||||
$datarray['private'] = 1;
|
||||
if(($contact['network'] === NETWORK_MAIL) && (! get_pconfig($importer_uid,'system','allow_public_email_replies'))) {
|
||||
$datarray['private'] = 1;
|
||||
$datarray['allow_cid'] = '<' . $contact['id'] . '>';
|
||||
}
|
||||
$datarray['author-name'] = $contact['name'];
|
||||
$datarray['author-link'] = 'mailbox';
|
||||
$datarray['author-avatar'] = $contact['photo'];
|
||||
|
||||
$stored_item = item_store($datarray);
|
||||
q("UPDATE `item` SET `last-child` = 0 WHERE `parent-uri` = '%s' AND `uid` = %d",
|
||||
dbesc($datarray['parent-uri']),
|
||||
intval($importer_uid)
|
||||
);
|
||||
q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
|
||||
intval($stored_item)
|
||||
);
|
||||
switch ($mailconf[0]['action']) {
|
||||
case 0:
|
||||
logger("Mail: Seen before ".$msg_uid." for ".$mailconf[0]['user'].". Doing nothing.", LOGGER_DEBUG);
|
||||
break;
|
||||
case 1:
|
||||
logger("Mail: Deleting ".$msg_uid." for ".$mailconf[0]['user']);
|
||||
imap_delete($mbox, $msg_uid, FT_UID);
|
||||
break;
|
||||
case 2:
|
||||
logger("Mail: Mark as seen ".$msg_uid." for ".$mailconf[0]['user']);
|
||||
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
|
||||
break;
|
||||
case 3:
|
||||
logger("Mail: Moving ".$msg_uid." to ".$mailconf[0]['movetofolder']." for ".$mailconf[0]['user']);
|
||||
imap_setflag_full($mbox, $msg_uid, "\\Seen", ST_UID);
|
||||
if ($mailconf[0]['movetofolder'] != "")
|
||||
imap_mail_move($mbox, $msg_uid, $mailconf[0]['movetofolder'], FT_UID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require_once("boot.php");
|
||||
|
||||
|
||||
function poller_run($argv, $argc){
|
||||
function poller_run(&$argv, &$argc){
|
||||
global $a, $db;
|
||||
|
||||
if(is_null($a)) {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
require_once("boot.php");
|
||||
require_once('include/queue_fn.php');
|
||||
|
||||
function queue_run($argv, $argc){
|
||||
function queue_run(&$argv, &$argc){
|
||||
global $a, $db;
|
||||
|
||||
if(is_null($a)){
|
||||
|
|
237
include/uimport.php
Normal file
237
include/uimport.php
Normal file
|
@ -0,0 +1,237 @@
|
|||
<?php
|
||||
/**
|
||||
* import account file exported from mod/uexport
|
||||
* args:
|
||||
* $a App Friendica App Class
|
||||
* $file Array array from $_FILES
|
||||
*/
|
||||
require_once("include/Photo.php");
|
||||
define("IMPORT_DEBUG", False);
|
||||
|
||||
function last_insert_id(){
|
||||
global $db;
|
||||
if (IMPORT_DEBUG) return 1;
|
||||
if($db->mysqli){
|
||||
$thedb = $db->getdb();
|
||||
return $thedb->insert_id;
|
||||
} else {
|
||||
return mysql_insert_id();
|
||||
}
|
||||
}
|
||||
|
||||
function last_error(){
|
||||
global $db;
|
||||
return $db->error;
|
||||
}
|
||||
|
||||
function db_import_assoc($table, $arr){
|
||||
if (IMPORT_DEBUG) return true;
|
||||
if (isset($arr['id'])) unset($arr['id']);
|
||||
$cols = implode("`,`", array_map('dbesc', array_keys($arr)));
|
||||
$vals = implode("','", array_map('dbesc', array_values($arr)));
|
||||
$query = "INSERT INTO `$table` (`$cols`) VALUES ('$vals')";
|
||||
logger("uimport: $query",LOGGER_TRACE);
|
||||
return q($query);
|
||||
}
|
||||
|
||||
function import_cleanup($newuid) {
|
||||
q("DELETE FROM `user` WHERE uid = %d", $newuid);
|
||||
q("DELETE FROM `contact` WHERE uid = %d", $newuid);
|
||||
q("DELETE FROM `profile` WHERE uid = %d", $newuid);
|
||||
q("DELETE FROM `photo` WHERE uid = %d", $newuid);
|
||||
q("DELETE FROM `group` WHERE uid = %d", $newuid);
|
||||
q("DELETE FROM `group_member` WHERE uid = %d", $newuid);
|
||||
q("DELETE FROM `pconfig` WHERE uid = %d", $newuid);
|
||||
|
||||
}
|
||||
|
||||
function import_account(&$a, $file) {
|
||||
logger("Start user import from ".$file['tmp_name']);
|
||||
/*
|
||||
STEPS
|
||||
1. checks
|
||||
2. replace old baseurl with new baseurl
|
||||
3. import data (look at user id and contacts id)
|
||||
4. archive non-dfrn contacts
|
||||
5. send message to dfrn contacts
|
||||
*/
|
||||
|
||||
$account = json_decode(file_get_contents($file['tmp_name']), true);
|
||||
if ($account===null) {
|
||||
notice(t("Error decoding account file"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (!x($account, 'version')) {
|
||||
notice(t("Error! No version data in file! This is not a Friendica account file?"));
|
||||
return;
|
||||
}
|
||||
|
||||
if ($account['schema'] != DB_UPDATE_VERSION) {
|
||||
notice(t("Error! I can't import this file: DB schema version is not compatible."));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$oldbaseurl = $account['baseurl'];
|
||||
$newbaseurl = $a->get_baseurl();
|
||||
$olduid = $account['user']['uid'];
|
||||
|
||||
unset($account['user']['uid']);
|
||||
foreach($account['user'] as $k => &$v) {
|
||||
$v = str_replace($oldbaseurl, $newbaseurl, $v);
|
||||
}
|
||||
|
||||
|
||||
// import user
|
||||
$r = db_import_assoc('user', $account['user']);
|
||||
if ($r===false) {
|
||||
//echo "<pre>"; var_dump($r, $query, mysql_error()); killme();
|
||||
logger("uimport:insert user : ERROR : ".last_error(), LOGGER_NORMAL);
|
||||
notice(t("User creation error"));
|
||||
return;
|
||||
}
|
||||
$newuid = last_insert_id();
|
||||
//~ $newuid = 1;
|
||||
|
||||
|
||||
|
||||
foreach($account['profile'] as &$profile) {
|
||||
foreach($profile as $k=>&$v) {
|
||||
$v = str_replace($oldbaseurl, $newbaseurl, $v);
|
||||
foreach(array("profile","avatar") as $k)
|
||||
$v = str_replace($newbaseurl."/photo/".$k."/".$olduid.".jpg", $newbaseurl."/photo/".$k."/".$newuid.".jpg", $v);
|
||||
}
|
||||
$profile['uid'] = $newuid;
|
||||
$r = db_import_assoc('profile', $profile);
|
||||
if ($r===false) {
|
||||
logger("uimport:insert profile ".$profile['profile-name']." : ERROR : ".last_error(), LOGGER_NORMAL);
|
||||
info(t("User profile creation error"));
|
||||
import_cleanup($newuid);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$errorcount=0;
|
||||
foreach($account['contact'] as &$contact) {
|
||||
if ($contact['uid'] == $olduid && $contact['self'] == '1'){
|
||||
foreach($contact as $k=>&$v) {
|
||||
$v = str_replace($oldbaseurl, $newbaseurl, $v);
|
||||
foreach(array("profile","avatar","micro") as $k)
|
||||
$v = str_replace($newbaseurl."/photo/".$k."/".$olduid.".jpg", $newbaseurl."/photo/".$k."/".$newuid.".jpg", $v);
|
||||
}
|
||||
}
|
||||
if ($contact['uid'] == $olduid && $contact['self'] == '0') {
|
||||
switch ($contact['network']){
|
||||
case NETWORK_DFRN:
|
||||
// send relocate message (below)
|
||||
break;
|
||||
case NETWORK_ZOT:
|
||||
// TODO handle zot network
|
||||
break;
|
||||
case NETWORK_MAIL2:
|
||||
// TODO ?
|
||||
break;
|
||||
case NETWORK_FEED:
|
||||
case NETWORK_MAIL:
|
||||
// Nothing to do
|
||||
break;
|
||||
default:
|
||||
// archive other contacts
|
||||
$contact['archive'] = "1";
|
||||
}
|
||||
}
|
||||
$contact['uid'] = $newuid;
|
||||
$r = db_import_assoc('contact', $contact);
|
||||
if ($r===false) {
|
||||
logger("uimport:insert contact ".$contact['nick'].",".$contact['network']." : ERROR : ".last_error(), LOGGER_NORMAL);
|
||||
$errorcount++;
|
||||
} else {
|
||||
$contact['newid'] = last_insert_id();
|
||||
}
|
||||
}
|
||||
if ($errorcount>0) {
|
||||
notice( sprintf(tt("%d contact not imported", "%d contacts not imported", $errorcount), $errorcount) );
|
||||
}
|
||||
|
||||
foreach($account['group'] as &$group) {
|
||||
$group['uid'] = $newuid;
|
||||
$r = db_import_assoc('group', $group);
|
||||
if ($r===false) {
|
||||
logger("uimport:insert group ".$group['name']." : ERROR : ".last_error(), LOGGER_NORMAL);
|
||||
} else {
|
||||
$group['newid'] = last_insert_id();
|
||||
}
|
||||
}
|
||||
|
||||
foreach($account['group_member'] as &$group_member) {
|
||||
$group_member['uid'] = $newuid;
|
||||
|
||||
$import = 0;
|
||||
foreach($account['group'] as $group) {
|
||||
if ($group['id'] == $group_member['gid'] && isset($group['newid'])) {
|
||||
$group_member['gid'] = $group['newid'];
|
||||
$import++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
foreach($account['contact'] as $contact) {
|
||||
if ($contact['id'] == $group_member['contact-id'] && isset($contact['newid'])) {
|
||||
$group_member['contact-id'] = $contact['newid'];
|
||||
$import++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($import==2) {
|
||||
$r = db_import_assoc('group_member', $group_member);
|
||||
if ($r===false) {
|
||||
logger("uimport:insert group member ".$group_member['id']." : ERROR : ".last_error(), LOGGER_NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
foreach($account['photo'] as &$photo) {
|
||||
$photo['uid'] = $newuid;
|
||||
$photo['data'] = hex2bin($photo['data']);
|
||||
|
||||
$p = new Photo($photo['data'], $photo['type']);
|
||||
$r = $p->store(
|
||||
$photo['uid'],
|
||||
$photo['contact-id'], //0
|
||||
$photo['resource-id'],
|
||||
$photo['filename'],
|
||||
$photo['album'],
|
||||
$photo['scale'],
|
||||
$photo['profile'], //1
|
||||
$photo['allow_cid'],
|
||||
$photo['allow_gid'],
|
||||
$photo['deny_cid'],
|
||||
$photo['deny_gid']
|
||||
);
|
||||
|
||||
if ($r===false) {
|
||||
logger("uimport:insert photo ".$photo['resource-id'].",". $photo['scale']. " : ERROR : ".last_error(), LOGGER_NORMAL);
|
||||
}
|
||||
}
|
||||
|
||||
foreach($account['pconfig'] as &$pconfig) {
|
||||
$pconfig['uid'] = $newuid;
|
||||
$r = db_import_assoc('pconfig', $pconfig);
|
||||
if ($r===false) {
|
||||
logger("uimport:insert pconfig ".$pconfig['id']. " : ERROR : ".last_error(), LOGGER_NORMAL);
|
||||
}
|
||||
}
|
||||
|
||||
// send relocate messages
|
||||
proc_run('php', 'include/notifier.php', 'relocate' , $newuid);
|
||||
|
||||
info(t("Done. You can now login with your username and password"));
|
||||
goaway( $a->get_baseurl() ."/login");
|
||||
|
||||
|
||||
}
|
46
index.php
46
index.php
|
@ -115,19 +115,9 @@ if(! x($_SESSION,'authenticated'))
|
|||
header('X-Account-Management-Status: none');
|
||||
|
||||
|
||||
/*
|
||||
* Create the page head after setting the language
|
||||
* and getting any auth credentials
|
||||
*/
|
||||
|
||||
$a->init_pagehead();
|
||||
|
||||
/**
|
||||
* Build the page ending -- this is stuff that goes right before
|
||||
* the closing </body> tag
|
||||
*/
|
||||
|
||||
$a->init_page_end();
|
||||
/* set up page['htmlhead'] and page['end'] for the modules to use */
|
||||
$a->page['htmlhead'] = '';
|
||||
$a->page['end'] = '';
|
||||
|
||||
|
||||
if(! x($_SESSION,'sysmsg'))
|
||||
|
@ -300,8 +290,32 @@ if($a->module_loaded) {
|
|||
$a->page['content'] .= $arr['content'];
|
||||
}
|
||||
|
||||
if(function_exists(str_replace('-','_',current_theme()) . '_content_loaded')) {
|
||||
$func = str_replace('-','_',current_theme()) . '_content_loaded';
|
||||
$func($a);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Create the page head after setting the language
|
||||
* and getting any auth credentials
|
||||
*
|
||||
* Moved init_pagehead() and init_page_end() to after
|
||||
* all the module functions have executed so that all
|
||||
* theme choices made by the modules can take effect
|
||||
*/
|
||||
|
||||
$a->init_pagehead();
|
||||
|
||||
/**
|
||||
* Build the page ending -- this is stuff that goes right before
|
||||
* the closing </body> tag
|
||||
*/
|
||||
|
||||
$a->init_page_end();
|
||||
|
||||
// If you're just visiting, let javascript take you home
|
||||
|
||||
if(x($_SESSION,'visitor_home'))
|
||||
|
@ -366,7 +380,11 @@ if($a->module != 'install') {
|
|||
* Build the page - now that we have all the components
|
||||
*/
|
||||
|
||||
$a->page['htmlhead'] = replace_macros($a->page['htmlhead'], array('$stylesheet' => current_theme_url()));
|
||||
if(!$a->theme['stylesheet'])
|
||||
$stylesheet = current_theme_url();
|
||||
else
|
||||
$stylesheet = $a->theme['stylesheet'];
|
||||
$a->page['htmlhead'] = replace_macros($a->page['htmlhead'], array('$stylesheet' => $stylesheet));
|
||||
|
||||
if($a->is_mobile || $a->is_tablet) {
|
||||
if(isset($_SESSION['show-mobile']) && !$_SESSION['show-mobile']) {
|
||||
|
|
|
@ -275,7 +275,7 @@ aStates[249]="|'Adan|'Ataq|Abyan|Al Bayda'|Al Hudaydah|Al Jawf|Al Mahrah|Al Mahw
|
|||
aStates[250]="|Kosovo|Montenegro|Serbia|Vojvodina";
|
||||
aStates[251]="|Central|Copperbelt|Eastern|Luapula|Lusaka|North-Western|Northern|Southern|Western";
|
||||
aStates[252]="|Bulawayo|Harare|ManicalandMashonaland Central|Mashonaland East|Mashonaland West|Masvingo|Matabeleland North|Matabeleland South|Midlands";
|
||||
aStates[253]="|Self Hosted|Private Server|Architects Of Sleep|Chaos Friends|DFRN|Distributed Friend Network|ErrLock|Free-Beer.ch|Foojbook|Free-Haven|Friendica.eu|Friendika.me.4.it|Friendika - I Ask Questions|Frndc.com|Hikado|Hipatia|Hungerfreunde|Kaluguran Community|Kak Ste|Karl.Markx.pm|Loozah Social Club|MyFriendica.net|MyFriendNetwork|Oi!|OpenMindSpace|Optimistisch|Pplsnet|Recolutionari.es|SPRACI|Styliztique|Sysfu Social Club|theshi.re|Tumpambae|Uzmiac|Other";
|
||||
aStates[253]="|Self Hosted|Private Server|Architects Of Sleep|Chaos Friends|DFRN|Distributed Friend Network|ErrLock|Free-Beer.ch|Foojbook|Free-Haven|Friendica.eu|Friendika.me.4.it|Friendika - I Ask Questions|Frndc.com|Hikado|Hipatia|Hungerfreunde|Kaluguran Community|Kak Ste|Karl.Markx.pm|Loozah Social Club|MyFriendica.net|MyFriendNetwork|Oi!|OpenMindSpace|Optimistisch|Pplsnet|Recolutionari.es|Repatr.de|SPRACI|Styliztique|Sysfu Social Club|theshi.re|Tumpambae|Uzmiac|Other";
|
||||
/*
|
||||
* gArCountryInfo
|
||||
* (0) Country name
|
||||
|
|
|
@ -6,7 +6,7 @@ require_once('include/event.php');
|
|||
|
||||
|
||||
function dfrn_notify_post(&$a) {
|
||||
|
||||
logger(__function__, LOGGER_TRACE);
|
||||
$dfrn_id = ((x($_POST,'dfrn_id')) ? notags(trim($_POST['dfrn_id'])) : '');
|
||||
$dfrn_version = ((x($_POST,'dfrn_version')) ? (float) $_POST['dfrn_version'] : 2.0);
|
||||
$challenge = ((x($_POST,'challenge')) ? notags(trim($_POST['challenge'])) : '');
|
||||
|
|
|
@ -42,6 +42,7 @@ function register_post(&$a) {
|
|||
$verified = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
require_once('include/user.php');
|
||||
|
||||
|
@ -234,7 +235,7 @@ function register_content(&$a) {
|
|||
'$yes_selected' => ' checked="checked" ',
|
||||
'$no_selected' => '',
|
||||
'$str_yes' => t('Yes'),
|
||||
'$str_no' => t('No')
|
||||
'$str_no' => t('No'),
|
||||
));
|
||||
}
|
||||
|
||||
|
@ -275,7 +276,8 @@ function register_content(&$a) {
|
|||
'$email' => $email,
|
||||
'$nickname' => $nickname,
|
||||
'$license' => $license,
|
||||
'$sitename' => $a->get_hostname()
|
||||
'$sitename' => $a->get_hostname(),
|
||||
|
||||
));
|
||||
return $o;
|
||||
|
||||
|
|
187
mod/uexport.php
187
mod/uexport.php
|
@ -1,46 +1,174 @@
|
|||
<?php
|
||||
|
||||
function uexport_init(&$a) {
|
||||
|
||||
function uexport_init(&$a){
|
||||
if(! local_user())
|
||||
killme();
|
||||
|
||||
$user = array();
|
||||
$r = q("SELECT * FROM `user` WHERE `uid` = %d LIMIT 1",
|
||||
local_user()
|
||||
|
||||
$tabs = array(
|
||||
array(
|
||||
'label' => t('Account settings'),
|
||||
'url' => $a->get_baseurl(true).'/settings',
|
||||
'selected' => '',
|
||||
),
|
||||
array(
|
||||
'label' => t('Display settings'),
|
||||
'url' => $a->get_baseurl(true).'/settings/display',
|
||||
'selected' =>'',
|
||||
),
|
||||
|
||||
array(
|
||||
'label' => t('Connector settings'),
|
||||
'url' => $a->get_baseurl(true).'/settings/connectors',
|
||||
'selected' => '',
|
||||
),
|
||||
array(
|
||||
'label' => t('Plugin settings'),
|
||||
'url' => $a->get_baseurl(true).'/settings/addon',
|
||||
'selected' => '',
|
||||
),
|
||||
array(
|
||||
'label' => t('Connected apps'),
|
||||
'url' => $a->get_baseurl(true) . '/settings/oauth',
|
||||
'selected' => '',
|
||||
),
|
||||
array(
|
||||
'label' => t('Export personal data'),
|
||||
'url' => $a->get_baseurl(true) . '/uexport',
|
||||
'selected' => 'active'
|
||||
),
|
||||
array(
|
||||
'label' => t('Remove account'),
|
||||
'url' => $a->get_baseurl(true) . '/removeme',
|
||||
'selected' => ''
|
||||
)
|
||||
);
|
||||
if(count($r)) {
|
||||
|
||||
$tabtpl = get_markup_template("generic_links_widget.tpl");
|
||||
$a->page['aside'] = replace_macros($tabtpl, array(
|
||||
'$title' => t('Settings'),
|
||||
'$class' => 'settings-widget',
|
||||
'$items' => $tabs,
|
||||
));
|
||||
}
|
||||
|
||||
function uexport_content(&$a){
|
||||
|
||||
if ($a->argc > 1) {
|
||||
header("Content-type: application/json");
|
||||
header('Content-Disposition: attachment; filename="'.$a->user['nickname'].'.'.$a->argv[1].'"');
|
||||
switch($a->argv[1]) {
|
||||
case "backup": uexport_all($a); killme(); break;
|
||||
case "account": uexport_account($a); killme(); break;
|
||||
default:
|
||||
killme();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* options shown on "Export personal data" page
|
||||
* list of array( 'link url', 'link text', 'help text' )
|
||||
*/
|
||||
$options = array(
|
||||
array('/uexport/account',t('Export account'),t('Export your account info and contacts. Use this to make a backup of your account and/or to move it to another server.')),
|
||||
array('/uexport/backup',t('Export all'),t('Export your accout info, contacts and all your items as json. Could be a very big file, and could take a lot of time. Use this to make a full backup of your account (photos are not exported)')),
|
||||
);
|
||||
call_hooks('uexport_options', $options);
|
||||
|
||||
$tpl = get_markup_template("uexport.tpl");
|
||||
return replace_macros($tpl, array(
|
||||
'$baseurl' => $a->get_baseurl(),
|
||||
'$title' => t('Export personal data'),
|
||||
'$options' => $options
|
||||
));
|
||||
|
||||
|
||||
}
|
||||
|
||||
function _uexport_multirow($query) {
|
||||
$result = array();
|
||||
$r = q($query);
|
||||
// if(count($r)) {
|
||||
if ($r){
|
||||
foreach($r as $rr){
|
||||
$p = array();
|
||||
foreach($rr as $k => $v)
|
||||
$p[$k] = $v;
|
||||
$result[] = $p;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
function _uexport_row($query) {
|
||||
$result = array();
|
||||
$r = q($query);
|
||||
if ($r) {
|
||||
foreach($r as $rr)
|
||||
foreach($rr as $k => $v)
|
||||
$user[$k] = $v;
|
||||
$result[$k] = $v;
|
||||
|
||||
}
|
||||
$contact = array();
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d ",
|
||||
intval(local_user())
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
function uexport_account($a){
|
||||
|
||||
$user = _uexport_row(
|
||||
sprintf( "SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval(local_user()) )
|
||||
);
|
||||
if(count($r)) {
|
||||
foreach($r as $rr)
|
||||
foreach($rr as $k => $v)
|
||||
$contact[][$k] = $v;
|
||||
|
||||
}
|
||||
|
||||
$profile = array();
|
||||
$r = q("SELECT * FROM `profile` WHERE `uid` = %d ",
|
||||
intval(local_user())
|
||||
|
||||
$contact = _uexport_multirow(
|
||||
sprintf( "SELECT * FROM `contact` WHERE `uid` = %d ",intval(local_user()) )
|
||||
);
|
||||
if(count($r)) {
|
||||
foreach($r as $rr)
|
||||
foreach($rr as $k => $v)
|
||||
$profile[][$k] = $v;
|
||||
}
|
||||
|
||||
$output = array('user' => $user, 'contact' => $contact, 'profile' => $profile );
|
||||
|
||||
header("Content-type: application/json");
|
||||
$profile =_uexport_multirow(
|
||||
sprintf( "SELECT * FROM `profile` WHERE `uid` = %d ", intval(local_user()) )
|
||||
);
|
||||
|
||||
$photo = _uexport_multirow(
|
||||
sprintf( "SELECT * FROM `photo` WHERE uid = %d AND profile = 1", intval(local_user()) )
|
||||
);
|
||||
foreach ($photo as &$p) $p['data'] = bin2hex($p['data']);
|
||||
|
||||
$pconfig = _uexport_multirow(
|
||||
sprintf( "SELECT * FROM `pconfig` WHERE uid = %d",intval(local_user()) )
|
||||
);
|
||||
|
||||
$group = _uexport_multirow(
|
||||
sprintf( "SELECT * FROM `group` WHERE uid = %d",intval(local_user()) )
|
||||
);
|
||||
|
||||
$group_member = _uexport_multirow(
|
||||
sprintf( "SELECT * FROM `group_member` WHERE uid = %d",intval(local_user()) )
|
||||
);
|
||||
|
||||
$output = array(
|
||||
'version' => FRIENDICA_VERSION,
|
||||
'schema' => DB_UPDATE_VERSION,
|
||||
'baseurl' => $a->get_baseurl(),
|
||||
'user' => $user,
|
||||
'contact' => $contact,
|
||||
'profile' => $profile,
|
||||
'photo' => $photo,
|
||||
'pconfig' => $pconfig,
|
||||
'group' => $group,
|
||||
'group_member' => $group_member,
|
||||
);
|
||||
|
||||
//echo "<pre>"; var_dump(json_encode($output)); killme();
|
||||
echo json_encode($output);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* echoes account data and items as separated json, one per line
|
||||
*/
|
||||
function uexport_all(&$a) {
|
||||
|
||||
uexport_account($a);
|
||||
|
||||
$r = q("SELECT count(*) as `total` FROM `item` WHERE `uid` = %d ",
|
||||
intval(local_user())
|
||||
);
|
||||
|
@ -66,7 +194,4 @@ function uexport_init(&$a) {
|
|||
echo json_encode($output);
|
||||
}
|
||||
|
||||
|
||||
killme();
|
||||
|
||||
}
|
50
mod/uimport.php
Normal file
50
mod/uimport.php
Normal file
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
/**
|
||||
* View for user import
|
||||
*/
|
||||
|
||||
require_once("include/uimport.php");
|
||||
|
||||
function uimport_post(&$a) {
|
||||
switch($a->config['register_policy']) {
|
||||
case REGISTER_OPEN:
|
||||
$blocked = 0;
|
||||
$verified = 1;
|
||||
break;
|
||||
|
||||
case REGISTER_APPROVE:
|
||||
$blocked = 1;
|
||||
$verified = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
case REGISTER_CLOSED:
|
||||
if((! x($_SESSION,'authenticated') && (! x($_SESSION,'administrator')))) {
|
||||
notice( t('Permission denied.') . EOL );
|
||||
return;
|
||||
}
|
||||
$blocked = 1;
|
||||
$verified = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
if (x($_FILES,'accountfile')){
|
||||
// TODO: pass $blocked / $verified, send email to admin on REGISTER_APPROVE
|
||||
import_account($a, $_FILES['accountfile']);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
function uimport_content(&$a) {
|
||||
$tpl = get_markup_template("uimport.tpl");
|
||||
return replace_macros($tpl, array(
|
||||
'$regbutt' => t('Import'),
|
||||
'$import' => array(
|
||||
'title' => t("Move account"),
|
||||
'text' => t("You can import an account from another Friendica server. <br>
|
||||
You need to export your account from the old server and upload it here. We will recreate your old account here with all your contacts. We will try also to inform your friends that you moved here.<br>
|
||||
<b>This feature is experimental. We can't import contacts from the OStatus network (statusnet/identi.ca) or from diaspora"),
|
||||
'field' => array('accountfile', t('Account file'),'<input id="id_accountfile" name="accountfile" type="file">', t('To export your accont, go to "Settings->Export your porsonal data" and select "Export account"')),
|
||||
),
|
||||
));
|
||||
}
|
|
@ -4,6 +4,8 @@ require_once('Photo.php');
|
|||
|
||||
function wall_upload_post(&$a) {
|
||||
|
||||
logger("wall upload: starting new upload", LOGGER_DEBUG);
|
||||
|
||||
if($a->argc > 1) {
|
||||
if(! x($_FILES,'media')) {
|
||||
$nick = $a->argv[1];
|
||||
|
@ -160,10 +162,12 @@ function wall_upload_post(&$a) {
|
|||
if ($_REQUEST['hush']!='yeah') {
|
||||
|
||||
/*existing code*/
|
||||
if(local_user() && intval(get_pconfig(local_user(),'system','plaintext')))
|
||||
if(local_user() && (intval(get_pconfig(local_user(),'system','plaintext')) || x($_REQUEST['nomce'])) ) {
|
||||
echo "\n\n" . '[url=' . $a->get_baseurl() . '/photos/' . $page_owner_nick . '/image/' . $hash . '][img]' . $a->get_baseurl() . "/photo/{$hash}-{$smallest}.".$ph->getExt()."[/img][/url]\n\n";
|
||||
else
|
||||
}
|
||||
else {
|
||||
echo '<br /><br /><a href="' . $a->get_baseurl() . '/photos/' . $page_owner_nick . '/image/' . $hash . '" ><img src="' . $a->get_baseurl() . "/photo/{$hash}-{$smallest}.".$ph->getExt()."\" alt=\"$basename\" /></a><br /><br />";
|
||||
}
|
||||
/*existing code*/
|
||||
|
||||
} else {
|
||||
|
|
164
util/messages.po
164
util/messages.po
|
@ -6,9 +6,9 @@
|
|||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 3.0.1517\n"
|
||||
"Project-Id-Version: 3.0.1518\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-11-04 10:00-0800\n"
|
||||
"POT-Creation-Date: 2012-11-05 10:00-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -135,7 +135,7 @@ msgstr ""
|
|||
#: ../../mod/photos.php:1406 ../../mod/photos.php:1450
|
||||
#: ../../mod/photos.php:1522 ../../mod/install.php:246
|
||||
#: ../../mod/install.php:284 ../../mod/localtime.php:45 ../../mod/poke.php:199
|
||||
#: ../../mod/content.php:693 ../../mod/contacts.php:348
|
||||
#: ../../mod/content.php:693 ../../mod/contacts.php:351
|
||||
#: ../../mod/settings.php:543 ../../mod/settings.php:697
|
||||
#: ../../mod/settings.php:769 ../../mod/settings.php:976
|
||||
#: ../../mod/group.php:85 ../../mod/mood.php:137 ../../mod/message.php:294
|
||||
|
@ -1497,7 +1497,7 @@ msgstr ""
|
|||
msgid "via Wall-To-Wall:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/home.php:28 ../../addon/communityhome/communityhome.php:179
|
||||
#: ../../mod/home.php:30 ../../addon/communityhome/communityhome.php:179
|
||||
#: ../../addon.old/communityhome/communityhome.php:179
|
||||
#, php-format
|
||||
msgid "Welcome to %s"
|
||||
|
@ -1513,8 +1513,8 @@ msgid "Discard"
|
|||
msgstr ""
|
||||
|
||||
#: ../../mod/notifications.php:51 ../../mod/notifications.php:163
|
||||
#: ../../mod/notifications.php:209 ../../mod/contacts.php:321
|
||||
#: ../../mod/contacts.php:375
|
||||
#: ../../mod/notifications.php:209 ../../mod/contacts.php:324
|
||||
#: ../../mod/contacts.php:378
|
||||
msgid "Ignore"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1566,7 +1566,7 @@ msgid "suggested by %s"
|
|||
msgstr ""
|
||||
|
||||
#: ../../mod/notifications.php:156 ../../mod/notifications.php:203
|
||||
#: ../../mod/contacts.php:381
|
||||
#: ../../mod/contacts.php:384
|
||||
msgid "Hide this contact from others"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1716,279 +1716,279 @@ msgstr ""
|
|||
msgid "Contact has been unignored"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:216
|
||||
#: ../../mod/contacts.php:219
|
||||
msgid "Contact has been archived"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:216
|
||||
#: ../../mod/contacts.php:219
|
||||
msgid "Contact has been unarchived"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:229
|
||||
#: ../../mod/contacts.php:232
|
||||
msgid "Contact has been removed."
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:263
|
||||
#: ../../mod/contacts.php:266
|
||||
#, php-format
|
||||
msgid "You are mutual friends with %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:267
|
||||
#: ../../mod/contacts.php:270
|
||||
#, php-format
|
||||
msgid "You are sharing with %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:272
|
||||
#: ../../mod/contacts.php:275
|
||||
#, php-format
|
||||
msgid "%s is sharing with you"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:289
|
||||
#: ../../mod/contacts.php:292
|
||||
msgid "Private communications are not available for this contact."
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:292
|
||||
#: ../../mod/contacts.php:295
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:296
|
||||
#: ../../mod/contacts.php:299
|
||||
msgid "(Update was successful)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:296
|
||||
#: ../../mod/contacts.php:299
|
||||
msgid "(Update was not successful)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:298
|
||||
#: ../../mod/contacts.php:301
|
||||
msgid "Suggest friends"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:302
|
||||
#: ../../mod/contacts.php:305
|
||||
#, php-format
|
||||
msgid "Network type: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:305 ../../include/contact_widgets.php:190
|
||||
#: ../../mod/contacts.php:308 ../../include/contact_widgets.php:190
|
||||
#, php-format
|
||||
msgid "%d contact in common"
|
||||
msgid_plural "%d contacts in common"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../../mod/contacts.php:310
|
||||
#: ../../mod/contacts.php:313
|
||||
msgid "View all contacts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:315 ../../mod/contacts.php:374
|
||||
#: ../../mod/contacts.php:318 ../../mod/contacts.php:377
|
||||
#: ../../mod/admin.php:698
|
||||
msgid "Unblock"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:315 ../../mod/contacts.php:374
|
||||
#: ../../mod/contacts.php:318 ../../mod/contacts.php:377
|
||||
#: ../../mod/admin.php:697
|
||||
msgid "Block"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:318
|
||||
#: ../../mod/contacts.php:321
|
||||
msgid "Toggle Blocked status"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:321 ../../mod/contacts.php:375
|
||||
#: ../../mod/contacts.php:324 ../../mod/contacts.php:378
|
||||
msgid "Unignore"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:324
|
||||
#: ../../mod/contacts.php:327
|
||||
msgid "Toggle Ignored status"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:328
|
||||
#: ../../mod/contacts.php:331
|
||||
msgid "Unarchive"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:328
|
||||
#: ../../mod/contacts.php:331
|
||||
msgid "Archive"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:331
|
||||
#: ../../mod/contacts.php:334
|
||||
msgid "Toggle Archive status"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:334
|
||||
#: ../../mod/contacts.php:337
|
||||
msgid "Repair"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:337
|
||||
#: ../../mod/contacts.php:340
|
||||
msgid "Advanced Contact Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:343
|
||||
#: ../../mod/contacts.php:346
|
||||
msgid "Communications lost with this contact!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:346
|
||||
#: ../../mod/contacts.php:349
|
||||
msgid "Contact Editor"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:349
|
||||
#: ../../mod/contacts.php:352
|
||||
msgid "Profile Visibility"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:350
|
||||
#: ../../mod/contacts.php:353
|
||||
#, php-format
|
||||
msgid ""
|
||||
"Please choose the profile you would like to display to %s when viewing your "
|
||||
"profile securely."
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:351
|
||||
#: ../../mod/contacts.php:354
|
||||
msgid "Contact Information / Notes"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:352
|
||||
#: ../../mod/contacts.php:355
|
||||
msgid "Edit contact notes"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:357 ../../mod/contacts.php:549
|
||||
#: ../../mod/contacts.php:360 ../../mod/contacts.php:552
|
||||
#: ../../mod/viewcontacts.php:62 ../../mod/nogroup.php:40
|
||||
#, php-format
|
||||
msgid "Visit %s's profile [%s]"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:358
|
||||
#: ../../mod/contacts.php:361
|
||||
msgid "Block/Unblock contact"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:359
|
||||
#: ../../mod/contacts.php:362
|
||||
msgid "Ignore contact"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:360
|
||||
#: ../../mod/contacts.php:363
|
||||
msgid "Repair URL settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:361
|
||||
#: ../../mod/contacts.php:364
|
||||
msgid "View conversations"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:363
|
||||
#: ../../mod/contacts.php:366
|
||||
msgid "Delete contact"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:367
|
||||
#: ../../mod/contacts.php:370
|
||||
msgid "Last update:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:369
|
||||
#: ../../mod/contacts.php:372
|
||||
msgid "Update public posts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:371 ../../mod/admin.php:1170
|
||||
#: ../../mod/contacts.php:374 ../../mod/admin.php:1170
|
||||
msgid "Update now"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:378
|
||||
#: ../../mod/contacts.php:381
|
||||
msgid "Currently blocked"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:379
|
||||
#: ../../mod/contacts.php:382
|
||||
msgid "Currently ignored"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:380
|
||||
#: ../../mod/contacts.php:383
|
||||
msgid "Currently archived"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:381
|
||||
#: ../../mod/contacts.php:384
|
||||
msgid ""
|
||||
"Replies/likes to your public posts <strong>may</strong> still be visible"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:434
|
||||
#: ../../mod/contacts.php:437
|
||||
msgid "Suggestions"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:437
|
||||
#: ../../mod/contacts.php:440
|
||||
msgid "Suggest potential friends"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:440 ../../mod/group.php:191
|
||||
#: ../../mod/contacts.php:443 ../../mod/group.php:191
|
||||
msgid "All Contacts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:443
|
||||
#: ../../mod/contacts.php:446
|
||||
msgid "Show all contacts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:446
|
||||
#: ../../mod/contacts.php:449
|
||||
msgid "Unblocked"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:449
|
||||
#: ../../mod/contacts.php:452
|
||||
msgid "Only show unblocked contacts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:453
|
||||
#: ../../mod/contacts.php:456
|
||||
msgid "Blocked"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:456
|
||||
#: ../../mod/contacts.php:459
|
||||
msgid "Only show blocked contacts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:460
|
||||
#: ../../mod/contacts.php:463
|
||||
msgid "Ignored"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:463
|
||||
#: ../../mod/contacts.php:466
|
||||
msgid "Only show ignored contacts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:467
|
||||
#: ../../mod/contacts.php:470
|
||||
msgid "Archived"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:470
|
||||
#: ../../mod/contacts.php:473
|
||||
msgid "Only show archived contacts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:474
|
||||
#: ../../mod/contacts.php:477
|
||||
msgid "Hidden"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:477
|
||||
#: ../../mod/contacts.php:480
|
||||
msgid "Only show hidden contacts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:525
|
||||
#: ../../mod/contacts.php:528
|
||||
msgid "Mutual Friendship"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:529
|
||||
#: ../../mod/contacts.php:532
|
||||
msgid "is a fan of yours"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:533
|
||||
#: ../../mod/contacts.php:536
|
||||
msgid "you are a fan of"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:550 ../../mod/nogroup.php:41
|
||||
#: ../../mod/contacts.php:553 ../../mod/nogroup.php:41
|
||||
msgid "Edit contact"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:571 ../../view/theme/diabook/theme.php:88
|
||||
#: ../../mod/contacts.php:574 ../../view/theme/diabook/theme.php:88
|
||||
#: ../../include/nav.php:139
|
||||
msgid "Contacts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:575
|
||||
#: ../../mod/contacts.php:578
|
||||
msgid "Search your contacts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:576 ../../mod/directory.php:59
|
||||
#: ../../mod/contacts.php:579 ../../mod/directory.php:59
|
||||
msgid "Finding: "
|
||||
msgstr ""
|
||||
|
||||
#: ../../mod/contacts.php:577 ../../mod/directory.php:61
|
||||
#: ../../mod/contacts.php:580 ../../mod/directory.php:61
|
||||
#: ../../include/contact_widgets.php:33
|
||||
msgid "Find"
|
||||
msgstr ""
|
||||
|
@ -6130,7 +6130,7 @@ msgstr ""
|
|||
|
||||
#: ../../addon/dav/friendica/main.php:279
|
||||
#: ../../addon/dav/friendica/main.php:280 ../../include/delivery.php:464
|
||||
#: ../../include/enotify.php:28 ../../include/notifier.php:710
|
||||
#: ../../include/enotify.php:28 ../../include/notifier.php:724
|
||||
#: ../../addon.old/dav/friendica/main.php:279
|
||||
#: ../../addon.old/dav/friendica/main.php:280
|
||||
msgid "noreply"
|
||||
|
@ -8122,7 +8122,7 @@ msgstr ""
|
|||
msgid "Finishes:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../include/delivery.php:457 ../../include/notifier.php:703
|
||||
#: ../../include/delivery.php:457 ../../include/notifier.php:717
|
||||
msgid "(no subject)"
|
||||
msgstr ""
|
||||
|
||||
|
@ -9035,37 +9035,37 @@ msgid ""
|
|||
"form has been opened for too long (>3 hours) before submitting it."
|
||||
msgstr ""
|
||||
|
||||
#: ../../include/Contact.php:111
|
||||
#: ../../include/Contact.php:115
|
||||
msgid "stopped following"
|
||||
msgstr ""
|
||||
|
||||
#: ../../include/Contact.php:220 ../../include/conversation.php:795
|
||||
#: ../../include/Contact.php:225 ../../include/conversation.php:795
|
||||
msgid "Poke"
|
||||
msgstr ""
|
||||
|
||||
#: ../../include/Contact.php:221 ../../include/conversation.php:789
|
||||
#: ../../include/Contact.php:226 ../../include/conversation.php:789
|
||||
msgid "View Status"
|
||||
msgstr ""
|
||||
|
||||
#: ../../include/Contact.php:222 ../../include/conversation.php:790
|
||||
#: ../../include/Contact.php:227 ../../include/conversation.php:790
|
||||
msgid "View Profile"
|
||||
msgstr ""
|
||||
|
||||
#: ../../include/Contact.php:223 ../../include/conversation.php:791
|
||||
#: ../../include/Contact.php:228 ../../include/conversation.php:791
|
||||
msgid "View Photos"
|
||||
msgstr ""
|
||||
|
||||
#: ../../include/Contact.php:224 ../../include/Contact.php:237
|
||||
#: ../../include/Contact.php:229 ../../include/Contact.php:242
|
||||
#: ../../include/conversation.php:792
|
||||
msgid "Network Posts"
|
||||
msgstr ""
|
||||
|
||||
#: ../../include/Contact.php:225 ../../include/Contact.php:237
|
||||
#: ../../include/Contact.php:230 ../../include/Contact.php:242
|
||||
#: ../../include/conversation.php:793
|
||||
msgid "Edit Contact"
|
||||
msgstr ""
|
||||
|
||||
#: ../../include/Contact.php:226 ../../include/Contact.php:237
|
||||
#: ../../include/Contact.php:231 ../../include/Contact.php:242
|
||||
#: ../../include/conversation.php:794
|
||||
msgid "Send PM"
|
||||
msgstr ""
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
|
||||
function po2php_run($argv, $argc) {
|
||||
function po2php_run(&$argv, &$argc) {
|
||||
|
||||
if ($argc!=2) {
|
||||
print "Usage: ".$argv[0]." <file.po>\n\n";
|
||||
|
|
17
view/atom_relocate.tpl
Normal file
17
view/atom_relocate.tpl
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
<dfrn:relocate>
|
||||
|
||||
<dfrn:url>$url</dfrn:url>
|
||||
<dfrn:name>$name</dfrn:name>
|
||||
<dfrn:photo>$photo</dfrn:photo>
|
||||
<dfrn:thumb>$thumb</dfrn:thumb>
|
||||
<dfrn:micro>$micro</dfrn:micro>
|
||||
<dfrn:request>$request</dfrn:request>
|
||||
<dfrn:confirm>$confirm</dfrn:confirm>
|
||||
<dfrn:notify>$notify</dfrn:notify>
|
||||
<dfrn:poll>$poll</dfrn:poll>
|
||||
<dfrn:sitepubkey>$sitepubkey</dfrn:sitepubkey>
|
||||
|
||||
|
||||
</dfrn:relocate>
|
||||
|
File diff suppressed because it is too large
Load diff
|
@ -58,7 +58,7 @@ $a->strings["Tag removed"] = "Tag entfernt";
|
|||
$a->strings["Remove Item Tag"] = "Gegenstands-Tag entfernen";
|
||||
$a->strings["Select a tag to remove: "] = "Wähle ein Tag zum Entfernen aus: ";
|
||||
$a->strings["Remove"] = "Entfernen";
|
||||
$a->strings["%s welcomes %s"] = "%s heißt %s herzlich willkommen";
|
||||
$a->strings["%1\$s welcomes %2\$s"] = "%1\$s heißt %2\$s herzlich willkommen";
|
||||
$a->strings["Authorize application connection"] = "Verbindung der Applikation autorisieren";
|
||||
$a->strings["Return to your app and insert this Securty Code:"] = "Gehe zu deiner Anwendung zurück und trage dort folgenden Sicherheitscode ein:";
|
||||
$a->strings["Please login to continue."] = "Bitte melde dich an um fortzufahren.";
|
||||
|
@ -74,9 +74,8 @@ $a->strings["Profile Photos"] = "Profilbilder";
|
|||
$a->strings["Album not found."] = "Album nicht gefunden.";
|
||||
$a->strings["Delete Album"] = "Album löschen";
|
||||
$a->strings["Delete Photo"] = "Foto löschen";
|
||||
$a->strings["was tagged in a"] = "wurde getaggt in einem";
|
||||
$a->strings["photo"] = "Foto";
|
||||
$a->strings["by"] = "von";
|
||||
$a->strings["%1\$s was tagged in %2\$s by %3\$s"] = "%1\$s wurde von %3\$s in %2\$s getaggt";
|
||||
$a->strings["a photo"] = "einem Foto";
|
||||
$a->strings["Image exceeds size limit of "] = "Die Bildgröße übersteigt das Limit von ";
|
||||
$a->strings["Image file is empty."] = "Bilddatei ist leer.";
|
||||
$a->strings["Unable to process image."] = "Konnte das Bild nicht bearbeiten.";
|
||||
|
@ -253,7 +252,7 @@ $a->strings["The database configuration file \".htconfig.php\" could not be writ
|
|||
$a->strings["Errors encountered creating database tables."] = "Fehler aufgetreten während der Erzeugung der Datenbanktabellen.";
|
||||
$a->strings["<h1>What next</h1>"] = "<h1>Wie geht es weiter?</h1>";
|
||||
$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "WICHTIG: Du musst [manuell] einen Cronjob (o.ä.) für den Poller einrichten.";
|
||||
$a->strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
|
||||
$a->strings["l F d, Y \\@ g:i A"] = "l, d. F Y\\, H:i";
|
||||
$a->strings["Time Conversion"] = "Zeitumrechnung";
|
||||
$a->strings["Friendica provides this service for sharing events with other networks and friends in unknown timezones."] = "Friendica bietet diese Funktion an, um das Teilen von Events mit Kontakten zu vereinfachen, deren Zeitzone nicht ermittelt werden kann.";
|
||||
$a->strings["UTC time: %s"] = "UTC Zeit: %s";
|
||||
|
@ -689,6 +688,7 @@ $a->strings["Choose a profile nickname. This must begin with a text character. Y
|
|||
$a->strings["Choose a nickname: "] = "Spitznamen wählen: ";
|
||||
$a->strings["Register"] = "Registrieren";
|
||||
$a->strings["People Search"] = "Personensuche";
|
||||
$a->strings["photo"] = "Foto";
|
||||
$a->strings["status"] = "Status";
|
||||
$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s mag %2\$ss %3\$s";
|
||||
$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s mag %2\$ss %3\$s nicht";
|
||||
|
@ -826,7 +826,7 @@ $a->strings["Use PHP UTF8 regular expressions"] = "PHP UTF8 Ausdrücke verwenden
|
|||
$a->strings["Show Community Page"] = "Gemeinschaftsseite anzeigen";
|
||||
$a->strings["Display a Community page showing all recent public postings on this site."] = "Zeige die Gemeinschaftsseite mit allen öffentlichen Beiträgen auf diesem Server.";
|
||||
$a->strings["Enable OStatus support"] = "OStatus Unterstützung aktivieren";
|
||||
$a->strings["Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "Biete die eingebaute OStatus (identi.ca, status.net, etc.) Unterstützung an. Jede Kommunikation in OStatus ist öffentlich, so Privatsphäre Warnungen werden bei Bedarf angezeigt.";
|
||||
$a->strings["Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "Biete die eingebaute OStatus (identi.ca, status.net, etc.) Unterstützung an. Jede Kommunikation in OStatus ist öffentlich, Privatsphäre Warnungen werden nur bei Bedarf angezeigt.";
|
||||
$a->strings["Enable Diaspora support"] = "Diaspora-Support aktivieren";
|
||||
$a->strings["Provide built-in Diaspora network compatibility."] = "Verwende die eingebaute Diaspora-Verknüpfung.";
|
||||
$a->strings["Only allow Friendica contacts"] = "Nur Friendica-Kontakte erlauben";
|
||||
|
@ -1973,6 +1973,7 @@ $a->strings["Please enter a video link/URL:"] = "Bitte Link/URL zum Video einfü
|
|||
$a->strings["Please enter an audio link/URL:"] = "Bitte Link/URL zum Audio einfügen:";
|
||||
$a->strings["Tag term:"] = "Tag:";
|
||||
$a->strings["Where are you right now?"] = "Wo hältst du dich jetzt gerade auf?";
|
||||
$a->strings["Delete item(s)?"] = "Einträge löschen?";
|
||||
$a->strings["permissions"] = "Zugriffsrechte";
|
||||
$a->strings["Click here to upgrade."] = "Zum Upgraden hier klicken.";
|
||||
$a->strings["This action exceeds the limits set by your subscription plan."] = "Diese Aktion überschreitet die Obergrenze deines Abonnements.";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
<div class='field checkbox'>
|
||||
<div class='field checkbox' id='div_id_$field.0'>
|
||||
<label for='id_$field.0'>$field.1</label>
|
||||
<input type="checkbox" name='$field.0' id='id_$field.0' value="1" {{ if $field.2 }}checked="checked"{{ endif }}>
|
||||
<span class='field_help'>$field.3</span>
|
||||
|
|
14
view/pl/follow_notify_eml.tpl
Normal file
14
view/pl/follow_notify_eml.tpl
Normal file
|
@ -0,0 +1,14 @@
|
|||
|
||||
Drogi $[myname],
|
||||
|
||||
Masz nowego obserwującego na $[sitename] - '$[requestor]'.
|
||||
|
||||
Możesz odwiedzić jego profil na $[url].
|
||||
|
||||
Zaloguj się na swoją stronę by potwierdzić lub zignorować/anulować prośbę.
|
||||
|
||||
$[siteurl]
|
||||
|
||||
Pozdrawiam,
|
||||
|
||||
$[sitename] Administrator
|
22
view/pl/friend_complete_eml.tpl
Normal file
22
view/pl/friend_complete_eml.tpl
Normal file
|
@ -0,0 +1,22 @@
|
|||
|
||||
Drogi $[username],
|
||||
|
||||
Świetne wieści! '$[fn]' na '$[dfrn_url]' przyjął / przyjęła
|
||||
Twoją prośbę o znajomość na '$[sitename]'.
|
||||
|
||||
Jesteście teraz znajomymi i możecie wymieniać się zmianami statusów, zdjęciami i wiadomościami
|
||||
bez ograniczeń.
|
||||
|
||||
Zajrzyj na stronę 'Kontakty' na $[sitename] jeśli chcesz dokonać
|
||||
zmian w tej relacji.
|
||||
|
||||
$[siteurl]
|
||||
|
||||
[Możesz np.: utworzyć oddzielny profil z informacjami, który nie będzie
|
||||
dostępny dla wszystkich - i przypisać sprawdzanie uprawnień do '$[fn]'].
|
||||
|
||||
Z poważaniem,
|
||||
|
||||
$[sitename] Administrator
|
||||
|
||||
|
22
view/pl/intro_complete_eml.tpl
Normal file
22
view/pl/intro_complete_eml.tpl
Normal file
|
@ -0,0 +1,22 @@
|
|||
|
||||
Drogi $[username],
|
||||
|
||||
'$[fn]' w '$[dfrn_url]' zaakceptował
|
||||
twoje połączenie na '$[sitename]'.
|
||||
|
||||
'$[fn]' zaakceptował Cię jako "fana", uniemożliwiając
|
||||
pewne sposoby komunikacji - takie jak prywatne wiadomości czy niektóre formy
|
||||
interakcji pomiędzy profilami. Jeśli jest to strona gwiazdy lub społeczności, ustawienia zostały
|
||||
zastosowane automatycznie.
|
||||
|
||||
'$[fn]' może rozszeżyć to w dwustronną komunikację lub więcej (doprecyzować)
|
||||
relacje w przyszłości.
|
||||
|
||||
Będziesz teraz otrzymywać aktualizacje statusu od '$[fn]',
|
||||
który będzie pojawiać się na Twojej stronie "Sieć"
|
||||
|
||||
$[siteurl]
|
||||
|
||||
Z poważaniem,
|
||||
|
||||
Administrator $[sitename]
|
32
view/pl/lostpass_eml.tpl
Normal file
32
view/pl/lostpass_eml.tpl
Normal file
|
@ -0,0 +1,32 @@
|
|||
|
||||
$[username],
|
||||
Ze strony $[sitename] wpłynęła prośba z zresetowanie
|
||||
hasła. W celu potwierdzenia kliknij w weryfikacyjny link
|
||||
zamieszczony poniżej, lub wklej go do pasku adresu twojej przeglądarki.
|
||||
|
||||
Jeśli uważasz, że wiadomość nie jest przeznaczona dla ciebie, nie klikaj w linka!
|
||||
Zignoruj tego emaila i usuń.
|
||||
|
||||
Twoje hasło nie może zostać zmienione zanim nie potwierdzimy
|
||||
twojego żądania.
|
||||
|
||||
Aby potwierdzić kliknik w link weryfikacyjny:
|
||||
|
||||
$[reset_link]
|
||||
|
||||
Otrzymasz od nas wiadomość zwrotną zawierającą nowe hasło.
|
||||
|
||||
Po zalogowaniu się, będziesz miał możliwość zmiany hasła na takie jakie chcesz.
|
||||
|
||||
Dane do zalogowania:
|
||||
|
||||
Adres strony: $[siteurl]
|
||||
Login: $[email]
|
||||
|
||||
|
||||
|
||||
|
||||
Z poważaniem,
|
||||
$[sitename] Administrator
|
||||
|
||||
|
9369
view/pl/messages.po
Normal file
9369
view/pl/messages.po
Normal file
File diff suppressed because it is too large
Load diff
20
view/pl/passchanged_eml.tpl
Normal file
20
view/pl/passchanged_eml.tpl
Normal file
|
@ -0,0 +1,20 @@
|
|||
|
||||
Drogi $[username],
|
||||
Twoje hasło zostało zmienione. Zachowaj tę
|
||||
Informację dla dokumentacji (lub zmień swoje hasło
|
||||
na takie, które zapamiętasz).
|
||||
|
||||
|
||||
Dane do logowania:
|
||||
|
||||
Strona:»$[siteurl]
|
||||
Twój login:»$[email]
|
||||
Twoje nowe hasło:»$[new_password]
|
||||
|
||||
Po zalogowaniu możesz zmienić swoje hasło w ustawieniach konta
|
||||
|
||||
|
||||
Z poważaniem,
|
||||
$[sitename] Administrator
|
||||
|
||||
|
36
view/pl/register_open_eml.tpl
Normal file
36
view/pl/register_open_eml.tpl
Normal file
|
@ -0,0 +1,36 @@
|
|||
|
||||
Drogi $[username],
|
||||
Dziękujemy za rejestrację na $[sitename]. Twoje konto zostało utworzone pomyślnie.
|
||||
Dane do logowania:
|
||||
|
||||
|
||||
Strona:»$[siteurl]
|
||||
Twój Nick:»$[email]
|
||||
Hasło:»$[password]
|
||||
|
||||
Możesz zmienić swoje hasło odwiedzając zakładkę ustawienia konta po zalogowaniu
|
||||
|
||||
się.
|
||||
|
||||
Przejrzyj też inne ustawienia konta. To zajmie Ci tylko chwilę.
|
||||
|
||||
Jeżeli chcesz, by inni mogli Cię łatwo znaleść wystarczy dodać podstawowe informacje
|
||||
o sobie na stronie "Profile".
|
||||
|
||||
Zalecamy dodać prawdziwe imię i nazwisko, zdjęcie profilowe,
|
||||
słowa kluczowe (pomocne w zdobywaniu nowych przyjaciół) - i
|
||||
może kraj, w którym mieszkasz, jeżeli nie chcesz dodać bardziej szczegółowych
|
||||
|
||||
informacji niż ta.
|
||||
|
||||
Szanujemy też twoją prywatność, więc żadna z podpowiadanych wyżej czynności nie jest przymusowa.
|
||||
Jeżeli jesteś nowy i nie znasz tu nikogo, mogą one jedynie
|
||||
pomóć w zdobywaniu nowych znajomości.
|
||||
|
||||
|
||||
Dziękujemy i witamy na $[sitename].
|
||||
|
||||
Z poważaniem,
|
||||
$[sitename] Administrator
|
||||
|
||||
|
25
view/pl/register_verify_eml.tpl
Normal file
25
view/pl/register_verify_eml.tpl
Normal file
|
@ -0,0 +1,25 @@
|
|||
|
||||
Nowy wniosek o rejestrację użytkownika wpłynął na $[sitename] i wymaga
|
||||
potwierdzenia.
|
||||
|
||||
|
||||
Oto szczegóły konta:
|
||||
|
||||
Pełna nazwa:»$[username]
|
||||
Jesteś na: $[siteurl]
|
||||
Login:»$[email]
|
||||
|
||||
|
||||
Aby potwierdzić rejestrację wejdź na:
|
||||
|
||||
|
||||
$[siteurl]/regmod/allow/$[hash]
|
||||
|
||||
|
||||
Aby anulować rejestrację i usunąć konto wejdź na:
|
||||
|
||||
|
||||
$[siteurl]/regmod/deny/$[hash]
|
||||
|
||||
|
||||
Dziękuję.
|
17
view/pl/request_notify_eml.tpl
Normal file
17
view/pl/request_notify_eml.tpl
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
Drogi/a $[myname],
|
||||
|
||||
Otrzymałeś właśnie zaproszenie do znajomych na stronie $[sitename]
|
||||
|
||||
od '$[requestor]'.
|
||||
|
||||
Skorzystaj z tego linku, aby odwiedzić jego profil: $[url].
|
||||
|
||||
Proszę się zalogować, aby zobaczyć pełen opis
|
||||
i zaakceptować lub zignorować / anulować.
|
||||
|
||||
$[siteurl]
|
||||
|
||||
Pozdrawiam
|
||||
|
||||
$[sitename] administrator
|
2032
view/pl/strings.php
Normal file
2032
view/pl/strings.php
Normal file
File diff suppressed because it is too large
Load diff
11
view/pl/update_fail_eml.tpl
Normal file
11
view/pl/update_fail_eml.tpl
Normal file
|
@ -0,0 +1,11 @@
|
|||
Hey,
|
||||
Jestem $sitename.
|
||||
Deweloperzy friendica wydali ostatnio aktualizację $update,
|
||||
ale kiedy próbowałem ją zainstalować, coś poszło nie tak.
|
||||
To musi być szybko poprawione, ale nie mogę zrobić tego sam. Proszę o kontakt z
|
||||
deweloperami friendica, jeśli nie możesz mi pomóc na własną rękę. Moja baza danych może być uszkodzona.
|
||||
|
||||
Komunikat o błędzie: '$error'.
|
||||
|
||||
Przepraszam,
|
||||
twój serwer friendica w $siteurl
|
|
@ -55,6 +55,7 @@
|
|||
<input type="submit" name="submit" id="register-submit-button" value="$regbutt" />
|
||||
</div>
|
||||
<div id="register-submit-end" ></div>
|
||||
|
||||
</form>
|
||||
|
||||
$license
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<?php if( $a->module === 'home' ) { ?>
|
||||
<center>
|
||||
<div class="login-button">
|
||||
<a href="login" class="login-button-link"><img class="login-button-image" src="/images/friendica-1600.png" title="Click to log in"></a>
|
||||
<a href="login" class="login-button-link"><img class="login-button-image" src="images/friendica-1600.png" title="Click to log in"></a>
|
||||
</div>
|
||||
</center>
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<script type="text/javascript">
|
||||
tinyMCE.init({ mode : "none"});
|
||||
</script>-->
|
||||
<script type="text/javascript" src="$baseurl/view/theme/frost/js/jquery.divgrow-1.3.1.min.js" ></script>
|
||||
<script type="text/javascript" src="$baseurl/view/theme/frost-mobile/js/main.min.js" ></script>
|
||||
<script type="text/javascript" src="$baseurl/js/jquery.textinputs.js" ></script>
|
||||
<script type="text/javascript" src="$baseurl/view/theme/frost-mobile/js/fk.autocomplete.min.js" ></script>
|
||||
<!--<script type="text/javascript" src="$baseurl/library/fancybox/jquery.fancybox-1.3.4.pack.js"></script>-->
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
<div class='field checkbox'>
|
||||
<div class='field checkbox' id='div_id_$field.0'>
|
||||
<label id='label_id_$field.0' for='id_$field.0'>$field.1</label>
|
||||
<input type="checkbox" name='$field.0' id='id_$field.0' value="1" {{ if $field.2 }}checked="checked"{{ endif }}><br />
|
||||
<span class='field_help' id='help_id_$field.0'>$field.3</span>
|
||||
|
|
|
@ -29,5 +29,5 @@
|
|||
</script>
|
||||
<script type="text/javascript" src="$baseurl/js/jquery.js" ></script>
|
||||
<script type="text/javascript">var $j = jQuery.noConflict();</script>
|
||||
<script type="text/javascript" src="$baseurl/view/theme/frost-mobile/js/main.min.js" ></script>
|
||||
<script type="text/javascript" src="$baseurl/view/theme/frost-mobile/js/jquery.divgrow-1.3.1.f1.min.js" ></script>
|
||||
|
||||
|
|
92
view/theme/frost-mobile/js/jquery.divgrow-1.3.1.f1.js
Normal file
92
view/theme/frost-mobile/js/jquery.divgrow-1.3.1.f1.js
Normal file
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
* Copyright (c) 2010 Simon Hibbard
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Version: V1.3.1-f1
|
||||
* Release: 22-12-2010
|
||||
* Based on jQuery 1.4.2
|
||||
*
|
||||
* 2012-10-29: Modified by Zach Prezkuta to allow dynamic full heights
|
||||
*/
|
||||
|
||||
(function ($) {
|
||||
var divgrowid = 0;
|
||||
$.fn.divgrow = function (options) {
|
||||
var options = $.extend({}, { initialHeight: 100, moreText: "+ Show More", lessText: "- Show Less", speed: 1000, showBrackets: true }, options);
|
||||
|
||||
return this.each(function () {
|
||||
divgrowid++;
|
||||
|
||||
obj = $(this);
|
||||
|
||||
//var fullHeight = obj.height() + 10;
|
||||
|
||||
obj.css('height', options.initialHeight).css('overflow', 'hidden');
|
||||
if (options.showBrackets) {
|
||||
obj.after('<p class="divgrow-brackets">[…]</p><a href="#" class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></a>');
|
||||
}
|
||||
else {
|
||||
obj.after('<a href="#" class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></a>');
|
||||
}
|
||||
$("a.divgrow-showmore").html(options.moreText);
|
||||
|
||||
$("." + "divgrow-obj-" + divgrowid).toggle(function () {
|
||||
//alert(obj.attr('class'));
|
||||
// Set the height from the elements rel value
|
||||
//var height = $(this).prevAll("div:first").attr('rel');
|
||||
|
||||
var fullHeight = $(this).prevAll("div:first")[0].scrollHeight + 10;
|
||||
$(this).prevAll("div:first").animate({ height: fullHeight + "px" }, options.speed, function () { // Animation complete.
|
||||
|
||||
// Hide the overlay text when expanded, change the link text
|
||||
if (options.showBrackets) {
|
||||
$(this).nextAll("p.divgrow-brackets:first").fadeOut();
|
||||
}
|
||||
$(this).nextAll("a.divgrow-showmore:first").html(options.lessText);
|
||||
|
||||
});
|
||||
|
||||
|
||||
}, function () {
|
||||
|
||||
$(this).prevAll("div:first").stop(true, false).animate({ height: options.initialHeight }, options.speed, function () { // Animation complete.
|
||||
|
||||
// show the overlay text while closed, change the link text
|
||||
if (options.showBrackets) {
|
||||
$(this).nextAll("p.divgrow-brackets:first").stop(true, false).fadeIn();
|
||||
}
|
||||
$(this).nextAll("a.divgrow-showmore:first").stop(true, false).html(options.moreText);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
};
|
||||
})(jQuery);
|
||||
|
||||
|
||||
|
||||
|
||||
|
30
view/theme/frost-mobile/js/jquery.divgrow-1.3.1.f1.min.js
vendored
Normal file
30
view/theme/frost-mobile/js/jquery.divgrow-1.3.1.f1.min.js
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2010 Simon Hibbard
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*//*
|
||||
* Version: V1.3.1-f1
|
||||
* Release: 22-12-2010
|
||||
* Based on jQuery 1.4.2
|
||||
*
|
||||
* 2012-10-29: Modified by Zach Prezkuta to allow dynamic full heights
|
||||
*/(function(e){var t=0;e.fn.divgrow=function(n){var n=e.extend({},{initialHeight:100,moreText:"+ Show More",lessText:"- Show Less",speed:1e3,showBrackets:!0},n);return this.each(function(){t++,obj=e(this),obj.css("height",n.initialHeight).css("overflow","hidden"),n.showBrackets?obj.after('<p class="divgrow-brackets">[…]</p><a href="#" class="divgrow-showmore divgrow-obj-'+t+'"'+"></a>"):obj.after('<a href="#" class="divgrow-showmore divgrow-obj-'+t+'"'+"></a>"),e("a.divgrow-showmore").html(n.moreText),e(".divgrow-obj-"+t).toggle(function(){var t=e(this).prevAll("div:first")[0].scrollHeight+10;e(this).prevAll("div:first").animate({height:t+"px"},n.speed,function(){n.showBrackets&&e(this).nextAll("p.divgrow-brackets:first").fadeOut(),e(this).nextAll("a.divgrow-showmore:first").html(n.lessText)})},function(){e(this).prevAll("div:first").stop(!0,!1).animate({height:n.initialHeight},n.speed,function(){n.showBrackets&&e(this).nextAll("p.divgrow-brackets:first").stop(!0,!1).fadeIn(),e(this).nextAll("a.divgrow-showmore:first").stop(!0,!1).html(n.moreText)})})})}})(jQuery);
|
|
@ -38,6 +38,8 @@
|
|||
|
||||
msie = $j.browser.msie ;
|
||||
|
||||
collapseHeight();
|
||||
|
||||
/* setup tooltips *//*
|
||||
$j("a,.tt").each(function(){
|
||||
var e = $j(this);
|
||||
|
@ -333,20 +335,7 @@
|
|||
});
|
||||
|
||||
|
||||
var bimgs = $j(".wall-item-body > img").not(function() { return this.complete; });
|
||||
var bimgcount = bimgs.length;
|
||||
|
||||
if (bimgcount) {
|
||||
bimgs.load(function() {
|
||||
bimgcount--;
|
||||
if (! bimgcount) {
|
||||
collapseHeight();
|
||||
|
||||
}
|
||||
});
|
||||
} else {
|
||||
collapseHeight();
|
||||
}
|
||||
collapseHeight();
|
||||
|
||||
// reset vars for inserting individual items
|
||||
|
||||
|
@ -385,14 +374,18 @@
|
|||
});
|
||||
}
|
||||
|
||||
function collapseHeight() {
|
||||
$j(".wall-item-body").each(function() {
|
||||
if($j(this).height() > 310) {
|
||||
if(! $j(this).hasClass('divmore')) {
|
||||
$j(this).divgrow({ initialHeight: 300, showBrackets: false, speed: 0 });
|
||||
$j(this).addClass('divmore');
|
||||
}
|
||||
}
|
||||
function collapseHeight(elems) {
|
||||
var elemName = '.wall-item-body:not(.divmore)';
|
||||
if(typeof elems != 'undefined') {
|
||||
elemName = elems + ' ' + elemName;
|
||||
}
|
||||
$j(elemName).each(function() {
|
||||
if($j(this).height() > 350) {
|
||||
$j('html').height($j('html').height());
|
||||
$j(this).divgrow({ initialHeight: 300, showBrackets: false, speed: 0 });
|
||||
$j(this).addClass('divmore');
|
||||
$j('html').height('auto');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -542,6 +535,7 @@
|
|||
else {
|
||||
$j("#collapsed-comments-" + id).show();
|
||||
$j("#hide-comments-" + id).html(window.showFewer);
|
||||
collapseHeight("#collapsed-comments-" + id);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
2
view/theme/frost-mobile/js/main.min.js
vendored
2
view/theme/frost-mobile/js/main.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -9,7 +9,7 @@ $j(document).ready(function() {
|
|||
case 'jot-header':
|
||||
var uploader = new window.AjaxUpload(
|
||||
'wall-image-upload',
|
||||
{ action: 'wall_upload/'+window.nickname,
|
||||
{ action: 'wall_upload/'+window.nickname+'?nomce=1',
|
||||
name: 'userfile',
|
||||
onSubmit: function(file,ext) { $j('#profile-rotator').show(); },
|
||||
onComplete: function(file,response) {
|
||||
|
@ -21,7 +21,7 @@ $j(document).ready(function() {
|
|||
|
||||
var file_uploader = new window.AjaxUpload(
|
||||
'wall-file-upload',
|
||||
{ action: 'wall_attach/'+window.nickname,
|
||||
{ action: 'wall_attach/'+window.nickname+'?nomce=1',
|
||||
name: 'userfile',
|
||||
onSubmit: function(file,ext) { $j('#profile-rotator').show(); },
|
||||
onComplete: function(file,response) {
|
||||
|
@ -34,7 +34,7 @@ $j(document).ready(function() {
|
|||
case 'msg-header':
|
||||
var uploader = new window.AjaxUpload(
|
||||
'prvmail-upload',
|
||||
{ action: 'wall_upload/' + window.nickname,
|
||||
{ action: 'wall_upload/'+window.nickname+'?nomce=1',
|
||||
name: 'userfile',
|
||||
onSubmit: function(file,ext) { $j('#profile-rotator').show(); },
|
||||
onComplete: function(file,response) {
|
||||
|
@ -251,14 +251,14 @@ function insertFormatting(comment,BBcode,id) {
|
|||
textarea.focus();
|
||||
selected = document.selection.createRange();
|
||||
if (BBcode == "url"){
|
||||
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
|
||||
selected.text = "["+BBcode+"=http://]" + selected.text + "[/"+BBcode+"]";
|
||||
} else
|
||||
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
|
||||
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
|
||||
var start = textarea.selectionStart;
|
||||
var end = textarea.selectionEnd;
|
||||
if (BBcode == "url"){
|
||||
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
|
||||
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"=http://]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
|
||||
} else
|
||||
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
|
||||
}
|
||||
|
|
2
view/theme/frost-mobile/js/theme.min.js
vendored
2
view/theme/frost-mobile/js/theme.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -24,15 +24,17 @@ div.jGrowl div.notice {
|
|||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
padding-left: 58px;
|
||||
margin: 0px;
|
||||
}
|
||||
div.jGrowl div.info {
|
||||
background: #364e59 url("../../../images/icons/48/info.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
padding-left: 58px;
|
||||
margin: 0px;
|
||||
}
|
||||
#jGrowl.top-right {
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
.login-button {
|
||||
|
@ -75,6 +77,16 @@ div.section-wrapper {
|
|||
margin-left: 50px;
|
||||
}
|
||||
|
||||
.field.checkbox label {
|
||||
margin-left: auto;
|
||||
float: auto;
|
||||
/*margin-left: 100px;*/
|
||||
}
|
||||
.field.checkbox input {
|
||||
width: auto;
|
||||
margin-left: 30px;
|
||||
}
|
||||
|
||||
#login_openid {
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
<link rel="stylesheet" href="$baseurl/view/theme/frost-mobile/login-style.css" type="text/css" media="all" />
|
||||
<!--<link rel="stylesheet" href="$baseurl/view/theme/frost-mobile/login-style.css" type="text/css" media="all" />-->
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ img { border :0px; }
|
|||
width: 384px;
|
||||
}*/
|
||||
|
||||
code {
|
||||
/*code {
|
||||
font-family: Courier, monospace;
|
||||
white-space: pre;
|
||||
display: block;
|
||||
|
@ -85,6 +85,24 @@ blockquote {
|
|||
margin-right: 0px;
|
||||
width: 260px;
|
||||
overflow: hidden;
|
||||
}*/
|
||||
|
||||
code {
|
||||
font-family: Courier, monospace;
|
||||
white-space: pre;
|
||||
display: block;
|
||||
overflow: auto;
|
||||
border: 1px solid #444;
|
||||
background: #EEE;
|
||||
color: #444;
|
||||
padding: 10px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
background-color: #f4f8f9;
|
||||
border-left: 4px solid #dae4ee;
|
||||
padding: 0.4em;
|
||||
}
|
||||
|
||||
.icollapse-wrapper, .ccollapse-wrapper {
|
||||
|
@ -1368,10 +1386,19 @@ input#dfrn-url {
|
|||
-webkit-border-radius: 0;
|
||||
}
|
||||
|
||||
.wall-item-content blockquote {
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
.comment .wall-item-content img {
|
||||
max-width: 280px;
|
||||
}
|
||||
|
||||
.comment .wall-item-content ul {
|
||||
padding-left: 1.5em;
|
||||
}
|
||||
|
||||
.divgrow-showmore {
|
||||
display: block;
|
||||
clear: both;
|
||||
|
@ -1411,7 +1438,6 @@ input#dfrn-url {
|
|||
}
|
||||
|
||||
.wall-item-body code {
|
||||
width: 260px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
@ -1421,12 +1447,6 @@ input#dfrn-url {
|
|||
/* width: 280px;*/
|
||||
}
|
||||
|
||||
.comment .wall-item-body blockquote {
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
width: 260px;
|
||||
}
|
||||
|
||||
.wall-item-tools {
|
||||
clear: both;
|
||||
/* background-image: url("head.jpg");
|
||||
|
@ -3404,6 +3424,7 @@ aside input[type='text'] {
|
|||
}
|
||||
|
||||
|
||||
|
||||
.field .onoff {
|
||||
float: left;
|
||||
width: 80px;
|
||||
|
@ -3714,6 +3735,7 @@ aside input[type='text'] {
|
|||
background-size: 100% 100%;
|
||||
background-image: url('images/star.png');
|
||||
background-repeat: no-repeat;
|
||||
|
||||
opacity: 0.5;
|
||||
}
|
||||
/*.tagged { background-position: -48px -48px; }*/
|
||||
|
@ -3863,15 +3885,17 @@ div.jGrowl div.notice {
|
|||
background: #511919 url("../../../images/icons/48/notice.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
padding-left: 58px;
|
||||
margin: 0px;
|
||||
}
|
||||
div.jGrowl div.info {
|
||||
background: #364e59 url("../../../images/icons/48/info.png") no-repeat 5px center;
|
||||
color: #ffffff;
|
||||
padding-left: 58px;
|
||||
margin: 0px;
|
||||
}
|
||||
#jGrowl.top-right {
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
right: 10px;
|
||||
}
|
||||
.qcomment {
|
||||
border: 1px solid #EEE;
|
||||
|
@ -4009,7 +4033,7 @@ width:650px;
|
|||
}
|
||||
}*/
|
||||
|
||||
@media only screen and (min-device-width: 768px)
|
||||
/*@media only screen and (min-device-width: 768px)
|
||||
{
|
||||
.wall-item-body code {
|
||||
width: 700px;
|
||||
|
@ -4023,5 +4047,5 @@ width:650px;
|
|||
width: 700px;
|
||||
}
|
||||
|
||||
}
|
||||
}*/
|
||||
|
||||
|
|
|
@ -4,29 +4,27 @@
|
|||
* Name: Frost--mobile version
|
||||
* Description: Like frosted glass
|
||||
* Credits: Navigation icons taken from http://iconza.com. Other icons taken from http://thenounproject.com, including: Like, Dislike, Black Lock, Unlock, Pencil, Tag, Camera, Paperclip (Marie Coons), Folder (Sergio Calcara), Chain-link (Andrew Fortnum), Speaker (Harold Kim), Quotes (Henry Ryder), Video Camera (Anas Ramadan), and Left Arrow, Right Arrow, and Delete X (all three P.J. Onori). All under Attribution (CC BY 3.0). Others from The Noun Project are public domain or No Rights Reserved (CC0).
|
||||
* Version: Version 0.2.15
|
||||
* Version: Version 0.2.16
|
||||
* Author: Zach P <techcity@f.shmuz.in>
|
||||
* Maintainer: Zach P <techcity@f.shmuz.in>
|
||||
*/
|
||||
|
||||
$a->theme_info = array();
|
||||
$a->sourcename = 'Friendica mobile web';
|
||||
$a->videowidth = 250;
|
||||
$a->videoheight = 200;
|
||||
$a->theme_thread_allow = false;
|
||||
$a->force_max_items = 10;
|
||||
|
||||
function frost_mobile_init(&$a) {
|
||||
function frost_mobile_content_loaded(&$a) {
|
||||
|
||||
// I could do this in style.php, but by having the CSS in a file the browser will cache it,
|
||||
// making pages load faster
|
||||
if( $a->module === 'home' || $a->module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) {
|
||||
$a->page['htmlhead'] = str_replace('$stylesheet', $a->get_baseurl() . '/view/theme/frost-mobile/login-style.css', $a->page['htmlhead']);
|
||||
|
||||
// $a->page['htmlhead'] = str_replace('$stylesheet', $a->get_baseurl() . '/view/theme/frost-mobile/login-style.css', $a->page['htmlhead']);
|
||||
$a->theme['stylesheet'] = $a->get_baseurl() . '/view/theme/frost-mobile/login-style.css';
|
||||
}
|
||||
if( $a->module === 'login' )
|
||||
$a->page['end'] .= '<script type="text/javascript"> $j(document).ready(function() { $j("#id_" + window.loginName).focus();} );</script>';
|
||||
|
||||
|
||||
$a->sourcename = 'Friendica mobile web';
|
||||
$a->videowidth = 250;
|
||||
$a->videoheight = 200;
|
||||
$a->theme_thread_allow = false;
|
||||
$a->force_max_items = 10;
|
||||
|
||||
}
|
||||
|
|
|
@ -12,7 +12,8 @@
|
|||
{{ if $item.owner_url }}
|
||||
<div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-$item.id" >
|
||||
<a href="$item.owner_url" target="redir" title="$item.olinktitle" class="wall-item-photo-link" id="wall-item-ownerphoto-link-$item.id">
|
||||
<img src="$item.owner_photo" class="wall-item-photo$item.osparkle" id="wall-item-ownerphoto-$item.id" style="height: 80px; width: 80px;" alt="$item.owner_name" /></a>
|
||||
<img src="$item.owner_photo" class="wall-item-photo$item.osparkle" id="wall-item-ownerphoto-$item.id" style="height: 80px; width: 80px;" alt="$item.owner_name" onError="this.src='../../../images/person-48.jpg';" />
|
||||
</a>
|
||||
</div>
|
||||
<div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="$item.wall" /></div>
|
||||
{{ endif }}
|
||||
|
@ -21,7 +22,8 @@
|
|||
onmouseout="t$item.id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$item.id\'); closeMenu(\'wall-item-photo-menu-$item.id\');',200)">-->
|
||||
<div class="wall-item-photo-wrapper{{ if $item.owner_url }} wwfrom{{ endif }}" id="wall-item-photo-wrapper-$item.id">
|
||||
<a href="$item.profile_url" target="redir" title="$item.linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$item.id">
|
||||
<img src="$item.thumb" class="wall-item-photo$item.sparkle" id="wall-item-photo-$item.id" style="height: 80px; width: 80px;" alt="$item.name" /></a>
|
||||
<img src="$item.thumb" class="wall-item-photo$item.sparkle" id="wall-item-photo-$item.id" style="height: 80px; width: 80px;" alt="$item.name" onError="this.src='../../../images/person-48.jpg';" />
|
||||
</a>
|
||||
<!--<span onclick="openClose('wall-item-photo-menu-$item.id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$item.id">menu</span>
|
||||
<div class="wall-item-photo-menu" id="wall-item-photo-menu-$item.id">
|
||||
<ul class="wall-item-photo-menu" id="wall-item-photo-menu-$item.id">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
</script>
|
||||
<script type="text/javascript" src="$baseurl/js/jquery.js" ></script>
|
||||
<script type="text/javascript">var $j = jQuery.noConflict();</script>
|
||||
<script type="text/javascript" src="$baseurl/view/theme/frost/js/jquery.divgrow-1.3.1.min.js" ></script>
|
||||
<script type="text/javascript" src="$baseurl/view/theme/frost/js/jquery.divgrow-1.3.1.f1.min.js" ></script>
|
||||
<script type="text/javascript" src="$baseurl/js/jquery.textinputs.js" ></script>
|
||||
<script type="text/javascript" src="$baseurl/view/theme/frost/js/fk.autocomplete.min.js" ></script>
|
||||
<script type="text/javascript" src="$baseurl/library/fancybox/jquery.fancybox-1.3.4.pack.js"></script>
|
||||
|
@ -15,6 +15,6 @@
|
|||
<script type="text/javascript" src="$baseurl/library/jgrowl/jquery.jgrowl_minimized.js"></script>
|
||||
<script type="text/javascript" src="$baseurl/view/theme/frost/js/acl.min.js" ></script>
|
||||
<script type="text/javascript" src="$baseurl/js/webtoolkit.base64.min.js" ></script>
|
||||
<script type="text/javascript" src="$baseurl/view/theme/frost/js/theme.min.js"></script>
|
||||
<script type="text/javascript" src="$baseurl/view/theme/frost/js/main.min.js" ></script>
|
||||
<script type="text/javascript" src="$baseurl/view/theme/frost/js/theme.min.js"></script>
|
||||
|
||||
|
|
92
view/theme/frost/js/jquery.divgrow-1.3.1.f1.js
Normal file
92
view/theme/frost/js/jquery.divgrow-1.3.1.f1.js
Normal file
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
* Copyright (c) 2010 Simon Hibbard
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Version: V1.3.1-f1
|
||||
* Release: 22-12-2010
|
||||
* Based on jQuery 1.4.2
|
||||
*
|
||||
* 2012-10-29: Modified by Zach Prezkuta to allow dynamic full heights
|
||||
*/
|
||||
|
||||
(function ($) {
|
||||
var divgrowid = 0;
|
||||
$.fn.divgrow = function (options) {
|
||||
var options = $.extend({}, { initialHeight: 100, moreText: "+ Show More", lessText: "- Show Less", speed: 1000, showBrackets: true }, options);
|
||||
|
||||
return this.each(function () {
|
||||
divgrowid++;
|
||||
|
||||
obj = $(this);
|
||||
|
||||
//var fullHeight = obj.height() + 10;
|
||||
|
||||
obj.css('height', options.initialHeight).css('overflow', 'hidden');
|
||||
if (options.showBrackets) {
|
||||
obj.after('<p class="divgrow-brackets">[…]</p><a href="#" class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></a>');
|
||||
}
|
||||
else {
|
||||
obj.after('<a href="#" class="divgrow-showmore' + " divgrow-obj-" + divgrowid + '"' + '></a>');
|
||||
}
|
||||
$("a.divgrow-showmore").html(options.moreText);
|
||||
|
||||
$("." + "divgrow-obj-" + divgrowid).toggle(function () {
|
||||
//alert(obj.attr('class'));
|
||||
// Set the height from the elements rel value
|
||||
//var height = $(this).prevAll("div:first").attr('rel');
|
||||
|
||||
var fullHeight = $(this).prevAll("div:first")[0].scrollHeight + 10;
|
||||
$(this).prevAll("div:first").animate({ height: fullHeight + "px" }, options.speed, function () { // Animation complete.
|
||||
|
||||
// Hide the overlay text when expanded, change the link text
|
||||
if (options.showBrackets) {
|
||||
$(this).nextAll("p.divgrow-brackets:first").fadeOut();
|
||||
}
|
||||
$(this).nextAll("a.divgrow-showmore:first").html(options.lessText);
|
||||
|
||||
});
|
||||
|
||||
|
||||
}, function () {
|
||||
|
||||
$(this).prevAll("div:first").stop(true, false).animate({ height: options.initialHeight }, options.speed, function () { // Animation complete.
|
||||
|
||||
// show the overlay text while closed, change the link text
|
||||
if (options.showBrackets) {
|
||||
$(this).nextAll("p.divgrow-brackets:first").stop(true, false).fadeIn();
|
||||
}
|
||||
$(this).nextAll("a.divgrow-showmore:first").stop(true, false).html(options.moreText);
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
};
|
||||
})(jQuery);
|
||||
|
||||
|
||||
|
||||
|
||||
|
30
view/theme/frost/js/jquery.divgrow-1.3.1.f1.min.js
vendored
Normal file
30
view/theme/frost/js/jquery.divgrow-1.3.1.f1.min.js
vendored
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*
|
||||
* Copyright (c) 2010 Simon Hibbard
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*//*
|
||||
* Version: V1.3.1-f1
|
||||
* Release: 22-12-2010
|
||||
* Based on jQuery 1.4.2
|
||||
*
|
||||
* 2012-10-29: Modified by Zach Prezkuta to allow dynamic full heights
|
||||
*/(function(e){var t=0;e.fn.divgrow=function(n){var n=e.extend({},{initialHeight:100,moreText:"+ Show More",lessText:"- Show Less",speed:1e3,showBrackets:!0},n);return this.each(function(){t++,obj=e(this),obj.css("height",n.initialHeight).css("overflow","hidden"),n.showBrackets?obj.after('<p class="divgrow-brackets">[…]</p><a href="#" class="divgrow-showmore divgrow-obj-'+t+'"'+"></a>"):obj.after('<a href="#" class="divgrow-showmore divgrow-obj-'+t+'"'+"></a>"),e("a.divgrow-showmore").html(n.moreText),e(".divgrow-obj-"+t).toggle(function(){var t=e(this).prevAll("div:first")[0].scrollHeight+10;e(this).prevAll("div:first").animate({height:t+"px"},n.speed,function(){n.showBrackets&&e(this).nextAll("p.divgrow-brackets:first").fadeOut(),e(this).nextAll("a.divgrow-showmore:first").html(n.lessText)})},function(){e(this).prevAll("div:first").stop(!0,!1).animate({height:n.initialHeight},n.speed,function(){n.showBrackets&&e(this).nextAll("p.divgrow-brackets:first").stop(!0,!1).fadeIn(),e(this).nextAll("a.divgrow-showmore:first").stop(!0,!1).html(n.moreText)})})})}})(jQuery);
|
|
@ -38,6 +38,8 @@
|
|||
|
||||
msie = $j.browser.msie ;
|
||||
|
||||
collapseHeight();
|
||||
|
||||
/* setup tooltips *//*
|
||||
$j("a,.tt").each(function(){
|
||||
var e = $j(this);
|
||||
|
@ -359,32 +361,23 @@
|
|||
}
|
||||
/* autocomplete @nicknames */
|
||||
$j(".comment-edit-form textarea").contact_autocomplete(baseurl+"/acl");
|
||||
|
||||
var bimgs = $j(".wall-item-body > img").not(function() { return this.complete; });
|
||||
var bimgcount = bimgs.length;
|
||||
|
||||
if (bimgcount) {
|
||||
bimgs.load(function() {
|
||||
bimgcount--;
|
||||
if (! bimgcount) {
|
||||
collapseHeight();
|
||||
|
||||
}
|
||||
});
|
||||
} else {
|
||||
collapseHeight();
|
||||
}
|
||||
|
||||
collapseHeight();
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function collapseHeight() {
|
||||
$j(".wall-item-body").each(function() {
|
||||
if($j(this).height() > 410) {
|
||||
if(! $j(this).hasClass('divmore')) {
|
||||
$j(this).divgrow({ initialHeight: 400, showBrackets: false, speed: 300 });
|
||||
$j(this).addClass('divmore');
|
||||
}
|
||||
function collapseHeight(elems) {
|
||||
var elemName = '.wall-item-body:not(.divmore)';
|
||||
if(typeof elems != 'undefined') {
|
||||
elemName = elems + ' ' + elemName;
|
||||
}
|
||||
$j(elemName).each(function() {
|
||||
if($j(this).height() > 450) {
|
||||
$j('html').height($j('html').height());
|
||||
$j(this).divgrow({ initialHeight: 400, showBrackets: false, speed: 0 });
|
||||
$j(this).addClass('divmore');
|
||||
$j('html').height('auto');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -535,6 +528,7 @@
|
|||
else {
|
||||
$j("#collapsed-comments-" + id).show();
|
||||
$j("#hide-comments-" + id).html(window.showFewer);
|
||||
collapseHeight("#collapsed-comments-" + id);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
2
view/theme/frost/js/main.min.js
vendored
2
view/theme/frost/js/main.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -508,14 +508,14 @@ function insertFormatting(comment,BBcode,id) {
|
|||
textarea.focus();
|
||||
selected = document.selection.createRange();
|
||||
if (BBcode == "url"){
|
||||
selected.text = "["+BBcode+"]" + "http://" + selected.text + "[/"+BBcode+"]";
|
||||
selected.text = "["+BBcode+"=http://]" + selected.text + "[/"+BBcode+"]";
|
||||
} else
|
||||
selected.text = "["+BBcode+"]" + selected.text + "[/"+BBcode+"]";
|
||||
} else if (textarea.selectionStart || textarea.selectionStart == "0") {
|
||||
var start = textarea.selectionStart;
|
||||
var end = textarea.selectionEnd;
|
||||
if (BBcode == "url"){
|
||||
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + "http://" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
|
||||
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"=http://]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
|
||||
} else
|
||||
textarea.value = textarea.value.substring(0, start) + "["+BBcode+"]" + textarea.value.substring(start, end) + "[/"+BBcode+"]" + textarea.value.substring(end, textarea.value.length);
|
||||
}
|
||||
|
|
2
view/theme/frost/js/theme.min.js
vendored
2
view/theme/frost/js/theme.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -78,6 +78,15 @@ div.section-wrapper {
|
|||
width: 200px;
|
||||
}
|
||||
|
||||
.field.checkbox label {
|
||||
position: auto;
|
||||
/*margin-left: 100px;*/
|
||||
}
|
||||
.field.checkbox input {
|
||||
width: auto;
|
||||
margin-left: 140px;
|
||||
}
|
||||
|
||||
/*.openid input {*/
|
||||
#id_openid_url, .openid input {
|
||||
background: url(login-bg.gif) no-repeat;
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
<link rel="stylesheet" href="$baseurl/view/theme/frost/login-style.css" type="text/css" media="all" />
|
||||
<!--<link rel="stylesheet" href="$baseurl/view/theme/frost/login-style.css" type="text/css" media="all" />-->
|
||||
|
||||
|
|
|
@ -85,6 +85,7 @@ blockquote {
|
|||
}
|
||||
.hide-comments-outer:hover {
|
||||
opacity: 1.0;
|
||||
border-bottom: 1px solid #DDD; /* manually prevent the border from changing color */
|
||||
}
|
||||
.hide-comments {
|
||||
margin-left: 5px;
|
||||
|
@ -3418,18 +3419,18 @@ aside input[type='text'] {
|
|||
background-repeat: no-repeat;
|
||||
}
|
||||
/*.dislike { background-position: -112px 0px;}*/
|
||||
.icon.dislike {
|
||||
.tool.dislike {
|
||||
display: block; width: 15px; height: 16px;/* 23 24*/
|
||||
background-size: 100% 100%;
|
||||
background-image: url('images/disapprove-16.png');
|
||||
background-repeat: no-repeat;
|
||||
opacity: 0.4;
|
||||
}
|
||||
.icon.dislike:hover {
|
||||
.tool.dislike:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
/*.like { background-position: -128px 0px;}*/
|
||||
.icon.like {
|
||||
.tool.like {
|
||||
display: block; width: 15px; height: 16px;/* 23 24*/
|
||||
margin-right: 6px;
|
||||
background-size: 100% 100%;
|
||||
|
@ -3437,7 +3438,7 @@ aside input[type='text'] {
|
|||
background-repeat: no-repeat;
|
||||
opacity: 0.4;
|
||||
}
|
||||
.icon.like:hover {
|
||||
.tool.like:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
/*.link { background-position: -144px 0px;}*/
|
||||
|
@ -3466,14 +3467,14 @@ aside input[type='text'] {
|
|||
.pause { background-position: -48px -16px;}
|
||||
.play { background-position: -64px -16px;}
|
||||
/*.pencil { background-position: -80px -16px;}*/
|
||||
.icon.pencil {
|
||||
.tool.pencil {
|
||||
display: block; width: 16px; height: 16px;
|
||||
background-size: 100% 100%;
|
||||
background-image: url('images/pencil-16.png');
|
||||
background-repeat: no-repeat;
|
||||
opacity: 0.4;
|
||||
}
|
||||
.icon.pencil:hover {
|
||||
.tool.pencil:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
/*.small-pencil { background-position: -96px -16px;}*/
|
||||
|
@ -3488,14 +3489,14 @@ aside input[type='text'] {
|
|||
opacity: 1.0;
|
||||
}
|
||||
/*.recycle { background-position: -112px -16px;}*/
|
||||
.icon.recycle {
|
||||
.tool.recycle {
|
||||
display: block; width: 16px; height: 16px;/*24 23*/
|
||||
background-size: 100% 100%;
|
||||
background-image: url('images/recycle-16.png');
|
||||
background-repeat: no-repeat;
|
||||
opacity: 0.4;
|
||||
}
|
||||
.icon.recycle:hover {
|
||||
.tool.recycle:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
/*.remote-link { background-position: -128px -16px;}*/
|
||||
|
@ -3556,32 +3557,32 @@ aside input[type='text'] {
|
|||
|
||||
.off { background-position: 0px -48px; }
|
||||
/*.starred { background-position: -16px -48px; }*/
|
||||
.icon.starred {
|
||||
.tool.starred {
|
||||
display: block; width: 16px; height: 16px;
|
||||
background-size: 100% 100%;
|
||||
background-image: url('images/star-yellow-16.png');
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
/*.unstarred { background-position: -32px -48px; }*/
|
||||
.icon.unstarred {
|
||||
.tool.unstarred {
|
||||
display: block; width: 16px; height: 16px;
|
||||
background-size: 100% 100%;
|
||||
background-image: url('images/star-16.png');
|
||||
background-repeat: no-repeat;
|
||||
opacity: 0.4;
|
||||
}
|
||||
.icon.unstarred:hover {
|
||||
.tool.unstarred:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
/*.tagged { background-position: -48px -48px; }*/
|
||||
.icon.tagged {
|
||||
.tool.tagged {
|
||||
display: block; width: 16px; height: 16px;
|
||||
background-size: 100% 100%;
|
||||
background-image: url('images/tag-16.png');
|
||||
background-repeat: no-repeat;
|
||||
opacity: 0.4;
|
||||
}
|
||||
.icon.tagged:hover {
|
||||
.tool.tagged:hover {
|
||||
opacity: 1.0;
|
||||
}
|
||||
.yellow { background-position: -64px -48px; }
|
||||
|
|
|
@ -4,25 +4,26 @@
|
|||
* Name: Frost
|
||||
* Description: Like frosted glass
|
||||
* Credits: Navigation icons taken from http://iconza.com. Other icons taken from http://thenounproject.com, including: Like, Dislike, Black Lock, Unlock, Pencil, Tag, Camera, Paperclip (Marie Coons), Folder (Sergio Calcara), Chain-link (Andrew Fortnum), Speaker (Harold Kim), Quotes (Henry Ryder), Video Camera (Anas Ramadan), and Left Arrow, Right Arrow, and Delete X (all three P.J. Onori). All under Attribution (CC BY 3.0). Others from The Noun Project are public domain or No Rights Reserved (CC0).
|
||||
* Version: Version 0.3
|
||||
* Version: Version 0.3.1
|
||||
* Author: Zach P <techcity@f.shmuz.in>
|
||||
* Maintainer: Zach P <techcity@f.shmuz.in>
|
||||
*/
|
||||
|
||||
$a->theme_info = array();
|
||||
$a->videowidth = 400;
|
||||
$a->videoheight = 330;
|
||||
$a->theme_thread_allow = false;
|
||||
|
||||
function frost_init(&$a) {
|
||||
function frost_content_loaded(&$a) {
|
||||
|
||||
// I could do this in style.php, but by having the CSS in a file the browser will cache it,
|
||||
// making pages load faster
|
||||
if( $a->module === 'home' || $a->module === 'login' || $a->module === 'register' || $a->module === 'lostpass' ) {
|
||||
$a->page['htmlhead'] = str_replace('$stylesheet', $a->get_baseurl() . '/view/theme/frost/login-style.css', $a->page['htmlhead']);
|
||||
//$a->page['htmlhead'] = str_replace('$stylesheet', $a->get_baseurl() . '/view/theme/frost/login-style.css', $a->page['htmlhead']);
|
||||
$a->theme['stylesheet'] = $a->get_baseurl() . '/view/theme/frost/login-style.css';
|
||||
}
|
||||
if( $a->module === 'login' )
|
||||
$a->page['end'] .= '<script type="text/javascript"> $j(document).ready(function() { $j("#id_" + window.loginName).focus();} );</script>';
|
||||
|
||||
$a->videowidth = 400;
|
||||
$a->videoheight = 330;
|
||||
$a->theme_thread_allow = false;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -12,7 +12,8 @@
|
|||
{{ if $item.owner_url }}
|
||||
<div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-$item.id" >
|
||||
<a href="$item.owner_url" target="redir" title="$item.olinktitle" class="wall-item-photo-link" id="wall-item-ownerphoto-link-$item.id">
|
||||
<img src="$item.owner_photo" class="wall-item-photo$item.osparkle" id="wall-item-ownerphoto-$item.id" style="height: 80px; width: 80px;" alt="$item.owner_name" /></a>
|
||||
<img src="$item.owner_photo" class="wall-item-photo$item.osparkle" id="wall-item-ownerphoto-$item.id" style="height: 80px; width: 80px;" alt="$item.owner_name" onError="this.src='../../../images/person-48.jpg';" />
|
||||
</a>
|
||||
</div>
|
||||
<div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="$item.wall" /></div>
|
||||
{{ endif }}
|
||||
|
@ -20,7 +21,8 @@
|
|||
onmouseover="if (typeof t$item.id != 'undefined') clearTimeout(t$item.id); openMenu('wall-item-photo-menu-button-$item.id')"
|
||||
onmouseout="t$item.id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$item.id\'); closeMenu(\'wall-item-photo-menu-$item.id\');',200)">
|
||||
<a href="$item.profile_url" target="redir" title="$item.linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$item.id">
|
||||
<img src="$item.thumb" class="wall-item-photo$item.sparkle" id="wall-item-photo-$item.id" style="height: 80px; width: 80px;" alt="$item.name" /></a>
|
||||
<img src="$item.thumb" class="wall-item-photo$item.sparkle" id="wall-item-photo-$item.id" style="height: 80px; width: 80px;" alt="$item.name" onError="this.src='../../../images/person-48.jpg';" />
|
||||
</a>
|
||||
<span onclick="openClose('wall-item-photo-menu-$item.id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$item.id">menu</span>
|
||||
<!-- <div class="wall-item-photo-menu" id="wall-item-photo-menu-$item.id">-->
|
||||
<ul class="wall-item-photo-menu" id="wall-item-photo-menu-$item.id">
|
||||
|
@ -63,9 +65,9 @@
|
|||
<div class="wall-item-tools" id="wall-item-tools-$item.id">
|
||||
{{ if $item.vote }}
|
||||
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$item.id">
|
||||
<a href="#" class="icon like" title="$item.vote.like.0" onclick="dolike($item.id,'like'); return false"></a>
|
||||
<a href="#" class="icon dislike" title="$item.vote.dislike.0" onclick="dolike($item.id,'dislike'); return false"></a>
|
||||
{{ if $item.vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick="jotShare($item.id); return false"></a>{{ endif }}
|
||||
<a href="#" class="tool like" title="$item.vote.like.0" onclick="dolike($item.id,'like'); return false"></a>
|
||||
<a href="#" class="tool dislike" title="$item.vote.dislike.0" onclick="dolike($item.id,'dislike'); return false"></a>
|
||||
{{ if $item.vote.share }}<a href="#" class="tool recycle wall-item-share-buttons" title="$item.vote.share.0" onclick="jotShare($item.id); return false"></a>{{ endif }}
|
||||
<img id="like-rotator-$item.id" class="like-rotator" src="images/rotator.gif" alt="$item.wait" title="$item.wait" style="display: none;" />
|
||||
</div>
|
||||
{{ endif }}
|
||||
|
@ -73,12 +75,12 @@
|
|||
<!--<div class="wall-item-links-wrapper">--><a href="$item.plink.href" title="$item.plink.title" target="external-link" class="wall-item-links-wrapper icon remote-link$item.sparkle"></a><!--</div>-->
|
||||
{{ endif }}
|
||||
{{ if $item.edpost }}
|
||||
<a class="editpost icon pencil" href="$item.edpost.0" title="$item.edpost.1"></a>
|
||||
<a class="editpost tool pencil" href="$item.edpost.0" title="$item.edpost.1"></a>
|
||||
{{ endif }}
|
||||
|
||||
{{ if $item.star }}
|
||||
<a href="#" id="starred-$item.id" onclick="dostar($item.id); return false;" class="star-item icon $item.isstarred" title="$item.star.toggle"></a>
|
||||
<a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item icon tagged" title="$item.star.tagger"></a>
|
||||
<a href="#" id="starred-$item.id" onclick="dostar($item.id); return false;" class="star-item tool $item.isstarred" title="$item.star.toggle"></a>
|
||||
<a href="#" id="tagger-$item.id" onclick="itemTag($item.id); return false;" class="tag-item tool tagged" title="$item.star.tagger"></a>
|
||||
{{ endif }}
|
||||
{{ if $item.filer }}
|
||||
<a href="#" id="filer-$item.id" onclick="itemFiler($item.id); return false;" class="filer-item filer-icon" title="$item.filer"></a>
|
||||
|
|
9
view/uexport.tpl
Normal file
9
view/uexport.tpl
Normal file
|
@ -0,0 +1,9 @@
|
|||
<h3>$title</h3>
|
||||
|
||||
|
||||
{{ for $options as $o }}
|
||||
<dl>
|
||||
<dt><a href="$baseurl/$o.0">$o.1</a></dt>
|
||||
<dd>$o.2</dd>
|
||||
</dl>
|
||||
{{ endfor }}
|
11
view/uimport.tpl
Normal file
11
view/uimport.tpl
Normal file
|
@ -0,0 +1,11 @@
|
|||
<form action="uimport" method="post" id="uimport-form" enctype="multipart/form-data">
|
||||
<h1>$import.title</h1>
|
||||
<p>$import.text</p>
|
||||
{{inc field_custom.tpl with $field=$import.field }}{{ endinc }}
|
||||
|
||||
|
||||
<div id="register-submit-wrapper">
|
||||
<input type="submit" name="submit" id="register-submit-button" value="$regbutt" />
|
||||
</div>
|
||||
<div id="register-submit-end" ></div>
|
||||
</form>
|
Loading…
Reference in a new issue