jp112

userAccountConfigAdmin.htm

Oct 26th, 2018
335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <div class="popupTitle">
  2.   &nbsp;&nbsp;
  3.   <%
  4.   Write(system.GetVar("title"));
  5.   string sDisabled = "";
  6.   string sSuperAdminDisabled = "";
  7.   string sDeviceDisabled = "";
  8.   object oUser = dom.GetObject( system.GetSessionVar('sessionUserID') );
  9.   if (oUser.UserLevel() != iulAdmin)
  10.   {
  11.     sDisabled = "disabled";
  12.     sDeviceDisabled = "disabled";
  13.   }
  14.  
  15.   integer uid = system.GetVar("userid");
  16.   if (uid != 0)
  17.   {
  18.     object userToTest = dom.GetObject(uid);
  19.     if (userToTest)
  20.     {
  21.       if( userToTest.ID() == oUser.ID() )
  22.       {
  23.         sDeviceDisabled = "";
  24.       }
  25.       if(userToTest.Name() == "Admin")
  26.       {
  27.         sDisabled = "disabled";
  28.         sSuperAdminDisabled = "disabled";
  29.         sDeviceDisabled = "disabled";
  30.       }
  31.     }
  32.   }
  33.   %>
  34. </div>
  35.  
  36. <div class="CLASS00700">
  37.   <table class="tblUserData CLASS00701" cellpadding="0" cellspacing="0" >
  38.     <tr>
  39.     <td class="CLASS00702">
  40.         <table class="CLASS00703" cellpadding="5" cellspacing="0" >
  41.         <colgroup>
  42.         <col width="50%" />
  43.         <col width="50%" />
  44.         </colgroup>
  45.         <tr>    
  46.           <td class="CLASS00704">${lblUserName}</td>
  47.           <td class="CLASS00704">
  48.             <input type="text" id="fullName" class="CLASS00704" <% Write(sSuperAdminDisabled); %> />
  49.           </td>
  50.         </tr>
  51.         <tr>
  52.           <td class="CLASS00704">${lblUserPassword}</td>
  53.           <td class="CLASS00704"><input type="Password" id="txtPw" class="CLASS00704" onchange="onPwChange()"/></td>
  54.         </tr>
  55.         <tr>
  56.           <td class="CLASS00704">${lblUserPasswordRepeat}</td>
  57.           <td class="CLASS00704"><input type="Password" id="txtPw2" class="CLASS00704" onchange="onPwChange()"/></td>
  58.         </tr>
  59.         <tr>
  60.           <td colspan="2" class="CLASS00705">
  61.             ${hintUsrCfgPassword}
  62.         </tr>
  63.         </table>
  64.     </td>
  65.     <td class="CLASS00706">
  66.       <table class="CLASS00707">
  67.  
  68.        <!-- Select language -->
  69.        <tr>
  70.            <td class="CLASS00704">
  71.                <table id="selectUserLang" class="CLASS00708"><colgroup><col width="50%" /><col width="50%" /></colgroup>
  72.                    <tr>
  73.                        <td>${lblSelectLanguage}</td>
  74.                        <td class="CLASS00709">
  75.                            <select id="userLanguage" onchange="onLanguageChanged()">
  76.                                <option value="0">${selectLangAuto}</option>
  77.                                <option value="1">${selectLangDE}</option>
  78.                                <option value="2">${selectLangUK}</option>
  79.                            </select>
  80.                        </td>
  81.                    </tr>
  82.                </table>
  83.            </td>
  84.       </tr>
  85.       <!-- End select language -->
  86.       <tr>
  87.         <td class="CLASS00704">
  88.           <table class="CLASS00708"><colgroup><col width="50%" /><col width="50%" /></colgroup>
  89.             <tr><td>${lblBtnForLogin}</td><td class="CLASS00709"><input id="cbUserS" type="checkbox" checked /></td></tr>
  90.           </table>
  91.         </td>
  92.        
  93.       </tr>
  94.       <tr>
  95.         <td class="CLASS00704">
  96.           <table class="CLASS00708"><colgroup><col width="50%" /><col width="50%" /></colgroup>
  97.             <tr><td>${lblAccessLevel}</td>
  98.               <td class="CLASS00709">
  99.                 <select onchange="ChangeLevel(this.selectedIndex);" id="selLevel" <% Write(sDisabled); %> >
  100.                   <option value="8">${lblAdmin}</option>
  101.                   <option value="2">${lblUser}</option>
  102.                   <option value="1">${lblGuest}</option>
  103.                 </select>
  104.               </td>
  105.             </tr>
  106.           </table>
  107.         </td>
  108.       </tr>
  109.       <tr>
  110. <!--      
  111.         <td class="CLASS00704">
  112.           <table class="CLASS00708"><colgroup><col width="50%" /><col width="50%" /></colgroup>
  113.             <tr>
  114.               <td>Endger‰teauswahl:</td>
  115.                <td class="CLASS00709">
  116.                  <select id="selDev" <% Write(sDeviceDisabled); %>>
  117.                    <option selected value="0">automatisch</option>
  118.                    <option value="1">PDA</option>
  119.                    <option value="3">PC</option>
  120.                  </select>
  121.                </td>
  122.             </tr>
  123.           </table>
  124.         </td>
  125. -->        
  126.       </tr>
  127.       <tr>
  128.         <td class="CLASS00704">
  129.         <%
  130.           object oUser = dom.GetObject( system.GetSessionVar('sessionUserID') );
  131.           var tableStyle = "";
  132.           if (oUser.UserLevel() != iulAdmin)
  133.           {
  134.             tableStyle = "style='display:none;visibility:hidden;'";
  135.           }
  136.         %>
  137.         <table class="CLASS00708" <%Write(tableStyle);%>>
  138.         <colgroup><col width="90%" /><col width="10%" /></colgroup>
  139.         <tr><td>${lblEasyModeActive}</td><td class="CLASS00709"><input id="cbEasy" type="checkbox" checked NAME="cbEasy"/></td></tr>
  140.         </table>
  141.         </td>
  142.       </tr>
  143.       <tr>
  144.         <td class="CLASS00704">
  145.         <table class="CLASS00708" <%Write(tableStyle);%>>
  146.           <colgroup><col width="90%" /><col width="10%" /></colgroup>
  147.           <tr><td>${lblHideStickyUnreach}</td><td class="CLASS00709"><input id="cbHideStickyUnreachServiceMessage" type="checkbox" NAME="cbStickyUnreach" onchange="onHideStickyUnreachChanged()"/></td></tr>
  148.         </table>
  149.         </td>
  150.       </tr>
  151.       <tr>
  152.         <td class="CLASS00704">
  153.           <table class="CLASS00708"><colgroup><col width="50%" /><col width="50%" /></colgroup>
  154.             <tr><td>${lblPhoneNumber}</td><td class="CLASS00709"><input id="txtPhone" size="30" type="text" class="CLASS00709" /></td></tr>
  155.           </table>
  156.         </td>
  157.       </tr>
  158.       <tr>
  159.         <td class="CLASS00704">
  160.           <table class="CLASS00708"><colgroup><col width="50%" /><col width="50%" /></colgroup>
  161.             <tr><td>${lblEMailAddress}</td><td class="CLASS00709"><input id="txtMail" size="40" type="text" class="CLASS00709" /></td></tr>
  162.           </table>
  163.         </td>
  164.       </tr>
  165.       <tr>
  166.         <td>
  167.           <table class="CLASS00708"><colgroup><col width="80%" /><col width="20%" /></colgroup>
  168.             <tr><td></td><td class="CLASS00711"><div class="FooterButton CLASS00712" onclick="saveUser();">${btnAdoptSettings}</div></td></tr>
  169.           </table>
  170.         </td>
  171.       </tr>
  172.       </table>
  173.     </td>
  174.     </tr>
  175.     <tr class="CLASS00713" id="svt1">
  176.     <td colspan="2" class="CLASS00714">
  177.         <table class="CLASS00708"><colgroup><col width="80%" /><col width="20%" /></colgroup>
  178.           <tr>
  179.             <td class="CLASS00715">${lblStartPageSystemInfo}</td>
  180.             <td class="CLASS00709">
  181.               <div class="FooterButton CLASS00716" onclick="addSysVar()">${btnAddSysVariable}</div>
  182.             </td>
  183.             <td class="CLASS00709">
  184.               <div class="FooterButton CLASS00716" onclick="sortSysVar()">${btnSortSysVariable}</div>
  185.             </td>
  186.           </tr>
  187.         </table>
  188.     </td>
  189.     </tr>
  190.     <tr id="svt2">
  191.     <td colspan="2">
  192.     <div id="userSysVarTbl" class="CLASS00717">
  193.     </div>
  194.     </td>
  195.     </tr>
  196.     <tr class="popupTableRow" id="svt3">
  197.     <td class="CLASS00718" colspan="2">
  198.     <div class="FooterButton CLASS00719" onclick="PopupClose()" >${footerBtnPageBack}</div>
  199.     </td>
  200.     </tr>
  201. </table>
  202. </div>
  203.  
  204. <script type="text/javascript">
  205.  
  206.   translatePage("#selectUserLang");
  207.   var languageChanged = false;
  208.   var passChanged = false;
  209.   var hideStickyUnreachChanged =false;
  210.   var arSysVars = new Array();
  211.   var iUserId = <% Write(system.GetVar("userid")); %>;
  212.   var arUserNames = new Array();
  213.  
  214.  
  215.  
  216.   // Deactivate this when the user language is not in use
  217.   <%
  218.     object user = dom.GetObject(uid);
  219.     Write("var lang = homematic('User.getLanguage', {'userID' : userId});");
  220.     Write("lang = ((lang == null) || (lang > 2)) ? 0 : lang;");
  221.     Write("$('userLanguage').value = lang;");
  222.   %>
  223.  
  224.   jQuery("#cbHideStickyUnreachServiceMessage").prop("checked",WebUI.HIDESTICKYUNREACH);
  225.  
  226.   ChangeLevel = function(sIdx)
  227.   {
  228.     switch( sIdx )
  229.     {
  230.       case 0:
  231.         showSVTable();
  232.         break;
  233.       case 1:
  234.         showSVTable();
  235.         break;
  236.       case 2:
  237.         hideSVTable();
  238.         break;
  239.     }
  240.   };
  241.  
  242.   showSVTable = function()
  243.   {
  244.     $('svt1').show();
  245.     $('svt2').show();
  246.     //$('svt3').show();
  247.   };
  248.  
  249.   hideSVTable = function()
  250.   {
  251.     $('svt1').hide();
  252.     $('svt2').hide();
  253.     //$('svt3').hide();
  254.   };
  255.  
  256.   onLanguageChanged = function() {
  257.     languageChanged = true;
  258.   };
  259.  
  260.   onHideStickyUnreachChanged = function() {
  261.     hideStickyUnreachChanged = true;
  262.   };
  263.  
  264.   onPwChange = function()
  265.   {
  266.     passChanged = true;
  267.   };
  268.  
  269.   buildUserName = function()
  270.   {
  271.     var s = $("fullName").value;
  272.     s =  s.replace(/\s/g, '');
  273.     return s;
  274.   };
  275.  
  276.   buildFirstLastName = function()
  277.   {
  278.     var arTmp = new Array();
  279.     var s = $("fullName").value;
  280.     var iPos = s.indexOf(" ");
  281.     if (iPos == -1)
  282.     {
  283.       arTmp[0] = s;
  284.       arTmp[1] = "";
  285.     }
  286.     else
  287.     {
  288.       arTmp[0] = s.substr(0, iPos);
  289.       arTmp[1] = s.substr(iPos + 1);
  290.     }
  291.     return arTmp;
  292.   };
  293.  
  294.  
  295.   sortSysVar = function()
  296.   {
  297. <%
  298.    object oUser = dom.GetObject( system.GetSessionVar('sessionUserID') );
  299.    object uso = oUser.UserSharedObjects();
  300.    !uso.SortByName();
  301. %>
  302.   };
  303.  
  304.   addSysVar = function()
  305.   {
  306.     dlgResult = "";
  307.     var user = getUserJson();
  308.  
  309.     var chooserPopup = new iseMessageBox(ID_SYS_VARS_SELECTION, 0, true);
  310.     restorePrevious = function()
  311.     {
  312.       chooserPopup.restorePrevious();
  313.       dlgPopup.readaptSize();
  314.       chooserPopup.ShowPopup();
  315.       if (dlgResult != "")
  316.       {
  317.         var bFound = false;
  318.         for (var i = 0; i < arSysVars.length; i++) {
  319.           if (arSysVars[i] == dlgResult) {
  320.             bFound = true;
  321.             break;
  322.           }
  323.         }
  324.         if (!bFound)
  325.           arSysVars[arSysVars.length] = dlgResult;
  326.         if (iUserId == 0)
  327.         {
  328.           iseUser.buildTmpSysVarTable(arSysVars);
  329.         }
  330.         else
  331.         {
  332.           iseUser.addSysVarBuildTable(iUserId, dlgResult);
  333.         }
  334.       }
  335.       // Eingetragene Werte wiederherstellen
  336.       $("fullName").value = user.fullName;
  337.       $("txtPw").value = user.pw;
  338.       $("txtPw2").value = user.pw2;
  339.       $("cbUserS").checked = user.btnLogin;
  340.  
  341.       var selIdx = 0;
  342.       switch (parseInt(user.level))
  343.       {
  344.         case 8: selIdx = 0; break;
  345.         case 2: selIdx = 1; break;
  346.         case 1: selIdx = 2; break;
  347.       }
  348.       $("selLevel").selectedIndex = selIdx;
  349. //      $("selDev").selectedIndex = user.devIdx;
  350.       $("cbEasy").checked = user.simple;
  351.       $("txtPhone").value = user.phone;
  352.       $("txtMail").value = user.mail;
  353.  
  354.     };
  355.     chooserPopup.ShowPopup();
  356.   };
  357.  
  358.   getUserJson = function()
  359.   {
  360.     var user = {};
  361.     user.fullName = $("fullName").value;
  362.     user.userName = buildUserName();
  363.     var arTmp = buildFirstLastName();
  364.     user.firstName = arTmp[0];
  365.     user.lastName = arTmp[1];
  366.     user.pw = $("txtPw").value;
  367.     user.pw2 = $("txtPw2").value;
  368.     user.btnLogin = $("cbUserS").checked;
  369.     user.level = $("selLevel")[$("selLevel").selectedIndex].value;
  370. //    user.dev = $("selDev")[$("selDev").selectedIndex].value;
  371. //    user.devIdx = $("selDev").selectedIndex;
  372.     user.simple = $("cbEasy").checked;
  373.     user.phone = $("txtPhone").value;
  374.     user.mail = $("txtMail").value;
  375.  
  376.     // Activate user language
  377.     user.language = $("userLanguage")[$("userLanguage").selectedIndex].value;
  378.     userIsNoExpert = user.simple;
  379.     return user;
  380.   };
  381.  
  382.   delFromTmpVars = function(id) {
  383.     var arTmp = new Array();
  384.     for (var i = 0; i < arSysVars.length; i++) {
  385.       if (arSysVars[i] != id)
  386.         arTmp[arTmp.length] = arSysVars[i];
  387.     }
  388.     arSysVars = arTmp;
  389.     iseUser.buildTmpSysVarTable(arSysVars);
  390.   };
  391.  
  392.   userExists = function(s)
  393.   {
  394.     for (var i = 0; i < arUserNames.length; i++)
  395.     {
  396.       if( s.toLowerCase() == arUserNames[i].toLowerCase() ) return true;
  397.     }
  398.     return false;
  399.   };
  400.  
  401.   saveUser = function()
  402.   {
  403.  
  404.     var olduserlevel = -1;
  405.     var bn = $("fullName").value;
  406.    
  407.     if ($("txtPw").value != $("txtPw2").value)
  408.     {
  409.       //alert("Die Passwort-Eingaben stimmen nicht ¸berein");
  410.       alert(translateKey("alertPwdRepeatNotIdentical"));
  411.       return;
  412.     }
  413.    
  414.     if( !isPasswordAllowed( $("txtPw").value, 0 ) )
  415.     {
  416.       return;
  417.     }
  418.    
  419.     if ( bn == "")
  420.     {
  421.       //alert("Bitte geben Sie einen Benutzernamen ein.");
  422.       alert(translateKey("alertEmptyUsername"));
  423.       return;
  424.     }
  425.     if (!(isTextAllowed(bn,1))) return;
  426.    
  427.     if (userExists(buildUserName()))
  428.     {
  429.       //alert("Ein Benutzer mit dem angegebenen Namen existiert bereits.");
  430.       alert(translateKey("alertUserExists"));
  431.       return;
  432.     }
  433.  
  434.     var user = getUserJson();
  435.  
  436.     if (languageChanged) {
  437.       homematic("User.setLanguage", {"userName": user.userName, "userLang": user.language}, function () {
  438.         WebUI.USERLANGUAGE = user.language;
  439.         jQuery("#header").attr("lang", WebUI.USERLANGUAGE);
  440.         loadTextResource();
  441.         WebUI.start();
  442.       });
  443.     }
  444.     if (hideStickyUnreachChanged) {
  445.       WebUI.HIDESTICKYUNREACH = jQuery("#cbHideStickyUnreachServiceMessage").prop("checked");
  446.       homematic("CCU.hideStickyUnreach", {"mode": WebUI.HIDESTICKYUNREACH});
  447.     }
  448.  
  449.     if ( <% Write(system.GetVar("userid") # "==" # system.GetSessionVar("sessionUserID")); %> )
  450.     {
  451.       olduserlevel = <% Write(oUser.UserLevel()); %>;
  452.     }
  453.  
  454.  
  455.     var url = "/esp/system.htm?sid="+SessionId;
  456.     var pb = "string action = 'saveUser';";
  457.     pb += "integer iUserid = " + iUserId + ";";
  458.     pb += "string userName   = '"+user.userName+"';";
  459.    
  460.     pb += "string firstName = '"+user.firstName+"';";
  461.     pb += "string lastName = '"+user.lastName+"';";
  462.     if (iUserId == 0)
  463.     {
  464.       var s = "";
  465.       for(var i = 0; i < arSysVars.length; i++)
  466.       {
  467.         s += arSysVars[i] + "\t";
  468.       }
  469.       s = s.substr(0, s.length - 1);
  470.       pb += "string sSysVars = '"+s+"';";
  471.     }
  472.     pb += "integer iPwChanged = " + (passChanged? 1 : 0) + ";";
  473.     pb += "string pw = '"+user.pw+"';";
  474.     pb += "integer iLogin = '"+(user.btnLogin? 1:0)+"';";
  475. //    pb += "integer dev = " + user.dev + ";";
  476.     pb += "integer dev = " + 0 + ";";
  477.     pb += "integer level = '"+user.level+"';";
  478.     pb += "boolean bEasy = "+(user.simple? true:false)+";";
  479.     pb += "string phone = '"+user.phone+"';";
  480.     pb += "string mail = '"+user.mail+"';";
  481.     var opts =
  482.     {
  483.       postBody:ReGa.encode(pb),
  484.       onComplete: function(t)
  485.       {
  486.         if(dbg){alert(t.responseText);}
  487.         PopupClose();
  488.         if( olduserlevel != -1 && olduserlevel != parseInt(user.level) )
  489.         {
  490.           logout();
  491.         }
  492.         else
  493.         {
  494.           reloadPage();
  495.         }
  496.       }  
  497.     };
  498.     new Ajax.Request(url,opts);
  499.   }
  500.  
  501.   <%
  502.     uid = system.GetVar("userid");
  503.    
  504.     object users = dom.GetObject(ID_USERS);
  505.     string tmp = "";
  506.     foreach(tmp, users.EnumEnabledIDs())
  507.     {
  508.       if (tmp != uid)
  509.       {
  510.         object o = dom.GetObject(tmp);
  511.         Write("arUserNames[arUserNames.length] = '"#o.Name()#"';");
  512.       }
  513.     }
  514.    
  515.     if (uid != 0)
  516.     {
  517.       object user = dom.GetObject(uid);
  518.       if (user)
  519.       {
  520.         string sUserFullName = user.UserFirstName()#' '#user.UserLastName();
  521.         if( sUserFullName == ' ' ){ sUserFullName = user.Name(); }
  522.         ! sUserFullName        
  523.         Write("$('fullName').value = '"#sUserFullName#"';");
  524.         Write("$('txtPw').value = '"#user.UserBlankPwd()#"';");
  525.         Write("$('txtPw2').value = '"#user.UserBlankPwd()#"';");
  526.         Write("$('cbUserS').checked = "#user.UserShowLogin()#";");
  527.         Write("$('txtPhone').value = '"#user.UserPhoneNumber()#"';");
  528.         Write("$('txtMail').value = '"#user.UserMailAddress()#"';");
  529.         Write("$('cbEasy').checked = "#user.UserEasyLinkMode()#";");
  530.        
  531.         integer iClient = user.UserClient();
  532. !        if (iClient == dwcAuto) { Write("$('selDev').selectedIndex = 0;"); }
  533. !        if (iClient == dwcPDA) { Write("$('selDev').selectedIndex = 1;"); }
  534. !       if (iClient == dwcPC) { Write("$('selDev').selectedIndex = 2;"); }
  535.         ! if (iClient == dwcHandy) { Write("$('selDev').selectedIndex = 0;"); }
  536.        
  537.         integer iLevel = user.UserLevel();
  538.         if( iLevel == iulAdmin )
  539.         {
  540.           Write("$('selLevel').selectedIndex = 0;");
  541.         }
  542.         else
  543.         {
  544.           if (iLevel == iulUser)
  545.           {
  546.             Write("$('selLevel').selectedIndex = 1;");
  547.           }
  548.           else
  549.           {
  550.             Write("$('selLevel').selectedIndex = 2;");
  551.             Write('hideSVTable();');
  552.           }
  553.         }
  554.         if (user.UserSharedObjects().Count() > 0) {
  555.           string tmp = "";
  556.           object uso = user.UserSharedObjects();
  557.           !uso.SortByName();
  558.           foreach (tmp, uso.EnumIDs()) {
  559.             Write("arSysVars[arSysVars.length] = "#tmp#";");
  560.           }
  561.         }
  562.         Write("iseUser.buildSysVarTable("#uid#");");
  563.                
  564.       }
  565.     }
  566.   %>
  567.  
  568. </script>
Advertisement
Add Comment
Please, Sign In to add comment