import java.util.Map;
import mir.entity.adapter.EntityAdapter;
+import mir.generator.Generator;
/**
+ * Interface to allow for localized changed to the workings of the admin system
*
- * <p>Title: Interface to allow for localized changed to the workings of the admin system</p>
* @author Zapata
- * @version 1.0
*/
public interface MirAdminInterfaceLocalizer {
*/
public String makePasswordDigest(String aPassword);
-
/**
+ * Allows different "generators" (templates) to be used for certain pages
*
+ * @param aPage The identifier of the page
+ * @param aUser the user (can be used to allow different users to see different pages
+ * @param aDefault The default generator
* @return
*/
- public List simpleCommentOperations();
+ public String getAdminPageGenerator(String aPage, Map aTemplateData, EntityAdapter aUser, String aDefault) throws MirLocalizerExc;
/**
+ * Prepares an article preview
*
- * @param aName
- * @return
+ * @param aPreviewPage there may be different preview pages for a single article.
+ * (i.e. the same article may lead to different pages) this parameter selects one
+ * of those versions. See also {@link #getPreviewPages}.
+ * @param anArticle the article to be previewed
+ * @param aContext the context to be supplied to the generator
+ * @return the generator to be used to generate the preview
*/
- public MirSimpleEntityOperation simpleCommentOperationForName(String aName);
+ public Generator prepareArticlePreview(String aPreviewPage, EntityAdapter anArticle, Map aContext)
+ throws MirLocalizerExc, MirLocalizerFailure;
+ /**
+ * Return the available preview variations of one article
+ */
+ public List getPreviewPages(EntityAdapter anArticle) throws MirLocalizerExc, MirLocalizerFailure;
+ /**
+ * Get the {@link List} of {@link EntityOperation}s available for comments
+ */
+ public List simpleCommentOperations();
+
+ /**
+ * Get the {@link List} of {@link EntityOperation}s available for articles
+ */
public List simpleArticleOperations();
- public MirSimpleEntityOperation simpleArticleOperationForName(String aName);
- public interface MirSimpleEntityOperation {
+ public interface EntityOperation {
+ /**
+ * Returns the name of the operation. Must be unique and immutable.
+ */
public String getName();
- public boolean isAvailable(EntityAdapter anEntity);
- public void perform(EntityAdapter aUser, EntityAdapter anEntity);
+
+ /**
+ * Is the operation valid for the given {@link EntityAdapter}
+ */
+ public boolean isAvailable(EntityAdapter anEntity) throws MirLocalizerExc, MirLocalizerFailure;
+
+ /**
+ * perform the operation on the given {@link EntityAdapter} as the given user
+ */
+ public void perform(EntityAdapter aUser, EntityAdapter anEntity) throws MirLocalizerExc, MirLocalizerFailure;
}
}
\ No newline at end of file