diff --git a/boot.php b/boot.php index 54e5676e2..7414057c2 100755 --- a/boot.php +++ b/boot.php @@ -221,7 +221,7 @@ define ( 'PAGE_NORMAL', 0x0000 ); define ( 'PAGE_HIDDEN', 0x0001 ); define ( 'PAGE_AUTOCONNECT', 0x0002 ); define ( 'PAGE_APPLICATION', 0x0004 ); -define ( 'PAGE_DIRECTORY_CHANNEL', 0x0008 ); // system channel used for directory synchronisation + define ( 'PAGE_PREMIUM', 0x0010 ); define ( 'PAGE_ADULT', 0x0020 ); define ( 'PAGE_CENSORED', 0x0040 ); // Site admin has blocked this channel from appearing in casual search results and site feeds @@ -554,7 +554,7 @@ define ( 'ITEM_DELAYED_PUBLISH', 0x0080); define ( 'ITEM_BUILDBLOCK', 0x0100); // Named thusly to make sure nobody confuses this with ITEM_BLOCKED define ( 'ITEM_PDL', 0x0200); // Page Description Language - e.g. Comanche define ( 'ITEM_BUG', 0x0400); // Is a bug, can be used by the internal bug tracker -define ( 'ITEM_PENDING_REMOVE', 0x0800); // deleted, notification period has lapsed +define ( 'ITEM_PENDING_REMOVE', 0x0800); // deleted, notification period has lapsed /** * Item Flags diff --git a/include/Contact.php b/include/Contact.php index 233798181..4f7a2a19f 100644 --- a/include/Contact.php +++ b/include/Contact.php @@ -519,6 +519,8 @@ function contact_remove($channel_id, $abook_id) { if((! $channel_id) || (! $abook_id)) return false; + logger('removing contact ' . $abook_id . ' for channel ' . $channel_id,LOGGER_DEBUG); + $archive = get_pconfig($channel_id, 'system','archive_removed_contacts'); if($archive) { q("update abook set abook_flags = ( abook_flags | %d ) where abook_id = %d and abook_channel = %d", diff --git a/include/nav.php b/include/nav.php index a9bff4b29..a567f83c5 100644 --- a/include/nav.php +++ b/include/nav.php @@ -15,15 +15,7 @@ function nav(&$a) { $a->page['htmlhead'] .= <<< EOT diff --git a/library/jquery-textcomplete/jquery.textcomplete.js b/library/jquery-textcomplete/jquery.textcomplete.js index 1e61683ea..c8303eaa0 100644 --- a/library/jquery-textcomplete/jquery.textcomplete.js +++ b/library/jquery-textcomplete/jquery.textcomplete.js @@ -124,8 +124,9 @@ if (typeof jQuery === 'undefined') { this.views = []; this.option = $.extend({}, Completer._getDefaults(), option); - if (!this.$el.is('textarea') && !element.isContentEditable && element.contentEditable != 'true') { - throw new Error('textcomplete must be called on a Textarea or a ContentEditable.'); + + if (!this.$el.is('input[type=text]') && !this.$el.is('textarea') && !element.isContentEditable && element.contentEditable != 'true') { + throw new Error('textcomplete must be called on a input[type=text], Textarea or a ContentEditable.'); } if (element === document.activeElement) { @@ -171,7 +172,7 @@ if (typeof jQuery === 'undefined') { if (this.option.adapter) { Adapter = this.option.adapter; } else { - if (this.$el.is('textarea')) { + if (this.$el.is('textarea') || this.$el.is('input[type=text]')) { viewName = typeof element.selectionEnd === 'number' ? 'Textarea' : 'IETextarea'; } else { viewName = 'ContentEditable'; diff --git a/mod/acl.php b/mod/acl.php index e6733351b..f575db55b 100644 --- a/mod/acl.php +++ b/mod/acl.php @@ -182,49 +182,29 @@ function acl_init(&$a){ ); } elseif($type == 'x') { - $r = navbar_complete($a); - $x = array(); - $x['query'] = $search; - $x['photos'] = array(); - $x['links'] = array(); - $x['suggestions'] = array(); - $x['data'] = array(); + $contacts = array(); if($r) { foreach($r as $g) { - $x['photos'][] = $g['photo']; - $x['links'][] = $g['url']; - $x['suggestions'][] = '@' . $g['name']; - $x['data'][] = $g['name']; + $contacts[] = array( + "photo" => $g['photo'], + "name" => $g['name'], + "nick" => $g['address'], + ); } } - echo json_encode($x); - killme(); + $o = array( + 'start' => $start, + 'count' => $count, + 'items' => $contacts, + ); + echo json_encode($o); + killme(); } else $r = array(); - - if($type == 'm' || $type == 'a' || $type == 'p') { - $x = array(); - $x['query'] = $search; - $x['photos'] = array(); - $x['links'] = array(); - $x['suggestions'] = array(); - $x['data'] = array(); - if(count($r)) { - foreach($r as $g) { - $x['photos'][] = $g['micro']; - $x['links'][] = $g['url']; - $x['suggestions'][] = $g['name']; - $x['data'][] = (($type === 'p') ? '@' . str_replace(' ','_',$g['name']) : $g['id']); - } - } - echo json_encode($x); - killme(); - } - if(count($r)) { foreach($r as $g){ @@ -284,7 +264,7 @@ function navbar_complete(&$a) { } $dirmode = intval(get_config('system','directory_mode')); - $search = ((x($_REQUEST,'query')) ? htmlentities($_REQUEST['query'],ENT_COMPAT,'UTF-8',false) : ''); + $search = ((x($_REQUEST,'search')) ? htmlentities($_REQUEST['search'],ENT_COMPAT,'UTF-8',false) : ''); if(! $search || mb_strlen($search) < 2) return array(); diff --git a/mod/admin.php b/mod/admin.php index 0e580960a..74a373738 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -827,7 +827,7 @@ function admin_page_channels(&$a){ /* get channels */ $total = q("SELECT count(*) as total FROM channel where not (channel_pageflags & %d)>0", - intval(PAGE_REMOVED) + intval(PAGE_REMOVED|PAGE_SYSTEM) ); if($total) { $a->set_pager_total($total[0]['total']); @@ -837,7 +837,7 @@ function admin_page_channels(&$a){ $order = " order by channel_name asc "; $channels = q("SELECT * from channel where not ( channel_pageflags & %d )>0 $order limit %d offset %d ", - intval(PAGE_REMOVED), + intval(PAGE_REMOVED|PAGE_SYSTEM), intval($a->pager['itemspage']), intval($a->pager['start']) ); diff --git a/mod/connections.php b/mod/connections.php index 70e28913a..d36734ccb 100644 --- a/mod/connections.php +++ b/mod/connections.php @@ -179,7 +179,8 @@ function connections_content(&$a) { $unconnected = false; $all = false; - $_SESSION['return_url'] = $a->query_string; + if(! $_REQUEST['aj']) + $_SESSION['return_url'] = $a->query_string; $search_flags = 0; $head = ''; diff --git a/mod/connedit.php b/mod/connedit.php index 6729029ac..abab0416e 100644 --- a/mod/connedit.php +++ b/mod/connedit.php @@ -216,10 +216,9 @@ function connedit_post(&$a) { $arr = array('channel_id' => local_user(), 'abook' => $a->poi); call_hooks('accept_follow', $arr); } -dbg(1); + if(! is_null($autoperms)) set_pconfig(local_user(),'system','autoperms',(($autoperms) ? $abook_my_perms : 0)); -dbg(0); connedit_clone($a); @@ -242,7 +241,7 @@ function connedit_clone(&$a) { unset($clone['abook_account']); unset($clone['abook_channel']); - build_sync_packet(0 /* use the current local_user */, array('abook' => array($clone))); + build_sync_packet(0 /* use the current local_user */, array(array('abook' => array($clone)))); } /* @brief Generate content of connection edit page @@ -403,9 +402,9 @@ function connedit_content(&$a) { contact_remove(local_user(), $orig_record[0]['abook_id']); build_sync_packet(0 /* use the current local_user */, - array('abook' => array( + array(array('abook' => array( 'abook_xchan' => $orig_record[0]['abook_xchan'], - 'entry_deleted' => true) + 'entry_deleted' => true)) ) ); diff --git a/version.inc b/version.inc index 9c65a441a..dcc95694a 100644 --- a/version.inc +++ b/version.inc @@ -1 +1 @@ -2015-01-06.911 +2015-01-07.912 diff --git a/view/js/autocomplete.js b/view/js/autocomplete.js index e92ce1d56..8572cf708 100644 --- a/view/js/autocomplete.js +++ b/view/js/autocomplete.js @@ -3,13 +3,13 @@ * * require jQuery, jquery.textcomplete */ - -function mysearch(term, callback, backend_url, extra_channels) { - // Check if there is a cached result that contains the tsame information we would get with a full server-side search - for(t in mysearch.cache) { +function contact_search(term, callback, backend_url, type, extra_channels) { + // Check if there is a cached result that contains the same information we would get with a full server-side search + // Assume type hasn't changed + for(t in contact_search.cache) { if(term.indexOf(t) >= 0) { // A more broad search has been performed already, so use those results // Filter old results locally - var matching = mysearch.cache[t].filter(function (x) { return (x.name.indexOf(term) >= 0 || x.nick.indexOf(term) >= 0); }); + var matching = contact_search.cache[t].filter(function (x) { return (x.name.indexOf(term) >= 0 || x.nick.indexOf(term) >= 0); }); callback(matching); return; } @@ -19,10 +19,10 @@ function mysearch(term, callback, backend_url, extra_channels) { start:0, count:100, search:term, - type:'c', + type:type, } - if(extra_channels) + if(typeof extra_channels !== 'undefined' && extra_channels) postdata['extra_channels[]'] = extra_channels; $.ajax({ @@ -34,19 +34,19 @@ function mysearch(term, callback, backend_url, extra_channels) { // Cache results if we got them all (more information would not improve results) // data.count represents the maximum number of items if(data.items.length < data.count) { - mysearch.cache[term] = data.items; + contact_search.cache[term] = data.items; } callback(data.items); }, }).fail(function () {callback([]); }); // Callback must be invoked even if something went wrong. } -mysearch.cache = {}; +contact_search.cache = {}; -function format(item) { +function contact_format(item) { return "