2012-09-14 53 views
0

所以我已經能夠在Alfresco中弄清楚,有一種叫skin.css的表格,它允許我改變數據表項的高亮顏色。但是,我只希望能夠在工作流程中更改此屬性,而不是因爲它適用於整個Share網站中的所有數據列表元素。如何從Alfresco Javascript中訪問本地CSS文件?

首先,我有一個腳本根據規則啓動,並將任何更新/新文件移動到指定文件夾中,然後啓動該文件的工作流程。在開始工作流程時,包裝物品清單將與剛剛移動的文件/工作流程開始時的相同文件夾中的所有文件一起填充。下面是腳本:

function main() 
{ 
    var counter=0; 
    //Administrative Adjudication space/folder MUST exist under companyhome. 
    var rootSpaceName = companyhome.childByNamePath("mainFolder"); 

    //If the rootspacename is null (not previously created), then exit the program as we have nothing to do. 
    if(rootSpaceName == null) 
    { 
     logger.log("Company Home/mainFolder does not exist, so we have nothing to do."); 
     return; 
    } 
    else 
    { 
     logger.log("Company Home/mainFolder exists, so carry on our process."); 
     //Creates an array of all the children under the rootSpaceName 
     var childList = rootSpaceName.children; 
     //Creates a variable which counts the number of children in the childList array 
     var count = childList.length; 
     //var seconds = new Date().getTime()/1000; 

     //If there are no children in the rootSpaceName folder, exit the program. 
     if(count == 0) 
     { 
      logger.log("Company Home/mainFolder does not have child, nothing to do."); 
      return; 
     } 
     else 
     { 
      for(var i = 0; i < count; i++) 
      { 
       //Title MUST exist. 
       var childTitle = childList[i].properties["hearing:childTitle"]; 
       //Author MUST exist. 
       var childAuthor = childList[i].properties["hearing:childAuthor"]; 
       logger.log("childTitle: " + childTitle); 
       logger.log("childAuthor: " + childAuthor); 

       if(childTitle == null || childAuthor == null) 
       { 
        logger.log(i + ". Both the childTitle and childAuthor are null..."); 
        continue;        
       } 

       var child = childList[i]; 

       if(child.isContainer == false) 
       { 
        for(var j = 0; j < count; j++) 
        { 
         var newChildName = childList[j].properties.name; 
         logger.log("New child name: " + newChildName); 
         var newChild = childList[j]; 

         if((newChild.isContainer == true) && (childTitle == newChildName)) 
         { 
          logger.log("There is a currently existing folder with the same name as the title of original child"); 
          var newSpaceName = rootSpaceName.childByNamePath(newChildName); 
          var newChildList = newSpaceName.children; 
          var newCount = newChildList.length; 

          for(var k = 0; k < newCount; k++) 
          { 
           var newNewChildName = newChildList[k].properties.name; 
           var newNewchildAuthor = newChildList[k].properties.author; 
           var newNewChild = newChildList[k]; 

           if((newNewChild.isContainer == true) && (newNewchildAuthor == childAuthor)) 
           { 
            var currentSpace = newSpaceName.childByNamePath(newNewChildName);         

            if(child.isDocument == true) 
            { 
             //Only want the workflow to run once so we increment count 
             counter=counter+1; 
             child.move(currentSpace); 
             //If Count is 1, then run workflow 
             if(counter==1) 
             {     
              //starts HelloWorldUI workflow     
              var wfdef=workflow.getDefinitionByName("activiti$helloWorldUI"); 

              if(wfdef) 
              { 
               var wfparams=new Array(); 
               wfparams["bpm:workflowDescription"]=""; 
               wfparams["bpm:groupAssignee"]=people.getGroup("GROUP_Managers"); 

               var wfpackage=workflow.createPackage(); 
               var rootSpaceName=currentSpace; 
               var childList=rootSpaceName.children; 
               var count=childList.length; 

               //add all existing documents in the space to the workflow 
               for(var i = 0; i < count; i++) 
               { 
                wfpackage.addNode(childList[i]); 
               } 

               var wfpath=wfdef.startWorkflow(wfpackage,wfparams); 
               var tasks=wfpath.getTasks(); 

               for each(task in tasks) 
               { 
                task.endTask(null); 
               } 
              } 
             } 
            } 
           } 
          } 
         } 

         else 

         { 
          // If title folder is already created, not need to create again. 
          var newSpaceName = companyhome.childByNamePath("mainFolder/" + childTitle); 

          if(newSpaceName == null) 
          { 
           newSpaceName = rootSpaceName.createFolder(childTitle); 
           logger.log("mainFolder/" + childTitle + " is created."); 
          } 

          // If author folder is already created, not need to create again. 
          var newNewSpaceName = companyhome.childByNamePath("mainFolder/" + childTitle + "/" + childAuthor); 

          if(newNewSpaceName == null) 
          { 
           newNewSpaceName = newSpaceName.createFolder(childAuthor); 
           logger.log("mainFolder/" + childTitle + "/" + childAuthor + " is created."); 
          } 

          if(child.isDocument == true) 
          { 
           counter=counter + 1; 
           child.move(newNewSpaceName); 

           if(counter == 1) 
           { 
            var wfdef=workflow.getDefinitionByName("activiti$helloWorldUI"); 

            if(wfdef) 
            { 
             var wfparams=new Array(); 
             wfparams["bpm:workflowDescription"]=""; 
             wfparams["bpm:groupAssignee"]=people.getGroup("GROUP_Managers"); 
             var wfpackage=workflow.createPackage(); 
             var rootSpaceName=newNewSpaceName; 
             var childList=rootSpaceName.children; 
             var count=childList.length; 

             //add all items from the space to the workflow 
             for(var i = 0; i <c ount; i++) 
             { 
              wfpackage.addNode(childList[i]); 
             } 

             var wfpath=wfdef.startWorkflow(wfpackage,wfparams); 
             var tasks=wfpath.getTasks(); 

             for each(task in tasks) 
             { 
              task.endTask(null); 
             } 

            } 
           } 
           logger.log("Moving file " + child.properties.name); 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
    return; 
} 

main(); 

我希望能夠創造出某種可以被稱爲只有在工作流程的過程中訪問skin.css文件的功能,基本上在CSS設置.yui-skin-default tr.yui-dt-first{background-color:#FFF}文件。有誰知道我會怎麼做呢?

+1

您是否考慮過將自定義樣式表添加到瀏覽器中?不知道在其他瀏覽器中如何去做這件事,但Opera允許通過編輯一些.ini文件來實現這一點,並且能夠根據需要切換各個自定義樣式表。 – cimmanon

+0

那麼我寧願讓這適用於所有瀏覽器,如果可能的話。但是,如果將'skin.css'文件複製到一個新的CSS文件,修改我需要的一個部分,以及在工作流程內的舊文件和新文件之間進行切換,這將非常好。 –

+0

小書籤可能是您的不錯選擇。我以前從來沒有寫過,所以你需要做一些關於如何去做的研究。 – cimmanon

回答

1

如果你想改變只有在啓動工作流程頁, 你的CSS應該在start-workflow.css這是由start-workflow.get.head.ftl指出寫。這個CSS將在其他css文件中重寫,如skin.css。

就像這樣,你可以覆蓋任何CSS隻影響啓動工作流頁面而不是其他人。 您可以嘗試其他工作流相關頁面。

相關問題