custom checkbox in options

This commit is contained in:
2015-04-26 18:08:30 +02:00
parent 60dfaae271
commit 4f8956f09b
9 changed files with 73 additions and 22 deletions

View File

@@ -129,6 +129,7 @@ class Databap extends PhpObject
const OPT_TEXT = 'T'; const OPT_TEXT = 'T';
const OPT_PASS = 'P'; const OPT_PASS = 'P';
const OPT_SELECT = 'S'; const OPT_SELECT = 'S';
const OPT_CHECKBOX = 'C';
const OPT_NICKNAME = 1; const OPT_NICKNAME = 1;
const OPT_BG = 2; const OPT_BG = 2;
const OPT_BG_2 = 11; const OPT_BG_2 = 11;
@@ -140,10 +141,6 @@ class Databap extends PhpObject
const OPT_EMAIL = 9; const OPT_EMAIL = 9;
const OPT_CHAT_HISTO = 10; const OPT_CHAT_HISTO = 10;
//Options Values Constants
const OPT_VAL_YES = 'oui';
const OPT_VAL_NO = 'non';
//Search Constants //Search Constants
const CODE_TYPE = 'c'; const CODE_TYPE = 'c';
const PROC_TYPE = 'p'; const PROC_TYPE = 'p';
@@ -363,12 +360,12 @@ class Databap extends PhpObject
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_HOVER, $sOptionNameCol=>'couleur de survol', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_HOVER, $sOptionNameCol=>'couleur de survol', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_IMAGE_CHAT, $sOptionNameCol=>'image du chat', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_IMAGE_CHAT, $sOptionNameCol=>'image du chat', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_STATUS, $sOptionNameCol=>'mission en cours', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_STATUS, $sOptionNameCol=>'mission en cours', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_CONSOLE, $sOptionNameCol=>'afficher la console du chat', 'type'=>self::OPT_SELECT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_CONSOLE, $sOptionNameCol=>'afficher la console du chat', 'type'=>self::OPT_CHECKBOX, 'language'=>self::LANG_FR));
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_EMAIL, $sOptionNameCol=>'email', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_EMAIL, $sOptionNameCol=>'email', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
$this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_CHAT_HISTO, $sOptionNameCol=>'nombre de jours d\'historique dans le chat', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR)); $this->oMySql->insertRow(self::OPTNAME_TABLE, array($sOptionNameIdCol=>self::OPT_CHAT_HISTO, $sOptionNameCol=>'historique du chat (jours)', 'type'=>self::OPT_TEXT, 'language'=>self::LANG_FR));
//Select and Default Option values //Select and Default Option values
$asDefaultValues = array( self::OPT_CONSOLE=>array(self::OPT_VAL_YES=>false, self::OPT_VAL_NO=>true), $asDefaultValues = array( self::OPT_CONSOLE=>array(true=>false, false=>true),
self::OPT_NICKNAME=>array('Utilisateur inconnu'=>true), self::OPT_NICKNAME=>array('Utilisateur inconnu'=>true),
self::OPT_BG=>array('#04357B'=>true), self::OPT_BG=>array('#04357B'=>true),
self::OPT_BG_2=>array('#88B2F0'=>true), self::OPT_BG_2=>array('#88B2F0'=>true),
@@ -439,6 +436,7 @@ class Databap extends PhpObject
'opt_type_text'=>self::OPT_TEXT, 'opt_type_text'=>self::OPT_TEXT,
'opt_type_pass'=>self::OPT_PASS, 'opt_type_pass'=>self::OPT_PASS,
'opt_type_select'=>self::OPT_SELECT, 'opt_type_select'=>self::OPT_SELECT,
'opt_type_checkbox'=>self::OPT_CHECKBOX,
'max_size'=>self::getMaxSize(), 'max_size'=>self::getMaxSize(),
'authorized_img_exts'=>self::$UPLOAD_IMG_EXTS, 'authorized_img_exts'=>self::$UPLOAD_IMG_EXTS,
'authorized_file_exts'=>self::$UPLOAD_DOC_EXTS, 'authorized_file_exts'=>self::$UPLOAD_DOC_EXTS,
@@ -463,7 +461,7 @@ class Databap extends PhpObject
$asVars['user_id'] = $this->getUserId(); $asVars['user_id'] = $this->getUserId();
$asVars['hash_to_page'] = $this->getPagesFromHash(); $asVars['hash_to_page'] = $this->getPagesFromHash();
$asVars['page_to_hash'] = array_flip($asVars['hash_to_page']); $asVars['page_to_hash'] = array_flip($asVars['hash_to_page']);
$asVars['opt_console'] = ($this->getUserOptionValue(self::OPT_CONSOLE)==self::OPT_VAL_YES); $asVars['opt_console'] = ($this->getUserOptionValue(self::OPT_CONSOLE)==true);
$oPage->setTag('variables', $this->jsonConvert($asVars)); $oPage->setTag('variables', $this->jsonConvert($asVars));
return $oPage->getMask(); return $oPage->getMask();
@@ -1395,13 +1393,15 @@ class Databap extends PhpObject
$asSelectedOptions[$sOptionName]['user_value_id'] = $asUserOptions[$sOptNameId][$sOptValueIdCol]; $asSelectedOptions[$sOptionName]['user_value_id'] = $asUserOptions[$sOptNameId][$sOptValueIdCol];
$asSelectedOptions[$sOptionName]['user_value'] = $asUserOptions[$sOptNameId][$sOptValueTextCol]; $asSelectedOptions[$sOptionName]['user_value'] = $asUserOptions[$sOptNameId][$sOptValueTextCol];
$asSelectedOptions[$sOptionName]['type'] = $asOption['type']; $asSelectedOptions[$sOptionName]['type'] = $asOption['type'];
if($asOption['type']==self::OPT_SELECT) if($asOption['type']==self::OPT_SELECT || $asOption['type']==self::OPT_CHECKBOX)
{ {
$asOptionValuesInfo = array('select'=>array($sOptValueIdCol, $sOptValueTextCol), $asOptionValuesInfo = array('select'=>array($sOptValueIdCol, $sOptValueTextCol),
'from'=>self::OPTVAL_TABLE, 'from'=>self::OPTVAL_TABLE,
'constraint'=>array('language'=>$this->sLanguage, MySqlManager::getId(self::OPTNAME_TABLE)=>$sOptNameId), 'constraint'=>array('language'=>$this->sLanguage, MySqlManager::getId(self::OPTNAME_TABLE)=>$sOptNameId),
'orderBy'=>array('led'=>'ASC')); 'orderBy'=>array('led'=>'ASC'));
$asSelectedOptions[$sOptionName]['select'] = $this->oMySql->selectRows($asOptionValuesInfo, true, $sOptValueIdCol); $asOptionValues = $this->oMySql->selectRows($asOptionValuesInfo, true, $sOptValueIdCol);
$asSelectedOptions[$sOptionName]['select'] = $asOptionValues;
$asSelectedOptions[$sOptionName]['select_inv'] = array_flip($asOptionValues);
} }
} }
ksort($asSelectedOptions); ksort($asSelectedOptions);
@@ -1433,6 +1433,7 @@ class Databap extends PhpObject
switch($asOption['type']) switch($asOption['type'])
{ {
case self::OPT_SELECT: case self::OPT_SELECT:
case self::OPT_CHECKBOX:
$sNewValueId = $asNewOptions[$sOptNameId]; $sNewValueId = $asNewOptions[$sOptNameId];
$sNewValue = $this->oMySql->selectValue(self::OPTVAL_TABLE, $sOptValueTextCol, $sNewValueId); $sNewValue = $this->oMySql->selectValue(self::OPTVAL_TABLE, $sOptValueTextCol, $sNewValueId);
break; break;

View File

@@ -72,6 +72,37 @@ function addOption(iArrayId, optInfo, $Box)
case databap.consts.opt_type_pass: case databap.consts.opt_type_pass:
$Option.append($('<input>', {type:'password', id:optNameId, name:optNameId, value:optInfo.user_value, 'class':'round'})); $Option.append($('<input>', {type:'password', id:optNameId, name:optNameId, value:optInfo.user_value, 'class':'round'}));
break; break;
case databap.consts.opt_type_checkbox:
var $Select = $('<select>', {id:optNameId, name:optNameId, 'class':'hide'}).appendTo($Option);
$.each
(
optInfo.select,
function(selectId, selectName)
{
$Select
.append($('<option>', {value:selectId})
.prop('selected', (selectId==optInfo.user_value_id))
.text(selectName));
}
);
$Option.append(
$('<span>', {'class':'checkbox clickable'})
.data('option_id', optNameId)
.data('on', optInfo.user_value)
.data('options', optInfo.select_inv)
.append($('<i>', {'class':'fa fa-c-'+(optInfo.user_value=="1"?'on':'off')}))
.click(function()
{
$This = $(this);
var sNewValue = !$This.data('on');
$This.data('on', sNewValue);
$('#'+$This.data('option_id')).val($This.data('options')[sNewValue?1:0]);
$This.find('.fa')
.removeClass('fa-c-on fa-c-off')
.addClass('fa-c-'+(sNewValue?'on':'off'));
})
);
break;
case databap.consts.opt_type_select: case databap.consts.opt_type_select:
var $Select = $('<select>', {id:optNameId, name:optNameId, 'class':'round'}).appendTo($Option); var $Select = $('<select>', {id:optNameId, name:optNameId, 'class':'round'}).appendTo($Option);
$.each $.each
@@ -98,7 +129,7 @@ function validate_options()
databap.getMainElem('#options_form'), databap.getMainElem('#options_form'),
function(result) function(result)
{ {
databap.addSuccessIcon(); self.addBufferIcon();
location.reload(); location.reload();
}, },
true true

View File

@@ -310,4 +310,11 @@ vertical-align 0% -5% -10% -15% -20% -25% -30%
.fa-c-image:before { .fa-c-image:before {
content: "\f03e"; content: "\f03e";
}
.fa-c-on:before {
content: "\f205";
}
.fa-c-off:before {
content: "\f204";
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1077,16 +1077,19 @@
} }
#options .options_box .option_line { #options .options_box .option_line {
margin:10px 0; margin:5px 0;
float:left;
width:100%;
} }
#options .options_box input[type=text], #options .options_box input[type=password], #options .options_box select { #options .options_box input[type=text],
font-size:$size_big; #options .options_box input[type=password],
#options .options_box select,
#options .options_box .checkbox {
background:$col_none; background:$col_none;
border-width:1px; border-width:1px;
font-size:$size_vbig; font-size:14px;
padding:5px; padding:5px;
margin-top:6px;
float:right; float:right;
} }
@@ -1099,11 +1102,21 @@
color:$col_main_1; color:$col_main_1;
} }
#options .options_box .checkbox {
padding:0;
background:none;
font-size:1.7em;
}
#options .options_box .option_line p { #options .options_box .option_line p {
float:left; float:left;
width:250px; width:250px;
padding:5px 0; padding:5px 0;
margin:5px 0; font-size:14px;
}
#options .options_box .button {
margin-top:5px;
} }
/* Procedure */ /* Procedure */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
todo
View File

@@ -25,7 +25,6 @@ New features:
- [1.2.0] Chat: New "Connected Users" Panel: On click, opening a sub panel with icons: profil link, status, PM. - [1.2.0] Chat: New "Connected Users" Panel: On click, opening a sub panel with icons: profil link, status, PM.
- [1.2.0] Unread messages par user (dedicated table). - [1.2.0] Unread messages par user (dedicated table).
- [1.2.0] Refiltre par type dans le search - [1.2.0] Refiltre par type dans le search
- [1.2.0] Remplacer dans les options : oui / non par [-0] (f205) [O-] (f204)
- [1.2.0] Son pour les nouveaux messages - [1.2.0] Son pour les nouveaux messages
- [1.2.0] Chat : compatibilité mobile (utiliser la fonctionnalité ff) - [1.2.0] Chat : compatibilité mobile (utiliser la fonctionnalité ff)
- [1.2.0] search : add tagname, like code:blabla to search blabla in codes only - [1.2.0] search : add tagname, like code:blabla to search blabla in codes only