Выравнивание инструментов страницы сайта Sakai

Я хочу настроить конфигурацию инструмента сайта сакаи, подобную этому формату, с помощью макетов. но по умолчанию в сакаи макет возможен двойной макет или одинарный макет. на самом деле мне нужна комбинация как первой строки - макета с двумя столбцами, так и оставшихся макетов с одним столбцом.

пожалуйста, скажите мне, есть ли возможность сделать это. или дайте мне руководство, как настроить. здесь я вставил изображение, я хочу, чтобы инструмент выровнялся, как это

Заранее благодарим https://i.stack.imgur.com/Xjy17.png

выравнивание инструментов сайта


person sarath    schedule 16.12.2013    source источник


Ответы (1)


наконец его работа, я сделал это. Пожалуйста, предоставьте любые предложения, если это необходимо для большей гибкости или какой-либо другой способ сделать это.

Ядро

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 (selected)

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-Portal

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;
}
person sarath    schedule 17.01.2014
comment
Есть ли шанс превратить это в патч и отправить его на jira.sakaiproject.org? - person Steve Swinsburg; 08.06.2014