From 9729018fa407aac34388d24713e77a2fbd82f044 Mon Sep 17 00:00:00 2001 From: zapata Date: Sat, 19 Apr 2003 14:07:30 +0000 Subject: [PATCH] publicurl's for comments and articles --- source/default.properties | 14 ++- .../basic/MirBasicDataModelLocalizer.java | 125 ++++++++++++++------- 2 files changed, 96 insertions(+), 43 deletions(-) diff --git a/source/default.properties b/source/default.properties index a5e74d60..480ce82f 100755 --- a/source/default.properties +++ b/source/default.properties @@ -150,6 +150,10 @@ ServletModule.FileEdit.FileDirectory=/pub/Dokumente/Indymedia/de-tech/Mir/produc 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 @@ -234,11 +238,11 @@ Producer.Icon.BigText=text_big.gif 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! # @@ -246,10 +250,10 @@ Producer.HTML2FOStyleSheet=/some/dir/mir/etc/producer/html2fo.xsl 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 # diff --git a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java index e7d7857b..597248bd 100755 --- a/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java +++ b/source/mircoders/localizer/basic/MirBasicDataModelLocalizer.java @@ -31,51 +31,62 @@ 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; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Vector; + +import mir.config.MirPropertiesConfiguration; +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.ParameterExpander; +import mir.util.RewindableIterator; +import mircoders.entity.EntityUploadedMedia; +import mircoders.global.MirGlobal; +import mircoders.localizer.MirAdminInterfaceLocalizer; +import mircoders.localizer.MirDataModelLocalizer; +import mircoders.localizer.MirLocalizerExc; +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 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 { @@ -117,6 +128,8 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { 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())); } @@ -142,6 +155,8 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { 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())); @@ -251,7 +266,7 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } protected class FilteredField implements EntityAdapterDefinition.CalculatedField { - String fieldName; + private String fieldName; public FilteredField(String aFieldName) { fieldName = aFieldName; @@ -272,6 +287,40 @@ public class MirBasicDataModelLocalizer implements MirDataModelLocalizer { } } + 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 { -- 2.11.0