2013-12-16 15 views
1

我想使用佈局來定製像這種格式的sakai站點工具配置。但是默認情況下,在sakai佈局中可以採用雙佈局或單佈局。實際上,我需要結合第一行是雙列布局和其餘單列布局。Sakai Site頁面工具對齊

請告訴我有什麼選擇做這樣this.or我提供指導如何定製。在這裏我正在插入的圖片,我想這樣的

在此先感謝 http://i.stack.imgur.com/Xjy17.png

site tool alignments

工具對準

回答

2

最後它的工作我做到了。如有需要,請提供任何建議,以獲得更大的靈活性或任何其他方式。

內核

Sitepage.java: -

添加

public static final int LAYOUT_MY_CUSTOM = 2; 

BaseSitepage.java:-

變化這在

protected BaseSitePage(BaseSiteService siteService, Site site, String id, String title, String layout, 
      boolean popup) 
    {} 

if (layout.equals(String.valueOf(LAYOUT_SINGLE_COL))) 
     { 
      m_layout = LAYOUT_SINGLE_COL; 
     } 
     else if (layout.equals(String.valueOf(LAYOUT_DOUBLE_COL))) 
     { 
      m_layout = LAYOUT_DOUBLE_COL; 
     } 
     else if(layout.equals(String.valueOf(LAYOUT_MY_CUSTOM))){ 
      m_layout = LAYOUT_MY_CUSTOM; 
     } 
And 
protected BaseSitePage(BaseSiteService siteService, Site site, String id, String title, String layout, 
      boolean popup) 
    {} method 
else if(layout.equals(String.valueOf(LAYOUT_MY_CUSTOM))){ 
      m_layout = LAYOUT_MY_CUSTOM; 
     } 
And 
public void setLayout(int layout) 
    { 
     if ((layout == LAYOUT_SINGLE_COL) || (layout == LAYOUT_DOUBLE_COL) || (layout == LAYOUT_MY_CUSTOM)) 
     { 
      m_layout = layout; 
     } 
     else 
      M_log.warn("setLayout(): set to invalid value: " + layout); 
    } 

BaseSiteService.java:-

public String[] getLayoutNames() 
    { 
     String[] rv = new String[3]; 
     rv[0] = rb.getString("sitpag.lay_sngl"); 
     rv[1] = rb.getString("sitpag.lay_dbl"); 
     rv[2] = rb.getString("sitpag.lay_cust1"); 
      return rv; } 

門戶: - 在該方法中

註釋以下代碼

public void includePage(PortalRenderContext rcontext, HttpServletResponse res, 
      HttpServletRequest req, Session session, SitePage page, 
      String toolContextPath, String wrapperClass) throws IOException 
    { 
rcontext.put("pageColumnLayout", (page.getLayout()==SitePage.LAYOUT_DOUBLE_COL) ? "col1of2": "col1"); 

和替換代碼

if(page.getLayout() == SitePage.LAYOUT_DOUBLE_COL){ 
       rcontext.put("pageColumnLayout","col1of2"); 

    } 
else if(page.getLayout() == SitePage.LAYOUT_MY_CUSTOM){ 
     rcontext.put("pageColumnLayout","SingleDouble"); 
    } 
else{ 
    rcontext.put("pageColumnLayout","col1"); 
} 

,並更改

rcontext.put("pageTwoColumn", Boolean 
        .valueOf(page.getLayout() == SitePage.LAYOUT_DOUBLE_COL || page.getLayout() == SitePage.LAYOUT_MY_CUSTOM)); 

And 
// do the second column if needed 
      if (page.getLayout() == SitePage.LAYOUT_DOUBLE_COL ||page.getLayout() == SitePage.LAYOUT_MY_CUSTOM) 

網站管理: -

SiteAction.java

添加自定義佈局,下面的方法8990線

private void addSynopticTool(SitePage page, String toolId, 
      String toolTitle, String layoutHint) { 

     if (page.getContainingSite() != null) { 
      if (page.getLayout() != SitePage.LAYOUT_SINGLE_COL || page.getLayout() != SitePage.LAYOUT_MY_CUSTOM|| !page.getContainingSite().isCustomPageOrdered()) { 
       page.setLayout(SitePage.LAYOUT_DOUBLE_COL); 
      } 
     } 
} 

OSP工具

XSltcharon門戶: -

XsltrenderContext。Java的: -

評論以下

/*pageElement.setAttribute("layout", (context.get("pageColumnLayout") 
        .equals("col1")) ? "0" : "1");*/ 

而且隨着

String selectedLayout="0"; 
      //context.put("pageColumnLayout","SingleDouble"); 

      if(context.get("pageColumnLayout").equals("col1of2")){ 
       selectedLayout="1"; 
      } 
      else if(context.get("pageColumnLayout").equals("SingleDouble")){ 
       selectedLayout="2"; 
      } 
      else{ 
       selectedLayout="0"; 
       } 

更換和添加​​以下語句,如果(選擇)

if(context.get("pageColumnLayout").equals("SingleDouble")){ 

       Element column3 = doc.createElement("column"); 
       Element column4 = doc.createElement("column"); 
       Element column5 = doc.createElement("column"); 
       column3.setAttribute("index","3"); 
       column4.setAttribute("index","4"); 
       column5.setAttribute("index","5"); 

       LinkedList l1=new LinkedList(); 
       LinkedList l2=new LinkedList(); 
       LinkedList all=new LinkedList(); 
       List column0Tools=(List)context.get("pageColumn0Tools"); 
List column1Tools=(List)context.get("pageColumn1Tools"); 

    if(column0Tools !=null){ 
     l1.add(column0Tools.get(0)); 
        column3.appendChild(createColumnToolsXml(doc,l1, page)); 
      column0Tools.remove(0); 
      if(column0Tools !=null) 
{ 
       all.addAll(column0Tools);    

       } 
      columns.appendChild(column3); 
      if(column1Tools !=null && column1Tools.size()>0) 
{ l2.add(column1Tools.get(0));     column4.appendChild(createColumnToolsXml(doc,l2, page)); 
        column1Tools.remove(0); 
        if(column1Tools !=null){ 
        all.addAll(column1Tools); 
        } 

       } 
       columns.appendChild(column4); 
        if(all !=null){ 
        column5.appendChild(createColumnToolsXml(doc,all, page)); 
        } 
        columns.appendChild(column5);    



      } 

OSP-門戶

OSP-portal.xsl: -

添加以下內容portal.xslt和OSP-portal.xsl在

<!-- 
    ===============match single and Double============ 
    process a selected page with two column layouts 
    param:content - "true" or "false" if rendering tool content or tool list 
    ========================================================= 
    --> 
<xsl:template match="page[@layout='2' and @selected='true']"> 
     <xsl:param name="content"/> 
     <xsl:if test="$content='true'"> 
     <xsl:call-template name="page-content-custom"> 
      <xsl:with-param name="page" select="."/> 
     </xsl:call-template> 
     </xsl:if> 
     <xsl:if test="$content='false'"> 
     <li> 
      <a accesskey="1" class="selected" href="#"> 
       <xsl:attribute name="accesskey"> 
        <xsl:value-of select="../../@order"/> 
       </xsl:attribute> 
       <xsl:value-of select="title"/> 
      </a> 
     </li> 
     </xsl:if> 
    </xsl:template> 


<!--Custom Sarath --> 

<xsl:template name="page-content-custom"> 
     <xsl:param name="page" /> 
    <h1 class="skip"> 
    <xsl:value-of select="$externalized/entry[@key='sit.contentshead']" /> 
    </h1> 
    <a id="tocontent" class="skip" name="tocontent"></a> 
    <div id="content"> 
     <div id="col1of2"> 
     <div class="portlet"> 
     <p class="pageId">$page</p> 
        <xsl:for-each select="$page/columns/column[@index='3']/tools/tool"> 
         <xsl:call-template name="tool"> 
          <xsl:with-param name="tool" select="." /> 
         </xsl:call-template> 
        </xsl:for-each> 
       </div> 
      </div> 
      <div id="col2of2"> 
       <div class="portlet"> 
        <xsl:for-each select="$page/columns/column[@index='4']/tools/tool"> 
         <xsl:call-template name="tool"> 
          <xsl:with-param name="tool" select="." /> 
         </xsl:call-template> 
        </xsl:for-each> 
       </div> 
      </div> 
      <div id="col1"> 
       <div class="portlet"> 

        <xsl:for-each select="$page/columns/column[@index='5']/tools/tool"> 
         <xsl:call-template name="tool"> 
          <xsl:with-param name="tool" select="." /> 
         </xsl:call-template> 
        </xsl:for-each> 

       </div> 
      </div> 
     </div> 
    </xsl:template> 

Portal.css文件

#col1_new{ 
    padding-right: .0em; 
clear:both; 
} 
#col1of2_new{ 
    width: 51%; 
    */width: 48%; 
    float: left; 
    margin: 0; 
    margin-left: 0.3em; 
} 

#col2of2_new{ 
    width: 48%; 
    */width: 48%; 
    float: right; 
} 
+0

任何機會,你可以把它工作到一個補丁並提交到https://jira.sakaiproject.org? –