Plugin Directory

Changeset 2235723


Ignore:
Timestamp:
01/30/2020 10:34:58 AM (6 years ago)
Author:
tansadev
Message:
  • Publish to Store 5.0.1.10
    • WORDPRESS-26 : Unable to configure license key
    • WORDPRESS-25 : Verify WP 5.3
Location:
tansa
Files:
2 added
15 edited

Legend:

Unmodified
Added
Removed
  • tansa/trunk/dist/javascriptapp/ClientTexts.xml

    r2054562 r2235723  
    243243                <userSetOk text="Brugernavn angivet."/>
    244244                <userSetNotFound text="Ukendt brugernavn!"/>
     245                <getLicenseKey text="Get License Key"/>
     246                <enterEmailAddress text="Enter your email address" />
     247                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     248                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    245249            </connectionDialog>
    246250            <statuses>
     
    588592                <userSetOk text="Benutzername eingegeben."/>
    589593                <userSetNotFound text="Unbekannter Benutzername!"/>
     594                <getLicenseKey text="Get License Key"/>
     595                <enterEmailAddress text="Enter your email address" />
     596                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     597                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    590598            </connectionDialog>
    591599            <statuses>
     
    933941                <userSetOk text="Username set."/>
    934942                <userSetNotFound text="Unknown username!"/>
     943                <getLicenseKey text="Get License Key"/>
     944                <enterEmailAddress text="Enter your email address" />
     945                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     946                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    935947            </connectionDialog>
    936948            <statuses>
     
    12781290                <userSetOk text="Username set."/>
    12791291                <userSetNotFound text="Unknown username!"/>
     1292                <getLicenseKey text="Get License Key"/>
     1293                <enterEmailAddress text="Enter your email address" />
     1294                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     1295                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    12801296            </connectionDialog>
    12811297            <statuses>
     
    16231639                <userSetOk text="Username set."/>
    16241640                <userSetNotFound text="Unknown username!"/>
     1641                <getLicenseKey text="Get License Key"/>
     1642                <enterEmailAddress text="Enter your email address" />
     1643                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     1644                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    16251645            </connectionDialog>
    16261646            <statuses>
     
    19681988                <userSetOk text="Username set."/>
    19691989                <userSetNotFound text="Unknown username!"/>
     1990                <getLicenseKey text="Get License Key"/>
     1991                <enterEmailAddress text="Enter your email address" />
     1992                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     1993                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    19701994            </connectionDialog>
    19711995            <statuses>
     
    23132337                <userSetOk text="Nombre de usuario designado."/>
    23142338                <userSetNotFound text="¡Nombre de usuario desconocido!"/>
     2339                <getLicenseKey text="Get License Key"/>
     2340                <enterEmailAddress text="Enter your email address" />
     2341                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     2342                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    23152343            </connectionDialog>
    23162344            <statuses>
     
    26582686                <userSetOk text="Nom d’utilisateur saisi."/>
    26592687                <userSetNotFound text="Nom d’utilisateur inconnu!"/>
     2688                <getLicenseKey text="Get License Key"/>
     2689                <enterEmailAddress text="Enter your email address" />
     2690                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     2691                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    26602692            </connectionDialog>
    26612693            <statuses>
     
    30033035                <userSetOk text="Nom d’utilisateur saisi."/>
    30043036                <userSetNotFound text="Nom d’utilisateur inconnu!"/>
     3037                <getLicenseKey text="Get License Key"/>
     3038                <enterEmailAddress text="Enter your email address" />
     3039                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     3040                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    30053041            </connectionDialog>
    30063042            <statuses>
     
    33483384                <userSetOk text="Brukernavn angitt."/>
    33493385                <userSetNotFound text="Ukjent brukernavn!"/>
     3386                <getLicenseKey text="Get License Key"/>
     3387                <enterEmailAddress text="Enter your email address" />
     3388                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     3389                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    33503390            </connectionDialog>
    33513391            <statuses>
     
    36933733                <userSetOk text="Brukernavn angitt."/>
    36943734                <userSetNotFound text="Ukjent brukernavn!"/>
     3735                <getLicenseKey text="Get License Key"/>
     3736                <enterEmailAddress text="Enter your email address" />
     3737                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     3738                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    36953739            </connectionDialog>
    36963740            <statuses>
     
    40384082                <userSetOk text="Användarnamnn angett."/>
    40394083                <userSetNotFound text="Okänd användarnamn!"/>
     4084                <getLicenseKey text="Get License Key"/>
     4085                <enterEmailAddress text="Enter your email address" />
     4086                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     4087                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    40404088            </connectionDialog>
    40414089            <statuses>
     
    43834431                <userSetOk text="Nome do utilizador definido."/>
    43844432                <userSetNotFound text="Nome de utilizador desconhecido!"/>
     4433                <getLicenseKey text="Get License Key"/>
     4434                <enterEmailAddress text="Enter your email address" />
     4435                <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     4436                <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    43854437            </connectionDialog>
    43864438            <statuses>
     
    47324784            <userSetOk text="Username set."/>
    47334785            <userSetNotFound text="Unknown username!"/>
     4786            <getLicenseKey text="Get License Key"/>
     4787            <enterEmailAddress text="Enter your email address" />
     4788            <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     4789            <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    47344790        </connectionDialog>
    47354791        <statuses>
     
    50965152            <userSetOk text="Username set."/>
    50975153            <userSetNotFound text="Unknown username!"/>
     5154            <getLicenseKey text="Get License Key"/>
     5155            <enterEmailAddress text="Enter your email address" />
     5156            <emailNotRegistered text="Email not registered with %SHORTSYSTEMNAME%" />
     5157            <serverSetAndLicenseKeySend text="Server address is set and license key has been sent to your email address." />
    50985158        </connectionDialog>
    50995159        <statuses>
  • tansa/trunk/dist/javascriptapp/css/connection.css

    r2054562 r2235723  
    8484    position: relative;
    8585    background-size: 17px 19px;
    86     top: -4px;
    87     left: 10px;
     86    top: 4px;
     87    left: 5px;
    8888    min-width: 5% !important;
    8989}
  • tansa/trunk/dist/javascriptapp/html/connection.html

    r2054562 r2235723  
    11<!DOCTYPE HTML>
    22<html>
    3     <head>
    4         <title localized="connectionDialog title"></title>
    5         <script type="text/javascript" charset="utf-8" src="../js/jquery/jquery-3.3.1.min.js"></script>
    6         <script type="text/javascript" charset="utf-8" src="../js/jquery/jquery-migrate-3.0.1.min.js"></script>
    7         <script type="text/javascript" charset="utf-8" src="../js/jquery/jquery-ui.min.js"></script>
    8         <script type="text/javascript" charset="utf-8" src="../js/jquery/jquery.blockUI.js"></script>
    9         <script type="text/javascript" charset="utf-8" src="../js/jquery/jquery.validate.min.js"></script>
    10         <link rel="stylesheet" href="../css/styles.css" type="text/css">
    11         <link rel="stylesheet" href="../css/connection.css" type="text/css">
    12         <link rel="stylesheet" href="../css/jquery-ui.css" type="text/css">
    13     </head>
    14     <body class="tansa">
    15         <div id="mainContainer">
    16             <div id="alertDialog" style="display: none" systemNameTitle="longSystemName">
    17                 <span id="alertMsg"></span>
    18                 <div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix button-wrapper">
    19                     <span class="primaryBtn">
    20                         <button type="button" id="alertDialogOkBtn" localized="messageBox ok">OK</button>
    21                     </span>
    22                 </div>
    23             </div>
    24             <div id="confirmDialog" style="display: none" systemNameTitle="longSystemName">
    25                 <span id="confirmMsg"></span>
    26                 <div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix button-wrapper">
    27                     <span class="secondaryBtn mac-only">
    28                         <button type="button" id="confirmDialogCancelBtn" localized="messageBox cancel">Cancel</button>
    29                     </span>
    30                     <span class="primaryBtn ">
    31                         <button type="button" id="confirmDialogOkBtn" localized="messageBox ok">OK</button>
    32                     </span>
    33                 </div>
    34             </div>
    35            
    36             <fieldset>
    37                 <form id="serverAddressForm" name="serverAddressForm" action="#" autocomplete="off">
    38                     <table cellspacing="1" cellpadding="2px">
    39                         <tr>
    40                             <td class="headerName" localized="connectionDialog server" colspan="2"></td>
    41                         </tr>
    42                         <tr>
    43                             <td class="header" id="setAddressLabel" localized="connectionDialog setAddress" colspan="2"></td>
    44                         </tr>
    45                         <tr>
    46                             <td colspan="2">
    47                                 <input type="text" id="tansaServerURL" name="tansaServerURL"/>
    48                                 <input type="button" id="deleteServerURLBtn" name="deleteServerURLBtn" localizedTitle="connectionDialog remove" />
    49                             </td>
    50                         </tr>
    51                         <tr>
    52                             <td>
    53                                 <label id="tansaServerURL-error" class="error" for="tansaServerURL"></label>
    54                             </td>
    55                         </tr>
    56                         <tr id="buttonstd">
    57                             <td>
    58                                 <span class="primaryBtn">
    59                                     <input type="button" id="connectBtn" name="connectBtn" localized="connectionDialog connect"/>
    60                                 </span>
    61                             </td>
    62                             <td>
    63                                 <span class="primaryBtn">
    64                                     <input type="button" id="reConnectBtn" name="reConnectBtn" localized="connectionDialog reconnect"/>
    65                                 </span>
    66                             </td>
    67                         </tr>
    68                     </table>
    69                 </form>
    70             </fieldset>
    71             <br />
    72             <fieldset id="usernameContainer">
    73                 <form id="usernameForm" name="usernameForm" action="#" autocomplete="off">
    74                     <table cellspacing="1" cellpadding="2px">
    75                         <tr>
    76                             <td class="headerName" localized="connectionDialog usernameAndLicense"></td>
    77                         </tr>
    78                         <tr>
    79                             <td class="header" id="setUsernameLabel" localized="connectionDialog setUsername"></td>
    80                         </tr>
    81                         <tr>
    82                             <td>
    83                                 <input type="text" id="tansaUserName" name="tansaUserName"/>
    84                             </td>
    85                         </tr>
    86                         <tr>
    87                             <td>
    88                                 <label id="tansaUserName-error" class="error" for="tansaUserName"></label>
    89                             </td>
    90                         </tr>
    91                         <tr>
    92                             <td class="header" id="setLicenseLabel" localized="connectionDialog setLicenseKey"></td>
    93                         </tr>
    94                         <tr>
    95                             <td>
    96                                 <input type="text" id="licenseKey" name="LicenseKey"/>
    97                             </td>
    98                         </tr>
    99                         <tr>
    100                             <td id="buttonstd">
    101                                 <span class="primaryBtn">
    102                                     <input type="button" id="setUserNameBtn" name="setUserNameBtn" localized="connectionDialog set"/>
    103                                 </span>
    104                             </td>
    105                         </tr>
    106                     </table>
    107                 </form>
    108             </fieldset>
    109             <br />
    110             <div>
    111                 <table cellspacing="1" cellpadding="2px">
    112                     <tr id = "closeButtonDiv" >
    113                         <td></td>
    114                         <td>
    115                             <span class="secondaryBtn">
    116                                 <input type="button" id="closeBtn" name="closeBtn" localized="connectionDialog close"/>
    117                             </span>
    118                         </td>
    119                     </tr>
    120                 </table>
    121             </div>
    122         </div>
    123     </body>
    124     <script type="text/javascript" charset="utf-8" src="../js/common.js"></script>
    125     <script type="text/javascript" charset="utf-8" src="../js/connectionDialog.js"></script>
     3
     4<head>
     5    <title localized="connectionDialog title"></title>
     6    <script type="text/javascript" charset="utf-8" src="../js/jquery/jquery-3.3.1.min.js"></script>
     7    <script type="text/javascript" charset="utf-8" src="../js/jquery/jquery-migrate-3.0.1.min.js"></script>
     8    <script type="text/javascript" charset="utf-8" src="../js/jquery/jquery-ui.min.js"></script>
     9    <script type="text/javascript" charset="utf-8" src="../js/jquery/jquery.validate.min.js"></script>
     10    <script type="text/javascript" charset="utf-8" src="../js/jquery/jquery.blockUI.js"></script>
     11    <script type="text/javascript" charset="utf-8" src="../js/common.js"></script>
     12    <script type="text/javascript" charset="utf-8" src="../js/connectionDialog.js"></script>
     13    <link rel="stylesheet" href="../css/styles.css" type="text/css">
     14    <link rel="stylesheet" href="../css/connection.css" type="text/css">
     15    <link rel="stylesheet" href="../css/jquery-ui.css" type="text/css">
     16</head>
     17
     18<body class="tansa">
     19    <div id="mainContainer">
     20        <div id="alertDialog" style="display: none" systemNameTitle="longSystemName">
     21            <span id="alertMsg"></span>
     22            <div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix button-wrapper">
     23                <span class="primaryBtn">
     24                    <button type="button" id="alertDialogOkBtn" localized="messageBox ok">OK</button>
     25                </span>
     26            </div>
     27        </div>
     28        <div id="confirmDialog" style="display: none" systemNameTitle="longSystemName">
     29            <span id="confirmMsg"></span>
     30            <div class="ui-dialog-buttonpane ui-widget-content ui-helper-clearfix button-wrapper">
     31                <span class="secondaryBtn mac-only">
     32                    <button type="button" id="confirmDialogCancelBtn" localized="messageBox cancel">Cancel</button>
     33                </span>
     34                <span class="primaryBtn ">
     35                    <button type="button" id="confirmDialogOkBtn" localized="messageBox ok">OK</button>
     36                </span>
     37                <span class="secondaryBtn windows-only">
     38                    <button type="button" id="confirmDialogCancelBtn" localized="messageBox cancel">Cancel</button>
     39                </span>
     40            </div>
     41        </div>     
     42        <div id="getLicenseKeyDialog" style="display: none" systemNameTitle="longSystemName">
     43            <fieldset>
     44                <form id="getLicenseKeyForm" name="getLicenseKeyForm" action="#" autocomplete="off">
     45                    <table cellspacing="1" cellpadding="2px">
     46                        <tr>
     47                            <td class="header" id="enterEmailAddress" localized="connectionDialog enterEmailAddress"></td>
     48                        </tr>
     49                        <tr>
     50                            <td>
     51                                <input type="text" id="emailId" name="emailId" />
     52                            </td>
     53                        </tr>
     54                        <tr>
     55                            <td>
     56                                <label id="getLicenseKeyDialog-error" class="error" for="emailId"></label>
     57                            </td>
     58                        </tr>
     59                        <tr id="buttonstd">
     60                            <td>
     61                                <span class="secondaryBtn mac-only">
     62                                    <input type="button" id="licenseKeyDialogCancelBtn" name="licenseKeyDialogCancelBtn"
     63                                        localized="messageBox cancel" />
     64                                </span>
     65                            </td>
     66                            <td >
     67                                <span class="primaryBtn ">
     68                                    <input type="button" id="licenseKeyDialogOkBtn" name="licenseKeyDialogOkBtn"
     69                                        localized="messageBox ok" />
     70                                </span>
     71                            </td>
     72                            <td>
     73                                <span class="secondaryBtn windows-only">
     74                                    <input type="button" id="licenseKeyDialogCancelBtn" name="licenseKeyDialogCancelBtn"
     75                                        localized="messageBox cancel" />
     76                                </span>
     77                            </td>
     78                        </tr>
     79                    </table>
     80                </form>
     81            </fieldset>
     82        </div>
     83        <fieldset>
     84            <form id="serverAddressForm" name="serverAddressForm" action="#" autocomplete="off">
     85                <table cellspacing="1" cellpadding="2px">
     86                    <tr>
     87                        <td class="headerName" localized="connectionDialog server" colspan="2"></td>
     88                    </tr>
     89                    <tr>
     90                        <td class="header" id="setAddressLabel" localized="connectionDialog setAddress" colspan="2">
     91                        </td>
     92                    </tr>
     93                    <tr>
     94                        <td colspan="2">
     95                            <input type="text" id="tansaServerURL" name="tansaServerURL" />
     96                            <input type="button" id="deleteServerURLBtn" name="deleteServerURLBtn"
     97                                localizedTitle="connectionDialog remove" />
     98                        </td>
     99                    </tr>
     100                    <tr>
     101                        <td>
     102                            <label id="tansaServerURL-error" class="error" for="tansaServerURL"></label>
     103                        </td>
     104                    </tr>
     105                    <tr id="buttonstd">
     106                        <td>
     107                            <span class="primaryBtn">
     108                                <input type="button" id="connectBtn" name="connectBtn"
     109                                    localized="connectionDialog connect" />
     110                            </span>
     111                        </td>
     112                        <td>
     113                            <span class="primaryBtn">
     114                                <input type="button" id="reConnectBtn" name="reConnectBtn"
     115                                    localized="connectionDialog reconnect" />
     116                            </span>
     117                        </td>
     118                    </tr>
     119                </table>
     120            </form>
     121        </fieldset>
     122        <br />
     123        <fieldset id="usernameContainer">
     124            <form id="usernameForm" name="usernameForm" action="#" autocomplete="off">
     125                <table cellspacing="1" cellpadding="2px">
     126                    <tr>
     127                        <td class="headerName" localized="connectionDialog usernameAndLicense"></td>
     128                    </tr>
     129                    <tr>
     130                        <td class="header" id="setUsernameLabel" localized="connectionDialog setUsername"></td>
     131                    </tr>
     132                    <tr>
     133                        <td>
     134                            <input type="text" id="tansaUserName" name="tansaUserName" />
     135                        </td>
     136                    </tr>
     137                    <tr>
     138                        <td>
     139                            <label id="tansaUserName-error" class="error" for="tansaUserName"></label>
     140                        </td>
     141                    </tr>
     142                    <tr>
     143                        <td class="header" id="setLicenseLabel" localized="connectionDialog setLicenseKey"></td>
     144                    </tr>
     145                    <tr>
     146                        <td>
     147                            <input type="text" id="licenseKey" name="LicenseKey" />
     148                        </td>
     149                    </tr>
     150                    <tr id="buttonstd">
     151                        <td>
     152                            <span id="getLicenseKeyBtnContainer" class="primaryBtn" style="display: none">
     153                                <input type="button" id="getLicenseKeyBtn" name="getLicenseKeyBtn"
     154                                    localized="connectionDialog getLicenseKey" />
     155                            </span>
     156                        </td>
     157                        <td>
     158                            <span class="primaryBtn">
     159                                <input type="button" id="setUserNameBtn" name="setUserNameBtn"
     160                                    localized="connectionDialog set" />
     161                            </span>
     162                        </td>
     163                    </tr>
     164                </table>
     165            </form>
     166        </fieldset>
     167        <br />
     168        <div>
     169            <table cellspacing="1" cellpadding="2px">
     170                <tr id="closeButtonDiv">
     171                    <td></td>
     172                    <td>
     173                        <span class="secondaryBtn">
     174                            <input type="button" id="closeBtn" name="closeBtn" localized="connectionDialog close" />
     175                        </span>
     176                    </td>
     177                </tr>
     178            </table>
     179        </div>
     180    </div>
     181</body>
     182
    126183</html>
  • tansa/trunk/dist/javascriptapp/init.js

    r2054562 r2235723  
     1var TANSA_LOCAL_STORAGE_DATA_KEY_WP = "tansa_local_storage_data_key";
     2var TANSA_USER_GUID_DATA_KEY_WP = "userGuid";
     3var TANSA_CLIENT_WEB_APP_NAME = 'tansaclient';
     4var DEFAULT_ACTIVE_SERVER_NAME = "tansa";
     5var DEFAULT_CSUM_SERVER_URL = "saas.tansa.com";
     6var TANSA_WEB_CLIENT_BASE_URL_PROTOCOL = "https";
     7var TANSA_EXT_NAME = 'tansa-wordpress';
    18
    29window.tansa = {};
    310window.tansa.settings = {};
    4 const TANSA_LOCAL_STORAGE_DATA_KEY_WP = "tansa_local_storage_data_key";
    5 const TANSA_USER_GUID_DATA_KEY_WP = "userGuid";
    6 var TANSA_CLIENT_WEB_APP_NAME = 'tansaclient';
    7 var TANSA_CLIENT_DEFAULT_URL = 'https://tansa';
    8 var TANSA_EXT_NAME = 'tansa-wordpress';
     11window.tansaExtSettings = {};
    912
    1013tansa.setLocalStorageData = function(data) {
     
    2730
    2831tansa.initLocalStorageData = function (){
    29     var localStorageDataChanged = false;
    30     window.localStorageData = tansa.getLocalStorageData();
    31     if(!window.localStorageData.serverURLs){
    32         window.localStorageData.serverURLs = [];
    33         localStorageDataChanged = true;
    34     }
     32    var isExtSettingsChanged = false;
     33
     34    tansaExtSettings = tansa.getLocalStorageData();
     35    if (!tansaExtSettings.serverURLs)
     36        tansaExtSettings.serverURLs = [];
     37
     38    // to convert old extension settings into new format
     39    if (tansaExtSettings.serverURLs.length == 0 && typeof tansaExtSettings.serverAddressXML === "string") {
     40        tansaExtSettings.serverURLs = convertTansaServerXMLToJson(tansaExtSettings.serverAddressXML)
     41    }
     42
     43    if (tansaExtSettings.serverURLs.length == 0) {
     44        // initiate URL with new format (JSON Obj)
     45        initTansaServerUrls(tansaExtSettings)
     46    }
     47
     48    tansaExtSettings.serverURLs.forEach(function (serverURLObj) {
     49        var serverURL = serverURLObj.value
     50        if(serverURL.endsWith(":443") || serverURL.endsWith(":80")){
     51            serverURL = removeDefaultPortNumbers(serverURL);
     52            serverURLObj.label = serverURL
     53            serverURLObj.value = serverURL
     54        }
     55    });
     56
    3557    var userGuid = window.tansa.getUserGuid();
    3658    if(!userGuid){
     
    4365    tansa.settings.userGuid = userGuid;
    4466
    45     if(window.localStorageData.activeServerURL){
    46         tansa.settings.baseUrl = window.localStorageData.activeServerURL + '/' + TANSA_CLIENT_WEB_APP_NAME + '/';
    47     }
    48 
    49     if(window.localStorageData.userId){
    50         tansa.settings.userId = window.localStorageData.userId;
     67    if(tansaExtSettings.activeServerURL){
     68        tansa.settings.baseUrl = createTansaServerURL(tansaExtSettings.activeServerURL)
     69    }
     70
     71    if(tansaExtSettings.userId){
     72        tansa.settings.userId = tansaExtSettings.userId;
    5173    }
    5274    else {
    53         window.localStorageData.userId = tansaExtensionInfo.wpUserId;
     75        tansaExtSettings.userId = tansaExtensionInfo.wpUserId;
    5476        tansa.settings.userId = tansaExtensionInfo.wpUserId;
    55         localStorageDataChanged = true;
    56     }
    57 
    58     var licenseKey = window.localStorageData.licenseKey;
    59     if(tansaExtensionInfo.licenseKey && licenseKey == undefined ){
     77        isExtSettingsChanged = true;
     78    }
     79
     80    var licenseKey = tansaExtSettings.licenseKey;
     81    if(tansaExtensionInfo.licenseKey && licenseKey != tansaExtensionInfo.licenseKey){
    6082        tansa.settings.isLicenseKeyPreConfigured = true;
    61         window.localStorageData.licenseKey = tansaExtensionInfo.licenseKey;
    62         localStorageDataChanged = true;
     83        tansaExtSettings.licenseKey = tansaExtensionInfo.licenseKey;
     84        isExtSettingsChanged = true;
    6385    }
    6486    tansa.settings.licenseKey = licenseKey;
    6587
    66     if(localStorageDataChanged)
    67         tansa.setLocalStorageData(window.localStorageData);
    68 }
    69 
    70 function getTansaBaseUrl(serverUrl) {
    71     return serverUrl + '/' + TANSA_CLIENT_WEB_APP_NAME + '/';
     88    if(isExtSettingsChanged)
     89        tansa.setLocalStorageData(tansaExtSettings);
    7290}
    7391
     
    112130
    113131    tansa.preConfiguredClientUrls = tansaExtensionInfo.tansaClientURLs;
    114     if(!tansa.settings.baseUrl){ //if url is not defined in local storage
    115         //check url from TS4 ini
    116         checkAndSetBaseUrlFromPreConfiguredURLs();
    117         if(!tansa.settings.baseUrl) //if url is not defined in local storage or TS4 ini
    118             tansa.settings.baseUrl = getTansaBaseUrl(TANSA_CLIENT_DEFAULT_URL);
    119     }
     132    //check url from TS4 ini
     133    checkAndSetBaseUrlFromPreConfiguredURLs();
    120134
    121135    if(!tansa.settings.platformName || !tansa.settings.platformVersion){
     136        window.$ = window.$ || window.jQuery;
    122137        var pgwBrowser = window.$.pgwBrowser();     
    123138        tansa.settings.platformName = pgwBrowser.os.name;
     
    130145    if(data.activeServerURL != oldData.activeServerURL || data.userId != oldData.userId || data.licenseKey != oldData.licenseKey){
    131146        tansa.setLocalStorageData(data);
    132         tansa.settings.baseUrl = getTansaBaseUrl(data.activeServerURL);
     147        tansaExtSettings = data;
     148        tansa.settings.baseUrl = createTansaServerURL(data.activeServerURL);
    133149        tansa.settings.userId = data.userId;
    134150        checkAndRemoveInvalidTansaJsAndCss();
     
    146162
    147163function checkAndSetBaseUrlFromPreConfiguredURLs(){
    148     window.localStorageData = tansa.getLocalStorageData();
    149     if(tansa.preConfiguredClientUrls && !window.localStorageData.baseUrl){ // assign first URL as base URL;
     164    if(tansa.preConfiguredClientUrls){ // assign first URL as base URL;
     165        var isExtSettingsChanged = false
    150166        for (var key in tansa.preConfiguredClientUrls) {
    151167            if (tansa.preConfiguredClientUrls.hasOwnProperty(key) && key.toLowerCase().startsWith("url")) {
    152                 var tansaClientURL = tansa.preConfiguredClientUrls[key];
    153                 tansa.settings.baseUrl = getTansaBaseUrl(tansaClientURL); // assign first URL as base URL;
    154                 window.localStorageData.baseUrl = tansa.settings.baseUrl;
    155                 break;
    156             }
    157         }
     168                var canUpdateBaseUrl = isCSUMURL(tansaExtSettings.activeServerURL) || isDefaultURL(tansaExtSettings.activeServerURL)
     169                var tansaClientURL = tansa.preConfiguredClientUrls[key];
     170                var serverURLJSONObj = createServerURLJsonObj(tansaClientURL);
     171                addOrUpdateServerURL(serverURLJSONObj, canUpdateBaseUrl);
     172                if(canUpdateBaseUrl)
     173                    tansa.settings.baseUrl = createTansaServerURL(createURL(tansaClientURL)); // assign first URL as base URL;
     174           
     175                isExtSettingsChanged = true;
     176            }
     177        }
     178       
     179        if(isExtSettingsChanged)
     180            tansa.setLocalStorageData(tansaExtSettings);
    158181    }
    159182}
     
    220243window.getParentAppUiLanguageCode = function(){
    221244    return getLangCode(tansaExtensionInfo.parentAppLangCode);
    222 }
     245}
     246
     247function createURL(address) {
     248    if (address) {
     249        address = address.toLowerCase().trim();
     250        while (address.endsWith("/"))
     251            address = address.substring(0, address.length - 1);
     252
     253        if (!address.startsWith("http")) {
     254            address = TANSA_WEB_CLIENT_BASE_URL_PROTOCOL + "://" + address;
     255        }
     256    }
     257    return address;
     258}
     259
     260function createTansaServerURL(serverURL) {
     261    serverURL = createURL(serverURL);
     262    return serverURL + "/" + TANSA_CLIENT_WEB_APP_NAME + "/";
     263}
     264
     265function checkAndAddLanguageCodeParameter(url) {
     266    var queryString = parseURL(url).search || "";
     267    if(queryString.indexOf("langCode=") == -1){
     268        url += (queryString.trim().length > 0 ? "&" : "?")+"langCode=" + tansa.settings.uiLangCode;
     269    }
     270    return url;
     271}
     272
     273function deleteServerURL(serverURLJsonObj) {
     274    var index = tansaExtSettings.serverURLs.indexOf(serverURLJsonObj);
     275    if (index > -1) {
     276        tansaExtSettings.serverURLs.splice(index, 1);
     277    }
     278}
     279
     280function removeDefaultPortNumbers(address) {
     281    if (address.startsWith("https:") && address.endsWith(":443"))
     282        address = address.replace(":443", '');
     283
     284    if (address.startsWith("http:") && address.endsWith(":80"))
     285        address = address.replace(":80", '');
     286
     287    return address;
     288}
     289
     290function parseURL(url) {
     291    var hrefElement = document.createElement("a");
     292    hrefElement.href = url;
     293    return hrefElement;
     294}
     295
     296function addOrUpdateServerURL(serverURLJsonObj, canSetActiveServerURL) {
     297    var serverURLs = tansaExtSettings.serverURLs;
     298    var index = -1;
     299    var result = serverURLs.find(function (currentURLObj, currentIndex) {
     300        var isFound;
     301        if(serverURLJsonObj.address == currentURLObj.address && serverURLJsonObj.protocol == currentURLObj.protocol){
     302            isFound = true;
     303            index = currentIndex;
     304        }
     305        return isFound;
     306    });
     307
     308    if (index > -1) {
     309        tansaExtSettings.serverURLs.splice(index, 1);
     310    }
     311
     312    tansaExtSettings.serverURLs.push(serverURLJsonObj);
     313    if(canSetActiveServerURL)
     314        tansaExtSettings.activeServerURL = serverURLJsonObj.value;
     315}
     316
     317function convertTansaServerXMLToJson(serverAddressXML){
     318    var isCSUMUrlAlreadyExists = false
     319    var serverURLs = [];
     320    if(serverAddressXML && serverAddressXML.length > 0 ){
     321        var serverAddressXMLObj = $.parseXML(serverAddressXML);
     322        var tansaServersXMLElement = $(serverAddressXMLObj.documentElement);
     323        if(tansaServersXMLElement){
     324            var serverAddresses = $('server', tansaServersXMLElement);
     325            $(serverAddresses).each(function(){
     326                var serverElement = $(this);
     327                    var protocol = serverElement.attr("protocol");
     328                    var address = serverElement.attr("address");
     329                    var isActive = serverElement.attr("isActive");
     330                    var serverURL = removeDefaultPortNumbers(createURL(protocol + "://" + address));
     331                    if(isActive == "true"){
     332                        tansaExtSettings.activeServerURL = serverURL;
     333                    }
     334                    if(isCSUMURL(serverURL)){
     335                        isCSUMUrlAlreadyExists = true
     336                    }
     337                    serverURLs.push(createServerURLJsonObj(serverURL));
     338                });
     339        }
     340        // push CSUM URL if not exist in collection
     341        if(!isCSUMUrlAlreadyExists){
     342            serverURLs.push(createCSUMURLJsonObj());
     343        }
     344    }
     345    return serverURLs;
     346}
     347
     348function setTansaUsernameAndLicenseKey(userId, licenseKey) {
     349    tansaExtSettings.userId = userId;
     350    tansaExtSettings.licenseKey = licenseKey;
     351}
     352
     353function getURLProtocol(urlObj){
     354    return urlObj.protocol.replace(":", "");
     355}
     356
     357function createServerURLJsonObj(serverURL, additionalProperties) {
     358    serverURL = createURL(serverURL)
     359    var urlObj = parseURL(serverURL);
     360    var protocol = getURLProtocol(urlObj);
     361    var serverURLJsonObj = { "label": serverURL, "value": serverURL, "address": urlObj.host, "protocol": protocol };
     362    if (additionalProperties) {
     363        serverURLJsonObj = Object.assign(additionalProperties, serverURLJsonObj)
     364    }
     365    return serverURLJsonObj;
     366}
     367
     368function createCSUMURLJsonObj() {
     369    return createServerURLJsonObj(window.parent.DEFAULT_CSUM_SERVER_URL, { isCSUMServerURL: true })
     370}
     371
     372function initTansaServerUrls(tansaExtSettings) {
     373    var defaultServerURLObj = createServerURLJsonObj(window.parent.DEFAULT_ACTIVE_SERVER_NAME)
     374    tansaExtSettings.serverURLs.push(defaultServerURLObj);
     375    tansaExtSettings.serverURLs.push(createCSUMURLJsonObj());
     376    tansaExtSettings.activeServerURL = defaultServerURLObj.value;
     377}
     378
     379function convertTansaServerUrlsToJson(serverURLs) {
     380    var isCSUMUrlAlreadyExists = false
     381    serverURLs = serverURLs.map(serverURL => {
     382        if(isCSUMURL(serverURL)){
     383            isCSUMUrlAlreadyExists = true
     384        }
     385        return serverURL = createServerURLJsonObj(serverURL)
     386    })
     387    // push CSUM URL if not exist in collection
     388    if(!isCSUMUrlAlreadyExists){
     389        serverURLs.push(createCSUMURLJsonObj());
     390    }
     391    return serverURLs;
     392}
     393
     394function isDefaultURL(serverURL) {
     395    return serverURL.toLowerCase().endsWith(window.parent.DEFAULT_ACTIVE_SERVER_NAME)
     396}
     397
     398function isCSUMURL(serverURL) {
     399    return serverURL.toLowerCase().endsWith(window.parent.DEFAULT_CSUM_SERVER_URL)
     400}
     401
     402function getServerURLJsonObj(serverURL) {
     403    serverURL = createURL(serverURL);
     404    var urlObj = parseURL(serverURL);
     405    var result = tansaExtSettings.serverURLs.filter(function (serverURLJsonObj) {
     406        return serverURLJsonObj.address == urlObj.host && serverURLJsonObj.protocol == getURLProtocol(urlObj);
     407    });
     408
     409    return result.length == 1 ? result[0] : null;
     410}
    223411
    224412tansa.initLocalStorageData();
  • tansa/trunk/dist/javascriptapp/js/common.js

    r2054562 r2235723  
    2525$(document).ready(function () {
    2626    $(document).bind('contextmenu', function (evt) {
    27         //checkAndDisableContextMenu(evt);
     27        checkAndDisableContextMenu(evt);
    2828    });
    2929});
     
    4747    var result = $("client " + key, window.uiLangaugeStringXML);
    4848    var langString = result.attr("text") || result.attr("tansa") || "";
    49     return langString.replaceAll("%SHORTSYSTEMNAME%", "");
     49    var shortSystemName = window.shortSystemName || ""
     50    return langString.replaceAll("%SHORTSYSTEMNAME%", shortSystemName);
    5051};
    5152
  • tansa/trunk/dist/javascriptapp/js/connectionDialog.js

    r2054562 r2235723  
    1 
    2 var TANSA_WEB_CLIENT_BASE_URL_PROTOCOL = "https";
    3 var TANSA_WEB_CLIENT_APP_NAME = "tansaclient";
    4 var DEFAULT_ACTIVE_SERVER_NAME = "tansa";
    5 
    6 var SELECTOR_SERVER_ADDRESS_FORM = "#serverAddressForm";
    7 var SELECTOR_USER_NAME_FORM = "#usernameForm";
    8 var SELECTOR_SET_ADDRESS_LABEL = "#setAddressLabel";
    9 var SELECTOR_SET_USERNAME_LABEL = "#setUsernameLabel";
    10 var SELECTOR_CONNECT_BTN = "#connectBtn";
    11 var SELECTOR_RE_CONNECT_BTN = "#reConnectBtn";
    12 var SELECTOR_DELETE_SERVER_URL_BTN = "#deleteServerURLBtn";
    13 var SELECTOR_SET_USER_NAME_BTN = "#setUserNameBtn";
    14 var SELECTOR_TANSA_USER_NAME = "#tansaUserName";
    15 var SELECTOR_TANSA_SERVER_URL = "#tansaServerURL";
    16 var SELECTOR_USER_NAME_CONTAINER = "#usernameContainer";
    17 var SELECTOR_CLOSE_BTN = "#closeBtn";
    18 var SELECTOR_ALERT_DIALOG = "#alertDialog";
    19 var SELECTOR_ALERT_DIALOG_OK_BTN = "#alertDialogOkBtn";
    20 var SELECTOR_CONFIRM_DIALOG = "#confirmDialog";
    21 var SELECTOR_CONFIRM_DIALOG_OK_BTN = "#confirmDialogOkBtn";
    22 var SELECTOR_CONFIRM_DIALOG_CANCEL_BTN = "#confirmDialogCancelBtn";
    23 var SELECTOR_LICENSE_KEY = "#licenseKey";
    24 
    25 var isConnected = true;
    26 var tansaServersXMLElement = null;
    27 var backgroundPage = {
    28     extensionSettings: {
    29         activeServerURL: "",
    30         userId: "",
    31         licenseKey:"",
    32         serverAddressXML: ""
    33     },
    34     serverURLs: [],
    35     platformParentAppAndExtensionInfoQueryString: "",
    36    
    37     deleteServerURL: function(serverURLJsonObj){
    38         var serverElement = $('server[address="' + serverURLJsonObj.address + '"][protocol="' + serverURLJsonObj.protocol + '"]', tansaServersXMLElement);
    39         if(serverElement){
    40             serverElement.remove();
    41             updateServerAddressXML();
    42             var index = backgroundPage.serverURLs.indexOf(serverURLJsonObj);
    43             if(index > -1){
    44                 backgroundPage.serverURLs.splice(index, 1);
    45             }
    46         }
    47     },
    48    
    49     createURL: function(protocol, address){
    50         return protocol + "://" + address;
    51     },
    52    
    53     parseURL: function(url) {
    54         var hrefElement = document.createElement("a");
    55         hrefElement.href = url;
    56         return hrefElement;
    57     },
    58    
    59     addOrUpdateServerURL: function(serverURLJsonObj) {
    60         var address = serverURLJsonObj.address;
    61         var serverElement = $('server[address="' + address + '"][protocol="' + serverURLJsonObj.protocol + '"]', tansaServersXMLElement);
    62         var isNewServerURL = serverElement.length == 0;
    63         if(isNewServerURL)    {
    64             serverElement = $(serverAddressXMLObj.createElement("server"));
    65             serverElement.attr("address", address);
    66         }
    67        
    68         var serverElements = $('server', tansaServersXMLElement);
    69         for(var i = 0; i < serverElements.length; i++){
    70             var serverEle = $(serverElements[i]);
    71             serverEle.attr("isActive", false);
    72         }
    73        
    74         serverElement.attr("protocol", serverURLJsonObj.protocol);
    75         serverElement.attr("isActive", true);
    76        
    77         if(isNewServerURL){
    78             serverElement.appendTo(tansaServersXMLElement);
    79         }
    80        
    81         var result = backgroundPage.serverURLs.filter(function(serverURLObj){
    82             return serverURLObj.address == address;
    83         });
    84        
    85         if(result.length > 0){
    86             var index = backgroundPage.serverURLs.indexOf(result[0]);
    87             if(index > -1){
    88                 backgroundPage.serverURLs.splice(index, 1);
    89             }
    90         }
    91        
    92         backgroundPage.serverURLs.push(serverURLJsonObj);
    93         updateServerAddressXML();
    94         backgroundPage.extensionSettings.activeServerURL = backgroundPage.createURL(serverURLJsonObj.protocol, address);
    95 //        tansa.settings.baseUrl = backgroundPage.extensionSettings.activeServerURL;
    96 //        resetExtSettings();
    97         isTansaMenuLoaded = false;
    98     },
    99    
    100     removeDefaultPortNumbers: function(address){
    101         if (address.startsWith("https:") && address.endsWith(":443"))
    102             address = address.replace(":443", '');
    103        
    104         if (address.startsWith("http:") && address.endsWith(":80"))
    105             address = address.replace(":80", '');
    106        
    107         return address;
    108     },
    109    
    110     createTansaServerURL: function(serverURL){
    111         serverURL = serverURL.toLowerCase();
    112         while(serverURL.endsWith("/"))
    113             serverURL = serverURL.substring(0, serverURL.length - 1);
    114        
    115         if(!serverURL.startsWith("http")){
    116             serverURL = backgroundPage.createURL(TANSA_WEB_CLIENT_BASE_URL_PROTOCOL, serverURL);
    117         }
    118         return  serverURL + "/" + TANSA_WEB_CLIENT_APP_NAME + "/";
    119     },
    120    
    121     setTansaUsernameAndLicenseKey: function(userId, licenseKey) {
    122         backgroundPage.extensionSettings.userId = userId;
    123         backgroundPage.extensionSettings.licenseKey = licenseKey;
    124     }
    125 };
    126 
    127 function initTansaServerAddresses(){
    128     backgroundPage.serverURLs = [];
    129     var serverAddressXML = backgroundPage.extensionSettings.serverAddressXML;
    130     if(!serverAddressXML){
    131         serverAddressXML = "<tansaServers></tansaServers>";
    132     }
    133    
    134     if(serverAddressXML){
    135         serverAddressXMLObj = $.parseXML(serverAddressXML);
    136         tansaServersXMLElement = $(serverAddressXMLObj.documentElement);
    137     }
    138    
    139     if(tansaServersXMLElement){
    140         var defaultPortServerAddressess = $('server[address$=":443"], server[address$=":80"]', tansaServersXMLElement);
    141         for(var i = 0; i < defaultPortServerAddressess.length; i++){
    142             var defaultPortServerAddress = defaultPortServerAddressess[i];
    143             var address = defaultPortServerAddress.getAttribute("address");
    144             address = backgroundPage.removeDefaultPortNumbers(address);
    145             defaultPortServerAddress.setAttribute("address", address);
    146         }
    147        
    148         if(defaultPortServerAddressess && defaultPortServerAddressess.length)
    149             updateServerAddressXML();
    150        
    151         var defaultServerAddress = $('server[address="' + DEFAULT_ACTIVE_SERVER_NAME+ '"]', tansaServersXMLElement);
    152         var serverAddresses = $('server', tansaServersXMLElement);
    153         if (defaultServerAddress.length == 0) {
    154             var isActive = serverAddresses.length == 0 &&  tansa.preConfiguredClientUrls.length <= 0;
    155             defaultServerAddress = $(serverAddressXMLObj.createElement("server"));
    156             defaultServerAddress.attr("address", DEFAULT_ACTIVE_SERVER_NAME);
    157             defaultServerAddress.attr("protocol", TANSA_WEB_CLIENT_BASE_URL_PROTOCOL);
    158             defaultServerAddress.attr("isActive", isActive);
    159             defaultServerAddress.appendTo(tansaServersXMLElement);
    160             serverAddresses = $('server', tansaServersXMLElement);
    161         }
    162         // Append urls from TS4 ini
    163         if(serverAddresses.length == 1){
    164             if(tansa.preConfiguredClientUrls) {
    165                 for (var key in tansa.preConfiguredClientUrls) {
    166                     if (tansa.preConfiguredClientUrls.hasOwnProperty(key) && key.toLowerCase().startsWith("url")) {
    167                         var tansaClientURL = tansa.preConfiguredClientUrls[key];
    168                         var serverURLJsonObj = getServerURLJsonObj(tansaClientURL);
    169                         var isExistingURL = serverURLJsonObj && serverURLJsonObj.address;
    170                         if(! isExistingURL){
    171                             tansaClientURL = createServerURL(tansaClientURL);                       
    172                             var urlObj = backgroundPage.parseURL(tansaClientURL);
    173                             var protocol = urlObj.protocol.replace(":", "");
    174                             defaultServerAddress = $(serverAddressXMLObj.createElement("server"));
    175                             defaultServerAddress.attr("address", urlObj.host);
    176                             defaultServerAddress.attr("protocol", protocol);
    177                             defaultServerAddress.attr("isActive", tansa.settings.baseUrl.indexOf(tansaClientURL) >= 0);
    178                             defaultServerAddress.appendTo(tansaServersXMLElement);
    179                         }
    180                         serverAddresses = $('server', tansaServersXMLElement);
    181                     }
    182                 }
    183             }
    184         }
    185        
    186         $(serverAddresses).each(function(){
    187         var serverElement = $(this);
    188             var protocol = serverElement.attr("protocol");
    189             var address = serverElement.attr("address");
    190             var isActive = serverElement.attr("isActive");
    191             address = backgroundPage.removeDefaultPortNumbers(address);
    192             var serverURL = backgroundPage.createURL(protocol, address);
    193             if(isActive == "true"){
    194                 backgroundPage.extensionSettings.activeServerURL = serverURL;
    195                 //createAndSetTansaServerBaseURL(serverURL);
    196             }
    197            
    198             var serverURLJsonObj = { "label" : serverURL, "value" : serverURL, "address" : address, "protocol" : protocol }
    199             backgroundPage.serverURLs.push(serverURLJsonObj);
    200         });
    201     }
    202     updateServerAddressXML();
    203 }
    204 
    205 function updateServerAddressXML() {
    206     var serializer = new XMLSerializer();
    207     var serverAddressXML = serializer.serializeToString(serverAddressXMLObj);
    208     backgroundPage.extensionSettings.serverAddressXML = serverAddressXML;
    209 }
    210 
    211 function init(jsonDataStr){
    212    
    213     try{
    214         var jsonData = jsonDataStr;
    215         backgroundPage.extensionSettings.userId = jsonData.userId || "";
    216         backgroundPage.extensionSettings.licenseKey = jsonData.licenseKey || "";
    217         userGuid = tansa.getUserGuid() || "";
    218         backgroundPage.extensionSettings.serverAddressXML = jsonData.serverAddressXML || "";
    219         backgroundPage.platformParentAppAndExtensionInfoQueryString = "&parentAppId=" + tansa.settings.parentAppId +
    220             "&parentAppVersion=" +  tansa.settings.parentAppVersion +
    221             "&extensionName=" + tansa.settings.extensionName +
    222             "&extensionVersion=" + tansa.settings.extensionVersion +
    223             "&langCode=" + tansa.settings.langCode +
    224             "&platformName=" + tansa.settings.platformName
    225             "&platformVersion=" + tansa.settings.platformVersion ;
    226        
    227         var shortSystemName = $("general shortSystemName", window.clientTextsXML).attr("tansa");
    228         window.uiLangaugeStringXML = $("language[code='" + tansa.settings.langCode + "']", window.clientTextsXML);
    229 
    230         //set title for connection dialog
    231         var translatedTitle = $.fn.getUILangString("connectionDialog title");           
    232         var titleDiv = window.parent.$("#TB_ajaxWindowTitle")
    233         if(titleDiv && titleDiv.length > 0)
    234             titleDiv[0].innerText = shortSystemName + " " + translatedTitle;
    235 
    236         $.fn.localize();
    237         initTansaServerAddresses();
    238        
    239         $(SELECTOR_TANSA_SERVER_URL).val(backgroundPage.extensionSettings.activeServerURL || "");
    240        
    241         $(SELECTOR_TANSA_USER_NAME).val(backgroundPage.extensionSettings.userId || "");
    242         $(SELECTOR_LICENSE_KEY).val(backgroundPage.extensionSettings.licenseKey || "");
    243         checkAndDisableConnectionBtn();
    244        
    245         $(SELECTOR_TANSA_SERVER_URL).autocomplete({
    246           minLength: 0,
    247           source: backgroundPage.serverURLs || [],
    248           select: function(event, ui) {
    249           setTimeout(function() {
    250              checkAndDisableConnectionBtn();
    251              $(SELECTOR_SERVER_ADDRESS_FORM).valid();
    252              }, 50);
    253           }
    254           }).click(function () {
    255                $(this).autocomplete("search", "");
    256             }).dblclick(function() {
    257                $(this).autocomplete("search", "");
    258             });
    259 
    260         $(SELECTOR_ALERT_DIALOG_OK_BTN).click(function(){
    261           $(SELECTOR_ALERT_DIALOG).dialog('close');
    262         });
    263 
    264        
    265         $(SELECTOR_CONNECT_BTN).click(function(){
    266             if($(SELECTOR_SERVER_ADDRESS_FORM).valid()){
    267               connect(backgroundPage.serverURLs.slice(), true, true);
    268             }
    269         });
    270        
    271         $(SELECTOR_RE_CONNECT_BTN).click(function(){
    272              if($(SELECTOR_SERVER_ADDRESS_FORM).valid()){
    273                 connect(backgroundPage.serverURLs.slice(), true, true);
    274              }
    275          });
    276        
    277         $(SELECTOR_DELETE_SERVER_URL_BTN).click(function(){
    278             var serverURL = getCurrentServerURL();
    279             var serverURLJsonObj = getServerURLJsonObj(serverURL);
    280             backgroundPage.deleteServerURL(serverURLJsonObj);
    281            
    282             $(SELECTOR_TANSA_SERVER_URL).val(backgroundPage.extensionSettings.activeServerURL || "");
    283             $(SELECTOR_TANSA_SERVER_URL).autocomplete( "option", "source", backgroundPage.serverURLs);
    284             checkAndDisableConnectionBtn();
    285         });
    286        
    287         $(SELECTOR_TANSA_SERVER_URL).on("keyup", function() {
    288             checkAndDisableConnectionBtn();
    289         });
    290 
    291         $(SELECTOR_SET_USER_NAME_BTN).click(function(){
    292             if($(SELECTOR_USER_NAME_FORM).valid()){
    293                 var licenseKey = $(SELECTOR_LICENSE_KEY).val().trim();
    294                 var tansaUserName = $(SELECTOR_TANSA_USER_NAME).val().trim();
    295                 var serverURL = getCurrentServerURL();
    296                 var tansaServerUrl = getTansaServerURL(serverURL);
    297                 validateUserName(tansaUserName, tansaServerUrl, licenseKey);
    298             }
    299        });
    300        
    301         $(SELECTOR_CLOSE_BTN).click(function () {
    302             window.parent.$("#TB_closeWindowButton").click()
    303         });
    304 
    305         window.parent.$("#TB_closeWindowButton").click(function() {
    306             window.parent.updateLocalStorageData(backgroundPage.extensionSettings)
    307         });
    308        
    309         serverAddressFormValidator = $(SELECTOR_SERVER_ADDRESS_FORM).validate({
    310             rules: {
    311                 tansaServerURL: {
    312                    required: true
    313                 }
    314             },
    315             messages: {
    316                 tansaServerURL: {
    317                    required: $(SELECTOR_SET_ADDRESS_LABEL).text() + "<br />"
    318                 }
    319             }
    320         });
    321        
    322         var usernameFormValidator = $(SELECTOR_USER_NAME_FORM).validate({
    323             rules: {
    324                 tansaUserName: {
    325                    required: true
    326                 }
    327             },
    328             messages: {
    329                 tansaUserName: {
    330                    required: $(SELECTOR_SET_USERNAME_LABEL).text() + "<br />"
    331                 }
    332             }
    333         });
    334        
    335         if (backgroundPage.extensionSettings.activeServerURL){
    336             connect([], true, false);
    337         }
    338        
    339 
    340     }
    341     catch(err){
    342         console.log(err.message);
    343     }
    344 }
    345 
    346 function showAlert(msg){
    347     $("#alertMsg").html(msg);
    348     var options = {
    349         modal: true
    350     };
    351    
    352     $(SELECTOR_ALERT_DIALOG).dialog(options);
    353 }
    354 
    355 function showConfirmMsg(msg, okCallBack, cancelCallBack){
    356     $("#confirmMsg").html(msg);
    357     var options = {
    358         modal: true
    359     };
    360    
    361     $(SELECTOR_CONFIRM_DIALOG_OK_BTN).unbind( "click" );
    362     $(SELECTOR_CONFIRM_DIALOG_CANCEL_BTN).unbind( "click" );
    363    
    364     $(SELECTOR_CONFIRM_DIALOG_OK_BTN).click(function(){
    365         $(SELECTOR_CONFIRM_DIALOG).dialog("close");
    366         setTimeout(function() {
    367             okCallBack();
    368         }, 200);
    369     });
    370    
    371     $(SELECTOR_CONFIRM_DIALOG_CANCEL_BTN).click(function(){
    372         $(SELECTOR_CONFIRM_DIALOG).dialog("close");
    373         setTimeout(function() {
    374             cancelCallBack();
    375         }, 200);
    376     });
    377    
    378     $(SELECTOR_CONFIRM_DIALOG).dialog(options);
    379 }
    380 
    381 function checkAndDisableConnectionBtn() {
    382     var serverURL = getCurrentServerURL();
    383     var activeServerURL = backgroundPage.extensionSettings.activeServerURL;
    384     if(serverURL == "" || (isConnected && activeServerURL == serverURL))
    385         $(SELECTOR_CONNECT_BTN).attr("disabled", "disabled");
    386     else
    387         $(SELECTOR_CONNECT_BTN).removeAttr("disabled");
    388    
    389     enableDisableUIControls();
    390 }
    391 
    392 function createServerURL(serverURL) {
    393     serverURL = serverURL.toLowerCase();
    394     while(serverURL.endsWith("/"))
    395         serverURL = serverURL.substring(0, serverURL.length - 1);
    396    
    397     if(!serverURL.startsWith("http"))
    398         serverURL = backgroundPage.createURL(TANSA_WEB_CLIENT_BASE_URL_PROTOCOL, serverURL);
    399    
    400     return serverURL;
    401 }
    402 
    403 function getServerURLJsonObj(serverURL){
    404     serverURL = createServerURL(serverURL);
    405     var urlObj = backgroundPage.parseURL(serverURL);
    406     var result = backgroundPage.serverURLs.filter(function(serverURLJsonObj){
    407       return serverURLJsonObj.address == urlObj.host && serverURLJsonObj.protocol && urlObj.protocol;
    408     });
    409    
    410     return result.length == 1 ? result[0] : null;
    411 }
    412 
    413 function serverConnectionSuccess(canShowMessages) {
    414     var serverURL = getCurrentServerURL();
    415     var serverURLJsonObj = getServerURLJsonObj(serverURL);
    416     var isExistingURL = serverURLJsonObj && serverURLJsonObj.address;
    417     if(isExistingURL) {
    418         serverURL = backgroundPage.createURL(serverURLJsonObj.protocol, serverURLJsonObj.address);
    419     }
    420     else{ // new URL
    421         serverURL = createServerURL(serverURL);
    422     }
    423    
    424     var urlObj = backgroundPage.parseURL(serverURL);
    425     var protocol = urlObj.protocol.replace(":", "");
    426     serverURLJsonObj = { "label" : serverURL, "value" : serverURL , "address" : urlObj.host, "protocol" : protocol};
    427     backgroundPage.addOrUpdateServerURL(serverURLJsonObj);
    428     backgroundPage.extensionSettings.activeServerURL = serverURL;
    429     $(SELECTOR_TANSA_SERVER_URL).val(backgroundPage.extensionSettings.activeServerURL || "");
    430     $(SELECTOR_TANSA_SERVER_URL).autocomplete( "option", "source", backgroundPage.serverURLs);
    431 
    432     checkAndDisableConnectionBtn();
    433     if(canShowMessages){
    434         var message = $.fn.getUILangString("messages connectSuccessful");
    435         showAlert(message);
    436     }
    437 }
    438 
    439 function serverConnectionFaild(serverURLs) {
    440     var message = $.fn.getUILangString("connectFailedDialog couldNotConnect");
    441     message = message + "<br />" + getCurrentServerURL() + "<br />" + $.fn.getUILangString("connectFailedDialog retryMsg");
    442    
    443     var okCallBack = function() {
    444         connect(serverURLs, true, true);
    445     };
    446    
    447     var cancelCallBack = function(){
    448         if(serverURLs.length > 0){
    449             var serverURL = getCurrentServerURL();
    450             var serverURLJsonObj = getServerURLJsonObj(serverURL);
    451             var index = serverURLs.indexOf(serverURLJsonObj);
    452             if (index > -1){
    453                 serverURLs.splice(index, 1);
    454             }
    455            
    456             if(serverURLs.length > 0){
    457                 serverURLJsonObj = serverURLs[0];
    458                 serverURL = backgroundPage.createURL(serverURLJsonObj.protocol, serverURLJsonObj.address);
    459                 var couldNotConnectMsg = $.fn.getUILangString("connectionDialog couldNotConnect").replaceAll("%SERVER%", getCurrentServerURL());
    460                 var okToReconnectMsg = $.fn.getUILangString("connectionDialog okToReconnect").replaceAll("%PREV_SERVER%", serverURL);
    461                 var message = couldNotConnectMsg + "<br />" + okToReconnectMsg;
    462                
    463                 showConfirmMsg(message, function() {
    464                        $(SELECTOR_TANSA_SERVER_URL).val(serverURL);
    465                        connect(serverURLs, true, true);
    466                    },
    467                    function() {  }
    468                 );
    469             }
    470         }
    471     };
    472    
    473     showConfirmMsg(message, okCallBack, cancelCallBack);
    474 }
    475 
    476 function getCurrentServerURL(){
    477     var currentServerURL = $(SELECTOR_TANSA_SERVER_URL).val().trim();
    478     while(currentServerURL.endsWith("/"))
    479         currentServerURL = currentServerURL.substring(0, currentServerURL.length - 1);
    480    
    481     if(!currentServerURL.startsWith("http")){
    482         currentServerURL = backgroundPage.createURL(TANSA_WEB_CLIENT_BASE_URL_PROTOCOL, currentServerURL);
    483     }
    484    
    485     return backgroundPage.removeDefaultPortNumbers(currentServerURL);
    486 }
    487 
    488 function getTansaServerURL(serverURL) {
    489     var serverURLJsonObj = getServerURLJsonObj(serverURL);
    490     if(serverURLJsonObj && serverURLJsonObj.value)
    491         serverURL = backgroundPage.createURL(serverURLJsonObj.protocol, serverURLJsonObj.address);
    492    
    493     return backgroundPage.createTansaServerURL(serverURL);
    494 }
    495 
    496 function connect(serverURLs, async, canShowMessages){
    497     blockUI();
    498     var serverURL = getCurrentServerURL();
    499     tansaServerUrl = getTansaServerURL(serverURL);
    500     $.ajax({
    501        url : tansaServerUrl + "ts4service/isConnected?UUID=" + new Date().getTime(),
    502        dataType : "text",
    503        async : async,
    504        success : function(response) {
    505            $.unblockUI();
    506            if(response == "true"){
    507                isConnected = true;
    508                serverConnectionSuccess(canShowMessages);
    509            }
    510        },
    511        
    512        error : function(jqXHR, textStatus, errorThrown) {
    513            $.unblockUI();
    514            if(canShowMessages)
    515                serverConnectionFaild(serverURLs);
    516            else {
    517                isConnected = false;
    518                $(SELECTOR_CONNECT_BTN).removeAttr("disabled");
    519                enableDisableUIControls();
    520            }
    521        }
    522     });
    523 }
    524 
    525 function enableDisableUIControls() {
    526     var serverURL = getCurrentServerURL();
    527     if($(SELECTOR_CONNECT_BTN).is(":disabled") &&  serverURL != ""){
    528         $(SELECTOR_USER_NAME_CONTAINER).removeAttr("disabled");
    529         $(SELECTOR_RE_CONNECT_BTN).removeAttr("disabled");
    530     }
    531     else{
    532         $(SELECTOR_USER_NAME_CONTAINER).attr("disabled", "disabled");
    533         $(SELECTOR_RE_CONNECT_BTN).attr("disabled", "disabled");
    534     }
    535    
    536    
    537     var serverURLJsonObj = getServerURLJsonObj(serverURL);
    538     var canDeleteServerURL = serverURLJsonObj && backgroundPage.extensionSettings.activeServerURL != serverURL && !serverURLJsonObj.address.endsWith(DEFAULT_ACTIVE_SERVER_NAME);
    539     if(canDeleteServerURL)
    540         $(SELECTOR_DELETE_SERVER_URL_BTN).removeAttr("disabled");
    541     else
    542         $(SELECTOR_DELETE_SERVER_URL_BTN).attr("disabled", "disabled");
    543    
    544 }
    545 
    546 function validateUserName(tansaUserName, tansaServerUrl, licenseKey, callback) {
    547     blockUI();
    548     $.ajax({
    549        url : tansaServerUrl + "ts4service/isUserExist?" +
    550                                "tansaUserId="+ tansaUserName +
    551                                "&userGuid="+ userGuid +
    552                                "&licenseKey="+ licenseKey +
    553                                backgroundPage.platformParentAppAndExtensionInfoQueryString +
    554                                "&UUID=" + new Date().getTime(),
    555        dataType : "text",
    556        success : function(response) {
    557            $.unblockUI();
    558            if(response == "true"){
    559                backgroundPage.setTansaUsernameAndLicenseKey(tansaUserName, licenseKey);
    560                var message = $.fn.getUILangString("connectionDialog userSetOk");
    561                showAlert(message);
    562            }
    563            else{
    564                var message = $.fn.getUILangString("connectionDialog userSetNotFound");
    565                showAlert(message);
    566            }
    567        },
    568        
    569        error : function(jqXHR, textStatus, errorThrown) {
    570            $.unblockUI();
    571            var message = $.fn.getUILangString("connectionDialog userSetNotFound");
    572            showAlert(message);
    573        }
    574     });
    575 }
    576 
    577 $(document).ready(function () {   
    578     window.clientTextsXML = window.getClientTextsXML();
    579     window.tansa = window.parent.tansa;
    580     window.tansaExtensionInfo = window.parent.tansaExtensionInfo;
    581     init(tansa.getLocalStorageData());
    582    // $.unblockUI();
     1var backgroundPage = window.parent;
     2
     3var AJAX_REQUEST_TIME_OUT = 10000;
     4var clientTextsXML = getClientTextsXML();
     5var shortSystemName = $("general shortSystemName", clientTextsXML).attr("tansa");
     6var longSystemName = $("general longSystemName", clientTextsXML).attr("tansa");
     7
     8var uiLangCode = window.parent.getParentAppUiLanguageCode();
     9var uiLangaugeStringXML = $("language[code='"+uiLangCode+"']", clientTextsXML);
     10var tansa = window.parent.tansa;
     11
     12var platformParentAppAndExtensionInfoQueryString = "&parentAppId=" + tansa.settings.parentAppId +
     13"&parentAppVersion=" +  tansa.settings.parentAppVersion +
     14"&extensionName=" + tansa.settings.extensionName +
     15"&extensionVersion=" + tansa.settings.extensionVersion +
     16"&langCode=" + tansa.settings.langCode +
     17"&platformName=" + tansa.settings.platformName
     18"&platformVersion=" + tansa.settings.platformVersion;
     19
     20$(document).ready(function () {
     21
     22    $.fn.localize();
     23   
     24    var isConnected = true;
     25
     26    var SELECTOR_SERVER_ADDRESS_FORM = "#serverAddressForm";
     27    var SELECTOR_USER_NAME_FORM = "#usernameForm";
     28    var SELECTOR_SET_ADDRESS_LABEL = "#setAddressLabel";
     29    var SELECTOR_SET_USERNAME_LABEL = "#setUsernameLabel";
     30    var SELECTOR_CONNECT_BTN = "#connectBtn";
     31    var SELECTOR_RE_CONNECT_BTN = "#reConnectBtn";
     32    var SELECTOR_DELETE_SERVER_URL_BTN = "#deleteServerURLBtn";
     33    var SELECTOR_SET_USER_NAME_BTN = "#setUserNameBtn";
     34    var SELECTOR_TANSA_USER_NAME = "#tansaUserName";
     35    var SELECTOR_TANSA_SERVER_URL = "#tansaServerURL";
     36    var SELECTOR_USER_NAME_CONTAINER = "#usernameContainer";
     37    var SELECTOR_CLOSE_BTN = "#closeBtn";
     38
     39    var SELECTOR_GET_LICENSE_KEY_FORM = "#getLicenseKeyForm";
     40    var SELECTOR_LICENSE_DIALOG = '#getLicenseKeyDialog';
     41    var SELECTOR_GET_LICENSE_KEY_BTN_CONTAINER = '#getLicenseKeyBtnContainer';
     42    var SELECTOR_GET_LICENSE_KEY_BTN = '#getLicenseKeyBtn';
     43    var SELECTOR_LICENSE_DIALOG_OK_BTN = '#licenseKeyDialogOkBtn';
     44    var SELECTOR_LICENSE_DIALOG_CANCEL_BTN = '#licenseKeyDialogCancelBtn';
     45    var SELECTOR_LICENSE_DIALOG_EMAIL_ID = '#emailId';
     46
     47    var SELECTOR_ALERT_DIALOG = "#alertDialog";
     48    var SELECTOR_ALERT_DIALOG_OK_BTN = "#alertDialogOkBtn";
     49    var SELECTOR_CONFIRM_DIALOG = "#confirmDialog";
     50    var SELECTOR_CONFIRM_DIALOG_OK_BTN = "#confirmDialogOkBtn";
     51    var SELECTOR_CONFIRM_DIALOG_CANCEL_BTN = "#confirmDialogCancelBtn";
     52    var SELECTOR_LICENSE_KEY = "#licenseKey";
     53
     54    var SELECTOR_CONNECTION_DIALOG_TITLE = "#TB_ajaxWindowTitle";
     55    var SELECTOR_CONNECTION_DIALOG_CLOSE_BTN = "#TB_closeWindowButton";
     56
     57    $(SELECTOR_TANSA_SERVER_URL).val(backgroundPage.tansaExtSettings.activeServerURL || "");
     58    $(SELECTOR_TANSA_USER_NAME).val(backgroundPage.tansaExtSettings.userId || "");
     59    $(SELECTOR_LICENSE_KEY).val(backgroundPage.tansaExtSettings.licenseKey || "");
     60
     61    var isMacOs = ("platform" in navigator) && (navigator.platform.indexOf("Mac", 0) == 0 || navigator.platform.indexOf("iPhone", 0) == 0 || navigator.platform.indexOf("iPad", 0) == 0 || navigator.platform.indexOf("iPod", 0) == 0);
     62    if (isMacOs) {
     63        $(".windows-only").remove();
     64        $(".mac-only").show();
     65        $(".mac-only").css("display", "inline-block");
     66    } else {
     67        $(".mac-only").remove();
     68    }
     69    checkAndDisableConnectionBtn();
     70
     71    // set title of the connection dialog   
     72    var translatedTitle = $.fn.getUILangString("connectionDialog title");           
     73    var titleDiv = window.parent.$(SELECTOR_CONNECTION_DIALOG_TITLE)
     74    if(titleDiv && titleDiv.length > 0)
     75        titleDiv[0].innerText = translatedTitle;
     76
     77    $(SELECTOR_TANSA_SERVER_URL).autocomplete({
     78        minLength: 0,
     79        source: backgroundPage.tansaExtSettings.serverURLs || [],
     80        select: function (event, ui) {
     81            setTimeout(function () {
     82                checkAndDisableConnectionBtn();
     83                $(SELECTOR_SERVER_ADDRESS_FORM).valid();
     84            }, 50);
     85        }
     86    }).click(function () {
     87        $(this).autocomplete("search", "");
     88    }).dblclick(function () {
     89        $(this).autocomplete("search", "");
     90    });
     91
     92    $(SELECTOR_ALERT_DIALOG_OK_BTN).click(function () {
     93        $(SELECTOR_ALERT_DIALOG).dialog('close');
     94    });
     95
     96    $(SELECTOR_LICENSE_DIALOG_CANCEL_BTN).click(function () {
     97        $(SELECTOR_LICENSE_DIALOG).dialog('close');
     98    });
     99
     100    $(SELECTOR_LICENSE_DIALOG_OK_BTN).click(function () {
     101        if ($(SELECTOR_GET_LICENSE_KEY_FORM).valid()) {
     102            var emailId = $(SELECTOR_LICENSE_DIALOG_EMAIL_ID).val().trim();
     103            getLicenseKey(emailId, true);
     104        }
     105    });
     106
     107    $(SELECTOR_GET_LICENSE_KEY_BTN).click(function () {
     108        showDialog(SELECTOR_LICENSE_DIALOG)
     109    });
     110
     111    $(SELECTOR_CLOSE_BTN).click(function () {
     112        window.parent.$(SELECTOR_CONNECTION_DIALOG_CLOSE_BTN).click()
     113    });
     114
     115    window.parent.$(SELECTOR_CONNECTION_DIALOG_CLOSE_BTN).click(function() {
     116        window.parent.updateLocalStorageData(backgroundPage.tansaExtSettings)
     117    });
     118
     119    $(SELECTOR_CONNECT_BTN).click(function () {
     120        if ($(SELECTOR_SERVER_ADDRESS_FORM).valid()) {
     121            connect(backgroundPage.tansaExtSettings.serverURLs.slice(), true, true);
     122        }
     123    });
     124
     125    $(SELECTOR_RE_CONNECT_BTN).click(function () {
     126        if ($(SELECTOR_SERVER_ADDRESS_FORM).valid()) {
     127            connect(backgroundPage.tansaExtSettings.serverURLs.slice(), true, true);
     128        }
     129    });
     130
     131    $(SELECTOR_DELETE_SERVER_URL_BTN).click(function () {
     132        var serverURL = getCurrentServerURL();
     133        // to match with new format
     134        var serverURLJsonObj = backgroundPage.getServerURLJsonObj(serverURL);
     135        backgroundPage.deleteServerURL(serverURLJsonObj);
     136        $(SELECTOR_TANSA_SERVER_URL).val(backgroundPage.tansaExtSettings.activeServerURL || "");
     137        $(SELECTOR_TANSA_SERVER_URL).autocomplete("option", "source", backgroundPage.tansaExtSettings.serverURLs);
     138        checkAndDisableConnectionBtn();
     139    });
     140
     141    $(SELECTOR_TANSA_SERVER_URL).on("keyup", function () {
     142        checkAndDisableConnectionBtn();
     143    });
     144
     145    $(SELECTOR_SET_USER_NAME_BTN).click(function () {
     146        if ($(SELECTOR_USER_NAME_FORM).valid()) {
     147            var licenseKey = $(SELECTOR_LICENSE_KEY).val().trim();
     148            var tansaUserName = $(SELECTOR_TANSA_USER_NAME).val().trim();
     149            var tansaServerUrl = getCurrentServerURL();
     150            tansaServerUrl = backgroundPage.createTansaServerURL(tansaServerUrl);
     151            validateUserName(tansaUserName, tansaServerUrl, licenseKey);
     152        }
     153    });
     154
     155    function checkAndDisableConnectionBtn() {
     156        var serverURL = getCurrentServerURL();
     157        var activeServerURL = backgroundPage.tansaExtSettings.activeServerURL;
     158        if (serverURL == "" || (isConnected && activeServerURL == serverURL && backgroundPage.getServerURLJsonObj(serverURL)))
     159            $(SELECTOR_CONNECT_BTN).attr("disabled", "disabled");
     160        else
     161            $(SELECTOR_CONNECT_BTN).removeAttr("disabled");
     162
     163        enableDisableUIControls();
     164    }
     165
     166    function serverConnectionSuccess(canShowMessages) {
     167        var serverURL = getCurrentServerURL();
     168        addOrUpdateServerURL(serverURL)
     169
     170        $(SELECTOR_TANSA_SERVER_URL).autocomplete("option", "source", backgroundPage.tansaExtSettings.serverURLs);
     171        $(SELECTOR_TANSA_SERVER_URL).val(backgroundPage.tansaExtSettings.activeServerURL || "");
     172        checkAndDisableConnectionBtn();
     173        if (canShowMessages) {
     174            var message = $.fn.getUILangString("messages connectSuccessful");
     175            showAlert(message);
     176        }
     177    }
     178
     179    function addOrUpdateServerURL(serverURL) {
     180        var serverURLJsonObj = backgroundPage.getServerURLJsonObj(serverURL);
     181        var isExistingURL = serverURLJsonObj && serverURLJsonObj.address;
     182        if (!isExistingURL) {
     183            serverURLJsonObj = backgroundPage.createServerURLJsonObj(serverURL)
     184        }
     185        backgroundPage.addOrUpdateServerURL(serverURLJsonObj, true);
     186    }
     187
     188    function showDialog(selector) {
     189        var options = {
     190            modal: true
     191        };
     192        $(selector).dialog(options);
     193    }
     194
     195    function showAlert(msg) {
     196        $("#alertMsg").html(msg);
     197        showDialog(SELECTOR_ALERT_DIALOG);
     198    }
     199
     200    function showConfirmMsg(msg, okCallBack, cancelCallBack) {
     201        $("#confirmMsg").html(msg);
     202        $(SELECTOR_CONFIRM_DIALOG_OK_BTN).unbind("click");
     203        $(SELECTOR_CONFIRM_DIALOG_CANCEL_BTN).unbind("click");
     204
     205        $(SELECTOR_CONFIRM_DIALOG_OK_BTN).click(function () {
     206            $(SELECTOR_CONFIRM_DIALOG).dialog("close");
     207            setTimeout(function () {
     208                okCallBack();
     209            }, 200);
     210        });
     211
     212        $(SELECTOR_CONFIRM_DIALOG_CANCEL_BTN).click(function () {
     213            $(SELECTOR_CONFIRM_DIALOG).dialog("close");
     214            setTimeout(function () {
     215                cancelCallBack();
     216            }, 200);
     217        });
     218
     219        showDialog(SELECTOR_CONFIRM_DIALOG);
     220    }
     221
     222    function serverConnectionFaild(serverURLs) {
     223        var message = $.fn.getUILangString("connectFailedDialog couldNotConnect");
     224        message = message + "<br />" + getCurrentServerURL() + "<br />" + $.fn.getUILangString("connectFailedDialog retryMsg");
     225
     226        var okCallBack = function () {
     227            connect(serverURLs, true, true);
     228        };
     229
     230        var cancelCallBack = function () {
     231            if (serverURLs.length > 0) {
     232                var serverURL = getCurrentServerURL();
     233                var serverURLJsonObj = backgroundPage.getServerURLJsonObj(serverURL);
     234                var index = serverURLs.indexOf(serverURLJsonObj);
     235                if (index > -1) {
     236                    serverURLs.splice(index, 1);
     237                }
     238
     239                if (serverURLs.length > 0) {
     240                    serverURLJsonObj = serverURLs[serverURLs.length - 1];
     241                    serverURL = serverURLJsonObj.value;
     242                    var couldNotConnectMsg = $.fn.getUILangString("connectionDialog couldNotConnect").replaceAll("%SERVER%", getCurrentServerURL());
     243                    var okToReconnectMsg = $.fn.getUILangString("connectionDialog okToReconnect").replaceAll("%PREV_SERVER%", serverURL);
     244                    var message = couldNotConnectMsg + "<br />" + okToReconnectMsg;
     245
     246                    showConfirmMsg(message,
     247                        function () {
     248                            $(SELECTOR_TANSA_SERVER_URL).val(serverURL);
     249                            connect(serverURLs, true, true);
     250                        },
     251                        function () { });
     252                }
     253            }
     254        };
     255
     256        showConfirmMsg(message, okCallBack, cancelCallBack);
     257    }
     258
     259    function getCurrentServerURL() {
     260        var currentServerURL = $(SELECTOR_TANSA_SERVER_URL).val().trim();
     261        // handles adding protocol if not present and removes trailing slash
     262        currentServerURL = backgroundPage.createURL(currentServerURL);
     263        return backgroundPage.removeDefaultPortNumbers(currentServerURL);
     264    }
     265
     266    function getLicenseKey(emailId, async) {
     267        blockUI();
     268        var csumServerURL = getCurrentServerURL();
     269        csumServerURL = backgroundPage.createURL(csumServerURL)
     270        $.ajax({
     271            url: csumServerURL + "/rest/licenseKey?UUID=" + new Date().getTime() + "&email=" + emailId,
     272            dataType: "json",
     273            async: async,
     274            success: function (response) {
     275                $.unblockUI();
     276                $(SELECTOR_LICENSE_DIALOG).dialog('close');
     277                if (response && response.serverAddress) {
     278                    var serverURL = backgroundPage.createURL(response.serverAddress);
     279                    serverURL = backgroundPage.removeDefaultPortNumbers(serverURL);
     280                    $(SELECTOR_TANSA_SERVER_URL).val(serverURL);
     281                    // this function is called in order to add server URL
     282                    // and update autocomplete URLs for connection dialog
     283                    serverConnectionSuccess(false);
     284                    var message = $.fn.getUILangString("connectionDialog serverSetAndLicenseKeySend");
     285                    showAlert(message)
     286                }
     287            },
     288
     289            error: function (jqXHR, textStatus, errorThrown) {
     290                $.unblockUI();
     291                var message = $.fn.getUILangString("connectionDialog emailNotRegistered");
     292                getLicenseKeyFormValidator.showErrors({
     293                    emailId: message
     294                })
     295                enableDisableUIControls()
     296            }
     297        });
     298    }
     299
     300    function connect(serverURLs, async, canShowMessages) {
     301        blockUI();
     302        var tansaServerUrl = getCurrentServerURL();
     303        tansaServerUrl = backgroundPage.createTansaServerURL(tansaServerUrl);
     304        $.ajax({
     305            url: tansaServerUrl + "ts4service/isConnected?UUID=" + new Date().getTime(),
     306            dataType: "text",
     307            async: async,
     308            success: function (response) {
     309                $.unblockUI();
     310                if (response == "true") {
     311                    isConnected = true;
     312                    serverConnectionSuccess(canShowMessages);
     313                }
     314            },
     315
     316            error: function (jqXHR, textStatus, errorThrown) {
     317                $.unblockUI();
     318                isConnected = false;
     319                if (canShowMessages)
     320                    serverConnectionFaild(serverURLs);
     321                else {
     322                    $(SELECTOR_CONNECT_BTN).removeAttr("disabled");
     323                    enableDisableUIControls();
     324                }
     325            }
     326        });
     327    }
     328
     329    function enableDisableUIControls() {
     330        var serverURL = getCurrentServerURL();
     331        if ($(SELECTOR_CONNECT_BTN).is(":disabled") && serverURL != "") {
     332            $(SELECTOR_USER_NAME_CONTAINER).removeAttr("disabled");
     333            $(SELECTOR_RE_CONNECT_BTN).removeAttr("disabled");
     334        } else {
     335            $(SELECTOR_USER_NAME_CONTAINER).attr("disabled", "disabled");
     336            $(SELECTOR_RE_CONNECT_BTN).attr("disabled", "disabled");
     337        }
     338
     339        var canDeleteServerURL = false;
     340        var activeServerURL = backgroundPage.tansaExtSettings.activeServerURL;
     341        if (activeServerURL != serverURL && !(backgroundPage.isDefaultURL(serverURL) || backgroundPage.isCSUMURL(serverURL)) && backgroundPage.getServerURLJsonObj(serverURL))
     342            canDeleteServerURL = true;
     343
     344        if (canDeleteServerURL)
     345            $(SELECTOR_DELETE_SERVER_URL_BTN).removeAttr("disabled");
     346        else
     347            $(SELECTOR_DELETE_SERVER_URL_BTN).attr("disabled", "disabled");
     348
     349        if (backgroundPage.isCSUMURL(serverURL)) {
     350            $(SELECTOR_GET_LICENSE_KEY_BTN_CONTAINER).css("display", "inline-block");
     351            if (backgroundPage.isCSUMURL(activeServerURL))
     352                $(SELECTOR_GET_LICENSE_KEY_BTN).removeAttr("disabled");
     353            else
     354                $(SELECTOR_GET_LICENSE_KEY_BTN).attr("disabled", "disabled");
     355        } else {
     356            $(SELECTOR_GET_LICENSE_KEY_BTN_CONTAINER).css("display", "none");
     357        }
     358    }
     359
     360    function validateUserName(tansaUserName, tansaServerUrl, licenseKey, callback) {
     361        blockUI();
     362        $.ajax({
     363            url: tansaServerUrl + "ts4service/isUserExist?" +
     364                "tansaUserId=" + tansaUserName +
     365                "&userGuid=" + tansa.settings.userGuid +
     366                "&licenseKey=" + licenseKey +
     367                 platformParentAppAndExtensionInfoQueryString +
     368                "&UUID=" + new Date().getTime(),
     369            dataType: "text",
     370
     371            success: function (response) {
     372                $.unblockUI();
     373                if (response == "true") {
     374                    backgroundPage.setTansaUsernameAndLicenseKey(tansaUserName, licenseKey);
     375                    var message = $.fn.getUILangString("connectionDialog userSetOk");
     376                    showAlert(message);
     377                } else {
     378                    var message = $.fn.getUILangString("connectionDialog userSetNotFound");
     379                    showAlert(message);
     380                }
     381            },
     382
     383            error: function (jqXHR, textStatus, errorThrown) {
     384                $.unblockUI();
     385                var message = $.fn.getUILangString("connectionDialog userSetNotFound");
     386                showAlert(message);
     387            }
     388        });
     389    }
     390
     391    var serverAddressFormValidator = $(SELECTOR_SERVER_ADDRESS_FORM).validate({
     392        rules: {
     393            tansaServerURL: {
     394                required: true
     395            }
     396        },
     397
     398        messages: {
     399            tansaServerURL: {
     400                required: $(SELECTOR_SET_ADDRESS_LABEL).text() + "<br />"
     401            }
     402        }
     403
     404    });
     405
     406    var usernameFormValidator = $(SELECTOR_USER_NAME_FORM).validate({
     407        rules: {
     408            tansaUserName: {
     409                required: true
     410            }
     411        },
     412
     413        messages: {
     414            tansaUserName: {
     415                required: $(SELECTOR_SET_USERNAME_LABEL).text() + "<br />"
     416            }
     417        }
     418    });
     419
     420    var getLicenseKeyFormValidator = $(SELECTOR_GET_LICENSE_KEY_FORM).validate({
     421        rules: {
     422            emailId: {
     423                required: true,
     424                email: true
     425            }
     426        },
     427        messages: {
     428            emailId: {
     429                required: $.fn.getUILangString("loginDialog noEmail"),
     430                email: $.fn.getUILangString("loginDialog invalidEmail")
     431            }
     432        },
     433        errorPlacement: function (error, element) {
     434            $("#getLicenseKeyDialog-error").html(error);
     435        }
     436    })
     437
     438    if (backgroundPage.tansaExtSettings.activeServerURL) {
     439        connect([], false, false);
     440        // if active URL is not connected
     441        // And active URL is default server URL
     442        // then try connecting to CSUM Server.
     443        if (!isConnected && backgroundPage.isDefaultURL(backgroundPage.tansaExtSettings.activeServerURL)) {
     444            var csumURLJSONObj = backgroundPage.createCSUMURLJsonObj()
     445            $(SELECTOR_TANSA_SERVER_URL).val(csumURLJSONObj.value);
     446            connect([], false, false);
     447            if (!isConnected) {
     448                $(SELECTOR_TANSA_SERVER_URL).val(backgroundPage.tansaExtSettings.activeServerURL)
     449            }
     450        }
     451    }
    583452});
  • tansa/trunk/readme.txt

    r2113363 r2235723  
    44Tested up to: 5.2
    55Requires PHP: 5.6.20
    6 Stable tag: 5.0.1.9
     6Stable tag: 5.0.1.10
    77License: GPLv2 or later
    88
     
    3333    * There will be a red Tansa button in the toolbar above the text editing area.
    3434   
    35 1. If you are hosting your own WordPress on Windows Server, you can preconfigure the Tansa server connection for all your users, by creating this file on the server: %programdata%/tansa/ts4.ini, with this content:
    36 
    37     >[License]
    38     >key=178f10d9-e982-4c29-9ebd-39b8ad50a248
    39 
    40     >[WebClient]
    41     >url=https://tansa.company.com
    42 
    43     Where
    44     * "178f10d9-e982-4c29-9ebd-39b8ad50a248" needs to be replaced with the actual license key provided by Tansa Systems.
    45     * "https://tansa.company.com" needs to be replaced with the actual URL to your Tansa server.
    46 
    47 If you have more than one active Tansa server, for example an additional Tansa test server, then you can let your users switch between them by adding multiple URLs, like this
    48     >[WebClient]
    49     >url=https://tansa.company.com
    50     >url2=https://tansatest.company.com
    51 
    52 The URL key name have to start with "url" and be unique. If you do this, the users will be able to change Tansa server connection in the Tansa menu item "Connection".
     352. Once the Tansa plugin is installed and activated, you will see the "Tansa Settings" menu in the main menu section, where you can preconfigure the Tansa "Server URL" and "License Key" for all your users.
     36   For more information on how set the Server URL and License Key, please see the screenshot section.
    5337
    5438== How to use? ==
     
    6044== Screenshots ==
    61451. Install Tansa Extension
    62 2. Gutenberg - Tansa Button
    63 3. Gutenberg - Add Tansa to editor top bar
    64 4. Gutenberg - Tansa Menu
    65 5. TinyMCE - Tansa Button
    66 6. TinyMCE - Tansa Menu
    67 7. Tansa Proofing Window
    68 8. Tansa Connection Window (If user wants to change server, username or license)
     462. Configure Tansa Server URL and License Key
     473. Gutenberg - Tansa Button
     484. Gutenberg - Add Tansa to editor top bar
     495. Gutenberg - Tansa Menu
     506. TinyMCE - Tansa Button
     517. TinyMCE - Tansa Menu
     528. Tansa Proofing Window
     539. Tansa Connection Window (If user wants to change server, username or license)
    6954
    7055== Changelog ==
    7156
     57= 5.0.1.10 =
     58* Added Tansa settings option page
     59* Updated connection dialog
     60
    7261= 5.0.1.9 =
    73 Tansa plugin description updates.
     62* Tansa plugin description updates.
    7463
    7564= 5.0.1.8 =
    76 Added support for WordPress 5.2
     65* Added support for WordPress 5.2
    7766
    7867= 5.0.1.7 =
    79 Fixed issue with running Tansa in WP Debug mode.
     68* Fixed issue with running Tansa in WP Debug mode.
    8069
    8170= 5.0.1.6 =
    82 UI related changes.
    83 Some important bug fixes.
     71* UI related changes.
     72* Some important bug fixes.
    8473
    8574= 5.0.1.5 =
    86 Compatible with older PHP versions.
     75* Compatible with older PHP versions.
    8776
    8877= 5.0.1.4 =
    89 Added support for Gutenberg editor. Compatible with Tansa Client 5.0.89.2084 and higher.
     78* Added support for Gutenberg editor. Compatible with Tansa Client 5.0.89.2084 and higher.
    9079
    9180= 5.0.0.3 =
    92 Connection support added. Compatible with Tansa Client 5.0.66.1821 and higher.
     81* Connection support added. Compatible with Tansa Client 5.0.66.1821 and higher.
    9382
    9483= 5.0.0.2 =
    95 Issue fixed: Headers already sent.
    96 Description of the plugin changed.
     84* Issue fixed: Headers already sent.
     85* Description of the plugin changed.
    9786
    9887= 5.0.0.1 =
    99 Localization support added. Compatible with Tansa Client 5.0.65.1799 and higher.
     88* Localization support added. Compatible with Tansa Client 5.0.65.1799 and higher.
    10089
    10190= 5.0.0.0 =
    102 First release.
     91* First release.
    10392
    10493== Upgrade Notice ==
    10594
     95= 5.0.1.10 =
     96* Added Tansa settings option page
     97* Updated connection dialog
     98
    10699= 5.0.1.9 =
    107 Tansa plugin description updates.
     100* Tansa plugin description updates.
    108101
    109102= 5.0.1.8 =
    110 Added support for WordPress 5.2
     103* Added support for WordPress 5.2
    111104
    112105= 5.0.1.7 =
    113 Fixed issue with running Tansa in WP Debug mode.
     106* Fixed issue with running Tansa in WP Debug mode.
    114107
    115108= 5.0.1.6 =
    116 UI related changes.
    117 Some important bug fixes.
     109* UI related changes.
     110* Some important bug fixes.
    118111
    119112= 5.0.1.5 =
    120 Compatible with older PHP versions.
     113* Compatible with older PHP versions.
    121114
    122115= 5.0.1.4 =
    123 Added support for Gutenberg editor. Compatible with Tansa Client 5.0.89.2084 and higher.
     116* Added support for Gutenberg editor. Compatible with Tansa Client 5.0.89.2084 and higher.
    124117
    125118= 5.0.0.3 =
    126 Connection support added. Compatible with Tansa Client 5.0.66.1821 and higher.
     119* Connection support added. Compatible with Tansa Client 5.0.66.1821 and higher.
    127120
    128121= 5.0.0.2 =
    129 Issue fixed: Headers already sent.
    130 Description of the plugin changed.
     122* Issue fixed: Headers already sent.
     123* Description of the plugin changed.
    131124
    132125= 5.0.0.1 =
    133 Localization support added. Compatible with Tansa Client 5.0.65.1799 and higher.
     126* Localization support added. Compatible with Tansa Client 5.0.65.1799 and higher.
  • tansa/trunk/tansa.php

    r2113363 r2235723  
    33 * Plugin Name: Tansa
    44 * Plugin URI: "https://wordpress.org/plugins/tansa/"
    5  * Version: 5.0.1.9
     5 * Version: 5.0.1.10
    66 * Author: Tansa Systems AS
    77 * Author URI: https://www.tansa.com
     
    99 * License: GPLv2 or later */
    1010
     11$settingsSectionId = 'settings_section';
     12$settingsMenuSlugId = 'settings_page_slug';
     13$serverUrlSettingsFieldId = 'tansa_server_url';
     14$licenseKeySettingsFieldId = 'tansa_license_key';
     15
    1116defined('ABSPATH') || exit;
    1217if ( ! function_exists('wp_get_current_user')) {
     
    1823*/
    1924function register_tansa_extension_info() {
    20     //Reads Tansa INI file content.
     25    global $serverUrlSettingsFieldId, $licenseKeySettingsFieldId;
     26
    2127    $TansaFolderName = 'Tansa';
    22     $licenseKey = '';
    23     $tansaClientURLs = [];
     28    $licenseKey =  get_option($licenseKeySettingsFieldId); //getenv('TANSA_LICENSE_KEY'); //get_option('tansa_server_url');
     29    $tansaServerURL = get_option($serverUrlSettingsFieldId); //getenv('TANSA_SERVER_URL'); // get_option('tansa_license_key');
     30    $tansaClientURLs = array();
     31    if(!empty($tansaServerURL)){
     32        $tansaClientURLs = array('url' => $tansaServerURL);
     33    }
     34
    2435    if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    2536        $tansaIniFilePath = getenv('programdata') . DIRECTORY_SEPARATOR . $TansaFolderName . DIRECTORY_SEPARATOR . 'TS4.ini';
     
    3950        'wpUserId' => $current_user -> data -> user_email,
    4051        'licenseKey' => $licenseKey,
    41         'tansaClientURLs' => $tansaClientURLs, 
     52        'tansaClientURLs' => $tansaClientURLs,
    4253        'pluginPath' => plugins_url('dist', __FILE__));
    4354    wp_localize_script('register_tansa_extension_info', 'tansaExtensionInfo', $variables);
     
    131142}
    132143
     144function tansa_plugin_create_menu() {
     145    //create new top-level menu
     146    add_menu_page('Tansa Plugin Settings', 'Tansa Settings', 'manage_options', __FILE__, 'tansa_plugin_settings_page', plugins_url('dist/img/TS.png', __FILE__) );
     147    //call register settings function
     148    add_action( 'admin_init', 'register_tansa_plugin_settings' );
     149}
     150
    133151if ( is_admin() ) {
     152    add_action('admin_menu', 'tansa_plugin_create_menu');
    134153    // Hook scripts function into block editor hook
    135154    add_action('enqueue_block_assets', 'load_tansa_gutenberg');
     
    137156    add_action('init', 'load_tansa_tinymce');
    138157}
     158
     159function register_tansa_plugin_settings() {
     160    //register our settings
     161    global $settingsSectionId;
     162
     163    add_settings_section( $settingsSectionId, '', false, $GLOBALS['settingsMenuSlugId']);
     164    $fields = array(
     165        array(
     166            'uid' => $GLOBALS['serverUrlSettingsFieldId'],
     167            'label' => 'Server URL',
     168            'section' => $settingsSectionId,
     169            'type' => 'text',
     170            'options' => false,
     171            'placeholder' => 'Tansa Server URL',
     172            'helper' => '',
     173            'supplemental' => 'Default value provided for development only. For production, please set the correct URL. This value is unique to each deployment environment.',
     174            'default' => 'https://d02.tansa.com/'
     175        ),
     176        array(
     177            'uid' => $GLOBALS['licenseKeySettingsFieldId'],
     178            'label' => 'License Key',
     179            'section' => $settingsSectionId,
     180            'type' => 'text',
     181            'options' => false,
     182            'placeholder' => 'License key provided by Tansa.',
     183            'helper' => '',
     184            'supplemental' => 'Please set the correct licenseKey. This value is unique to each deployment environment.',
     185            'default' => ''
     186        )
     187    );
     188
     189    foreach( $fields as $field ){
     190        global $settingsMenuSlugId;
     191        add_settings_field( $field['uid'], $field['label'], 'field_callback', $settingsMenuSlugId, $field['section'], $field );
     192        register_setting( $settingsMenuSlugId, $field['uid'] );
     193    }
     194}
     195
     196function field_callback( $arguments ) {
     197    //printf(json_encode($arguments));
     198    $value = get_option( $arguments['uid'] ); // Get the current value, if there is one
     199    if( !$value ) { // If no value exists
     200        $value = $arguments['default']; // Set to our default
     201    }
     202
     203    // Check which type of field we want
     204    switch( $arguments['type'] ){
     205        case 'text': // If it is a text field
     206            printf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" title="%3$s" value="%4$s" class="regular-text" />', $arguments['uid'], $arguments['type'], $arguments['placeholder'], $value );
     207            break;
     208        case 'textarea': // If it is a textarea
     209            printf( '<textarea name="%1$s" id="%1$s" placeholder="%2$s" rows="5" cols="50">%3$s</textarea>', $arguments['uid'], $arguments['placeholder'], $value );
     210            break;
     211        case 'select': // If it is a select dropdown
     212            if( ! empty ( $arguments['options'] ) && is_array( $arguments['options'] ) ){
     213                $options_markup = ’;
     214                foreach( $arguments['options'] as $key => $label ){
     215                    $options_markup .= sprintf( '<option value="%s" %s>%s</option>', $key, selected( $value, $key, false ), $label );
     216                }
     217                printf( '<select name="%1$s" id="%1$s">%2$s</select>', $arguments['uid'], $options_markup );
     218            }
     219            break;
     220    }
     221
     222    // If there is help text
     223    if( $helper = $arguments['helper'] ){
     224        printf( '<span class="helper"> %s</span>', $helper ); // Show it
     225    }
     226
     227    // If there is supplemental text
     228    if( $supplimental = $arguments['supplemental'] ){
     229        printf( '<p class="description">%s</p>', $supplimental ); // Show it
     230    }
     231}
     232
     233function tansa_plugin_settings_page() {
     234    include 'settings.php';
     235}
Note: See TracChangeset for help on using the changeset viewer.