aboutsummaryrefslogtreecommitdiffstats
path: root/view/js
diff options
context:
space:
mode:
Diffstat (limited to 'view/js')
-rw-r--r--view/js/autocomplete.js208
-rw-r--r--view/js/main.js33
-rw-r--r--view/js/mod_directory.js3
-rw-r--r--view/js/mod_filestorage.js1
-rw-r--r--view/js/mod_photos.js10
5 files changed, 63 insertions, 192 deletions
diff --git a/view/js/autocomplete.js b/view/js/autocomplete.js
index c01ba6990..7c3145769 100644
--- a/view/js/autocomplete.js
+++ b/view/js/autocomplete.js
@@ -1,200 +1,58 @@
/**
- * Friendica people autocomplete
+ * Red people autocomplete
*
- * require jQuery, jquery.textareas
+ * require jQuery, jquery.textcomplete
*/
-
-
-
-function ACPopup(elm,backend_url){
- this.idsel=-1;
- this.element = elm;
- this.searchText="";
- this.ready=true;
- this.kp_timer = false;
- this.url = backend_url;
-
- var w = 530;
- var h = 130;
-
-
- if(typeof elm.editorId == "undefined") {
- style = $(elm).offset();
- w = $(elm).width();
- h = $(elm).height();
- }
- else {
- var container = elm.getContainer();
- if(typeof container != "undefined") {
- style = $(container).offset();
- w = $(container).width();
- h = $(container).height();
- }
- }
-
- if(! w)
- w = 530;
-
- if(! h)
- h = 130;
-
- style.top=style.top+h;
- style.width = w;
- style.position = 'absolute';
- /* style['max-height'] = '150px';
- style.border = '1px solid red';
- style.background = '#cccccc';
-
- style.overflow = 'auto';
- style['z-index'] = '100000';
- */
- style.display = 'none';
-
- this.cont = $("<div class='acpopup'></div>");
- this.cont.css(style);
-
- $("body").append(this.cont);
-}
-ACPopup.prototype.close = function(){
- $(this.cont).remove();
- this.ready=false;
-}
-ACPopup.prototype.search = function(text){
- var that = this;
- this.searchText=text;
- if (this.kp_timer) clearTimeout(this.kp_timer);
- this.kp_timer = setTimeout( function(){that._search();}, 500);
-}
-ACPopup.prototype._search = function(){
- console.log("_search");
- var that = this;
+function mysearch(term, callback, backend_url) {
var postdata = {
start:0,
count:100,
- search:this.searchText,
+ search:term,
type:'c',
}
$.ajax({
type:'POST',
- url: this.url,
+ url: backend_url,
data: postdata,
dataType: 'json',
success:function(data){
- that.cont.html("");
- if (data.tot>0){
- that.cont.show();
- $(data.items).each(function(){
- html = "<img src='{0}' height='16px' width='16px'>{1} ({2})".format(this.photo, this.name, ((this.label) ? this.nick + ' ' + this.label : this.nick) )
- that.add(this.taggable, html, this.nick.replace(' ','') + '+' + this.id + ' - ' + this.link);
- });
- } else {
- that.cont.hide();
- }
- }
- });
-
-}
-ACPopup.prototype.add = function(taggable, label, value){
- var that=this;
- var elm = $("<div class='acpopupitem " + taggable +"' title='"+value+"'>"+label+"</div>");
- elm.click(function(e){
- t = $(this).attr('title').replace(new RegExp(' \- .*'),'');
- if(typeof(that.element.container) === "undefined") {
- el=$(that.element);
- sel = el.getSelection();
- sel.start = sel.start- that.searchText.length;
- el.setSelection(sel.start,sel.end).replaceSelectedText(t+' ').collapseSelection(false);
- that.close();
- }
- else {
- txt = tinyMCE.activeEditor.getContent();
- // alert(that.searchText + ':' + t);
- newtxt = txt.replace('@' + that.searchText, '@' + t + ' ');
- tinyMCE.activeEditor.setContent(newtxt);
- tinyMCE.activeEditor.focus();
- that.close();
- }
- });
- $(this.cont).append(elm);
-}
-ACPopup.prototype.onkey = function(event){
- if (event.keyCode == '13') {
- if(this.idsel>-1) {
- this.cont.children()[this.idsel].click();
- event.preventDefault();
- }
- else
- this.close();
- }
- if (event.keyCode == '38') { //cursor up
- cmax = this.cont.children().size()-1;
- this.idsel--;
- if (this.idsel<0) this.idsel=cmax;
- event.preventDefault();
- }
- if (event.keyCode == '40' || event.keyCode == '9') { //cursor down
- cmax = this.cont.children().size()-1;
- this.idsel++;
- if (this.idsel>cmax) this.idsel=0;
- event.preventDefault();
- }
-
- if (event.keyCode == '38' || event.keyCode == '40' || event.keyCode == '9') {
- this.cont.children().removeClass('selected');
- $(this.cont.children()[this.idsel]).addClass('selected');
- }
-
- if (event.keyCode == '27') { //ESC
- this.close();
- }
+ callback(data.items);
+ },
+ }).fail(function () {callback([]); }); // Callback must be invoked even if something went wrong.
}
-function ContactAutocomplete(element,backend_url){
- this.pattern=/@(\!*)([^ \n]+)$/;
- this.popup=null;
- var that = this;
-
- $(element).unbind('keydown');
- $(element).unbind('keyup');
-
- $(element).keydown(function(event){
- if (that.popup!==null) that.popup.onkey(event);
- });
-
- $(element).keyup(function(event){
- cpos = $(this).getSelection();
- if (cpos.start==cpos.end){
- match = $(this).val().substring(0,cpos.start).match(that.pattern);
- if (match!==null){
- if (that.popup===null){
- that.popup = new ACPopup(this, backend_url);
- }
- if (that.popup.ready && match[2]!==that.popup.searchText) that.popup.search(match[2]);
- if (!that.popup.ready) that.popup=null;
-
- } else {
- if (that.popup!==null) {that.popup.close(); that.popup=null;}
- }
-
-
- }
- });
-
+function format(item) {
+ return "<div class='{0}'><img src='{1}'>{2} ({3})</div>".format(item.taggable, item.photo, item.name, ((item.label) ? item.nick + ' ' + item.label : item.nick) )
}
+function replace(item) {
+ // $2 ensures that prefix (@,@!) is preserved
+ return '$1$2'+item.nick.replace(' ','') + '+' + item.id;
+}
/**
* jQuery plugin 'contact_autocomplete'
*/
(function( $ ){
- $.fn.contact_autocomplete = function(backend_url) {
- this.each(function(){
- new ContactAutocomplete(this, backend_url);
- });
- };
-})( jQuery );
-
+ $.fn.contact_autocomplete = function(backend_url) {
+ // Autocomplete contacts
+ contacts = {
+ match: /(^|\s)(@\!*)([^ \n]+)$/,
+ index: 3,
+ search: function(term, callback) { mysearch(term, callback, backend_url); },
+ replace: replace,
+ template: format,
+ }
-
+ smilies = {
+ match: /(^|\s)(:[a-z]{2,})$/,
+ index: 2,
+ search: function(term, callback) { $.getJSON('/smilies/json').done(function(data) { callback($.map(data, function(entry) { return entry['text'].indexOf(term) === 0 ? entry : null })) }) },
+ template: function(item) { return item['icon'] + item['text'] },
+ replace: function(item) { return "$1"+item['text'] + ' '; },
+ }
+ this.textcomplete([contacts,smilies],{className:'acpopup'});
+ };
+})( jQuery );
diff --git a/view/js/main.js b/view/js/main.js
index 04e43f72e..8c48bbb72 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -208,6 +208,7 @@
var pageHasMoreContent = true;
var updateCountsOnly = false;
var divmore_height = 400;
+ var last_filestorage_id = null;
$(function() {
$.ajaxSetup({cache: false});
@@ -437,6 +438,8 @@ function updatePageItems(mode,data) {
pageHasMoreContent = false;
}
+ collapseHeight();
+
}
@@ -465,7 +468,7 @@ function updateConvItems(mode,data) {
$('#' + prev).after($(this));
if(isVisible)
showHideComments(itmId);
- $(".autotime").timeago();
+ $(".autotime",this).timeago();
}
else {
$('img',this).each(function() {
@@ -476,7 +479,7 @@ function updateConvItems(mode,data) {
$('#' + ident).replaceWith($(this));
if(isVisible)
showHideComments(itmId);
- $(".autotime").timeago();
+ $(".autotime",this).timeago();
}
prev = ident;
});
@@ -507,7 +510,7 @@ function updateConvItems(mode,data) {
$('#threads-end').before($(this));
if(isVisible)
showHideComments(itmId);
- $(".autotime").timeago();
+ $(".autotime",this).timeago();
}
else {
$('img',this).each(function() {
@@ -518,7 +521,7 @@ function updateConvItems(mode,data) {
$('#' + ident).replaceWith($(this));
if(isVisible)
showHideComments(itmId);
- $(".autotime").timeago();
+ $(".autotime",this).timeago();
}
});
@@ -552,7 +555,7 @@ function updateConvItems(mode,data) {
$('#' + prev).after($(this));
if(isVisible)
showHideComments(itmId);
- $(".autotime").timeago();
+ $(".autotime",this).timeago();
}
prev = ident;
@@ -592,7 +595,7 @@ function updateConvItems(mode,data) {
function collapseHeight() {
- $(".wall-item-body").each(function() {
+ $(".wall-item-body, .contact-info").each(function() {
if($(this).height() > divmore_height + 10) {
if(! $(this).hasClass('divmore')) {
$(this).divgrow({ initialHeight: divmore_height, moreText: aStr['divgrowmore'], lessText: aStr['divgrowless'], showBrackets: false });
@@ -840,6 +843,19 @@ function updateConvItems(mode,data) {
});
}
+ function filestorage(event,nick,id) {
+ $('#cloud-index-' + last_filestorage_id).removeClass('cloud-index-active');
+ $('#perms-panel-' + last_filestorage_id).hide().html('');
+ $('#file-edit-' + id).spin('tiny');
+ delete acl;
+ $.get('filestorage/' + nick + '/' + id + '/edit', function(data) {
+ $('#cloud-index-' + id).addClass('cloud-index-active');
+ $('#perms-panel-' + id).html(data).show();
+ $('#file-edit-' + id).spin(false);
+ last_filestorage_id = id;
+ });
+ }
+
function post_comment(id) {
unpause();
commentBusy = true;
@@ -903,7 +919,7 @@ function updateConvItems(mode,data) {
function preview_post() {
$("#jot-preview").val("1");
$("#jot-preview-content").show();
- tinyMCE.triggerSave();
+// tinyMCE.triggerSave();
$.post(
"item",
$("#profile-jot-form").serialize(),
@@ -1020,6 +1036,8 @@ function fcFileBrowser (field_name, url, type, win) {
}
function setupFieldRichtext(){
+ return;
+/*
tinyMCE.init({
theme : "advanced",
mode : "specific_textareas",
@@ -1043,6 +1061,7 @@ function setupFieldRichtext(){
theme_advanced_path : false,
file_browser_callback : "fcFileBrowser",
});
+*/
}
diff --git a/view/js/mod_directory.js b/view/js/mod_directory.js
index 291734b4f..74c8b414d 100644
--- a/view/js/mod_directory.js
+++ b/view/js/mod_directory.js
@@ -6,3 +6,6 @@ function dirdetails(hash) {
}
+$(document).ready(function() {
+ collapseHeight();
+}); \ No newline at end of file
diff --git a/view/js/mod_filestorage.js b/view/js/mod_filestorage.js
index 88c1cf7d8..bee37767f 100644
--- a/view/js/mod_filestorage.js
+++ b/view/js/mod_filestorage.js
@@ -13,4 +13,5 @@ $(document).ready(function() {
}
}).trigger('change');
+
});
diff --git a/view/js/mod_photos.js b/view/js/mod_photos.js
index 8b7706f16..0a64f8102 100644
--- a/view/js/mod_photos.js
+++ b/view/js/mod_photos.js
@@ -3,16 +3,6 @@ var ispublic = aStr['everybody'];
$(document).ready(function() {
- $("a#photos-upload-perms-menu").colorbox({
- 'inline' : true,
- 'transition' : 'elastic'
- });
-
- $("a#settings-default-perms-menu").colorbox({
- 'inline' : true,
- 'transition' : 'elastic'
- });
-
var a;
a = $("#photo-edit-newtag").autocomplete({
serviceUrl: baseurl + '/acl',