Connect with TEAM at Collaborate14 in Las Vegas

April 1, 2014

Las Vegas, NV – Venetian and Sands Expo Center

April 7th – April 11th

Want to learn how to deliver enterprise video inside WebCenter Portal and retain ownership of your content?

Want to learn how to utilize the digital asset management power of WebCenter Content with ATG Web Commerce?

Want to find low-cost, fast ROI implementations of WebCenter solutions?

Resolve all the questions you have about Oracle WebCenter and Enterprise Content Management by joining TEAM at  Collaborate 2014 in Las Vegas, NV. April 7th-11th. Stop by our booth #1348 on Main Street for our product demonstrations, talk with our WebCenter Experts, and be sure to catch our customer presentation from Faribault Foods:

 

Session: 724 

Title: Solving Enterprise Content Management for Small Business: Faribault Foods

Time: Wed, Apr 09, 2014 (02:00 PM – 03:00 PM)  

Level 3, San Polo 3502

 

For scheduled times and locations look here.

Collaborate 2014

April 7th-11th

Venetian and Sands Expo Center

Las Vegas, NV

Set up a time to speak with members of TEAM at Collaborate.

 


WebCenter CK Editor Customization – WebCenter Portal

February 18, 2014

By: Andreja Sambolec – Application Consultant

For creating new blogs or wikis, the WebCenter CK Editor (text editor) is used. Using CK Editor we have options to edit text, add tables, embed images and videos…

In this demonstration we are going to embed video.

You can edit the HTML and add the <iframe> component, but it will be deleted after saving changes or switching between tabs.

To avoid this, we customized the task-flow which contains this editor.

The page fragment we changed is
oracle.webcenter.doclib.view.jsf.taskflow.richTextEditor.editHTML.jsff.

We figured that the problem is caused by the converter added to <rte:editor> component so we deleted it (No other problems arise because of those changes):

<rte:editor id=”rte value=”#{pageFlowScope.rte.HTMLTextArea}”
converter=”#{pageFlowScope.rte.HTMLConverter}” />

Next we wanted to have an icon for embedding videos to enhance and simplify the user experience.

embedvideo

When a user clicks on the icon a list of videos will be displayed inside of a dialog box:

ckeditor

When a user clicks on the OK button, the video should be added as part of the iframe in the editor.

The Tag Library used for this component is rte-taglib.jar, we need change this library.

Changed files are:

  • ckeditor.js (add new plugin)

j.video={init:function(m){m.addCommand(‘video’, new a.dialogCommand(‘video’));m.ui.addButton(‘Video’,{label:m.lang.video,icon:this.path+’images/video_qualifier.png’,command:’video’});a.dialog.add(‘video’, this.path + ‘dialogs/video.js’);}};j.add(‘video’, j.video);

  • config.js (declare a new plugin):

config.extraPlugins = ‘wclinkexist,wclinknew,wcimage,video,snippet,tools’; config.toolbar_WC = [ …. [‘WCLinkExist’,’WCLinkNew’,’WCImage’,’Video’,’-‘], …. ];

  • Lang/en.js (new labels for the video plugin)

…..

video : ‘Embed Video’,

videodialog :

{

title                   : ‘Select video’,

},

……

To display the video dialog, we created a new plugin and added it to the plugins folder

(META-INF\adf\oracle\webcenter\doclib\rte\jsLibs\ckeditor\plugins\video).

‘video’ folder contains two subfolders: ‘images’ folder (contains icon image to open the dialog  box) and ‘dialog’ folder (contains dialog.js file with logic to display videos and create <iframe>  in the editor when closing the dialog box)

Now to add some content inside of the dialog box and pass some value to the editor, you can check the source of other plugins as help (I used the Colordialog plugin).

This is the code snippet to add <iframe> in the editor when the user clicks on the OK button:

var dialog = this,

data = {},

iframe = c.createElement( ‘iframe’ ),

div = c.createElement(‘div’);

obj.commitContent( data );

div.setAttribute(‘class’, ‘video’);

iframe.setAttribute( ‘src’, ‘urlValue’);

iframe.setAttribute( ‘width’, ‘620’ );

iframe.setAttribute( ‘width’, ‘349’ );

iframe.setAttribute( ‘frameborder’, ‘0’);

iframe.appendTo(div);

a.insertElement(div);

This was done in WebCenter Portal 11.1.1.8 but is compatible with 11.1.1.7 and 11.1.1.6., as well.

If you have any questions, or would like to talk to someone from TEAM, contact us!


WebCenter Portal – Access to WC Spaces Services over REST running on Oracle VM from your Mobile Application

December 18, 2013

By: Andreja Sambolec – Application Consultant

Developing ADF Mobile application – accessing WC services running on VM

If you are using the Oracle SOA Suite/BPM Suite VirtualBox Appliance (Pre-Built Developer VM for Oracle VM VirtualBox) and want to start developing an ADF Mobile application accessing WC Spaces REST services running on this VM, you have to make sure:

  • Your mobile device and local machine have access to the same wireless network
  • NAT is selected as the available network mode on your VM

portal1

  • To check Port Forwarding

potral2

Now you can access WebCenter Spaces from your mobile device or from your local machine using IP address of your local machine: http://192.168.1.33:8888/rest/api/resourceIndex

In your ADF Mobile application, create a new connection:

portal3

If you want use programmatic approach for Spaces REST Service invocation, use the following:

RestServiceAdapter restServiceAdapter = Model.createRestServiceAdapter();
restServiceAdapter.clearRequestProperties();
restServiceAdapter.setConnectionName(“WCRest”);
restServiceAdapter.setRequestType(RestServiceAdapter.REQUEST_TYPE_GET);
String theUsername = “weblogic”;
String thePassword = “welcome1”;
String userPassword = theUsername + “:” + thePassword;
String encoding = new sun.misc.BASE64Encoder().encode(userPassword.getBytes());
restServiceAdapter.addRequestProperty(“Authorization”, “Basic ” + encoding);
restServiceAdapter.addRequestProperty(“Accept”, “application/json; charset=UTF-8”);
restServiceAdapter.addRequestProperty(“Content-Type”, “application/json; charset=UTF-8”);

restServiceAdapter.setRetryLimit(0);

restServiceAdapter.setRequestURI(“/rest/api/resourceIndex”);

try {

System.out.println(restServiceAdapter.send(“”));

} catch (Exception e) {

e.printStackTrace();

}

Using ADB tool and command adb logcat, you can see the part of the response as a result of the command System.out.println(restServiceAdapter.send(“”)):

{“version”:”11.1.1.6.0″,”resourceType”:”urn:oracle:webcenter:
resourceindex”,”links”:[{“href”:”http://192.168.1.33:8888/rest/api/discussions/forums?utoken=FJnkGqA-W6YrfhjgagLvMj_AJapY_w**&#8221;,”template”:”http://192.168.1.33:8888/rest/api/discussions/forums?startIndex={startIndex}&itemsPerPage={itemsPerPage}&utoken=FJnkGqA-W6YrfhjgagLvMj_AJapY_w**”,”resourceType”:”urn:oracle:webcenter:discussions:forums”,”capabilities”:”urn:oracle:webcenter:read”},{“href”:”http://192.168.1.33:8888/rest/api/preferences/general?utoken=FJnkGqA-W6YrfhjgagLvMj_AJapY_w**&#8221;,”resourceType”:”urn:oracle:webcenter:preferences:general”,”capabilities”:”urn:oracle:webcenter:read”},{“href”:”http://192.168.1.33:8888/rest/api/spaces/siteresources?utoken=FJnkGqA-W6YrfhjgagLvMj_AJapY_w**&#8221;,”template”:”http://192.168.1.33:8888/rest/api/spaces/siteresources?projection={projection}&q={q}&utoken=FJnkGqA-W6YrfhjgagLvMj_AJapY_w**”,”resourceType”:”urn:oracle:webcenter:spaces:siteresources”,”capabilities”:”urn:oracle:webcenter:read”},{“href”:”http://192.168

After the above verification of access to WebCenter Spaces REST Services you can continue with development.

Running into trouble? Want to have a chat with members from TEAM? Contact us here.


Oracle WebCenter Suite & Microsoft Office 365 – Understanding the Differences

November 21, 2013

By: Raoul Miller – Enterprise Architect

Improving collaboration and content management are important goals for many organizations today and the choice of products to help is wide.  Understanding the differences between the different platforms and vendors is very important for anyone looking to start an initiative in order for them to get the best value for their investment.  TEAM is a long-term Oracle partner, but is also a Microsoft partner so we are well-positioned to help clients decipher the differences between the two sets of products and decide what is best for their organization – now and in the future. Click here or the picture below to be taken to a comparison paper of the features  of Oracle WebCenter and MS365.

Ovs365


TEAM Quick Tip: Using ADF and The jQuery.dotdotdot Plugin

October 29, 2013

By: Andreja Sambolec – Application Consultant

ellipses picThis blog will provide instructions on how to use the jQuery.dotdotdot plugin together with ADF Faces using JDeveloper 11.1.1.6. The purpose of the plugin is to cut the text and show ellipsis to indicate that there is more text than currently visible. It’s also possible to add the “read more” link and put it AFTER the ellipsis.

elipses

You can find more information about this plugin and download it from

http://dotdotdot.frebsite.nl/

In our project we are using this plugin to cut the text and show ‘read-more’ link. The main problem was the “read-more” link didn’t work using af:commandLink. The purpose of the link in our case was to navigate to some other page. To get this to work we had to use a combination of an HTML link and ADF command link. The HTML link was used to show the link on the page and simulate the click on the ADF command link to perform navigation (this could also be a backing bean action call).

The implementation steps were:

1.  Download jQuery library and jQuery.dotdotdot plugin.

2.  Save the libraries into the public-html/lib folder:

elip2

3.  Add those libraries as resources on the page (inside of af:document):

<af:resource type=”javascript” source=”/lib/jquery-1.10.2.min.js”/>
<af:resource type=”javascript” source=”/lib/jquery.dotdotdot.min.js”/>

4. Add component containing the content and link:

<af:panelGroupLayout id=”pgl1″ clientComponent=”true”>

<div id=”dotid” class=”dotcontent” style=”height:132px;overflow:hidden;”>

<af:panelGroupLayout  clientComponent=”true” id=”pgl2″>

 <af:outputText value=”Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry’s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry’s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.”  clientComponent=”true” id=”ot1″/>

</af:panelGroupLayout>

<a id=”rm-link” class=”rm-link” onclick=”readMoreContent()” style=”cursor:pointer;color:#688FCF;”> Read  More</a>

</div>

</af:panelGroupLayout>

5. Add ADF invisible command link which will perform the navigation:

<div>

<af:commandLink text=”Read more invisible” action=”details”

styleClass=”rm-invisible” clientComponent=”true”
id=”rm-invisible” visible=”false”/>

</div>

6. Create javascript function to call dotdotdot plugin and simulate click on ADF command link:

<af:resource type=”javascript”>

function Dot() {
$(“.rm-invisible“).on(‘simulate_click’, function () {

document.getElementById($(this).attr(‘id’)).click();
});

$(“.dotcontent“).dotdotdot( {

after : “a.rm-link“, callback : hideLinkIfNoTruncationAlert, watch: “window”

 });

 }
//it’s executed after dotdotdot function to hide the link if text is not cut
function hideLinkIfNoTruncationAlert(isTruncated, origContent) {

 if (!isTruncated) {

 $(‘.rm-link‘, this).remove();

 }

 }
//simulate click on ADF link to execute navigation

 function readMoreContent() {

$(“.rm-invisible“).trigger(‘simulate_click’);

  };

</af:resource>

7. Add af:clientListener to af:document to call the function after the page is loaded:

<af:clientListener type=”load” method=”Dot”/>

If you need to cut some text inside of the page fragment, you also need to add af:clientListener to the parent page.  Alternatively you can set ControllerClass, which implements the RegionController interface, to the pageDef file and call the javascript function from the refreshRegion method.

Now you can use the jQuery.dotdotdot plugin together with ADF Faces using JDeveloper 11.1.1.6. Cutting the text and showing the ellipsis to indicate that there is more text can really clean up your pages. Using a “read more” link provides another form of navigation to direct your visitors to content faster. For more information on ADF and other WebCenter questions, please reach out to us!


WebCenter Portal 11g Best Practices – Policy Store Migration

August 13, 2013

Background:

WebCenter Portal 11g uses a policy store to maintain your application’s security policies and grants those policies to users and groups of the application.  By default, the policy store is stored within an XML file located at: [domain directory]/config/fmwconfig/system-jazn-data.xml. WebCenter supports migrating the policy store to an LDAP or database repository. Examples of when the policy store is updated are:

  • – Spaces are added or deleted
  • – Pages are added or deleted
  • – User or Group access is changed

These changes are part of the regular maintenance of a Portal or Spaces application and therefore the policy store needs to be scalable for a production implementation.

To maintain Oracle support, a production-implemented WebCenter Portal 11g policy store must reside in an LDAP or database repository. The migration can be done through the Enterprise Manager application or through the WebLogic Scripting (WLST) command line tool. Details of those steps are covered within Oracle’s documentation, which can be found here for the 11.1.1.6 WebCenter Portal implementation:

http://docs.oracle.com/cd/E23943_01/webcenter.1111/e12405/wcadm_security_credstore.htm#BABGJEHC

To migrate the policy store to a database the Open Platform Security Services (OPSS) schema needs to be installed through the Repository Creation Utility (RCU)  and the datasource assigned within the WebLogic console.  This is the same process that’s used to install the WebCenter schemas during the initial implementation.

Best Practice:

Perform the policy store migration as soon as possible after the initial environment has been verified and before beginning any customizations to the WebCenter Portal application. This will reduce the chance of errors during the migration.

Before the policy store migration make sure to back-up the following files as there is not an automated script to rollback the migration if there are issues:

  • – [domain]/config/fmwconfig/jps-config.xml
  • – [domain]/config/fmwconfig/system-jazn-data.xml

Rolling back these two files will change the domain back to a file-based policy store.

Issue with client that did not migrate the policy store:

I have recently been assisting a client with their production WebCenter Spaces 11g environment that could no longer create any new spaces. Prior to this error, the client created a new space and noticed that their admin user could no longer access the administrative screens and lost other application and space permissions.

The client’s production spaces application was using a file-based policy store and through analysis and backup of the system-jazn-data.xml file we noticed that any increase to this file would trigger the policy store to not load properly. With this client’s environment the system-jazn-data.xml file was approximately 2.5MB in size when this issue occurred but we were able to recreate the issue with Oracle’s assistance in other environments with varying file sizes.  Rather than an exact file size issue it seemed to be an issue on how the application loads this data from the file.

Working with Oracle Support, our next step was to migrate the policy store to the database in our Test environment. We added the OPSS schema through RCU and added the OPSS datasource within our WebLogic console. Using Enterprise Manager we migrated the policy store to the database. We then restarted our domain and logged into our Spaces application. Immediately after login we were redirected to an “Unauthorized” page and the redirect was happening infinitely.

After further analysis it seemed there was a separate issue where the system-jazn-data.xml had duplicate grants within the file. Any duplicate grants actually caused the policy store migration to fail, but no message was sent to the UI of this error. With Oracle Support’s assistance, we manually removed the duplicate grants from the system-jazn-data.xml file and re-performed the database policy store migration.  It was successful.

It is still unknown how these duplicate policy store grants were added to the policy store file, but that is why the best practice is to migrate from the file-based policy store to a database or LDAP repository before any customizations (i.e. Spaces or Pages) are added to the application to prevent any issues during the migration.

After the policy store migration we were able to successfully create spaces. We successfully tested creation of 100 spaces in the WebCenter Spaces application. This satisfied the client, and the issue was resolved. We then performed the same policy store migration to a database within the production system and regression tested. We saw the same successful results and were able to create new spaces again.

If you have questions about WebCenter Portal, trust TEAM to answer them. Contact us today.


TEAM’s Customer, Mortenson Construction, Makes the Cover of Oracle Profit Magazine!

August 9, 2013

TEAM was excited to share when Mortenson Construction was awarded Oracle’s 2012 Industry Excellence Award for Engineering and Construction at Oracle OpenWorld last year. TEAM led the architecture and development of the WebCenter Spaces and WebCenter Content 11g implementations of their ProjectConnect application, and the project continues to receive great recognition. Now Mortenson has made the cover of Oracle Profit Magazine!

Check out the article.

mortmagazineDesign. Connect. Build.

Mortenson Construction helps large project teams collaborate and share information—on and off the construction site.

by David Baum, August 2013

 

 

 

 

If you want your own award winning project, contact TEAM today!