UNPKG

jive-sdk

Version:

Node.js SDK for Jive Software to assist with the development of add-ons

161 lines (129 loc) 5.92 kB
window.GalleryController = function(container, viewManager) { this.viewManager = viewManager; this.container = container; this.galleryCreate = function () { var galleryModel = new GalleryModel(); var galleryEditView = new GalleryEditView({model:galleryModel, container: this.container }); if ( !$.browser.msie ) { galleryEditView.deactivateIE(); } this.viewManager.showView(galleryEditView); if ( $.browser.msie ) { galleryEditView.setupIE(); } galleryModel.bind("saved", function () { var galleryID = galleryModel.get("id"); var galleryListModel = new GalleryList(); galleryListModel.bind("saved", function () { Backbone.history.navigate('gallery-saved/' + galleryID, true); }); galleryListModel.bind("parsed", function () { galleryListModel.add(galleryID); galleryListModel.save(); }); galleryListModel.fetch(); }); galleryEditView.renderGallery(galleryModel); }; this.galleryEdit = function (galleryID) { var galleryList = new GalleryList(); var galleryModel = new GalleryModel({id:galleryID}); var galleryEditView = new GalleryEditView({model:galleryModel, container: this.container, listModel:galleryList }); galleryList.fetch(); if ( !$.browser.msie ) { galleryEditView.deactivateIE(); } viewManager.showView(galleryEditView); if ( $.browser.msie ) { galleryEditView.setupIE(); } galleryModel.bind('parsed', function (gallery) { galleryEditView.renderGallery(gallery); }); galleryModel.bind("saved", function () { var galleryListModel = new GalleryList(); galleryListModel.bind("saved", function () { Backbone.history.navigate('gallery-saved/' + galleryID, true); }); galleryListModel.bind("parsed", function () { galleryListModel.add(galleryID); galleryListModel.save(); }); galleryListModel.fetch(); }); galleryModel.fetch(); }; this.galleryDelete = function (galleryID) { var galleryModel = new GalleryModel({id:galleryID}); galleryModel.bind("deleted", function () { var galleryListModel = new GalleryList(); galleryListModel.bind("saved", function () { Backbone.history.navigate('main', true); }); galleryListModel.bind("parsed", function () { galleryListModel.subtract(galleryID); galleryListModel.save(); }); galleryListModel.fetch(); }); galleryModel.fetch( { postSuccess: function(model) { model.destroy(); }, error: function(model, response) { console.log("Error fetching Gallery Model to be deleted", response); } }); }; this.galleryDrop = function (galleryID) { var model = new GalleryModel({id:galleryID}); model.fetch({postSuccess:function () { var galleryOwnerId = model.get("userid"); // xxxx todo move this function getImageUrl(relativeUrl, proxied) { var gadgetURL = _args()["url"]; var baseURL = gadgetURL.replace(/[a-zA-Z0-9_]+\.xml(\?.*)?/, ""); return proxied ? gadgets.io.getProxyUrl(baseURL + relativeUrl) : baseURL + relativeUrl; } var title = model.get("title"); osapi.jive.corev3.people.get({id:"@me"}).execute(function (result) { var id = result.id; var outgoing = { display:{ "type":"text", "label":"View " + title }, target:{ "type":"embed", "view":"show", "context":{ "galleryID":galleryID, "userid": galleryOwnerId } } }; osapi.jive.version.getVersionInfo().execute(function (data) { osapi.jive.core.container.artifacts.create(outgoing, 'com.jivesoftware.inline.gallery.show', function (markupResponse) { var artifactMarkup = markupResponse.markup, error = markupResponse.error; var artifactDom = $('<span>' + artifactMarkup + '</span>'); artifactDom.find('a').html('<img src="' + model.get("preview") + '"/>'); var html = artifactDom.html() + "<div>" + artifactMarkup + "</div>"; osapi.jive.core.container.editor().insert(html); }, false, true); }); }); }}); }; this.galleryView = function( galleryID, userid) { var gallery = new GalleryModel({id:galleryID, userid: userid}); var view = new GalleryViewer({model: gallery, container: this.container }); var viewManager = this.viewManager; gallery.bind("parsed", function(gallery) { gadgets.window.setTitle("Jive Albums: "+ gallery.attributes.title) view.render(); viewManager.showView(view); }); gallery.fetch(); }; }