Merge branch 'master' of git://github.com/friendika/friendika
Conflicts: addon/twitter/twitter.php
This commit is contained in:
commit
a2ee5ebe42
41 changed files with 1674 additions and 127 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -4,5 +4,6 @@ wip/*
|
|||
include/jquery-1.4.2.min.js
|
||||
*.log
|
||||
*.out
|
||||
*.version*
|
||||
push*
|
||||
home.html
|
||||
|
|
15
INSTALL.txt
15
INSTALL.txt
|
@ -34,7 +34,7 @@ php.ini file
|
|||
- Mysql 5.x
|
||||
|
||||
- ability to schedule jobs with cron (Linux/Mac) or Scheduled Tasks
|
||||
(Windows) [Note: other options are presented in Section 7 of this document]
|
||||
(Windows) [Note: other options are presented in Section 8 of this document]
|
||||
|
||||
- Installation into a top-level domain or sub-domain (without a
|
||||
directory/path component in the URL) is preferred. Directory paths will
|
||||
|
@ -53,10 +53,15 @@ you might have trouble getting everything to work.]
|
|||
3. Create an empty database and note the access details (hostname, username,
|
||||
password, database name).
|
||||
|
||||
4. Visit your website with a web browser and follow the instructions. Please
|
||||
|
||||
4. If you know in advance that it will be impossible for the web server to
|
||||
write or create files in your web directory, create an empty file called
|
||||
.htconfig.php and make it writable by the web server.
|
||||
|
||||
5. Visit your website with a web browser and follow the instructions. Please
|
||||
note any error messages and correct these before continuing.
|
||||
|
||||
5. *If* the automated installation fails for any reason, check the following:
|
||||
6. *If* the automated installation fails for any reason, check the following:
|
||||
|
||||
- ".htconfig.php" exists
|
||||
If not, edit htconfig.php and change system settings. Rename
|
||||
|
@ -65,7 +70,7 @@ to .htconfig.php
|
|||
If not, import the contents of "database.sql" with phpmyadmin
|
||||
or mysql command line
|
||||
|
||||
6. At this point visit your website again, and register your personal account.
|
||||
7. At this point visit your website again, and register your personal account.
|
||||
Registration errors should all be recoverable automatically.
|
||||
If you get any *critical* failure at this point, it generally indicates the
|
||||
database was not installed correctly. You might wish to move/rename
|
||||
|
@ -78,7 +83,7 @@ tables, so that you can start fresh.
|
|||
****************************************************************************
|
||||
****************************************************************************
|
||||
|
||||
7. Set up a cron job or scheduled task to run the poller once every 5-10
|
||||
8. Set up a cron job or scheduled task to run the poller once every 5-10
|
||||
minutes to pick up the recent "public" postings of your friends. Example:
|
||||
|
||||
cd /base/directory; /path/to/php include/poller.php
|
||||
|
|
|
@ -6,3 +6,8 @@
|
|||
#facebook-disable-wrapper {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#facebook-post-default-form input {
|
||||
margin-top: 20px;
|
||||
margin-right: 20px;
|
||||
}
|
|
@ -95,6 +95,15 @@ function facebook_init(&$a) {
|
|||
|
||||
}
|
||||
|
||||
function facebook_post(&$a) {
|
||||
|
||||
if(local_user()){
|
||||
$value = ((x($_POST,'post_by_default')) ? intval($_POST['post_by_default']) : 0);
|
||||
set_pconfig(local_user(),'facebook','post_by_default', $value);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
function facebook_content(&$a) {
|
||||
|
||||
if(! local_user()) {
|
||||
|
@ -107,6 +116,8 @@ function facebook_content(&$a) {
|
|||
notice( t('Facebook disabled') . EOL);
|
||||
}
|
||||
|
||||
$fb_installed = get_pconfig(local_user(),'facebook','post');
|
||||
|
||||
$appid = get_config('facebook','appid');
|
||||
|
||||
if(! $appid) {
|
||||
|
@ -119,14 +130,26 @@ function facebook_content(&$a) {
|
|||
|
||||
$o .= '<h3>' . t('Facebook Connect') . '</h3>';
|
||||
|
||||
$o .= '<div id="facebook-enable-wrapper">';
|
||||
if(! $fb_installed) {
|
||||
$o .= '<div id="facebook-enable-wrapper">';
|
||||
|
||||
$o .= '<a href="https://www.facebook.com/dialog/oauth?client_id=' . $appid . '&redirect_uri='
|
||||
. $a->get_baseurl() . '/facebook/' . $a->user['nickname'] . '&scope=publish_stream,read_stream,offline_access">' . t('Install Facebook post connector') . '</a>';
|
||||
$o .= '</div><div id="facebook-disable-wrapper">';
|
||||
$o .= '<a href="https://www.facebook.com/dialog/oauth?client_id=' . $appid . '&redirect_uri='
|
||||
. $a->get_baseurl() . '/facebook/' . $a->user['nickname'] . '&scope=publish_stream,read_stream,offline_access">' . t('Install Facebook post connector') . '</a>';
|
||||
$o .= '</div>';
|
||||
}
|
||||
|
||||
$o .= '<a href="' . $a->get_baseurl() . '/facebook/remove' . '">' . t('Remove Facebook post connector') . '</a></div>';
|
||||
if($fb_installed) {
|
||||
$o .= '<div id="facebook-disable-wrapper">';
|
||||
|
||||
$o .= '<a href="' . $a->get_baseurl() . '/facebook/remove' . '">' . t('Remove Facebook post connector') . '</a></div>';
|
||||
|
||||
$o .= '<div id="facebook-post-default-form">';
|
||||
$o .= '<form action="facebook" method="post" >';
|
||||
$post_by_default = get_pconfig(local_user(),'facebook','post_by_default');
|
||||
$checked = (($post_by_default) ? ' checked="checked" ' : '');
|
||||
$o .= '<input type="checkbox" name="post_by_default" value="1"' . $checked . '/>' . ' ' . t('Post to Facebook by default') . '<br />';
|
||||
$o .= '<input type="submit" name="submit" value="' . t('Submit') . '" /></form></div>';
|
||||
}
|
||||
|
||||
return $o;
|
||||
}
|
||||
|
@ -161,7 +184,7 @@ function facebook_jot_nets(&$a,&$b) {
|
|||
$fb_post = get_pconfig(local_user(),'facebook','post');
|
||||
if(intval($fb_post) == 1) {
|
||||
$fb_defpost = get_pconfig(local_user(),'facebook','post_by_default');
|
||||
$selected = ((intval($fb_defpost == 1)) ? ' selected="selected" ' : '');
|
||||
$selected = ((intval($fb_defpost) == 1) ? ' checked="checked" ' : '');
|
||||
$b .= '<div class="profile-jot-net"><input type="checkbox" name="facebook_enable"' . $selected . 'value="1" /> '
|
||||
. t('Post to Facebook') . '</div>';
|
||||
}
|
||||
|
@ -202,7 +225,7 @@ function facebook_post_hook(&$a,&$b) {
|
|||
|
||||
// make links readable before we strip the code
|
||||
|
||||
$msg = preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/is",'$2 ($1)',$msg);
|
||||
$msg = preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/is",'$2 [$1]',$msg);
|
||||
|
||||
$msg = preg_replace("/\[img\](.+?)\[\/img\]/is", t('Image: ') . '$1',$msg);
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ function statusnet_jot_nets(&$a,&$b) {
|
|||
$statusnet_post = get_pconfig(local_user(),'statusnet','post');
|
||||
if(intval($statusnet_post) == 1) {
|
||||
$statusnet_defpost = get_pconfig(local_user(),'statusnet','post_by_default');
|
||||
$selected = ((intval($statusnet_defpost == 1)) ? ' selected="selected" ' : '');
|
||||
$selected = ((intval($statusnet_defpost) == 1) ? ' checked="checked" ' : '');
|
||||
$b .= '<div class="profile-jot-net"><input type="checkbox" name="statusnet_enable"' . $selected . 'value="1" /> '
|
||||
. t('Post to StatusNet') . '</div>';
|
||||
}
|
||||
|
|
|
@ -59,7 +59,7 @@ function twitter_jot_nets(&$a,&$b) {
|
|||
$tw_post = get_pconfig(local_user(),'twitter','post');
|
||||
if(intval($tw_post) == 1) {
|
||||
$tw_defpost = get_pconfig(local_user(),'twitter','post_by_default');
|
||||
$selected = ((intval($tw_defpost == 1)) ? ' selected="selected" ' : '');
|
||||
$selected = ((intval($tw_defpost) == 1) ? ' checked="checked" ' : '');
|
||||
$b .= '<div class="profile-jot-net"><input type="checkbox" name="twitter_enable"' . $selected . 'value="1" /> '
|
||||
. t('Post to Twitter') . '</div>';
|
||||
}
|
||||
|
@ -138,7 +138,11 @@ function twitter_settings(&$a,&$s) {
|
|||
* which the user can request a PIN to connect the account to a
|
||||
* account at Twitter.
|
||||
*/
|
||||
<<<<<<< HEAD
|
||||
require_once('library/twitteroauth.php');
|
||||
=======
|
||||
require_once('library/twitteroauth.php');
|
||||
>>>>>>> a912a0d3cae0ae9c873dcb5c45624a725bd2c2d6
|
||||
$connection = new TwitterOAuth($ckey, $csecret);
|
||||
$request_token = $connection->getRequestToken();
|
||||
$token = $request_token['oauth_token'];
|
||||
|
|
66
boot.php
66
boot.php
|
@ -2,9 +2,9 @@
|
|||
|
||||
set_time_limit(0);
|
||||
|
||||
define ( 'BUILD_ID', 1039 );
|
||||
define ( 'FRIENDIKA_VERSION', '2.10.0909' );
|
||||
define ( 'FRIENDIKA_VERSION', '2.1.915' );
|
||||
define ( 'DFRN_PROTOCOL_VERSION', '2.1' );
|
||||
define ( 'DB_UPDATE_VERSION', 1040 );
|
||||
|
||||
define ( 'EOL', "<br />\r\n" );
|
||||
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
||||
|
@ -435,15 +435,15 @@ function check_config(&$a) {
|
|||
|
||||
$build = get_config('system','build');
|
||||
if(! x($build))
|
||||
$build = set_config('system','build',BUILD_ID);
|
||||
$build = set_config('system','build',DB_UPDATE_VERSION);
|
||||
|
||||
$url = get_config('system','url');
|
||||
if(! x($url))
|
||||
$url = set_config('system','url',$a->get_baseurl());
|
||||
|
||||
if($build != BUILD_ID) {
|
||||
if($build != DB_UPDATE_VERSION) {
|
||||
$stored = intval($build);
|
||||
$current = intval(BUILD_ID);
|
||||
$current = intval(DB_UPDATE_VERSION);
|
||||
if(($stored < $current) && file_exists('update.php')) {
|
||||
// We're reporting a different version than what is currently installed.
|
||||
// Run any existing update scripts to bring the database up to current.
|
||||
|
@ -455,7 +455,7 @@ function check_config(&$a) {
|
|||
$func($a);
|
||||
}
|
||||
}
|
||||
set_config('system','build', BUILD_ID);
|
||||
set_config('system','build', DB_UPDATE_VERSION);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -512,22 +512,70 @@ function check_config(&$a) {
|
|||
foreach($plugins_arr as $p) {
|
||||
if(! in_array($p,$installed_arr)) {
|
||||
logger("Addons: installing " . $p);
|
||||
$t = filemtime('addon/' . $p . '/' . $p . '.php');
|
||||
@include_once('addon/' . $p . '/' . $p . '.php');
|
||||
if(function_exists($p . '_install')) {
|
||||
$func = $p . '_install';
|
||||
$func();
|
||||
$r = q("INSERT INTO `addon` (`name`, `installed`) VALUES ( '%s', 1 ) ",
|
||||
dbesc($p)
|
||||
$r = q("INSERT INTO `addon` (`name`, `installed`, `timestamp`) VALUES ( '%s', 1, %d ) ",
|
||||
dbesc($p),
|
||||
intval($t)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
load_hooks();
|
||||
|
||||
return;
|
||||
}}
|
||||
|
||||
// reload all updated plugins
|
||||
|
||||
if(! function_exists('reload_plugins')) {
|
||||
function reload_plugins() {
|
||||
$plugins = get_config('system','addon');
|
||||
if(strlen($plugins)) {
|
||||
|
||||
$r = q("SELECT * FROM `addon` WHERE `installed` = 1");
|
||||
if(count($r))
|
||||
$installed = $r;
|
||||
else
|
||||
$installed = array();
|
||||
|
||||
$parr = explode(',',$plugins);
|
||||
if(count($parr)) {
|
||||
foreach($parr as $pl) {
|
||||
$pl = trim($pl);
|
||||
|
||||
$t = filemtime('addon/' . $pl . '/' . $pl . '.php');
|
||||
foreach($installed as $i) {
|
||||
if(($i['name'] == $pl) && ($i['timestamp'] != $t)) {
|
||||
logger('Reloading plugin: ' . $i['name']);
|
||||
@include_once('addon/' . $pl . '/' . $pl . '.php');
|
||||
|
||||
if(function_exists($pl . '_uninstall')) {
|
||||
$func = $pl . '_uninstall';
|
||||
$func();
|
||||
}
|
||||
if(function_exists($pl . '_install')) {
|
||||
$func = $pl . '_install';
|
||||
$func();
|
||||
}
|
||||
q("UPDATE `addon` SET `timestamp` = %d WHERE `id` = %d LIMIT 1",
|
||||
intval($t),
|
||||
intval($i['id'])
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}}
|
||||
|
||||
|
||||
|
||||
// This is our template processor.
|
||||
// $s is the string requiring macro substitution.
|
||||
|
@ -1777,7 +1825,7 @@ function allowed_email($email) {
|
|||
if(count($allowed)) {
|
||||
foreach($allowed as $a) {
|
||||
$pat = strtolower(trim($a));
|
||||
if(($fnmatch && fnmatch($pat,$host)) || ($pat == $host)) {
|
||||
if(($fnmatch && fnmatch($pat,$domain)) || ($pat == $domain)) {
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -451,7 +451,8 @@ CREATE TABLE IF NOT EXISTS `addon` (
|
|||
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
||||
`name` CHAR( 255 ) NOT NULL ,
|
||||
`version` CHAR( 255 ) NOT NULL ,
|
||||
`installed` TINYINT( 1 ) NOT NULL DEFAULT '0'
|
||||
`installed` TINYINT( 1 ) NOT NULL DEFAULT '0' ,
|
||||
`timestamp` BIGINT NOT NULL DEFAULT '0'
|
||||
) ENGINE = MYISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
|
||||
|
|
BIN
images/nosign.jpg
Normal file
BIN
images/nosign.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.3 KiB |
|
@ -10,7 +10,7 @@ function group_select($selname,$selclass,$preselected = false,$size = 4) {
|
|||
$o .= "<select name=\"{$selname}[]\" id=\"$selclass\" class=\"$selclass\" multiple=\"multiple\" size=\"$size\" >\r\n";
|
||||
|
||||
$r = q("SELECT * FROM `group` WHERE `deleted` = 0 AND `uid` = %d ORDER BY `name` ASC",
|
||||
$_SESSION['uid']
|
||||
intval(local_user())
|
||||
);
|
||||
|
||||
|
||||
|
|
|
@ -609,6 +609,7 @@ function item_store($arr,$force_parent = false) {
|
|||
else {
|
||||
|
||||
// find the parent and snarf the item id and ACL's
|
||||
// and anything else we need to inherit
|
||||
|
||||
$r = q("SELECT * FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
|
||||
dbesc($arr['parent-uri']),
|
||||
|
@ -632,6 +633,7 @@ function item_store($arr,$force_parent = false) {
|
|||
$allow_gid = $r[0]['allow_gid'];
|
||||
$deny_cid = $r[0]['deny_cid'];
|
||||
$deny_gid = $r[0]['deny_gid'];
|
||||
$arr['wall'] = $r[0]['wall'];
|
||||
}
|
||||
else {
|
||||
|
||||
|
|
|
@ -47,6 +47,11 @@ function poller_run($argv, $argc){
|
|||
|
||||
$sql_extra = (($manual_id) ? " AND `id` = $manual_id " : "");
|
||||
|
||||
$d = datetime_convert();
|
||||
call_hooks('cron', $d);
|
||||
|
||||
reload_plugins();
|
||||
|
||||
$contacts = q("SELECT `id` FROM `contact`
|
||||
WHERE ( `rel` = %d OR `rel` = %d ) AND `poll` != ''
|
||||
$sql_extra
|
||||
|
|
44
index.php
44
index.php
|
@ -19,11 +19,11 @@ $a = new App;
|
|||
/**
|
||||
*
|
||||
* Load the configuration file which contains our DB credentials.
|
||||
* Ignore errors. If the file doesn't exist, we are running in installation mode.
|
||||
* Ignore errors. If the file doesn't exist or is empty, we are running in installation mode.
|
||||
*
|
||||
*/
|
||||
|
||||
$install = ((file_exists('.htconfig.php')) ? false : true);
|
||||
$install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false : true);
|
||||
|
||||
@include(".htconfig.php");
|
||||
|
||||
|
@ -102,8 +102,9 @@ if(! x($_SESSION,'sysmsg'))
|
|||
$_SESSION['sysmsg'] = '';
|
||||
|
||||
/*
|
||||
* check_config() is responible for running update scripts. These automatically
|
||||
* update the DB schema whenever we push a new one out.
|
||||
* check_config() is responsible for running update scripts. These automatically
|
||||
* update the DB schema whenever we push a new one out. It also checks to see if
|
||||
* any plugins have been added or removed and reacts accordingly.
|
||||
*/
|
||||
|
||||
|
||||
|
@ -122,7 +123,7 @@ $a->apps = $arr['app_menu'];
|
|||
|
||||
/**
|
||||
*
|
||||
* We have already parsed the server path into $->argc and $a->argv
|
||||
* We have already parsed the server path into $a->argc and $a->argv
|
||||
*
|
||||
* $a->argv[0] is our module name. We will load the file mod/{$a->argv[0]}.php
|
||||
* and use it for handling our URL request.
|
||||
|
@ -130,7 +131,7 @@ $a->apps = $arr['app_menu'];
|
|||
* and in the following order:
|
||||
*
|
||||
* "module"_init
|
||||
* "module"_post (only if there are $_POST variables)
|
||||
* "module"_post (only called if there are $_POST variables)
|
||||
* "module"_afterpost
|
||||
* "module"_content - the string return of this function contains our page body
|
||||
*
|
||||
|
@ -140,15 +141,42 @@ $a->apps = $arr['app_menu'];
|
|||
*/
|
||||
|
||||
if(strlen($a->module)) {
|
||||
|
||||
/**
|
||||
*
|
||||
* We will always have a module name.
|
||||
* First see if we have a plugin which is masquerading as a module.
|
||||
*
|
||||
*/
|
||||
|
||||
if(is_array($a->plugins) && in_array($a->module,$a->plugins) && file_exists("addon/{$a->module}/{$a->module}.php")) {
|
||||
include_once("addon/{$a->module}/{$a->module}.php");
|
||||
if(function_exists($a->module . '_module'))
|
||||
$a->module_loaded = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* If not, next look for a 'standard' program module in the 'mod' directory
|
||||
*/
|
||||
|
||||
if((! $a->module_loaded) && (file_exists("mod/{$a->module}.php"))) {
|
||||
include("mod/{$a->module}.php");
|
||||
include_once("mod/{$a->module}.php");
|
||||
$a->module_loaded = true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* The URL provided does not resolve to a valid module.
|
||||
*
|
||||
* On Dreamhost sites, quite often things go wrong for no apparent reason and they send us to '/internal_error.html'.
|
||||
* We don't like doing this, but as it occasionally accounts for 10-20% or more of all site traffic -
|
||||
* we are going to trap this and redirect back to the requested page. As long as you don't have a critical error on your page
|
||||
* this will often succeed and eventually do the right thing.
|
||||
*
|
||||
* Otherwise we are going to emit a 404 not found.
|
||||
*
|
||||
*/
|
||||
|
||||
if(! $a->module_loaded) {
|
||||
if((x($_SERVER,'QUERY_STRING')) && ($_SERVER['QUERY_STRING'] === 'q=internal_error.html') && isset($dreamhost_error_hack)) {
|
||||
logger('index.php: dreamhost_error_hack invoked. Original URI =' . $_SERVER['REQUEST_URI']);
|
||||
|
@ -199,7 +227,7 @@ if($a->module_loaded) {
|
|||
|
||||
}
|
||||
|
||||
// let javascript take you home
|
||||
// If you're just visiting, let javascript take you home
|
||||
|
||||
if(x($_SESSION,'visitor_home'))
|
||||
$homebase = $_SESSION['visitor_home'];
|
||||
|
|
|
@ -151,7 +151,12 @@ function display_content(&$a) {
|
|||
|
||||
if(can_write_wall($a,$a->profile['uid'])) {
|
||||
if($item['id'] == $item['parent']) {
|
||||
$likebuttons = replace_macros($like_tpl,array('$id' => $item['id']));
|
||||
$likebuttons = replace_macros($like_tpl,array(
|
||||
'$id' => $item['id'],
|
||||
'$likethis' => t("I like this \x28toggle\x29"),
|
||||
'$nolike' => t("I don't like this \x28toggle\x29"),
|
||||
'$wait' => t('Please wait')
|
||||
));
|
||||
}
|
||||
if($item['last-child']) {
|
||||
$comment = replace_macros($cmnt_tpl,array(
|
||||
|
|
|
@ -255,8 +255,8 @@ function network_content(&$a, $update = 0) {
|
|||
}
|
||||
}
|
||||
|
||||
$location = (($item['location']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
|
||||
$coord = (($item['coord']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
|
||||
$location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
|
||||
$coord = (($item['coord']) ? '<a target="map" title="' . $item['coord'] . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
|
||||
if($coord) {
|
||||
if($location)
|
||||
$location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
|
||||
|
@ -360,7 +360,12 @@ function network_content(&$a, $update = 0) {
|
|||
|
||||
$likebuttons = '';
|
||||
if($item['id'] == $item['parent']) {
|
||||
$likebuttons = replace_macros($like_tpl,array('$id' => $item['id']));
|
||||
$likebuttons = replace_macros($like_tpl,array(
|
||||
'$id' => $item['id'],
|
||||
'$likethis' => t("I like this \x28toggle\x29"),
|
||||
'$nolike' => t("I don't like this \x28toggle\x29"),
|
||||
'$wait' => t('Please wait')
|
||||
));
|
||||
}
|
||||
|
||||
if($item['last-child']) {
|
||||
|
@ -407,8 +412,8 @@ function network_content(&$a, $update = 0) {
|
|||
$like = ((x($alike,$item['id'])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : '');
|
||||
$dislike = ((x($dlike,$item['id'])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : '');
|
||||
|
||||
$location = (($item['location']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
|
||||
$coord = (($item['coord']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
|
||||
$location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
|
||||
$coord = (($item['coord']) ? '<a target="map" title="' . $item['coord'] . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
|
||||
if($coord) {
|
||||
if($location)
|
||||
$location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
|
||||
|
|
|
@ -108,6 +108,24 @@ function photo_init(&$a) {
|
|||
if(count($r)) {
|
||||
$data = $r[0]['data'];
|
||||
}
|
||||
else {
|
||||
|
||||
// Does the picture exist? It may be a remote person with no credentials,
|
||||
// but who should otherwise be able to view it. Show a default image to let
|
||||
// them know permissions was denied. It may be possible to view the image
|
||||
// through an authenticated profile visit.
|
||||
// There won't be many complete unauthorised people seeing this because
|
||||
// they won't have the photo link, so there's a reasonable chance that the person
|
||||
// might be able to obtain permission to view it.
|
||||
|
||||
$r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `scale` = %d LIMIT 1",
|
||||
dbesc($photo),
|
||||
intval($resolution)
|
||||
);
|
||||
if(count($r)) {
|
||||
$data = file_get_contents('images/nosign.jpg');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -246,6 +246,11 @@ foreach($_FILES AS $key => $val) {
|
|||
$rawtags = ((x($_POST,'newtag')) ? notags(trim($_POST['newtag'])) : '');
|
||||
$item_id = ((x($_POST,'item_id')) ? intval($_POST['item_id']) : 0);
|
||||
$albname = ((x($_POST,'albname')) ? notags(trim($_POST['albname'])) : '');
|
||||
$str_group_allow = perms2str($_POST['group_allow']);
|
||||
$str_contact_allow = perms2str($_POST['contact_allow']);
|
||||
$str_group_deny = perms2str($_POST['group_deny']);
|
||||
$str_contact_deny = perms2str($_POST['contact_deny']);
|
||||
|
||||
$resource_id = $a->argv[2];
|
||||
|
||||
if(! strlen($albname))
|
||||
|
@ -256,10 +261,14 @@ foreach($_FILES AS $key => $val) {
|
|||
dbesc($resource_id),
|
||||
intval($page_owner_uid)
|
||||
);
|
||||
if((count($p)) && (($p[0]['desc'] !== $desc) || ($p[0]['album'] !== $albname))) {
|
||||
$r = q("UPDATE `photo` SET `desc` = '%s', `album` = '%s' WHERE `resource-id` = '%s' AND `uid` = %d",
|
||||
if(count($p)) {
|
||||
$r = q("UPDATE `photo` SET `desc` = '%s', `album` = '%s', `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s' WHERE `resource-id` = '%s' AND `uid` = %d",
|
||||
dbesc($desc),
|
||||
dbesc($albname),
|
||||
dbesc($str_contact_allow),
|
||||
dbesc($str_group_allow),
|
||||
dbesc($str_contact_deny),
|
||||
dbesc($str_group_deny),
|
||||
dbesc($resource_id),
|
||||
intval($page_owner_uid)
|
||||
);
|
||||
|
@ -900,6 +909,32 @@ function photos_content(&$a) {
|
|||
return;
|
||||
}
|
||||
|
||||
$prevlink = '';
|
||||
$nextlink = '';
|
||||
|
||||
$prvnxt = q("SELECT `resource-id` FROM `photo` WHERE `album` = '%s' AND `uid` = %d AND `scale` = 0
|
||||
$sql_extra ORDER BY `created` DESC ",
|
||||
dbesc($ph[0]['album']),
|
||||
intval($owner_uid)
|
||||
);
|
||||
|
||||
if(count($prvnxt)) {
|
||||
for($z = 0; $z < count($prvnxt); $z++) {
|
||||
if($prvnxt[$z]['resource-id'] == $ph[0]['resource-id']) {
|
||||
$prv = $z - 1;
|
||||
$nxt = $z + 1;
|
||||
if($prv < 0)
|
||||
$prv = count($prvnxt) - 1;
|
||||
if($nxt >= count($prvnxt))
|
||||
$nxt = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$prevlink = $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$prv]['resource-id'] ;
|
||||
$nextlink = $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $prvnxt[$nxt]['resource-id'] ;
|
||||
}
|
||||
|
||||
|
||||
if(count($ph) == 1)
|
||||
$hires = $lores = $ph[0];
|
||||
if(count($ph) > 1) {
|
||||
|
@ -929,11 +964,18 @@ function photos_content(&$a) {
|
|||
$o .= '</div>';
|
||||
}
|
||||
|
||||
if($prevlink)
|
||||
$o .= '<div id="photo-prev-link"><a href="' . $prevlink .'">' . t('<< Prev') . '</a></div>' ;
|
||||
|
||||
$o .= '<a href="' . $a->get_baseurl() . '/photo/'
|
||||
$o .= '<div id="photo-photo"><a href="' . $a->get_baseurl() . '/photo/'
|
||||
. $hires['resource-id'] . '-' . $hires['scale'] . '.jpg" title="'
|
||||
. t('View Full Size') . '" ><img src="' . $a->get_baseurl() . '/photo/'
|
||||
. $lores['resource-id'] . '-' . $lores['scale'] . '.jpg' . '" /></a>';
|
||||
. $lores['resource-id'] . '-' . $lores['scale'] . '.jpg' . '" /></a></div>';
|
||||
|
||||
if($nextlink)
|
||||
$o .= '<div id="photo-next-link"><a href="' . $nextlink .'">' . t('Next >>') . '</a></div>';
|
||||
|
||||
$o .= '<div id="photo-photo-end"></div>';
|
||||
|
||||
|
||||
// Do we have an item for this photo?
|
||||
|
@ -1016,6 +1058,8 @@ function photos_content(&$a) {
|
|||
'$caption' => $ph[0]['desc'],
|
||||
'$tag_label' => t('Add a Tag'),
|
||||
'$tags' => $link_item['tag'],
|
||||
'$permissions' => t('Permissions'),
|
||||
'$aclselect' => populate_acl($ph[0]),
|
||||
'$help_tags' => t('Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'),
|
||||
'$item_id' => ((count($linked_items)) ? $link_item['id'] : 0),
|
||||
'$submit' => t('Submit'),
|
||||
|
@ -1033,8 +1077,14 @@ function photos_content(&$a) {
|
|||
|
||||
$likebuttons = '';
|
||||
|
||||
if($can_post || can_write_wall($a,$owner_uid))
|
||||
$likebuttons = replace_macros($like_tpl,array('$id' => $link_item['id']));
|
||||
if($can_post || can_write_wall($a,$owner_uid)) {
|
||||
$likebuttons = replace_macros($like_tpl,array(
|
||||
'$id' => $item['id'],
|
||||
'$likethis' => t("I like this \x28toggle\x29"),
|
||||
'$nolike' => t("I don't like this \x28toggle\x29"),
|
||||
'$wait' => t('Please wait')
|
||||
));
|
||||
}
|
||||
|
||||
if(! count($r)) {
|
||||
$o .= '<div id="photo-like-div">';
|
||||
|
|
|
@ -302,7 +302,12 @@ function profile_content(&$a, $update = 0) {
|
|||
|
||||
if(can_write_wall($a,$a->profile['profile_uid'])) {
|
||||
if($item['id'] == $item['parent']) {
|
||||
$likebuttons = replace_macros($like_tpl,array('$id' => $item['id']));
|
||||
$likebuttons = replace_macros($like_tpl,array(
|
||||
'$id' => $item['id'],
|
||||
'$likethis' => t("I like this \x28toggle\x29"),
|
||||
'$nolike' => t("I don't like this \x28toggle\x29"),
|
||||
'$wait' => t('Please wait')
|
||||
));
|
||||
}
|
||||
if($item['last-child']) {
|
||||
$comment = replace_macros($cmnt_tpl,array(
|
||||
|
@ -358,8 +363,8 @@ function profile_content(&$a, $update = 0) {
|
|||
|
||||
$like = ((isset($alike[$item['id']])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : '');
|
||||
$dislike = ((isset($dlike[$item['id']])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : '');
|
||||
$location = (($item['location']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
|
||||
$coord = (($item['coord']) ? '<a target="map" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
|
||||
$location = (($item['location']) ? '<a target="map" title="' . $item['location'] . '" href="http://maps.google.com/?q=' . urlencode($item['location']) . '">' . $item['location'] . '</a>' : '');
|
||||
$coord = (($item['coord']) ? '<a target="map" title="' . $item['coord'] . '" href="http://maps.google.com/?q=' . urlencode($item['coord']) . '">' . $item['coord'] . '</a>' : '');
|
||||
if($coord) {
|
||||
if($location)
|
||||
$location .= '<br /><span class="smalltext">(' . $coord . ')</span>';
|
||||
|
|
|
@ -401,6 +401,10 @@ function register_content(&$a) {
|
|||
$oidlabel = t("Your OpenID \x28optional\x29: ");
|
||||
}
|
||||
|
||||
// I set this and got even more fake names than before...
|
||||
|
||||
$realpeople = ''; // t('Members of this network prefer to communicate with real people who use their real names.');
|
||||
|
||||
if(get_config('system','publish_all')) {
|
||||
$profile_publish_reg = '<input type="hidden" name="profile_publish_reg" value="1" />';
|
||||
}
|
||||
|
@ -423,6 +427,7 @@ function register_content(&$a) {
|
|||
$o = load_view_file("view/register.tpl");
|
||||
$o = replace_macros($o, array(
|
||||
'$oidhtml' => $oidhtml,
|
||||
'$realpeople' => $realpeople,
|
||||
'$regtitle' => t('Registration'),
|
||||
'$registertext' =>((x($a->config,'register_text'))
|
||||
? '<div class="error-message">' . $a->config['register_text'] . '</div>'
|
||||
|
@ -433,7 +438,7 @@ function register_content(&$a) {
|
|||
'$openid' => $openid_url,
|
||||
'$namelabel' => t('Your Full Name ' . "\x28" . 'e.g. Joe Smith' . "\x29" . ': '),
|
||||
'$addrlabel' => t('Your Email Address: '),
|
||||
'$nickdesc' => t('Choose a profile nickname. This must begin with a text character. Your global profile locator will then be \'<strong>nickname@$sitename</strong>\'.'),
|
||||
'$nickdesc' => t('Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be \'<strong>nickname@$sitename</strong>\'.'),
|
||||
'$nicklabel' => t('Choose a nickname: '),
|
||||
'$photo' => $photo,
|
||||
'$publish' => $profile_publish,
|
||||
|
|
|
@ -51,7 +51,7 @@ function search_content(&$a) {
|
|||
$a->set_pager_total($r[0]['total']);
|
||||
|
||||
if(! $r[0]['total']) {
|
||||
notice('No results.');
|
||||
notice( t('No results.') . EOL);
|
||||
return $o;
|
||||
}
|
||||
|
||||
|
@ -134,13 +134,6 @@ function search_content(&$a) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
if(! $r[0]['total']) {
|
||||
notice('No results.');
|
||||
return $o;
|
||||
}
|
||||
|
||||
|
||||
$o .= paginate($a);
|
||||
|
||||
return $o;
|
||||
|
|
21
update.php
21
update.php
|
@ -11,24 +11,24 @@
|
|||
* Each function in this file is named update_nnnn() where nnnn is an increasing number
|
||||
* which began counting at 1000.
|
||||
*
|
||||
* At the top of the file "boot.php" is a define for BUILD_ID. Any time there is a change
|
||||
* At the top of the file "boot.php" is a define for DB_UPDATE_VERSION. Any time there is a change
|
||||
* to the database schema or one which requires an upgrade path from the existing application,
|
||||
* the BUILD_ID is incremented.
|
||||
* the DB_UPDATE_VERSION is incremented.
|
||||
*
|
||||
* The current BUILD_ID is stored in the config area of the database. If the application starts up
|
||||
* and BUILD_ID is greater than the last stored build number, we will process every update function
|
||||
* in order from the currently stored value to the new BUILD_ID. This is expected to bring the system
|
||||
* The current DB_UPDATE_VERSION is stored in the config area of the database. If the application starts up
|
||||
* and DB_UPDATE_VERSION is greater than the last stored build number, we will process every update function
|
||||
* in order from the currently stored value to the new DB_UPDATE_VERSION. This is expected to bring the system
|
||||
* up to current without requiring re-installation or manual intervention.
|
||||
*
|
||||
* Once the upgrade functions have completed, the current BUILD_ID is stored as the current value.
|
||||
* The BUILD_ID will always be one greater than the last numbered script in this file.
|
||||
* Once the upgrade functions have completed, the current DB_UPDATE_VERSION is stored as the current value.
|
||||
* The DB_UPDATE_VERSION will always be one greater than the last numbered script in this file.
|
||||
*
|
||||
* If you change the database schema, the following are required:
|
||||
* 1. Update the file database.sql to match the new schema.
|
||||
* 2. Update this file by adding a new function at the end with the number of the current BUILD_ID.
|
||||
* 2. Update this file by adding a new function at the end with the number of the current DB_UPDATE_VERSION.
|
||||
* This function should modify the current database schema and perform any other steps necessary
|
||||
* to ensure that upgrade is silent and free from requiring interaction.
|
||||
* 3. Increment the BUILD_ID in boot.php
|
||||
* 3. Increment the DB_UPDATE_VERSION in boot.php
|
||||
* 4. TEST the upgrade prior to checkin and filing a pull request.
|
||||
*
|
||||
*/
|
||||
|
@ -374,3 +374,6 @@ function update_1038() {
|
|||
q("ALTER TABLE `item` ADD `plink` CHAR( 255 ) NOT NULL AFTER `target` ");
|
||||
}
|
||||
|
||||
function update_1039() {
|
||||
q("ALTER TABLE `addon` ADD `timestamp` BIGINT NOT NULL DEFAULT '0'");
|
||||
}
|
||||
|
|
|
@ -192,6 +192,8 @@ $a->strings['Cancel'] = 'Cancel';
|
|||
$a->strings['Global Directory'] = 'Global Directory';
|
||||
$a->strings['Item not found.'] = 'Item not found.';
|
||||
$a->strings['Private Message'] = 'Private Message';
|
||||
$a->strings["I like this \x28toggle\x29"] = "I like this \x28toggle\x29";
|
||||
$a->strings["I don't like this \x28toggle\x29"] = "I don't like this \x28toggle\x29";
|
||||
$a->strings['This is you'] = 'This is you';
|
||||
$a->strings['Delete'] = 'Delete';
|
||||
$a->strings['View $name\'s profile'] = 'View $name\'s profile';
|
||||
|
@ -370,11 +372,12 @@ $a->strings['Your registration is pending approval by the site owner.'] = 'Your
|
|||
$a->strings["You may \x28optionally\x29 fill in this form via OpenID by supplying your OpenID and clicking 'Register'."] = "You may \x28optionally\x29 fill in this form via OpenID by supplying your OpenID and clicking 'Register'.";
|
||||
$a->strings['If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'] = 'If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.';
|
||||
$a->strings["Your OpenID \x28optional\x29: "] = "Your OpenID \x28optional\x29: ";
|
||||
$a->strings['Members of this network prefer to communicate with real people who use their real names.'] = 'Members of this network prefer to communicate with real people who use their real names.';
|
||||
$a->strings['Include your profile in member directory?'] = 'Include your profile in member directory?';
|
||||
$a->strings['Registration'] = 'Registration';
|
||||
$a->strings['Your Full Name ' . "\x28" . 'e.g. Joe Smith' . "\x29" . ': '] = 'Your Full Name ' . "\x28" . 'e.g. Joe Smith' . "\x29" . ': ';
|
||||
$a->strings['Your Email Address: '] = 'Your Email Address: ';
|
||||
$a->strings['Choose a profile nickname. This must begin with a text character. Your global profile locator will then be \'<strong>nickname@$sitename</strong>\'.'] = 'Choose a profile nickname. This must begin with a text character. Your global profile locator will then be \'<strong>nickname@$sitename</strong>\'.';
|
||||
$a->strings['Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be \'<strong>nickname@$sitename</strong>\'.'] = 'Choose a profile nickname. This must begin with a text character. Your profile address on this site will then be \'<strong>nickname@$sitename</strong>\'.';
|
||||
$a->strings['Choose a nickname: '] = 'Choose a nickname: ';
|
||||
$a->strings['Please login.'] = 'Please login.';
|
||||
$a->strings['Registration revoked for '] = 'Registration revoked for ';
|
||||
|
|
|
@ -35,4 +35,14 @@
|
|||
echo $file . "\n";
|
||||
include_once($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo "String files\n";
|
||||
|
||||
echo 'util/strings.php' . "\n";
|
||||
include_once('util/strings.php');
|
||||
$files = glob('view/*/strings.php');
|
||||
foreach($files as $file) {
|
||||
echo $file . "\n";
|
||||
include_once($file);
|
||||
}
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
|
||||
<img src="images/like.gif" alt="Ich mag das" title="Ich mag das [toggle]" onclick="dolike($id,'like');" />
|
||||
<img src="images/dislike.gif" alt="Ich mag das nicht" title="Ich mag das nicht [toggle]" onclick="dolike($id,'dislike');" />
|
||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="Bitte warten" title="Bitte warten" style="display: none;" />
|
||||
</div>
|
|
@ -173,6 +173,8 @@ $a->strings['Submit Request'] = 'Anfrage abschicken';
|
|||
$a->strings['Cancel'] = 'Abbrechen';
|
||||
$a->strings['Global Directory'] = 'Weltweites Verzeichnis';
|
||||
$a->strings['Private Message'] = 'Private Nachricht';
|
||||
$a->strings["I like this \x28toggle\x29"] = "Ich mag das \x28toggle\x29";
|
||||
$a->strings["I don't like this \x28toggle\x29"] = "Ich mag das nicht \x28toggle\x29";
|
||||
$a->strings['This is you'] = 'Das bist du';
|
||||
$a->strings['View $name\'s profile'] = 'Betrachte das Profil von $name';
|
||||
$a->strings['View $owner_name\'s profile'] = 'Betrachte das Profil von $owner_name';
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
|
||||
<img src="images/like.gif" alt="I like this" title="I like this [toggle]" onclick="dolike($id,'like');" />
|
||||
<img src="images/dislike.gif" alt="I don't like this" title="I don't like this [toggle]" onclick="dolike($id,'dislike');" />
|
||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="Please wait" title="Please wait" style="display: none;" />
|
||||
</div>
|
|
@ -1,5 +0,0 @@
|
|||
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
|
||||
<img src="images/like.gif" alt="I like this" title="I like this [toggle]" onclick="dolike($id,'like');" />
|
||||
<img src="images/dislike.gif" alt="I don't like this" title="I don't like this [toggle]" onclick="dolike($id,'dislike');" />
|
||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="Please wait" title="Please wait" style="display: none;" />
|
||||
</div>
|
|
@ -159,6 +159,8 @@ $a->strings['Cancel'] = 'Annuler';
|
|||
$a->strings['Global Directory'] = 'Annuaire global';
|
||||
$a->strings['Item not found.'] = 'Élément introuvable.';
|
||||
$a->strings['Private Message'] = 'Message privé';
|
||||
$a->strings["I like this \x28toggle\x29"] = "I like this \x28toggle\x29";
|
||||
$a->strings["I don't like this \x28toggle\x29"] = "I don't like this \x28toggle\x29";
|
||||
$a->strings['This is you'] = 'C\'est vous';
|
||||
$a->strings['View $name\'s profile'] = 'Voir le profil de $name';
|
||||
$a->strings['Item has been removed.'] = 'Cet élément a été enlevé.';
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
|
||||
<img src="images/like.gif" alt="Mi piace questo" title="Mi piace questo [metti/togli]" onclick="dolike($id,'like');" />
|
||||
<img src="images/dislike.gif" alt="Non mi piace questo" title="Non mi piace questo [metti/togli]" onclick="dolike($id,'dislike');" />
|
||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="Attendi" title="Attendi" style="display: none;" />
|
||||
</div>
|
|
@ -138,9 +138,11 @@ $a->strings['Cancel'] = 'Annulla';
|
|||
$a->strings['Global Directory'] = 'Elenco Globale';
|
||||
$a->strings['Item not found.'] = 'Elemento non trovato.';
|
||||
$a->strings['Private Message'] = 'Messaggio privato';
|
||||
$a->strings["I like this \x28toggle\x29"] = "Mi piace questo \x28metti/togli\x29";
|
||||
$a->strings["I don't like this \x28toggle\x29"] = "Non mi piace questo \x28metti/togli\x29";
|
||||
$a->strings['This is you'] = 'Questo sei tu';
|
||||
$a->strings['View $name\'s profile'] = 'Guarda il profilo di $name';
|
||||
$a->strings['View $owner_name\'s profile'] = Guarda il profilo di $owner_name';
|
||||
$a->strings['View $owner_name\'s profile'] = 'Guarda il profilo di $owner_name';
|
||||
$a->strings['to'] = 'a';
|
||||
$a->strings['Wall-to-Wall'] = 'Bacheca-A-Bacheca';
|
||||
$a->strings['via Wall-To-Wall:'] = 'via Bacheca-A-Bacheca';
|
||||
|
|
5
view/like.tpl
Normal file
5
view/like.tpl
Normal file
|
@ -0,0 +1,5 @@
|
|||
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
|
||||
<img src="images/like.gif" alt="$likethis" title="$likethis" onclick="dolike($id,'like');" />
|
||||
<img src="images/dislike.gif" alt="$nolike" title="$nolike" onclick="dolike($id,'dislike');" />
|
||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
||||
</div>
|
|
@ -8,7 +8,6 @@
|
|||
|
||||
<div id="photo-edit-albumname-end"></div>
|
||||
|
||||
|
||||
<label id="photo-edit-caption-label" for="photo-edit-caption">$capt_label</label>
|
||||
<input id="photo-edit-caption" type="text" size="84" name="desc" value="$caption" />
|
||||
|
||||
|
@ -16,8 +15,21 @@
|
|||
|
||||
<label id="photo-edit-tags-label" for="photo-edit-newtag" >$tag_label</label>
|
||||
<input name="newtag" id="photo-edit-newtag" size="84" title="$help_tags" type="text" />
|
||||
|
||||
<div id="photo-edit-tags-end"></div>
|
||||
|
||||
<div id="photo-edit-perms" class="photo-edit-perms" >
|
||||
<div id="photo-edit-perms-menu" class="fakelink" onClick="openClose('photo-edit-perms-select');" >$permissions</div>
|
||||
<div id="photo-edit-perms-menu-end"></div>
|
||||
|
||||
<div id="photo-edit-perms-select" style="display: none;" >
|
||||
|
||||
$aclselect
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div id="photo-edit-perms-end"></div>
|
||||
|
||||
<input id="photo-edit-submit-button" type="submit" name="submit" value="$submit" />
|
||||
<input id="photo-edit-delete-button" type="submit" name="delete" value="$delete" onclick="return confirmDelete()"; />
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
$registertext
|
||||
|
||||
<p id="register-realpeople">$realpeople</p>
|
||||
|
||||
<p id="register-fill-desc">$fillwith</p>
|
||||
<p id="register-fill-ext">$fillext</p>
|
||||
|
|
|
@ -8,11 +8,14 @@
|
|||
<div class="wall-item-photo-end"></div>
|
||||
<div class="wall-item-wrapper" id="wall-item-wrapper-$id" >
|
||||
$lock
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
|
||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
||||
<div class="wall-item-location" id="wall-item-location-$id">$location</div>
|
||||
</div>
|
||||
</span>
|
||||
<div class="wall-item-author">
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
|
||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
||||
|
||||
</div>
|
||||
<div class="wall-item-content" id="wall-item-content-$id" >
|
||||
<div class="wall-item-title" id="wall-item-title-$id">$title</div>
|
||||
<div class="wall-item-title-end"></div>
|
||||
|
|
18
view/sv/cmnt_received_eml.tpl
Normal file
18
view/sv/cmnt_received_eml.tpl
Normal file
|
@ -0,0 +1,18 @@
|
|||
|
||||
$username,
|
||||
|
||||
'$from' har kommenterat något som du följer.
|
||||
|
||||
-----
|
||||
$body
|
||||
-----
|
||||
|
||||
Logga in på $siteurl för att se hela konversationen:
|
||||
|
||||
$display
|
||||
|
||||
Tack,
|
||||
$sitename admin
|
||||
|
||||
|
||||
|
81
view/sv/contact_edit.tpl
Normal file
81
view/sv/contact_edit.tpl
Normal file
|
@ -0,0 +1,81 @@
|
|||
|
||||
<h2>$header</h2>
|
||||
|
||||
<div id="contact-edit-banner-name">$name</div>
|
||||
|
||||
<form action="contacts/$contact_id" method="post" >
|
||||
<input type="hidden" name="contact_id" value="$contact_id">
|
||||
|
||||
<div id="contact-edit-wrapper" >
|
||||
|
||||
<div id="contact-edit-photo-wrapper" >
|
||||
<img id="contact-edit-direction-icon" src="$dir_icon" alt="$alt_text" title="$alt_text" />
|
||||
<div id="contact-edit-photo" >
|
||||
<a href="$url" title="$visit" /><img src="$photo" $sparkle alt="$name" /></a>
|
||||
</div>
|
||||
<div id="contact-edit-photo-end" ></div>
|
||||
</div>
|
||||
<div id="contact-edit-nav-wrapper" >
|
||||
|
||||
<div id="contact-edit-links" >
|
||||
<a href="contacts/$contact_id/block" id="contact-edit-block-link" ><img src="images/b_block.gif" alt="$blockunblock" title="$block_text"/></a>
|
||||
<a href="contacts/$contact_id/ignore" id="contact-edit-ignore-link" ><img src="images/no.gif" alt="$ignorecont" title="$ignore_text"/></a>
|
||||
</div>
|
||||
<div id="contact-drop-links" >
|
||||
<a href="contacts/$contact_id/drop" id="contact-edit-drop-link" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" /></a>
|
||||
</div>
|
||||
<div id="contact-edit-nav-end"></div>
|
||||
|
||||
|
||||
<div id="contact-edit-poll-wrapper">
|
||||
<div id="contact-edit-last-update-text">$lastupdtext<span id="contact-edit-last-updated">$last_update</span</div>
|
||||
<div id="contact-edit-poll-text">$updpub</div>
|
||||
$poll_interval
|
||||
<div id="contact-edit-update-now"><a href="contacts/$contact_id/update">$udnow</a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="contact-edit-end" ></div>
|
||||
|
||||
$insecure
|
||||
$blocked
|
||||
$ignored
|
||||
|
||||
<div id="contact-edit-info-wrapper">
|
||||
<h4>Kontaktuppgifter / Anteckningar</h4>
|
||||
<textarea id="contact-edit-info" rows="10" cols="72" name="info" >$info</textarea>
|
||||
</div>
|
||||
<div id="contact-edit-info-end"></div>
|
||||
|
||||
<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
|
||||
|
||||
<div id="contact-edit-profile-select-text">
|
||||
<h4>Profilvisning</h4>
|
||||
<p>Välj vilken profil som ska visas för $name när han eller hon tittar på din profil i säkert läge.
|
||||
</p>
|
||||
</div>
|
||||
$profile_select
|
||||
<div id="contact-edit-profile-select-end"></div>
|
||||
|
||||
<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
|
||||
|
||||
|
||||
<div id="contact-edit-rating-wrapper">
|
||||
<h4>Rykte online</h4>
|
||||
<p>
|
||||
Ibland kanske dina vänner vill få reda på hur någon annan uppför sig på nätet innan de våga inleda någon kontakt. Du kan hjälpa till genom att ange personens 'rykte'.
|
||||
</p>
|
||||
<div id="contact-edit-rating-select-wrapper">
|
||||
$rating
|
||||
</div>
|
||||
<div id="contact-edit-rating-explain">
|
||||
<p>
|
||||
Var vänlig ägna en liten stund åt att fylla i något som du känner kan vara till hjälp för andra.
|
||||
</p>
|
||||
<textarea id="contact-edit-rating-text" name="reason" rows="3" cols="64" >$reason</textarea>
|
||||
</div>
|
||||
</div>
|
||||
$groups
|
||||
|
||||
<input class="contact-edit-submit" type="submit" name="submit" value="Submit" />
|
||||
</form>
|
||||
</div>
|
1124
view/sv/strings.php
Normal file
1124
view/sv/strings.php
Normal file
File diff suppressed because it is too large
Load diff
|
@ -203,7 +203,7 @@ div.wall-item-content-wrapper.shiny {
|
|||
background-repeat:no-repeat;
|
||||
}
|
||||
|
||||
/* from defautlt */
|
||||
/* from default */
|
||||
#jot-perms-icon,
|
||||
#profile-location,
|
||||
#profile-nolocation,
|
||||
|
@ -833,31 +833,40 @@ input#dfrn-url {
|
|||
.wall-item-info {
|
||||
display: block;
|
||||
float: left;
|
||||
width:150px;
|
||||
width:110px;
|
||||
margin-right:10px;
|
||||
}
|
||||
.wallwall .wall-item-info {
|
||||
width: 300px;
|
||||
.comment .wall-item-info {
|
||||
width: 70px;
|
||||
}
|
||||
|
||||
|
||||
.wall-item-photo-wrapper {
|
||||
margin-top: 10px;
|
||||
margin-left: 10px;
|
||||
margin-bottom: 10px;
|
||||
width: 100px;
|
||||
}
|
||||
.wallwall .wall-item-photo-wrapper {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.wallwall .wwto {
|
||||
left: 50px;
|
||||
margin: 0;
|
||||
position: absolute;
|
||||
top: 70px;
|
||||
width: 30px
|
||||
}
|
||||
.wallwall .wwto img {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
.wallwall .wall-item-photo-end {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.wall-item-arrowphoto-wrapper {
|
||||
margin-top: 40px;
|
||||
margin-right: 20px;
|
||||
float: left;
|
||||
position: absolute;
|
||||
left: 75px;
|
||||
top: 70px;
|
||||
z-index: 100;
|
||||
}
|
||||
.wall-item-wrapper {
|
||||
/*float: left;
|
||||
|
@ -868,16 +877,38 @@ input#dfrn-url {
|
|||
.wall-item-lock {
|
||||
/*height: 20px;*/
|
||||
/*margin-top: 10px;*/
|
||||
left: 135px;
|
||||
left: 105px;
|
||||
position: absolute;
|
||||
top: 1px;
|
||||
}
|
||||
.comment .wall-item-lock {
|
||||
left: 65px;
|
||||
}
|
||||
|
||||
.wall-item-ago {
|
||||
color: #888888;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.wall-item-location {
|
||||
overflow: hidden;
|
||||
/* add ellipsis on text overflow */
|
||||
/* this work on safari, opera, ie, chrome. */
|
||||
/* firefox users have to wait support or we */
|
||||
/* can use a jquery plugin http://bit.ly/zJskg */
|
||||
text-overflow: ellipsis;
|
||||
-o-text-overflow: ellipsis;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.wall-item-like-buttons {
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
padding-right: 10px;
|
||||
border-right: 2px solid #fff;
|
||||
}
|
||||
|
||||
|
||||
.wall-item-like-buttons img {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
@ -946,6 +977,10 @@ input#dfrn-url {
|
|||
background-repeat: repeat-x;
|
||||
padding: 5px 10px 0px;
|
||||
}
|
||||
.wall-item-author {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.comment .wall-item-tools {
|
||||
background:none;
|
||||
}
|
||||
|
@ -1791,6 +1826,11 @@ a.mail-list-link {
|
|||
float: left;
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
#photo-edit-perms-end {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname {
|
||||
float: left;
|
||||
margin-bottom: 25px;
|
||||
|
@ -2054,3 +2094,16 @@ a.mail-list-link {
|
|||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#photo-prev-link, #photo-next-link {
|
||||
padding: 10px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#photo-photo {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#photo-photo-end {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
|
|
@ -965,36 +965,41 @@ input#dfrn-url {
|
|||
float: left;
|
||||
}
|
||||
.wall-item-wrapper {
|
||||
float: left;
|
||||
margin-left: 10px;;
|
||||
}
|
||||
|
||||
.wall-item-lock {
|
||||
height: 20px;
|
||||
margin-top: 10px;
|
||||
position: absolute;
|
||||
left: 105px;
|
||||
top: 1px;
|
||||
}
|
||||
|
||||
.wall-item-ago {
|
||||
color: #888888;
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.wall-item-like-buttons img {
|
||||
cursor: pointer;
|
||||
.wall-item-like-buttons {
|
||||
float: left;
|
||||
margin-right: 10px;
|
||||
padding-right: 10px;
|
||||
border-right: 2px solid #fff;
|
||||
}
|
||||
|
||||
.wall-item-links-wrapper {
|
||||
float: left;
|
||||
margin-top: 100px;
|
||||
margin-left: 10px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.wall-item-delete-wrapper {
|
||||
float: right;
|
||||
margin-top: 20px;
|
||||
margin-right: 50px;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.wall-item-delete-end {
|
||||
clear: both;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
||||
.wall-item-like-buttons img {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.wall-item-delete-icon {
|
||||
|
@ -1023,6 +1028,22 @@ input#dfrn-url {
|
|||
overflow: auto;
|
||||
|
||||
}
|
||||
.wall-item-tools {
|
||||
clear: both;
|
||||
padding: 5px 10px 0px;
|
||||
}
|
||||
.wall-item-photo-end {
|
||||
clear: both;
|
||||
}
|
||||
.wall-item-author {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.wall-item-info {
|
||||
display: block;
|
||||
float: left;
|
||||
width:110px;
|
||||
margin-right:10px;
|
||||
}
|
||||
|
||||
.wall-item-title {
|
||||
float: left;
|
||||
|
@ -1033,7 +1054,7 @@ input#dfrn-url {
|
|||
.wall-item-body {
|
||||
float: left;
|
||||
width: 450px;
|
||||
margin-top: 30px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.comment-edit-wrapper {
|
||||
|
@ -1848,6 +1869,11 @@ a.mail-list-link {
|
|||
float: left;
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
#photo-edit-perms-end {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
#photo-edit-caption, #photo-edit-newtag, #photo-edit-albumname {
|
||||
float: left;
|
||||
margin-bottom: 25px;
|
||||
|
@ -2100,3 +2126,17 @@ a.mail-list-link {
|
|||
margin-top: 20px;
|
||||
}
|
||||
|
||||
|
||||
#photo-prev-link, #photo-next-link {
|
||||
padding: 10px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#photo-photo {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#photo-photo-end {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
|
|
@ -8,18 +8,21 @@
|
|||
<div class="wall-item-photo-end"></div>
|
||||
<div class="wall-item-wrapper" id="wall-item-wrapper-$id" >
|
||||
$lock
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
|
||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
||||
<div class="wall-item-location" id="wall-item-location-$id">$location</div>
|
||||
$vote
|
||||
<div class="wall-item-location" id="wall-item-location-$id">$location</div>
|
||||
</div>
|
||||
</span>
|
||||
<div class="wall-item-author">
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
|
||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
||||
|
||||
</div>
|
||||
<div class="wall-item-content" id="wall-item-content-$id" >
|
||||
<div class="wall-item-title" id="wall-item-title-$id">$title</div>
|
||||
<div class="wall-item-title-end"></div>
|
||||
<div class="wall-item-body" id="wall-item-body-$id" >$body</div>
|
||||
</div>
|
||||
<div class="wall-item-tools" id="wall-item-tools-$id">
|
||||
$vote
|
||||
$plink
|
||||
$drop
|
||||
</div>
|
||||
|
|
|
@ -1,30 +1,32 @@
|
|||
<div class="wall-item-outside-wrapper$indent wallwall" id="wall-item-outside-wrapper-$id" >
|
||||
<div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
|
||||
<span class="wall-item-info" id="wall-item-info-$id">
|
||||
<div class="wall-item-photo-wrapper" id="wall-item-ownerphoto-wrapper-$id" >
|
||||
<div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-$id" >
|
||||
<a href="$owner_url" title="$olinktitle" class="wall-item-photo-link" id="wall-item-ownerphoto-link-$id">
|
||||
<img src="$owner_photo" class="wall-item-photo$osparkle" id="wall-item-ownerphoto-$id" height="80" width="80" alt="$owner_name" /></a>
|
||||
</div>
|
||||
<div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="$wall" /></div>
|
||||
<div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id" >
|
||||
<div class="wall-item-photo-wrapper wwfrom" id="wall-item-photo-wrapper-$id" >
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
|
||||
<img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" height="80" width="80" alt="$name" /></a>
|
||||
</div>
|
||||
<div class="wall-item-photo-end"></div>
|
||||
<div class="wall-item-wrapper" id="wall-item-wrapper-$id" >
|
||||
$lock
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a> $to <a href="$owner_url" title="$olinktitle" class="wall-item-name-link"><span class="wall-item-name$osparkle" id="wall-item-ownername-$id">$owner_name</span></a> $vwall<br />
|
||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
||||
<div class="wall-item-location" id="wall-item-location-$id">$location</div>
|
||||
$vote
|
||||
</div>
|
||||
</span>
|
||||
<div class="wall-item-author">
|
||||
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a> $to <a href="$owner_url" title="$olinktitle" class="wall-item-name-link"><span class="wall-item-name$osparkle" id="wall-item-ownername-$id">$owner_name</span></a> $vwall<br />
|
||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
||||
</div>
|
||||
<div class="wall-item-content" id="wall-item-content-$id" >
|
||||
<div class="wall-item-title" id="wall-item-title-$id">$title</div>
|
||||
<div class="wall-item-title-end"></div>
|
||||
<div class="wall-item-body" id="wall-item-body-$id" >$body</div>
|
||||
</div>
|
||||
<div class="wall-item-tools" id="wall-item-tools-$id">
|
||||
$vote
|
||||
$plink
|
||||
$drop
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue