diff --git a/js/app.js b/js/app.js index 9c5ea23b..f54a35c0 100644 --- a/js/app.js +++ b/js/app.js @@ -22,7 +22,7 @@ } /** - * @namespace OCA.Files.App + * @namespace OCA.Bookmarks.App */ OCA.Bookmarks.App = { @@ -56,6 +56,11 @@ */ tagFilterView: null, + /** + * @member OCA.Bookmarks.SettinsView + */ + settingsView: null, + /** * Initializes the bookmarks app */ @@ -78,6 +83,11 @@ id: 'tagitManager' }); + this.settingsView = new OCA.Bookmarks.SettingsView({ + el: '#app-settings', + id: 'appSettings' + }); + this.allTagsCollection.fetch(); console.warn('INiT DONE'); } diff --git a/js/bookmarks.js b/js/bookmarks.js index 703218e9..1753ffc4 100644 --- a/js/bookmarks.js +++ b/js/bookmarks.js @@ -6,15 +6,7 @@ var ajaxCallCount = 0; $(document).ready(function () { watchUrlField(); - $('#bm_import').change(attachSettingEvent); $('#add_url').on('keydown keyup change click', watchUrlField); - $('#app-settings').on('click keydown', toggleSettings); - $('#bm_export').click(exportBm); - $('#emptycontent-setting').click(function () { - if (!$('#app-settings').hasClass('open')) { - $('#app-settings').click(); - } - }); $('.bookmarks_list').scroll(updateOnBottom).empty(); $('.navigationAllBookmarks').click(resetTagFilter); @@ -57,12 +49,6 @@ function updateLoadingAnimation() { } } -function watchClickInSetting(e) { - if ($('#app-settings').find($(e.target)).length === 0) { - toggleSettings(); - } -} - function checkURL(url) { if (url.substring(0, 3) === "htt") { return url; @@ -70,16 +56,6 @@ function checkURL(url) { return "http://" + url; } -function toggleSettings() { - if ($('#app-settings').hasClass('open')) { //Close - $('#app-settings').switchClass("open", ""); - $('body').unbind('click', watchClickInSetting); - } - else { - $('#app-settings').switchClass("", "open"); - $('body').bind('click', watchClickInSetting); - } -} function addFilterTag(event) { event.preventDefault(); $('#tag_filter input').tagit('createTag', $(this).text()); diff --git a/js/settings.js b/js/settings.js deleted file mode 100644 index 226c84fe..00000000 --- a/js/settings.js +++ /dev/null @@ -1,63 +0,0 @@ -function attachSettingEvent(event) { - event.preventDefault(); - fileUpload($(this).closest('form'), $('#upload')); -} - -function exportBm() { - window.location = $(this).attr('href'); -} - -function fileUpload(form, resultDiv) { - - var uploadEventHandler = function () { - var data = {}; - try { - data = $.parseJSON(iframe.contents().text()); - } catch (e) { - } - if (!data) { - resultDiv.text(t('bookmark', 'Import error')); - return; - } - if (data.status == 'error') { - var list = $("").addClass('setting_error_list'); - console.log(data); - $.each(data.data, function (index, item) { - list.append($("
  • ").text(item)); - }); - resultDiv.html(list); - } else { - resultDiv.text(t('bookmark', 'Import completed successfully.')); - getBookmarks(); - } - }; - - // Create the iframe... - var iframe; - if ($('#upload_iframe').length === 1) - iframe = $('#upload_iframe'); - else { - iframe = $('').attr({ - id: 'upload_iframe', - name: 'upload_iframe', - width: '0', - height: '0', - border: '0', - style: 'display:none' - }).bind('load', uploadEventHandler); - form.append(iframe); - } - - // Set properties of form... - form.attr({ - target: 'upload_iframe', - method: 'post', - enctype: 'multipart/form-data', - encoding: 'multipart/form-data' - }); - - // Submit the form... - form.submit(); - - resultDiv.text(t('bookmark', 'Uploading...')); -} \ No newline at end of file diff --git a/js/settingsView.js b/js/settingsView.js new file mode 100644 index 00000000..59f4fd94 --- /dev/null +++ b/js/settingsView.js @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2015 + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + +(function() { + + var SettingsView = OC.Backbone.View.extend({ + + initialize: function() { + view = this; + + $('#firstrun_setting').click(function () { + if (!view.$el.hasClass('open')) { + view.$el.find('.settings-button').click(); + } + }); + + $('#bm_import').change(function(event){ + event.preventDefault(); + view.import(view, $(this).closest('form')); + }); + + $('#bm_export').on('click', view.export); + }, + + export: function() { + window.location = $(this).attr('href'); + }, + + import: function(view, $form) { + var iframe; + if ($('#upload_iframe').length === 1) + iframe = $('#upload_iframe'); + else { + iframe = $('').attr({ + id: 'upload_iframe', + name: 'upload_iframe', + width: '0', + height: '0', + border: '0', + class: 'hidden' + }).on('load', view.importHandler); + $form.append(iframe); + } + + $form.attr({ + target: 'upload_iframe', + method: 'post', + enctype: 'multipart/form-data', + encoding: 'multipart/form-data' + }); + + $form.submit(); + }, + + importHandler: function () { + var $iframe = $(this); + var data = {}; + try { + data = $.parseJSON($iframe.contents().text()); + } catch (e) { + } + if (!data) { + OC.Notification.showTemporary(t('bookmark', 'Import error')); + return; + } + if (data.status == 'error') { + var list = $("").addClass('setting_error_list'); + console.warn(data); + $.each(data.data, function (index, item) { + list.append($("
  • ").text(item)); + }); + OC.Notification.showTemporary(list, {isHTML: true}); + } else { + OC.Notification.showTemporary(t('bookmark', 'Import completed successfully.')); + //FIXME resolve getBookmarks(), empty bookmarkslist first + getBookmarks(); + } + } + + }); + + OCA.Bookmarks = OCA.Bookmarks || {}; + OCA.Bookmarks.SettingsView = SettingsView; +})(); diff --git a/templates/main.php b/templates/main.php index 25e328e9..be7bb9be 100644 --- a/templates/main.php +++ b/templates/main.php @@ -6,9 +6,9 @@ script('bookmarks', 'tagModel'); script('bookmarks', 'tagCollection'); script('bookmarks', 'tagListView'); script('bookmarks', 'tagFilterView'); +script('bookmarks', 'settingsView'); script('bookmarks', 'app'); -script('bookmarks', 'settings'); script('bookmarks', 'bookmarks'); style('bookmarks', 'bookmarks');