Generalize tags to flags

This commit is contained in:
2015-09-22 19:31:53 +08:00
parent 54464ce395
commit 1d812de551
10 changed files with 315 additions and 230 deletions
+85 -13
View File
@@ -20,11 +20,11 @@
/** @type {Astro.Blog.Components.Bubble} */
var Bubble = __import( "Astro.Blog.Components.Bubble" );
var opostData = __import( "System.Net.postData" );
var opostData = __import( "System.Net.postData" );
var prettyDate = __import( "Astro.utils.Date.pretty" );
var Visualizer = ns[ NS_INVOKE ]( "Visualizer" );
var Tag = ns[ NS_INVOKE ]( "Tag" );
var Flag = ns[ NS_INVOKE ]( "Flag" );
// Editor Override
@@ -34,7 +34,43 @@
opostData( processor, data, success, failed );
};
var Article = function( processorSet )
// Wrappers for every plugins
var PluginBundles = function( article, plugins )
{
this.plugins = plugins;
for( var i in this.plugins )
{
/* @type {Astro.Blog.AstroEdit.IPlugins} */
var g = this.plugins[i];
g.bindArticle = article;
}
};
PluginBundles.prototype.setForView = function( pluginId, data )
{
for( var i in this.plugins )
{
var p = this.plugins[i];
if( p.id == pluginId )
{
p.setForView( data );
}
}
};
PluginBundles.prototype.getSetData = function( pluginId, data )
{
for( var i in this.plugins )
{
var p = this.plugins[i];
if( p.id == pluginId )
{
p.getSetData( data );
}
}
};
var Article = function( processorSet, plugins )
{
var pBubble = new Bubble();
@@ -44,7 +80,6 @@
var _content = "";
//// Classes & obj
var _ae_tag = null;
var _visualizer = null;
var timestamp = new Date();
@@ -58,6 +93,7 @@
, date_created: timestamp
, archived: false
, tags: null
, section: null
, draft: true
, article_id: false
};
@@ -78,7 +114,7 @@
var a_conf = Config.get( "AstroEdit" );
var base_path = Config.get( "BasePath" );
///// preview fields
/*{{{ preview fields */
var ae_p_fields = {
mtime: set_field_name( Dand.wrap( "input" ), "date_modified" )
, ptime: set_field_name( Dand.wrap( "input" ), "date_published" )
@@ -94,8 +130,42 @@
var temp;
for ( var i in ae_p_fields ) ae_preview.appendChild( ae_p_fields[i] );
//// End preview fields
/* End preview fields }}}*/
/*{{{ Button sections */
var ae_stitles = Dand.glass( "ae_stitle", true );
var ae_panel_section = Dand.glass( "ae_panel_section", true );
var l = ae_stitles.length;
for( var i = 0; i < l; i ++ )
{
var t = ae_stitles[i];
var p = ae_panel_section[i];
t.addEventListener( "Click", function( e )
{
var p = this.p;
if( this.t.expanded = !this.t.expanded )
{
p.style.height = "auto";
Cycle.next(
function(){
p.style.height = this.h + "px";
}.bind({ h: p.element.clientHeight })
);
p.style.height = 0;
}
else
{
p.style.height = 0;
}
}.bind({ t: t, p: p }) );
}
ae_stitles[0].element.click();
/* End Button sections }}}*/
// Install plugins
plugins = new PluginBundles( this, plugins );
var enableSaveFunction = function ()
{
@@ -253,8 +323,8 @@
ae_publish.innerHTML = ArticleModel.draft ? "Publish" : "Done edit";
ae_backup.innerHTML = ( ArticleModel.draft ? "Save" : "Backup" ) + "(Ctrl + s)";
_ae_tag && _ae_tag.setTags( ArticleModel.tags );
plugins.setForView( "tags", ArticleModel.tags );
plugins.setForView( "section", ArticleModel.section );
}
, deleteDraft = function ( confirmed )
@@ -311,10 +381,12 @@
article_id: __article_id ? __article_id : ""
, title: _title
, content: _content
, tags: _ae_tag.getTags()
, draft: 1
};
plugins.getSetData( "tags", _data );
plugins.getSetData( "section", _data );
postData( processorSet, _data, saveSuccess, serverFailed );
}
};
@@ -345,7 +417,7 @@
? ArticleModel.date_published
: Math.floor( 0.001*( new Date().getTime() ) )
;
ae_p_fields.tags.value = _ae_tag.getTags();
ae_p_fields.tags.value = _ae_tag.getFlags();
ae_preview.submit();
};
@@ -358,10 +430,10 @@
_visualizer = _class;
_visualizer.setContentDiv( ae_content );
}
if ( _class instanceof Tag )
if ( _class instanceof Flag )
{
_ae_tag = _class;
ArticleModel && ArticleModel.tags && ( _ae_tag ).setTags( ArticleModel.tags );
ArticleModel && ArticleModel.tags && ( _ae_tag ).setFlags( ArticleModel.tags );
}
};
@@ -389,7 +461,7 @@
_data.title = _title;
_data.content = _content;
_data.tags = _ae_tag.getTags();
_data.tags = _ae_tag.getFlags();
postData( processorSet, _data, publishSuccess.bind({ contentUpdate: true }), serverFailed );
}