Publish Now

Hi

I’d like to implement the publish now function which i take it is like the site root flagged/unflagged in 5.7 (cannot find any docs about it). When I try and access the EI_Publish_Now menu entry in the workbench I get the following error:

Unable to create this part due to an internal error. Reason for the failure: ‘READ’ access to the resource with id ‘459,561,501,684’ was denied for the current user.

com.percussion.client.PSModelException: ‘READ’ access to the resource with id ‘459,561,501,684’ was denied for the current user.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:104)
at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:90)
at com.percussion.webservices.faults.PSError.getDeserializer(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.axis.encoding.ser.BaseDeserializerFactory.getSpecialized(BaseDeserializerFactory.java:154)
at org.apache.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(BaseDeserializerFactory.java:84)
at org.apache.axis.encoding.DeserializationContext.getDeserializer(DeserializationContext.java:467)
at org.apache.axis.encoding.DeserializationContext.getDeserializerForType(DeserializationContext.java:550)
at org.apache.axis.encoding.ser.BeanDeserializer.getDeserializer(BeanDeserializer.java:514)
at org.apache.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeserializer.java:286)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1060)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:230)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.percussion.webservices.uidesign.UiDesignSOAPStub.loadActions(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

I though it might be my implementation but I’ve checked on another 6.5 and I get the same behaviour.

Any clues?

Cheers
James

That’s odd. Normally, if you don’t have READ access, you shouldn’t even see the object in the WB. Try this, look at the ACL by right clicking and choosing security. See if your user has an entry, or some role the user is in has an entry. If you don’t have, attempt to modify the ACL. That will probably fail. You (or someone) will need to use a login that shows Admin access in the ACL. This will allow you to change the ACL and add permissions for yourself (or preferably, the your role(s.))

Hi Paul

I can’t view the security due to my inital post.

PSModelException:
com.percussion.client.PSModelException: com.percussion.client.PSModelException: ‘READ’ access to the resource with id ‘459,561,501,684’ was denied for the current user.

‘READ’ access to the resource with id ‘459,561,501,684’ was denied for the current user.

Cheers
James

I’ll assume you are an administrator. Probably the easiest way to fix this is to clear the ACL from the db. This is straight-forward, but tedious. The permissions are stored in 3 tables and must be deleted ‘from the bottom up.’
If you are not comfortable with SQL, you need to get someone who is to help with this. Since you are modifying the DB directly, be very careful and create backups first. Once the ACL is deleted, everyone will have full design access until a new ACL is created. But it will not be visible in any community. When complete, restart the server and WB. You should now have access to the object.

  1. Hi-light the menu action and look at the Properties view. Look at the 3 part id. Record the 2nd part (the object type, it should be 107) and the 3rd part (the UUID.)
  2. Perform a search on the PSX_ACLS table WHERE OBJECTTYPE=107 and OBJECTID=<UUID>. Record the returned ID.
  3. Perform a search on the PSX_ACLENTRIES table WHERE ACLID=<id found in step 2>. Record all IDs returned.
  4. Perform a delete on table PSX_ACLENTRYPERMISSIONS where ENTRYID in (list of ids found in step 3).
  5. Delete the entries found in step 3 from PSX_ACLENTRIES table.
  6. Delete the entry found in step 2 from the PSX_ACLS table.

Hi Paul

I’ve successfully removed the acl entries for the UI item and I’m able to load it in the workbench.

However when I preview the content list that Ive created to list the items that are flagged in the CX tree no values are returned.

The content list I’ve created uses the SelectedItemsGenerator and I’ve assigned the correct site id using SiteTemplateExpander. I’ve played around with different combinations of Item Filter, Authorization Type and Contexts.

Can you explain how this works or point me in the directions of some documentation?

Cheers
James

The publish now action calls the publisher with the ids that were selected. The publisher stores them until the clist generator retrieves them.

In general, you can’t preview the content list for demand publishing as the items are not known until you select 1 or more and choose the Publish now action. If, after doing this, you quickly went and previewed the list, the list would not be empty (unless the items got filtered due to other properties of the clist.)

Ahh I see, it’s for publishing individual items.

So how do I setup publishing to publish out folder content based on the “publish in special edition” folder checkbox using 6.5.2?

Cheers
James

James,

You would need to define a legacy Content List to use this flag. It’s really there for backwards-compatibility with systems upgraded from Version 5.x. See “Setting Up Mixed-mode Publishing” in Configuring Rhythmyx FastForward for Web Content Management for details about using this flag. (This is a Version 5.71 document, so some implementation details will be different.)

I’m not sure what you gain from this approach rather than using the JCR query in a 6.x Content List, which is simpler to implement. The WHERE clause of the JCR query would specify the Folder whose contents you want to publish rather than ending with the “%” character, which selects the contents of all Subfolders.

In addition, the JCR query gives you the option of selecting only specific Content Types, which is not an option using flagged Folders.

RLJII

I thought I’d make the procedures of post #4 a little easier.

delete from psx_aclentrypermissions where entryid in (select id from psx_aclentries where aclid in (select id from psx_acls where psx_acls.objectid in (select actionid from rxmenuaction where rxmenuaction.name='EI_Publish_Now') and psx_acls.objecttype='107'));
delete from psx_aclentries where aclid in (select id from psx_acls where psx_acls.objectid in (select actionid from rxmenuaction where rxmenuaction.name='EI_Publish_Now') and psx_acls.objecttype='107');
delete from psx_acls where psx_acls.objectid in (select actionid from rxmenuaction where rxmenuaction.name='EI_Publish_Now') and psx_acls.objecttype='107';
commit;