Merge remote-tracking branch 'upstream/dev' into dev
This commit is contained in:
commit
dc78ab1c77
49
CHANGELOG
49
CHANGELOG
@ -1,3 +1,52 @@
|
|||||||
|
Hubzilla 1.6
|
||||||
|
Cleanup and standardise the interfaces to the "jot" editor
|
||||||
|
Router re-written to support calling class object methods as controllers
|
||||||
|
All existing modules (160+) re-written as object classes
|
||||||
|
Plugin hook interface adapted to call static class methods
|
||||||
|
Context help improved dramatically with content for the most accessed pages.
|
||||||
|
Reverted a compatibility change to support GNU-social events. We copied their feed format and their feed format is wrong (XML namespace collisions).
|
||||||
|
Provide a querystring attribute to CSS/JS resources to avoid caching issues when our code changes (which is often).
|
||||||
|
Fix javascript detection and allow either positive or negative detection.
|
||||||
|
Refactor the plugin hook registration procedure, provide 'unregister all' ability.
|
||||||
|
Fix RSD (Real Simple Discovery) which has been broken for some time.
|
||||||
|
Update smarty library to 3.1.29
|
||||||
|
Update jquery.textcomplete to 1.3.4
|
||||||
|
Update font-awesome to 4.6.1
|
||||||
|
Update SabreDAV to 3.0 (PHP version requirements prevent us from pushing it further at this time)
|
||||||
|
Help text added to cmdline utilities config and pconfig
|
||||||
|
Reworking of the database logging facility to avoid the rare but troublesome recursion when the log facility needed to query the DB internally to obtain config parameters.
|
||||||
|
Implement singleton delivery (emulate nomadic identity to singleton networks and services)
|
||||||
|
Fix empty album name in photo activities when photo is stored in top level folder.
|
||||||
|
Allow engineering units to be used in service class data size restrictions (400M, 1G, etc.)
|
||||||
|
Lots of work on bbcode auto-completion
|
||||||
|
Admin interface provided to manage external resource repositories
|
||||||
|
Oembed security reworked. Now all sources are filtered by default unless blocked.
|
||||||
|
Remove the date-string version and use only STD_VERSION
|
||||||
|
Add categories and categorisation filtering and the ability to edit all apps (including system apps) for a given channel
|
||||||
|
Ensure the ability to translate names of all system apps (except those provided in addons)
|
||||||
|
Provide ability to add categories to content from channel sources
|
||||||
|
Lots of work on the presentation of the ACL widget to enhance usability and intuitiveness
|
||||||
|
Allow somebody to follow a channel from a pasted redress containing a Unicode lookalike of the @ sign.
|
||||||
|
Add conditional syntax to Comanche (if/then/else)
|
||||||
|
Convert Comanche to an object class
|
||||||
|
Removed IE6 compatibility code
|
||||||
|
Explicitly close DB on shutdown/exit instead of allowing it to close naturally
|
||||||
|
Allowed delayed publish of webpages
|
||||||
|
Show current repository versions of master and dev on admin page and warn if your installation has fallen behind master
|
||||||
|
Provide some extra security checks to import data and files to prevent mischief
|
||||||
|
Block CalDAV/CardDAV namespace reserved words from being used as a channel nickname/redress since Sabre is somewhat inflexible in this regard
|
||||||
|
Plugins:
|
||||||
|
Diaspora
|
||||||
|
markdown translator work needed to eradicate the Diaspora Comment Virus.
|
||||||
|
upgrade all inbound paths with the most recent protocol changes (several of these)
|
||||||
|
convert 'diaspora_meta' (Diaspora Comment Virus) to iconfig and eradicate from sites with Diaspora disabled
|
||||||
|
implement social relay and allow following tags
|
||||||
|
upgrade statistics.json to NodeInfo. Currently hubzilla sites are tagged as 'redmatrix' because the NodeInfo schema lacks extensibility and project names are used to designate protocol compatibility rather than protocol names.
|
||||||
|
Std-embeds
|
||||||
|
New addon to allow a handful of corporate providers to run unfiltered embed code (youtube, vimeo, soundcloud)
|
||||||
|
Various:
|
||||||
|
upgrade font-awesome icons and adapt a few addons to Objects and the new hook interface and new controller interface
|
||||||
|
|
||||||
Hubzilla 1.4
|
Hubzilla 1.4
|
||||||
[This list may appear brief, but encompasses a huge amount of re-writing and re-factoring
|
[This list may appear brief, but encompasses a huge amount of re-writing and re-factoring
|
||||||
of the internal code structure to gain long-term performance and stability and provide a standard
|
of the internal code structure to gain long-term performance and stability and provide a standard
|
||||||
|
@ -1733,6 +1733,19 @@ class Admin extends \Zotlabs\Web\Controller {
|
|||||||
} else {
|
} else {
|
||||||
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
|
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
|
||||||
}
|
}
|
||||||
|
$extendDir = __DIR__ . '/../../store/git/sys/extend';
|
||||||
|
$addonDir = $extendDir . '/addon';
|
||||||
|
if (!file_exists($extendDir)) {
|
||||||
|
if (!mkdir($extendDir, 0770, true)) {
|
||||||
|
logger('Error creating extend folder: ' . $extendDir);
|
||||||
|
json_return_and_die(array('message' => 'Error creating extend folder: ' . $extendDir, 'success' => false));
|
||||||
|
} else {
|
||||||
|
if (!symlink(__DIR__ . '/../../extend/addon', $addonDir)) {
|
||||||
|
logger('Error creating symlink to addon folder: ' . $addonDir);
|
||||||
|
json_return_and_die(array('message' => 'Error creating symlink to addon folder: ' . $addonDir, 'success' => false));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
$repoDir = __DIR__ . '/../../store/git/sys/extend/addon/' . $repoName;
|
$repoDir = __DIR__ . '/../../store/git/sys/extend/addon/' . $repoName;
|
||||||
if (!is_dir($repoDir)) {
|
if (!is_dir($repoDir)) {
|
||||||
logger('Repo directory does not exist: ' . $repoDir);
|
logger('Repo directory does not exist: ' . $repoDir);
|
||||||
@ -1758,6 +1771,19 @@ class Admin extends \Zotlabs\Web\Controller {
|
|||||||
} else {
|
} else {
|
||||||
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
|
json_return_and_die(array('message' => 'No repo name provided.', 'success' => false));
|
||||||
}
|
}
|
||||||
|
$extendDir = __DIR__ . '/../../store/git/sys/extend';
|
||||||
|
$addonDir = $extendDir . '/addon';
|
||||||
|
if (!file_exists($extendDir)) {
|
||||||
|
if (!mkdir($extendDir, 0770, true)) {
|
||||||
|
logger('Error creating extend folder: ' . $extendDir);
|
||||||
|
json_return_and_die(array('message' => 'Error creating extend folder: ' . $extendDir, 'success' => false));
|
||||||
|
} else {
|
||||||
|
if (!symlink(__DIR__ . '/../../extend/addon', $addonDir)) {
|
||||||
|
logger('Error creating symlink to addon folder: ' . $addonDir);
|
||||||
|
json_return_and_die(array('message' => 'Error creating symlink to addon folder: ' . $addonDir, 'success' => false));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
$repoDir = __DIR__ . '/../../store/git/sys/extend/addon/' . $repoName;
|
$repoDir = __DIR__ . '/../../store/git/sys/extend/addon/' . $repoName;
|
||||||
if (!is_dir($repoDir)) {
|
if (!is_dir($repoDir)) {
|
||||||
logger('Repo directory does not exist: ' . $repoDir);
|
logger('Repo directory does not exist: ' . $repoDir);
|
||||||
|
@ -8,7 +8,6 @@ require_once('include/widgets.php');
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Comanche {
|
class Comanche {
|
||||||
|
|
||||||
|
|
||||||
@ -95,7 +94,7 @@ class Comanche {
|
|||||||
$cnt = preg_match_all("/\[region=(.*?)\](.*?)\[\/region\]/ism", $s, $matches, PREG_SET_ORDER);
|
$cnt = preg_match_all("/\[region=(.*?)\](.*?)\[\/region\]/ism", $s, $matches, PREG_SET_ORDER);
|
||||||
if($cnt) {
|
if($cnt) {
|
||||||
foreach($matches as $mtch) {
|
foreach($matches as $mtch) {
|
||||||
\App::$layout['region_' . $mtch[1]] = $this->region($mtch[2]);
|
\App::$layout['region_' . $mtch[1]] = $this->region($mtch[2],$mtch[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -320,7 +319,9 @@ class Comanche {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function region($s) {
|
function region($s,$region_name) {
|
||||||
|
|
||||||
|
$s = str_replace('$region',$region_name,$s);
|
||||||
|
|
||||||
$matches = array();
|
$matches = array();
|
||||||
|
|
||||||
|
@ -73,6 +73,9 @@ class BasicAuth extends DAV\Auth\Backend\AbstractBasic {
|
|||||||
protected $timezone = '';
|
protected $timezone = '';
|
||||||
|
|
||||||
|
|
||||||
|
public $module_disabled = false;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Validates a username and password.
|
* @brief Validates a username and password.
|
||||||
*
|
*
|
||||||
@ -92,7 +95,7 @@ class BasicAuth extends DAV\Auth\Backend\AbstractBasic {
|
|||||||
intval($record['account_id']),
|
intval($record['account_id']),
|
||||||
intval($record['account_default_channel'])
|
intval($record['account_default_channel'])
|
||||||
);
|
);
|
||||||
if ($r) {
|
if($r && $this->check_module_access($r[0]['channel_id'])) {
|
||||||
return $this->setAuthenticated($r[0]);
|
return $this->setAuthenticated($r[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -109,12 +112,16 @@ class BasicAuth extends DAV\Auth\Backend\AbstractBasic {
|
|||||||
if ((($record['account_flags'] == ACCOUNT_OK) || ($record['account_flags'] == ACCOUNT_UNVERIFIED))
|
if ((($record['account_flags'] == ACCOUNT_OK) || ($record['account_flags'] == ACCOUNT_UNVERIFIED))
|
||||||
&& (hash('whirlpool', $record['account_salt'] . $password) === $record['account_password'])) {
|
&& (hash('whirlpool', $record['account_salt'] . $password) === $record['account_password'])) {
|
||||||
logger('password verified for ' . $username);
|
logger('password verified for ' . $username);
|
||||||
|
if($this->check_module_access($r[0]['channel_id']))
|
||||||
return $this->setAuthenticated($r[0]);
|
return $this->setAuthenticated($r[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if($this->module_disabled)
|
||||||
|
$error = 'module not enabled for ' . $username;
|
||||||
|
else
|
||||||
$error = 'password failed for ' . $username;
|
$error = 'password failed for ' . $username;
|
||||||
logger($error);
|
logger($error);
|
||||||
log_failed_login($error);
|
log_failed_login($error);
|
||||||
@ -139,6 +146,17 @@ class BasicAuth extends DAV\Auth\Backend\AbstractBasic {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function check_module_access($channel_id) {
|
||||||
|
if($channel_id && \App::$module === 'cdav') {
|
||||||
|
$x = get_pconfig($channel_id,'cdav','enabled');
|
||||||
|
if(! $x) {
|
||||||
|
$this->module_disabled = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the channel_name from the currently logged-in channel.
|
* Sets the channel_name from the currently logged-in channel.
|
||||||
*
|
*
|
||||||
|
@ -13,10 +13,10 @@ namespace Zotlabs\Web;
|
|||||||
|
|
||||||
class Session {
|
class Session {
|
||||||
|
|
||||||
private static $handler = null;
|
private $handler = null;
|
||||||
private static $session_started = false;
|
private $session_started = false;
|
||||||
|
|
||||||
function init() {
|
public function init() {
|
||||||
|
|
||||||
$gc_probability = 50;
|
$gc_probability = 50;
|
||||||
|
|
||||||
@ -29,7 +29,8 @@ class Session {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
$handler = new \Zotlabs\Web\SessionHandler();
|
$handler = new \Zotlabs\Web\SessionHandler();
|
||||||
self::$handler = $handler;
|
|
||||||
|
$this->handler = $handler;
|
||||||
|
|
||||||
$x = session_set_save_handler($handler,false);
|
$x = session_set_save_handler($handler,false);
|
||||||
if(! $x)
|
if(! $x)
|
||||||
@ -38,11 +39,12 @@ class Session {
|
|||||||
// Force cookies to be secure (https only) if this site is SSL enabled.
|
// Force cookies to be secure (https only) if this site is SSL enabled.
|
||||||
// Must be done before session_start().
|
// Must be done before session_start().
|
||||||
|
|
||||||
|
|
||||||
$arr = session_get_cookie_params();
|
$arr = session_get_cookie_params();
|
||||||
session_set_cookie_params(
|
session_set_cookie_params(
|
||||||
((isset($arr['lifetime'])) ? $arr['lifetime'] : 0),
|
((isset($arr['lifetime'])) ? $arr['lifetime'] : 0),
|
||||||
((isset($arr['path'])) ? $arr['path'] : '/'),
|
((isset($arr['path'])) ? $arr['path'] : '/'),
|
||||||
((isset($arr['domain'])) ? $arr['domain'] : App::get_hostname()),
|
(($arr['domain']) ? $arr['domain'] : \App::get_hostname()),
|
||||||
((isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') ? true : false),
|
((isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') ? true : false),
|
||||||
((isset($arr['httponly'])) ? $arr['httponly'] : true)
|
((isset($arr['httponly'])) ? $arr['httponly'] : true)
|
||||||
);
|
);
|
||||||
@ -51,9 +53,9 @@ class Session {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function start() {
|
public function start() {
|
||||||
session_start();
|
session_start();
|
||||||
self::$session_started = true;
|
$this->session_started = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -62,8 +64,8 @@ class Session {
|
|||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function nuke() {
|
public function nuke() {
|
||||||
self::new_cookie(0); // 0 means delete on browser exit
|
$this->new_cookie(0); // 0 means delete on browser exit
|
||||||
if($_SESSION && count($_SESSION)) {
|
if($_SESSION && count($_SESSION)) {
|
||||||
foreach($_SESSION as $k => $v) {
|
foreach($_SESSION as $k => $v) {
|
||||||
unset($_SESSION[$k]);
|
unset($_SESSION[$k]);
|
||||||
@ -71,48 +73,52 @@ class Session {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function new_cookie($xtime) {
|
public function new_cookie($xtime) {
|
||||||
|
|
||||||
$newxtime = (($xtime> 0) ? (time() + $xtime) : 0);
|
$newxtime = (($xtime> 0) ? (time() + $xtime) : 0);
|
||||||
|
|
||||||
$old_sid = session_id();
|
$old_sid = session_id();
|
||||||
|
|
||||||
if(self::$handler && self::$session_started) {
|
$arr = session_get_cookie_params();
|
||||||
|
|
||||||
|
if($this->handler && $this->session_started) {
|
||||||
session_regenerate_id(true);
|
session_regenerate_id(true);
|
||||||
|
|
||||||
// force SessionHandler record creation with the new session_id
|
// force SessionHandler record creation with the new session_id
|
||||||
// which occurs as a side effect of read()
|
// which occurs as a side effect of read()
|
||||||
|
|
||||||
self::$handler->read(session_id());
|
$this->handler->read(session_id());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
logger('no session handler');
|
logger('no session handler');
|
||||||
|
|
||||||
if (x($_COOKIE, 'jsdisabled')) {
|
if (x($_COOKIE, 'jsdisabled')) {
|
||||||
setcookie('jsdisabled', $_COOKIE['jsdisabled'], $newxtime);
|
setcookie('jsdisabled', $_COOKIE['jsdisabled'], $newxtime, '/', \App::get_hostname(),((isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') ? true : false),((isset($arr['httponly'])) ? $arr['httponly'] : true));
|
||||||
}
|
}
|
||||||
setcookie(session_name(),session_id(),$newxtime);
|
setcookie(session_name(),session_id(),$newxtime, '/', \App::get_hostname(),((isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') ? true : false),((isset($arr['httponly'])) ? $arr['httponly'] : true));
|
||||||
|
|
||||||
$arr = array('expire' => $xtime);
|
$arr = array('expire' => $xtime);
|
||||||
call_hooks('new_cookie', $arr);
|
call_hooks('new_cookie', $arr);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function extend_cookie() {
|
public function extend_cookie() {
|
||||||
|
|
||||||
|
$arr = session_get_cookie_params();
|
||||||
|
|
||||||
// if there's a long-term cookie, extend it
|
// if there's a long-term cookie, extend it
|
||||||
|
|
||||||
$xtime = (($_SESSION['remember_me']) ? (60 * 60 * 24 * 365) : 0 );
|
$xtime = (($_SESSION['remember_me']) ? (60 * 60 * 24 * 365) : 0 );
|
||||||
|
|
||||||
if($xtime)
|
if($xtime)
|
||||||
setcookie(session_name(),session_id(),(time() + $xtime));
|
setcookie(session_name(),session_id(),(time() + $xtime), '/', \App::get_hostname(),((isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') ? true : false),((isset($arr['httponly'])) ? $arr['httponly'] : true));
|
||||||
$arr = array('expire' => $xtime);
|
$arr = array('expire' => $xtime);
|
||||||
call_hooks('extend_cookie', $arr);
|
call_hooks('extend_cookie', $arr);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function return_check() {
|
public function return_check() {
|
||||||
|
|
||||||
// check a returning visitor against IP changes.
|
// check a returning visitor against IP changes.
|
||||||
// If the change results in being blocked from re-entry with the current cookie
|
// If the change results in being blocked from re-entry with the current cookie
|
||||||
@ -152,7 +158,7 @@ class Session {
|
|||||||
// check any difference at all
|
// check any difference at all
|
||||||
logger('Session address changed. Paranoid setting in effect, blocking session. '
|
logger('Session address changed. Paranoid setting in effect, blocking session. '
|
||||||
. $_SESSION['addr'] . ' != ' . $_SERVER['REMOTE_ADDR']);
|
. $_SESSION['addr'] . ' != ' . $_SERVER['REMOTE_ADDR']);
|
||||||
self::nuke();
|
$this->nuke();
|
||||||
goaway(z_root());
|
goaway(z_root());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
15
boot.php
15
boot.php
@ -632,6 +632,19 @@ class ZotlabsAutoloader {
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$arr = explode('\\',$className);
|
||||||
|
if($arr && count($arr) > 1) {
|
||||||
|
if(! $arr[0])
|
||||||
|
$arr = array_shift($arr);
|
||||||
|
$filename = 'addon/' . lcfirst($arr[0]) . '/' . $arr[1] . ((count($arr) === 2) ? '.php' : '/' . $arr[2] . ".php");
|
||||||
|
if (file_exists($filename)) {
|
||||||
|
include($filename);
|
||||||
|
if (class_exists($className)) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -687,6 +700,7 @@ class App {
|
|||||||
private static $perms = null; // observer permissions
|
private static $perms = null; // observer permissions
|
||||||
private static $widgets = array(); // widgets for this page
|
private static $widgets = array(); // widgets for this page
|
||||||
|
|
||||||
|
public static $session = null;
|
||||||
public static $groups;
|
public static $groups;
|
||||||
public static $language;
|
public static $language;
|
||||||
public static $langsave;
|
public static $langsave;
|
||||||
@ -1656,6 +1670,7 @@ function goaway($s) {
|
|||||||
|
|
||||||
function shutdown() {
|
function shutdown() {
|
||||||
global $db;
|
global $db;
|
||||||
|
if(is_object($db) && $db->connected)
|
||||||
$db->close();
|
$db->close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,10 +2,12 @@
|
|||||||
[list=1]
|
[list=1]
|
||||||
[*] abcjsplugin - Create musical scores in your posts
|
[*] abcjsplugin - Create musical scores in your posts
|
||||||
[*] adultphotoflag - prevents nsfw photos from being displayed in public albums
|
[*] adultphotoflag - prevents nsfw photos from being displayed in public albums
|
||||||
|
[*] b2tbtn - provide button to go directly to top of page if you are scrolled a long way down
|
||||||
[*] bbmath - use complex math expressions in your posts
|
[*] bbmath - use complex math expressions in your posts
|
||||||
[*] bookmarker - replace #^ with bookmark link in posts
|
[*] bookmarker - replace #^ with bookmark link in posts
|
||||||
[*] buglink - provide a bug reporting icon in the lower-left corner of every page
|
[*] buglink - provide a bug reporting icon in the lower-left corner of every page
|
||||||
[*] calc - a scientific calculator
|
[*] calc - a scientific calculator
|
||||||
|
[*] cdav - CalDAV/CardDAV server
|
||||||
[*] chess - cross domain identity aware interactive chess games
|
[*] chess - cross domain identity aware interactive chess games
|
||||||
[*] chords - generate fingering charts and alternatives for every known guitar chord
|
[*] chords - generate fingering charts and alternatives for every known guitar chord
|
||||||
[*] custom_home - set a custom page as the hub start page
|
[*] custom_home - set a custom page as the hub start page
|
||||||
@ -13,18 +15,24 @@
|
|||||||
[*] diaspora - Diaspora protocol emulator
|
[*] diaspora - Diaspora protocol emulator
|
||||||
[*] diaspost - crosspost to a Diaspora account (different from the Diaspora protocol emulator)
|
[*] diaspost - crosspost to a Diaspora account (different from the Diaspora protocol emulator)
|
||||||
[*] dirstats - show some interesting statistics generated by the driectory server
|
[*] dirstats - show some interesting statistics generated by the driectory server
|
||||||
|
[*] docs - alternate documentation pages
|
||||||
[*] donate - provides a project donation page
|
[*] donate - provides a project donation page
|
||||||
[*] dwpost - crosspost to Dreamwidth
|
[*] dwpost - crosspost to Dreamwidth
|
||||||
|
[*] embedphotos - tool to embed photos from your albums in a post
|
||||||
[*] extcron - use an external cron service to run your hub's scheduled tasks
|
[*] extcron - use an external cron service to run your hub's scheduled tasks
|
||||||
[*] flattrwidget - provides a "Flattr Us" button
|
[*] flattrwidget - provides a "Flattr Us" button
|
||||||
[*] flip - create upside down text
|
[*] flip - create upside down text
|
||||||
[*] fortunate - displays random quote (fortune cookie). Requires setting up a fortune server.
|
[*] fortunate - displays random quote (fortune cookie). Requires setting up a fortune server.
|
||||||
|
[*] friendica - Friendica (DFRN) protocol. Under development.
|
||||||
[*] frphotos - import photo albums from Friendica
|
[*] frphotos - import photo albums from Friendica
|
||||||
|
[*] gnusoc - GNU-Social (OStatus) protocol. Under development.
|
||||||
[*] hexit - headecimal conversion tool
|
[*] hexit - headecimal conversion tool
|
||||||
|
[*] hubwall - send an admin email to all hub accounts
|
||||||
[*] ijpost - crosspost to Insanejournal
|
[*] ijpost - crosspost to Insanejournal
|
||||||
[*] irc - connect to IRC chatrooms
|
[*] irc - connect to IRC chatrooms
|
||||||
[*] jappixmini - XMPP chat
|
[*] jappixmini - XMPP chat
|
||||||
[*] jsupload - (recommended) upload multiple photos to photo albums at once.
|
[*] jsupload - upload multiple photos to photo albums at once.
|
||||||
|
[*] keepout - prevents nearly all use of site when not logged in, more restrictive than 'block public' setting
|
||||||
[*] ldapauth - login via account on LDAP or Windows Active Directory domain
|
[*] ldapauth - login via account on LDAP or Windows Active Directory domain
|
||||||
[*] libertree - crosspost to Libertree
|
[*] libertree - crosspost to Libertree
|
||||||
[*] likebanner - create a "like us on red#matrix" banner image
|
[*] likebanner - create a "like us on red#matrix" banner image
|
||||||
@ -32,6 +40,7 @@
|
|||||||
[*] logrot - logfile rotation utility
|
[*] logrot - logfile rotation utility
|
||||||
[*] mahjongg - Chinese puzzle game
|
[*] mahjongg - Chinese puzzle game
|
||||||
[*] mailhost - when using multiple channel clones, select one to receive email notifications
|
[*] mailhost - when using multiple channel clones, select one to receive email notifications
|
||||||
|
[*] metatag - provide SEO friendly pages
|
||||||
[*] mayan_places - set location field to a random city in the Mayan world
|
[*] mayan_places - set location field to a random city in the Mayan world
|
||||||
[*] morechoice - additional gender/sexual-preference choices for profiles (not safe for work)
|
[*] morechoice - additional gender/sexual-preference choices for profiles (not safe for work)
|
||||||
[*] moremoods - Additional mood options
|
[*] moremoods - Additional mood options
|
||||||
@ -60,6 +69,7 @@
|
|||||||
[*] startpage - set a personal preferred page to redirect after logging in.
|
[*] startpage - set a personal preferred page to redirect after logging in.
|
||||||
[*] statistics_json - Diaspora statistics generator
|
[*] statistics_json - Diaspora statistics generator
|
||||||
[*] statusnet - GNU-social and StatusNet crosspost [zrl=[baseurl]/help/addons_gnusocial]Posting To Gnu Social[/zrl]
|
[*] statusnet - GNU-social and StatusNet crosspost [zrl=[baseurl]/help/addons_gnusocial]Posting To Gnu Social[/zrl]
|
||||||
|
[*] std_embeds - allow unfiltered embeds for popular providers like youtube, vimeo and soundcloud
|
||||||
[*] superblock - Highly recommended - completely block an offensive channel from your stream
|
[*] superblock - Highly recommended - completely block an offensive channel from your stream
|
||||||
[*] testdrive - Turns your hub into a test drive site with accounts that expire after a trail period.
|
[*] testdrive - Turns your hub into a test drive site with accounts that expire after a trail period.
|
||||||
[*] tictac - 3D tic-tac-toe
|
[*] tictac - 3D tic-tac-toe
|
||||||
|
1
doc/context/es-es
Symbolic link
1
doc/context/es-es
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
es
|
@ -1,36 +1,9 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Esta página</span> <span>le
|
<dd>Esta página le permite ajustar los parámetros de los informes del sistema (logs) y para ver uno existente.</dd>
|
||||||
permite ajustar</span> <span>los parámetros de los informes del
|
|
||||||
sistema (logs)</span> <span>y para</span> <span>ver uno</span> <span>existente</span><span
|
|
||||||
class="">.</span></span></dd>
|
|
||||||
<dt>Ajustes de los informes (logs)</dt>
|
<dt>Ajustes de los informes (logs)</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Cuando se habilita la</span>
|
<dd>Cuando se habilita la opción de depuración, el sistema de información comenzará a añadir los informes (logs) en el archivo especificado en el cuadro "Fichero de informes"
|
||||||
<span>opción de depuración</span><span>,</span> el <span>sistema de</span>
|
(la ruta es relativa al directorio raíz del servidor, por ejemplo, /var /www). Tenga en cuenta que este archivo tiene que ser modificable por el servidor web.</dd>
|
||||||
<span>información</span> <span class="">comenzará</span> a <span>añadir
|
<dt>Nivel de depuración</dt>
|
||||||
</span>los informes (logs) <span>en el archivo especificado</span> <span>en
|
<dd>La opción de nivel de depuración le permite establecer la cantidad de información que se anexa al fichero de informes (logs). Advertencia: El aumento de este nivel puede aumentar rápidamente el tamaño de este fichero hasta en más de 100 MB, especialmente en los hubs con más que unos pocos miembros.</dd>
|
||||||
el cuadro</span> <span>"</span><span>Fichero de informes</span><span>"</span>
|
|
||||||
<span>(la </span><span class="">ruta es relativa</span> <span class="">al
|
|
||||||
directorio raíz del servidor</span><span>,</span> <span>por
|
|
||||||
ejemplo,</span> <span>/</span><span>var</span> <span>/</span><span>www</span><span
|
|
||||||
class="">)</span><span>.</span> <span>Tenga en cuenta que</span> <span
|
|
||||||
class="">este archivo</span> <span class="">tiene que</span> <span
|
|
||||||
class="">ser modificable por el</span> <span>servidor web</span><span>.</span></span></dd>
|
|
||||||
<dt>Nivel de depuración</dt>
|
|
||||||
<dd><span id="result_box" class="" lang="es"><span>La opción de</span> <span>nivel
|
|
||||||
de depuración</span> <span>le permite establecer</span> <span>la
|
|
||||||
cantidad de información</span> <span>que se</span> <span>anexa al
|
|
||||||
fichero de informes (logs)</span><span>.</span> <span>Advertencia</span><span>:</span>
|
|
||||||
<span>El aumento de</span> <span>este nivel</span> <span>puede
|
|
||||||
aumentar</span> <span>rápidamente el tamaño</span> <span>de este
|
|
||||||
fichero hasta en más de</span><span></span> <span>100 MB</span><span>,
|
|
||||||
especialmente</span> <span>en</span> <span>los hubs</span> <span>con</span>
|
|
||||||
<span>más que unos pocos</span> <span>miembros</span><span class="">.</span></span></dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,17 +1,4 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Las estadísticas</span>
|
<dd>Las estadísticas de la cola muestran cuántos mensajes están en la cola para su entrega a otros hubs. La prioridad está relacionada con la cantidad de veces que la entrega se ha intentado, sin éxito.</dd>
|
||||||
<span>de la cola muestran</span> <span>cuántos</span> <span>mensajes</span>
|
|
||||||
<span>están en</span> <span>la cola</span> <span>para su entrega a</span>
|
|
||||||
<span>otros hubs</span><span>.</span> <span class="">La prioridad</span>
|
|
||||||
<span>está relacionada con</span> <span>la cantidad de veces</span>
|
|
||||||
que <span>la entrega</span> <span>se ha intentado</span><span>, sin
|
|
||||||
éxito</span><span>.</span></span></dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,17 +1,4 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Esta página</span> <span>contiene</span>
|
<dd>Esta página contiene varios ajustes para el administrador relacionados con la seguridad. Para guardar los cambios que realice en estos ajustes, debe pulsar el botón "Enviar".</dd>
|
||||||
<span class="">varios ajustes</span> </span><span id="result_box" class=""
|
|
||||||
lang="es"><span>para el administrador</span> </span><span id="result_box"
|
|
||||||
class="" lang="es"><span class="">relacionados con la seguridad</span>.
|
|
||||||
<span>Para</span> <span class="">guardar los cambios que</span> <span
|
|
||||||
class="">realice en</span> <span>estos ajustes</span><span>, debe
|
|
||||||
pulsar</span> <span class="">el botón Enviar.</span></span></dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,35 +1,8 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<dl class="dl-horizontal">
|
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Esta</span> <span>es
|
<dd>Esta es la página principal de un canal. Es similar al "muro" del perfil de una persona en un contexto de red social. Las entradas creadas por el canal se muestran de acuerdo con los permisos de visualización
|
||||||
la</span> <span>página principal de un</span> <span>canal.</span>
|
del observador.</dd>
|
||||||
<span>Es similar</span> <span>al "muro" del perfil </span><span></span><span></span><span></span>
|
|
||||||
<span>de una persona</span> <span>en un contexto</span> de <span>red
|
|
||||||
social</span><span>.</span> <span>Las entradas</span> <span>creadas
|
|
||||||
por</span> <span>el canal</span> <span>se</span> <span>muestran
|
|
||||||
de acuerdo con</span> <span>los permisos de visualización</span> <span
|
|
||||||
class="">del observador</span><span>.</span></span></dd>
|
|
||||||
<dt>Crear una entrada</dt>
|
<dt>Crear una entrada</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Si tiene permiso</span>
|
<dd>Si tiene permiso para crear entradas en la página del canal, a continuación, podrá ver el editor de entradas en la parte superior.</dd>
|
||||||
<span>para crear</span> <span>entradas en</span> <span>la página del
|
<dt><a href="#" onclick="contextualHelpFocus("#tabs-collapse-1", 0); return false;">Pestañas de los contenidos del canal</a></dt>
|
||||||
canal</span><span>,</span> <span>a continuación,</span> <span>podrá
|
<dd>Las pestañas de los contenidos del canal son enlaces a otros contenidos publicados por el canal. La pestaña "<b>Mi perfil</b>" enlaza con el perfil del canal. La pestaña "<b>Fotos</b>" enlaza con las galerías
|
||||||
ver el</span> <span>editor de entradas</span> <span>en la parte
|
de fotos. La pestaña "<b>Ficheros</b>" enlaza con los ficheros de cualquier tipo compartidos por el canal.</dd>
|
||||||
superior</span><span class="">.</span></span></dd>
|
|
||||||
<dt><a href="#" onclick='contextualHelpFocus("#tabs-collapse-1", 0); return false;'
|
|
||||||
title="Pulsar sobre el elemento resaltado...">Pestañas de los
|
|
||||||
contenidos del canal</a></dt>
|
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Las</span> <span>pestañas</span>
|
|
||||||
<span>de los contenidos</span> <span>del canal</span> <span>son</span>
|
|
||||||
<span>enlaces a otros contenidos</span> <span>publicados por el</span>
|
|
||||||
<span>canal.</span> La pestaña "<span style="font-weight: bold;">Mi
|
|
||||||
perfil</span>" enlaza con el perfil del canal. La pestaña "<span style="font-weight: bold;">Fotos</span>"
|
|
||||||
enlaza con las galerías de fotos. La pestaña "<span style="font-weight: bold;">Ficheros</span>"
|
|
||||||
enlaza con los ficheros de cualquier tipo compartidos por el canal.<span
|
|
||||||
class=""></span></span></dd>
|
|
||||||
</dl>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,30 +1,8 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Creación y uso de</span>
|
<dd>Creación y uso de salas de chat para comunicarse en tiempo real, utilizando el sistema de permisos estándar de Hubzilla para el control de acceso a la sala de chat.</dd>
|
||||||
<span>salas de chat para</span> <span>comunicarse en tiempo</span> <span>real,
|
<dt>Crear una nueva sala de chat</dt>
|
||||||
utilizando</span> <span class="">el sistema de</span> <span>permisos</span>
|
<dd>Utilice el botón "Crear" para crear una nueva sala de chat. Introduzca un nombre y cuánto tiempo se deben conservar los mensajes.</dd>
|
||||||
<span>Hubzilla</span> <span>estándar para el</span> <span>control de
|
|
||||||
acceso a</span> <span class="">la sala de chat</span><span>.</span></span></dd>
|
|
||||||
<dt>Create una nueva sala de chat</dt>
|
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Utilice</span> <span>el
|
|
||||||
botón</span> <span>"</span><span class="">Crear" para</span> <span>crear
|
|
||||||
una nueva</span> <span class="">sala de chat</span><span>.</span> <span
|
|
||||||
class="">Introduzca un nombre y</span> <span class="">cuánto tiempo
|
|
||||||
se deben conservar los mensajes.</span><span class=""></span></span></dd>
|
|
||||||
<dt>Chatear</dt>
|
<dt>Chatear</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Introduzca su mensaje
|
<dd>Introduzca su mensaje en el cuadro de mensaje y pulse "Enviar". Se puede establecer un estado seleccionando el botón de menú sala de chat junto al botón "Enviar". Si hay otras personas en la sala, serán visibles en el panel lateral, en "Miembros del chat".</dd>
|
||||||
en</span> <span>el cuadro de mensaje</span> <span>y pulse</span> <span>"Enviar".</span>
|
|
||||||
<span>Se puede establecer un</span> <span>estado</span> <span>seleccionando
|
|
||||||
el</span> <span>botón de menú</span> <span>sala de chat</span> <span>junto
|
|
||||||
al botón</span> <span>Enviar.</span> <span>Si hay otras personas</span>
|
|
||||||
<span>"en la sala</span><span>",</span> <span>serán visibles en</span>
|
|
||||||
<span>el panel lateral</span>, <span>en</span><span></span> <span>"</span><span
|
|
||||||
class="">Miembros del chat</span><span>"</span><span class="">.</span></span></dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,30 +1,7 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Esta página</span> <span>muestra
|
<dd>Esta página muestra los ficheros en la "nube" de un canal. Los archivos visibles para el observador dependen de los permisos de archivo individuales establecidas por
|
||||||
los ficheros en la</span> <span>"nube"</span> <span>de un canal</span><span>.</span>
|
el propietario del canal. Si tiene permiso para crear o cargar ficheros, verá botones de control por encima de la lista de ficheros.</dd>
|
||||||
<span>Los</span> <span>archivos visibles</span> <span>para el
|
<dt><a href="#" onclick='contextualHelpFocus("#tabs-collapse-1", 0); return false;' title="Pulsar en el elemento resaltado...">Pestañas de los contenidos del canal</a></dt>
|
||||||
observador</span> <span>dependen de</span> <span>los permisos de
|
<dd>Las pestañas de los contenidos del canal son enlaces a otros contenidos publicados por el canal. La pestaña "<b>Mi perfil</b>" enlaza con el perfil del canal. La pestaña "<b>Fotos</b>" enlaza con las galerías de fotos. La pestaña "<b>Ficheros</b>" enlaza con los ficheros de cualquier tipo compartidos por el canal.</dd>
|
||||||
archivo</span> <span>individuales</span> <span>establecidas por</span>
|
|
||||||
<span>el propietario del canal</span><span>.</span> <span>Si tiene
|
|
||||||
permiso</span> <span>para crear</span> <span>o</span> <span>cargar
|
|
||||||
ficheros,</span> <span>verá</span> <span>botones de control</span>
|
|
||||||
<span>por encima de la</span> <span class="">lista de ficheros.</span></span></dd>
|
|
||||||
<dt><a href="#" onclick='contextualHelpFocus("#tabs-collapse-1", 0); return false;'
|
|
||||||
title="Pulsar en el elemento resaltado...">Pestañas de los contenidos
|
|
||||||
del canal<br>
|
|
||||||
</a></dt>
|
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Las</span> <span>pestañas</span>
|
|
||||||
<span>de los contenidos</span> <span>del canal</span> <span>son</span>
|
|
||||||
<span>enlaces a otros contenidos</span> <span>publicados por el</span>
|
|
||||||
<span>canal.</span> La pestaña "<span style="font-weight: bold;">Mi
|
|
||||||
perfil</span>" enlaza con el perfil del canal. La pestaña "<span style="font-weight: bold;">Fotos</span>"
|
|
||||||
enlaza con las galerías de fotos. La pestaña "Ficheros" enlaza con los
|
|
||||||
ficheros de cualquier tipo compartidos por el canal.</span></dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,8 +1,15 @@
|
|||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd>This page displays a list of all this channel's connections. The list can be <a href='#' onclick='contextualHelpFocus(".section-title-wrapper", 0); return false;' title="Click to highlight element...">sorted and filtered using the menu button beside the search button</a>. </dd>
|
<dd>Esta página muestra una lista de todas las conexiones de este canal. La lista se puede <a href="#" onclick='contextualHelpFocus(".section-title-wrapper", 0); return false;' title="Pulsar sobre el elemento resaltado...">ordenar y filtrar usando el botón de menú al lado del botón de búsqueda</a>.</dd>
|
||||||
<dt>Connection Details</dt>
|
<dt>Detalles de la conexión</dt>
|
||||||
<dd>Each list entry shows the details of a specific connection. A translucent avatar image indicates an archived connection.</dd>
|
<dd>Cada entrada de la lista muestra los detalles de una conexión específica. Una imagen de avatar translúcida indica una conexión archivada.</dd>
|
||||||
<dt>Connection Status</dt>
|
<dt>Estado de la conexión</dt>
|
||||||
<dd>A connection can be in different states: <ul><li>Archived</li><li>Ignored</li><li>Blocked</li><li>Hidden</li></ul></dd>
|
<dd>Una conexión puede estar en diferentes estados:
|
||||||
|
<ul>
|
||||||
|
<li>Archivada</li>
|
||||||
|
<li>Ignorada</li>
|
||||||
|
<li>Bloqueada</li>
|
||||||
|
<li>Oculta</li>
|
||||||
|
</ul>
|
||||||
|
</dd>
|
||||||
</dl>
|
</dl>
|
@ -1,24 +1,10 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Esta página</span> <span>muestra
|
<dd>Esta página muestra una lista de todas las conexiones de este canal. La lista se puede <a href="#" onclick='contextualHelpFocus(".section-title-wrapper", 0); return false;' title="Pulsar sobre el elemento resaltado...">ordenar y filtrar usando el botón de menú al lado del botón de búsqueda</a>. </dd>
|
||||||
una lista de</span> <span>todas</span> <span>las conexiones</span>
|
<dt>Detalles de la conexión</dt>
|
||||||
<span class="">de este canal</span><span class="">.</span> <span class="">La</span>
|
<dd>Cada entrada de la lista muestra los detalles de una conexión específica. Una imagen de avatar translúcida indica una conexión archivada.</dd>
|
||||||
<span class="">lista se puede </span></span><a href="#" onclick='contextualHelpFocus(".section-title-wrapper", 0); return false;'
|
<dt>Estado de la conexión</dt>
|
||||||
title="Pulsar sobre el elemento resaltado...">ordenar y filtrar usando
|
<dd>Una conexión puede estar en diferentes estados:
|
||||||
el botón de menú al lado del botón de búsqueda</a>. </dd>
|
|
||||||
<dt>Detalles de la conexión</dt>
|
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Cada</span> <span>entrada
|
|
||||||
de la lista</span> <span>muestra los</span> <span>detalles de una
|
|
||||||
conexión</span> <span>específica</span><span>.</span> <span>Una</span>
|
|
||||||
<span>imagen de avatar</span> <span>translúcida</span> <span>indica
|
|
||||||
una conexión</span> <span class="">archivada.</span></span></dd>
|
|
||||||
<dt>Estado de la conexión</dt>
|
|
||||||
<dd>Una conexión puede estar en diferentes estados:
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Archivada</li>
|
<li>Archivada</li>
|
||||||
<li>Ignorada</li>
|
<li>Ignorada</li>
|
||||||
@ -27,5 +13,3 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,23 +1,8 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Esta página</span> <span>muestra
|
<dd>Esta página muestra un calendario de eventos tanto de su propiedad como compartido con usted desde otros canales.</dd>
|
||||||
un calendario</span> <span>de eventos tanto</span> <span>de su
|
<dt><a href="#" onclick='contextualHelpFocus("#title", 0); return false;' title="Pulsar en el elemento resaltado...">Vistas del calendario</a></dt>
|
||||||
propiedad como</span> <span class="">compartido con usted</span> <span
|
<dd>El calendario se puede mostrar en modo mensual, semanal o diario usando las opciones del panel lateral.</dd>
|
||||||
class="">desde otros canales.</span></span></dd>
|
|
||||||
<dt><a href="#" onclick='contextualHelpFocus("#title", 0); return false;'
|
|
||||||
title="Pulsar en el elemento resaltado...">Vistas del calendario</a></dt>
|
|
||||||
<dd><span id="result_box" class="" lang="es"><span>El calendario</span> <span>se
|
|
||||||
puede mostrar en</span> <span>modo mensual</span><span>, semanal o</span>
|
|
||||||
diario<span> usando</span> <span>las opciones del</span> <span class="">panel
|
|
||||||
lateral</span><span class="">.</span></span></dd>
|
|
||||||
<dt>Exportar/Importar</dt>
|
<dt>Exportar/Importar</dt>
|
||||||
<dd>Exportar o importar eventos del calendario usando el formato estándar
|
<dd>Exportar o importar eventos del calendario usando el formato estándar de los ficheros de iCalendar (.ics).</dd>
|
||||||
de los ficheros de iCalendar (.ics).</dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,38 +1,10 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Los mensajes que
|
<dd>Los mensajes que aparecen en el correo privado son visibles sólo para usted y un único destinatario.</dd>
|
||||||
aparecen</span> <span>en</span> <span>el correo privado</span> <span>son</span>
|
|
||||||
<span>visibles sólo para</span> <span>usted y un</span> <span class="">único
|
|
||||||
destinatario.</span></span></dd>
|
|
||||||
<dt>Vista combinada</dt>
|
<dt>Vista combinada</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Las conversaciones</span>
|
<dd>Las conversaciones completas se pueden ver en un hilo continuo seleccionando "<b>Vista combinada</b>". Las conversaciones disponibles se muestran debajo del menú en el panel lateral.</dd>
|
||||||
<span>completas</span> <span>se pueden ver en</span> <span>un hilo
|
|
||||||
continuo</span> <span>seleccionando</span><span></span> "<span><span
|
|
||||||
style="font-weight: bold;">Vista combinada</span>"</span><span>.</span>
|
|
||||||
<span>Las conversaciones</span> <span>disponibles se muestran</span>
|
|
||||||
<span>debajo del menú</span> <span>en el</span> <span class="">panel
|
|
||||||
lateral</span><span class="">.</span></span></dd>
|
|
||||||
<dt>Bandeja de entrada/Bandeja de salida</dt>
|
<dt>Bandeja de entrada/Bandeja de salida</dt>
|
||||||
<dd>Los mensajes individuales enviados son visibles seleccionando la <span
|
<dd>Los mensajes individuales enviados son visibles seleccionando la <b>Bandeja de salida</b> y los mensajes recibidos se pueden ver usando el filtro de la <b>Bandeja de entrada.</b></dd>
|
||||||
style="font-weight: bold;">Bandeja de salida</span> y los mensajes
|
|
||||||
recibidos se pueden ver usando el filtro de la <span style="font-weight: bold;">Bandeja
|
|
||||||
de entrada</span>.<br>
|
|
||||||
</dd>
|
|
||||||
<dt>Mensaje nuevo</dt>
|
<dt>Mensaje nuevo</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Los mensajes
|
<dd>Los mensajes individuales tienen informes de entrega que se pueden ver usando el menú desplegable. Los mensajes también se pueden revocar desde el mismo menú, lo que puede evitar que el destinatario vea el mensaje, <i>si aún no lo ha leído</i>.</dd>
|
||||||
individuales</span> <span>tienen</span> <span>informes de entrega</span>
|
|
||||||
<span>que se pueden ver</span> <span>usando</span> <span>el menú</span>
|
|
||||||
<span>desplegable.</span> <span>Los mensajes también</span> <span>se
|
|
||||||
pueden revocar</span> <span>desde el mismo menú</span><span>, lo
|
|
||||||
que puede</span> <span>evitar que el destinatario</span> <span>vea
|
|
||||||
el mensaje</span><span>, <span style="font-style: italic;">si</span></span><span
|
|
||||||
style="font-style: italic;"> <span>aún no lo ha</span> </span><span
|
|
||||||
class=""><span style="font-style: italic;">leído</span>.</span></span></dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,71 +1,12 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>La</span> <span>página
|
<dd>La página de "Mi red" muestra un flujo de entradas y conversaciones, normalmente ordenadas según la actualización más reciente. Esta página es altamente personalizable.</dd>
|
||||||
de</span> <span>Mi red muestra</span> <span>un flujo</span> <span>de</span>
|
<dt><a href="#" onclick='contextualHelpFocus("#profile-jot-wrapper", 0); return false;' title="Pulsar sobre el elemento resaltado...">Crear una entrada</a></dt>
|
||||||
<span>entradas</span> <span>y conversaciones</span><span>,</span> <span>normalmente</span>
|
<dd>En la parte superior de la página hay un cuadro de texto que dice "<b>Compartir</b>". Al hacer clic en esta casilla se abre un nuevo editor de entradas. El editor de entradas es personalizable, pero el editor básico proporciona campos para el cuerpo de la publicación y un título opcional. Los botones que hay debajo de la zona de texto, a la izquierda, proporcionan
|
||||||
<span>ordenadas según la</span> <span>actualización más reciente</span><span>.</span>
|
accesos directos para el <b>Formato</b> de texto y para insertar enlaces, imágenes y otros datos en la entrada. Los botones a la derecha proporcionan una vista previa del mensaje, los ajustes de permisos de la entrada, y un botón <b>Enviar</b> para publicarla.</dd>
|
||||||
<span>Esta página</span> <span>es</span> <span>altamente
|
<dt><a href="#" onclick='contextualHelpFocus("#group-sidebar", 1); return false;' title="Pulsar sobre el elemento resaltado...">Grupos de canales</a></dt>
|
||||||
personalizable</span><span class="">.</span></span></dd>
|
<dd>Los grupos de canales que ha creado se muestran en el panel lateral. Seleccionándolos, se filtran las entradas creadas por los canales incluidos en el grupo elegido.</dd>
|
||||||
<dt><a href="#" onclick='contextualHelpFocus("#profile-jot-wrapper", 0); return false;'
|
<dt><a href="#" onclick='$("#dbtn-acl").click(); return false;' title="Pulsar sobre el elemento resaltado...">Permisos de una entrada</a></dt>
|
||||||
title="Pulsar sobre el elemento resaltado...">Crear una entrada<br>
|
<dd>La lista de control de acceso (ACL) es lo que se utiliza para establecer quién puede ver su nueva entrada. Al pulsar el botón ACL, al lado del botón Enviar, se mostrará un cuadro de diálogo en el que puede seleccionar qué canales y / o grupos de canales pueden ver el mensaje. También puede seleccionar a quién se le niega el acceso explícitamente. Por ejemplo,di gamos que usted está planeando una
|
||||||
</a></dt>
|
fiesta sorpresa para un amigo. Puede enviar un mensaje de invitación a todos los miembros de su grupo de <b>Amigos</b>, excepto el amigo al que quiere sorprender. En este caso, "se mostrará" al grupo de amigos, pero "no se mostrará" a esa única persona.</dd>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>En la parte superior</span>
|
|
||||||
<span>de la</span> <span>página hay un</span> <span>cuadro de texto
|
|
||||||
que</span> <span>dice</span> <span>"</span><span style="font-weight: bold;">Compartir</span><span>"</span><span>.</span>
|
|
||||||
<span>Al hacer clic en</span> <span>esta casilla</span> <span>se
|
|
||||||
abre</span> <span>un nuevo</span> <span>editor de entradas</span><span>.</span>
|
|
||||||
<span>El</span> <span>editor de entradas</span> <span>es
|
|
||||||
personalizable</span><span>,</span> <span>pero el</span> <span>editor
|
|
||||||
básico</span> <span>proporciona</span> <span>campos para</span> <span>el
|
|
||||||
cuerpo de la publicación y un</span><span></span> <span>título</span>
|
|
||||||
<span>opcional.</span> <span>Los botones que hay debajo de la</span>
|
|
||||||
<span>zona de</span> <span>texto, a la izquierda,</span> <span>proporcionan</span>
|
|
||||||
<span>accesos directos para el</span> <span><span style="font-weight: bold;">Formato</span>
|
|
||||||
de texto</span> <span>y para insertar</span> <span>enlaces</span><span>,
|
|
||||||
imágenes y</span> <span>otros</span> <span>datos en</span> <span>la
|
|
||||||
entrada</span><span>.</span> <span>Los</span> <span>botones a la
|
|
||||||
derecha</span> <span>proporcionan una</span> <span class="">vista
|
|
||||||
previa del</span> <span class="">mensaje</span><span class="">,</span>
|
|
||||||
<span>los ajustes</span><span> de permisos</span> <span>de la entrada</span><span>,</span>
|
|
||||||
<span>y</span> <span>un botón <span style="font-weight: bold;">Enviar</span></span>
|
|
||||||
<span>para publicarla</span><span></span><span>.</span></span></dd>
|
|
||||||
<dt><a href="#" onclick='contextualHelpFocus("#group-sidebar", 1); return false;'
|
|
||||||
title="Pulsar sobre el elemento resaltado...">Grupos de canales<br>
|
|
||||||
</a></dt>
|
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Los</span> <span>grupos
|
|
||||||
de canales</span> <span>que ha creado</span> <span>se muestran en
|
|
||||||
el</span> <span>panel lateral</span><span>.</span> <span class="">Seleccionándolos,
|
|
||||||
se</span><span class=""> filtran</span> <span class="">las entradas</span>
|
|
||||||
<span></span><span>creadas por</span> <span>los canales incluidos en
|
|
||||||
el</span> <span>grupo elegido</span><span class="">.</span></span></dd>
|
|
||||||
<dt><a href="#" onclick='$("#dbtn-acl").click(); return false;' title="Pulsar sobre el elemento resaltado...">Permisos
|
|
||||||
de una entrada<br>
|
|
||||||
</a></dt>
|
|
||||||
<dd><span id="result_box" class="" lang="es"><span>La lista</span> <span>de
|
|
||||||
control de acceso</span> <span>(</span><span>ACL) es</span> <span>lo
|
|
||||||
que se utiliza</span> <span>para establecer</span> <span>quién
|
|
||||||
puede ver su</span> <span>nueva entrada</span><span>.</span> <span>Al
|
|
||||||
pulsar el</span> <span>botón ACL</span>, <span>al lado del</span>
|
|
||||||
<span>botón Enviar,</span> <span>se mostrará</span> <span>un cuadro
|
|
||||||
de diálogo</span> <span>en</span> <span>el que puede seleccionar</span>
|
|
||||||
<span>qué canales</span> <span>y /</span> <span>o</span> <span>grupos
|
|
||||||
de canales</span> <span>pueden ver el</span> <span>mensaje</span><span>.</span>
|
|
||||||
<span>También puede seleccionar</span> <span>a quién se le niega</span>
|
|
||||||
<span>el acceso explícitamente</span><span>.</span> <span>Por ejemplo</span><span>,
|
|
||||||
digamos que usted</span> <span>está planeando</span> <span>una
|
|
||||||
fiesta sorpresa para</span> <span>un amigo</span><span>.</span> <span>Puede
|
|
||||||
enviar un</span> <span>mensaje</span> <span>de invitación</span> <span>a</span>
|
|
||||||
<span>todos los miembros de</span> <span>su grupo de</span> <span style="font-weight: bold;">Amigos</span><span>,
|
|
||||||
excepto el</span> <span>amigo al que quiere sorprender</span><span
|
|
||||||
class="">.</span> <span class="">En este caso,</span> <span>"se
|
|
||||||
mostrará" </span> <span>al grupo de</span> <span>amigos, pero</span>
|
|
||||||
<span>"</span><span>no se mostrará</span><span>"</span> <span>a esa
|
|
||||||
única</span><span class=""> persona.</span></span></dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,27 +1,6 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Esta página</span> <span>muestra</span>
|
<dd>Esta página muestra los álbumes de fotos de un canal. Las imágenes visibles para el observador dependen de los permisos individuales de cada imagen.</dd>
|
||||||
<span class="">los álbumes de fotos</span> <span class="">de un canal</span><span>.</span>
|
<dt><a href="#" onclick='contextualHelpFocus("#tabs-collapse-1", 0); return false;' title="Pulsar sobre el elemento resaltado...">Pestañas de los contenidos del canal</a></dt>
|
||||||
<span>Las</span> <span>imágenes visibles</span> <span class="">para
|
<dd>Las pestañas de los contenidos del canal son enlaces a otros contenidos publicados por el canal. La pestaña "<b>Mi perfil</b>" enlaza con el perfil del canal. La pestaña "<b>Fotos</b>" enlaza con las galerías de fotos. La pestaña "<b>Ficheros</b>" enlaza con los ficheros de cualquier tipo compartidos por el canal.</dd>
|
||||||
el observador</span> <span class="">dependen de</span> <span class="">los
|
|
||||||
permisos</span> <span class="">individuales de cada imagen</span><span
|
|
||||||
class="">.</span></span></dd>
|
|
||||||
<dt><a href="#" onclick='contextualHelpFocus("#tabs-collapse-1", 0); return false;'
|
|
||||||
title="Pulsar sobre el elemento resaltado...">Pestañas de los
|
|
||||||
contenidos del canal<br>
|
|
||||||
</a></dt>
|
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Las</span> <span>pestañas</span>
|
|
||||||
<span>de los contenidos</span> <span>del canal</span> <span>son</span>
|
|
||||||
<span>enlaces a otros contenidos</span> <span>publicados por el</span>
|
|
||||||
<span>canal.</span> La pestaña "<span style="font-weight: bold;">Mi
|
|
||||||
perfil</span>" enlaza con el perfil del canal. La pestaña "<span style="font-weight: bold;">Fotos</span>"
|
|
||||||
enlaza con las galerías de fotos. La pestaña "<span style="font-weight: bold;">Ficheros</span>"
|
|
||||||
enlaza con los ficheros de cualquier tipo compartidos por el canal.</span></dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -1,32 +1,6 @@
|
|||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta content="text/html; charset=windows-1252" http-equiv="content-type">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>General</dt>
|
<dt>General</dt>
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Esta</span> <span>es
|
<dd>Esta es la página de perfil de un canal. Por lo general muestra la información que describe el canal. Si el canal representa a una persona en una red social, por ejemplo, el perfil podría proporcionar información de contacto y otros datos personales. Los canales pueden tener varios perfiles, en cuyo caso el perfil que se muestra depende del observador.</dd>
|
||||||
la página de</span> <span>perfil</span> <span>de un canal</span><span>.</span>
|
<dt><a href="#" onclick='contextualHelpFocus("#tabs-collapse-1", 0); return false;' title="Pulsar sobre el elemento resaltado...">Pestañas de los contenidos del canal</a></dt>
|
||||||
<span>Por lo general</span> <span>muestra</span> la <span>información
|
<dd>Las pestañas de los contenidos del canal son enlaces a otros contenidos publicados por el canal. La pestaña "Mi perfil" enlaza con el perfil del canal. La pestaña "Fotos" nlaza con las galerías de fotos. La pestaña "Ficheros" enlaza con los ficheros de cualquier tipo compartidos por el canal.</dd>
|
||||||
que describe el</span> <span>canal.</span> <span>Si el canal</span>
|
|
||||||
<span>representa a una persona</span> <span>en una red social</span><span>,
|
|
||||||
por ejemplo</span><span>, el perfil</span> <span>podría
|
|
||||||
proporcionar</span> <span>información de contacto y</span> <span>otros</span>
|
|
||||||
<span>datos personales</span><span></span><span>.</span> <span>Los
|
|
||||||
canales pueden</span> <span>tener varios perfiles</span><span>,</span>
|
|
||||||
<span>en cuyo caso el</span> <span>perfil que se muestra</span> <span
|
|
||||||
class="">depende del observador</span><span>.</span></span></dd>
|
|
||||||
<dt><a href="#" onclick='contextualHelpFocus("#tabs-collapse-1", 0); return false;'
|
|
||||||
title="Pulsar sobre el elemento resaltado...">Pestañas de los
|
|
||||||
contenidos del canal<br>
|
|
||||||
</a></dt>
|
|
||||||
<dd><span id="result_box" class="" lang="es"><span>Las</span> <span>pestañas</span>
|
|
||||||
<span>de los contenidos</span> <span>del canal</span> <span>son</span>
|
|
||||||
<span>enlaces a otros contenidos</span> <span>publicados por el</span>
|
|
||||||
<span>canal.</span> La pestaña "<span style="font-weight: bold;">Mi
|
|
||||||
perfil</span>" enlaza con el perfil del canal. La pestaña "<span style="font-weight: bold;">Fotos</span>"
|
|
||||||
enlaza con las galerías de fotos. La pestaña "<span style="font-weight: bold;">Ficheros</span>"
|
|
||||||
enlaza con los ficheros de cualquier tipo compartidos por el canal.</span></dd>
|
|
||||||
</dl>
|
</dl>
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
@ -389,7 +389,7 @@ function channel_remove($channel_id, $local = true, $unset_session=false) {
|
|||||||
proc_run('php','include/directory.php',$channel_id);
|
proc_run('php','include/directory.php',$channel_id);
|
||||||
|
|
||||||
if($channel_id == local_channel() && $unset_session) {
|
if($channel_id == local_channel() && $unset_session) {
|
||||||
\Zotlabs\Web\Session::nuke();
|
App::$session->nuke();
|
||||||
goaway(z_root());
|
goaway(z_root());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -271,7 +271,8 @@ function populate_acl($defaults = null,$show_jotnets = true, $emptyACL_descripti
|
|||||||
'$showall' => $showall_caption,
|
'$showall' => $showall_caption,
|
||||||
'$showallOrigin' => $showall_origin,
|
'$showallOrigin' => $showall_origin,
|
||||||
'$showallIcon' => $showall_icon,
|
'$showallIcon' => $showall_icon,
|
||||||
'$showlimited' => t("Limit access:"),
|
'$select_label' => t('Who can see this'),
|
||||||
|
'$showlimited' => t('Custom selection'),
|
||||||
'$showlimitedDesc' => t('Select "Show" to allow viewing. "Don\'t show" lets you override and limit the scope of "Show".'),
|
'$showlimitedDesc' => t('Select "Show" to allow viewing. "Don\'t show" lets you override and limit the scope of "Show".'),
|
||||||
'$show' => t("Show"),
|
'$show' => t("Show"),
|
||||||
'$hide' => t("Don't show"),
|
'$hide' => t("Don't show"),
|
||||||
|
@ -486,7 +486,7 @@ require_once('include/api_auth.php');
|
|||||||
|
|
||||||
function api_account_logout(&$a, $type){
|
function api_account_logout(&$a, $type){
|
||||||
require_once('include/auth.php');
|
require_once('include/auth.php');
|
||||||
\Zotlabs\Web\Session::nuke();
|
App::$session->nuke();
|
||||||
return api_apply_template("user", $type, array('$user' => null));
|
return api_apply_template("user", $type, array('$user' => null));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,7 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) &&
|
|||||||
// process logout request
|
// process logout request
|
||||||
$args = array('channel_id' => local_channel());
|
$args = array('channel_id' => local_channel());
|
||||||
call_hooks('logging_out', $args);
|
call_hooks('logging_out', $args);
|
||||||
\Zotlabs\Web\Session::nuke();
|
App::$session->nuke();
|
||||||
info( t('Logged out.') . EOL);
|
info( t('Logged out.') . EOL);
|
||||||
goaway(z_root());
|
goaway(z_root());
|
||||||
}
|
}
|
||||||
@ -117,7 +117,7 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) &&
|
|||||||
intval(ACCOUNT_ROLE_ADMIN)
|
intval(ACCOUNT_ROLE_ADMIN)
|
||||||
);
|
);
|
||||||
if($x) {
|
if($x) {
|
||||||
\Zotlabs\Web\Session::new_cookie(60 * 60 * 24); // one day
|
App::$session->new_cookie(60 * 60 * 24); // one day
|
||||||
$_SESSION['last_login_date'] = datetime_convert();
|
$_SESSION['last_login_date'] = datetime_convert();
|
||||||
unset($_SESSION['visitor_id']); // no longer a visitor
|
unset($_SESSION['visitor_id']); // no longer a visitor
|
||||||
authenticate_success($x[0], true, true);
|
authenticate_success($x[0], true, true);
|
||||||
@ -141,7 +141,7 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) &&
|
|||||||
|
|
||||||
if(x($_SESSION, 'uid') || x($_SESSION, 'account_id')) {
|
if(x($_SESSION, 'uid') || x($_SESSION, 'account_id')) {
|
||||||
|
|
||||||
Zotlabs\Web\Session::return_check();
|
App::$session->return_check();
|
||||||
|
|
||||||
$r = q("select * from account where account_id = %d limit 1",
|
$r = q("select * from account where account_id = %d limit 1",
|
||||||
intval($_SESSION['account_id'])
|
intval($_SESSION['account_id'])
|
||||||
@ -155,14 +155,14 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) &&
|
|||||||
}
|
}
|
||||||
if(strcmp(datetime_convert('UTC','UTC','now - 12 hours'), $_SESSION['last_login_date']) > 0 ) {
|
if(strcmp(datetime_convert('UTC','UTC','now - 12 hours'), $_SESSION['last_login_date']) > 0 ) {
|
||||||
$_SESSION['last_login_date'] = datetime_convert();
|
$_SESSION['last_login_date'] = datetime_convert();
|
||||||
Zotlabs\Web\Session::extend_cookie();
|
App::$session->extend_cookie();
|
||||||
$login_refresh = true;
|
$login_refresh = true;
|
||||||
}
|
}
|
||||||
authenticate_success($r[0], false, false, false, $login_refresh);
|
authenticate_success($r[0], false, false, false, $login_refresh);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$_SESSION['account_id'] = 0;
|
$_SESSION['account_id'] = 0;
|
||||||
\Zotlabs\Web\Session::nuke();
|
App::$session->nuke();
|
||||||
goaway(z_root());
|
goaway(z_root());
|
||||||
}
|
}
|
||||||
} // end logged in user returning
|
} // end logged in user returning
|
||||||
@ -170,7 +170,7 @@ if((isset($_SESSION)) && (x($_SESSION, 'authenticated')) &&
|
|||||||
else {
|
else {
|
||||||
|
|
||||||
if(isset($_SESSION)) {
|
if(isset($_SESSION)) {
|
||||||
\Zotlabs\Web\Session::nuke();
|
App::$session->nuke();
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle a fresh login request
|
// handle a fresh login request
|
||||||
@ -242,11 +242,11 @@ else {
|
|||||||
|
|
||||||
if($_POST['remember_me']) {
|
if($_POST['remember_me']) {
|
||||||
$_SESSION['remember_me'] = 1;
|
$_SESSION['remember_me'] = 1;
|
||||||
\Zotlabs\Web\Session::new_cookie(31449600); // one year
|
App::$session->new_cookie(31449600); // one year
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$_SESSION['remember_me'] = 0;
|
$_SESSION['remember_me'] = 0;
|
||||||
\Zotlabs\Web\Session::new_cookie(0); // 0 means delete on browser exit
|
App::$session->new_cookie(0); // 0 means delete on browser exit
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we haven't failed up this point, log them in.
|
// if we haven't failed up this point, log them in.
|
||||||
|
@ -30,7 +30,8 @@ function cli_startup() {
|
|||||||
unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
|
unset($db_host, $db_port, $db_user, $db_pass, $db_data, $db_type);
|
||||||
};
|
};
|
||||||
|
|
||||||
\Zotlabs\Web\Session::init();
|
App::$session = new Zotlabs\Web\Session();
|
||||||
|
App::$session->init();
|
||||||
|
|
||||||
load_config('system');
|
load_config('system');
|
||||||
|
|
||||||
|
@ -25,23 +25,31 @@ function dba_factory($server, $port,$user,$pass,$db,$dbtype,$install = false) {
|
|||||||
$dba = null;
|
$dba = null;
|
||||||
|
|
||||||
$dbtype = intval($dbtype);
|
$dbtype = intval($dbtype);
|
||||||
|
$set_port = $port;
|
||||||
|
|
||||||
if($dbtype == DBTYPE_POSTGRES) {
|
if($dbtype == DBTYPE_POSTGRES) {
|
||||||
require_once('include/dba/dba_postgres.php');
|
require_once('include/dba/dba_postgres.php');
|
||||||
if(is_null($port)) $port = 5432;
|
if(is_null($port)) $set_port = 5432;
|
||||||
$dba = new dba_postgres($server, $port, $user, $pass, $db, $install);
|
$dba = new dba_postgres($server, $set_port, $user, $pass, $db, $install);
|
||||||
} else {
|
} else {
|
||||||
if(class_exists('mysqli')) {
|
if(class_exists('mysqli')) {
|
||||||
if (is_null($port)) $port = ini_get("mysqli.default_port");
|
if (is_null($port)) $set_port = ini_get("mysqli.default_port");
|
||||||
require_once('include/dba/dba_mysqli.php');
|
require_once('include/dba/dba_mysqli.php');
|
||||||
$dba = new dba_mysqli($server, $port,$user,$pass,$db,$install);
|
$dba = new dba_mysqli($server, $set_port,$user,$pass,$db,$install);
|
||||||
} else {
|
} else {
|
||||||
if (is_null($port)) $port = "3306";
|
if (is_null($port)) $set_port = "3306";
|
||||||
require_once('include/dba/dba_mysql.php');
|
require_once('include/dba/dba_mysql.php');
|
||||||
$dba = new dba_mysql($server, $port,$user,$pass,$db,$install);
|
$dba = new dba_mysql($server, $set_port,$user,$pass,$db,$install);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(is_object($dba) && $dba->connected) {
|
||||||
|
$dns = (($dbtype == DBTYPE_POSTGRES) ? 'postgres' : 'mysql')
|
||||||
|
. ':host=' . $server . (is_null($port) ? '' : ';port=' . $port)
|
||||||
|
. ';dbname=' . $db;
|
||||||
|
$dba->pdo_set(array($dns,$user,$pass));
|
||||||
|
}
|
||||||
|
|
||||||
define('NULL_DATE', $dba->get_null_date());
|
define('NULL_DATE', $dba->get_null_date());
|
||||||
define('ACTIVE_DBTYPE', $dbtype);
|
define('ACTIVE_DBTYPE', $dbtype);
|
||||||
return $dba;
|
return $dba;
|
||||||
@ -60,6 +68,7 @@ abstract class dba_driver {
|
|||||||
const UTC_NOW = 'UTC_TIMESTAMP()';
|
const UTC_NOW = 'UTC_TIMESTAMP()';
|
||||||
|
|
||||||
protected $db;
|
protected $db;
|
||||||
|
protected $pdo = array();
|
||||||
|
|
||||||
public $debug = 0;
|
public $debug = 0;
|
||||||
public $connected = false;
|
public $connected = false;
|
||||||
@ -183,6 +192,15 @@ abstract class dba_driver {
|
|||||||
function unescapebin($str) {
|
function unescapebin($str) {
|
||||||
return $str;
|
return $str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function pdo_set($x) {
|
||||||
|
$this->pdo = $x;
|
||||||
|
}
|
||||||
|
|
||||||
|
function pdo_get() {
|
||||||
|
return $this->pdo;
|
||||||
|
}
|
||||||
|
|
||||||
} // end abstract dba_driver class
|
} // end abstract dba_driver class
|
||||||
|
|
||||||
|
|
||||||
|
1316
include/feedutils.php
Normal file
1316
include/feedutils.php
Normal file
File diff suppressed because it is too large
Load Diff
@ -21,7 +21,7 @@ function import_channel($channel, $account_id, $seize) {
|
|||||||
dbesc($channel['channel_address'])
|
dbesc($channel['channel_address'])
|
||||||
);
|
);
|
||||||
|
|
||||||
if(($r) || (check_webbie(array($channel['channel_hash'])) !== $channel['channel_hash'])) {
|
if(($r) || (check_webbie(array($channel['channel_address'])) !== $channel['channel_address'])) {
|
||||||
if($r[0]['channel_guid'] === $channel['channel_guid'] || $r[0]['channel_hash'] === $channel['channel_hash']) {
|
if($r[0]['channel_guid'] === $channel['channel_guid'] || $r[0]['channel_hash'] === $channel['channel_hash']) {
|
||||||
logger('mod_import: duplicate channel. ', print_r($channel,true));
|
logger('mod_import: duplicate channel. ', print_r($channel,true));
|
||||||
notice( t('Cannot create a duplicate channel identifier on this system. Import failed.') . EOL);
|
notice( t('Cannot create a duplicate channel identifier on this system. Import failed.') . EOL);
|
||||||
@ -90,7 +90,6 @@ function import_channel($channel, $account_id, $seize) {
|
|||||||
set_default_login_identity($account_id,$channel['channel_id'],false);
|
set_default_login_identity($account_id,$channel['channel_id'],false);
|
||||||
logger('import step 1');
|
logger('import step 1');
|
||||||
$_SESSION['import_step'] = 1;
|
$_SESSION['import_step'] = 1;
|
||||||
ref_session_write(session_id(), serialize($_SESSION));
|
|
||||||
return $channel;
|
return $channel;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
1356
include/items.php
1356
include/items.php
File diff suppressed because it is too large
Load Diff
@ -1168,6 +1168,10 @@ function discover_by_webbie($webbie) {
|
|||||||
if(! $x)
|
if(! $x)
|
||||||
$probe_old = true;
|
$probe_old = true;
|
||||||
|
|
||||||
|
|
||||||
|
if((! $dfrn) && (! $has_salmon))
|
||||||
|
$probe_old = true;
|
||||||
|
|
||||||
if($probe_old) {
|
if($probe_old) {
|
||||||
$y = old_webfinger($webbie);
|
$y = old_webfinger($webbie);
|
||||||
if($y) {
|
if($y) {
|
||||||
|
@ -1953,6 +1953,16 @@ function remove_community_tag($sender, $arr, $uid) {
|
|||||||
*/
|
*/
|
||||||
function update_imported_item($sender, $item, $orig, $uid) {
|
function update_imported_item($sender, $item, $orig, $uid) {
|
||||||
|
|
||||||
|
// If this is a comment being updated, remove any privacy information
|
||||||
|
// so that item_store_update will set it from the original.
|
||||||
|
|
||||||
|
if($item['mid'] !== $item['parent_mid']) {
|
||||||
|
unset($item['allow_cid']);
|
||||||
|
unset($item['allow_gid']);
|
||||||
|
unset($item['deny_cid']);
|
||||||
|
unset($item['deny_gid']);
|
||||||
|
unset($item['item_private']);
|
||||||
|
}
|
||||||
|
|
||||||
$x = item_store_update($item);
|
$x = item_store_update($item);
|
||||||
|
|
||||||
|
17
index.php
17
index.php
@ -62,7 +62,8 @@ if(! App::$install) {
|
|||||||
load_config('system');
|
load_config('system');
|
||||||
load_config('feature');
|
load_config('feature');
|
||||||
|
|
||||||
\Zotlabs\Web\Session::init();
|
App::$session = new \Zotlabs\Web\Session();
|
||||||
|
App::$session->init();
|
||||||
load_hooks();
|
load_hooks();
|
||||||
call_hooks('init_1');
|
call_hooks('init_1');
|
||||||
|
|
||||||
@ -84,7 +85,13 @@ if(! App::$install) {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
\Zotlabs\Web\Session::start();
|
if(App::$session) {
|
||||||
|
App::$session->start();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
session_start();
|
||||||
|
register_shutdown_function('session_write_close');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Language was set earlier, but we can over-ride it in the session.
|
* Language was set earlier, but we can over-ride it in the session.
|
||||||
@ -136,12 +143,6 @@ else
|
|||||||
|
|
||||||
nav_set_selected('nothing');
|
nav_set_selected('nothing');
|
||||||
|
|
||||||
$arr = array('app_menu' => App::get_apps());
|
|
||||||
|
|
||||||
call_hooks('app_menu', $arr);
|
|
||||||
|
|
||||||
App::set_apps($arr['app_menu']);
|
|
||||||
|
|
||||||
$Router = new Zotlabs\Web\Router($a);
|
$Router = new Zotlabs\Web\Router($a);
|
||||||
|
|
||||||
/* initialise content region */
|
/* initialise content region */
|
||||||
|
3700
util/hmessages.po
3700
util/hmessages.po
File diff suppressed because it is too large
Load Diff
5369
view/de/hmessages.po
5369
view/de/hmessages.po
File diff suppressed because it is too large
Load Diff
1062
view/de/hstrings.php
1062
view/de/hstrings.php
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -11,23 +11,37 @@ function ACL(backend_url, preset) {
|
|||||||
that.deny_cid = (preset[2] || []);
|
that.deny_cid = (preset[2] || []);
|
||||||
that.deny_gid = (preset[3] || []);
|
that.deny_gid = (preset[3] || []);
|
||||||
that.group_uids = [];
|
that.group_uids = [];
|
||||||
that.nw = 4; //items per row. should be calulated from #acl-list.width
|
|
||||||
|
|
||||||
|
that.info = $("#acl-info");
|
||||||
|
that.list = $("#acl-list");
|
||||||
that.list_content = $("#acl-list-content");
|
that.list_content = $("#acl-list-content");
|
||||||
that.item_tpl = unescape($(".acl-list-item[rel=acl-template]").html());
|
that.item_tpl = unescape($(".acl-list-item[rel=acl-template]").html());
|
||||||
that.showall = $("#acl-showall");
|
that.showall = $("#acl-showall");
|
||||||
that.showlimited = $("#acl-showlimited");
|
that.showlimited = $("#acl-showlimited");
|
||||||
|
that.acl_select = $("#acl-select");
|
||||||
|
|
||||||
|
that.preset = preset;
|
||||||
|
that.self = [];
|
||||||
|
|
||||||
// set the initial ACL lists in case the enclosing form gets submitted before the ajax loader completes.
|
// set the initial ACL lists in case the enclosing form gets submitted before the ajax loader completes.
|
||||||
that.on_submit();
|
that.on_submit();
|
||||||
|
|
||||||
if (preset.length === 0) that.showall.removeClass("btn-default").addClass("btn-warning");
|
|
||||||
|
|
||||||
/*events*/
|
/*events*/
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
that.showall.click(that.on_showall);
|
|
||||||
that.showlimited.click(that.on_showlimited);
|
that.acl_select.change(function(event) {
|
||||||
|
var option = that.acl_select.val();
|
||||||
|
|
||||||
|
if(option == 'option1') { // public
|
||||||
|
that.on_showall(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(option == 'option2') { // restricted
|
||||||
|
that.on_showlimited(event);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$(document).on('click','.acl-button-show',that.on_button_show);
|
$(document).on('click','.acl-button-show',that.on_button_show);
|
||||||
$(document).on('click','.acl-button-hide',that.on_button_hide);
|
$(document).on('click','.acl-button-hide',that.on_button_hide);
|
||||||
$("#acl-search").keypress(that.on_search);
|
$("#acl-search").keypress(that.on_search);
|
||||||
@ -73,15 +87,9 @@ ACL.prototype.on_search = function(event) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ACL.prototype.on_showall = function(event) {
|
ACL.prototype.on_showall = function(event) {
|
||||||
|
|
||||||
// preventDefault() isn't called here as we want state changes from update_view() to be applied to the radiobutton
|
// preventDefault() isn't called here as we want state changes from update_view() to be applied to the radiobutton
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
|
||||||
if (that.showall.hasClass("btn-warning")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
that.showall.removeClass("btn-default").addClass("btn-warning");
|
|
||||||
|
|
||||||
that.allow_cid = [];
|
that.allow_cid = [];
|
||||||
that.allow_gid = [];
|
that.allow_gid = [];
|
||||||
that.deny_cid = [];
|
that.deny_cid = [];
|
||||||
@ -94,11 +102,22 @@ ACL.prototype.on_showall = function(event) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ACL.prototype.on_showlimited = function(event) {
|
ACL.prototype.on_showlimited = function(event) {
|
||||||
// Prevent the radiobutton from being selected, as the showlimited radiobutton
|
// preventDefault() isn't called here as we want state changes from update_view() to be applied to the radiobutton
|
||||||
// option is selected only by selecting show or hide options on channels or groups.
|
|
||||||
event.preventDefault();
|
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
return false;
|
|
||||||
|
if(that.preset[0].length === 0 && that.preset[1].length === 0 && that.preset[2].length === 0 && that.preset[3].length === 0) {
|
||||||
|
that.preset[0] = [that.self[0]];
|
||||||
|
}
|
||||||
|
|
||||||
|
that.allow_cid = (that.preset[0] || []);
|
||||||
|
that.allow_gid = (that.preset[1] || []);
|
||||||
|
that.deny_cid = (that.preset[2] || []);
|
||||||
|
that.deny_gid = (that.preset[3] || []);
|
||||||
|
|
||||||
|
that.update_view();
|
||||||
|
that.on_submit();
|
||||||
|
|
||||||
|
return true; // return true so that state changes from update_view() will be applied
|
||||||
}
|
}
|
||||||
|
|
||||||
ACL.prototype.on_selectall = function(event) {
|
ACL.prototype.on_selectall = function(event) {
|
||||||
@ -199,20 +218,16 @@ ACL.prototype.set_deny = function(itemid) {
|
|||||||
that.update_view();
|
that.update_view();
|
||||||
};
|
};
|
||||||
|
|
||||||
ACL.prototype.update_radiobuttons = function(isPublic) {
|
ACL.prototype.update_select = function(isPublic) {
|
||||||
|
that.showall.prop('selected', isPublic);
|
||||||
that.showall.prop('checked', isPublic);
|
that.showlimited.prop('selected', !isPublic);
|
||||||
that.showlimited.prop('checked', !isPublic);
|
|
||||||
that.showlimited.prop('disabled', isPublic);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ACL.prototype.update_view = function() {
|
ACL.prototype.update_view = function() {
|
||||||
if (that.allow_gid.length === 0 && that.allow_cid.length === 0 &&
|
if (that.allow_gid.length === 0 && that.allow_cid.length === 0 && that.deny_gid.length === 0 && that.deny_cid.length === 0) {
|
||||||
that.deny_gid.length === 0 && that.deny_cid.length === 0) {
|
that.list.hide(); //hide acl-list
|
||||||
// btn-warning indicates that the permissions are public, it was chosen because
|
that.info.show(); //show acl-info
|
||||||
// that.showall used to be a normal button, which btn-warning is a bootstrap style for.
|
that.update_select(true);
|
||||||
that.showall.removeClass("btn-default").addClass("btn-warning");
|
|
||||||
that.update_radiobuttons(true);
|
|
||||||
|
|
||||||
/* jot acl */
|
/* jot acl */
|
||||||
$('#jot-perms-icon, #dialog-perms-icon').removeClass('fa-lock').addClass('fa-unlock');
|
$('#jot-perms-icon, #dialog-perms-icon').removeClass('fa-lock').addClass('fa-unlock');
|
||||||
@ -220,8 +235,9 @@ ACL.prototype.update_view = function() {
|
|||||||
$('.profile-jot-net input').attr('disabled', false);
|
$('.profile-jot-net input').attr('disabled', false);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
that.showall.removeClass("btn-warning").addClass("btn-default");
|
that.list.show(); //show acl-list
|
||||||
that.update_radiobuttons(false);
|
that.info.hide(); //hide acl-info
|
||||||
|
that.update_select(false);
|
||||||
|
|
||||||
/* jot acl */
|
/* jot acl */
|
||||||
$('#jot-perms-icon, #dialog-perms-icon').removeClass('fa-unlock').addClass('fa-lock');
|
$('#jot-perms-icon, #dialog-perms-icon').removeClass('fa-unlock').addClass('fa-lock');
|
||||||
@ -300,12 +316,11 @@ ACL.prototype.get = function(start, count, search) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
ACL.prototype.populate = function(data) {
|
ACL.prototype.populate = function(data) {
|
||||||
var height = Math.ceil(data.items.length / that.nw) * 42;
|
|
||||||
that.list_content.height(height);
|
|
||||||
$(data.items).each(function(){
|
$(data.items).each(function(){
|
||||||
html = "<div class='acl-list-item {4} {7} {5}' title='{6}' id='{2}{3}'>"+that.item_tpl+"</div>";
|
html = "<div class='acl-list-item {4} {7} {5}' title='{6}' id='{2}{3}'>"+that.item_tpl+"</div>";
|
||||||
html = html.format(this.photo, this.name, this.type, this.xid, '', this.self, this.link, this.taggable);
|
html = html.format(this.photo, this.name, this.type, this.xid, '', this.self, this.link, this.taggable);
|
||||||
if (this.uids !== undefined) that.group_uids[this.xid] = this.uids;
|
if (this.uids !== undefined) that.group_uids[this.xid] = this.uids;
|
||||||
|
if (this.self === 'abook-self') that.self[0] = this.xid;
|
||||||
//console.log(html);
|
//console.log(html);
|
||||||
that.list_content.append(html);
|
that.list_content.append(html);
|
||||||
});
|
});
|
||||||
|
5019
view/nl/hmessages.po
5019
view/nl/hmessages.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -333,6 +333,15 @@ input {
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.section-content-info-wrapper {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #43488A;
|
||||||
|
}
|
||||||
|
|
||||||
|
.section-content-info-wrapper a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
.btn, #event-edit-form .btn, input.directory-rating-submit {
|
.btn, #event-edit-form .btn, input.directory-rating-submit {
|
||||||
border: 1px solid #FFF;
|
border: 1px solid #FFF;
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
@ -450,7 +459,7 @@ a:hover > .fa-trash-o {
|
|||||||
.navbar-inverse .navbar-toggle .icon-bar {
|
.navbar-inverse .navbar-toggle .icon-bar {
|
||||||
background-color: #FFF;
|
background-color: #FFF;
|
||||||
}
|
}
|
||||||
.navbar-inverse .navbar-toggle .fa-arrow-circle-down, .navbar-inverse .navbar-toggle .fa-arrow-circle-right, .navbar-inverse .navbar-toggle .fa-arrow-circle-up, .navbar-inverse .navbar-toggle .fa-arrow-circle-left {
|
.navbar-inverse .navbar-toggle .fa-arrow-circle-down, .navbar-inverse .navbar-toggle .fa-arrow-circle-right, .navbar-inverse .navbar-toggle .fa-arrow-circle-up, .navbar-inverse .navbar-toggle .fa-arrow-circle-left, .navbar-inverse .navbar-toggle .fa-question-circle {
|
||||||
color: #FFF;
|
color: #FFF;
|
||||||
}
|
}
|
||||||
.navbar-inverse .navbar-toggle:hover .fa-arrow-circle-down, .navbar-inverse .navbar-toggle:focus .fa-arrow-circle-down, .navbar-inverse .navbar-toggle:hover .fa-arrow-circle-right, .navbar-inverse .navbar-toggle:focus .fa-arrow-circle-right, .navbar-inverse .navbar-toggle:hover .fa-arrow-circle-up, .navbar-inverse .navbar-toggle:focus .fa-arrow-circle-up, .navbar-inverse .navbar-toggle:hover .fa-arrow-circle-left, .navbar-inverse .navbar-toggle:focus .fa-arrow-circle-left {
|
.navbar-inverse .navbar-toggle:hover .fa-arrow-circle-down, .navbar-inverse .navbar-toggle:focus .fa-arrow-circle-down, .navbar-inverse .navbar-toggle:hover .fa-arrow-circle-right, .navbar-inverse .navbar-toggle:focus .fa-arrow-circle-right, .navbar-inverse .navbar-toggle:hover .fa-arrow-circle-up, .navbar-inverse .navbar-toggle:focus .fa-arrow-circle-up, .navbar-inverse .navbar-toggle:hover .fa-arrow-circle-left, .navbar-inverse .navbar-toggle:focus .fa-arrow-circle-left {
|
||||||
|
@ -63,7 +63,7 @@
|
|||||||
background-image: linear-gradient(to bottom, #1E1E1E 0px, #1E1E1E 100%);
|
background-image: linear-gradient(to bottom, #1E1E1E 0px, #1E1E1E 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.alert-info {
|
.alert-info, .section-content-info-wrapper {
|
||||||
color: #CCC;
|
color: #CCC;
|
||||||
background-color:#333;
|
background-color:#333;
|
||||||
border-color: #444;
|
border-color: #444;
|
||||||
@ -79,16 +79,35 @@
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#acl-showall {
|
#acl-select {
|
||||||
color: #fff;
|
background-color:#333;
|
||||||
|
border: 1px solid #444;
|
||||||
|
color: #FFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#acl-showall {
|
||||||
|
color: #FFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#acl-list {
|
#acl-list {
|
||||||
border: 1px solid #333;
|
border: 1px solid #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
#acl-search-wrapper {
|
||||||
|
border-bottom: 1px solid #444;
|
||||||
}
|
}
|
||||||
|
|
||||||
.acl-list-item {
|
.acl-list-item {
|
||||||
border: 1px solid #333;
|
border: 1px solid #222;
|
||||||
|
color: #CCC;
|
||||||
|
background-color:#333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.abook-self {
|
||||||
|
border: 1px solid #222;
|
||||||
|
color: #555;
|
||||||
|
background-color:#111;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-content {
|
.modal-content {
|
||||||
@ -312,7 +331,7 @@ pre {
|
|||||||
background-image: none;
|
background-image: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.open .dropdown-toggle.btn-default {
|
.open .dropdown-toggle.btn-default, .open .dropdown-toggle.btn-default:focus {
|
||||||
color: #ccc;
|
color: #ccc;
|
||||||
background-color: #222;
|
background-color: #222;
|
||||||
border-color: #222;
|
border-color: #222;
|
||||||
|
@ -51,8 +51,21 @@
|
|||||||
background-image: linear-gradient(to bottom, #fff 0px, #fff 100%);
|
background-image: linear-gradient(to bottom, #fff 0px, #fff 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#acl-select {
|
||||||
|
border: 1px solid #000;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.acl-list-item {
|
||||||
|
border: 1px solid #000;
|
||||||
|
background-color: #FFF;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
.abook-self {
|
.abook-self {
|
||||||
background-color: #fff;
|
border: 1px solid #EEE;
|
||||||
|
color: #ccc;
|
||||||
|
background-color: #EEE;
|
||||||
}
|
}
|
||||||
|
|
||||||
.acl-button-show,
|
.acl-button-show,
|
||||||
@ -60,18 +73,10 @@
|
|||||||
color: #000;
|
color: #000;
|
||||||
}
|
}
|
||||||
|
|
||||||
#acl-showall {
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
#acl-list {
|
#acl-list {
|
||||||
border: 1px solid #fff;
|
border: 1px solid #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.acl-list-item {
|
|
||||||
border: 1px solid #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-content {
|
.modal-content {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
|
@ -51,8 +51,30 @@
|
|||||||
background-image: linear-gradient(to bottom, #000 0px, #000 100%);
|
background-image: linear-gradient(to bottom, #000 0px, #000 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.abook-self {
|
.section-content-info-wrapper {
|
||||||
|
color: #50f148;
|
||||||
background-color:#000;
|
background-color:#000;
|
||||||
|
border: 1px solid #143D12 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-header {
|
||||||
|
border-bottom: 1px solid #143D12;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-footer {
|
||||||
|
border-top: 1px solid #143D12;
|
||||||
|
}
|
||||||
|
|
||||||
|
#acl-select {
|
||||||
|
background-color: #000;
|
||||||
|
border: 1px solid #143D12;
|
||||||
|
color: #50f148;
|
||||||
|
}
|
||||||
|
|
||||||
|
.abook-self {
|
||||||
|
color: #333;
|
||||||
|
background-color: #000 !important;
|
||||||
|
border: 1px solid #111;
|
||||||
}
|
}
|
||||||
|
|
||||||
.acl-button-show,
|
.acl-button-show,
|
||||||
@ -60,16 +82,18 @@
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#acl-showall {
|
#acl-list {
|
||||||
color: #fff;
|
border: 1px solid #143D12;
|
||||||
}
|
}
|
||||||
|
|
||||||
#acl-list {
|
#acl-search-wrapper {
|
||||||
border: 1px solid #000;
|
border-bottom: 1px solid #143D12;
|
||||||
}
|
}
|
||||||
|
|
||||||
.acl-list-item {
|
.acl-list-item {
|
||||||
border: 1px solid #000;
|
border: 1px solid #111;
|
||||||
|
background-color:#111;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-content {
|
.modal-content {
|
||||||
@ -267,7 +291,7 @@ pre {
|
|||||||
background-image: none;
|
background-image: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.open .dropdown-toggle.btn-default {
|
.open .dropdown-toggle.btn-default, .open .dropdown-toggle.btn-default:focus {
|
||||||
color: #50f148;
|
color: #50f148;
|
||||||
background-color: #000;
|
background-color: #000;
|
||||||
border-color: #143D12;
|
border-color: #143D12;
|
||||||
|
@ -47,8 +47,30 @@
|
|||||||
background-image: linear-gradient(to bottom, #000 0px, #000 100%);
|
background-image: linear-gradient(to bottom, #000 0px, #000 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.abook-self {
|
.section-content-info-wrapper {
|
||||||
|
color: #fff;
|
||||||
background-color:#000;
|
background-color:#000;
|
||||||
|
border: 1px solid #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-header {
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-footer {
|
||||||
|
border-top: 1px solid #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#acl-select {
|
||||||
|
background-color: #000;
|
||||||
|
border: 1px solid #fff;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.abook-self {
|
||||||
|
color: #333;
|
||||||
|
background-color: #111 !important;
|
||||||
|
border: 1px solid #111;
|
||||||
}
|
}
|
||||||
|
|
||||||
.acl-button-show,
|
.acl-button-show,
|
||||||
@ -56,16 +78,17 @@
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
#acl-showall {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#acl-list {
|
#acl-list {
|
||||||
border: 1px solid #000;
|
border: 1px solid #000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#acl-search-wrapper {
|
||||||
|
border-bottom: 1px solid #000;
|
||||||
|
}
|
||||||
|
|
||||||
.acl-list-item {
|
.acl-list-item {
|
||||||
border: 1px solid #000;
|
border: 1px solid #fff;
|
||||||
|
background-color:#000;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-content {
|
.modal-content {
|
||||||
@ -246,10 +269,10 @@ pre {
|
|||||||
background-image: none;
|
background-image: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.open .dropdown-toggle.btn-default {
|
.open .dropdown-toggle.btn-default, .open .dropdown-toggle.btn-default:focus {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: #000;
|
background-color: #000;
|
||||||
border-color: #000;
|
border-color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.preview {
|
.preview {
|
||||||
|
@ -12,6 +12,18 @@
|
|||||||
{{if $aclModalDesc}}
|
{{if $aclModalDesc}}
|
||||||
<div id="acl-dialog-description" class="section-content-info-wrapper">{{$aclModalDesc}}</div>
|
<div id="acl-dialog-description" class="section-content-info-wrapper">{{$aclModalDesc}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
<label for="acl-select">{{$select_label}}</label>
|
||||||
|
<select id="acl-select" name="optionsRadios" class="form-control form-group">
|
||||||
|
<option id="acl-showall" value="option1" selected>{{$showall}}</option>
|
||||||
|
<option id="acl-showlimited" value="option2">{{$showlimited}}</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
{{if $showallOrigin}}
|
||||||
|
<div id="acl-info" class="form-group">
|
||||||
|
<i class="fa fa-info-circle"></i> {{$showallOrigin}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{if $jotnets}}
|
{{if $jotnets}}
|
||||||
<div class="jotnets-wrapper" role="tab" id="jotnets-wrapper">
|
<div class="jotnets-wrapper" role="tab" id="jotnets-wrapper">
|
||||||
<a data-toggle="collapse" class="btn btn-block btn-default" href="#jotnets-collapse" aria-expanded="false" aria-controls="jotnets-collapse">{{$jnetModalTitle}} <span class="caret"></span></a>
|
<a data-toggle="collapse" class="btn btn-block btn-default" href="#jotnets-collapse" aria-expanded="false" aria-controls="jotnets-collapse">{{$jnetModalTitle}} <span class="caret"></span></a>
|
||||||
@ -21,25 +33,8 @@
|
|||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<div id="acl-wrapper">
|
<div id="acl-wrapper">
|
||||||
<div id="acl-radiowrapper-showall" class="radio">
|
|
||||||
<label>
|
|
||||||
<input id="acl-showall" type="radio" name="optionsRadios" value="option1" checked>
|
|
||||||
{{if $showallIcon}}
|
|
||||||
<i class="fa {{$showallIcon}}"></i>
|
|
||||||
{{/if}}
|
|
||||||
<span id="acl-showall-caption">{{$showall}}</span>
|
|
||||||
</label>
|
|
||||||
{{if $showallOrigin}}
|
|
||||||
<a id="acl-info-icon" role="button" tabindex="0" class="fa fa-info-circle" data-trigger="focus" data-toggle="popover" data-placement="top" data-content="{{$showallOrigin}}"></a>
|
|
||||||
{{/if}}
|
|
||||||
</div>
|
|
||||||
<div id="acl-radiowrapper-showlimited" class="radio">
|
|
||||||
<label>
|
|
||||||
<input id="acl-showlimited" type="radio" name="optionsRadios" style="readonly" value="option2">
|
|
||||||
<span id=acl-showlimited-caption>{{$showlimited}}</span>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div id="acl-list">
|
<div id="acl-list">
|
||||||
<div id="acl-search-wrapper">
|
<div id="acl-search-wrapper">
|
||||||
<input type="text" id="acl-search" placeholder=" {{$search}}">
|
<input type="text" id="acl-search" placeholder=" {{$search}}">
|
||||||
|
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user