ServletModule.FileEdit.ExtFilter=.*\.inc$
ServletModule.FileEdit.Recursive=0
+# Settings allowing the admin interface to show what the public urls are:
+Article.PublicUrl=/en/${date.formatted.yyyy}/${date.formatted.MM}/${id}.shtml
+Comment.PublicUrl=/en/${to_content.date.formatted.yyyy}/${to_content.date.formatted.MM}/${to_content.id}.shtml
+
#
#
# DYNAMIC SITE CONFIG
Producer.HTML2FOStyleSheet=/some/dir/mir/etc/producer/html2fo.xsl
# the following lines are used to construct PDFs on the fly from one or more articles
-# for the moment, if you want to change anything else about your pdfs, you
+# for the moment, if you want to change anything else about your pdfs, you
# will have to learn some java!
#
-# keep in mind that there may not be enough room for all the text you enter as the
-# value of one these options, if text doesn't appear, the only easy thing to do is
+# keep in mind that there may not be enough room for all the text you enter as the
+# value of one these options, if text doesn't appear, the only easy thing to do is
# use less text!
#
PDF.Title=INDYMEDIA SOMEWHERE
-# about two lines of small text which will appear at the bottom of every page
+# about two lines of small text which will appear at the bottom of every page
PDF.Footer=Indymedia does blah. Content is good, and free to use for non-commercial purposes under the Open Content license. if you have questions, email someone.
-
+
#
# the size paper your target audience will likely have in their printers. pick one of A4 or LETTER
#
package mircoders.localizer.basic;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-
-import mir.entity.Entity;
-import mir.entity.adapter.EntityAdapter;
-import mir.entity.adapter.EntityAdapterDefinition;
-import mir.entity.adapter.EntityAdapterModel;
-import mir.log.LoggerWrapper;
-import mir.media.MediaHelper;
-import mir.media.MirMedia;
-import mir.util.RewindableIterator;
-import mircoders.entity.EntityUploadedMedia;
-import mircoders.global.MirGlobal;
-import mircoders.localizer.MirAdminInterfaceLocalizer;
-import mircoders.localizer.MirDataModelLocalizer;
-import mircoders.localizer.MirLocalizerFailure;
-import mircoders.storage.DatabaseArticleType;
-import mircoders.storage.DatabaseAudio;
-import mircoders.storage.DatabaseBreaking;
-import mircoders.storage.DatabaseComment;
-import mircoders.storage.DatabaseCommentStatus;
-import mircoders.storage.DatabaseContent;
-import mircoders.storage.DatabaseImageType;
-import mircoders.storage.DatabaseImages;
-import mircoders.storage.DatabaseLanguage;
-import mircoders.storage.DatabaseMedia;
-import mircoders.storage.DatabaseMediaType;
-import mircoders.storage.DatabaseMediafolder;
-import mircoders.storage.DatabaseMessages;
-import mircoders.storage.DatabaseOther;
-import mircoders.storage.DatabaseTopics;
-import mircoders.storage.DatabaseUploadedMedia;
-import mircoders.storage.DatabaseUsers;
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Vector;\r
+\r
+import mir.config.MirPropertiesConfiguration;\r
+import mir.entity.Entity;\r
+import mir.entity.adapter.EntityAdapter;\r
+import mir.entity.adapter.EntityAdapterDefinition;\r
+import mir.entity.adapter.EntityAdapterModel;\r
+import mir.log.LoggerWrapper;\r
+import mir.media.MediaHelper;\r
+import mir.media.MirMedia;\r
+import mir.util.ParameterExpander;\r
+import mir.util.RewindableIterator;\r
+import mircoders.entity.EntityUploadedMedia;\r
+import mircoders.global.MirGlobal;\r
+import mircoders.localizer.MirAdminInterfaceLocalizer;\r
+import mircoders.localizer.MirDataModelLocalizer;\r
+import mircoders.localizer.MirLocalizerExc;\r
+import mircoders.localizer.MirLocalizerFailure;\r
+import mircoders.storage.DatabaseArticleType;\r
+import mircoders.storage.DatabaseAudio;\r
+import mircoders.storage.DatabaseBreaking;\r
+import mircoders.storage.DatabaseComment;\r
+import mircoders.storage.DatabaseCommentStatus;\r
+import mircoders.storage.DatabaseContent;\r
+import mircoders.storage.DatabaseImageType;\r
+import mircoders.storage.DatabaseImages;\r
+import mircoders.storage.DatabaseLanguage;\r
+import mircoders.storage.DatabaseMedia;\r
+import mircoders.storage.DatabaseMediaType;\r
+import mircoders.storage.DatabaseMediafolder;\r
+import mircoders.storage.DatabaseMessages;\r
+import mircoders.storage.DatabaseOther;\r
+import mircoders.storage.DatabaseTopics;\r
+import mircoders.storage.DatabaseUploadedMedia;\r
+import mircoders.storage.DatabaseUsers;\r
import mircoders.storage.DatabaseVideo;
public class MirBasicDataModelLocalizer implements MirDataModelLocalizer {
private EntityAdapterModel model;
protected LoggerWrapper logger;
+ protected MirPropertiesConfiguration configuration;
- public MirBasicDataModelLocalizer() {
+ public MirBasicDataModelLocalizer() throws MirLocalizerFailure, MirLocalizerExc {
model=null;
logger = new LoggerWrapper("Localizer.DataModel");
+
+ try {
+ configuration = MirPropertiesConfiguration.instance();
+ }
+ catch (Throwable e) {
+ throw new MirLocalizerFailure("Can't get configuration: " + e.getMessage(), e);
+ }
}
public EntityAdapterModel adapterModel() throws MirLocalizerFailure {
anEntityAdapterDefinition.addCalculatedField("children", new ContentToChildrenField());
anEntityAdapterDefinition.addCalculatedField("parent", new ContentToParentField());
+ anEntityAdapterDefinition.addCalculatedField("publicurl", new ExpandedField(configuration.getString("Article.PublicUrl")));
+
anEntityAdapterDefinition.addCalculatedField("operations",
new EntityToSimpleOperationsField(MirGlobal.localizer().adminInterface().simpleArticleOperations()));
}
anEntityAdapterDefinition.addCalculatedField("to_all_media_video", new CommentToMediaField( "video", false));
anEntityAdapterDefinition.addCalculatedField("to_all_media_other", new CommentToMediaField( "otherMedia", false));
+ anEntityAdapterDefinition.addCalculatedField("publicurl", new ExpandedField(configuration.getString("Comment.PublicUrl")));
+
anEntityAdapterDefinition.addCalculatedField("description_parsed", new FilteredField("description"));
anEntityAdapterDefinition.addCalculatedField("operations",
new EntityToSimpleOperationsField(MirGlobal.localizer().adminInterface().simpleCommentOperations()));
}
protected class FilteredField implements EntityAdapterDefinition.CalculatedField {
- String fieldName;
+ private String fieldName;
public FilteredField(String aFieldName) {
fieldName = aFieldName;
}
}
+ protected class ExpandedField implements EntityAdapterDefinition.CalculatedField {
+ private String expression;
+
+ public ExpandedField(String anExpression) {
+ expression = anExpression;
+ }
+
+ public Object getValue(EntityAdapter anEntityAdapter) {
+ try {
+ return ParameterExpander.expandExpression(anEntityAdapter, expression);
+ }
+ catch (Throwable t) {
+ throw new RuntimeException(t.getMessage());
+ }
+ }
+ }
+
+ protected class EvaluatedField implements EntityAdapterDefinition.CalculatedField {
+ private String expression;
+
+ public EvaluatedField(String anExpression) {
+ expression = anExpression;
+ }
+
+ public Object getValue(EntityAdapter anEntityAdapter) {
+ try {
+ return ParameterExpander.evaluateExpression(anEntityAdapter, expression);
+ }
+ catch (Throwable t) {
+ throw new RuntimeException(t.getMessage());
+ }
+ }
+ }
+
protected class ContentToParentField implements EntityAdapterDefinition.CalculatedField {
public Object getValue(EntityAdapter anEntityAdapter) {
try {