function toggle(el) { WSDOM.Element.toggleClass(el, "collapsed"); } function expand(el) { WSDOM.Element.removeClass(el, "collapsed"); } function collapse(el) { WSDOM.Element.addClass(el, "collapsed"); } var contentEl = WSDOM.Element.get("content"); var iframeUpload = WSDOM.Element.get("iframeUpload"); function initAdminEvents() { var articleEls = WSDOM.Element.parseSelector("div.article", contentEl); for(var i = 0, len = articleEls.length; i < len; i++) { attachAdminEvents(articleEls[i]); } } function attachAdminEvents(container) { var data = { id: container.getAttribute("article_id"), richtext: null }; var el = WSDOM.Element.parseSelector("a.edit-link", container)[0]; WSDOM.Events.add(el, "click", showEditFormHandler, null, data); el = WSDOM.Element.parseSelector("a.remove-link", container)[0]; if(el) WSDOM.Events.add(el, "click", removeArticleHandler, null, data); el = WSDOM.Element.parseSelector("a.archive-link", container)[0]; if(el) WSDOM.Events.add(el, "click", archiveArticleHandler, null, data); el = WSDOM.Element.parseSelector("a.unarchive-link", container)[0]; if(el) WSDOM.Events.add(el, "click", unarchiveArticleHandler, null, data); el = WSDOM.Element.parseSelector("a.cancel", container); if(el) WSDOM.Events.add(el, "click", hideEditFormHandler, null, data); el = WSDOM.Element.parseSelector("form", container); if(el) WSDOM.Events.add(el, "submit", saveFormHandler, null, data); } function showEditFormHandler(e, link, data) { e.cancel(); link.blur(); showEditForm(data); } function hideEditFormHandler(e, link, data) { e.cancel(); link.blur(); hideEditForm(data.id); } function removeArticleHandler(e, link, data) { e.cancel(); link.blur(); if (confirm("Delete this item forever?")) { removeArticle(data.id); } } function archiveArticleHandler(e, link, data) { e.cancel(); link.blur(); archiveArticle(data.id); } function unarchiveArticleHandler(e, link, data) { e.cancel(); link.blur(); unarchiveArticle(data.id); } var saveFormHandler = function(e, form, data) { var author = WSDOM.Element.parseSelector('input[name="author"]', form, "first"); if (author) { if (author.value == "productoverview") { var link = WSDOM.Element.parseSelector('input[name="link"]', form, "first"); if (!link.value) { e.cancel(); alert("Please enter a link to the video."); return; } } } if (data.richtext) data.richtext.getContent(); if (!iframeUpload) { e.cancel(); saveArticle(form, data.id); } else { var id = WSDOM.Element.parseSelector('input[name="id"]', form)[0]; var file = WSDOM.Element.parseSelector('input[type="file"]', form)[0]; if(file.value.length || (id.value == "new" && !WSDOM.Element.hasClass(file, 'optional'))) { var ext = file.value.substring(file.value.length - 3).toLowerCase(); /*if(ext != 'pdf' && ext != 'swf' && ext != 'xls' && ext != 'doc' && ext != 'ppt' && ext != 'zip' && ext != '.gz' && ext != 'jpg' && ext != 'gif' && ext != 'ics' && ext != 'txt' && ext != 'png' && ext != 'mp3' ){ e.cancel(); alert("You must select a .PDF, .DOC, .XLS, .PPT, .SWF, .PNG, .JPG, .GIF, .ZIP, .GZ or .MP3 document to upload"); }*/ } } }; var origSaveFormHandler = saveFormHandler; if(window.alternateSaveHandler) saveFormHandler = alternateSaveHandler; function getArticleType(id) { var container = WSDOM.Element.get('article_' + id); if(WSDOM.Element.hasClass(container, "note")) { return "compliance"; } else if(WSDOM.Element.hasClass(container, "announcement")) { return "announcement"; } else if(WSDOM.Element.hasClass(container, "RediPlusAnnouncement")) { return "RediPlusAnnouncement"; } else if(WSDOM.Element.hasClass(container, "thought")) { return "thought"; } else if(WSDOM.Element.hasClass(container, "release")) { return "press"; } else if(WSDOM.Element.hasClass(container, "file")) { return "file"; } else if(WSDOM.Element.hasClass(container, "disclosure")) { return "disclosure"; } else if(WSDOM.Element.hasClass(container, "edumat")) { return "edumat"; } else if(WSDOM.Element.hasClass(container, "marketDataNotice")) { return "marketDataNotice"; } else if(WSDOM.Element.hasClass(container, "oms")) { return "oms"; } } function getArticlesContainer() { return WSDOM.Element.parseSelector('div.articles', contentEl)[0]; } function getArticleContainer(id) { return WSDOM.Element.parseSelector('#article_' + id)[0]; } function getFormContainer(id) { return WSDOM.Element.parseSelector('#article_' + id + ' div.article-edit')[0]; } function getContentContainer(id) { return WSDOM.Element.parseSelector('#article_' + id + ' div.article-content')[0]; } function showEditForm(data) { var el = getContentContainer(data.id); if(el) collapse(el); el = getFormContainer(data.id); if(el) expand(el); var textarea = WSDOM.Element.parseSelector("textarea.richtext", el)[0]; if(textarea && !data.richtext) data.richtext = new Editor_class(textarea, data.id); } function hideEditForm(id) { var el = getFormContainer(id); if(el) collapse(el); el = getContentContainer(id); if(el) expand(el); } function removeArticle(id) { var r = new WSDOM.Remoting(); var type = getArticleType(id); r.load({ url: type + "Buffer.asp?action=Remove", method: "get", onload: removeComplete, data: { id: id } }); } function archiveArticle(id) { var r = new WSDOM.Remoting(); var type = getArticleType(id); r.load({ url: type + "Buffer.asp?action=Archive", method: "get", onload: removeComplete, data: { id: id } }); } function unarchiveArticle(id) { var r = new WSDOM.Remoting(); var type = getArticleType(id); r.load({ url: type + "Buffer.asp?action=Unarchive", method: "get", onload: removeComplete, data: { id: id } }); } function removeComplete(r) { // TOTO: check for valid result? var id = r.contentPackage.data.id; var el = getArticleContainer(id); WSDOM.Element.remove(el); } function saveArticle(form, id) { var r = new WSDOM.Remoting(); var fs = new FormSerializerLite(); var data = fs.getHash(form); var type = getArticleType(id); r.load({ url: type + "Buffer.asp?action=Save", method: "get", onload: saveComplete, data: data }); } function saveComplete(r) { if(r.contentPackage.data.author && r.contentPackage.data.author == "productoverview"){ var href = document.location.href; document.location.href = href; } else{ var id = r.contentPackage.data.id; if(id == "new") { var el = getArticlesContainer(); var div = WSDOM.Element.create("div"); WSDOM.Element.setHTML(div, r.getResult()); WSDOM.Element.insertBefore(div, el.firstChild); attachAdminEvents(WSDOM.Element.parseSelector("div.article", div)[0]); } else { var el = getContentContainer(id); // TODO: make sure that we found a matching element WSDOM.Element.setHTML(el, r.getResult()); } hideEditForm(id); } } function iframeSaveComplete() { //dumb refresh for now var t = setTimeout('',4000); var href = document.location.href; href = href.replace(/page=\w/, "page=1"); //Default to page one if on other page document.location.href = href; } initAdminEvents();