CSS Content through StylesFilter

Having trouble installing <oXygen/>? Got a bug to report? Post it all here.

CSS Content through StylesFilter

Postby maxim.kovalev » Fri Nov 25, 2011 3:03 pm

At opening of file OxygenAutor uses following css for loading of pictures
Code: Select all
img {
   ...
    content: url("http://localhost:8888/images/", attr(src));
    ...
}


It is necessary for me that css changed in a program operating time, therefore I have redefined StyleFilter and have connected it through Extensions
Code: Select all
public class DITAStylesFilter implements StylesFilter {   
   private static final String IMAGE_TAG = "img";
   
   @Override
   public Styles filter (Styles styles, AuthorNode authorNode) {
      if (AuthorNode.NODE_TYPE_ELEMENT == authorNode.getType() && IMAGE_TAG.equals(authorNode.getName())) {
         try {
            styles.setProperty(
               Styles.KEY_PLACEHOLDER_CONTENT, new URL("http://localhost:8888/images/image.png"));
         } catch (MalformedURLException e) {
            e.printStackTrace();
         }
      }
      
      return styles;
   }
   
}


This filter is started, but replacement doesn't help. I can I specify incorrect parameter?
Thanks.
maxim.kovalev
 
Posts: 35
Joined: Fri Nov 11, 2011 10:34 am

Re: CSS Content through StylesFilter

Postby mihaela » Fri Nov 25, 2011 3:18 pm

The Styles.KEY_PLACEHOLDER_CONTENT refers to the placeholder-content CSS property, that allows you to decide what content should be displayed in Author for an empty element.
If you want to control the content of the element you have to use Styles.KEY_MIXED_CONTENT property key:

Code: Select all
public Styles filter (Styles styles, AuthorNode authorNode) {
  if (AuthorNode.NODE_TYPE_ELEMENT == authorNode.getType() &&
      IMAGE_TAG.equals(authorNode.getName())) {
    styles.setProperty(Styles.KEY_MIXED_CONTENT, new StaticContent[] {
        new URIContent("http://www.oxygenxml.com/img/", "logo_oxygen.png")
    });
  }

  return styles;
}


Regards,
Mihaela
Mihaela Calotescu
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
mihaela
 
Posts: 82
Joined: Wed May 20, 2009 2:40 pm

Re: CSS Content through StylesFilter

Postby maxim.kovalev » Tue Mar 06, 2012 11:47 am

Hi, Mihaela
Styles.KEY_MIXED_CONTENT I set for image tag, and all works.

What style should be set for the tag attributes conref?

Code: Select all
public Styles filter (Styles styles, AuthorNode authorNode) {
  if (AuthorNode.NODE_TYPE_ELEMENT == authorNode.getType()) {
   if(((AuthorElement)authorNode).getAttribute("conref")!=null){
     styles.setProperty(Styles.KEY_MIXED_CONTENT, new StaticContent[] {
         new URIContent("http://localhost:8888/images/", "concept_Topic.dita#Topic_reference_1_6/testID")
     });
   }
  }

  return styles;
}


If I do so, then get an error:

Unsupported image type for 'localhost:8888/images/concept_Topic.dita#Topic_reference_1_6/testID'
See the help documentation for workarounds.
localhost:8888/images/concept_Topic.dita#Topic_reference_1_6/testID
maxim.kovalev
 
Posts: 35
Joined: Fri Nov 11, 2011 10:34 am

Re: CSS Content through StylesFilter

Postby maxim.kovalev » Tue Mar 06, 2012 2:32 pm

I hope for your help
maxim.kovalev
 
Posts: 35
Joined: Fri Nov 11, 2011 10:34 am

Re: CSS Content through StylesFilter

Postby mihaela » Tue Mar 06, 2012 3:19 pm

Hi Maxim,

Changing or setting the content reference cannot be done from the StylesFilter.
What you have to do is to create a References Resolver extension that can resolves the content referred by the DITA conref attribute.

Here is our online documentation about Configuring a References Resolver:
http://www.oxygenxml.com/doc/ug-editor/ ... olver.html

To add the reference resolver extension to your document type you can modify the Extensions bundle or you can add an individual Reference resolver extension (see Document Type dialog->Extensions tab).
For your reference resolver you can start from our DITA implementation (ro.sync.ecss.extensions.dita.conref.DITAConRefResolver). You can find the source code in oxygenAuthorSDK.zip, samples/Oxygen Default Frameworks directory.

Please let me know if need more information.

Best Regards,
Mihaela
Mihaela Calotescu
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
mihaela
 
Posts: 82
Joined: Wed May 20, 2009 2:40 pm

Re: CSS Content through StylesFilter

Postby maxim.kovalev » Tue Mar 06, 2012 4:13 pm

Thanks, Mihaela

to add your StylesFilter I frameworks.zip your applet to add the following line dita.framework
Code: Select all
<field name="cssStylesFilterExtension">
   <String> Ro.sync.ecss.extensions.api.DITAStylesFilter </ String>
</ field>


and that we should add to dita.framework, for my AuthorReferenceResolver?

I added
Code: Select all
<field name="customReferencesResolver">      <String>ro.sync.ecss.extensions.api.DITAReferenceResolver</String>
</field>

but it does not work
maxim.kovalev
 
Posts: 35
Joined: Fri Nov 11, 2011 10:34 am

Re: CSS Content through StylesFilter

Postby mihaela » Tue Mar 06, 2012 5:23 pm

Hi Maxim,

ro.sync.ecss.extensions.api.DITAReferenceResolver is your Author refrence resolver implementation class?

Indeed, the Author reference resolver implementation class in stored in "customReferencesResolver" field in .frameworks file.

What do you mean by "it does not work"?
You could send us the error messages (if any) or applet console messages on our support email (support@oxygenxml.com). This could help us understand the source of your problem.

Regards,
Mihaela
Mihaela Calotescu
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
mihaela
 
Posts: 82
Joined: Wed May 20, 2009 2:40 pm

Re: CSS Content through StylesFilter

Postby maxim.kovalev » Tue Mar 06, 2012 5:34 pm

Hi,

Yes, ro.sync.ecss.extensions.api.DITAReferenceResolver is my Author refrence resolver implementation class

"it does not work" - does not go not in one of the implementation methods
maxim.kovalev
 
Posts: 35
Joined: Fri Nov 11, 2011 10:34 am

Re: CSS Content through StylesFilter

Postby mihaela » Tue Mar 06, 2012 5:43 pm

Is the jar that includes the ro.sync.ecss.extensions.api.DITAReferenceResolver class in the classpath (check the field named "classpath" from dita.frameworks)?

Regards,
Mihaela
Mihaela Calotescu
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
mihaela
 
Posts: 82
Joined: Wed May 20, 2009 2:40 pm

Re: CSS Content through StylesFilter

Postby maxim.kovalev » Tue Mar 06, 2012 6:50 pm

I'm sorry, it was necessary to clear the cache

implemented everything on http://www.oxygenxml.com/doc/ug-editor/ ... olver.html

but it was an ode to the problem

in
Code: Select all
<author conref="concept_Topic_reference_1.dita#Topic_reference_1_6/testID">Test</author>


came all the contents of the document "concept_Topic_reference_1.dita"

and not a single element "Topic_reference_1_6/testID"
maxim.kovalev
 
Posts: 35
Joined: Fri Nov 11, 2011 10:34 am

Re: CSS Content through StylesFilter

Postby maxim.kovalev » Tue Mar 06, 2012 7:36 pm

figured out
used class of DITAXMLReaderWrapper
thanks
maxim.kovalev
 
Posts: 35
Joined: Fri Nov 11, 2011 10:34 am


Return to Common Problems

Who is online

Users browsing this forum: No registered users and 0 guests