Пример #1
0
static JSBool 
js_createMultiOpt(JSContext *cx, JSObject *obj, uintN argc, 
		  jsval *argv, jsval *rval)
{
  js_setting_group_t *jsg = JS_GetPrivate(cx, obj);
  const char *id;
  const char *title;
  JSObject *func;
  JSObject *options;

  if(!JS_ConvertArguments(cx, argc, argv, "ssoo",
			  &id, &title, &options, &func))
    return JS_FALSE;

  js_setting_t *jss = jss_create(cx, obj, id, rval, func, jsg);
  if(jss == NULL)
    return JS_FALSE;

  jss->jss_s = settings_create_multiopt(jsg->jsg_root, id, _p(title),
					js_store_update_string, jss, 
					js_global_pc);

  add_multiopt(cx, jss, options);

  settings_multiopt_initiate(jss->jss_s, jsg->jsg_store,
			     js_setting_group_save, jsg);

  jss->jss_cx = NULL;
  return JS_TRUE;
}
Пример #2
0
static JSBool 
js_createMultiOpt(JSContext *cx, JSObject *obj, uintN argc, 
		  jsval *argv, jsval *rval)
{
  js_setting_group_t *jsg = JS_GetPrivate(cx, obj);
  const char *id;
  const char *title;
  JSObject *func;
  JSObject *options;
  JSBool persistent = JS_FALSE;

  if(!JS_ConvertArguments(cx, argc, argv, "ssoo/b",
			  &id, &title, &options, &func, &persistent))
    return JS_FALSE;

  js_setting_t *jss = jss_create(cx, obj, id, rval, func, jsg, persistent);
  if(jss == NULL)
    return JS_FALSE;

  jss->jss_s = settings_create_multiopt(jsg->jsg_root, id, _p(title),
					jsg->jsg_settings_flags);

  rstr_t *r = NULL;
  if(persistent && jsg->jsg_kv_url)
    r = kv_url_opt_get_rstr(jsg->jsg_kv_url, KVSTORE_DOMAIN_PLUGIN, id);

  add_multiopt(cx, jss, options, rstr_get(r));

  rstr_release(r);
  settings_multiopt_initiate(jss->jss_s,
			     js_store_update_string, jss, 
			     js_global_pc,
			     jsg->jsg_store,
			     js_setting_group_save, jsg);

  jss->jss_cx = NULL;
  return JS_TRUE;
}