예제 #1
0
 public void broadcast(FacesEvent event) throws AbortProcessingException {
   super.broadcast(event);
   if (event != null) {
     FacesContext facesContext = FacesContext.getCurrentInstance();
     String type = getType();
     UIData uiData = getUIData();
     File output = createFile(facesContext, type, uiData);
     setResource(new FileResource(output));
     getResource();
     JavascriptContext.addJavascriptCall(
         facesContext,
         "Ice.DataExporters['" + getClientId(facesContext) + "'].url('" + getPath() + "');");
   }
 }
  private void renderKindEditorJavascipt(FacesContext facesContext, UIComponent uiComponent) {
    KindEditor ke = (KindEditor) uiComponent;

    ke.loadJavaScript();

    //    String editorId=ke.getId();
    String clientId = uiComponent.getClientId(facesContext);

    String htmlContent = "";
    String htmlContentEscaped = "";
    if (ke.getValue() != null) {
      htmlContent = (String) ke.getValue();
      htmlContentEscaped = StringEscapeUtils.escapeHtml(htmlContent);
    }
    String contextPath = facesContext.getExternalContext().getRequestContextPath();
    log.debug("contextPath:" + contextPath);

    // 三种方式调用kindeditor脚本:直接调用、使用外部配置文件、使用组件属性配置
    // 如果不使用JQuery扩展,则直接调用kindeditor的脚本
    StringBuffer scriptCall = new StringBuffer();
    String scriptPath = ke.getBaseURI().getPath(); // 调用getBaseURI()方法会自动装载javascript相关的资源

    if (ke.getUsingJQueryExt() == false) {
      scriptCall.append(
          "try{\n"
              + "KE.remove('"
              + clientId
              + "');\n"
              + "}"
              + "catch(e){;}\n"
              + "KE.init({\n"
              + " id:'"
              + clientId
              + "',\n"
              + " imageUploadJson:'"
              + contextPath
              + "/uploadJson',\n"
              + " fileManagerJson:'"
              + contextPath
              + "/fileManagerJson',\n"
              + " allowFileManager:true,\n"
              + " allowUpload:true,\n"
              + " skinsPath:'"
              + scriptPath
              + "skins/',\n"
              + " pluginsPath:'"
              + scriptPath
              + "plugins/',\n"
              + " height:'"
              + ke.getHeight()
              + "',\n"
              + " width:'"
              + ke.getWidth()
              + "',\n"
              + " skinType:'"
              + ke.getSkin()
              + "',\n"
              + " items:"
              + ke.getItems()
              + "\n"
              + "});\n"
              + "KE.create('"
              + clientId
              + "');");
    }
    // 优先使用外部配置文件
    else if (ke.getExtConfigPath() != null && ke.getExtConfigPath().length() > 0) {
      JavascriptContext.includeLib(ke.getExtConfigPath(), facesContext);
      String configProfile = ke.getConfigProfile();
      JavascriptContext.addJavascriptCall(
          facesContext,
          configProfile
              + ".editorId='"
              + clientId
              + "';\n"
              + configProfile
              + ".baseURL='"
              + scriptPath
              + "';\n"
              + configProfile
              + ".contextPath='"
              + contextPath
              + "',\n"
              + "new KindEditorExt("
              + configProfile
              + ").setupWhenDocumentIsReady();");
    }
    // 使用页面中的组件属性值构造配置
    else {
      scriptCall.append(
          "new KindEditorExt(\n"
              + "new KindEditorConfig(\n"
              + "'"
              + clientId
              + "',\n"
              + "'"
              + ke.getBaseURI().getPath()
              + "',\n"
              + "'"
              + ke.getHeight()
              + "',\n"
              + "'"
              + ke.getWidth()
              + "',\n"
              + "'"
              + ke.getSkin()
              + "',\n"
              + "'"
              + contextPath
              + "',\n"
              + ke.getItems()
              + "\n"
              + ")\n"
              + ").setupWhenDocumentIsReady();");
    }
    if (scriptCall.length() > 0) {
      DOMContext domContext = DOMContext.attachDOMContext(facesContext, uiComponent);
      if (!domContext.isInitialized()) {
        Element script = domContext.createRootElement(HTML.SCRIPT_ELEM);
        script.setAttribute(HTML.TYPE_ATTR, "text/javascript");
        script.setAttribute(HTML.ID_ATTR, ClientIdPool.get(clientId + "script"));
        script.appendChild(domContext.createTextNode(scriptCall.toString()));
      }
    }
  }