CSS Content through StylesFilter

Having trouble installing <oXygen/>? Got a bug to report? Post it all here.
maxim.kovalev
Posts: 35
Joined: Fri Nov 11, 2011 10:34 am

CSS Content through StylesFilter

Post by 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.

mihaela
Posts: 226
Joined: Wed May 20, 2009 2:40 pm

Re: CSS Content through StylesFilter

Post by 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
http://www.oxygenxml.com

maxim.kovalev
Posts: 35
Joined: Fri Nov 11, 2011 10:34 am

Re: CSS Content through StylesFilter

Post by 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

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

I hope for your help

mihaela
Posts: 226
Joined: Wed May 20, 2009 2:40 pm

Re: CSS Content through StylesFilter

Post by 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
http://www.oxygenxml.com

maxim.kovalev
Posts: 35
Joined: Fri Nov 11, 2011 10:34 am

Re: CSS Content through StylesFilter

Post by 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

mihaela
Posts: 226
Joined: Wed May 20, 2009 2:40 pm

Re: CSS Content through StylesFilter

Post by 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
http://www.oxygenxml.com

maxim.kovalev
Posts: 35
Joined: Fri Nov 11, 2011 10:34 am

Re: CSS Content through StylesFilter

Post by 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

mihaela
Posts: 226
Joined: Wed May 20, 2009 2:40 pm

Re: CSS Content through StylesFilter

Post by 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
http://www.oxygenxml.com

maxim.kovalev
Posts: 35
Joined: Fri Nov 11, 2011 10:34 am

Re: CSS Content through StylesFilter

Post by 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

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

figured out
used class of DITAXMLReaderWrapper
thanks

Post Reply