forked from Botanical/BotanJS
		
	Major bug fixes due to migration issue
This commit is contained in:
		@@ -20,12 +20,20 @@
 | 
			
		||||
	/** @type {Astro.Blog.Components.Bubble} */
 | 
			
		||||
	var Bubble                           = __import( "Astro.Blog.Components.Bubble" );
 | 
			
		||||
 | 
			
		||||
	var postData                         = __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" );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	// Editor Override
 | 
			
		||||
	var postData = function( processor, data, success, failed )
 | 
			
		||||
	{
 | 
			
		||||
		data[ "editor" ] = 1;
 | 
			
		||||
		opostData( processor, data, success, failed );
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	var Article = function( processorSet )
 | 
			
		||||
	{
 | 
			
		||||
		var pBubble = new Bubble();
 | 
			
		||||
@@ -110,7 +118,7 @@
 | 
			
		||||
		//// private methods
 | 
			
		||||
		////// Handlers ///////
 | 
			
		||||
 | 
			
		||||
		, saveSuccess = function (obj)
 | 
			
		||||
		, saveSuccess = function ( obj )
 | 
			
		||||
		{
 | 
			
		||||
			disableSaveFunction();
 | 
			
		||||
			ae_mdate.innerHTML = prettyDate( new Date( obj.date_modified ) );
 | 
			
		||||
@@ -120,6 +128,16 @@
 | 
			
		||||
			ArticleModel.content = _content;
 | 
			
		||||
			ArticleModel.date_modified = obj.date_modified;
 | 
			
		||||
 | 
			
		||||
			// If this is a published article
 | 
			
		||||
			// we need to set the ref_id for ArticleModel
 | 
			
		||||
			// then set current id to draft's id
 | 
			
		||||
			if( ArticleModel.article_id != obj.article_id )
 | 
			
		||||
			{
 | 
			
		||||
				ArticleModel.draft = true;
 | 
			
		||||
				ArticleModel.ref_id = __article_id;
 | 
			
		||||
				ArticleModel.article_id = obj.article_id;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Set article id if this is a new document
 | 
			
		||||
			if ( obj.article_id )
 | 
			
		||||
				ArticleModel.article_id = __article_id = obj.article_id;
 | 
			
		||||
@@ -127,7 +145,7 @@
 | 
			
		||||
			window.history.replaceState( ArticleModel, "", base_path + "astroedit/" + __article_id + "/" );
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		, publishSuccess = function (obj)
 | 
			
		||||
		, publishSuccess = function ( obj )
 | 
			
		||||
		{
 | 
			
		||||
			ae_publish.innerHTML = "Done edit";
 | 
			
		||||
			ae_backup.innerHTML = "Backup(Ctrl + s)";
 | 
			
		||||
@@ -135,23 +153,28 @@
 | 
			
		||||
			ArticleModel.date_published = obj.date_published;
 | 
			
		||||
			ae_pdate.innerHTML = prettyDate( new Date( obj.date_published ) );
 | 
			
		||||
 | 
			
		||||
			this.contentUpdate && saveSuccess(obj);
 | 
			
		||||
			this.contentUpdate && saveSuccess( obj );
 | 
			
		||||
 | 
			
		||||
			new MessageBox("AstroEdit", "You have successfully published your article!", "Stay here", "Exit and goto article", publishAction).show();
 | 
			
		||||
			new MessageBox(
 | 
			
		||||
				"AstroEdit"
 | 
			
		||||
				, "You have successfully published your article!"
 | 
			
		||||
				, "Stay here", "Exit and goto article"
 | 
			
		||||
				, publishAction
 | 
			
		||||
			).show();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		, publishAction = function (stay)
 | 
			
		||||
		, publishAction = function ( stay )
 | 
			
		||||
		{
 | 
			
		||||
			if (!stay)
 | 
			
		||||
			if ( !stay )
 | 
			
		||||
			{
 | 
			
		||||
				window.open( base_path + "article/view/" + ArticleModel.slug + "/") && window.close();
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		, restoreArticle = function(obj)
 | 
			
		||||
		, restoreArticle = function( obj )
 | 
			
		||||
		{
 | 
			
		||||
			debug.Info("[Document] Looking for stored data");
 | 
			
		||||
			if (obj)
 | 
			
		||||
			if ( obj )
 | 
			
		||||
			{
 | 
			
		||||
				debug.Info("[Document]    .. data found");
 | 
			
		||||
				// Set stored article id
 | 
			
		||||
@@ -187,20 +210,17 @@
 | 
			
		||||
			if ( obj && obj.entry )
 | 
			
		||||
			{
 | 
			
		||||
				debug.Info( "[Document] Article Loaded" );
 | 
			
		||||
				if ( obj.backup )
 | 
			
		||||
				if ( obj.entry.ref_id )
 | 
			
		||||
				{
 | 
			
		||||
					// This is a backup item
 | 
			
		||||
					__article_id = obj.article_id;
 | 
			
		||||
 | 
			
		||||
					pBubble.setColor( "royalblue" );
 | 
			
		||||
					pBubble.pop( "Using backup entry" );
 | 
			
		||||
					Cycle.delay( function () { pBubble.blurp() }, 3000 );
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				setArticle( obj.entry );
 | 
			
		||||
				if ( !obj.entry.article_id )
 | 
			
		||||
				{
 | 
			
		||||
					// sever will not return article_id
 | 
			
		||||
					// since it is an UPDATE
 | 
			
		||||
					// Store the article_id manually
 | 
			
		||||
					obj.entry.article_id = __article_id;
 | 
			
		||||
				}
 | 
			
		||||
				__statePusher( obj.entry, __article_id );
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
@@ -237,9 +257,9 @@
 | 
			
		||||
			_ae_tag && _ae_tag.setTags( ArticleModel.tags );
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		, deleteDraft = function (confirmed)
 | 
			
		||||
		, deleteDraft = function ( confirmed )
 | 
			
		||||
		{
 | 
			
		||||
			if (confirmed)
 | 
			
		||||
			if ( confirmed )
 | 
			
		||||
			{
 | 
			
		||||
				var _data = {
 | 
			
		||||
					"draft": ArticleModel.draft ? 1 : 0
 | 
			
		||||
@@ -251,15 +271,21 @@
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		, deleteSuccess = function ()
 | 
			
		||||
		, deleteSuccess = function ( obj )
 | 
			
		||||
		{
 | 
			
		||||
			location.reload(true);
 | 
			
		||||
			var loc = window.location;
 | 
			
		||||
			loc.replace(
 | 
			
		||||
				loc.href.replace(
 | 
			
		||||
					"/" + ArticleModel.article_id
 | 
			
		||||
					, ArticleModel.ref_id ? ( "/" + ArticleModel.ref_id ) : ""
 | 
			
		||||
				)
 | 
			
		||||
			);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		, serverFailed = function ( obj )
 | 
			
		||||
		{
 | 
			
		||||
			pBubble.setColor( "red" );
 | 
			
		||||
			pBubble.pop( obj["mesg"] );
 | 
			
		||||
			pBubble.pop( obj ? obj["mesg"] : "Server Error" );
 | 
			
		||||
			Cycle.delay( function () { pBubble.blurp() }, 3000 );
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@@ -273,7 +299,7 @@
 | 
			
		||||
 | 
			
		||||
		this.saveOrBackup = function ()
 | 
			
		||||
		{
 | 
			
		||||
			if (canSave)
 | 
			
		||||
			if ( canSave )
 | 
			
		||||
			{
 | 
			
		||||
				// Store current content and title
 | 
			
		||||
				_title = ae_title.value.trim();
 | 
			
		||||
@@ -286,17 +312,10 @@
 | 
			
		||||
					, title: _title
 | 
			
		||||
					, content: _content
 | 
			
		||||
					, tags: _ae_tag.getTags()
 | 
			
		||||
					, draft: ArticleModel.draft ? 1 : 0
 | 
			
		||||
					, draft: 1
 | 
			
		||||
				};
 | 
			
		||||
 | 
			
		||||
				if (ArticleModel.draft == 0)
 | 
			
		||||
				{
 | 
			
		||||
					// This a published article
 | 
			
		||||
					// action is Backup
 | 
			
		||||
					_data.backup = 1;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				postData( processorSet, _data, saveSuccess, serverFailed);
 | 
			
		||||
				postData( processorSet, _data, saveSuccess, serverFailed );
 | 
			
		||||
			}
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
@@ -385,12 +404,22 @@
 | 
			
		||||
 | 
			
		||||
		this.drop = function ()
 | 
			
		||||
		{
 | 
			
		||||
			new MessageBox(
 | 
			
		||||
				"Delete draft"
 | 
			
		||||
				, "Are you sure you want to delete this draft? (Published article will only remove backup draft.)"
 | 
			
		||||
				, "Delete", "No"
 | 
			
		||||
				, deleteDraft
 | 
			
		||||
			).show();
 | 
			
		||||
			if( ArticleModel.draft )
 | 
			
		||||
			{
 | 
			
		||||
				new MessageBox(
 | 
			
		||||
					"Delete draft"
 | 
			
		||||
					, "Are you sure you want to delete this draft? (Published article will only remove backup draft.)"
 | 
			
		||||
					, "Delete", "No"
 | 
			
		||||
					, deleteDraft
 | 
			
		||||
				).show();
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				new MessageBox(
 | 
			
		||||
					"Delete Draft"
 | 
			
		||||
					, "There is no draft to delete"
 | 
			
		||||
				).show();
 | 
			
		||||
			}
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
		this.updateContent = contentUpdate;
 | 
			
		||||
 
 | 
			
		||||
@@ -70,8 +70,8 @@
 | 
			
		||||
				
 | 
			
		||||
				// Register on click function
 | 
			
		||||
				entry.addEventListener( "click", function() {
 | 
			
		||||
					article.load( entry.getAttribute( "value" ), __pushState );
 | 
			
		||||
				} );
 | 
			
		||||
					article.load( this.getAttribute( "value" ), __pushState );
 | 
			
		||||
				}.bind( entry ) );
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			ae_drafts_h = ae_drafts.clientHeight;
 | 
			
		||||
@@ -147,7 +147,7 @@
 | 
			
		||||
		
 | 
			
		||||
		, __pushState = function ( obj, article_id )
 | 
			
		||||
		{
 | 
			
		||||
			window.history.pushState( obj, "", "../" + article_id + "/" );
 | 
			
		||||
			window.history.pushState( obj, "", "/astroedit/" + article_id + "/" );
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		setupExpand();
 | 
			
		||||
 
 | 
			
		||||
@@ -62,9 +62,9 @@
 | 
			
		||||
	background-color: crimson;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.b_publish { background-color: slategrey; }
 | 
			
		||||
.b_publish:before { content: 'Publish'; background-color: purple; }
 | 
			
		||||
.b_publish:after { content: 'Unpublish'; background-color: orangered; }
 | 
			
		||||
.b_scope { background-color: slategrey; }
 | 
			
		||||
.b_scope:before { content: 'Private'; background-color: purple; }
 | 
			
		||||
.b_scope:after { content: 'Public'; background-color: orangered; }
 | 
			
		||||
 | 
			
		||||
.b_notify { background-color: slategrey; }
 | 
			
		||||
.b_notify:before { content: 'Follow'; }
 | 
			
		||||
 
 | 
			
		||||
@@ -31,8 +31,6 @@
 | 
			
		||||
 | 
			
		||||
.btn_toggle:before, .btn_toggle:after {
 | 
			
		||||
 | 
			
		||||
	padding-top: 0.2em;
 | 
			
		||||
 | 
			
		||||
	text-align: center;
 | 
			
		||||
 | 
			
		||||
	position: absolute;
 | 
			
		||||
@@ -65,7 +63,7 @@
 | 
			
		||||
.btn_toggle:after {
 | 
			
		||||
	content: '';
 | 
			
		||||
	background-color: royalblue;
 | 
			
		||||
	top: 200%;
 | 
			
		||||
	top: 100%;
 | 
			
		||||
 | 
			
		||||
	-webkit-transition: all 750ms cubic-bezier(0.215, 0.610, 0.355, 1.000); 
 | 
			
		||||
	-moz-transition: all 750ms cubic-bezier(0.215, 0.610, 0.355, 1.000); 
 | 
			
		||||
@@ -74,11 +72,11 @@
 | 
			
		||||
	transition: all 500ms cubic-bezier(0.215, 0.610, 0.355, 1.000); /* easeOutCubic */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.btn_toggle[active]:after {
 | 
			
		||||
.btn_toggle[active="1"]:after {
 | 
			
		||||
	top: 0%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.btn_toggle[active]:before {
 | 
			
		||||
	top: -120%;
 | 
			
		||||
.btn_toggle[active="1"]:before {
 | 
			
		||||
	top: -100%;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
 | 
			
		||||
		var n_toggle = function (args)
 | 
			
		||||
		{
 | 
			
		||||
			if(stage.getAttribute('active'))
 | 
			
		||||
			if( stage.getAttribute("active") == 1 )
 | 
			
		||||
			{
 | 
			
		||||
				stage.removeAttribute('active');
 | 
			
		||||
			}
 | 
			
		||||
@@ -39,7 +39,10 @@
 | 
			
		||||
		IDOMElement(stage).addEventListener(
 | 
			
		||||
			'Click'
 | 
			
		||||
			, function (e) {
 | 
			
		||||
				var _action = stage.getAttribute('active') ? obj.disable : obj.enable;
 | 
			
		||||
				var _action = stage.getAttribute( "active" ) == 1
 | 
			
		||||
					? obj[ "disable" ]
 | 
			
		||||
					: obj[ "enable" ]
 | 
			
		||||
				;
 | 
			
		||||
				postData( processor, _action, n_toggle, nError );
 | 
			
		||||
			}
 | 
			
		||||
		);
 | 
			
		||||
@@ -47,7 +50,7 @@
 | 
			
		||||
 | 
			
		||||
	var init = function()
 | 
			
		||||
	{
 | 
			
		||||
		var toggles = config.get( "toggle_btns" );
 | 
			
		||||
		var toggles = config.get( "ToggleButtons" );
 | 
			
		||||
		for( var i in toggles )
 | 
			
		||||
		{
 | 
			
		||||
			new ToggleButton( toggles[ i ][0], toggles[ i ][1], toggles[ i ][2] );
 | 
			
		||||
 
 | 
			
		||||
@@ -4,9 +4,13 @@ _AstJson_.AJaxGetArticle = {};
 | 
			
		||||
/** @type {Boolean} */
 | 
			
		||||
_AstJson_.AJaxGetArticle.status;
 | 
			
		||||
/** @type {String} */
 | 
			
		||||
_AstJson_.AJaxGetArticle.backup;
 | 
			
		||||
_AstJson_.AJaxGetArticle.ref_id;
 | 
			
		||||
/** @type {String} */
 | 
			
		||||
_AstJson_.AJaxGetArticle.article_id;
 | 
			
		||||
/** @type {Object} */
 | 
			
		||||
_AstJson_.AJaxGetArticle.entry;
 | 
			
		||||
	/** @type {String} */
 | 
			
		||||
	_AstJson_.AJaxGetArticle.entry._id;
 | 
			
		||||
	/** @type {String} */
 | 
			
		||||
	_AstJson_.AJaxGetArticle.entry.slug;
 | 
			
		||||
	/** @type {Boolean} */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user