Using the powercontent extension to store data in a XML block

Author Message

Jon Arvid Ludviksen

Monday 22 August 2011 4:00:59 am

To improve my site I'm using the powercontent extension for some simple publishing.
It's working great for both Text block and Text line. But now I'm trying to use it with a XML block and am having trouple getting content on multiple lines.
Input gets stored in one paragraph:

 ...
 <paragraph xmlns:tmp="http://ez.no/namespaces/ezpublish3/temporary/">123</paragraph>
 ...

When in fact it should be stored like this:

 ...
 <paragraph>
 <line xmlns:tmp="http://ez.no/namespaces/ezpublish3/temporary/">1</line>
 <line xmlns:tmp="http://ez.no/namespaces/ezpublish3/temporary/">2</line>
 <line xmlns:tmp="http://ez.no/namespaces/ezpublish3/temporary/">3</line>
 </paragraph>
 ...

I don't need the ezoe-toolbar as I'm just using this for simple quick publishing. Therefore my textarea just looks like the one I use for Text block:

 <textarea name="powercontent_message_xml_ContentObjectAttribute_data_text_pcattributeid"> </textarea>

Any tips on how I could achieve this and how I should go about it?

Jon Arvid Ludviksen

Wednesday 24 August 2011 12:37:32 am

Really?!

Nobody has any suggestions on which direction I should take to solve this. I've hit a dead end...

Update:

I found a solution and for future reference her it is. I haven't tested it extensively or gone live with it yet. But it looks like it will do the trick, other suggestions are still welcome!

in powercontent/modules/powercontent/action.php i added this function

 function htmlToXML($html) {
    $xml = $html;
    $xml = str_replace( "\r", "<br/>", $xml );
    
    $parser = new eZSimplifiedXMLInputParser(0,  false, false);
    $document = $parser->process($xml);
  if ( !is_object( $document ) ) {
      return null;
  }
    
    $domString = eZXMLTextType::domString($document);
    return $domString;
}

And then replaced

 $http->setPostVariable( $newPostVariable, $postValue );

with

 $dataTypeString = $dataMap[$possibleAttributeIdentifier]->attribute( 'data_type_string' );


 if ( $dataTypeString == "ezxmltext" )
 {
         eZDebug::writeNotice( 'Found XML block attribute: ' . $possibleAttributeIdentifier );    
         $postValue = htmlToXML(trim($postValue));
 }
$http->setPostVariable( $newPostVariable, $postValue );

PS: I'm still not getting namespaces on the line-tags but will look into that as well.

Nicolas Pastorino

Thursday 25 August 2011 1:02:45 am

Hi Jon Arvid, 

While i do not know powercontent in-depth, it seems like your workaround/solution corresponds to a common need. How about pushing it into the extension directly ? 
You could request membership to the team there : http://projects.ez.no/powercontent/team/members (you need to be logged-in).

Cheers,

--
Nicolas Pastorino
Director Community - eZ
Member of the Community Project Board

eZ Publish Community on twitter: http://twitter.com/ezcommunity

t : http://twitter.com/jeanvoye
G+ : http://plus.tl/jeanvoye

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.

eZ debug

Timing: Jan 29 2025 13:34:15
Script start
Timing: Jan 29 2025 13:34:15
Module start 'layout'
Timing: Jan 29 2025 13:34:15
Module start 'content'
Timing: Jan 29 2025 13:34:15
Module end 'content'
Timing: Jan 29 2025 13:34:15
Script end

Main resources:

Total runtime0.0138 sec
Peak memory usage2,048.0000 KB
Database Queries3

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0051 588.3906151.2422
Module start 'layout' 0.00510.0021 739.632836.7188
Module start 'content' 0.00730.0051 776.351694.9531
Module end 'content' 0.01240.0013 871.304733.9766
Script end 0.0137  905.2813 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.002316.8799140.0002
Check MTime0.00117.7542140.0001
Mysql Total
Database connection0.00074.763110.0007
Mysqli_queries0.002215.841330.0007
Looping result0.00000.088410.0000
Template Total0.00096.910.0009
Template load0.00075.257310.0007
Template processing0.00021.593510.0002
Override
Cache load0.00053.643010.0005
General
dbfile0.00118.130580.0001
String conversion0.00000.057240.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 1
 Number of unique templates used: 1

Time used to render debug report: 0.0001 secs