aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.htaccess2
-rw-r--r--doc/To-Do-Code.md4
-rw-r--r--doc/Widgets.md3
-rw-r--r--doc/to_do_code.bb4
-rw-r--r--include/directory.php5
-rw-r--r--include/identity.php15
-rwxr-xr-xinclude/items.php2
-rw-r--r--include/network.php42
-rw-r--r--include/notifier.php6
-rw-r--r--include/queue.php8
-rw-r--r--include/socgraph.php5
-rw-r--r--include/widgets.php2
-rw-r--r--include/zot.php5
-rw-r--r--mod/authtest.php4
-rw-r--r--mod/lockview.php14
-rw-r--r--mod/photos.php3
-rw-r--r--mod/probe.php4
-rwxr-xr-xmod/setup.php3
-rw-r--r--version.inc2
-rw-r--r--view/css/conversation.css19
-rw-r--r--view/en/htconfig.tpl7
-rw-r--r--view/js/main.js26
-rw-r--r--view/theme/redbasic/css/style.css11
-rw-r--r--view/theme/redbasic/js/redbasic.js3
-rwxr-xr-xview/tpl/conv_item.tpl4
-rw-r--r--view/tpl/hdr.tpl2
-rwxr-xr-xview/tpl/head.tpl2
-rwxr-xr-xview/tpl/posted_date_widget.tpl10
28 files changed, 131 insertions, 86 deletions
diff --git a/.htaccess b/.htaccess
index 7f752018c..39fd89e04 100644
--- a/.htaccess
+++ b/.htaccess
@@ -1,7 +1,7 @@
Options -Indexes
AddType application/x-java-archive .jar
AddType audio/ogg .oga
-#SSLCipherSuite ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH
+#SSLCipherSuite HIGH:AES256-SHA:AES128-SHA:RC4:!aNULL:!eNULL:!EDH
# don't allow any web access to logfiles, even after rotation/compression
<FilesMatch "\.(out|log|gz)$">
diff --git a/doc/To-Do-Code.md b/doc/To-Do-Code.md
index 58ecd18c6..fe5ec1842 100644
--- a/doc/To-Do-Code.md
+++ b/doc/To-Do-Code.md
@@ -23,6 +23,10 @@ We need much more than this, but here are areas where developers can help. Pleas
* (Advanced) create a UI for building Comanche pages
+* External post connectors - create standard interface
+
+* External post connectors, add popular services
+
* templatise and translate the Web interface to webDAV
* Extend WebDAV to provide desktop access to photo albums
diff --git a/doc/Widgets.md b/doc/Widgets.md
index dc7093f8a..0f8d948ff 100644
--- a/doc/Widgets.md
+++ b/doc/Widgets.md
@@ -33,6 +33,9 @@ Some/many of these widgets have restrictions which may restrict the type of page
* filer - select filed items from network/matrix stream - must be logged in
* archive - date range selector for network and channel pages
+ * args: 'wall' - 1 or 0, limit to wall posts or network/matrix posts (default)
+ * 'style': 'list' or 'select' - presentation format, a select form element or a list, default 'select'
+ *
* fullprofile - same as profile currently
diff --git a/doc/to_do_code.bb b/doc/to_do_code.bb
index ac337e5d8..fc2c2082d 100644
--- a/doc/to_do_code.bb
+++ b/doc/to_do_code.bb
@@ -28,7 +28,9 @@ We need much more than this, but here are areas where developers can help. Pleas
[li]Extend WebDAV to provide desktop access to photo albums]/li]
-[li]Create a module PDL editor (separate from but integrated with the page layout editor) as a separate module. This will allow folks to view and alter the pre-defined layouts for any module in the system. If the custom module is removed or empty, revert to the system layout.
+[li]External post connectors - create standard interface[/li]
+
+[li]External post connectors, add popular services[/li]
[li]service classes - provide a pluggable subscription payment gateway for premium accounts[/li]
diff --git a/include/directory.php b/include/directory.php
index 794420b6f..c69fb1f4b 100644
--- a/include/directory.php
+++ b/include/directory.php
@@ -69,11 +69,12 @@ function directory_run($argv, $argc){
// the directory packet. That means we'll try again on the next poll run.
$hash = random_string();
- q("insert into outq ( outq_hash, outq_account, outq_channel, outq_posturl, outq_async, outq_created, outq_updated, outq_notify, outq_msg )
- values ( '%s', %d, %d, '%s', %d, '%s', '%s', '%s', '%s' )",
+ q("insert into outq ( outq_hash, outq_account, outq_channel, outq_driver, outq_posturl, outq_async, outq_created, outq_updated, outq_notify, outq_msg )
+ values ( '%s', %d, %d, '%s', '%s', %d, '%s', '%s', '%s', '%s' )",
dbesc($hash),
intval($channel['channel_account_id']),
intval($channel['channel_id']),
+ dbesc('zot'),
dbesc($url),
intval(1),
dbesc(datetime_convert()),
diff --git a/include/identity.php b/include/identity.php
index efc0d7d87..c8a925dac 100644
--- a/include/identity.php
+++ b/include/identity.php
@@ -80,6 +80,16 @@ function validate_channelname($name) {
function create_sys_channel() {
if(get_sys_channel())
return;
+
+ // Ensure that there is a host keypair.
+
+ if((! get_config('system','pubkey')) && (! get_config('system','prvkey'))) {
+ require_once('include/crypto.php');
+ $hostkey = new_keypair(4096);
+ set_config('system','pubkey',$hostkey['pubkey']);
+ set_config('system','prvkey',$hostkey['prvkey']);
+ }
+
create_identity(array(
'account_id' => 'xxx', // This will create an identity with an (integer) account_id of 0, but account_id is required
'nickname' => 'sys',
@@ -167,6 +177,11 @@ function create_identity($arr) {
return $ret;
}
+ if($nick === 'sys' && (! ($pageflags & PAGE_SYSTEM))) {
+ $ret['message'] = t('Reserved nickname. Please choose another.');
+ return $ret;
+ }
+
if(check_webbie(array($nick)) !== $nick) {
$ret['message'] = t('Nickname has unsupported characters or is already being used on this site.');
return $ret;
diff --git a/include/items.php b/include/items.php
index 6788ac3da..428767676 100755
--- a/include/items.php
+++ b/include/items.php
@@ -859,7 +859,7 @@ function encode_item($item) {
if($item['term'])
$x['tags'] = encode_item_terms($item['term']);
- logger('encode_item: ' . print_r($x,true));
+ logger('encode_item: ' . print_r($x,true), LOGGER_DATA);
return $x;
diff --git a/include/network.php b/include/network.php
index 1fb4beaa7..14771d88f 100644
--- a/include/network.php
+++ b/include/network.php
@@ -43,8 +43,14 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) {
@curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
@curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; Red)");
+ $ciphers = @get_config('system','curl_ssl_ciphers');
+ if(! $ciphers)
+ $ciphers = 'ALL:!eNULL';
+
+ @curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, $ciphers);
+
if (x($opts,'accept_content')){
- curl_setopt($ch,CURLOPT_HTTPHEADER, array (
+ @curl_setopt($ch,CURLOPT_HTTPHEADER, array (
"Accept: " . $opts['accept_content']
));
}
@@ -115,7 +121,9 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) {
$ret['return_code'] = $rc;
$ret['success'] = (($rc >= 200 && $rc <= 299) ? true : false);
if(! $ret['success']) {
+ $ret['error'] = curl_error($ch);
$ret['debug'] = $curl_info;
+ logger('z_fetch_url: error:' . $ret['error'], LOGGER_DEBUG);
logger('z_fetch_url: debug:' . print_r($curl_info,true), LOGGER_DATA);
}
$ret['body'] = substr($s,strlen($header));
@@ -136,21 +144,27 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) {
if(($redirects > 8) || (! $ch))
return ret;
- curl_setopt($ch, CURLOPT_HEADER, true);
+ @curl_setopt($ch, CURLOPT_HEADER, true);
@curl_setopt($ch, CURLOPT_CAINFO, get_capath());
- curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
- curl_setopt($ch, CURLOPT_POST,1);
- curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
- curl_setopt($ch, CURLOPT_USERAGENT, "Red");
+ @curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
+ @curl_setopt($ch, CURLOPT_POST,1);
+ @curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
+ @curl_setopt($ch, CURLOPT_USERAGENT, "Red");
+
+ $ciphers = @get_config('system','curl_ssl_ciphers');
+ if(! $ciphers)
+ $ciphers = 'ALL:!eNULL';
+
+ @curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, $ciphers);
if (x($opts,'accept_content')){
- curl_setopt($ch,CURLOPT_HTTPHEADER, array (
+ @curl_setopt($ch,CURLOPT_HTTPHEADER, array (
"Accept: " . $opts['accept_content']
));
}
if(x($opts,'headers'))
- curl_setopt($ch, CURLOPT_HTTPHEADER, $opts['headers']);
+ @curl_setopt($ch, CURLOPT_HTTPHEADER, $opts['headers']);
if(x($opts,'timeout') && intval($opts['timeout'])) {
@curl_setopt($ch, CURLOPT_TIMEOUT, $opts['timeout']);
@@ -170,11 +184,11 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) {
$prx = get_config('system','proxy');
if(strlen($prx)) {
- curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
- curl_setopt($ch, CURLOPT_PROXY, $prx);
+ @curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
+ @curl_setopt($ch, CURLOPT_PROXY, $prx);
$prxusr = get_config('system','proxyuser');
if(strlen($prxusr))
- curl_setopt($ch, CURLOPT_PROXYUSERPWD, $prxusr);
+ @curl_setopt($ch, CURLOPT_PROXYUSERPWD, $prxusr);
}
// don't let curl abort the entire application
@@ -183,7 +197,7 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) {
$s = @curl_exec($ch);
$base = $s;
- $curl_info = curl_getinfo($ch);
+ $curl_info = @curl_getinfo($ch);
$http_code = $curl_info['http_code'];
$header = '';
@@ -217,8 +231,10 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) {
$ret['return_code'] = $rc;
$ret['success'] = (($rc >= 200 && $rc <= 299) ? true : false);
if(! $ret['success']) {
+ $ret['error'] = curl_error($ch);
$ret['debug'] = $curl_info;
- logger('z_fetch_url: debug:' . print_r($curl_info,true), LOGGER_DATA);
+ logger('z_post_url: error:' . $ret['error'], LOGGER_DEBUG);
+ logger('z_post_url: debug:' . print_r($curl_info,true), LOGGER_DATA);
}
$ret['body'] = substr($s,strlen($header));
diff --git a/include/notifier.php b/include/notifier.php
index a4a9051c3..4bf2ac153 100644
--- a/include/notifier.php
+++ b/include/notifier.php
@@ -486,10 +486,11 @@ function notifier_run($argv, $argc){
$hash = random_string();
if($packet_type === 'refresh' || $packet_type === 'purge') {
$n = zot_build_packet($channel,$packet_type);
- q("insert into outq ( outq_hash, outq_account, outq_channel, outq_posturl, outq_async, outq_created, outq_updated, outq_notify, outq_msg ) values ( '%s', %d, %d, '%s', %d, '%s', '%s', '%s', '%s' )",
+ q("insert into outq ( outq_hash, outq_account, outq_channel, outq_driver, outq_posturl, outq_async, outq_created, outq_updated, outq_notify, outq_msg ) values ( '%s', %d, %d, '%s', '%s', %d, '%s', '%s', '%s', '%s' )",
dbesc($hash),
intval($channel['channel_account_id']),
intval($channel['channel_id']),
+ dbesc('zot'),
dbesc($hub['hubloc_callback']),
intval(1),
dbesc(datetime_convert()),
@@ -500,10 +501,11 @@ function notifier_run($argv, $argc){
}
else {
$n = zot_build_packet($channel,'notify',$env_recips,(($private) ? $hub['hubloc_sitekey'] : null),$hash);
- q("insert into outq ( outq_hash, outq_account, outq_channel, outq_posturl, outq_async, outq_created, outq_updated, outq_notify, outq_msg ) values ( '%s', %d, %d, '%s', %d, '%s', '%s', '%s', '%s' )",
+ q("insert into outq ( outq_hash, outq_account, outq_channel, outq_driver, outq_posturl, outq_async, outq_created, outq_updated, outq_notify, outq_msg ) values ( '%s', %d, %d, '%s', '%s', %d, '%s', '%s', '%s', '%s' )",
dbesc($hash),
intval($target_item['aid']),
intval($target_item['uid']),
+ dbesc('zot'),
dbesc($hub['hubloc_callback']),
intval(1),
dbesc(datetime_convert()),
diff --git a/include/queue.php b/include/queue.php
index ec7246cb2..239d61fc0 100644
--- a/include/queue.php
+++ b/include/queue.php
@@ -33,8 +33,12 @@ function queue_run($argv, $argc){
// For the first 12 hours we'll try to deliver every 15 minutes
// After that, we'll only attempt delivery once per hour.
-
- $r = q("SELECT * FROM outq WHERE outq_delivered = 0 and (( outq_created > UTC_TIMESTAMP() - INTERVAL 12 HOUR and outq_updated < UTC_TIMESTAMP() - INTERVAL 15 MINUTE ) OR ( outq_updated < UTC_TIMESTAMP() - INTERVAL 1 HOUR ))");
+ // This currently only handles the default queue drivers ('zot' or '') which we will group by posturl
+ // so that we don't start off a thousand deliveries for a couple of dead hubs.
+ // The zot driver will deliver everything destined for a single hub once contact is made (*if* contact is made).
+ // Other drivers will have to do something different here and may need their own query.
+
+ $r = q("SELECT * FROM outq WHERE outq_delivered = 0 and (( outq_created > UTC_TIMESTAMP() - INTERVAL 12 HOUR and outq_updated < UTC_TIMESTAMP() - INTERVAL 15 MINUTE ) OR ( outq_updated < UTC_TIMESTAMP() - INTERVAL 1 HOUR )) and outq_driver in ('','zot') group by outq_posturl");
}
if(! $r)
return;
diff --git a/include/socgraph.php b/include/socgraph.php
index 10d52da66..65e23f9df 100644
--- a/include/socgraph.php
+++ b/include/socgraph.php
@@ -62,6 +62,11 @@ function poco_load($xchan = '',$url = null) {
$j = json_decode($s['body'],true);
+ if(! $j) {
+ logger('poco_load: unable to json_decode returned data.');
+ return;
+ }
+
logger('poco_load: ' . print_r($j,true),LOGGER_DATA);
if($xchan) {
diff --git a/include/widgets.php b/include/widgets.php
index 90586397f..82769d925 100644
--- a/include/widgets.php
+++ b/include/widgets.php
@@ -306,6 +306,7 @@ function widget_archive($arr) {
$wall = ((array_key_exists('wall', $arr)) ? intval($arr['wall']) : 0);
+ $style = ((array_key_exists('style', $arr)) ? $arr['style'] : 'select');
$url = z_root() . '/' . $a->cmd;
@@ -318,6 +319,7 @@ function widget_archive($arr) {
'$title' => t('Archives'),
'$size' => ((count($ret) > 6) ? 6 : count($ret)),
'$url' => $url,
+ '$style' => $style,
'$dates' => $ret
));
return $o;
diff --git a/include/zot.php b/include/zot.php
index 35b322b54..c82918b3a 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -943,6 +943,8 @@ function import_xchan($arr,$ud_flags = UPDATE_FLAGS_UPDATED) {
$ret['hash'] = $xchan_hash;
}
+
+
logger('import_xchan: result: ' . print_r($ret,true), LOGGER_DATA);
return $ret;
}
@@ -2072,10 +2074,11 @@ function build_sync_packet($uid = 0, $packet = null) {
foreach($synchubs as $hub) {
$hash = random_string();
$n = zot_build_packet($channel,'notify',$env_recips,$hub['hubloc_sitekey'],$hash);
- q("insert into outq ( outq_hash, outq_account, outq_channel, outq_posturl, outq_async, outq_created, outq_updated, outq_notify, outq_msg ) values ( '%s', %d, %d, '%s', %d, '%s', '%s', '%s', '%s' )",
+ q("insert into outq ( outq_hash, outq_account, outq_channel, outq_driver, outq_posturl, outq_async, outq_created, outq_updated, outq_notify, outq_msg ) values ( '%s', %d, %d, '%s', '%s', %d, '%s', '%s', '%s', '%s' )",
dbesc($hash),
intval($channel['channel_account']),
intval($channel['channel_id']),
+ dbesc('zot'),
dbesc($hub['hubloc_callback']),
intval(1),
dbesc(datetime_convert()),
diff --git a/mod/authtest.php b/mod/authtest.php
index 3044a880b..b6d940db2 100644
--- a/mod/authtest.php
+++ b/mod/authtest.php
@@ -21,6 +21,10 @@ function authtest_content(&$a) {
$o .= '<br /><br />';
if(x($_GET,'dest')) {
+ if(strpos($_GET['dest'],'@')) {
+ $_GET['dest'] = $_REQUEST['dest'] = 'https://' . substr($_GET['dest'],strpos($_GET['dest'],'@')+1) . '/channel/' . substr($_GET['dest'],0,strpos($_GET['dest'],'@'));
+ }
+
$_REQUEST['test'] = 1;
$x = magic_init($a);
$o .= 'Local Setup returns: ' . print_r($x,true);
diff --git a/mod/lockview.php b/mod/lockview.php
index 32e7a3afb..b4a00dd81 100644
--- a/mod/lockview.php
+++ b/mod/lockview.php
@@ -31,7 +31,7 @@ function lockview_content(&$a) {
if(($item['item_private'] == 1) && (! strlen($item['allow_cid'])) && (! strlen($item['allow_gid']))
&& (! strlen($item['deny_cid'])) && (! strlen($item['deny_gid']))) {
- echo t('Remote privacy information not available.') . '<br />';
+ echo '<li>' . t('Remote privacy information not available.') . '</li>';
killme();
}
@@ -40,7 +40,7 @@ function lockview_content(&$a) {
$deny_users = expand_acl($item['deny_cid']);
$deny_groups = expand_acl($item['deny_gid']);
- $o = t('Visible to:') . '<br />';
+ $o = '<li>' . t('Visible to:') . '</li>';
$l = array();
stringify_array_elms($allowed_groups,true);
@@ -52,28 +52,28 @@ function lockview_content(&$a) {
$r = q("SELECT name FROM `groups` WHERE hash IN ( " . implode(', ', $allowed_groups) . " )");
if($r)
foreach($r as $rr)
- $l[] = '<b>' . $rr['name'] . '</b>';
+ $l[] = '<li><b>' . $rr['name'] . '</b></li>';
}
if(count($allowed_users)) {
$r = q("SELECT xchan_name FROM xchan WHERE xchan_hash IN ( " . implode(', ',$allowed_users) . " )");
if($r)
foreach($r as $rr)
- $l[] = $rr['xchan_name'];
+ $l[] = '<li>' . $rr['xchan_name'] . '</li>';
}
if(count($deny_groups)) {
$r = q("SELECT name FROM `groups` WHERE hash IN ( " . implode(', ', $deny_groups) . " )");
if($r)
foreach($r as $rr)
- $l[] = '<b><strike>' . $rr['name'] . '</strike></b>';
+ $l[] = '<li><b><strike>' . $rr['name'] . '</strike></b></li>';
}
if(count($deny_users)) {
$r = q("SELECT xchan_name FROM xchan WHERE xchan_hash IN ( " . implode(', ', $deny_users) . " )");
if($r)
foreach($r as $rr)
- $l[] = '<strike>' . $rr['xchan_name'] . '</strike>';
+ $l[] = '<li><strike>' . $rr['xchan_name'] . '</strike></li>';
}
- echo $o . implode(', ', $l);
+ echo $o . implode($l);
killme();
}
diff --git a/mod/photos.php b/mod/photos.php
index e2279188a..2740f91f9 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -535,14 +535,13 @@ function photos_content(&$a) {
$albums = photos_albums_list($a->data['channel'],$a->data['observer']);
-
$selname = (($datum) ? hex2bin($datum) : '');
$albumselect = '<select id="photos-upload-album-select" name="album" size="4">';
$albumselect .= '<option value="" ' . ((! $selname) ? ' selected="selected" ' : '') . '>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</option>';
if(count($albums)) {
foreach($albums as $album) {
- if($album['text'] === '')
+ if(! $album['text'])
continue;
$selected = (($selname === $album['text']) ? ' selected="selected" ' : '');
$albumselect .= '<option value="' . $album['text'] . '"' . $selected . '>' . $album['text'] . '</option>';
diff --git a/mod/probe.php b/mod/probe.php
index e2dd4ef77..8e0b60dcc 100644
--- a/mod/probe.php
+++ b/mod/probe.php
@@ -20,10 +20,14 @@ function probe_content(&$a) {
if($res['success'])
$j = json_decode($res['body'],true);
else {
+ $o .= sprintf( t('Fetching URL returns error: %1$s'),$res['error'] . "\r\n\r\n");
$o .= "<strong>https connection failed. Trying again with auto failover to http.</strong>\r\n\r\n";
$res = zot_finger($addr,$channel,true);
if($res['success'])
$j = json_decode($res['body'],true);
+ else
+ $o .= sprintf( t('Fetching URL returns error: %1$s'),$res['error'] . "\r\n\r\n");
+
}
if($j && $j['permissions'] && $j['permissions']['iv'])
$j['permissions'] = json_decode(crypto_unencapsulate($j['permissions'],$channel['channel_prvkey']),true);
diff --git a/mod/setup.php b/mod/setup.php
index d12627e84..83317dc4c 100755
--- a/mod/setup.php
+++ b/mod/setup.php
@@ -103,6 +103,7 @@ function setup_post(&$a) {
$test = z_fetch_url($siteurl."/setup/testrewrite");
if((! $test['success']) || ($test['body'] != 'ok')) {
$a->data['url_fail'] = true;
+ $a->data['url_error'] = $test['error'];
return;
}
}
@@ -169,6 +170,8 @@ function setup_content(&$a) {
if(x($a->data,'url_fail')) {
$install_wizard_pass = 3;
$wizard_status = t('Could not connect to specified site URL. Possible SSL certificate or DNS issue.');
+ if($a->data['url_error'])
+ $wizard_status .= ' ' . $a->data['url_error'];
}
if(x($a->data,'db_create_failed')) {
diff --git a/version.inc b/version.inc
index 01e476a78..a63c71f59 100644
--- a/version.inc
+++ b/version.inc
@@ -1 +1 @@
-2014-03-21.623
+2014-03-24.626
diff --git a/view/css/conversation.css b/view/css/conversation.css
index 8d7404b5d..46e1ed436 100644
--- a/view/css/conversation.css
+++ b/view/css/conversation.css
@@ -204,25 +204,14 @@
}
-/*
-.wall-item-lock {
- position: absolute;
- left: 105px;
- top: 1px;
-}
-
-.comment .wall-item-lock {
- left: 65px;
-}
-
-.wall-item-lock {
-
-}
-*/
.lockview {
cursor: pointer;
}
+.lockview-panel {
+ padding: 3px 20px;
+}
+
.wall-item-location {
text-overflow: ellipsis;
max-width: 30%;
diff --git a/view/en/htconfig.tpl b/view/en/htconfig.tpl
index 840e7a124..8e2d32433 100644
--- a/view/en/htconfig.tpl
+++ b/view/en/htconfig.tpl
@@ -85,6 +85,13 @@ $a->config['system']['php_path'] = '{{$phpath}}';
$a->config['system']['directory_mode'] = DIRECTORY_MODE_NORMAL;
+
+// libcurl default ciphers - Redhat and NSS based systems may use a different
+// syntax. This indicates the ciphers we will accept when connecting to any
+// https site. We want this to be as liberal as possible.
+
+$a->config['system']['curl_ssl_ciphers'] = 'ALL:!eNULL';
+
// default system theme
$a->config['system']['theme'] = 'redbasic';
diff --git a/view/js/main.js b/view/js/main.js
index 5f88ea9ca..38cde749c 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -728,27 +728,10 @@ function updateConvItems(mode,data) {
return cursor;
}
- var lockvisible = false;
-
function lockview(event,id) {
- event = event || window.event;
- cursor = getPosition(event);
- if(lockvisible) {
- lockviewhide();
- }
- else {
- lockvisible = true;
- $.get('lockview/' + id, function(data) {
- $('#panel').html(data);
- $('#panel').css({ 'left': cursor.x + 5 , 'top': cursor.y + 5});
- $('#panel').show();
- });
- }
- }
-
- function lockviewhide() {
- lockvisible = false;
- $('#panel').hide();
+ $.get('lockview/' + id, function(data) {
+ $('#panel-' + id).html(data);
+ });
}
function post_comment(id) {
@@ -1022,7 +1005,7 @@ $(window).scroll(function () {
$('#more').show();
}
- if($(window).scrollTop() + $(window).height() == $(document).height()) {
+ if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
if((pageHasMoreContent) && (! loadingPage)) {
$('#more').hide();
$('#no-more').hide();
@@ -1032,7 +1015,6 @@ $(window).scroll(function () {
loadingPage = true;
liveUpdate();
}
-
}
}
});
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index ecb9352ec..edc8eebbb 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -113,15 +113,6 @@ blockquote {
padding: 5px;
}
-#panel {
- background-color: ivory;
- position: absolute;
- z-index: 2;
- width: 30%;
- padding: 25px;
- border: 1px solid #444;
-}
-
.heart {
color: #FF0000;
font-size: 100%;
@@ -2114,7 +2105,7 @@ img.mail-list-sender-photo {
list-style-type: none;
}
-#sidebar-group-list ul {
+#sidebar-group-list ul, #posted-date-selector {
list-style-type: none;
}
diff --git a/view/theme/redbasic/js/redbasic.js b/view/theme/redbasic/js/redbasic.js
index c58711e94..70869f44b 100644
--- a/view/theme/redbasic/js/redbasic.js
+++ b/view/theme/redbasic/js/redbasic.js
@@ -30,6 +30,9 @@ if ($('aside').html().length == 0) {
}
$('#expand-tabs').click(function() {
+ if(!$('#tabs-collapse-1').hasClass('in')){
+ $('html, body').animate({ scrollTop: 0 }, 'slow');
+ }
$('#expand-tabs-icon').toggleClass('icon-circle-arrow-down').toggleClass('icon-circle-arrow-up');
});
diff --git a/view/tpl/conv_item.tpl b/view/tpl/conv_item.tpl
index 8d59951e7..dcf82e765 100755
--- a/view/tpl/conv_item.tpl
+++ b/view/tpl/conv_item.tpl
@@ -34,8 +34,8 @@
<div class="wall-item-photo-end"></div>
</div>
- <div class="wall-item-author">
- {{if $item.lock}}<i class="wall-item-lock icon-lock lockview" title="{{$item.lock}}" onclick="lockview(event,{{$item.id}});" ></i>&nbsp;{{/if}}<a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.sparkle}}" id="wall-item-name-{{$item.id}}" >{{$item.name}}</span></a>{{if $item.owner_url}} {{$item.via}} <a href="{{$item.owner_url}}" title="{{$item.olinktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.osparkle}}" id="wall-item-ownername-{{$item.id}}">{{$item.owner_name}}</span></a>{{/if}}<br />
+ <div class="wall-item-author dropdown">
+ {{if $item.lock}}<i class="icon-lock lockview dropdown-toggle" data-toggle="dropdown" title="{{$item.lock}}" onclick="lockview(event,{{$item.id}});" ></i><ul id="panel-{{$item.id}}" class="lockview-panel dropdown-menu"></ul>&nbsp;{{/if}}<a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.sparkle}}" id="wall-item-name-{{$item.id}}" >{{$item.name}}</span></a>{{if $item.owner_url}} {{$item.via}} <a href="{{$item.owner_url}}" title="{{$item.olinktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.osparkle}}" id="wall-item-ownername-{{$item.id}}">{{$item.owner_name}}</span></a>{{/if}}<br />
<div class="wall-item-ago" id="wall-item-ago-{{$item.id}}">{{if $item.verified}}<i class="icon-ok" title="{{$item.verified}}"></i>&nbsp;{{/if}}{{if $item.location}}<span class="wall-item-location" id="wall-item-location-{{$item.id}}">{{$item.location}},&nbsp;</span>{{/if}}<span class="autotime" title="{{$item.isotime}}">{{$item.localtime}}{{if $item.editedtime}} {{$item.editedtime}}{{/if}}{{if $item.expiretime}} {{$item.expiretime}}{{/if}}</span>{{if $item.app}}<span class="item.app">{{$item.str_app}}</span>{{/if}}</div>
</div>
<div class="wall-item-content" id="wall-item-content-{{$item.id}}" >
diff --git a/view/tpl/hdr.tpl b/view/tpl/hdr.tpl
index f1e78b897..efb43224c 100644
--- a/view/tpl/hdr.tpl
+++ b/view/tpl/hdr.tpl
@@ -3,5 +3,3 @@
<ul id="nav-notifications-template" style="display:none;" rel="template">
<li class="{5}"><a href="{0}" title="{2} {3}"><img src="{1}"><span class='contactname'>{2}</span>{3}<br><span class="notif-when">{4}</span></a></li>
</ul>
-
-<div id="panel" style="display: none;"></div>
diff --git a/view/tpl/head.tpl b/view/tpl/head.tpl
index c676cd773..e7b41523f 100755
--- a/view/tpl/head.tpl
+++ b/view/tpl/head.tpl
@@ -1,6 +1,6 @@
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<base href="{{$baseurl}}/" />
-<meta name="viewport" content="width=device-width, initial-scale=1">
+<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=0">
<meta name="generator" content="{{$generator}}" />
<!--[if IE]>
diff --git a/view/tpl/posted_date_widget.tpl b/view/tpl/posted_date_widget.tpl
index 6720d3628..1a8323926 100755
--- a/view/tpl/posted_date_widget.tpl
+++ b/view/tpl/posted_date_widget.tpl
@@ -1,9 +1,17 @@
<div id="datebrowse-sidebar" class="widget">
<h3>{{$title}}</h3>
<script>function dateSubmit(dateurl) { window.location.href = dateurl; } </script>
+{{if $style == 'list'}}
+<ul id="posted-date-selector">
+{{foreach $dates as $d}}
+<li class="posted-date-li"><a href="#" onclick="dateSubmit('{{$url}}?f=&dend={{$d.1}}&dbegin={{$d.2}}'); return false;">{{$d.0}}</a></li>
+{{/foreach}}
+</ul>
+{{else}}
<select id="posted-date-selector" name="posted-date-select" onchange="dateSubmit($(this).val());" size="{{$size}}">
{{foreach $dates as $d}}
-<option value="{{$url}}?dend={{$d.1}}&dbegin={{$d.2}}" >{{$d.0}}</option>
+<option value="{{$url}}?f=&dend={{$d.1}}&dbegin={{$d.2}}" >{{$d.0}}</option>
{{/foreach}}
</select>
+{{/if}}
</div>