moderation: enable disable window
authorMatteo Nastasi (mop) <nastasi@alternativeoutput.it>
Tue, 28 May 2013 05:38:13 +0000 (07:38 +0200)
committerMatteo Nastasi (mop) <nastasi@alternativeoutput.it>
Tue, 28 May 2013 05:38:13 +0000 (07:38 +0200)
TODO.txt
web/commons.js

index abc81bf..b21d918 100644 (file)
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,5 +1,17 @@
  TODO |
 ------+
+Moderation features:
+* Lista righe di chat
+* Richiesta di verifica
+* Ban per nick/sessione/IP
+* Filtra per tavolo e/o room
+
+
+   - moderation
+     . turn off moderation when moder win is closed or if window creation fails
+     . enable moderation for certified users only
+     . create a mockup of the moder win
+     . create js to manage moderation
 
   FEATURES |
  ----------+
index e6b5cb3..f1bab59 100644 (file)
@@ -456,27 +456,136 @@ function act_logout(exitlock)
     send_mesg("logout|"+exitlock);
 }
 
-var moder_win = null;
-var moder_cur = -1;
-function act_moderate()
+function ModerateItem(item_ar)
 {
-    send_mesg("moderate");
+    this.time  = item_ar[0];
+    this.usrid = item_ar[1];
+    this.where = item_ar[2];
+    this.name  = item_ar[3];
+    this.cont  = item_ar[4];
 }
 
-function moderate(enable)
+ModerateItem.prototype = {
+    time: 0,
+    usrid: 0,
+    where: -1,
+    name: "",
+    cont: ""
+}
+
+function Moderate()
 {
-    if (enable) {
-        moder_win = window.open("moderation.php", "moderation", "width=800,height=600,toolbar=no,location=no,menubar=no,status=no");
-    }
-    else {
-        if (moder_win != null) {
-            moder_win.close();
-            moder_win = null;
-            moder_cur = -1;
+}
+
+Moderate.prototype = {
+    win:  null,
+    table: null,
+    enabled: false,
+    item: null,
+
+    cur: -1,
+
+    disable: function () {
+        if (this.tout) {
+            clearTimeout(this.tout);
+            this.tout = 0;
         }
-    }
+        if (this.win) {
+            this.win.close();
+            this.win = null;
+        }
+    },
+
+    activate: function (enable) {
+        if (this.enabled == enable) {
+            return true;
+        }
+        if (enable) {
+            this.disable();
+
+            this.win = window.open("moderation.php", "Moderazione", "width=800,height=600,toolbar=no,location=no,menubar=no,status=no");
+            if (this.win == null) {
+                this.disable();
+                return false;
+            }
+            // to finish initialization we wait for popup page onload event ...
+            this.win_waitonload();
+        }
+        else {
+            this.disable();
+            this.enabled = false;
+        }
+
+    },
+
+    win_waitonload: function () {
+        if (typeof(this.win.is_loaded)  == 'undefined' || this.win.is_loaded != true) {
+            console.log("not ready");
+            this.tout = setTimeout(function (obj) { obj.win_waitonload(); }, 250, this);
+        }
+        else {
+            console.log("ready now!");
+            this.post_onload();
+        }
+    },
+
+    post_onload: function() {
+        $(this.win, 'mainbody').innerHTML = "GHE SEMU";
+        this.enabled = true;
+    },
+
+    is_enabled: function() {
+        return (this.enabled);
+    }// ,
+
+    //add: function(item) {
+    //    this.item.append(new ModerateItem(item));
+    //}
+    // send_mesg("moderate|"+(enable ? "true" | "false"));
+
 }
 
+function moderate(enable)
+{
+    return (g_moder.activate(enable));
+}
+
+var g_moder = new Moderate();
+
+function act_moderate()
+{
+    send_mesg("moderate|"+(g_moder.is_enabled() ? "true" : "false"));
+}
+
+
+
+//             send_mesg("moderate|false");
+//             return false;
+//         }
+        
+//         // build table with js
+        
+//         g_moder.item = new Array;
+//         g_moder.table = xxx;
+//     }
+//     else {
+//         if (g_moder == null)
+//             return true;
+
+//         if (g_moder.win != null) {
+//             g_moder.win.close();
+//             g_moder.win = null;
+//         }
+
+//         if (g_moder.item != null) {
+//             // TODO CLEANUP
+//             ;
+//         }
+//         g_moder.cur = -1;
+//     }
+// }
+
+
 function act_reloadroom()
 {
     window.onunload = null;
@@ -760,12 +869,6 @@ function notify(st, text, tout, butt, w, h)
 {
     notify_ex.call(this, st, text, tout, butt, w, h, false, 0);
 }
-       
-
-function $(id) { 
-    return document.getElementById(id); 
-}
-
 
 function globst() {
     this.st = -1;