190 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // ----------------------------------------------
 | |
| // list_topic.js
 | |
| // ----------------------------------------------
 | |
| 
 | |
| // ----------------------------------------------
 | |
| FORUM.TopicListView_cl = Class.create({
 | |
|     // ----------------------------------------------
 | |
|     onClickButtons_p: function (event_opl) {
 | |
|         var action_s = $(event_opl.target).attr("data-action");
 | |
|         switch (action_s) {
 | |
| 
 | |
|             case 'addTopic':
 | |
|                 FORUM.es_o.publish_px('ContentChanged', ['topicEdit', 0]);
 | |
|                 break;
 | |
| 
 | |
| 
 | |
|             case 'discussionList':
 | |
|                 if (this.rowId_s != "") {
 | |
|                     FORUM.es_o.publish_px('ContentChanged', ['discussionList', this.rowId_s]);
 | |
|                     this.updateButtons_p();
 | |
|                 } else {
 | |
|                     alert("Wählen Sie bitte einen Eintrag in der Tabelle aus!");
 | |
|                 }
 | |
|                 break;
 | |
| 
 | |
| 
 | |
|             case 'deleteTopic':
 | |
|                 if (this.rowId_s != "") {
 | |
|                     if (confirm("Soll der Datensatz gelöscht werden?")) {
 | |
|                         var path_s = "/topic/" + this.rowId_s;
 | |
|                         $.ajax({
 | |
|                             context: this,
 | |
|                             // dataType: "json",
 | |
|                             url: path_s,
 | |
|                             type: 'DELETE'
 | |
|                         })
 | |
|                         .done(function (data_opl) {
 | |
|                             $('#t' + this.rowId_s + ' .clName').text('>>Gelöscht durch ' + $('#t' + this.rowId_s + ' .clOwner').text() + '<<');
 | |
|                             $('.clSelected').removeClass('clSelected');
 | |
|                             FORUM.es_o.publish_px('ContentChanged', ['topicList', null]);
 | |
|                             this.initList_p();
 | |
|                         })
 | |
|                         .fail(function (jqXHR_opl, textStatus_spl) {
 | |
|                             alert("[ThemenListe] Fehler bei Anforderung: " + textStatus_spl);
 | |
|                         });
 | |
|                     }
 | |
|                 } else {
 | |
|                     alert("Wählen Sie bitte einen Eintrag in der Tabelle aus!");
 | |
|                 }
 | |
|                 break;
 | |
| 
 | |
|             case 'editTopic':
 | |
|                 if (this.rowId_s != "") {
 | |
|                     FORUM.es_o.publish_px('ContentChanged', ['topicEdit', this.rowId_s]);
 | |
|                 }
 | |
|                 break;
 | |
|         }
 | |
|         event_opl.stopPropagation();
 | |
|         event_opl.preventDefault();
 | |
|     },
 | |
| 
 | |
| 
 | |
|     getContentFromEditForm_p: function () {
 | |
|         return content_o = {
 | |
|             'title': $('#idTopicFormEdit #edittitle_s').text(),
 | |
|             'username': FORUM.user_o.name_s,
 | |
|             'userid': FORUM.user_o.id_s
 | |
|         }
 | |
|     },
 | |
|     storeContentToEditForm_p: function () {
 | |
|         content_s = $('#idTopicList .clSelected #idTopicTitle').text();
 | |
| 
 | |
|         $('#idTopicDetailContentHeader #edittitle_s').text(content_s);
 | |
|     },
 | |
|     onClickList_p: function (event_opl) {
 | |
|         this.initList_p();
 | |
| 
 | |
|         if ($(event_opl.target).parent().attr('id') != 'deleted') {
 | |
|             this.rowId_s = $(event_opl.target).parent().attr('id').substring(1);
 | |
|             $("#t" + this.rowId_s).addClass("clSelected");
 | |
| 
 | |
|             this.updateButtons_p();
 | |
|         }
 | |
|     },
 | |
|     initialize: function () {
 | |
|         var that = this;
 | |
|         $.get('/html/list_topic.html', function (data_spl) {
 | |
|             $("#idContentOuter").append(data_spl);
 | |
|             $("#idTopicListContent").hide();
 | |
|             that.initHandler_p();
 | |
|             that.initList_p();
 | |
|         });
 | |
|     },
 | |
|     render_px: function (data_opl) {
 | |
|         $.ajax({
 | |
|             dataType: "json",
 | |
|             url: '/topic',
 | |
|             type: 'GET'
 | |
|         })
 | |
|         .done($.proxy(this.doRender_p, this))
 | |
|         .fail(function (jqXHR_opl, textStatus_spl) {
 | |
|             alert("[Liste] Fehler bei Anforderung: " + textStatus_spl);
 | |
|         });
 | |
|     },
 | |
|     doRender_p: function (data_opl) {
 | |
|         var unsorted = [];
 | |
|         var sorted = [];
 | |
|         for (key in data_opl['data']) {
 | |
|             if (data_opl['data'][key] != 'nextID') {
 | |
|                 unsorted.push(data_opl['data'][key]['name']);
 | |
|             }
 | |
|         }
 | |
|         unsorted.sort();
 | |
|         for (key in unsorted) {
 | |
|             for (key2 in data_opl['data']) {
 | |
|                 if (key2 != 'nextID' && unsorted[key] == data_opl['data'][key2]['name']) {
 | |
|                     sorted.push(key2);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         data_opl['indices'] = sorted;
 | |
| 
 | |
|         var rows_s = FORUM.tm_o.execute_px('list_topic.tpl', data_opl);
 | |
|         this.initList_p();
 | |
| 
 | |
|         $("#idTopicList tbody tr[class!='listheader']").remove();
 | |
|         $("#idTopicList tbody").append(rows_s);
 | |
|         $("#idTopicListContent").show();
 | |
|         console.log("[TopicListView_cl] doRender");
 | |
|         this.updateButtons_p();
 | |
|     },
 | |
|     initList_p: function () {
 | |
|         $(".clSelected").removeClass("clSelected");
 | |
|         this.rowId_s = '';
 | |
|         this.updateButtons_p();
 | |
|     },
 | |
|     initHandler_p: function () {
 | |
|         $("#idTopicList").on("click", "td", $.proxy(this.onClickList_p, this));
 | |
|         $("#idTopicListContent .clButtonArea").on("click", "button", $.proxy(this.onClickButtons_p, this));
 | |
|     },
 | |
|     enableButtons_p: function () {
 | |
| 
 | |
|         if (FORUM.user_o.loggedin) {
 | |
|             this.enableAddButton_p();
 | |
|         }
 | |
|         if (this.rowId_s != '') {
 | |
|             this.enableViewButton_p();
 | |
|         }
 | |
|         if (this.rowId_s != '' && FORUM.user_o.loggedin && $("#t" + this.rowId_s + " .clOwner").text() == FORUM.user_o.name_s) {
 | |
|             this.enableEditButtons_p();
 | |
|         }
 | |
|     },
 | |
|     enableViewButton_p: function () {
 | |
|         $("#idTopicListContent .clButtonArea button").each(function () {
 | |
|             if ($(this).attr("data-action") == "discussionList") {
 | |
|                 $(this).prop("disabled", false);
 | |
|             }
 | |
|         });
 | |
|     },
 | |
|     enableAddButton_p: function () {
 | |
|         $("#idTopicListContent .clButtonArea button").each(function () {
 | |
|             if ($(this).attr("data-action") == "addTopic") {
 | |
|                 $(this).prop("disabled", false);
 | |
|             }
 | |
|         });
 | |
|     },
 | |
|     enableEditButtons_p: function () {
 | |
|         $("#idTopicListContent .clButtonArea button").each(function () {
 | |
|             if ($(this).attr("data-action") == "deleteTopic" || $(this).attr("data-action") == "editTopic") {
 | |
|                 $(this).prop("disabled", false);
 | |
|             }
 | |
|         });
 | |
|     },
 | |
|     updateButtons_p: function () {
 | |
|         $("#idTopicListContent .clButtonArea button").each(function () {
 | |
|             $(this).prop("disabled", true);
 | |
|         });
 | |
|         this.enableButtons_p();
 | |
|     },
 | |
|     canClose_px: function () {
 | |
|         return true;
 | |
|     },
 | |
|     close_px: function () {
 | |
|         this.updateButtons_p();
 | |
|         $('.clSelected').removeClass("clSelected");
 | |
| 
 | |
|         $("#idTopicListContent").hide();
 | |
|     }
 | |
| });
 | |
| // EOF
 | 
