diff options
Diffstat (limited to 'resources/assets/javascripts/lib/forum.js')
| -rw-r--r-- | resources/assets/javascripts/lib/forum.js | 853 |
1 files changed, 0 insertions, 853 deletions
diff --git a/resources/assets/javascripts/lib/forum.js b/resources/assets/javascripts/lib/forum.js deleted file mode 100644 index d7a625b..0000000 --- a/resources/assets/javascripts/lib/forum.js +++ /dev/null @@ -1,853 +0,0 @@ -import { $gettext } from "./gettext"; -import eventBus from "./event-bus.ts"; - -eventBus.on('studip:set-locale', () => { - Forum.warning_text = $gettext('Wenn Sie die Seite verlassen, gehen ihre Änderungen verloren!'); -}); - -const Forum = { - confirmDialog: null, - current_area_id: null, - current_category_id: null, - seminar_id: null, - warning_text: 'Wenn Sie die Seite verlassen, gehen ihre Änderungen verloren!', - clipboard: {}, - - getTemplate: _.memoize(function(name) { - return _.template(jQuery("script." + name).html()); - }), - - init: function () { - jQuery('html').addClass('forum'); - - // make categories and areas sortable - jQuery('#sortable_areas').sortable({ - axis: 'y', - items: ">*.movable", - handle: 'caption', - stop: function () { - var categories = {}; - categories.categories = {}; - jQuery(this).find('table').each(function () { - var name = jQuery(this).data('category-id'); - categories.categories[name] = name; - }); - - jQuery.ajax({ - type: 'POST', - url: STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/savecats?cid=' + STUDIP.Forum.seminar_id), - data: categories - }); - } - }); - - jQuery('tbody.sortable').sortable({ - axis: 'y', - items: ">*:not(.sort-disabled)", - connectWith: 'tbody.sortable', - handle: '.drag-handle', - helper: function (e, ui) { - ui.children().each(function () { - jQuery(this).width(jQuery(this).width()); - }); - return ui; - }, - - stop: function () { - STUDIP.Forum.saveAreaOrder(); - } - }); - - STUDIP.Forum.confirmDialog = STUDIP.Forum.getTemplate('confirm_dialog'); - - STUDIP.Forum.attachEventHandlers(); - }, - - approveDelete: function () { - if (STUDIP.Forum.current_area_id) { - // hide the area in the dom - jQuery('tr[data-area-id=' + STUDIP.Forum.current_area_id + ']').remove(); - STUDIP.Forum.closeDialog(); - - // ajax call to make the deletion permanent - jQuery.ajax(STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/delete_entry/' - + STUDIP.Forum.current_area_id + '?cid=' + STUDIP.Forum.seminar_id), { - method: 'post', - data: {'security_token' : STUDIP.CSRF_TOKEN.value}, - success: function (html) { - jQuery('#message_area').html(html); - } - }); - - STUDIP.Forum.current_area_id = null; - } - - if (STUDIP.Forum.current_category_id) { - // hide the table in the dom - jQuery('table[data-category-id=' + STUDIP.Forum.current_category_id + ']').fadeOut(); - STUDIP.Forum.closeDialog(); - - // move all areas to the default category - jQuery('table[data-category-id=' + STUDIP.Forum.current_category_id + '] tr.movable').each(function () { - jQuery('table[data-category-id=' + STUDIP.Forum.seminar_id + ']').append(jQuery(this)); - }); - - // ajax call to make the deletion permanent - jQuery.ajax(STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/remove_category/' - + STUDIP.Forum.current_category_id + '?cid=' + STUDIP.Forum.seminar_id), { - method: 'post', - data: {'security_token' : STUDIP.CSRF_TOKEN.value}, - success: function (html) { - jQuery('#message_area').html(html); - } - }); - - STUDIP.Forum.current_category_id = null; - } - }, - - deleteCategory: function (category_id) { - STUDIP.Forum.showDialog($gettext('Sind sie sicher, dass Sie diese Kategorie entfernen möchten? ') - + $gettext('Alle Bereiche werden dann nach "Allgemein" verschoben!'), - 'javascript:STUDIP.Forum.approveDelete()', - 'table[data-category-id=' + category_id +'] td.areaentry'); - - STUDIP.Forum.current_category_id = category_id; - }, - - editCategoryName: function (category_id) { - var template = STUDIP.Forum.getTemplate('edit_category'); - - // remove any other open edit fields before adding a new one - jQuery('table[data-category-id=' + category_id + '] span.edit_category').remove(); - - jQuery('table[data-category-id=' + category_id + '] span.category_name').hide() - .parent().append(template({ - category_id : category_id, - name : jQuery('table[data-category-id=' + category_id + '] span.category_name').text().trim() - })); - // jQuery('table[data-category-id=' + category_id + '] span.heading_edit').show(); - }, - - cancelEditCategoryName: function (category_id) { - jQuery('table[data-category-id=' + category_id + '] span.edit_category').remove(); - jQuery('table[data-category-id=' + category_id + '] span.category_name').show(); - - // reset the input field with the unchanged name - jQuery('table[data-category-id=' + category_id + '] span.heading_edit input[type=text]').val( - jQuery('table[data-category-id=' + category_id + '] span.category_name').text().trim() - ); - }, - - saveCategoryName: function (category_id) { - var name = {}; - name.name = jQuery('table[data-category-id=' + category_id + '] span.edit_category input[type=text]').val(); - - if (!jQuery.trim(name.name).length) { - jQuery('table[data-category-id=' + category_id + '] span.edit_category input[type=text]').val(''); - return; - } - - // display the new name immediately - jQuery('table[data-category-id=' + category_id + '] span.category_name').text(name.name); - - jQuery('table[data-category-id=' + category_id + '] span.edit_category').remove(); - jQuery('table[data-category-id=' + category_id + '] span.category_name').show(); - - jQuery.ajax(STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/edit_category/' + category_id + '?cid=' + STUDIP.Forum.seminar_id), { - type: 'POST', - data: name - }); - }, - - saveAreaOrder: function() { - // iterate over each category and get the areas there - var areas = {}; - areas.areas = {}; - jQuery('#sortable_areas').find('table').each(function () { - var category_id = jQuery(this).data('category-id'); - - areas.areas[category_id] = {}; - - jQuery(this).find('tr').each(function () { - var area_id = jQuery(this).data('area-id'); - areas.areas[category_id][area_id] = area_id; - }); - }); - - jQuery.ajax({ - type: 'POST', - url: STUDIP.URLHelper.getURL('dispatch.php/course/forum/area/save_order?cid=' + STUDIP.Forum.seminar_id), - data: areas - }); - }, - - deleteArea: function (element, area_id) { - STUDIP.Forum.showDialog($gettext('Sind sie sicher, dass Sie diesen Bereich löschen möchten? ') - + $gettext('Es werden auch alle Beiträge in diesem Bereich gelöscht!'), - 'javascript:STUDIP.Forum.approveDelete()', - 'tr[data-area-id=' + area_id +'] td.areaentry'); - - STUDIP.Forum.current_area_id = area_id; - }, - - addArea: function (category_id) { - var template = STUDIP.Forum.getTemplate('add_area'); - - this.cancelAddArea(); - - jQuery('table[data-category-id=' + category_id + '] tr.add_area').hide(); - - $(template({ - category_id : category_id, - })).appendTo('table[data-category-id=' + category_id + ']'); - - // #FIXME: there should be a better way to initialize a single form - STUDIP.Forms.initialize(); - }, - - doAddArea: function() { - // store the area only if the validity check has passed - var values = $(this).serializeObject(); - - // disable submit and cancel buttons, there is no turning back now - $('.button', this).prop('disabled', true); - - jQuery.ajax(STUDIP.URLHelper.getURL('dispatch.php/course/forum/area/add/' + values.category_id + '?cid=' + STUDIP.Forum.seminar_id), { - type: 'POST', - data: values, - success: function(data) { - // remove the add-form and enable the addition of another area - $('table[data-category-id=' + values.category_id +'] tr.new_area').remove(); - $('table[data-category-id=' + values.category_id +'] tr.add_area').show(); - - // insert the new area at the end of the list (more precisely: add the exact position where the add-form has been) - $(data).appendTo('table[data-category-id=' + values.category_id + ']'); - - STUDIP.Forum.saveAreaOrder(); - } - }); - - return false; - }, - - cancelAddArea: function () { - jQuery('tr.new_area').remove(); - jQuery('tr.add_area').show(); - }, - - editArea: function (area_id) { - - var template = STUDIP.Forum.getTemplate('edit_area'); - - // disable iconbar - STUDIP.ActionMenu.closeAll(); - jQuery('tr[data-area-id=' + area_id + '] .action-menu').hide(); - - // show edit form - jQuery('tr[data-area-id=' + area_id + '] span.areadata').hide() - .parent().append(template({ - area_id : area_id, - name : jQuery('tr[data-area-id=' + area_id + '] span.areaname').text().trim(), - content : jQuery('tr[data-area-id=' + area_id + '] div.areacontent').data('content') - })); - }, - - cancelEditArea: function (area_id) { - jQuery('tr[data-area-id=' + area_id + '] span.edit_area').remove(); - jQuery('tr[data-area-id=' + area_id + '] span.areadata').show(); - - // enable iconbar - jQuery('tr[data-area-id=' + area_id + '] .action-menu').show(); - }, - - saveArea: function (area_id) { - var name = {}; - name.name = jQuery('tr[data-area-id=' + area_id + '] span.edit_area input[type=text]').val(); - name.content = jQuery('tr[data-area-id=' + area_id + '] span.edit_area textarea').val(); - - // display the new name immediately - jQuery('tr[data-area-id=' + area_id + '] span.areaname').text(name.name); - - // store the modified raw-content used for possible subsequent edits - jQuery('tr[data-area-id=' + area_id + '] div.areacontent').data('content', name.content); - - // store the modified area and get formatted content-text from server - jQuery.ajax(STUDIP.URLHelper.getURL('dispatch.php/course/forum/area/edit/' + area_id + '?cid=' + STUDIP.Forum.seminar_id), { - type: 'POST', - data: name, - success: function(data) { - // shorten the description to 150 chars max - if (data.content.length > 150) { - jQuery('tr[data-area-id=' + area_id + '] div.areacontent').text(data.content.substr(0, 150)).append('…'); - } else { - jQuery('tr[data-area-id=' + area_id + '] div.areacontent').text(data.content); - } - - jQuery('tr[data-area-id=' + area_id + '] span.areaname_edit').hide(); - jQuery('tr[data-area-id=' + area_id + '] span.areaname').parent().parent().show(); - - // remove edit form - jQuery('tr[data-area-id=' + area_id + '] span.edit_area').remove(); - - // enable iconbar - jQuery('tr[data-area-id=' + area_id + '] .action-icons').show(); - } - }); - - }, - - saveEntry: function(topic_id) { - var $ = jQuery; - - var spanSelector = 'span[data-edit-topic=' + topic_id +']'; - - var name = $(spanSelector + ' input[name=name]'); - name.data('reset', name.val()); - - var textarea = $(spanSelector + ' textarea[name=content]'); - - // make sure HTML stays HTML - // usually the wysiwyg editor does this automatically, - // but since there is no submit event the editor does not - // get notified - textarea.val(STUDIP.wysiwyg.markAsHtml(textarea.val())); - - // remember current textarea value - textarea.data('reset', textarea.val()); - - jQuery.ajax(STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/update_entry/' + topic_id + '?cid=' + STUDIP.Forum.seminar_id), { - type: 'POST', - data: jQuery('form[data-topicid='+ topic_id +']').serializeObject(), - - error: function(data) { - alert('Server meldet: ' + data.statusText); - }, - - success: function (data) { - var json = jQuery.parseJSON(data); - // set the new name and content - jQuery('span[data-topic-name=' + topic_id +']').html(json.name); - jQuery('span[data-topic-content=' + topic_id +']').html(json.content); - STUDIP.Markup.element('span[data-topic-content=' + topic_id +']'); - - // hide the other stuff - jQuery('span[data-edit-topic=' + topic_id +']').hide(); - jQuery('span[data-show-topic=' + topic_id +']').show(); - - } - }); - }, - - editEntry: function (topic_id) { - jQuery('span[data-edit-topic]').hide(); - jQuery('span[data-show-topic]').show(); - - jQuery('span[data-show-topic=' + topic_id +']').hide(); - jQuery('span[data-edit-topic=' + topic_id +']').show().find('textarea').focus(); - }, - - cancelEditEntry: function (topic_id) { - jQuery('span[data-edit-topic=' + topic_id +'] input[name=name]').val( - jQuery('span[data-edit-topic=' + topic_id +'] input[name=name]').data('reset') - ); - - jQuery('span[data-edit-topic=' + topic_id +'] textarea[name=content]').val( - jQuery('span[data-edit-topic=' + topic_id +'] textarea[name=content]').data('reset') - ); - - jQuery('span[data-edit-topic=' + topic_id +']').hide(); - jQuery('span[data-show-topic=' + topic_id +']').show(); - }, - - newEntry: function() { - jQuery('#new_entry_button').hide(); - - jQuery('body').animate({scrollTop: jQuery('div.forum_new_entry').offset().top - 40}, 'slow'); - jQuery('html').animate({scrollTop: jQuery('div.forum_new_entry').offset().top - 40}, 'slow'); - }, - - cancelNewEntry: function(callback) { - $(window).off('beforeunload'); - - if ($('div.forum_new_entry').length) { - STUDIP.Dialog.confirm( - $gettext('Sind sie sicher, dass Sie ihren bisherigen Beitrag verwerfen wollen?'), - function() { - $('div.forum_new_entry').remove(); - callback(); - }, - function() {} - ); - } else { - callback(); - } - - jQuery('#new_entry_button').show(); - - return false; - }, - - answerEntry: function() { - $(window).on('beforeunload', function() { - return STUDIP.Forum.warning_text; - }); - - if (!$('div[data-id=global]').length) { - STUDIP.Forum.cancelNewEntry(function() { - var tmpl = STUDIP.Forum.getTemplate('new_entry_box'); - jQuery('#new_entry_button').parent().append(tmpl({ - topic_id: 'global' - })); - - STUDIP.Forum.newEntry(); - }); - } - }, - - citeEntry: function(topic_id) { - $(window).on('beforeunload', function() { - return STUDIP.Forum.warning_text; - }); - - /* Only recreate input-form, if it is different than the current one */ - if (!$('div[data-id=' + topic_id + ']').length) { - STUDIP.Forum.cancelNewEntry(function() { - var tmpl = STUDIP.Forum.getTemplate('new_entry_box'); - $('#forumposting_'+ topic_id).parent().append(tmpl({ - topic_id: topic_id - })); - - // watch out for anonymous postings - var anonymous = jQuery('.anonymous_post[data-profile=' + topic_id + ']').length > 0; - - var name = anonymous - ? $gettext('Anonym') - : jQuery('span.username[data-profile=' + topic_id + ']').text().trim(); - - // add content from cited posting in [quote]-tags - var originalContent = jQuery( - 'span[data-edit-topic=' + topic_id +'] textarea[name=content]' - ).val(); - - var content = STUDIP.Forum.quote(originalContent, name); - - var box = jQuery('div.forum_new_entry[data-id=' + topic_id + ']'); - $(box).find('textarea').val(content); - $(box).insertAfter('form[data-topicid=' + topic_id + ']'); - $(box).addClass('cite_box'); - - $(box).find('input[type=hidden][name=parent]').val(topic_id); - - STUDIP.Forum.newEntry(); - }); - } - }, - - quote: function(text, name) { - // If quoting is changed update these functions: - // - StudipFormat::markupQuote - // lib/classes/StudipFormat.php - // - quotes_encode lib/visual.inc.php - // - STUDIP.Forum.citeEntry > quote - // public/plugins_packages/core/Forum/javascript/forum.js - // - studipQuotePlugin > insertStudipQuote - // public/assets/javascripts/ckeditor/plugins/studip-quote/plugin.js - - var author = ''; - if (name) { - var writtenBy = $gettext('%s hat geschrieben:'); - author = '<div class="author">' - + writtenBy.replace('%s', name) - + '</div>'; - } - return '<blockquote>' + author + text + '</blockquote><p> </p>'; - }, - - forwardEntry: function(topic_id) { - var title = 'WG: ' + jQuery('span[data-edit-topic=' + topic_id +'] [name=name]').attr('value'); - var content = jQuery('span[data-edit-topic=' + topic_id +'] textarea[name=content]').val().trim(); - var is_html = STUDIP.wysiwyg.isHtml(content); - var nl = is_html ? '<br>' : "\n"; - var text = $gettext('Die Senderin/der Sender dieser Nachricht möchte Sie auf den folgenden Beitrag aufmerksam machen. ') - + nl + nl - + $gettext('Link zum Beitrag: ') - + nl - + STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/index/' - + topic_id + '?cid=' + STUDIP.Forum.seminar_id + '&again=yes#' + topic_id) - + nl + nl - + content - + nl + nl; - if (is_html) { - text = STUDIP.wysiwyg.markAsHtml(text); - } - STUDIP.Dialog.fromURL(STUDIP.URLHelper.getURL('dispatch.php/messages/write'), { - data: { - default_body: text, - default_subject: title - }, - method: 'post' - }); - }, - - postToUrl: function(path, params) { - // create a form - var form = jQuery('<form method="post" action="' + path + '" style="display: none">'); - for (var key in params) { - jQuery(form).append('<textarea name="' + key + '">' + params[key] + '</textarea>'); - } - - // append it to the body-element - jQuery('body').append(form); - - // submit it - jQuery(form).submit(); - }, - - moveThreadDialog: function (topic_id) { - var element = jQuery('tr[data-area-id=' + topic_id +'] td.areaentry').addClass('selected'), - content = jQuery('#dialog_' + topic_id).html(); - - STUDIP.Dialog.show(content, { - title: $gettext('Beitrag verschieben'), - width: 400, - height: 400, - origin: element - }); - - element.on('dialog-close', function () { - $(this).removeClass('selected').off('dialog-close'); - }); - }, - - loadAction: function(element, action) { - jQuery(element).load(STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/' - + action + '?cid=' + STUDIP.Forum.seminar_id)) - }, - - showDialog: function(question, confirm, highlight_element) { - if (highlight_element !== null) { - // STUDIP.Forum.highlightedElement = highlight_element; - jQuery(highlight_element).addClass('selected'); - } - - jQuery('body').append(STUDIP.Forum.confirmDialog({ - question: question, - confirm: confirm - })); - }, - - closeDialog: function() { - jQuery('#forum td.selected').removeClass('selected'); - jQuery('div.modaloverlay').remove(); - }, - - setFavorite: function(topic_id) { - jQuery('#favorite_' + topic_id).load(STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/set_favorite/' - + topic_id + '?cid=' + STUDIP.Forum.seminar_id)); - jQuery('a.marked[data-topic-id=' + topic_id +']').show(); - return false; - }, - - unsetFavorite: function(topic_id) { - jQuery('#favorite_' + topic_id).load(STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/unset_favorite/' - + topic_id + '?cid=' + STUDIP.Forum.seminar_id)); - jQuery('a.marked[data-topic-id=' + topic_id +']').hide(); - return false; - }, - - adminLoadChilds: function(topic_id) { - // if there is already data present, remove it (to "close" the current node in the tree) - if (jQuery('li[data-id=' + topic_id + '] ul').length) { - jQuery('li[data-id=' + topic_id + '] ul').remove(); - return; - } - - // jQuery('li[data-id=' + topic_id + '] > a.tooltip2').showAjaxNotification(); - - // load children from server and show them - jQuery.ajax(STUDIP.URLHelper.getURL('dispatch.php/course/forum/admin/childs/' + topic_id), { - dataType: 'html', - success: function(response) { - jQuery('li[data-id=' + topic_id + ']').append(response); - - // jQuery('li[data-id=' + topic_id + '] a.tooltip2').hideAjaxNotification(); - - // clean up icons - STUDIP.Forum.checkCutPaste(); - } - }); - }, - - cut : function(topic_id) { - // remove all childs from clipboard - jQuery('li[data-id=' + topic_id +'] li.selected').each(function(){ - var tid = jQuery(this).data('id'); - jQuery(this).removeClass('selected'); - delete STUDIP.Forum.clipboard[tid]; - }); - - // add this element to clipboard and mark it as selected - jQuery('li[data-id=' + topic_id +']').addClass('selected'); - jQuery('li[data-id=' + topic_id + '] > a[data-role=cut]').hide(); - jQuery('li[data-id=' + topic_id + '] > a[data-role=cancel_cut]').show(); - STUDIP.Forum.clipboard[topic_id] = topic_id; - - // iterate over every li and remove the paste icon from all li's in the clipboard' - jQuery('#forum li').each(function() { - var tid = jQuery(this).data('id'); - if (tid !== null && !STUDIP.Forum.clipboard[tid]) { - jQuery(this).find('a[data-role=paste]').show(); - } else { - jQuery(this).find('a[data-role=paste]').hide(); - } - }); - - // clean up icons (if necessary) - STUDIP.Forum.checkCutPaste(); - }, - - cancelCut: function(topic_id) { - // remove the selected element from the clipboard and unmark it - jQuery('li[data-id=' + topic_id +']').removeClass('selected'); - jQuery('li[data-id=' + topic_id + '] a[data-role=cut]').show(); - jQuery('li[data-id=' + topic_id + '] > a[data-role=cancel_cut]').hide(); - - delete STUDIP.Forum.clipboard[topic_id]; - - // all children are now valid paste-targets again - jQuery('li[data-id=' + topic_id + '] a[data-role=paste]').show(); - - if (Object.keys(STUDIP.Forum.clipboard).length == 0) { - jQuery('a[data-role=paste]').hide(); - } - - // clean up icons (if necessary) - STUDIP.Forum.checkCutPaste(); - }, - - paste: function(topic_id) { - // jQuery('li[data-id=' + topic_id + '] > a.tooltip2').showAjaxNotification(); - - jQuery.ajax(STUDIP.URLHelper.getURL('dispatch.php/course/forum/admin/move/' + topic_id), { - data : { - 'topics' : STUDIP.Forum.clipboard - }, - type: 'POST', - success: function() { - // jQuery('li[data-id=' + topic_id + '] a.tooltip2').hideAjaxNotification(); - - // remove all pasted entries, they are now elsewhere - for (var id in STUDIP.Forum.clipboard) { - jQuery('li[data-id=' + id + ']').remove(); - } - - // reload childs after succesful moving - jQuery('li[data-id=' + topic_id + '] ul').remove(); - STUDIP.Forum.adminLoadChilds(topic_id); - // reset icons after succesful moving - STUDIP.Forum.clipboard = {}; - jQuery('a[data-role=cut]').show(); - jQuery('a[data-role=cancel_cut]').hide(); - jQuery('a[data-role=paste]').hide(); - jQuery('li.selected').removeClass('selected'); - } - }); - }, - - checkCutPaste: function() { - jQuery('li.selected').find('li').each(function(){ - var tid = jQuery(this).data('id'); - delete STUDIP.Forum.clipboard[tid]; - - jQuery(this).removeClass('selected'); - jQuery(this).find('a[data-role=cut]').hide(); - jQuery(this).find('a[data-role=cancel_cut]').hide(); - jQuery(this).find('a[data-role=paste]').hide(); - }); - }, - - wrapActionElementText: function (element) { - if (jQuery('span', element).length > 0) { - return; - } - var img = jQuery('img', element).remove(); - var text = jQuery(element).text().trim(); - var span = jQuery('<span>').text(text); - - $(element).empty().append(img, span); - }, - - openThreadFromOverview: function(topic_id, parent_topic_id, page) { - var buttonText = $gettext('Thema schließen'); - var element = jQuery('#closeButton-' + topic_id); - - STUDIP.Forum.wrapActionElementText(element); - - jQuery('img', element).attr('src', STUDIP.ASSETS_URL + 'images/icons/blue/lock-locked.svg'); - jQuery('span', element).text(buttonText); - jQuery(element).attr('onclick', 'STUDIP.Forum.closeThreadFromOverview("' + topic_id + '", "' + parent_topic_id + '", ' + page + '); return false;'); - jQuery('#img-locked-' + topic_id).hide(); - - STUDIP.Forum.openThread(topic_id, parent_topic_id, page, false); - - STUDIP.ActionMenu.closeAll(); - }, - - openThreadFromThread: function(topic_id, page) { - var buttonText = $gettext('Thema schließen'); - jQuery('.closeButtons').text(buttonText); - jQuery('.closeButtons').attr('onclick', 'STUDIP.Forum.closeThreadFromThread("' + topic_id + '", ' + page + '); return false;'); - jQuery('.closeButtons').closest("li").css('background-image', "url(" + STUDIP.ASSETS_URL + 'images/icons/blue/lock-locked.svg' + ")"); - jQuery('.hideWhenClosed').show(); - - STUDIP.Forum.openThread(topic_id, topic_id, page, true); - }, - - openThread: function(topic_id, redirect, page, showSuccessMessage) { - jQuery.ajax({ - type: 'GET', - url: STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/open_thread/' + topic_id + '/' + redirect + '/' + page), - success: function(data) { - if (showSuccessMessage == true) { - jQuery('#message_area').html(data); - } - } - }); - - return false; - }, - - closeThreadFromOverview: function(topic_id, parent_topic_id, page) { - var buttonText = $gettext('Thema öffnen'); - var element = jQuery('#closeButton-' + topic_id); - - STUDIP.Forum.wrapActionElementText(element); - - jQuery('img', element).attr('src', STUDIP.ASSETS_URL + 'images/icons/blue/lock-unlocked.svg'); - jQuery('span', element).text(buttonText); - jQuery(element).attr('onclick', 'STUDIP.Forum.openThreadFromOverview("' + topic_id + '", ' + page + '); return false;'); - - jQuery('#img-locked-' + topic_id).show(); - - STUDIP.Forum.closeThread(topic_id, parent_topic_id, page, false); - - STUDIP.ActionMenu.closeAll(); - }, - - closeThreadFromThread: function(topic_id, page) { - var buttonText = $gettext('Thema öffnen'); - jQuery('.closeButtons').text(buttonText); - jQuery('.closeButtons').attr('onclick', 'STUDIP.Forum.openThreadFromThread("' + topic_id + '", '+ page +'); return false;'); - jQuery('.closeButtons').closest("li").css('background-image', "url(" + STUDIP.ASSETS_URL + 'images/icons/blue/lock-unlocked.svg' + ")"); - jQuery('.hideWhenClosed').hide(); - - STUDIP.Forum.cancelNewEntry(); - - STUDIP.Forum.closeThread(topic_id, topic_id, page, true); - }, - - closeThread: function(topic_id, redirect, page, showSuccessMessage) { - - jQuery.ajax({ - type: 'GET', - url: STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/close_thread/' + topic_id + '/' + redirect + '/' + page), - success: function(data) { - if (showSuccessMessage == true) { - jQuery('#message_area').html(data); - } - } - }); - - return false; - }, - - makeThreadStickyFromThread: function(topic_id) { - jQuery.ajax({ - type: 'GET', - url: STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/make_sticky/' + topic_id + '/' + topic_id + '/0'), - success: function(data) { - jQuery('#message_area').html(data); - var linkText = $gettext('Hervorhebung aufheben'); - jQuery('#stickyButton').text(linkText); - jQuery('#stickyButton').attr('onclick', 'STUDIP.Forum.makeThreadUnstickyFromThread("' + topic_id + '"); return false;'); - } - }); - - return false; - }, - - makeThreadUnstickyFromThread: function(topic_id) { - jQuery.ajax({ - type: 'GET', - url: STUDIP.URLHelper.getURL('dispatch.php/course/forum/index/make_unsticky/' + topic_id + '/' + topic_id + '/0'), - success: function(data) { - jQuery('#message_area').html(data); - var linkText = $gettext('Thema hervorheben'); - jQuery('#stickyButton').text(linkText); - jQuery('#stickyButton').attr('onclick', 'STUDIP.Forum.makeThreadStickyFromThread("' + topic_id + '"); return false;'); - } - }); - - return false; - }, - attachEventHandlers: function () { - $(document).on('submit', 'form.add_area_form', STUDIP.Forum.doAddArea); - } -}; - - -// TODO: make TIC and add this to the Stud.IP-Core -/** - * found at stackoverflow.com - * http://stackoverflow.com/questions/946534/insert-text-into-textarea-with-jquery/946556#946556 - */ -jQuery.fn.extend({ - insertAtCaret: function (myValue) { - return this.each(function () { - if (document.selection) { - //For browsers like Internet Explorer - this.focus(); - var sel = document.selection.createRange(); - sel.text = myValue; - this.focus(); - } else if (this.selectionStart || this.selectionStart === '0') { - //For browsers like Firefox and Webkit based - var startPos = this.selectionStart; - var endPos = this.selectionEnd; - var scrollTop = this.scrollTop; - this.value = this.value.substring(0, startPos) + myValue - + this.value.substring(endPos, this.value.length); - this.focus(); - this.selectionStart = startPos + myValue.length; - this.selectionEnd = startPos + myValue.length; - this.scrollTop = scrollTop; - } else { - this.value += myValue; - this.focus(); - } - }); - } -}); - -/** - * Thanks to Tobias Cohen for this function - * http://stackoverflow.com/questions/1184624/convert-form-data-to-js-object-with-jquery - */ -jQuery.fn.serializeObject = function() { - var o = {}; - var a = this.serializeArray(); - jQuery.each(a, function() { - if (o[this.name] !== undefined) { - if (!o[this.name].push) { - o[this.name] = [o[this.name]]; - } - o[this.name].push(this.value || ''); - } else { - o[this.name] = this.value || ''; - } - }); - return o; -}; - -export default Forum; |
