var ajaxSubscription = new Class({ Implements: [Options, Events], options:{ 'objectId': null, 'parentId':null, 'defaultFrequency': 'instant', 'userFrequency': null, 'type': 'inline', 'elements': null, 'isSubscribed': false, 'triggerAddId': null, 'triggerDeleteId': null, 'userFrequencyId': null, 'statId': null }, initialize:function(trigger, options){ var self = this; // set the options self.setOptions(options || {}); // Mandatory self.elements = {}; self.elements.subscriptionActionElem = $(trigger); // Optional - Page Elements self.elements.triggerAddElem = null; if (self.options.triggerAddId != null) { self.elements.triggerAddElem = $(self.options.triggerAddId); } self.elements.triggerDeleteElem = null; if (self.options.triggerDeleteId != null) { self.elements.triggerDeleteElem = $(self.options.triggerDeleteId); } self.elements.userFrequencyElem = null; if (self.options.userFrequencyId != null) { self.elements.userFrequencyElem = $(self.options.userFrequencyId); } // Optional - Statistics self.elements.statElem = null; if (self.options.statId != null) { self.elements.statElem = $(self.options.statId); } else { self.elements.statElem = $("js-stats-followers"); self.options.statId = "js-stats-followers"; } if (self.elements.statElem) { self.elements.statNum = -1; self.elements.statNumElem = null; self.elements.statTextElem = null; if ($$("#" + self.options.statId + " .js-stat").length && $$("#" + self.options.statId + " .js-type").length) { self.elements.statNumElem = $$("#" + self.options.statId + " .js-stat")[0]; self.elements.statTextElem = $$("#" + self.options.statId + " .js-type")[0]; if (typeOf(parseInt(self.elements.statNumElem.get('html'))) == "number") { self.elements.statNum = parseInt(self.elements.statNumElem.get('html')); } } } // Request (Add/Update/Delete) window.addEvent('subscriptionRequest' + self.options.objectId, function(){ self.eventSubscriptionRequest( self ); }); // Success (Add/Update) window.addEvent('subscriptionSuccess' + self.options.objectId, function( returned_frequency ){ self.eventSubscriptionSuccess( self, returned_frequency ); }); // Failure (Add/Update) window.addEvent('subscriptionFailure' + self.options.objectId, function(){ self.eventSubscriptionFailure( self ); }); // Success (Delete) window.addEvent('subscriptionDeleteSuccess' + self.options.objectId, function(){ self.eventSubscriptionDeleteSuccess( self ); }); // Failure (Delete) window.addEvent('subscriptionDeleteFailure' + self.options.objectId, function(){ self.eventSubscriptionDeleteFailure( self ); }); // Add Subscription Behavior if (self.elements.triggerAddElem) { self.elements.triggerAddElem.addEvent('click',function( event ){ // One Way (Add / Update) event.stop(); if (self.options.triggerAddId != self.options.triggerDeleteId || !self.options.isSubscribed) { self.options.userFrequency = self.options.defaultFrequency; if (self.elements.userFrequencyElem) { self.options.userFrequency = self.elements.userFrequencyElem.value; } self.addSubscription(); } }); } // Delete Subscription Behavior if (self.elements.triggerDeleteElem) { self.elements.triggerDeleteElem.addEvent('click',function( event ){ // One Way (Delete) event.stop(); if (self.options.triggerDeleteId != self.options.triggerAddId || self.options.isSubscribed) { self.deleteSubscription(); } }); } // Quick Subscribe Event (Add / Update) - triggered by leaving a comment window.addEvent('quickSubscribeToObject' + self.options.objectId, function(){ if (!self.options.isSubscribed) { self.options.userFrequency = self.options.defaultFrequency; self.addSubscription(); } }); }, addSubscription:function(){ var self = this; //========================= AJAX - ADD SUBSCRIPTION ============================= var addSubscriptionViaAjax = new ApiClient({ 'headers':{'Accept': 'application/xml'}, 'apimethod':'account/subscriptions/' + ( self.options.isSubscribed ? 'update' : 'add' ), 'queryparams':{ 'paramList':'objectId,parentId,frequency', 'paramTypes':'id,id,string' }, 'postdata':{ 'objectId':self.options.objectId, 'parentId':self.options.parentId, 'frequency':self.options.userFrequency }, onRequest:function(instance){ window.fireEvent( "subscriptionRequest" + self.options.objectId ); }, onSuccess:function(text,xml){ window.fireEvent( "subscriptionSuccess" + self.options.objectId, xml.getElementsByTagName('response')[0].getElementsByTagName('frequency')[0].firstChild.nodeValue.toLowerCase() ); }, onFailure:function(instance){ // Handle Exceptions if(this.status != null) { if (this.status == "404") { // Object is gone - refresh the page and behold document.location = document.location.toString().split('#')[0]; } else if (this.status == "403") { // Object is permed - refresh the page and behold document.location = document.location.toString().split('#')[0]; } else if (this.status == "422") { // Subscription already exists window.fireEvent( "subscriptionSuccess", null ); } else { window.fireEvent( "subscriptionFailure" + self.options.objectId ); } } else { window.fireEvent( "subscriptionFailure" + self.options.objectId ); } } }); }, deleteSubscription:function(){ var self = this; //========================= AJAX - DELETE SUBSCRIPTION ============================= var deleteSubscriptionViaAjax = new ApiClient({ 'headers':{'Accept': 'application/xml'}, 'apimethod':'account/subscriptions/delete', 'queryparams':{ 'paramList':'objectId,parentId', 'paramTypes':'id,id' }, 'postdata':{ 'objectId':self.options.objectId, 'parentId':self.options.parentId }, onRequest:function(){ window.fireEvent( "subscriptionRequest" + self.options.objectId ); }, onSuccess:function(){ window.fireEvent( "subscriptionDeleteSuccess" + self.options.objectId ); }, onFailure:function(){ // Handle Exceptions if (this.status != null) { if (this.status == "404") { // Already unsubscribed - Do the same as "onSuccess" window.fireEvent( "subscriptionDeleteSuccess" + self.options.objectId ); } else if (this.status == "403") { // User signed out! - refresh the page and behold document.location = document.location.toString().split('#')[0]; } else { window.fireEvent( "subscriptionDeleteFailure" + self.options.objectId ); } } else { window.fireEvent( "subscriptionDeleteFailure" + self.options.objectId ); } } }); }, // Request (Add/Update/Delete) eventSubscriptionRequest:function( self ){ switch( self.options.type ){ // Magic Box component case "inline": self.elements.subscriptionActionElem.getParent().removeClass("ig-active"); self.elements.subscriptionActionElem.set("html"," "); break; // Trailer component case "trailer" : self.elements.subscriptionActionElem.addClass("icon-loading"); break; } }, // Success (Add/Update) eventSubscriptionSuccess:function( self, returned_frequency ){ if (!self.options.isSubscribed) { var count_increment = 1; } else { var count_increment = 0; } self.options.isSubscribed = true; if (returned_frequency != null) { self.options.userFrequency = returned_frequency; } switch( self.options.type ){ // Magic Box component case "inline" : // Update the action element self.elements.subscriptionActionElem.set("html","" + window.translations('comps-trail-Subscribed') + "") self.elements.subscriptionActionElem.getParent().addClass("ig-active"); // Update the statistics module if exists if (self.elements.statNumElem != null && self.elements.statNum > -1) { self.elements.statNum = self.elements.statNum + count_increment; self.elements.statNumElem.set("html",self.elements.statNum); if (self.elements.statTextElem != null) { if (self.elements.statNum == 1) { self.elements.statTextElem.set("html",window.translations('comps-stats-follower')); } else { self.elements.statTextElem.set("html",window.translations('comps-stats-followers')); } } } break; // Trailer component case "trailer" : // Update the Trailer trigger self.elements.subscriptionActionElem.removeClass("icon-loading"); self.elements.subscriptionActionElem.removeClass("icon-notify"); self.elements.subscriptionActionElem.addClass("icon-notify-active"); self.elements.subscriptionActionElem.set("html",window.translations('comps-trail-Subscribed')); // Update the frequency to what the user has chosen if exists if (self.elements.userFrequencyElem) { self.elements.userFrequencyElem.value = self.options.userFrequency; } // Show trailer bar Unsubscribe link if exists if (self.elements.triggerDeleteElem) { self.elements.triggerDeleteElem.removeClass("hide"); } break; } }, // Failure (Add/Update) eventSubscriptionFailure:function( self ){ switch( self.options.type ){ // Magic Box component case "inline" : self.elements.subscriptionActionElem.getParent().removeClass("ig-active"); self.elements.subscriptionActionElem.set("html", "" + window.translations('comps-trail-Subscribe') + "") break; // Trailer component case "trailer" : self.elements.subscriptionActionElem.removeClass("icon-loading"); break; } }, // Success (Delete) eventSubscriptionDeleteSuccess:function( self ){ self.options.isSubscribed = false; switch( self.options.type ){ // Magic Box component case "inline" : // Update the action element self.elements.subscriptionActionElem.set("html","" + window.translations('comps-trail-Subscribe')+ "") self.elements.subscriptionActionElem.getParent().removeClass("ig-active"); // Update the statistics module if exists if (self.elements.statNumElem != null && self.elements.statNum > -1) { self.elements.statNum--; self.elements.statNumElem.set("html",self.elements.statNum); if (self.elements.statTextElem != null) { if (self.elements.statNum == 1) { self.elements.statTextElem.set("html",window.translations('comps-stats-follower')); } else { self.elements.statTextElem.set("html",window.translations('comps-stats-followers')); } } } break; // Trailer component case "trailer" : // Update the Trailer trigger self.elements.subscriptionActionElem.removeClass("icon-loading"); self.elements.subscriptionActionElem.removeClass("icon-notify-active"); self.elements.subscriptionActionElem.addClass("icon-notify"); self.elements.subscriptionActionElem.set("html",window.translations('comps-trail-Subscribe')); // Reset the frequency back to default if exists if (self.elements.userFrequencyElem) { self.elements.userFrequencyElem.value = self.options.defaultFrequency; } // Hide trailer bar Unsubscribe link if exists if (self.elements.triggerDeleteElem) { self.elements.triggerDeleteElem.addClass("hide"); } break; } }, // Failure (Delete) eventSubscriptionDeleteFailure:function( self ){ switch( self.options.type ){ // Magic Box component case "inline" : self.elements.subscriptionActionElem.set("html", "" + window.translations('comps-trail-Unsubscribe') + "") break; // Trailer component case "trailer" : self.elements.subscriptionActionElem.removeClass("icon-loading"); break; } } }); window.addEvent('domready', function(){ if (Igloo && Igloo.asset_ajax_subscriptions) { var subscriptionLink; Object.each(Igloo.asset_ajax_subscriptions, function(object, id){ subscriptionLink = new ajaxSubscription(id, object); }); } }); function applyAjaxEmaillink(elements){ elements.each(function(elem){ if (elem.dataobj){ var dataobj = JSON.decode(elem.dataobj) || elem.dataobj; if(dataobj.emaillink){ elem.submit = function(){ var theform = elem; var emailbutton = theform.getElements('.emailbutton')[0]; if ($('emailresponsediv')) { $('emailresponsediv').destroy(); } // Mandatory var tofield = theform['to-email-address']; var fromfield = theform['from-email-address']; var subjectfield = theform['email-subject']; var messagefield = theform['email-message']; var pathfield = theform['path']; var pathnamefield = theform['pathname']; var to = tofield.value; var from = fromfield.value; var subject = subjectfield.value; var message = messagefield.value; var path = pathfield.value; var pathname = pathnamefield.value; var spinner = new Element('div',{'class':'ig-loader-small ig-normalmarginleft ig-smallmargintop ig-left'}); var emaillinkajax = new ApiClient({ 'apimethod':'email/link', 'postdata':{ 'to':to, 'fromAddress':from, 'fromName':from, 'subject':subject, 'message':message, 'path':path, 'pathname':pathname }, onRequest:function(){ emailbutton.disabled = true; emailbutton.getParent().adopt(spinner); }, onSuccess:function(){ spinner.dispose(); var returnstring = this.response.text; var returnjson = JSON.decode(returnstring,true); if(returnjson != null){ emailbutton.disabled = false; var emailresponsediv = new Element('div',{'id':'emailresponsediv','class':'ig-alert-info ig-normalmargintop ig-nomarginbottom'}).set('html',window.translations('media-js-success_message_sent')).inject(theform,'bottom'); theform.getParent('.panel').setStyles({'height':'auto'}); }else{ // what did return was not JSON. emailbutton.disabled = false; var emailresponsediv = new Element('div',{'id':'emailresponsediv','class':'ig-alert-error ig-normalmargintop ig-nomarginbottom'}).set('html',window.translations('media-js-your_message_could_not_be_delivered')).inject(theform,'bottom'); theform.getParent('.panel').setStyles({'height':'auto'}); return false; } activePanel.getChildren(0).getChildren(0)[0].fireEvent('submitcompleted'); // send confirmation to the validator... }, onFailure:function(){ spinner.dispose(); emailbutton.disabled = false; var emailresponsediv = new Element('div',{'id':'emailresponsediv','class':'ig-alert-error ig-normalmargintop ig-nomarginbottom'}).set('html',window.translations('media-js-your_message_could_not_be_delivered')).inject(theform,'bottom'); theform.getParent('.panel').setStyles({'height':'auto'}); return false; } }); return false; }; } } }); } window.addEvent('domready', function(){ // apply email behaviour to the form if (Igloo && Igloo.asset_emaillink) { var elements = []; Object.each(Igloo.asset_emaillink, function(object, id){ var elem = $(id); if (elem) { if(!elem.dataobj || typeOf(elem.dataobj)!='hash'){ elem.dataobj = new Hash(elem.dataobj || object); } elem.dataobj.combine(object); elements.push(elem); } }); applyAjaxEmaillink(elements); } }); window.addEvent('bootstrap4finished', function(){ // apply email behaviour to the form var elements = window.dependents['emaillink'] || [];//$$('.js'); applyAjaxEmaillink(elements); });  window.addEvent('domready', function(){ if (Igloo && Igloo.asset_ajax_broadcast){ Object.each(Igloo.asset_ajax_broadcast, function(options, id){ var theForm = $(id); if (theForm){ var subButtons = new Elements(); subButtons = $(theForm).getElements('input[type=submit]'); theForm.addEvent('submit', function() { Array.each(subButtons, function(buttonElem) { $(buttonElem).addClass('ig-button_disabled'); $(buttonElem).set('disabled', 'disabled'); }); }); theForm.addEvent('onformvalidation', function(returnVal) { if (!returnVal) { enableButtons(subButtons); } }); theForm.addClass('noDisableOnSubmit'); theForm.addEvent('onvalidformsubmit', function(){ var userToArr = []; theForm.getElements('input[type=checkbox]:checked').each(function(box){ userToArr.push(box.value); }); var userTo = userToArr.join(','); var messageType = 3; // Broadcast type var sub = theForm.elements['subject'].value; // Check to see if mobile if (theForm.getElementById('broadcastbody').hasClass('js-tinymce')) { var currEditor = tinymce.get('broadcastbody'); var bod = currEditor.getContent(); } else { var currEditor = theForm.getElementById('broadcastbody'); var bod = currEditor.value; } var bodyIsText = theForm.elements['bodyIsText'].value; var linkedObj = theForm.elements['linkedObj'].value; var messageApi = new ApiClient({ 'apimethod': 'account/discussions/create', 'postdata': { 'body': bod, 'messageType': messageType, 'userTo': userTo, 'subject': sub, 'bodyIsText': bodyIsText, 'linkedObj': linkedObj }, onComplete: function() { enableButtons(subButtons); }, onSuccess: function() { theForm.fireEvent('submitcompleted'); // send confirmation to the validator... var returnstring = this.response.text; var returnjson = JSON.decode(returnstring, true); if(returnjson != null){ theForm.reset(); alert( window.translations('media-js-success_message_sent') ); }else{ alert( window.translations('media-js-your_message_could_not_be_delivered') ); } }, onFailure: function() { alert( window.translations('media-js-your_message_could_not_be_delivered') ); } }); return false; }); } if (Igloo && ! Igloo.broadcastEditors) { Igloo.broadcastEditors = []; } window.addEvent('accordianOpened', function(triggerElem) { if (triggerElem.id.toString() === "notify") { if (!Igloo.broadcastGroupListAcquired) { getGroupList(options.groupDivId, options.submitId, options.objectid); } } }); }); var enableButtons = function(buttons) { Array.each(buttons, function(buttonElem) { $(buttonElem).removeClass('ig-button_disabled'); $(buttonElem).removeProperty('disabled'); }); } } }); var getGroupList = function(groupListDivId, submitId, objectid) { var getViaAjax = new ApiClient({ 'headers': { 'Accept': 'application/xml' }, 'method': 'post', 'apimethod': 'igloo/widgets/rendercomponent', 'queryparams': { 'paramList': 'objectId', 'paramTypes': 'id' }, 'postdata': { 'objectId': objectid, 'componentName': 'broadcastGrouplist' }, onComplete: function() { var groupListDiv = $(groupListDivId) if (groupListDiv) { if (groupListDiv.getChildren('.ig-spinny')) { Array.each(groupListDiv.getChildren('.ig-spinny'), function(spinner) { spinner.addClass('hide'); }); } if (groupListDiv.getPrevious() && groupListDiv.getPrevious().getChildren('.ig-spinny')) { Array.each(groupListDiv.getPrevious().getChildren('.ig-spinny'), function(spinner) { spinner.addClass('hide'); }); } } // enable the submit button var submitButton = $(submitId); if (submitButton) { submitButton.removeClass('ig-button_disabled'); submitButton.removeProperty('disabled'); } }, onSuccess: function(text, xml) { var response = Utils.IARParse(xml); groupListDiv = $(groupListDivId); groupListDiv.set('html', response.apihtml); bootstrap(groupListDiv); Igloo.broadcastGroupListAcquired = true; }, onFailure: function() { // put a message here. groupListDiv.set('html', window.translations('media-js-api_error')); } }); } window.addEvent('domready', function(){ // apply modal behaviour to the links if (Igloo && Igloo.asset_modalapp) { var elements = [], elem; Object.each(Igloo.asset_modalapp, function(object, id){ elem = $(id); if( elem ){ if(!elem.dataobj || typeOf(elem.dataobj)!='hash'){ elem.dataobj = new Hash(elem.dataobj || object); } elem.dataobj.combine(object); elements.push(elem); } }); applyMessage(elements); } }); function applyMessage(elements){ if(!elements){return;} elements.each(function(elem){ if (elem.dataobj){ var dataobj = elem.dataobj; if(dataobj.modalapp){ if (dataobj.modalapp.sendmessage){ elem.addEvent('click',function(event){ event.preventDefault(); var dataobj = elem.dataobj; toadopt = dataobj.modalapp.sendmessage.formelem; toadoptElem = $(toadopt); var messagemodal = new Modalbox({ 'width':450, 'draggable':false, 'title':window.translations('media-js-send_a_feedback'), 'adoptclone':toadoptElem, 'onOpen':function(){ modalsendmessage(this.mymodal); if(dataobj.modalapp.sendmessage.preselect){ for(var eee=0;eee' + window.translations('media-js-your_message_could_not_be_delivered') + '

'); } }, onFailure: function() { //console.log(['onFailure', arguments]); var sendMsgFailure = new Modalbox({ 'title': window.translations('media-js-Error'), 'width': 300 }).setcontents('

' + window.translations('media-js-your_message_could_not_be_delivered') + '

'); } }); // only submit the form when it's valid theform.addEvent('onvalidformsubmit', function(){ sendMsgRequest.send( theform.toQueryString() ); }); } window.addEvent('domready', function(){ if( Igloo && Igloo.asset_linkedinlink ){ var elem; Object.each(Igloo.asset_linkedinlink, function(object, id){ elem = $(id); if( elem ){ liJs = new Element("script", { src: parent.location.protocol + "//platform.linkedin.com/in.js", type: "text/javascript" }); liJs.inject($(elem.id), "before"); elem.addEvent('click', function(event){ IN.UI.Share().params({ url: document.URL }).place() return false; }); } }); } }); window.addEvent('domready', function(){ if( Igloo && Igloo.asset_twitterlink ){ var elem; Object.each(Igloo.asset_twitterlink, function(object, id){ elem = $(id); if( elem ){ elem.addEvent('click', function(event){ event.preventDefault(); // get a bitly from the API var twitapi = new ApiClient({ 'apimethod': 'igloo/shorten', 'method': 'get', 'queryparams':{ 'longUrl':document.location.href }, 'onRequest':function(){ // put a spinner here or something }, 'onSuccess':function(txt){ var json = JSON.decode(txt,true); var shorturl = json.response.items[0].value; // var shorturl = "http://bit.ly?weryerure"; var twittermaxlength = 140; var message = document.title.ellipsize(twittermaxlength - shorturl.length - 1)+' '+shorturl; var twitterurl = 'http://twitter.com/home?status=' + encodeURIComponent(message); var winname = twitterurl; winname = winname.replace(/\//g,''); winname = winname.replace(/\./g,''); winname = winname.replace(/:/g,''); //window.open(twitterurl,winname); // this triggers popup blockers in a big way document.location.href = twitterurl; return false; }, 'onFailure':function(){ var twitterurl = 'http://twitter.com/'; var winname = twitterurl; winname = winname.replace(/\//g,''); winname = winname.replace(/\./g,''); winname = winname.replace(/:/g,''); //window.open(twitterurl,winname); // this triggers popup blockers in a big way document.location.href = twitterurl; return false; } }); }); } }); } });