penguin/AstroJS

Javascript framework for my blog

commit 4cc218b03a95a42440e473207e41f8c09b0ebcea

author斟酌 鵬兄 <tgckpg@gmail.com>
date2016-02-08T18:24:20Z
subjectUserComment subscription
commit 4cc218b03a95a42440e473207e41f8c09b0ebcea
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2016-02-08T18:24:20Z

    UserComment subscription
---
 botanjs/src/Astro/Blog/Components/Comment.js       | 12 ++--
 botanjs/src/Astro/Blog/Components/Entry/Blog.css   |  4 --
 botanjs/src/Astro/Blog/Components/Notification.js  | 18 +++---
 .../Blog/Components/ToggleButton/CommentToggle.css |  6 +-
 .../Blog/Components/ToggleButton/CommentToggle.js  | 71 ++++++++++++++++------
 .../Astro/Blog/Components/ToggleButton/_this.css   | 11 ++--
 .../Astro/Blog/Components/ToggleButton/_this.js    | 19 +++---
 botanjs/src/externs/_AstJson_.AJaxGetNotis.js      |  2 +-
 8 files changed, 93 insertions(+), 50 deletions(-)

diff --git a/botanjs/src/Astro/Blog/Components/Comment.js b/botanjs/src/Astro/Blog/Components/Comment.js
index bb7b642..cc1bd1e 100644
--- a/botanjs/src/Astro/Blog/Components/Comment.js
+++ b/botanjs/src/Astro/Blog/Components/Comment.js
@@ -516,10 +516,14 @@
 		{
 			// Remove capcha
 			new IDOMElement().lootChildren( Dand.id( "recaptcha_field" ) );
-			Recaptcha.render( "recaptcha_field", {
-				"theme": "light"
-				, "sitekey": Config.siteKey
-			} );
+			try
+			{
+				Recaptcha.render( "recaptcha_field", {
+					"theme": "light"
+					, "sitekey": Config.siteKey
+				} );
+			}
+			catch( ex ) { }
 
 			openCaptcha();
 		}
diff --git a/botanjs/src/Astro/Blog/Components/Entry/Blog.css b/botanjs/src/Astro/Blog/Components/Entry/Blog.css
index addcd5b..aad0417 100644
--- a/botanjs/src/Astro/Blog/Components/Entry/Blog.css
+++ b/botanjs/src/Astro/Blog/Components/Entry/Blog.css
@@ -47,10 +47,6 @@
 
 .b_bodyWrapper a { color: #f15a24; }
 
-.b_notify { background-color: slategrey; }
-.b_notify:before { content: 'Follow'; }
-.b_notify:after { content: 'Unfollow'; }
-
 .b_edit {
 	background-color: yellowgreen;
 }
diff --git a/botanjs/src/Astro/Blog/Components/Notification.js b/botanjs/src/Astro/Blog/Components/Notification.js
index e9fe2c8..2849707 100644
--- a/botanjs/src/Astro/Blog/Components/Notification.js
+++ b/botanjs/src/Astro/Blog/Components/Notification.js
@@ -98,16 +98,17 @@
 
 			for( var i in e.data )
 			{
+				var data = e.data[i];
 				var li
 					, li_s = [
 							// On/off toggle
 							Dand.wrap( "span", null, "nt_switch" )
-							, Dand.wrap( "span", null, "nt_tname", e.data[i].name )
+							, Dand.wrap( "span", null, "nt_tname", data.name )
 						]
-					, keys = [ new DataKey( "tid", i ) ]
+					, keys = [ new DataKey( "tid", data.type ) ]
 				;
 
-				if( e.data[i].hasOwnProperty("count") )
+				if( data.hasOwnProperty("count") )
 				{
 					// type count
 					li_s[2] = Dand.wrap(
@@ -115,7 +116,7 @@
 						, null
 						, "nt_tcount"
 						, e.data[i].count + ""
-						, new DataKey( "count", e.data[i].count )
+						, new DataKey( "count", data.count )
 					);
 					// Active
 					keys[ keys.length ] = new IKey( "active", 1 );
@@ -152,6 +153,7 @@
 		var createContextMenu = function(e)
 		{
 			var items = [], menuShow = false;
+			var hasNotis = 0 < e.data.length;
 
 			for( var n in e.data )
 			{
@@ -159,7 +161,7 @@
 				var data = e.data[n];
 				// Create items
 				items[ items.length ] = new IKey(
-					data.message 
+					data.mesg
 					, new EventKey(
 						"m_" + data.id
 						, readNotification.bind( data )
@@ -177,10 +179,10 @@
 				// showMenu/hideMenu overrides style settings
 				, {
 					"class": "nt_container"
-					, "showMenu": function(stage, event)
+					, "showMenu": function( stage, event )
 					{
 						if( stage.className == "nt_date" ) return;
-						if( menuShow ) return;
+						if( !hasNotis || menuShow ) return;
 						bodyStyle.marginLeft = "1em";
 						bodyStyle.marginRight = "-1em";
 						bodyStyle.opacity = 0;
@@ -194,7 +196,7 @@
 							menuShow = true;
 						});
 					}
-					, "hideMenu": function(stage)
+					, "hideMenu": function( stage )
 					{
 						if( stage.className == "nt_date" ) return;
 						if( !menuShow ) return;
diff --git a/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.css b/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.css
index 1cfd940..e0115c1 100644
--- a/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.css
+++ b/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.css
@@ -1,3 +1,7 @@
+.b_notify { background-color: #222 !important; }
+.b_notify:before { content: 'Mute'; }
+.b_notify:after { content: 'Notify'; }
+
 .uc_ntoggle {
 	font-family: custom-sans;
 	vertical-align: top;
@@ -36,7 +40,7 @@
 
 .cr_ntoggle:before {
 	content: '..';
-	background-color: slategrey;
+	background-color: orange;
 }
 
 .cr_ntoggle:after { content: '!'; }
diff --git a/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.js b/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.js
index 4c549a3..4113a63 100644
--- a/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.js
+++ b/botanjs/src/Astro/Blog/Components/ToggleButton/CommentToggle.js
@@ -1,27 +1,60 @@
-/*
 (function(){
 	var ns = __namespace( "Astro.Blog.Components.ToggleButton.CommentToggle" );
 
-	new ToggleButton('toggle_follow', nProcessor, {
-	enable: { action: 'enable', tid: 3, cid: 1 },
-	disable: { action: 'disable', tid: 3, cid: 1 }
-	});
+	var ToggleButton = __import( "Astro.Blog.Components.ToggleButton" );
 
-	new ToggleButton('uc_ntoggle', nProcessor, {
-	enable: { action: 'enable', tid: 1, cid: 1645 },
-	disable: { action: 'disable', tid: 1, cid: 1645 }
-	});
+	/** @type {Dandelion} */
+	var Dand                             = __import( "Dandelion" );
+	/** @type {Dandelion.IDOMElement} */
+	var IDOMElement                      = __import( "Dandelion.IDOMElement" );
+	/** @type {Astro.Bootstrap} */
+	var Bootstrap                        = __import( "Astro.Bootstrap" );
+	/** @type {Astro.Blog.Config} */
+	var Conf                             = __import( "Astro.Blog.Config" );
 
-	new ToggleButton('toggle_publish', '../../../user/ajax-set_article', {
-	enable: { draft: 0, article_id: 1645 },
-	disable: { draft: 1, article_id: 1645 }
-	});
+	/** @type {_AstConf_.CommentToggle} */
+	var settings = Conf.get( "CommentToggle" );
 
-	for(var i in commList) {
-	new ToggleButton('cr_ntoggle_' + commList[i], nProcessor, {
-	enable: { action: 'enable', tid: 2, cid: commList[i] },
-	disable: { action: 'disable', tid: 2, cid: commList[i] }
-	});
+	var CommentToggle = function( id, processor, object )
+	{
+		ToggleButton.call( this, id, processor, object );
+	};
 
+	__extends( CommentToggle, ToggleButton );
+
+	var init = function()
+	{
+		for( var i in settings )
+		{
+			var button = settings[i];
+			new CommentToggle( button[0], button[1], button[2] );
+		}
+
+		/*
+		new ToggleButton("toggle_follow", "/ajax/get-notis", {
+			"enable": { "action": "enable", "tid": 4, "cid": aid },
+			"disable": { "action": "disable", "tid": 4, "cid": aid }
+		});
+		*/
+
+		/*
+		new ToggleButton("uc_ntoggle", nProcessor, {
+		enable: { action: "enable", tid: 1, cid: 1645 },
+		disable: { action: "disable", tid: 1, cid: 1645 }
+		});
+
+		new ToggleButton("toggle_publish", "../../../user/ajax-set_article", {
+		enable: { draft: 0, article_id: 1645 },
+		disable: { draft: 1, article_id: 1645 }
+		});
+
+		for(var i in commList) {
+		new ToggleButton("cr_ntoggle_" + commList[i], nProcessor, {
+		enable: { action: "enable", tid: 2, cid: commList[i] },
+		disable: { action: "disable", tid: 2, cid: commList[i] }
+		});
+		*/
+	}
+
+	Bootstrap.regInit( init );
 })();
-//*/
diff --git a/botanjs/src/Astro/Blog/Components/ToggleButton/_this.css b/botanjs/src/Astro/Blog/Components/ToggleButton/_this.css
index 93265de..c084e6e 100644
--- a/botanjs/src/Astro/Blog/Components/ToggleButton/_this.css
+++ b/botanjs/src/Astro/Blog/Components/ToggleButton/_this.css
@@ -7,13 +7,15 @@
 	padding: 0.2em 0.5em;
 	margin:  0.5em 0.2em;
 
-	background-color: grey;
+	background-color: #222;
 	color: white;
 
 	cursor: default;
 
 	overflow: hidden;
 	display: inline-block;
+
+	opacity: 0.8;
 }
 
 .btn_toggle > .btn_space {
@@ -22,6 +24,7 @@
 }
 
 .btn_toggle:hover {
+	opacity: 1;
 	text-decoration: none;
 }
 
@@ -62,7 +65,7 @@
 
 .btn_toggle:after {
 	content: '';
-	background-color: royalblue;
+	background-color: #4169E1;
 	top: 100%;
 
 	-webkit-transition: all 750ms cubic-bezier(0.215, 0.610, 0.355, 1.000); 
@@ -72,11 +75,11 @@
 	transition: all 500ms cubic-bezier(0.215, 0.610, 0.355, 1.000); /* easeOutCubic */
 }
 
-.btn_toggle[active="1"]:after {
+.btn_toggle[data-active="1"]:after {
 	top: 0%;
 }
 
 
-.btn_toggle[active="1"]:before {
+.btn_toggle[data-active="1"]:before {
 	top: -100%;
 }
diff --git a/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js b/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js
index a7efe98..5b3b5d8 100644
--- a/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js
+++ b/botanjs/src/Astro/Blog/Components/ToggleButton/_this.js
@@ -9,37 +9,38 @@
 	var Bootstrap                        = __import( "Astro.Bootstrap" );
 	/** @type {Astro.Blog} */
 	var config                           = __import( "Astro.Blog.Config" );
+	/** @type {System.utils.DataKey} */
+	var DataKey                          = __import( "System.utils.DataKey" );
 
 	var postData                         = __import( "System.Net.postData" );
 
 	var ToggleButton = function ( elem, processor, obj )
 	{
-		var stage = Dand.id( elem );
+		var stage = Dand.id( elem, true );
 		if( !stage ) return;
 
 
 		var n_toggle = function (args)
 		{
-			if( stage.getAttribute("active") == 1 )
+			if( stage.getDAttribute("active") == 1 )
 			{
-				stage.removeAttribute('active');
+				stage.setAttribute( new DataKey( "active", 0 ) );
 			}
 			else
 			{
-				stage.setAttribute('active', 1);
+				stage.setAttribute( new DataKey( "active", 1 ) );
 			}
 		};
 
 		var nError = function (args)
 		{
 			
-		}
-		;
+		};
 
-		IDOMElement(stage).addEventListener(
-			'Click'
+		stage.addEventListener(
+			"Click"
 			, function (e) {
-				var _action = stage.getAttribute( "active" ) == 1
+				var _action = stage.getDAttribute( "active" ) == 1
 					? obj[ "disable" ]
 					: obj[ "enable" ]
 				;
diff --git a/botanjs/src/externs/_AstJson_.AJaxGetNotis.js b/botanjs/src/externs/_AstJson_.AJaxGetNotis.js
index 6bf649f..d64ac3b 100644
--- a/botanjs/src/externs/_AstJson_.AJaxGetNotis.js
+++ b/botanjs/src/externs/_AstJson_.AJaxGetNotis.js
@@ -1,7 +1,7 @@
 /** @type {Object} */
 _AstJson_.AJaxGetNotis = {};
 /** @type {String} */
-_AstJson_.AJaxGetNotis.message;
+_AstJson_.AJaxGetNotis.mesg;
 /** @type {String} */
 _AstJson_.AJaxGetNotis.id;
 /** @type {String} */