Author: fred
Date: 2007-08-16 19:03:40 +0000 (Thu, 16 Aug 2007)
New Revision: 14724
Modified:
trunk/plugins/Echo/src/plugins/echo/Echo.java
trunk/plugins/Echo/src/plugins/echo/Project.java
trunk/plugins/Echo/src/plugins/echo/ProjectManager.java
trunk/plugins/Echo/src/plugins/echo/block/Block.java
trunk/plugins/Echo/src/plugins/echo/block/BlockManager.java
trunk/plugins/Echo/src/plugins/echo/block/BlogrollBlock.java
trunk/plugins/Echo/src/plugins/echo/i18n/echo.i18n.en.properties
trunk/plugins/Echo/src/xml/edit.xsl
Log:
Continuing development of the block editor
Modified: trunk/plugins/Echo/src/plugins/echo/Echo.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/Echo.java 2007-08-16 18:02:31 UTC
(rev 14723)
+++ trunk/plugins/Echo/src/plugins/echo/Echo.java 2007-08-16 19:03:40 UTC
(rev 14724)
@@ -81,6 +81,8 @@
transform = new XSLTransform(styleSheet);
projectManager = new ProjectManager(BASE_DIR);
+ if(projectManager.countProjects() == 0)
+ projectManager.newProject("bleh");
setProject(projectManager.loadProject("001"));
} catch (Exception e) {
@@ -113,6 +115,7 @@
this.project = p;
this.nodesManager = project.getNodesManager();
+ this.blockManager = project.getBlockManager();
transform.setParameter("baseDir",
project.getProjectDir().getAbsolutePath() + "/");
}
@@ -150,6 +153,7 @@
String fileName = (new File(request.getPath())).getName();
String nodeId = request.getParam("node");
String catId = request.getParam("category");
+ String blockId = request.getParam("block");
if ("edit.css".equals(fileName) ||
"echo-logo-small-0.1.png".equals(fileName)) {
@@ -230,7 +234,25 @@
del.appendChild(object);
page.appendData(del);
page.appendData(getFormPassword());
-
+
+ } else if ("configureBlock".equals(fileName) && !
"".equals(blockId) ) {
+
+ Element configureBlock = new Element("configure-block");
+ page = new Page(configureBlock);
+ if(blockManager.blockExists(blockId)) {
+ Block block =
blockManager.getBlockById(blockId);
+ page.setTitle(i18n.getString("echo.block." +
block.getType().toString()));
+
+ if(block.isConfigurable())
+
configureBlock.appendChild(block.toXMLElement());
+ else
+ page.appendError("This block is not
configurable");
+
+ } else {
+ page.setTitle("Block");
+ page.appendError("Block not found");
+ }
+
} else if ("write".equals(fileName) ||
"manage".equals(fileName)) {
page = new Page();
@@ -410,6 +432,7 @@
}
}
} catch (Exception e) {
+ e.printStackTrace();
return e.getMessage();
}
Modified: trunk/plugins/Echo/src/plugins/echo/Project.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/Project.java 2007-08-16 18:02:31 UTC
(rev 14723)
+++ trunk/plugins/Echo/src/plugins/echo/Project.java 2007-08-16 19:03:40 UTC
(rev 14724)
@@ -47,7 +47,7 @@
}
- public BlockManager getBlockManger() {
+ public BlockManager getBlockManager() {
return blockManager;
Modified: trunk/plugins/Echo/src/plugins/echo/ProjectManager.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/ProjectManager.java 2007-08-16
18:02:31 UTC (rev 14723)
+++ trunk/plugins/Echo/src/plugins/echo/ProjectManager.java 2007-08-16
19:03:40 UTC (rev 14724)
@@ -63,8 +63,11 @@
configFile.close();
projects.put(id, projectDir);
- return loadProject(id);
+ Project project = loadProject(id);
+ project.getBlockManager().createDefaultBlocks();
+ return project;
+
} else
throw new IOException("Unable to make the project
directory");
@@ -79,6 +82,12 @@
}
}
+ public int countProjects() {
+
+ return projects.size();
+
+ }
+
public String[] getProjectsIds() {
return projects.keySet().toArray(new String[]{});
Modified: trunk/plugins/Echo/src/plugins/echo/block/Block.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/block/Block.java 2007-08-16
18:02:31 UTC (rev 14723)
+++ trunk/plugins/Echo/src/plugins/echo/block/Block.java 2007-08-16
19:03:40 UTC (rev 14724)
@@ -2,6 +2,7 @@
import nu.xom.Document;
import nu.xom.Element;
+import nu.xom.Attribute;
public abstract class Block {
@@ -35,16 +36,24 @@
public static final int BLOCK_ID_LENGTH = 3;
- protected Document doc;
protected Element block;
public Block(Document document) {
- this.doc = document;
this.block = document.getRootElement();
}
+ protected Block(String id, BlockType type) {
+
+ block = new Element("block");
+ block.addAttribute(new Attribute("id", id));
+ block.addAttribute(new Attribute("type", type.toString()));
+ block.addAttribute(new Attribute("position", "disabled"));
+ block.addAttribute(new Attribute("weight", "5"));
+
+ }
+
public abstract boolean isConfigurable();
public abstract BlockType getType();
@@ -81,13 +90,13 @@
public Element toXMLElement() {
- return block;
+ return (Element) block.copy();
}
public Document getDoc() {
- return doc;
+ return new Document((Element) block.copy());
}
Modified: trunk/plugins/Echo/src/plugins/echo/block/BlockManager.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/block/BlockManager.java 2007-08-16
18:02:31 UTC (rev 14723)
+++ trunk/plugins/Echo/src/plugins/echo/block/BlockManager.java 2007-08-16
19:03:40 UTC (rev 14724)
@@ -31,11 +31,9 @@
Block block = null;
Document doc = parser.build(f);
String type =
doc.query("/block/@type").get(0).getValue();
- System.err.println(">>>>>>" + type);
switch (Block.BlockType.value(type)) {
case BLOG_ROLL:
block = new BlogrollBlock(doc);
-
System.err.println(">>>>>>>bleh");
break;
}
@@ -51,6 +49,12 @@
}
+ public boolean blockExists(String id) {
+
+ return blocks.containsKey(id);
+
+ }
+
public String[] getIds() {
return blocks.keySet().toArray(new String[]{});
@@ -67,15 +71,25 @@
return blocksTable;
}
- public void write(Block block) throws IOException { // TODO : exists in
HashMap,.
+ public void write(Block block) throws IOException {
String id = block.getId();
+ if(!blocks.containsKey(id))
+ blocks.put(id, block);
+
Serializer serializer = new Serializer(new
FileOutputStream(blocksDir.getPath() + File.separator + id + ".xml"));
serializer.setIndent(4);
serializer.setMaxLength(128);
serializer.write(block.getDoc());
}
+
+ public void createDefaultBlocks() throws IOException {
+
+ Block blogroll = new BlogrollBlock("001");
+ write(blogroll);
+
+ }
}
\ No newline at end of file
Modified: trunk/plugins/Echo/src/plugins/echo/block/BlogrollBlock.java
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/block/BlogrollBlock.java
2007-08-16 18:02:31 UTC (rev 14723)
+++ trunk/plugins/Echo/src/plugins/echo/block/BlogrollBlock.java
2007-08-16 19:03:40 UTC (rev 14724)
@@ -10,11 +10,11 @@
public class BlogrollBlock extends Block {
-// public BlogrollBlock (String id) {
-//
-// super(id, Block.BlockType.BLOG_ROLL);
-//
-// }
+ public BlogrollBlock (String id) {
+
+ super(id, Block.BlockType.BLOG_ROLL);
+
+ }
public BlogrollBlock (Document document) {
Modified: trunk/plugins/Echo/src/plugins/echo/i18n/echo.i18n.en.properties
===================================================================
--- trunk/plugins/Echo/src/plugins/echo/i18n/echo.i18n.en.properties
2007-08-16 18:02:31 UTC (rev 14723)
+++ trunk/plugins/Echo/src/plugins/echo/i18n/echo.i18n.en.properties
2007-08-16 19:03:40 UTC (rev 14724)
@@ -26,4 +26,6 @@
echo.manage.myNodes=My nodes
echo.manage.myNodes.desc=A list of your nodes
echo.manage.newCategory=New category
-echo.manage.categories.desc=Categorize your posts
\ No newline at end of file
+echo.manage.categories.desc=Categorize your posts
+
+echo.block.blog-roll=Blog Roll
\ No newline at end of file
Modified: trunk/plugins/Echo/src/xml/edit.xsl
===================================================================
--- trunk/plugins/Echo/src/xml/edit.xsl 2007-08-16 18:02:31 UTC (rev 14723)
+++ trunk/plugins/Echo/src/xml/edit.xsl 2007-08-16 19:03:40 UTC (rev 14724)
@@ -47,7 +47,7 @@
<h1><xsl:value-of
select="title/text()" /></h1>
<xsl:apply-templates
select="errors" />
<xsl:apply-templates
select="data" />
-<!-- <div><xsl:copy-of
select="/node()" /></div> -->
+ <div><xsl:copy-of
select="/node()" /></div>
</div>
</div>
@@ -225,6 +225,14 @@
</form>
</xsl:when>
+ <xsl:when test="configure-block">
+ <xsl:if
test="configure-block/block/@type='blog-roll'">
+ <xsl:call-template
name="block-blog-roll">
+ <xsl:with-param name="block"
select="configure-block/block" />
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:when>
+
<xsl:when test="./node">
<form name="edit" method="POST" action="">
<label for="edit-title"><i18n
key="echo.common.title" /></label>
@@ -368,4 +376,9 @@
</xsl:template>
+ <xsl:template name="block-blog-roll">
+ <xsl:param name="block" />
+ TODO
+ </xsl:template>
+
</xsl:stylesheet>
\ No newline at end of file