/** * Copyright 2009 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS-IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var padmodals = (function() { /*var clearFeedbackEmail = function() {}; function clearFeedback() { clearFeedbackEmail(); $("#feedbackbox-message").val(''); } var sendingFeedback = false; function setSendingFeedback(v) { v = !! v; if (sendingFeedback != v) { sendingFeedback = v; if (v) { $("#feedbackbox-send").css('opacity', 0.75); } else { $("#feedbackbox-send").css('opacity', 1); } } }*/ var sendingInvite = false; function setSendingInvite(v) { v = !! v; if (sendingInvite != v) { sendingInvite = v; if (v) { $(".sharebox-send").css('opacity', 0.75); } else { $("#sharebox-send").css('opacity', 1); } } } var clearShareBoxTo = function() {}; function clearShareBox() { clearShareBoxTo(); } var self = { init: function() { self.initFeedback(); self.initShareBox(); }, initFeedback: function() { /*var emailField = $("#feedbackbox-email"); clearFeedbackEmail = padutils.makeFieldLabeledWhenEmpty(emailField, '(your email address)').clear; clearFeedback();*/ $("#feedbackbox-hide").click(function() { self.hideModal(); }); /*$("#feedbackbox-send").click(function() { self.sendFeedbackEmail(); });*/ $("#feedbackbutton").click(function() { self.showFeedback(); }); }, initShareBox: function() { $("#sharebutton").click(function() { self.showShareBox(); }); $("#sharebox-hide").click(function() { self.hideModal(); }); $("#sharebox-send").click(function() { self.sendInvite(); }); $("#sharebox-url").click(function() { $("#sharebox-url").focus().select(); }); clearShareBoxTo = padutils.makeFieldLabeledWhenEmpty($("#sharebox-to"), "(email addresses)").clear; clearShareBox(); $("#sharebox-subject").val(self.getDefaultShareBoxSubjectForName(pad.getUserName())); $("#sharebox-message").val(self.getDefaultShareBoxMessageForName(pad.getUserName())); $("#sharebox-stripe .setsecurity").click(function() { self.hideModal(); paddocbar.setShownPanel('security'); }); }, getDefaultShareBoxMessageForName: function(name) { return (name || "Somebody")+" has shared an EtherPad document with you."+ "\n\n"+"View it here:\n\n"+ padutils.escapeHtml($(".sharebox-url").val()+"\n"); }, getDefaultShareBoxSubjectForName: function(name) { return (name || "Somebody")+" invited you to an EtherPad document"; }, relayoutWithBottom: function(px) { $("#modaloverlay").height(px); $("#sharebox").css('left', Math.floor(($(window).width() - $("#sharebox").outerWidth())/2)); $("#feedbackbox").css('left', Math.floor(($(window).width() - $("#feedbackbox").outerWidth())/2)); }, showFeedback: function() { self.showModal("#feedbackbox"); }, showShareBox: function() { // when showing the dialog, if it still says "Somebody" invited you // then we fill in the updated username if there is one; // otherwise, we don't touch it, perhaps the user is happy with it var msgbox = $("#sharebox-message"); if (msgbox.val() == self.getDefaultShareBoxMessageForName(null)) { msgbox.val(self.getDefaultShareBoxMessageForName(pad.getUserName())); } var subjBox = $("#sharebox-subject"); if (subjBox.val() == self.getDefaultShareBoxSubjectForName(null)) { subjBox.val(self.getDefaultShareBoxSubjectForName(pad.getUserName())); } if (pad.isPadPublic()) { $("#sharebox-stripe").get(0).className = 'sharebox-stripe-public'; } else { $("#sharebox-stripe").get(0).className = 'sharebox-stripe-private'; } self.showModal("#sharebox", 500); $("#sharebox-url").focus().select(); }, showModal: function(modalId, duration) { $(".modaldialog").hide(); $(modalId).show().css({'opacity': 0}).animate({'opacity': 1}, duration); $("#modaloverlay").show().css({'opacity': 0}).animate({'opacity': 1}, duration); }, hideModal: function(duration) { padutils.cancelActions('hide-feedbackbox'); padutils.cancelActions('hide-sharebox'); $("#sharebox-response").hide(); $(".modaldialog").animate({'opacity': 0}, duration, function () { $("#modaloverlay").hide(); }); $("#modaloverlay").animate({'opacity': 0}, duration, function () { $("#modaloverlay").hide(); }); }, hideFeedbackLaterIfNoOtherInteraction: function() { return padutils.getCancellableAction('hide-feedbackbox', function() { self.hideModal(); }); }, hideShareboxLaterIfNoOtherInteraction: function() { return padutils.getCancellableAction('hide-sharebox', function() { self.hideModal(); }); }, /* sendFeedbackEmail: function() { if (sendingFeedback) { return; } var message = $("#feedbackbox-message").val(); if (! message) { return; } var email = ($("#feedbackbox-email").hasClass('editempty') ? '' : $("#feedbackbox-email").val()); var padId = pad.getPadId(); var username = pad.getUserName(); setSendingFeedback(true); $("#feedbackbox-response").html("Sending...").get(0).className = ''; $("#feedbackbox-response").show(); $.ajax({ type: 'post', url: '/ep/pad/feedback', data: { feedback: message, padId: padId, username: username, email: email }, success: success, error: error }); var hideCall = self.hideFeedbackLaterIfNoOtherInteraction(); function success(msg) { setSendingFeedback(false); clearFeedback(); $("#feedbackbox-response").html("Thanks for your feedback").get(0).className = 'goodresponse'; $("#feedbackbox-response").show(); window.setTimeout(function() { $("#feedbackbox-response").fadeOut('slow', function() { hideCall(); }); }, 1500); } function error(e) { setSendingFeedback(false); $("#feedbackbox-response").html("Could not send feedback. Please email us at feedback"+"@"+"etherpad.com instead.").get(0).className = 'badresponse'; $("#feedbackbox-response").show(); } },*/ sendInvite: function() { if (sendingInvite) { return; } if (! pad.isFullyConnected()) { displayErrorMessage("Error: Connection to the server is down or flaky."); return; } var message = $("#sharebox-message").val(); if (! message) { displayErrorMessage("Please enter a message body before sending."); return; } var emails = ($("#sharebox-to").hasClass('editempty') ? '' : $("#sharebox-to").val()) || ''; // find runs of characters that aren't obviously non-email punctuation var emailArray = emails.match(/[^\s,:;<>\"\'\/\(\)\[\]{}]+/g) || []; if (emailArray.length == 0) { displayErrorMessage('Please enter at least one "To:" address.'); $("#sharebox-to").focus().select(); return; } for(var i=0;i