prefs refactoring: partial implementation (wip)
[brisk.git] / web / info.js
index 8e30988..d75212a 100644 (file)
  *
  */
 
+var mlang_info = { 'btn_close' : { 'it' : 'Chiudi.',
+                                   'en' : 'Close.' }
+                 };
+
+function info_onlyifknown_isvisible_cb(item)
+{
+    var vis = 'inherit';
+
+    if (item.value == 'black' || item.value == 'unknown') {
+        vis = 'hidden';
+    }
+
+    $('info').getElementsByClassName('onlyifknown_gid')[0].style.visibility = vis;
+    return true;
+}
+
 function info_fld(dobj)
 {
-    var fields = { login: { type: 'value' },
+    var fields = { login: { type: 'value', perms: 'key' },
                    state: { type: 'value', perms: 'ro' },
                    guar: { type: 'value', perms: 'ro' },
+
+                   widefriend: { type: 'fields', fields: { skill: { type: 'value', perms: 'ro' },
+                                                           black: { type: 'value', perms: 'ro' },
+                                                           test: { type: 'value', perms: 'ro'},
+                                                           friend: { type: 'value', perms: 'ro'},
+                                                           bff: { type: 'value', perms: 'ro'}
+                                                         } },
+                   narrowfriend: { type: 'fields', fields: { skill: { type: 'value', perms: 'ro' },
+                                                             black: { type: 'value', perms: 'ro'},
+                                                             test: { type: 'value', perms: 'ro'},
+                                                             friend: { type: 'value', perms: 'ro'},
+                                                             bff: { type: 'value', perms: 'ro'}
+                                                         } },
                    match: { type: 'value', perms: 'ro' },
                    game: { type: 'value', perms: 'ro' },
-                   friend: { type: 'radio' },
+                   party: { type: 'value', perms: 'ro' },
+                   friend: { type: 'radio', cb: info_onlyifknown_isvisible_cb },
                    skill: { type: 'radio' },
                    trust: { type: 'radio' }
                  };
 
-    return (new Fieldify(dobj, fields));
+    return (new Fieldify([dobj], fields));
  }
 
 function info_show(username)
 {
-    var info_in_in = server_request('mesg', 'chatt|/info ' +
+    var info_in_in = server_request('index_wr.php', sess, 'mesg', 'chatt|/info ' +
                                             encodeURIComponent(username));
     var info_in = JSON.parse(info_in_in);
     var info = null;
@@ -49,7 +79,7 @@ function info_show(username)
         info.visible(true);
         }
     else {
-        alert("error: open info window failed");
+        var noti = new notify(gst, info_in.mesg, 0, mlang_info['btn_close'][g_lang], 400, 150);
     }
 }
 
@@ -69,6 +99,21 @@ function info_reset()
 {
     var ret, target;
 
-    target = $('info').getElementsByClassName('login_id')[0].innerHTML;
-    return info_show(target);
+    Fieldify.reset($('info'));
+}
+
+function info_save()
+{
+    var info, jinfo, ret;
+
+    jinfo = Fieldify.dom2json($('info'));
+
+    ret = server_request('index_wr.php', sess, 'mesg', 'info|save','__POST__', 'info', JSON.stringify(jinfo));
+
+    if (ret == 1) {
+        Fieldify.actualize($('info'));
+    }
+    else {
+        alert(ret);
+    }
 }