Hide Sign Out Link in Liferay 6.2 Dockbar - liferay

In Liferay 6.1, we created a hook to hide the sign out link in the dockbar. However, when I look at the code for 6.2, I see the following:
<c:if test="<%= themeDisplay.isShowSignOutIcon() %>">
<aui:nav-item cssClass="sign-out" href="<%= themeDisplay.getURLSignOut() %>" iconCssClass="icon-off" label="sign-out" />
</c:if>
No matter how much I google, I can't find any reference to themeDisplay.isShowSignOutIcon(), aside from the API reference, which does me no good, as it is not commented at all. I did find the page that discusses the native LR theme properties and apparently determining whether to show/hide a sign out linkn is not one of the native theme properties.
Does anyone know if you can set the theme itself to show/hide the sign out link and how you would go about doing it?

I too analyzed ServicePreAction code, and found that all this code does is:
checks if the user is logged in or not
if yes, shows 'sign out' link, not otherwise
You can simply create a hook to override html/portlet/dockbar/view_user_account.jspf to either remove that code snippet from this jsp to hide it for all scenarios OR modify the condition to show/hide as per your requirements.

The only place that I've found where ThemeDisplay.setShowSignOutIcon is called is in ServicePreAction (linking master branch here). That being said, it looks like it's not configurable, but you can easily create another ServicePreAction in a hook. Please see an example in this plugin (referencing portal.properties and liferay-hook.xml, but naturally there's also code that I'm sure you'll find. It's not big)
Another option - if you just want to unconditionally get rid of the link: Use CSS to hide it. Yes, it will still be there, but any way you choose to hide the link, the actopm at /c/portal/logout will still be available...

Related

openNtf debugToolbar UI is overridden by extLib's Bootstrap3 theme

This relates to an Xpages project using openNtf's Extension Library for Domino 9.0.1 V 16 (2016-01-28). There is a custom theme applied that extends extLib's Bootstrap3 theme.
Now I also applied Mark Leusink's debugToolbar Plugin (V 4.0.1, 2014-03-10).
Unfortunately all tables that are display inside the toolbar are partially "destroyed", as in this example:
Debugging the resulting html I see that the "label" cells of the debug table are assigned class="label" or class="label wide". Unfortunately bootstrap.css applies a display: inline style to a .label selector.
Currently I solved this by applying my own custom css file to reset toolbar styling; but I wonder whether there might be a more elegant way, maybe some kind of property that I simply missed out here. Or is this something that have to be done within the toolbar's source code?
Please add this as a defect on the project, so the contributor is aware and can resolve.
Alternatively, download the source code from https://github.com/OpenNTF/DebugToolbar, contribute the fix and make a pull request.
Hopefully Paul's and my entries at github and within the openntf.org project will help resolving this issue. Meanwhile my workaround seems to be the only option here;
As I mentioned above I created a custom styleSheet with just one line in it:
div.dBar table.grid td.label{display:table-cell;}
Then I created a cusom control as a container for the debug toolbar so that I could link my custom style sheet as a resource. The debug custom control finally is added to all the xpages where I want to have the toolbar.
Maybe this can help others, too.

Optimize Visualforce Page for Salesforce1

I created a simple visualforce page to override the standard salesforce.com page for "New" and "Edit" for a Custom Object.
It is pretty simple, it was just because in the standard salesforce.com page the textarea was not wide enough, since the form is splitted in two columns. (Or am I wrong? Is there a way to accomplish that without creating a custom visualforce page?)
Well, here is the code:
<apex:page standardController="Object__c">
<apex:sectionHeader title="Object Edit" subtitle="{!if(Object__c.id==null,'New Object',Object__c.Name)}"/>
<apex:form >
<apex:pageBlock title="Object Edit" mode="edit">
<apex:pageblockbuttons >
<apex:commandbutton action="{!save}" value="Save"/>
<apex:commandbutton action="{!cancel}" value="Cancel"/>
</apex:pageblockbuttons>
<apex:pagemessages />
<apex:pageblockSection title="Basics" columns="2">
<apex:inputField value="{!Object__c.Field1__c}"/>
... more fields
</apex:pageblockSection>
<apex:pageblocksection title="Details" columns="1">
<apex:inputField value="{!Object__c.Field10__c}"/>
... more fields
</apex:pageblocksection>
</apex:pageBlock>
</apex:form>
</apex:page>
Ok, the page looks good on force.com, but when I open it from within the salesforce1-App on my iPad it has the same style like on force.com and not the nice styling like the other (standard salesforce.com page-)forms in the salesforce1-App?
To get the styling right, consider using the Mobile Design Templates: https://developer.salesforce.com/en/mobile/services/mobile-templates/templates-faq.
I think you would also benefit from reviewing this slide deck: http://www.slideshare.net/developerforce/visualforce-in-salesforce1-1-1. It specifically asks developers to avoid using pageBlocks in Salesforce1. The author of those slides is Sandeep Bhanot, who, in general, is a great person to connect to on Twitter/Youtube, etc, for all your Salesforce1 needs.
You can have textarea span 2 columns in std page layout by putting it to separate section and setting columns to 1. Just hover over the section header, click the wrench icon on the right and you should get a popup like this:
I'd say for such change it's bit of an overkill to go full VF page route. But if you really need it or my trick won't work - there are few questions on Salesforce-dedicated site that might be a good start for you:
https://salesforce.stackexchange.com/questions/22290/sfdc-styleguide-usage-questions-in-salesforce1
https://salesforce.stackexchange.com/questions/25541/salesforce1-look-feel-in-visualforce
https://salesforce.stackexchange.com/questions/27788/how-to-do-visualforce-page-with-the-same-look-feel-as-salesforce1
https://salesforce.stackexchange.com/questions/37111/mobile-view-one-one-app-differs-from-native-salesforce1-view (not really related but it's my answer so :P Seriously though - the presentations I've linked to in that answer really helped me to kick off my development)

how to hide Showing result text in liferay Search Container?

I am using liferay search container to display list of information, but in that liferay search container by default display number of records like "Showing 2 results". But in my case i don't want to display this. How can I remove this? Also attached the image of search container.
Suggestions are welcome.
You can do this with Javascript as suggested by Felix Christy:
Here are the quick steps :
Go to "Manage Page" section of the desired page (page on which you
dont want to show this text)
Go to javascript section add the following, its Alloy UI javascript framework which comes bundled with liferay:
AUI().ready(
function(customA) {
customA.all('.taglib-page-iterator').hide(); // this would hide **all** the elements which have the class "taglib-page-iterator"
}
);
The above javascript code can be included in the custom portlet's JSP itself (note the method and selector which I have changed), like:
<aui:script>
AUI().ready(
function(customA) {
customA.one('#my-portletID .taglib-page-iterator').hide(); // this would hide only **one** element (the first it finds) which has the css class "taglib-page-iterator" under an element with id="my-portletID".
}
);
</aui:script>
Another possible solution through Hook:
You can create a hook as mentioned by Sandeep Nair to hide the results-text but you can put a condition to check to hide only if the URL of the page is for which you want to hide this or can have a condition to check for the particular portlet you want to hide this result-text.
So it will work normally for other pages and portlet, but will hide for your page and certain portlets which you define. This is an idea and have not tried it yet, but I think it would work. You can use the themeDisplay object which is available on JSP pages to retrieve the portlet-id.
Hope this helps.
Thanks to Felix Christy for suggesting the solution through Javascript.
I thought of converting my comments to an answer for better visibility to other members of this wonderful community.
It is because you are using page-iterator in your search container. When the records exceeds the default delta the message above will be replaced by showing-x-of-y-results alongside page numbers and controls for navigating to next pages.
If you dont want this then you have to modify the jsp page using hook. The name of the jsp is showing_x_results.jspf and following snippet is what you are looking for to modify in that.
<c:otherwise>
<c:choose>
<c:when test="<%= total != 1 %>">
<%= LanguageUtil.format(pageContext, "showing-x-results", numberFormat.format(total)) %>
</c:when>
<c:otherwise>
<%= LanguageUtil.format(pageContext, "showing-x-result", numberFormat.format(total)) %>
</c:otherwise>
</c:choose>
</c:otherwise>
In order to remove that String for some specific page, please put a jQuery/javascript on the page, which will hide that particular div/span which is showing that text.
In this case, it will not be shown on that page, but it will be available and will be rendered elsewhere.
Here are the quick steps :
Go to "Manage Page" section of the desired page (page on which you dont want to show this text)
Go to javascript section add this $('.taglib-page-iterator').hide();
This will only work, if you have included jquery.js in your theme. So please do it.
At present, hook (or ext if you want an extreme solution) is the only way you can do it.
Override the showing_x_results.jspf Fragment and comment/remove what's unnecessary.
The only "properties" that are configurable through the portal-ext.properties are these (LR 6.0.5)
#
# Set the available values for the number of entries to display per page. An
# empty value, or commenting out the value, will disable delta resizing.
# The default of 20 will apply in all cases.
#
# Always include 20, since it is the default page size when no delta is
# specified. The absolute maximum allowed delta is 200.
#
search.container.page.delta.values=5,10,20,30,50,75
#
# Set the maximum number of pages available above and below the currently
# displayed page.
#
search.container.page.iterator.max.pages=25
#
# Set this to false to remove the pagination controls above or below
# results.
#
search.container.show.pagination.top=true
search.container.show.pagination.bottom=true
You can find the latest (LR 6.1GA) Search Container properties explained here: http://www.liferay.com/es/documentation/liferay-portal/6.1/user-guide/-/ai/search-container
I wouldn't recommend hiding it from the client end as it will most likely break if you decide to upgrade your Liferay Installation. Hook is a safe way out.

Pagination on Single-Entry view in ExpressionEngine

I am building a website with ExpressionEngine as the CMS. There is a "Work" section that displays all the projects, and a detail view that shows each project individually. It is at this point, on the single-entry view that I would like to have "prev" and "next" pagination. In my tests I have made it work when the URL is "somedomain.com/index.php/work/detail/" but it does not work when the specific entry is part of the URL: "somedomain.com/index.php/work/detail/some_project/"
I've tried putting the pagination code outside of the {exp:weblog:entries} tag as well as within it, but to no avail. This is what my pagination code looks like:
{paginate}
<ul>
{if previous_page}
<li>< previous</li>
{/if}
{if next_page}
<li>next ></li>
{/if}
</ul>
{/paginate}
You are using pagination for lists of entries, what you need is the next / previous entry tags:
http://expressionengine.com/user_guide/modules/channel/entry_linking.html
Hmm. I'm not sure what the issue is here, as I've never used the {pagination} tag in that way. After checking out the docs, I see that the example code for prev/next links inside of the {pagination} tag is wrapped inside of an {exp:comment:entries} loop instead of the normal {exp:channel:entries} loop.
The docs aren't very clear about the scope of this particular feature of the {pagination} tag. You might want to double check that, in your {exp:channel:entries} loop, you haven't included pagination as a value in the disable parameter.
You could also check out the page in EE's user guide about Next/Prev Linking, which details the use of {exp:channel:next_entry} and {exp:channel:prev_entry} tags in place of the {pagination} tag that you've been using. I've used these tags without a hitch, so I definitely recommend trying them if you can't get your method to work.
Best of luck!

Solpart menu is ripping my soul apart!!! Not opening up in DNN

Please, someone tell me if there is a replacement for the rubbish Solpart menu, the menu with the small arrow to administer a module in DotNetNuke?
I have been using DNN for some time now and I would love to know if there is not a better way to get this menu working. I cannot believe DNN would let something as buggy as that out!
Thanks
You can use any menu for that drop down. You'd just swap out the solpartmenu for the one you want in the container you create. Here is a blog post outlining some of the menu options available. I'd suggest taking a look into each one of these and see which would be a good fit for you.
New Navigation Options in DotNetNuke 5.x Designers Should Know
Below is one (slightly updated) example from How to use RadMenu instead of the default solpartactions menu
Open an existing container for edit (a Default DNN container will work fine).
Register the RADMENUACTIONS tag by adding the following line of code: <%# Register TagPrefix="dnn" TagName="RADMENUACTIONS" Src="~/DesktopModules/RadMenu/RadMenuActions.ascx" %>
Replace <dnn:ACTIONS ... /> with <dnn:RADMENUACTIONS ... />
Set additional properties for RadMenu if desired. For example you can set the Skin property: <dnn:RADMENUACTIONS runat="server" id="dnnRADMENUACTIONS" Skin="CssGreen" />

Resources