This commit is contained in:
Thomas Willingham 2014-05-22 19:39:28 +01:00
commit 2926017284
47 changed files with 12633 additions and 12184 deletions

1
.gitignore vendored
View file

@ -9,6 +9,7 @@ include/jquery-1.4.2.min.js
home.html
addon
*~
.*.swp
compiled/
custom/
/store/

4
app/admin.apd Normal file
View file

@ -0,0 +1,4 @@
url: $baseurl/admin
requires: admin
name: Site Admin
photo: $baseurl/app/admin.png

BIN
app/admin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

4
app/bookmarks.apd Normal file
View file

@ -0,0 +1,4 @@
url: $baseurl/bookmarks
requires: local_user
name: Bookmarks
photo: $baseurl/app/bookmarks.png

BIN
app/bookmarks.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

4
app/manage.apd Normal file
View file

@ -0,0 +1,4 @@
url: $baseurl/manage
requires: local_user
name: Channel Select
photo: $baseurl/app/manage.png

BIN
app/manage.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

4
app/settings.apd Normal file
View file

@ -0,0 +1,4 @@
url: $baseurl/settings
requires: local_user
name: Settings
photo: $baseurl/app/settings.png

BIN
app/settings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

4
app/storage.apd Normal file
View file

@ -0,0 +1,4 @@
url: $baseurl/cloud/$nick
requires: local_user
name: Files
photo: $baseurl/app/storage.png

BIN
app/storage.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

4
app/webpages.apd Normal file
View file

@ -0,0 +1,4 @@
url: $baseurl/webpages/$nick
requires: local_user
name: Webpages
photo: $baseurl/app/webpages.png

BIN
app/webpages.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View file

@ -47,13 +47,12 @@ define ( 'RED_PLATFORM', 'Red Matrix' );
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'R');
define ( 'ZOT_REVISION', 1 );
define ( 'DB_UPDATE_VERSION', 1109 );
define ( 'DB_UPDATE_VERSION', 1111 );
define ( 'EOL', '<br />' . "\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
define ( 'DIRECTORY_MODE_NORMAL', 0x0000); // This is technically DIRECTORY_MODE_TERTIARY, but it's the default, hence 0x0000
define ( 'DIRECTORY_MODE_PRIMARY', 0x0001);
define ( 'DIRECTORY_MODE_SECONDARY', 0x0002);

View file

@ -131,12 +131,12 @@ class Item extends BaseObject {
} else {
$like_list_part = '';
}
$like_button_label = ((x($alike,$item['mid'])) && ($alike[$item['mid']] < 2 ) ? t('Like') : t('Likes'));
$like_button_label = tt('Like','Likes',$like_count,'noun');
if (feature_enabled($conv->get_profile_owner(),'dislike')) {
$dislike_count = ((x($dlike,$item['mid'])) ? $dlike[$item['mid']] : '');
$dislike_list = ((x($dlike,$item['mid'])) ? $dlike[$item['mid'] . '-l'] : '');
$dislike_button_label = ((x($dlike,$item['mid'])) && ($dlike[$item['mid']] < 2) ? t('Dislike') : t('Dislikes'));
$dislike_button_label = tt('Dislike','Dislikes',$dislike_count,'noun');
if (count($dislike_list) > MAX_LIKERS) {
$dislike_list_part = array_slice($dislike_list, 0, MAX_LIKERS);
array_push($dislike_list_part, '<a href="#" data-toggle="modal" data-target="#dislikeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
@ -276,8 +276,8 @@ class Item extends BaseObject {
'like_list' => $like_list,
'like_list_part' => $like_list_part,
'like_button_label' => $like_button_label,
'like_modal_title' => t('Likes'),
'dislike_modal_title' => t('Dislikes'),
'like_modal_title' => t('Likes','noun'),
'dislike_modal_title' => t('Dislikes','noun'),
'dislike_count' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_count : ''),
'dislike_list' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_list : ''),
'dislike_list_part' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike_list_part : ''),

View file

@ -31,11 +31,14 @@ function get_system_apps() {
}
}
}
usort($ret,'app_name_compare');
return $ret;
}
function app_name_compare($a,$b) {
return strcmp($a['name'],$b['name']);
}
function parse_app_description($f) {
$ret = array();
@ -79,6 +82,10 @@ function parse_app_description($f) {
if(local_user())
unset($ret);
break;
case 'admin':
if(! is_site_admin())
unset($ret);
break;
case 'local_user':
if(! local_user())
unset($ret);
@ -93,7 +100,7 @@ function parse_app_description($f) {
break;
}
logger('require: ' . print_r($ret,true));
// logger('require: ' . print_r($ret,true));
}
if($ret) {
translate_system_apps($ret);
@ -104,7 +111,16 @@ function parse_app_description($f) {
function translate_system_apps(&$arr) {
$apps = array( 'Matrix' => t('Matrix'),
$apps = array(
'Site Admin' => t('Site Admin'),
'Bookmarks' => t('Bookmarks'),
'Address Book' => t('Address Book'),
'Login' => t('Login'),
'Channel Select' => t('Channel Select'),
'Matrix' => t('Matrix'),
'Settings' => t('Settings'),
'Files' => t('Files'),
'Webpages' => t('Webpages'),
'Channel Home' => t('Channel Home'),
'Profile' => t('Profile'),
'Photos' => t('Photos'),
@ -118,19 +134,71 @@ function translate_system_apps(&$arr) {
}
function app_render($app) {
// papp is a portable app
function app_render($papp,$mode = 'view') {
/**
* modes:
* view: normal mode for viewing an app via bbcode from a conversation or page
* provides install/update button if you're logged in locally
* list: normal mode for viewing an app on the app page
* no buttons are shown
* edit: viewing the app page in editing mode provides a delete button
*/
$installed = false;
if(! $papp['photo'])
$papp['photo'] = z_root() . '/' . get_default_profile_photo(80);
$papp['papp'] = papp_encode($papp);
foreach($papp as $k => $v) {
if(strpos($v,'http') === 0 && $k != 'papp')
$papp[$k] = zid($v);
if($k === 'desc')
$papp['desc'] = str_replace(array('\'','"'),array('&#39;','&dquot;'),$papp['desc']);
}
if(local_user()) {
$installed = app_installed(local_user(),$papp);
}
$install_action = (($installed) ? t('Update') : t('Install'));
return replace_macros(get_markup_template('app.tpl'),array(
'$app' => $papp,
'$purchase' => (($papp['page'] && (! $installed)) ? t('Purchase') : ''),
'$install' => ((local_user() && $mode == 'view') ? $install_action : ''),
'$edit' => ((local_user() && $installed && $mode == 'edit') ? t('Edit') : ''),
'$delete' => ((local_user() && $installed && $mode == 'edit') ? t('Delete') : '')
));
}
function app_install($uid,$app) {
$app['uid'] = $uid;
if(app_installed($uid,$app))
$x = app_update($app);
else
$x = app_store($app);
if($x['success'])
return $x['app_id'];
return false;
}
function app_destroy($uid,$app) {
if($uid && $app['guid']) {
$r = q("delete from app where app_id = '%s' and app_channel = %d limit 1",
dbesc($app['guid']),
intval($uid)
);
}
}
@ -155,30 +223,41 @@ function app_list($uid) {
function app_decode($s) {
$x = base64_decode($s);
$x = base64_decode(str_replace(array('<br />',"\r","\n",' '),array('','','',''),$s));
return json_decode($x,true);
}
function app_store($arr) {
// logger('app_store: ' . print_r($arr,true));
$darray = array();
$ret = array('success' => false);
$darray['app_url'] = ((x($arr,'url')) ? $arr['url'] : '');
$darray['app_channel'] = ((x($arr,'uid')) ? $arr['uid'] : 0);
if((! $darray['url']) || (! $darray['app_channel']))
if((! $darray['app_url']) || (! $darray['app_channel']))
return $ret;
$darray['app_id'] = ((x($arr,'guid')) ? $arr['guid'] : random_string());
if($arr['photo'] && ! strstr($arr['photo'],z_root())) {
$x = import_profile_photo($arr['photo'],get_observer_hash(),true);
$arr['photo'] = $x[1];
}
$darray['app_id'] = ((x($arr,'guid')) ? $arr['guid'] : random_string(). '.' . get_app()->get_hostname());
$darray['app_sig'] = ((x($arr,'sig')) ? $arr['sig'] : '');
$darray['app_author'] = ((x($arr,'author')) ? $arr['author'] : get_observer_hash());
$darray['app_name'] = ((x($arr,'name')) ? escape_tags($arr['name']) : t('Unknown'));
$darray['app_desc'] = ((x($arr,'desc')) ? escape_tags($arr['desc']) : '');
$darray['app_photo'] = ((x($arr,'photo')) ? $arr['photo'] : z_root() . '/' . get_default_profile_photo(80));
$darray['app_version'] = ((x($arr,'version')) ? escape_tags($arr['version']) : '');
$darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
$darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
$darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
$r = q("insert into app ( app_id, app_sig, app_author, app_name, app_desc, app_url, app_photo, app_version, app_channel) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d )",
$r = q("insert into app ( app_id, app_sig, app_author, app_name, app_desc, app_url, app_photo, app_version, app_channel, app_addr, app_price, app_page ) values ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s' )",
dbesc($darray['app_id']),
dbesc($darray['app_sig']),
dbesc($darray['app_author']),
@ -187,18 +266,122 @@ function app_store($arr) {
dbesc($darray['app_url']),
dbesc($darray['app_photo']),
dbesc($darray['app_version']),
intval($darray['app_channel'])
intval($darray['app_channel']),
dbesc($darray['app_addr']),
dbesc($darray['app_price']),
dbesc($darray['app_page'])
);
if($r)
if($r) {
$ret['success'] = true;
$ret['app_id'] = $darray['app_id'];
}
return $ret;
}
function app_update($arr) {
$darray = array();
$ret = array('success' => false);
$darray['app_url'] = ((x($arr,'url')) ? $arr['url'] : '');
$darray['app_channel'] = ((x($arr,'uid')) ? $arr['uid'] : 0);
$darray['app_id'] = ((x($arr,'guid')) ? $arr['guid'] : 0);
if((! $darray['app_url']) || (! $darray['app_channel']) || (! $darray['app_id']))
return $ret;
if($arr['photo'] && ! strstr($arr['photo'],z_root())) {
$x = import_profile_photo($arr['photo'],get_observer_hash(),true);
$arr['photo'] = $x[1];
}
$darray['app_sig'] = ((x($arr,'sig')) ? $arr['sig'] : '');
$darray['app_author'] = ((x($arr,'author')) ? $arr['author'] : get_observer_hash());
$darray['app_name'] = ((x($arr,'name')) ? escape_tags($arr['name']) : t('Unknown'));
$darray['app_desc'] = ((x($arr,'desc')) ? escape_tags($arr['desc']) : '');
$darray['app_photo'] = ((x($arr,'photo')) ? $arr['photo'] : z_root() . '/' . get_default_profile_photo(80));
$darray['app_version'] = ((x($arr,'version')) ? escape_tags($arr['version']) : '');
$darray['app_addr'] = ((x($arr,'addr')) ? escape_tags($arr['addr']) : '');
$darray['app_price'] = ((x($arr,'price')) ? escape_tags($arr['price']) : '');
$darray['app_page'] = ((x($arr,'page')) ? escape_tags($arr['page']) : '');
$r = q("update app set app_sig = '%s', app_author = '%s', app_name = '%s', app_desc = '%s', app_url = '%s', app_photo = '%s', app_version = '%s', app_addr = '%s', app_price = '%s', app_page = '%s' where app_id = '%s' and app_channel = %d limit 1",
dbesc($darray['app_sig']),
dbesc($darray['app_author']),
dbesc($darray['app_name']),
dbesc($darray['app_desc']),
dbesc($darray['app_url']),
dbesc($darray['app_photo']),
dbesc($darray['app_version']),
dbesc($darray['app_addr']),
dbesc($darray['app_price']),
dbesc($darray['app_page']),
dbesc($darray['app_id']),
intval($darray['app_channel'])
);
if($r) {
$ret['success'] = true;
$ret['app_id'] = $darray['app_id'];
}
return $ret;
}
function app_encode($app,$embed = false) {
$ret = array();
if($app['app_id'])
$ret['guid'] = $app['app_id'];
if($app['app_id'])
$ret['guid'] = $app['app_id'];
if($app['app_sig'])
$ret['sig'] = $app['app_sig'];
if($app['app_author'])
$ret['author'] = $app['app_author'];
if($app['app_name'])
$ret['name'] = $app['app_name'];
if($app['app_desc'])
$ret['desc'] = $app['app_desc'];
if($app['app_url'])
$ret['url'] = $app['app_url'];
if($app['app_photo'])
$ret['photo'] = $app['app_photo'];
if($app['app_version'])
$ret['version'] = $app['app_version'];
if($app['app_addr'])
$ret['addr'] = $app['app_addr'];
if($app['app_price'])
$ret['price'] = $app['app_price'];
if($app['app_page'])
$ret['page'] = $app['app_page'];
// if($app['alt_url'])
// $ret['alt_url'] = $app['alt_url'];
if(! $embed)
return $ret;
$j = json_encode($ret);
return '[app]' . chunk_split(base64_encode($j),72,"\n") . '[/app]';
}
function papp_encode($papp) {
return chunk_split(base64_encode(json_encode($papp)),72,"\n");
}

View file

@ -166,6 +166,15 @@ function bb_parse_crypt($match) {
}
function bb_parse_app($match) {
require_once('include/apps.php');
$app = app_decode($match[1]);
if($app)
return app_render($app);
}
function bb_qr($match) {
return '<img class="zrl" src="' . z_root() . '/photo/qr?f=&qr=' . urlencode($match[1]) . '" alt="' . t('QR code') . '" title="' . htmlspecialchars($match[1],ENT_QUOTES,'UTF-8') . '" />';
}
@ -684,6 +693,11 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
$Text = preg_replace_callback("/\[crypt (.*?)\](.*?)\[\/crypt\]/ism", 'bb_parse_crypt', $Text);
}
if(strpos($Text,'[/app]') !== false) {
$Text = preg_replace_callback("/\[app\](.*?)\[\/app\]/ism",'bb_parse_app', $Text);
}
// html5 video and audio
if (strpos($Text,'[/video]') !== false) {
$Text = preg_replace_callback("/\[video\](.*?\.(ogg|ogv|oga|ogm|webm|mp4))\[\/video\]/ism", 'tryzrlvideo', $Text);

View file

@ -2438,7 +2438,7 @@ function tag_deliver($uid,$item_id) {
if($terms) {
foreach($terms as $term) {
if((strcasecmp($term['term'],$u[0]['channel_name']) == 0) && link_compare($term['url'],$link)) {
if(link_compare($term['url'],$link)) {
$mention = true;
break;
}
@ -2474,11 +2474,11 @@ function tag_deliver($uid,$item_id) {
$tagged = false;
$plustagged = false;
$pattern = '/@\!?\[zrl\=' . preg_quote($term['url'],'/') . '\]' . preg_quote($u[0]['channel_name'],'/') . '\[\/zrl\]/';
$pattern = '/@\!?\[zrl\=' . preg_quote($term['url'],'/') . '\]' . preg_quote($term['term'],'/') . '\[\/zrl\]/';
if(preg_match($pattern,$body,$matches))
$tagged = true;
$pattern = '/@\!?\[zrl\=' . preg_quote($term['url'],'/') . '\]' . preg_quote($u[0]['channel_name'] . '+','/') . '\[\/zrl\]/';
$pattern = '/@\!?\[zrl\=' . preg_quote($term['url'],'/') . '\]' . preg_quote($term['term'] . '+','/') . '\[\/zrl\]/';
if(preg_match($pattern,$body,$matches))
$plustagged = true;
@ -2607,7 +2607,7 @@ function tgroup_check($uid,$item) {
if($terms) {
foreach($terms as $term) {
if(($term['term'] == $u[0]['channel_name']) && link_compare($term['url'],$link)) {
if(link_compare($term['url'],$link)) {
$mention = true;
break;
}
@ -2625,7 +2625,7 @@ function tgroup_check($uid,$item) {
$body = preg_replace('/\[share(.*?)\[\/share\]/','',$item['body']);
$pattern = '/@\!?\[zrl\=' . preg_quote($term['url'],'/') . '\]' . preg_quote($u[0]['channel_name'] . '+','/') . '\[\/zrl\]/';
$pattern = '/@\!?\[zrl\=' . preg_quote($term['url'],'/') . '\]' . preg_quote($term['term'] . '+','/') . '\[\/zrl\]/';
if(! preg_match($pattern,$body,$matches)) {
logger('tgroup_check: mention was in a reshare - ignoring');

View file

@ -145,25 +145,29 @@ function load_translation_table($lang, $install = false) {
/**
* @brief translate string if translation exists.
*
* @param s string that should get translated
* @param $s string that should get translated
* @param $ctx optional context to appear in po file
* @return translated string if exsists, otherwise s
*
*/
function t($s) {
function t($s,$ctx = '') {
global $a;
if(x($a->strings,$s)) {
$t = $a->strings[$s];
$cs = $ctx?"__ctx:".$ctx."__ ".$s:$s;
if(x($a->strings,$cs)) {
$t = $a->strings[$cs];
return is_array($t) ? $t[0] : $t;
}
return $s;
}
function tt($singular, $plural, $count){
function tt($singular, $plural, $count, $ctx = ''){
$a = get_app();
if(x($a->strings,$singular)) {
$t = $a->strings[$singular];
$cs = $ctx?"__ctx:".$ctx."__ ".$singular:$singular;
if(x($a->strings,$cs)) {
$t = $a->strings[$cs];
$f = 'string_plural_select_' . str_replace('-', '_', $a->language);
if(! function_exists($f))
$f = 'string_plural_select_default';
@ -210,8 +214,10 @@ function detect_language($s) {
if($min_confidence === false)
$min_confidence = LANGUAGE_DETECT_MIN_CONFIDENCE;
// embedded apps have long base64 strings which will trip up the detector.
$naked_body = preg_replace('/\[app\](.*?)\[\/app\]/','',$s);
// strip off bbcode
$naked_body = preg_replace('/\[(.+?)\]/', '', $s);
$naked_body = preg_replace('/\[(.+?)\]/', '', $naked_body);
if(mb_strlen($naked_body) < intval($min_length)) {
logger('detect language: string length less than ' . intval($min_length), LOGGER_DATA);
return '';

View file

@ -138,8 +138,8 @@ EOT;
if(! get_config('system','hide_help'))
$nav['help'] = array($help_url, t('Help'), "", t('Help and documentation'));
if(count($a->get_apps()) > 0)
$nav['apps'] = array('apps', t('Apps'), "", t('Addon applications, utilities, games'));
$nav['apps'] = array('apps', t('Apps'), "", t('Applications, utilities, links, games'));
$nav['search'] = array('search', t('Search'), "", t('Search site content'));
@ -221,7 +221,6 @@ EOT;
'$userinfo' => $x['usermenu'],
'$localuser' => local_user(),
'$sel' => $a->nav_sel,
'$apps' => $a->get_apps(),
'$pleasewait' => t('Please wait...')
));

View file

@ -76,11 +76,11 @@ function widget_collections($args) {
function widget_appselect($arr) {
return replace_macros(get_markup_template('app_select.tpl'),array(
'$title' => t('App Category'),
'$title' => t('Apps'),
'$system' => t('System'),
'$personal' => t('Personal'),
'$featured' => t('Featured'),
'$new' => t('New')
'$new' => t('Create Personal App'),
'$edit' => t('Edit Personal App')
));
}

View file

@ -85,7 +85,7 @@ CREATE TABLE IF NOT EXISTS `addon` (
CREATE TABLE IF NOT EXISTS `app` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`app_id` char(64) NOT NULL DEFAULT '',
`app_id` char(255) NOT NULL DEFAULT '',
`app_sig` char(255) NOT NULL DEFAULT '',
`app_author` char(255) NOT NULL DEFAULT '',
`app_name` char(255) NOT NULL DEFAULT '',

View file

@ -1,6 +1,6 @@
<?php
define( 'UPDATE_VERSION' , 1109 );
define( 'UPDATE_VERSION' , 1111 );
/**
*
@ -1216,7 +1216,7 @@ function update_r1107() {
}
function update_r11108() {
function update_r1108() {
$r = q("ALTER TABLE `app` ADD `app_addr` CHAR( 255 ) NOT NULL DEFAULT '',
ADD `app_price` CHAR( 255 ) NOT NULL DEFAULT '',
ADD `app_page` CHAR( 255 ) NOT NULL DEFAULT '',
@ -1225,3 +1225,22 @@ ADD INDEX ( `app_price` )");
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}
function update_r1109() {
$r = q("ALTER TABLE `app` CHANGE `app_id` `app_id` CHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''");
if($r)
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}
// We ended up with an extra zero in the name for 1108, so do it over and ignore the result.
function update_r1110() {
$r = q("ALTER TABLE `app` ADD `app_addr` CHAR( 255 ) NOT NULL DEFAULT '',
ADD `app_price` CHAR( 255 ) NOT NULL DEFAULT '',
ADD `app_page` CHAR( 255 ) NOT NULL DEFAULT '',
ADD INDEX ( `app_price` )");
return UPDATE_SUCCESS;
}

98
mod/appman.php Normal file
View file

@ -0,0 +1,98 @@
<?php /** @file */
require_once('include/apps.php');
function appman_post(&$a) {
if(! local_user())
return;
if($_POST['url']) {
$arr = array(
'uid' => intval($_REQUEST['uid']),
'url' => escape_tags($_REQUEST['url']),
'guid' => escape_tags($_REQUEST['guid']),
'author' => escape_tags($_REQUEST['author']),
'addr' => escape_tags($_REQUEST['addr']),
'name' => escape_tags($_REQUEST['name']),
'desc' => escape_tags($_REQUEST['desc']),
'photo' => escape_tags($_REQUEST['photo']),
'version' => escape_tags($_REQUEST['version']),
'price' => escape_tags($_REQUEST['price']),
'sig' => escape_tags($_REQUEST['sig'])
);
$_REQUEST['appid'] = app_install(local_user(),$arr);
if(app_installed(local_user(),$arr))
info( t('App installed.') . EOL);
return;
}
$papp = app_decode($_POST['papp']);
if(! is_array($papp)) {
notice( t('Malformed app.') . EOL);
return;
}
if($_POST['install']) {
app_install(local_user(),$papp);
}
if($_POST['delete']) {
app_destroy(local_user(),$papp);
}
if($_POST['edit']) {
return;
}
if($_SESSION['return_url'])
goaway(z_root() . '/' . $_SESSION['return_url']);
goaway(z_root() . '/apps/personal');
}
function appman_content(&$a) {
if(! local_user()) {
notice( t('Permission denied.') . EOL);
return;
}
logger('content');
$channel = $a->get_channel();
$app = null;
$embed = null;
if($_REQUEST['appid']) {
$r = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
dbesc($_REQUEST['appid']),
dbesc(local_user())
);
if($r)
$app = $r[0];
$embed = array('embed', t('Embed code'), app_encode($app,true),'');
}
return replace_macros(get_markup_template('app_create.tpl'), array(
'$banner' => (($app) ? t('Edit App') : t('Create App')),
'$app' => $app,
'$guid' => (($app) ? $app['app_id'] : ''),
'$author' => (($app) ? $app['app_author'] : $channel['channel_hash']),
'$addr' => (($app) ? $app['app_addr'] : $channel['xchan_addr']),
'$name' => array('name', t('Name of app'),(($app) ? $app['app_name'] : ''), t('Required')),
'$url' => array('url', t('Location (URL) of app'),(($app) ? $app['app_url'] : ''), t('Required')),
'$desc' => array('desc', t('Description'),(($app) ? $app['app_desc'] : ''), ''),
'$photo' => array('photo', t('Photo icon URL'),(($app) ? $app['app_url'] : ''), t('80 x 80 pixels - optional')),
'$version' => array('version', t('Version ID'),(($app) ? $app['app_version'] : ''), ''),
'$price' => array('price', t('Price of app'),(($app) ? $app['app_price'] : ''), ''),
'$page' => array('page', t('Location (URL) to purchase app'),(($app) ? $app['app_page'] : ''), ''),
'$embed' => $embed,
'$submit' => t('Submit')
));
}

View file

@ -5,15 +5,34 @@ require_once('include/apps.php');
function apps_content(&$a) {
if(argc() == 1 || (! local_user())) {
$apps = get_system_apps();
$apps = get_system_apps();
// $o .= print_r($apps,true);
// $o .= print_r($apps,true);
// return $o;
// return $o;
return replace_macros(get_markup_template('apps.tpl'), array(
'$title' => t('Apps'),
'$apps' => $apps,
));
}
return replace_macros(get_markup_template('apps.tpl'), array(
if(argc() == 3 && argv(2) == 'edit')
$mode = 'edit';
else
$mode = 'list';
$apps = array();
$list = app_list(local_user());
if($list) {
foreach($list as $app) {
$apps[] = app_render(app_encode($app),$mode);
}
}
return replace_macros(get_markup_template('myapps.tpl'), array(
'$title' => t('Apps'),
'$apps' => $apps,
));

View file

@ -12,9 +12,11 @@ function home_init(&$a) {
$channel = $a->get_channel();
if(local_user() && $channel && $channel['xchan_url']) {
$dest = get_pconfig(local_user(),'system','startpage');
$dest = $channel['channel_startpage'];
if(! $dest)
$dest = z_root() . '/network';
$dest = get_pconfig(local_user(),'system','startpage');
if(! $dest)
$dest = z_root() . '/apps';
goaway($dest);
}

File diff suppressed because it is too large Load diff

View file

@ -30,6 +30,7 @@ function po2php_run($argv, $argc) {
$infile = file($pofile);
$k="";
$v="";
$ctx="";
$arr = False;
$ink = False;
$inv = False;
@ -92,22 +93,26 @@ function po2php_run($argv, $argc) {
if ($k!="") $out .= $arr?");\n":";\n";
$arr=False;
$k = str_replace("msgid ","",$l);
if ($k != '""' ) {
$k = trim($k,"\"\r\n");
} else {
$k = "";
}
$k = trim($k,"\"\r\n");
$k = $ctx.$k;
// echo $ctx ? $ctx."\nX\n":"";
$k = preg_replace_callback($escape_s_exp,'escape_s',$k);
$ctx = "";
$ink = True;
}
if ($inv && substr($l,0,6)!="msgstr") {
if ($inv && substr($l,0,6)!="msgstr" && substr($l,0,7)!="msgctxt") {
$v .= trim($l,"\"\r\n");
$v = preg_replace_callback($escape_s_exp,'escape_s',$v);
//$out .= '$a->strings['.$k.'] = ';
}
if (substr($l,0,7)=="msgctxt") {
$ctx = str_replace("msgctxt ","",$l);
$ctx = trim($ctx,"\"\r\n");
$ctx = "__ctx:".$ctx."__ ";
$ctx = preg_replace_callback($escape_s_exp,'escape_s',$ctx);
}
}

View file

@ -44,7 +44,7 @@ OPTS=
# fi
#fi
KEYWORDS="-k -kt -ktt:1,2"
KEYWORDS="-k -kt:1 -kt:1,2c,2t -ktt:1,2 -ktt:1,2,4c,4t"
echo "extract strings to $OUTFILE.."

File diff suppressed because it is too large Load diff

View file

@ -1 +1 @@
2014-05-18.679
2014-05-22.683

View file

@ -199,60 +199,21 @@
/* comment_item */
.comment-wwedit-wrapper.threaded > .comment-edit-form > .comment-edit-photo {
width: 40px;
}
.comment-wwedit-wrapper.threaded > .comment-edit-form > .comment-edit-text-empty {
height: 1.5em;
}
.comment-wwedit-wrapper.threaded > .comment-edit-form > .comment-edit-submit-wrapper > .comment-edit-submit {
margin-left: 50px;
}
.comment-edit-photo {
margin: 10px 10px 10px 7px;
float: left;
}
[class^="comment-edit-bb"] {
display: none;
margin: 0px 0 -5px 0px;
padding: 0px;
width: 75%;
min-width: 170px
}
[class^="comment-edit-bb"] > li {
display: inline-block;
margin: 10px 10px 0 0;
visibility: none;
}
[class^="comment-edit-bb-end"] {
clear: both;
}
.comment-edit-text-empty, .comment-edit-text-full {
float: left;
margin-top: 10px;
padding: 3px 1px 1px 3px;
width: 100%;
padding: 8px;
}
.comment-edit-text-empty {
height: 2.8em;
width: 30%;
min-width: 170px;
overflow: auto;
margin-bottom: 10px;
resize: none;
}
.comment-edit-text-full {
height: 150px;
width: 50%;
min-width: 170px;
overflow: auto;
}
@ -280,14 +241,12 @@
filter:alpha(opacity=100);
}
.comment-edit-text-end {
clear: both;
.comment-tools {
display: none;
margin-top: 7px;
}
.comment-edit-submit {
margin: 10px 0px 10px 52px;
}
.comment-preview-icon {
margin-left: 15px;
.comment-edit-preview {
display: none;
margin-top: 7px;
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -6,21 +6,25 @@
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
$("#mod-cmnt-wrap-" + id).show();
openMenu("comment-edit-submit-wrapper-" + id);
openMenu("comment-tools-" + id);
return true;
}
return false;
}
function commentClose(obj,id) {
if(obj.value == '') {
obj.value = aStr['comment'];
$("#comment-edit-text-" + id).removeClass("comment-edit-text-full");
$("#comment-edit-text-" + id).addClass("comment-edit-text-empty");
$("#mod-cmnt-wrap-" + id).hide();
closeMenu("comment-edit-submit-wrapper-" + id);
return true;
}
return false;
//$(document).on('click', function() {
if(obj.value == '') {
obj.value = aStr['comment'];
$("#comment-edit-text-" + id).removeClass("comment-edit-text-full");
$("#comment-edit-text-" + id).addClass("comment-edit-text-empty");
$("#mod-cmnt-wrap-" + id).hide();
closeMenu("comment-tools-" + id);
return true;
}
return false;
//});
}
function showHideCommentBox(id) {
@ -32,14 +36,13 @@
}
}
function commentInsert(obj,id) {
var tmpStr = $("#comment-edit-text-" + id).val();
if(tmpStr == '$comment') {
tmpStr = '';
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
openMenu("comment-edit-submit-wrapper-" + id);
openMenu("comment-tools-" + id);
}
var ins = $(obj).html();
ins = ins.replace('&lt;','<');
@ -62,7 +65,7 @@
tmpStr = "";
$("#comment-edit-text-" + id).addClass("comment-edit-text-full");
$("#comment-edit-text-" + id).removeClass("comment-edit-text-empty");
openMenu("comment-edit-submit-wrapper-" + id);
openMenu("comment-tools-" + id);
$("#comment-edit-text-" + id).val(tmpStr);
}
@ -748,6 +751,7 @@ function updateConvItems(mode,data) {
$("#comment-edit-form-" + id).serialize(),
function(data) {
if(data.success) {
$("#comment-edit-preview-" + id).hide();
$("#comment-edit-wrapper-" + id).hide();
$("#comment-edit-text-" + id).val('');
var tarea = document.getElementById("comment-edit-text-" + id);

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,7 @@ Os detalhes de autenticação são os seguintes:
Localização do site: {{$siteurl}}
Nome: {{$email}}
Senha: (the password which was provided during registration)
Senha: (a senha escolhida ao registrar a conta)
Se esta conta foi criada sem seu conhecimento e não é desejada, você pode
visitar o site e reiniciar a senha. Isso permitirá que você a remova a partir

View file

@ -7,6 +7,12 @@ function string_plural_select_pt_br($n){
;
$a->strings["Cannot locate DNS info for database server '%s'"] = "Não foi possível localizar a informação de DNS para o servidor de banco de dados '%s'";
$a->strings["Profile Photos"] = "Fotos do perfil";
$a->strings["Matrix"] = "Matriz";
$a->strings["Channel Home"] = "Página inicial do canal";
$a->strings["Profile"] = "Perfil";
$a->strings["Photos"] = "Fotos";
$a->strings["Events"] = "Eventos";
$a->strings["Directory"] = "Diretório";
$a->strings["Embedded content"] = "Conteúdo incorporado";
$a->strings["Embedding disabled"] = "A incorporação está desabilitada";
$a->strings["created a new post"] = "criou uma nova publicação";
@ -23,49 +29,6 @@ $a->strings["Page Link"] = "Link da página";
$a->strings["Title"] = "Título";
$a->strings["Created"] = "Criado";
$a->strings["Edited"] = "Editado";
$a->strings["Private Message"] = "Mensagem privada";
$a->strings["Delete"] = "Excluir";
$a->strings["Select"] = "Selecionar";
$a->strings["save to folder"] = "salvar na pasta";
$a->strings["add star"] = "destacar";
$a->strings["remove star"] = "remover destaque";
$a->strings["toggle star status"] = "alternar destaque";
$a->strings["starred"] = "destacado";
$a->strings["Message is verified"] = "A mensagem foi verificada";
$a->strings["add tag"] = "adicionar etiqueta";
$a->strings["I like this (toggle)"] = "Eu gostei disso (alterna)";
$a->strings["like"] = "gostei";
$a->strings["I don't like this (toggle)"] = "Eu não gostei disso (alterna)";
$a->strings["dislike"] = "não gostei";
$a->strings["Share this"] = "Compartilhar isso";
$a->strings["share"] = "compartilhar";
$a->strings["View %s's profile - %s"] = "Ver o perfil de %s - %s";
$a->strings["to"] = "para";
$a->strings["via"] = "via";
$a->strings["Wall-to-Wall"] = "Mural-para-mural";
$a->strings["via Wall-To-Wall:"] = "via Mural-para-mural";
$a->strings[" from %s"] = "de %s";
$a->strings["last edited: %s"] = "última edição: %s";
$a->strings["Expires: %s"] = "Expira: %s";
$a->strings["Bookmark Links"] = "Guardar links";
$a->strings["Please wait"] = "Por favor, espere";
$a->strings["%d comment"] = array(
0 => "%d comentário",
1 => "%d comentários",
);
$a->strings["show more"] = "exibir mais";
$a->strings["This is you"] = "Este(a) é você";
$a->strings["Comment"] = "Comentar";
$a->strings["Submit"] = "Enviar";
$a->strings["Bold"] = "Negrito";
$a->strings["Italic"] = "Itálico";
$a->strings["Underline"] = "Sublinhado";
$a->strings["Quote"] = "Citação";
$a->strings["Code"] = "Código";
$a->strings["Image"] = "Imagem";
$a->strings["Link"] = "Link";
$a->strings["Video"] = "Vídeo";
$a->strings["Encrypt text"] = "Encriptar texto";
$a->strings["Can view my \"public\" stream and posts"] = "Pode ver meus fluxo e publicações \"públicos\"";
$a->strings["Can view my \"public\" channel profile"] = "Pode ver o perfil \"público\" do meu canal";
$a->strings["Can view my \"public\" photo albums"] = "Pode ver meus álbuns de fotos \"públicos\"";
@ -144,6 +107,53 @@ $a->strings["QR code"] = "código QR";
$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s escreveu a seguinte %2\$s %3\$s";
$a->strings["post"] = "publicação";
$a->strings["$1 wrote:"] = "$1 escreveu:";
$a->strings["Private Message"] = "Mensagem privada";
$a->strings["Delete"] = "Excluir";
$a->strings["Select"] = "Selecionar";
$a->strings["save to folder"] = "salvar na pasta";
$a->strings["Like"] = "Gostou";
$a->strings["Likes"] = "Gosta de";
$a->strings["Dislike"] = "Desgostou";
$a->strings["Dislikes"] = "Não gosta de";
$a->strings["add star"] = "destacar";
$a->strings["remove star"] = "remover destaque";
$a->strings["toggle star status"] = "alternar destaque";
$a->strings["starred"] = "destacado";
$a->strings["Message is verified"] = "A mensagem foi verificada";
$a->strings["add tag"] = "adicionar etiqueta";
$a->strings["I like this (toggle)"] = "Eu gostei disso (alterna)";
$a->strings["like"] = "gostei";
$a->strings["I don't like this (toggle)"] = "Eu não gostei disso (alterna)";
$a->strings["dislike"] = "não gostei";
$a->strings["Share this"] = "Compartilhar isso";
$a->strings["share"] = "compartilhar";
$a->strings["View %s's profile - %s"] = "Ver o perfil de %s - %s";
$a->strings["to"] = "para";
$a->strings["via"] = "via";
$a->strings["Wall-to-Wall"] = "Mural-para-mural";
$a->strings["via Wall-To-Wall:"] = "via Mural-para-mural";
$a->strings[" from %s"] = "de %s";
$a->strings["last edited: %s"] = "última edição: %s";
$a->strings["Expires: %s"] = "Expira: %s";
$a->strings["Bookmark Links"] = "Guardar links";
$a->strings["Please wait"] = "Por favor, espere";
$a->strings["%d comment"] = array(
0 => "%d comentário",
1 => "%d comentários",
);
$a->strings["show more"] = "exibir mais";
$a->strings["This is you"] = "Este(a) é você";
$a->strings["Comment"] = "Comentar";
$a->strings["Submit"] = "Enviar";
$a->strings["Bold"] = "Negrito";
$a->strings["Italic"] = "Itálico";
$a->strings["Underline"] = "Sublinhado";
$a->strings["Quote"] = "Citação";
$a->strings["Code"] = "Código";
$a->strings["Image"] = "Imagem";
$a->strings["Link"] = "Link";
$a->strings["Video"] = "Vídeo";
$a->strings["Encrypt text"] = "Encriptar texto";
$a->strings["%1\$s's bookmarks"] = "Links guardados de %1\$s";
$a->strings["Missing room name"] = "Nome da sala vazio";
$a->strings["Duplicate room name"] = "Nome da sala duplicado";
@ -380,11 +390,9 @@ $a->strings["Channel"] = "Canal";
$a->strings["Status Messages and Posts"] = "Mensagens de status e publicações";
$a->strings["About"] = "Sobre";
$a->strings["Profile Details"] = "Detalhes do perfil";
$a->strings["Photos"] = "Fotos";
$a->strings["Files"] = "Arquivos";
$a->strings["Files and Storage"] = "Arquivos e armazenamento";
$a->strings["Chatrooms"] = "Salas de bate-papo";
$a->strings["Events"] = "Eventos";
$a->strings["Events and Calendar"] = "Eventos e calendário";
$a->strings["Bookmarks"] = "Links guardados";
$a->strings["Saved Bookmarks"] = "Links guardados";
@ -514,9 +522,6 @@ $a->strings["Channel was deleted and no longer exists."] = "O canal foi deletado
$a->strings["Channel discovery failed."] = "A descoberta de canais falhou.";
$a->strings["local account not found."] = "a conta local não foi encontrada.";
$a->strings["Cannot connect to yourself."] = "Não é possível conectar-se consigo mesmo.";
$a->strings["Invalid data packet"] = "Pacote de dados inválido";
$a->strings["Unable to verify channel signature"] = "Não foi possível verificar a assinatura do canal";
$a->strings["Unable to verify site signature for %s"] = "Não foi possível verificar a assinatura do site para %s";
$a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Um grupo com esse nome, anteriormente excluído, foi reativado. Permissões de itens já existentes <strong>poderão</strong> ser aplicadas a esse grupo e qualquer futuros membros. Se não é essa a sua intenção, favor criar outro grupo com um nome diferente.";
$a->strings["Default privacy group for new contacts"] = "Grupo de privacidade padrão para novos contatos";
$a->strings["All Channels"] = "Todos os canais";
@ -558,7 +563,6 @@ $a->strings["Birthdays this week:"] = "Aniversários nesta semana:";
$a->strings["[No description]"] = "[Sem descrição]";
$a->strings["Event Reminders"] = "Lembretes de eventos";
$a->strings["Events this week:"] = "Eventos nesta semana:";
$a->strings["Profile"] = "Perfil";
$a->strings["Full Name:"] = "Nome completo:";
$a->strings["j F, Y"] = "j \\d\\e F, Y";
$a->strings["j F"] = "j \\d\\e F";
@ -601,6 +605,7 @@ $a->strings["everybody"] = "todos";
$a->strings["Secret Passphrase"] = "Frase secreta";
$a->strings["Passphrase hint"] = "Dica da frase secreta";
$a->strings["Notice: Permissions have changed but have not yet been submitted."] = "Atenção: permissões foram modificadas mas ainda não foram enviadas.";
$a->strings["close all"] = "fechar tudo";
$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
$a->strings["timeago.prefixFromNow"] = "timeago.prefixFromNow";
$a->strings["ago"] = "atrás";
@ -648,12 +653,9 @@ $a->strings["Help and documentation"] = "Ajuda e documentação";
$a->strings["Apps"] = "Aplicações";
$a->strings["Addon applications, utilities, games"] = "Aplicações adicionais, utilitários, jogos";
$a->strings["Search site content"] = "Pesquisar o conteúdo do site";
$a->strings["Directory"] = "Diretório";
$a->strings["Channel Locator"] = "Localizador de canais";
$a->strings["Matrix"] = "Matriz";
$a->strings["Your matrix"] = "Sua matriz";
$a->strings["Mark all matrix notifications seen"] = "Marcar todas as notificações da matriz como vistas";
$a->strings["Channel Home"] = "Página inicial do canal";
$a->strings["Channel home"] = "Página inicial do canal";
$a->strings["Mark all channel notifications seen"] = "Marcar todas as notificações de canais como vistas";
$a->strings["Connections"] = "Conexões";
@ -742,7 +744,13 @@ $a->strings["It's complicated"] = "É complicado";
$a->strings["Don't care"] = "Não importa";
$a->strings["Ask me"] = "Pergunte-me";
$a->strings["Edit File properties"] = "Editar propriedades do arquivo";
$a->strings["Invalid data packet"] = "Pacote de dados inválido";
$a->strings["Unable to verify channel signature"] = "Não foi possível verificar a assinatura do canal";
$a->strings["Unable to verify site signature for %s"] = "Não foi possível verificar a assinatura do site para %s";
$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "O token de segurança do formulário não estava correto. Isso provavelmente aconteceu porque o formulário ficou aberto por muito tempo (>3 horas) antes da sua submissão.";
$a->strings["App Category"] = "Categoria de aplicativos";
$a->strings["System"] = "Sistema";
$a->strings["Featured"] = "Destacado";
$a->strings["Ignore/Hide"] = "Ignorar/Ocultar";
$a->strings["Suggestions"] = "Sugestões";
$a->strings["See more..."] = "Veja mais...";
@ -971,8 +979,6 @@ $a->strings["Please login to continue."] = "Por favor, autentique-se para contin
$a->strings["Do you want to authorize this application to access your posts and contacts, and/or create new posts for you?"] = "Deseja autorizar esta aplicação a acessar suas publicações e contatos e/ou criar novas publicações para você?";
$a->strings["Remote authentication blocked. You are logged into this site locally. Please logout and retry."] = "Autenticação remota bloqueada. Você está autenticado neste site localmente. Por favor, saia e tente novamente.";
$a->strings["Welcome %s. Remote authentication successful."] = "Bem vindo %s. Autenticação remota realizada com sucesso.";
$a->strings["No installed applications."] = "Não existe nenhuma aplicação instalada.";
$a->strings["Applications"] = "Aplicações";
$a->strings["Item not available."] = "O item não está disponível.";
$a->strings["Fetching URL returns error: %1\$s"] = "Carregar o URL retorna o erro: %1\$s";
$a->strings["Invalid item."] = "Item inválido.";
@ -1006,8 +1012,6 @@ $a->strings["Profile unavailable to clone."] = "O perfil não está disponível
$a->strings["Profile Name is required."] = "É obrigatório informar o nome do perfil.";
$a->strings["Marital Status"] = "Estado civil";
$a->strings["Romantic Partner"] = "Parceiro/a romântico/a";
$a->strings["Likes"] = "Gosta de";
$a->strings["Dislikes"] = "Não gosta de";
$a->strings["Work/Employment"] = "Trabalho/Emprego";
$a->strings["Religion"] = "Religião";
$a->strings["Political Views"] = "Posição política";
@ -1082,6 +1086,7 @@ $a->strings["Description"] = "Descrição";
$a->strings["Or enter new bookmark folder name"] = "Ou digite o nome para uma nova pasta de links";
$a->strings["Room not found"] = "Sala não encontrada";
$a->strings["Leave Room"] = "Sair da sala";
$a->strings["Delete This Room"] = "Deletar esta sala";
$a->strings["I am away right now"] = "Eu estou ausente no momento";
$a->strings["I am online"] = "Eu estou online";
$a->strings["Bookmark this room"] = "Guarde esta sala";
@ -1430,11 +1435,11 @@ $a->strings["view/tpl/smarty3 is writable"] = "view/tpl/smarty3 tem permissão d
$a->strings["Red uses the store directory to save uploaded files. The web server needs to have write access to the store directory under the Red top level folder"] = "A Red usa o diretório store para salvar arquivos carregados. O servidor web necessita de permissão de escrita no diretório store dentro do diretório raiz da Red";
$a->strings["store is writable"] = "store tem permissão de escrita";
$a->strings["SSL certificate cannot be validated. Fix certificate or disable https access to this site."] = "Não foi possível validar o certificado SSL. Corrija o certificado ou desabilite o acesso via https ao site.";
$a->strings["If you use https access, you MUST use a certification instance known by all internet browsers. You MUST NOT use self-signed certificates!"] = "Se você utiliza acesso https, você DEVE usar uma instância de certificação reconhecida por todos os navegadores de internet. Você NÃO DEVE usar certificados assinados por você mesmo!";
$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub. If your"] = "Essa restrição é incorporada porque publicações públicas de você podem por exemplo conter referências a imagens no seu próprio hub. Se seu";
$a->strings["certificate is not known by the internet browser of users they get a warning message complaining about some security issues. Although"] = "certificado não é conhecido pelo navegador de internet do usuário eles receberão um alerta reclamando de alguns problemas de segurança. Apesar";
$a->strings["these complains are not the real truth - there are no security issues with your encryption! - the users may be confused, nerved or even"] = "dessas reclamações não serem a real verdade - não há problemas de segurança com sua encriptação! - os usuários podem ser confundidos, enervados ou pior";
$a->strings["worse may become scared about redmatrix having security issues. Use one of the free certification instances!"] = "ainda podem ficar com medo da redmatrix ter problemas de segurança. Use uma das instâncias certificadoras gratuitas!";
$a->strings["If you have https access to your website or allow connections to TCP port 443 (the https: port), you MUST use a browser-valid certificate. You MUST NOT use self-signed certificates!"] = "Se você oferece acesso https ao seu website ou permite conexões na porta TCP 443 (a porta https:), você DEVE usar um certificado reconhecido pelos navegadores. Você NÃO DEVE usar certificados assinados por você mesmo!";
$a->strings["This restriction is incorporated because public posts from you may for example contain references to images on your own hub."] = "Essa restrição é incorporada porque publicações públicas suas podem, por exemplo, conter referências a imagens no seu próprio hub.";
$a->strings["If your certificate is not recognised, members of other sites (who may themselves have valid certificates) will get a warning message on their own site complaining about security issues."] = "Se seu certificado não for reconhecido, membros de outros sites (que podem ter certificados válidos) receberão uma mensagem de aviso nos seus próprios sites reclamando de problemas de segurança.";
$a->strings["This can cause usability issues elsewhere (not just on your own site) so we must insist on this requirement."] = "Isso pode causar problemas de usabilidade (não só no seu site) então nós precisamos insistir nesse requisito.";
$a->strings["Providers are available that issue free certificates which are browser-valid."] = "Existem provedores que disponibilizam gratuitamente certificados reconhecidos por navegadores.";
$a->strings["SSL certificate validation"] = "Validação do certificado SSL";
$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "A reescrita de URLs não está funcionando no .htaccess. Verifique as configurações do servidor.";
$a->strings["Url rewrite is working"] = "A reescrita de URLs está funcionando";
@ -1779,7 +1784,7 @@ $a->strings["Set the background image"] = "Definir a imagem do pano de fundo";
$a->strings["Set the background colour of items"] = "Definir a cor de fundo dos items";
$a->strings["Set the background colour of comments"] = "Definir a cor de fundo dos comentários";
$a->strings["Set the border colour of comments"] = "Definir a cor da borda dos comentários";
$a->strings["Set the opacity of items"] = "Definir a opacidade de items";
$a->strings["Set the indent for comments"] = "Definir a indentação de comentários";
$a->strings["Set the basic colour for item icons"] = "Definir a cor básica para ícones de itens";
$a->strings["Set the hover colour for item icons"] = "Definir a cor para ícones de itens quando que o mouse está sobre eles";
$a->strings["Set font-size for the entire application"] = "Definir o tamanho da fonte para a aplicação como um todo";

View file

@ -1884,7 +1884,6 @@ img.mail-list-sender-photo {
.wall-item-content-wrapper {
background-color: $item_colour;
opacity: $item_opacity;
padding: 10px;
}
@ -1893,9 +1892,6 @@ img.mail-list-sender-photo {
border-top-left-radius: $radiuspx;
}
.wall-item-content-wrapper:hover {
z-index:99;
}
.comment .wall-item-body {
padding-left: $comment_padding;
}
@ -1905,35 +1901,23 @@ img.mail-list-sender-photo {
background-color: $comment_item_colour;
border-left: $comment_border_left $comment_border_colour;
border-right: $comment_border_right $comment_border_colour;
border-bottom: $comment_border_bottom $comment_border_colour;
border-radius: 0px;
padding: 7px 10px 7px 7px;
}
/*
.thread-wrapper.toplevel_item{
border-bottom: $comment_border_bottom $comment_border_colour;
border-right: $comment_border_right $item_colour;
border-left: $comment_border_left $item_colour;
border-top-right-radius: $radiuspx;
border-top-left-radius: $radiuspx;
border-bottom-right-radius: $radiuspx;
border-bottom-left-radius: $radiuspx;
}
*/
.wall-item-comment-wrapper {
background-color: $comment_item_colour;
/* border-top: $comment_border_top $item_colour; */
border-right: $comment_border_right $item_colour;
border-left: $comment_border_left $item_colour;
border-bottom: $comment_border_bottom $item_colour;
padding: 7px 10px;
background-color: $item_colour;
border-radius: 0px;
border-bottom-right-radius: $radiuspx;
border-bottom-left-radius: $radiuspx;
margin-top: 3px;
}
.wall-item-comment-wrapper-wc {
margin-top: 0px;
}
.wall-item-like,
.wall-item-dislike {
@ -1981,37 +1965,15 @@ img.mail-list-sender-photo {
color: $toolicon_colour;
}
.item-tool:hover {
/*color: $toolicon_activecolour;*/
}
.like-rotator {
color: $toolicon_colour;
}
.my-comment-photo {
border-radius: $radiuspx;
-moz-border-radius: $radiuspx;
box-shadow: $shadowpx $shadowpx $shadowpx 0 #444444;
}
.comment-edit-photo img {
width: $reply_photo;
}
[class^="comment-edit-bb"] {
list-style: none;
}
.comment-icon {
font-size: 1.2em;
font-size: 0.8em;
color: $toolicon_colour;
}
.comment-icon:hover {
color: $toolicon_activecolour;
}
.comment-edit-text-empty,
.comment-edit-text-full {
border: 1px solid #ccc;

View file

@ -1,23 +1,3 @@
function cmtBbOpen(comment, id) {
if($(comment).hasClass('comment-edit-text-full')) {
$(".comment-edit-bb-" + id).show();
return true;
}
return false;
}
function cmtBbClose(comment, id) {
// if($(comment).hasClass('comment-edit-text-empty')) {
// $(".comment-edit-bb-" + id).hide();
// return true;
// }
return false;
}
//document.jotpermslock = 'icon-lock';
//document.jotpermsunlock = 'icon-unlock';
$(document).ready(function() {
$('#expand-aside').click(function() {

17
view/tpl/app.tpl Normal file
View file

@ -0,0 +1,17 @@
<div class="app-container">
<a href="{{if $app.alt_url}}{{$app.alt_url}}{{else}}{{$app.url}}{{/if}}" {{if $app.desc}}title="{{$app.desc}}{{if $app.price}} ({{$app.price}}){{/if}}"{{/if}}><img src="{{$app.photo}}" width="80" height="80" />
<div class="app-name">{{$app.name}}</div>
</a>
{{if $purchase}}
<a href="{{$app.page}}" class="btn btn-default" title="{{$purchase}}" ><i class="icon-external"></i></a>
{{/if}}
{{if $install || $update || $delete }}
<form action="appman" method="post">
<input type="hidden" name="papp" value="{{$app.papp}}" />
{{if $install}}<button type="submit" name="install" value="{{$install}}" class="btn btn-default" title="{{$install}}" ><i class="icon-download-alt" ></i></button>{{/if}}
{{if $edit}}<input type="hidden" name="appid" value="{{$app.guid}}" /><button type="submit" name="edit" value="{{$edit}}" class="btn btn-default" title="{{$edit}}" ><i class="icon-pencil" ></i></button>{{/if}}
{{if $delete}}<button type="submit" name="delete" value="{{$delete}}" class="btn btn-default" title="{{$delete}}" ><i class="icon-remove drop-icons"></i></button>{{/if}}
</form>
{{/if}}
</div>

30
view/tpl/app_create.tpl Normal file
View file

@ -0,0 +1,30 @@
<h2>{{$banner}}</h2>
<form action="appman" method="post">
{{if $guid}}
<input type="hidden" name="guid" value="{{$guid}}" />
{{/if}}
{{if $author}}
<input type="hidden" name="author" value="{{$author}}" />
{{/if}}
{{if $addr}}
<input type="hidden" name="addr" value="{{$addr}}" />
{{/if}}
{{include file="field_input.tpl" field=$name}}
{{include file="field_input.tpl" field=$url}}
{{include file="field_textarea.tpl" field=$desc}}
{{include file="field_input.tpl" field=$photo}}
{{include file="field_input.tpl" field=$version}}
{{include file="field_input.tpl" field=$price}}
{{include file="field_input.tpl" field=$page}}
{{if $embed}}
{{include file="field_textarea.tpl" field=$embed}}
{{/if}}
<input type="submit" name="submit" value="{{$submit}}" />
</form>

View file

@ -1,10 +1,11 @@
<div class="widget">
<h3>{{$title}}</h3>
<ul>
<li><a href="apps/system">{{$system}}</a></li>
<li><a href="apps">{{$system}}</a></li>
<li><a href="apps/personal">{{$personal}}</a></li>
<li><a href="apps/featured">{{$featured}}</a></li>
<li><a href="apps/new">{{$new}}</a></li>
<br />
<li><a href="appman">{{$new}}</a></li>
<li><a href="apps/personal/edit">{{$edit}}</a></li>
</ul>
</div>

View file

@ -10,44 +10,7 @@
<input type="hidden" name="return" value="{{$return_path}}" />
<input type="hidden" name="jsreload" value="{{$jsreload}}" />
<input type="hidden" name="preview" id="comment-preview-inp-{{$id}}" value="0" />
<div class="comment-edit-photo" id="comment-edit-photo-{{$id}}" >
<a class="comment-edit-photo-link" href="{{$mylink}}" title="{{$mytitle}}"><img class="my-comment-photo" src="{{$myphoto}}" alt="{{$mytitle}}" title="{{$mytitle}}" /></a>
</div>
<div class="comment-edit-photo-end"></div>
<ul class="comment-edit-bb-{{$id}}">
<li><i class="icon-bold shadow comment-icon"
style="cursor: pointer;" title="{{$edbold}}"
onclick="insertbbcomment('{{$comment}}','b', {{$id}});"></i></li>
<li><i class="icon-italic shadow comment-icon"
style="cursor: pointer;" title="{{$editalic}}"
onclick="insertbbcomment('{{$comment}}','i', {{$id}});"></i></li>
<li><i class="icon-underline shadow comment-icon"
style="cursor: pointer;" title="{{$eduline}}"
onclick="insertbbcomment('{{$comment}}','u', {{$id}});"></i></li>
<li><i class="icon-quote-left shadow comment-icon"
style="cursor: pointer;" title="{{$edquote}}"
onclick="insertbbcomment('{{$comment}}','quote', {{$id}});"></i></li>
<li><i class="icon-terminal shadow comment-icon"
style="cursor: pointer;" title="{{$edcode}}"
onclick="insertbbcomment('{{$comment}}','code', {{$id}});"></i></li>
<li><i class="icon-camera shadow comment-icon"
style="cursor: pointer;" title="{{$edimg}}"
onclick="insertbbcomment('{{$comment}}','img', {{$id}});"></i></li>
<li><i class="icon-link shadow comment-icon"
style="cursor: pointer;" title="{{$edurl}}"
onclick="insertbbcomment('{{$comment}}','url', {{$id}});"></i></li>
<li><i class="icon-facetime-video shadow comment-icon"
style="cursor: pointer;" title="{{$edvideo}}"
onclick="insertbbcomment('{{$comment}}','video', {{$id}});"></i></li>
{{if $feature_encrypt}}
<li><i class="icon-key shadow comment-icon"
style="cursor: pointer;" title="{{$encrypt}}"
onclick="red_encrypt('{{$cipher}}','#comment-edit-text-' + '{{$id}}',''); return false;"></i></li>
{{/if}}
</ul>
<div class="comment-edit-bb-end"></div>
<textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,{{$id}});cmtBbOpen(this, {{$id}});" onBlur="commentClose(this,{{$id}});cmtBbClose(this,{{$id}});" >{{$comment}}</textarea>
<textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,{{$id}});" onBlur="commentClose(this,{{$id}});" >{{$comment}}</textarea>
{{if $qcomment}}
<select id="qcomment-select-{{$id}}" name="qcomment-{{$id}}" class="qcomment" onchange="qCommentInsert(this,{{$id}});" >
<option value=""></option>
@ -56,17 +19,48 @@
{{/foreach}}
</select>
{{/if}}
<div class="comment-edit-text-end"></div>
<div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-{{$id}}" style="display: none;" >
<input type="submit" onclick="post_comment({{$id}}); return false;" id="comment-edit-submit-{{$id}}" class="comment-edit-submit" name="submit" value="{{$submit}}" />
{{if $preview}}
<span onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" class="fakelink"><i class="icon-eye-open comment-icon comment-preview-icon" title="{{$preview}}"></i></span>
<div id="comment-edit-preview-{{$id}}" class="comment-edit-preview" style="display:none;"></div>
{{/if}}
<div class="clear"></div>
<div id="comment-tools-{{$id}}" class="comment-tools">
<div id="comment-edit-bb-{{$id}}" class="btn-group pull-left">
<button class="btn btn-default btn-xs" title="{{$edbold}}" onclick="insertbbcomment('{{$comment}}','b', {{$id}}); return false;">
<i class="icon-bold comment-icon"></i>
</button>
<button class="btn btn-default btn-xs" title="{{$editalic}}" onclick="insertbbcomment('{{$comment}}','i', {{$id}}); return false;">
<i class="icon-italic comment-icon"></i>
</button>
<button class="btn btn-default btn-xs" title="{{$eduline}}" onclick="insertbbcomment('{{$comment}}','u', {{$id}}); return false;">
<i class="icon-underline comment-icon"></i>
</button>
<button class="btn btn-default btn-xs" title="{{$edquote}}" onclick="insertbbcomment('{{$comment}}','quote', {{$id}}); return false;">
<i class="icon-quote-left comment-icon"></i>
</button>
<button class="btn btn-default btn-xs" title="{{$edcode}}" onclick="insertbbcomment('{{$comment}}','code', {{$id}}); return false;">
<i class="icon-terminal comment-icon"></i>
</button>
<button class="btn btn-default btn-xs" title="{{$comment}}" onclick="insertbbcomment('{{$comment}}','img', {{$id}}); return false;">
<i class="icon-camera comment-icon"></i>
</button>
<button class="btn btn-default btn-xs" title="{{$edurl}}" onclick="insertbbcomment('{{$comment}}','url', {{$id}}); return false;">
<i class="icon-link comment-icon"></i>
</button>
<button class="btn btn-default btn-xs" title="{{$edvideo}}" onclick="insertbbcomment('{{$comment}}','video', {{$id}}); return false;">
<i class="icon-facetime-video comment-icon"></i>
</button>
{{if $feature_encrypt}}
<button class="btn btn-default btn-xs" title="{{$encrypt}}" onclick="red_encrypt('{{$cipher}}','#comment-edit-text-' + '{{$id}}',''); return false;">
<i class="icon-key comment-icon"></i>
</button>
{{/if}}
</div>
<div class="btn-group pull-right" id="comment-edit-submit-wrapper-{{$id}}">
{{if $preview}}
<button id="comment-edit-submit-{{$id}}" class="btn btn-default btn-xs btn-preview" onclick="preview_comment({{$id}}); return false;" title="{{$preview}}">
<i class="icon-eye-open comment-icon" ></i>
</button>
{{/if}}
<button id="comment-edit-submit-{{$id}}" class="btn btn-primary btn-xs" type="submit" name="submit" onclick="post_comment({{$id}}); return false;">{{$submit}}</button>
</div>
</div>
<div class="comment-edit-end"></div>
<div class="clear"></div>
</form>
</div>

View file

@ -174,9 +174,11 @@
{{/foreach}}
{{/if}}
{{if $item.comment}}
<div class="wall-item-comment-wrapper" >
<div class="wall-item-comment-wrapper{{if $item.children}} wall-item-comment-wrapper-wc{{/if}}" >
{{$item.comment}}
</div>
<div id="comment-edit-preview-{{$item.id}}" class="comment-edit-preview"></div>
<div class="clear"></div>
{{/if}}
</div>
{{if $item.comment_lastcollapsed}}

9
view/tpl/myapps.tpl Executable file
View file

@ -0,0 +1,9 @@
<h3>{{$title}}</h3>
{{foreach $apps as $ap}}
<div class="app-container">
{{$ap}}
</div>
{{/foreach}}
<div class="clear"></div>

View file

@ -157,13 +157,8 @@
{{/if}}
{{if $nav.apps}}
<li class="{{$sel.apps}} hidden-xs">
<a class="{{$nav.apps.2}} dropdown-toggle" data-toggle="dropdown" href="#" rel="#nav-apps-menu" title="{{$nav.apps.3}}" ><i class="icon-cogs"></i></a>
<ul class="dropdown-menu">
{{foreach $apps as $ap}}
<li role="presentation">{{$ap}}</li>
{{/foreach}}
</ul>
<li class="{{$sel.apps}}">
<a class="{{$nav.apps.2}}" href="{{$nav.apps.0}}" title="{{$nav.apps.3}}" ><i class="icon-cogs"></i></a>
</li>
{{/if}}