Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 露天:向所有成员发送邮件自定义按钮不';在某些特定的场所不起作用_Javascript_Tinymce_Share_Alfresco_Dashboard - Fatal编程技术网

Javascript 露天:向所有成员发送邮件自定义按钮不';在某些特定的场所不起作用

Javascript 露天:向所有成员发送邮件自定义按钮不';在某些特定的场所不起作用,javascript,tinymce,share,alfresco,dashboard,Javascript,Tinymce,Share,Alfresco,Dashboard,在应用程序的“共享”部分,我在特定的站点仪表板中遇到了一个问题。 当您创建网站时,此问题会随机出现,显然没有特殊原因。 我的问题是关于“站点配置文件”dashlet。我开发了一个自定义按钮,使用户可以向订阅站点信息的一个或多个成员发送电子邮件。它依赖于javascript文件名“ts send mail to all members.js”当您单击它时,会打开一个弹出窗口,其中包含可用于选择成员的复选框、可用于编写电子邮件的TinyMCE组件和两个按钮,一个用于发送电子邮件,另一个用于关闭弹出窗

在应用程序的“共享”部分,我在特定的站点仪表板中遇到了一个问题。
当您创建网站时,此问题会随机出现,显然没有特殊原因。
我的问题是关于“站点配置文件”dashlet。我开发了一个自定义按钮,使用户可以向订阅站点信息的一个或多个成员发送电子邮件。它依赖于javascript文件名“ts send mail to all members.js”
当您单击它时,会打开一个弹出窗口,其中包含可用于选择成员的复选框、可用于编写电子邮件的TinyMCE组件和两个按钮,一个用于发送电子邮件,另一个用于关闭弹出窗口。
订阅按钮也已创建,不会产生任何错误。


当您单击允许您发送电子邮件的按钮时,就会出现问题。 有一个javascript错误,该错误会根据站点的仪表板配置而出现。
1) 例如,如果页面上唯一的dashlet是“Site Profile”,则我有以下错误:

Alfresco.module.SimpleDialog is not a constructor
http://localhost:8080/share/res/modules/ts-send-mail-to-all-members.js
Line 139
tinyMCE is not defined
[Break on this error] tinyMCE.init({
代码行如下:

var sendMailToAllMembersDialog = new Alfresco.module.SimpleDialog(this.id + "-sendMailToAllMembersDialog");
2) 我没有针对特定配置来获取此错误,但您也可以随机出现此错误:

Alfresco.module.SimpleDialog is not a constructor
http://localhost:8080/share/res/modules/ts-send-mail-to-all-members.js
Line 139
tinyMCE is not defined
[Break on this error] tinyMCE.init({
显然,Alfresco没有识别tinyMCE,它抛出了一个异常。在脚本中,“tinyMCE.init”是调用组件的第一条语句。我已经对此错误进行了研究,通常您只需添加一个带有
src=“”
参数的
标记,以指定tiny_mce.js的位置。我可以是一个URL或它在Alfresco应用程序中的位置
然而,我的脚本完全是用JavaScript编写的,我不能编写HTML语句

3) 第三种情况是,弹出窗口出现,Functionality可以正常工作,没有任何例外。在站点的仪表板上添加“事件列表”dashlet时会发生这种情况

以下是“ts向所有成员发送邮件.js”源代码:

/**
 * Copyright (C) T&S.
 *
 */

/**
 * ts-abonnement-site module
 *
 * 
 *
 * @namespace Alfresco.module
 * @class Alfresco.module.TsAbonnementSite
 */
(function()
{

   var Dom = YAHOO.util.Dom,
      Event = YAHOO.util.Event,
      Element = YAHOO.util.Element,
      Bubbling = YAHOO.Bubbling,
      KeyListener = YAHOO.util.KeyListener
      nodeRef = "";

   /**
    * CreateSite constructor.
    *
    * @param htmlId {string} A unique id for this component
    * @return {Alfresco.CreateSite} The new DocumentList instance
    * @constructor
    */
   Alfresco.module.TsSendMailToAllMembers = function(containerId)
   {
      var instance = Alfresco.util.ComponentManager.get(this.id);
      if (instance !== null)
      {
         throw new Error("An instance of Alfresco.module.TsSendMailToAllMembers already exists.");
      }

      Alfresco.module.TsSendMailToAllMembers.superclass.constructor.call(this, "Alfresco.module.TsSendMailToAllMembers", containerId, ["button", "container", "connection", "selector", "json"]);

      return this;
   };

   YAHOO.extend(Alfresco.module.TsSendMailToAllMembers, Alfresco.component.Base,
   {
       members:[],

       options:{
           siteId:""
       },

       onReady: function TS_onReady()
       {
           this.widgets.sendMailToAllMembersButton = Alfresco.util.createYUIButton(this, "btn-sendMailToAllMembers", this.showSendMailForm);
           this.widgets.sendMailToAllMembersButton.set("className", "mailBtn mailToAllMembersBtn");
           Bubbling.on('selectDeselectAllChanged', this.selectDeselectAllChanged);
           Bubbling.on('selectDeselectMemberChanged', this.selectDeselectMemberChanged);
       },

       showSendMailForm: function()
       {
        // Intercept before dialog show
            var doBeforeDialogShow = function TsSendMailToAllMembers_doBeforeDialogShow(
                    p_form, p_dialog) {
                Alfresco.util.populateHTML(
                        [p_dialog.id + "-dialogTitle", this.msg("label.sendMailToAllMembersForm.title") ], 
                        [p_dialog.id + "-dialogHeader", this.msg("label.sendMailToAllMembersForm.header") ],
                        [p_dialog.id + "-members-label", this.msg("label.sendMailToAllMembersForm.members") ],
                        [p_dialog.id + "-subject-label", this.msg("label.sendMailToAllMembersForm.subject") ],
                        [p_dialog.id + "-body-label", this.msg("label.sendMailToAllMembersForm.body") ],
                        [p_dialog.id + "-ok-label", this.msg("label.sendMailToAllMembersForm.btn.send.mail") ],
                        [p_dialog.id + "-cancel-label", this.msg("label.sendMailToAllMembersForm.btn.cancel") ]);

                p_dialog.dialog.header.innerHTML = this.msg("label.sendMailToAllMembersForm.dialog.title");

                Dom.get(p_dialog.id + "-shortName").value = this.options.siteId;

                tinyMCE.init({
                    mode : "exact",
                    elements: p_dialog.id + "-body",
                    convert_fonts_to_spans: false,
                    theme: 'advanced',
                    width: "100%",
                    theme_advanced_buttons1: "bold,italic,underline,|,bullist,numlist,|,forecolor,|,undo,redo,removeformat",
                    theme_advanced_toolbar_location: "top",
                    theme_advanced_toolbar_align: "left",
                    theme_advanced_statusbar_location: "bottom",
                    theme_advanced_resizing: false,
                    theme_advanced_buttons2: null,
                    theme_advanced_buttons3: null,
                    theme_advanced_path: false,
                    language: 'fr'
                });

                Alfresco.util.Ajax.request(
                {
                   url: Alfresco.constants.PROXY_URI + "api/sites/" + this.options.siteId + "/memberships",
                   dataObj:
                   {
                       htmlid : p_dialog.id + "-membersContainer"
                   },
                   successCallback:
                   {
                      fn: this.onMembersLoaded,
                      scope: this
                   }
                });
            };

            var doBeforeFormSubmit = function ()
            {
                Dom.get(this.id + "-sendMailToAllMembersDialog-mailbody").value = tinyMCE.get(this.id + "-sendMailToAllMembersDialog-body").getContent({format : 'raw'});

                var membersIds = "";
                var cbs = YAHOO.util.Selector.query("input[id^='cb_']");

                for (var i=0; i<cbs.length; i++)
                {
                    var cb = cbs[i];
                    if (cb.checked)
                    {
                        var id = cb.id.replace("cb_", "");
                        if(cbs.length == 1 || i == cbs.length - 1) {
                            membersIds += id;
                        } else {
                            membersIds += id + ",";
                        }
                    }
                }

                Dom.get(this.id + "-sendMailToAllMembersDialog-membersIds").value = membersIds;

                this.widgets.dialog.widgets.okButton.set("disabled", true);
                this.widgets.dialog.widgets.cancelButton.set("disabled", true);
            };

            // Using Forms Service, so always create new
            // instance
            var sendMailToAllMembersDialog = new Alfresco.module.SimpleDialog(this.id + "-sendMailToAllMembersDialog");

            this.widgets.dialog = sendMailToAllMembersDialog;

            sendMailToAllMembersDialog.setOptions(
            {
                width : "60em",
                templateUrl : Alfresco.constants.PROXY_URI + "ts/sendMailToAllMembers",
                actionUrl : Alfresco.constants.PROXY_URI + "ts/sendHtmlMail",
                destroyOnHide : true,
                doBeforeFormSubmit:{
                    fn:doBeforeFormSubmit,
                    scope: this
                },
                doBeforeDialogShow : {
                    fn : doBeforeDialogShow,
                    scope : this
                },
                onSuccess : {
                    fn : function TsSendMailToAllMembers_success(response) {
                        YAHOO.Bubbling.fire(
                            "sendMailToAllMembersForm_success",
                            {
                                nodeRef : response.json.persistedObject
                            });

                        Alfresco.util.PopupManager.displayMessage({
                            text : this.msg("message.sendMailToAllMembersForm.success")
                        });
                    },
                    scope : this
                },
                onFailure : {
                    fn : function TsSendMailToAllMembers_failure(response) {
                        Alfresco.util.PopupManager.displayMessage({
                            text : this.msg("message.sendMailToAllMembersForm.failure")
                        });
                    },
                    scope : this
                }
            }).show();
       },

       onMembersLoaded: function TS_onMembersLoaded(response)
       {
           this.members = response.json;
           this.updateMembersList(response.config.dataObj.htmlid);
       },

       updateMembersList : function TS_updateMembersList(containerId)
       {
           var div = Dom.get(containerId);
           div.innerHTML = "<div class=\"memberDiv\">" +
               "<input type=\"checkbox\" id=\"selectDeselectAllCb\" checked=\"true\" onclick=\"YAHOO.Bubbling.fire('selectDeselectAllChanged')\" class=\"memberCb\"/>" +
               "<label for=\"selectDeselectAllCb\" class=\"memberLabel\">" + 
               this.msg('label.selectDeselectAll') + "</label>" +
               "</div>";

           for (var i=0; i<this.members.length; i++)
           {
               var member = this.members[i];
               var avatar = Alfresco.constants.URL_CONTEXT + "/components/images/no-user-photo-64.png";

               if (member.authority.avatar && member.avatar != "")
               {
//                 exemple:
//                 api/node/workspace/SpacesStore/697ec77c-b881-4c16-82b6-4f80fea1514b/content/thumbnails/avatar
                   avatar = Alfresco.constants.PROXY_URI + member.authority.avatar + "?c=force";
               }
               div.innerHTML += "<div class=\"memberDiv\">" +
//                  "<img class=\"memberAvatar\" src=\"" + avatar + "\"/>" +
                    "<input type=\"checkbox\" id=\"cb_" + member.authority.userName + "\" checked=\"true\" onclick=\"YAHOO.Bubbling.fire('selectDeselectMemberChanged')\" class=\"memberCb\"/>" +
                    "<label for=\"cb_" + member.authority.userName + "\" class=\"memberLabel\">" + 
                            member.authority.firstName + " " + member.authority.lastName + "</label>" +
                    "</div>";
           }
       },

       selectDeselectAllChanged: function selectDeselectAllChanged(){
           var selectDeselectAllCb = Dom.get('selectDeselectAllCb');
           var checked = selectDeselectAllCb.checked;
           var cbs = YAHOO.util.Selector.query("input[id^='cb_']");

           for (var i=0, j=cbs.length; i<j; i++)
           {
               var cb = cbs[i];
               cb.checked = checked;
           }
       },

       selectDeselectMemberChanged: function selectDeselectMemberChanged(){
           var selectDeselectAllCb = Dom.get('selectDeselectAllCb');
           var cbs = YAHOO.util.Selector.query("input[id^='cb_']");
           var firstChecked = false;
           if (cbs[0] != null){
               firstChecked = cbs[0].checked;
           }

           for (var i=0, j=cbs.length; i<j; i++)
           {
               var cb = cbs[i];
               if (cb.checked === firstChecked){
                   continue;
               }
               else{
                   selectDeselectAllCb.checked = false;
                   return;
               }
           }

           selectDeselectAllCb.checked = firstChecked;
       },

       /**
        * Set messages for this component.
        *
        * @method setMessages
        * @param obj {object} Object literal specifying a set of messages
        * @return {Alfresco.SampleComponent} returns 'this' for method chaining
        */
       setMessages: function SampleComponent_setMessages(obj)
       {
           Alfresco.util.addMessages(obj, this.name);
           return this;
       }

   });
})();

Alfresco.module.geTsSendMailToAllMembersInstance = function()
{
   var instanceId = "alfresco-TsSendMailToAllMembers-instance";
   return Alfresco.util.ComponentManager.get(instanceId) || new Alfresco.module.TsSendMailToAllMembers(instanceId);
};
    <#include "../component.head.inc">
    <@link rel="stylesheet" type="text/css" href="${page.url.context}/res/modules/ts/ts.css" />
    <@script type="text/javascript" src="${page.url.context}/res/modules/ts-abonnement-site.js"></@script>
    <@script type="text/javascript" src="${page.url.context}/res/modules/ts-send-mail-to-all-members.js"></@script>
<script type="text/javascript">//<![CDATA[
   new Alfresco.module.TsAbonnementSite("${args.htmlid}").setOptions(
   {
        siteId: "${profile.shortName}"
   }).setMessages(${messages});

   new Alfresco.module.TsSendMailToAllMembers("${args.htmlid}").setOptions(
   {
        siteId: "${profile.shortName}"
   }).setMessages(${messages});
//]]></script>

<div id="${args.htmlid}-sendMailToAllMembersDialog"></div>

<div class="dashlet site-profile">
   <div class="title">${msg("header.siteProfile")}</div>
   <div class="body">
      <div class="msg">
         <#if profile.iconurl?exists && profile.iconurl != "">
            <img src="/share/proxy/alfresco/api/node/${profile.iconurl}/content/thumbnails/avatar?c=force" height="60px" style="float:left;margin: 5px;"/>
         </#if>
         <h3><#if (profile.title != "")>${msg("text.welcome", profile.title)?html}<#else>${msg("text.welcome", profile.shortName)?html}</#if></h3>
<#if (profile.description != "")>
         <p>${profile.description?html}</p>
</#if>
<#if profile.customProperties??>
   <#list profile.customProperties?keys as prop>
      <#assign customValue=profile.customProperties[prop].value>    
      <#if customValue?starts_with('alfresco-php://') == true>
         <p><a href="${url.context}/proxy/alfresco-php/${customValue?substring(15)?html}" target="_blank" class="theme-color-1">${profile.customProperties[prop].title?html}</a></p>
      <#else>
         <p>
            <span class="label">${profile.customProperties[prop].title?html}</span>
            <span>${customValue?html}</span>
         </p>
       </#if>
   </#list>
</#if>
<#if (sitemanagers?exists && sitemanagers?size &gt; 0)>
         <p>
            <span class="label">${msg("label.siteAdmin")}</span>
   <#list sitemanagers as sitemanager>
      <#if sitemanager.authority.authorityType = 'USER'>
            <a href="${url.context}/page/user/${sitemanager.authority.userName?url}/profile" class="theme-color-1">${sitemanager.authority.firstName?html}<#if sitemanager.authority.lastName != ""> ${sitemanager.authority.lastName?html}</#if></a><#if sitemanager_has_next>,</#if>
      <#else>
            <span>${sitemanager.authority.displayName?html}</span><#if sitemanager_has_next>,</#if>
      </#if>
   </#list>
         </p>
</#if>
         <p><span class="label">${msg("label.type")}</span>&nbsp;${msg("text." + profile.type?lower_case)}</p>
         <p><span class="label">${msg("label.visibility")}</span>&nbsp;${msg("text." + (profile.visibility!"unknown")?lower_case)}</p>
         <p><span class="label">${msg("ts-site-profile.siteMembersNbr")}</span>&nbsp;${profile.siteMembersNbr?html}</p>
         <p><span class="label">${msg("ts-site-profile.creationDate")}</span>&nbsp;${profile.creationDate}</p>
         <p>
            <button id="${args.htmlid}-btn-sendMailToAllMembers" title='${msg("ts-site-profile.sendMailToAllMembers")}'>
                    <img class="mailBtn" src="${url.context}/res/modules/ts/images/email-icon.png"/></button>
            <div id="${args.htmlid}-div-btn-abo" style="display:none;">
                <button id="${args.htmlid}-btn-subscribeDaily" title='${msg("ts-site-profile.subscribeDaily")}'>
                    <img class="mailBtn" src="${url.context}/res/modules/ts/images/calendar-selection-day-icon.png"/></button>
                <button id="${args.htmlid}-btn-subscribeWeekly" title='${msg("ts-site-profile.subscribeWeekly")}'>
                    <img class="mailBtn" src="${url.context}/res/modules/ts/images/calendar-selection-week-icon.png"/></button>
            </div>
            <div id="${args.htmlid}-div-btn-delete" style="display:none;">
                <button id="${args.htmlid}-btn-delete">
                    <img class="mailBtn" src="" id="${args.htmlid}-img-btn-delete"/></button>
            </div>
         </p>
      </div>
      <div class="clear"></div>
   </div>
</div>
/**
*版权所有(C)T&S。
*
*/
/**
*ts连接站点模块
*
* 
*
*@namespace Alfresco.module
*@class Alfresco.module.TsAbonnementSite
*/
(功能()
{
var Dom=YAHOO.util.Dom,
Event=YAHOO.util.Event,
Element=YAHOO.util.Element,
冒泡,冒泡,
KeyListener=YAHOO.util.KeyListener
nodeRef=“”;
/**
*创建站点构造函数。
*
*@param htmlId{string}此组件的唯一id
*@return{Alfresco.CreateSite}新的DocumentList实例
*@constructor
*/
Alfresco.module.TsSendMailToAllMembers=函数(containerId)
{
var instance=Alfresco.util.ComponentManager.get(this.id);
如果(实例!==null)
{
抛出新错误(“Alfresco.module.TsSendMailToAllMembers的实例已存在。”);
}
Alfresco.module.TsSendMailToAllMembers.superclass.constructor.call(这是“Alfresco.module.TsSendMailToAllMembers”,containerId,[“按钮”,“容器”,“连接”,“选择器”,“json]”);
归还这个;
};
YAHOO.extend(Alfresco.module.TsSendMailToAllMembers、Alfresco.component.Base、,
{
成员:[],
选项:{
站点ID:“
},
onReady:函数TS_onReady()
{
this.widgets.sendMailToAllMembersButton=Alfresco.util.createYUIButton(this,“btn sendMailToAllMembers”,this.showSendMailForm);
this.widgets.sendMailToAllMembersButton.set(“className”,“mailBtn mailToAllMembersBtn”);
冒泡.on('selectDecelAllChanged',this.selectDecelAllChanged);
冒泡.on('selectDeclemberChanged',this.selectDeclemberChanged);
},
showSendMailForm:function()
{
//对话框显示前截取
var doBeforeDialogShow=函数TsSendMailToAllMembers\u doBeforeDialogShow(
p_表单,p_对话框){
Alfresco.util.populateHTML(
[p_dialog.id+“-dialogTitle”,this.msg(“label.sendMailToAllMembersForm.title”),
[p_dialog.id+“-dialogHeader”,this.msg(“label.sendMailToAllMembersForm.header”),
[p_dialog.id+“-members label”,this.msg(“label.sendMailToAllMembersForm.members”),
[p_dialog.id+“-subject label”,this.msg(“label.sendMailToAllMembersForm.subject”),
[p_dialog.id+“-body label”,this.msg(“label.sendMailToAllMembersForm.body”),
[p_dialog.id+“-ok label”,this.msg(“label.sendMailToAllMembersForm.btn.send.mail”),
[p_dialog.id+“-cancel label”,this.msg(“label.sendMailToAllMembersForm.btn.cancel”);
p_dialog.dialog.header.innerHTML=this.msg(“label.sendMailToAllMembersForm.dialog.title”);
get(p_dialog.id+“-shortName”).value=this.options.siteId;
tinyMCE.init({
模式:“精确”,
元素:p_dialog.id+“-body”,
将字体转换为跨度:false,
主题:"先进",,
宽度:“100%”,
主题高级按钮1:“粗体、斜体、下划线、|、粗线、粗线、|、前彩色、|、撤消、重做、删除格式”,
主题\高级\工具栏\位置:“顶部”,
主题\高级\工具栏\对齐:“左”,
主题\高级\状态栏\位置:“底部”,
主题\u高级\u大小调整:错误,
主题\高级\按钮2:空,
主题\高级\按钮3:空,
主题\u高级\u路径:错误,
语言:“fr”
});
Alfresco.util.Ajax.request(
{
url:Alfresco.constants.PROXY_URI+“api/sites/”+this.option