X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/ca2f047d2314a9296af1a3351d9ba8eec99c0ef5..0a2b0284b8fcb5a613f1cc3da59fc637d3033363:/forum/skins/default/media/js/osqa.main.js
diff --git a/forum/skins/default/media/js/osqa.main.js b/forum/skins/default/media/js/osqa.main.js
index 39ddd3b..0cf354f 100644
--- a/forum/skins/default/media/js/osqa.main.js
+++ b/forum/skins/default/media/js/osqa.main.js
@@ -49,19 +49,18 @@ var response_commands = {
}
},
- mark_accepted: function(id) {
- $('.accepted-answer').removeClass('accepted-answer');
- $('.accept-answer.on').removeClass('on');
-
+ mark_accepted: function(id) {
var $answer = $('#answer-container-' + id);
$answer.addClass('accepted-answer');
$answer.find('.accept-answer').addClass('on');
+ $answer.find('.accept-answer').attr('title', $answer.find('.accept-answer').attr('bn:on'));
},
unmark_accepted: function(id) {
var $answer = $('#answer-container-' + id);
$answer.removeClass('accepted-answer');
$answer.find('.accept-answer').removeClass('on');
+ $answer.find('.accept-answer').attr('title', $answer.find('.accept-answer').attr('bn:off'));
},
remove_comment: function(id) {
@@ -72,7 +71,11 @@ var response_commands = {
});
},
- insert_comment: function(post_id, comment_id, comment, username, profile_url, delete_url, edit_url) {
+ award_points: function(id) {
+ alert('ok');
+ },
+
+ insert_comment: function(post_id, comment_id, comment, username, profile_url, delete_url, edit_url, convert_url) {
var $container = $('#comments-container-' + post_id);
var skeleton = $('#new-comment-skeleton-' + post_id).html().toString();
@@ -81,7 +84,8 @@ var response_commands = {
.replace(new RegExp('%USERNAME%', 'g'), username)
.replace(new RegExp('%PROFILE_URL%', 'g'), profile_url)
.replace(new RegExp('%DELETE_URL%', 'g'), delete_url)
- .replace(new RegExp('%EDIT_URL%', 'g'), edit_url);
+ .replace(new RegExp('%EDIT_URL%', 'g'), edit_url)
+ .replace(new RegExp('%CONVERT_URL%', 'g'), convert_url);
$container.append(skeleton);
@@ -121,6 +125,10 @@ var response_commands = {
set_subscription_status: function(text) {
$('.subscription-status').html(text);
+ },
+
+ copy_url: function(url) {
+ $.copy(url);
}
}
@@ -185,10 +193,29 @@ function show_dialog (extern) {
top: options.pos.y,
left: options.pos.x
});
-
+
+ top_position_change = (options.dim.h / 2)
+ left_position_change = (options.dim.w / 2)
+
+ new_top_position = options.pos.y - top_position_change
+ new_left_position = options.pos.x - left_position_change
+
+ if (new_left_position < 0) {
+ left_position_change = 0
+ }
+ if (($(window).scrollTop() - new_top_position) > 0) {
+ top_position_change = 0
+ }
+ if ((options.event.pageY + options.dim.h) > ($(window).height() + $(window).scrollTop())) {
+ top_position_change = options.dim.h
+ }
+ if ((options.event.pageX + options.dim.w) > ($(window).width() + $(window).scrollLeft())) {
+ left_position_change = options.dim.w
+ }
+
$dialog.animate({
- top: "-=" + (options.dim.h / 2),
- left: "-=" + (options.dim.w / 2),
+ top: "-=" + top_position_change,
+ left: "-=" + left_position_change,
width: options.dim.w,
height: options.dim.h
}, 200, function() {
@@ -229,12 +256,11 @@ function show_message(evt, msg, callback) {
});
}
-function load_prompt(evt, url) {
+function load_prompt(evt, el, url) {
$.get(url, function(data) {
- var $dialog = show_dialog({
- html: data,
+ var doptions = {
+ html: data,
extra_class: 'prompt',
- event: evt,
yes_callback: function() {
var postvars = {};
$dialog.find('input, textarea, select').each(function() {
@@ -248,7 +274,13 @@ function load_prompt(evt, url) {
}, 'json');
},
show_no: true
- });
+ }
+
+ if (!el.is('.centered')) {
+ doptions.event = evt;
+ }
+
+ var $dialog = show_dialog(doptions);
});
}
@@ -259,6 +291,8 @@ function process_ajax_response(data, evt, callback) {
} else if (typeof data['commands'] != undefined){
for (var command in data.commands) {
response_commands[command].apply(null, data.commands[command])
+
+
}
if (data['message'] != undefined) {
@@ -294,15 +328,16 @@ $(function() {
$('a.ajax-command').live('click', function(evt) {
if (running) return false;
+ $('.context-menu-dropdown').slideUp('fast');
+
var el = $(this);
if (el.is('.withprompt')) {
- load_prompt(evt, el.attr('href'));
+ load_prompt(evt, el, el.attr('href'));
} else if(el.is('.confirm')) {
- $dialog = show_dialog({
+ var doptions = {
html: messages.confirm,
extra_class: 'confirm',
- event: evt,
yes_callback: function() {
start_command();
$.getJSON(el.attr('href'), function(data) {
@@ -315,7 +350,12 @@ $(function() {
yes_text: messages.yes,
show_no: true,
no_text: messages.no
- });
+ }
+
+ if (!el.is('.centered')) {
+ doptions.event = evt;
+ }
+ var $dialog = show_dialog(doptions);
} else {
start_command();
$.getJSON(el.attr('href'), function(data) {
@@ -335,7 +375,8 @@ $(function() {
$dropdown.slideToggle('fast', function() {
if ($dropdown.is(':visible')) {
$dropdown.one('clickoutside', function() {
- $dropdown.slideUp('fast')
+ if ($dropdown.is(':visible'))
+ $dropdown.slideUp('fast');
});
}
});
@@ -440,7 +481,7 @@ $(function() {
$container.slideDown('slow');
$add_comment_link.fadeOut('slow');
$textarea.focus();
- window.setInterval(function() {
+ interval = window.setInterval(function() {
process_form_changes();
}, 200);
}
@@ -501,11 +542,14 @@ $(function() {
return false;
});
- $cancel.click(function() {
- if (comment_in_form) {
- $comment = $('#comment-' + comment_in_form).slideDown('slow');
+ $cancel.click(function(event) {
+ if (confirm("You will lose all of your changes in this comment. Do you still wish to proceed?")){
+ if (comment_in_form) {
+ $comment = $('#comment-' + comment_in_form).slideDown('slow');
+ }
+ hide_comment_form();
+ cleanup_form();
}
- hide_comment_form();
return false;
});
}
@@ -517,6 +561,39 @@ $(function() {
return false;
});
});
+
+ if ($('#editor').length) {
+ var $editor = $('#editor');
+ var $previewer = $('#previewer');
+ var $container = $('#editor-metrics');
+
+ var initial_whitespace_rExp = /^[^A-Za-zÐ-Яа-Ñ0-9]+/gi;
+ var non_alphanumerics_rExp = rExp = /[^A-Za-zÐ-Яа-Ñ0-9]+/gi;
+ var editor_interval = null;
+
+ $editor.focus(function() {
+ if (editor_interval == null) {
+ editor_interval = window.setInterval(function() {
+ recalc_metrics();
+ }, 200);
+ }
+ });
+
+ function recalc_metrics() {
+ var text = $previewer.text();
+
+ var char_count = text.length;
+ var fullStr = text + " ";
+ var left_trimmedStr = fullStr.replace(initial_whitespace_rExp, "");
+ var cleanedStr = left_trimmedStr.replace(non_alphanumerics_rExp, " ");
+ var splitString = cleanedStr.split(" ");
+ var word_count = splitString.length - 1;
+
+ var metrics = char_count + " " + (char_count == 1 ? messages.character : messages.characters);
+ metrics += " / " + word_count + " " + (word_count == 1 ? messages.word : messages.words);
+ $container.html(metrics);
+ }
+ }
});
//var scriptUrl, interestingTags, ignoredTags, tags, $;
@@ -540,7 +617,8 @@ function pickedTags(){
var call_settings = {
type:'POST',
- url:url
+ url:url,
+ data: ''
};
if (callback !== false){
call_settings.success = callback;
@@ -605,11 +683,11 @@ function pickedTags(){
new_tag.addClass('deletable-tag');
var tag_link = $('');
tag_link.attr('rel','tag');
- tag_link.attr('href', scriptUrl + $.i18n._('tags/') + tagname);
+ tag_link.attr('href', scriptUrl + $.i18n._('tags/') + tagname + '/');
tag_link.html(tagname);
var del_link = $('');
del_link.addClass('delete-icon');
- del_link.attr('src', mediaUrl('/media/images/close-small-dark.png'));
+ del_link.attr('src', mediaUrl('media/images/close-small-dark.png'));
setupTagDeleteEvents(del_link, to_target, tagname, reason, true);
@@ -667,7 +745,7 @@ function pickedTags(){
init: function(){
collectPickedTags();
setupHideIgnoredQuestionsControl();
- $("#interestingTagInput, #ignoredTagInput").autocomplete("/matching_tags/", {
+ $("#interestingTagInput, #ignoredTagInput").autocomplete(messages.matching_tags_url, {
minChars: 1,
matchContains: true,
max: 20,
@@ -675,11 +753,11 @@ function pickedTags(){
multipleSeparator: " "*/
formatItem: function(row, i, max, value) {
- return row[1].split(".")[0] + " (" + row[1].split(".")[1] + ")";
+ return row[1] + " (" + row[2] + ")";
},
formatResult: function(row, i, max, value){
- return row[0];
+ return row[1];
}
});
@@ -846,8 +924,8 @@ var i18nZh = {
'please confirm offensive':"??????????????????????",
'anonymous users cannot flag offensive posts':'???????????',
'cannot flag message as offensive twice':'???????',
- 'flag offensive cap exhausted':'?????????????5??????',
- 'need >15 points to report spam':"??+15??????????",
+ 'flag offensive cap exhausted':'?????????????5?Â??Â???',
+ 'need >15 points to report spam':"??+15??????Â???Â?",
'confirm delete':"?????/????????",
'anonymous users cannot delete/undelete':"???????????????",
'post recovered':"?????????????",
@@ -925,8 +1003,8 @@ var i18nEs = {
'insufficient privilege':'privilegio insuficiente',
'cannot pick own answer as best':'no puede escoger su propia respuesta como la mejor',
'anonymous users cannot select favorite questions':'usuarios anonimos no pueden seleccionar',
- 'please login':'por favor inicie sesión',
- 'anonymous users cannot vote':'usuarios anónimos no pueden votar',
+ 'please login':'por favor inicie sesión',
+ 'anonymous users cannot vote':'usuarios anónimos no pueden votar',
'>15 points requried to upvote': '>15 puntos requeridos para votar positivamente',
'>100 points required to downvote':'>100 puntos requeridos para votar negativamente',
'please see': 'por favor vea',
@@ -934,31 +1012,31 @@ var i18nEs = {
'daily vote cap exhausted':'cuota de votos diarios excedida',
'cannot revoke old vote':'no puede revocar un voto viejo',
'please confirm offensive':"por favor confirme ofensiva",
- 'anonymous users cannot flag offensive posts':'usuarios anónimos no pueden marcar publicaciones como ofensivas',
+ 'anonymous users cannot flag offensive posts':'usuarios anónimos no pueden marcar publicaciones como ofensivas',
'cannot flag message as offensive twice':'no puede marcar mensaje como ofensivo dos veces',
'flag offensive cap exhausted':'cuota para marcar ofensivas ha sido excedida',
'need >15 points to report spam':"necesita >15 puntos para reportar spam",
- 'confirm delete':"¿Está seguro que desea borrar esto?",
- 'anonymous users cannot delete/undelete':"usuarios anónimos no pueden borrar o recuperar publicaciones",
- 'post recovered':"publicación recuperada",
- 'post deleted':"publicación borrada?",
+ 'confirm delete':"¿Está seguro que desea borrar esto?",
+ 'anonymous users cannot delete/undelete':"usuarios anónimos no pueden borrar o recuperar publicaciones",
+ 'post recovered':"publicación recuperada",
+ 'post deleted':"publicación borrada?",
'add comment':'agregar comentario',
- 'community karma points':'reputación comunitaria',
- 'to comment, need':'para comentar, necesita reputación',
+ 'community karma points':'reputación comunitaria',
+ 'to comment, need':'para comentar, necesita reputación',
'delete this comment':'borrar este comentario',
'hide comments':"ocultar comentarios",
'add a comment':"agregar comentarios",
'comments':"comentarios",
- 'confirm delete comment':"¿Realmente desea borrar este comentario?",
+ 'confirm delete comment':"¿Realmente desea borrar este comentario?",
'characters':'caracteres faltantes',
'can write':'tiene ',
'click to close':'haga click para cerrar',
'loading...':'cargando...',
- 'tags cannot be empty':'las etiquetas no pueden estar vacías',
+ 'tags cannot be empty':'las etiquetas no pueden estar vacÃas',
'tablimits info':"hasta 5 etiquetas de no mas de 20 caracteres cada una",
- 'content cannot be empty':'el contenido no puede estar vacío',
+ 'content cannot be empty':'el contenido no puede estar vacÃo',
'content minchars': 'por favor introduzca mas de {0} caracteres',
- 'please enter title':'por favor ingrese un título',
+ 'please enter title':'por favor ingrese un tÃtulo',
'title minchars':"por favor introduzca al menos {0} caracteres",
'delete':'borrar',
'undelete': 'recuperar',
@@ -995,15 +1073,16 @@ var i18n_dict = i18n[i18nLang];
Version 1.0.4
*/(function($){var textarea,staticOffset;var iLastMousePos=0;var iMin=32;var grip;$.fn.TextAreaResizer=function(){return this.each(function(){textarea=$(this).addClass('processed'),staticOffset=null;$(this).wrap('