templates/CRUD/list__action_deploy.html.twig line 9

Open in your IDE?
  1. {% block field %}
  2. {% if object.isDbSet %}
  3.     <select class="deploy_version_version" data-id="{{ object.id }}" id="deploy_version_version_{{ object.id }}">
  4.         <option value="-" readonly selected>Válassz verziót!</option>
  5.         <optgroup label="Project images">
  6.             {% for deployTag in object.getProject.getDeployTags %}
  7.                 <option title="{{ deployTag.name }}" value="{{ deployTag.name }}">
  8.                     {{ deployTag.name }}
  9.                     {% if deployTag.environment != "" %}
  10.                         (#{{ deployTag.environment.id }}: {{ deployTag.environment.project.name }}/{{ deployTag.environment.type.name }})
  11.                     {% endif %}
  12.                     {% if deployTag.labels is not empty %}
  13.                         [{% for label in deployTag.getLabels %}
  14.                             [color={{ label.GetParamsDecoded()["color"] }}]{{ label.value }}[/color]
  15.                         {% endfor %}]
  16.                     {% endif %}
  17.                     {% if deployTag.note != "" %}
  18.                         ({{ deployTag.note }})
  19.                     {% endif %}
  20.                 </option>
  21.             {% endfor %}
  22.         </optgroup>
  23.         {% if admin.sharedDeployTags is not empty %}
  24.             {% for projectType,deployTags in admin.sharedDeployTags %}
  25.                 {% if object.project.type.value == projectType %}
  26.                     {% for projectTypeName,sharedDeployTag in deployTags %}
  27.                         <optgroup label="{{ projectTypeName }} shared images">
  28.                             {% for deployTag in sharedDeployTag %}
  29.                                 <option title="{{ deployTag.project.botname }}:{{ deployTag.name }}" value="{{ deployTag.project.botname }}:{{ deployTag.name }}">
  30.                                     {{ deployTag.project.botname }}:{{ deployTag.name }}
  31.                                     {% if deployTag.environment != "" %}
  32.                                         (#{{ deployTag.environment.id }}: {{ deployTag.environment.project.name }}/{{ deployTag.environment.type.name }})
  33.                                     {% endif %}
  34.                                     {% if deployTag.labels is not empty %}
  35.                                         [{% for label in deployTag.getLabels %}
  36.                                             [color={{ label.GetParamsDecoded()["color"] }}]{{ label.value }}[/color]
  37.                                         {% endfor %}]
  38.                                     {% endif %}
  39.                                     {% if deployTag.note != "" %}
  40.                                         ({{ deployTag.note }})
  41.                                     {% endif %}
  42.                                 </option>
  43.                             {% endfor %}
  44.                         </optgroup>
  45.                     {% endfor %}
  46.                 {% endif %}
  47.             {% endfor %}
  48.         {% endif %}
  49.     </select>
  50.     {% if object.project.type.value != "phoenix" %}
  51.         <a class="btn btn-sm btn-default bg-success" id="deploy_version_button_{{ object.id }}" data-url="{{ admin.generateObjectUrl('deploy', object, {"version":""}) }}" href="#" disabled><i class="fa fa-magic" aria-hidden="true">&nbsp;</i>Deploy</a>
  52.     {% else %}
  53.         <a class="btn btn-sm btn-default bg-success" href="https://jenkins.talkabot.net" target="_blank"><i class="fa fa-magic" aria-hidden="true">&nbsp;</i>Deploy</a>
  54.         <a class="btn btn-sm btn-default bg-success" href="#" onclick="copyToClipboard(document.getElementById('deploy_version_version_{{ object.id }}').value)"><i class="fa fa-copy" aria-hidden="true">&nbsp;</i> Copy Tag</a>
  55.     {% endif %}
  56.     <a class="btn btn-sm btn-default bg-danger" href="{{ admin.generateObjectUrl('stop', object) }}"><i class="fa fa-stop" aria-hidden="true">&nbsp;</i>Stop</a>
  57.     <a class="btn btn-sm btn-default bg-info" href="{{ admin.generateObjectUrl('idp_generate', object) }}" title="If you would like to make an existing project to use IDP, use this button."><i class="fa fa-sign-in" aria-hidden="true">&nbsp;</i>IDPfy</a>
  58.     <a class="btn btn-sm btn-default bg-info" href="{{ admin.generateObjectUrl('create_resourceproxy_user', object) }}" title="Create a new resourceproxy user" data-toggle="modal"><i class="fa fa-user-plus" aria-hidden="true">&nbsp;</i>Create Resourceproxy User</a>
  59.     {% if object.project.type.value == "cheq" %}
  60.     <a class="btn btn-sm btn-default bg-info" href="#" title="Register Viber Auth token (DB update and webhoor registration)!" data-toggle="modal" data-target="#viberTokenModal_{{ object.id }}"><i class="fa fa-user-plus" aria-hidden="true">&nbsp;</i>vibertoken</a>        
  61.     {% endif %}
  62.     {% if object.project.type.value == "cheq" %}
  63.     <a class="btn btn-sm btn-default bg-info" href="#" title="Create this user to permauser and create new inviteToken for it!" data-toggle="modal" data-target="#permaUserCreateModal_{{ object.id }}"><i class="fa fa-user-plus" aria-hidden="true">&nbsp;</i>PermaUser</a>        
  64.     {% endif %}
  65.     {% if object.type.name == "prod" %}
  66.         <a class="btn btn-sm btn-default" href="{{ admin.generateObjectUrl('debug', object) }}" title="Give deploy access to Developers for 1 hour"><i class="fa fa-bug" aria-hidden="true">&nbsp;</i>Debug</a>
  67.     {% endif %}
  68.     
  69.     <!-- Modal -->
  70.     <div class="modal fade" id="botidpUserCreateModal_{{ object.id }}" tabindex="-1" role="dialog" aria-labelledby="botidpUserCreateModalLabel_{{ object.id }}" aria-hidden="true">
  71.         <div class="modal-dialog" role="document">
  72.             <div class="modal-content">
  73.                 <div class="modal-header">
  74.                     <h5 class="modal-title" id="botidpUserCreateModalLabel_{{ object.id }}">Create new user in {{ object.getProject }} / {{ object.getType.getName }}</h5>
  75.                     <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  76.                         <span aria-hidden="true">&times;</span>
  77.                     </button>
  78.                 </div>
  79.                 <div class="modal-body">
  80.                     <form>
  81.                         <div class="form-group">
  82.                             <label for="botidpUserCreateEmail_{{ object.id }}">Email address</label>
  83.                             <input type="email" name='botidpUserCreateEmail_{{ object.id }}' class="form-control" id="botidpUserCreateEmail_{{ object.id }}" aria-describedby="botidpUserCreateEmailHelp" placeholder="Enter email" style="border: solid 2px red;">
  84.                             <small id="botidpUserCreateEmailHelp" class="form-text text-muted">The password will be sent to this e-mail address. You can add max 10 e-mail-addresses, separated by comma.</small>
  85.                         </div>
  86.                         <div class="form-group">
  87.                             <label for="botidpUserCreateLanguage_{{ object.id }}">Language of email</label>
  88.                             <select name='botidpUserCreateLanguage_{{ object.id }}' class="form-control" id="botidpUserCreateLanguage_{{ object.id }}" aria-describedby="botidpUserCreateEmailHelp">
  89.                                 <option value='hu_HU' selected>hu_HU</option>
  90.                                 <option value='en_US'>en_US</option>
  91.                                 <option value='nl_NL'>nl_NL</option>
  92.                                 <option value='pl_PL'>pl_PL</option>
  93.                             </select>
  94.                         </div>
  95.                         <div class="form-group">
  96.                             <label for="botidpUserCreateGroup_{{ object.id }}">Group of user</label>
  97.                             <select name='botidpUserCreateGroup_{{ object.id }}' class="form-control" id="botidpUserCreateGroup_{{ object.id }}" aria-describedby="botidpUserCreateGroupHelp" multiple>
  98.                                 <option value='admin' selected>admin</option>
  99.                                 <option value='superuser'>superuser</option>
  100.                                 <option value='operator'>operator</option>
  101.                                 <option value='hr admin'>hr admin</option>
  102.                                 <option value='trainer'>trainer</option>
  103.                                 <option value='statistics'>statistics</option>
  104.                                 <option value='user'>user</option>
  105.                             </select>
  106.                         </div>
  107.                     </form>
  108.                 </div>
  109.                 <div class="modal-footer">
  110.                     <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  111.                     <a class="btn btn-sm btn-default bg-info" id="button_create_botdip_user_{{ object.id }}" href="#" data-baseurl="{{ admin.generateObjectUrl('create_botdip_user',  object, {'email': "none", 'language': "en_US", 'group': "defaultgroup"}) }}"><i class="fa fa-user-plus" aria-hidden="true">&nbsp;</i>Create User</a>
  112.                 </div>
  113.             </div>
  114.         </div>
  115.     </div>
  116.     
  117.         <!-- Modal Permauser -->
  118.     <div class="modal fade" id="permaUserCreateModal_{{ object.id }}" tabindex="-1" role="dialog" aria-labelledby="permaUserCreateModalLabel_{{ object.id }}" aria-hidden="true">
  119.         <div class="modal-dialog" role="document">
  120.             <div class="modal-content">
  121.                 <div class="modal-header">
  122.                     <h5 class="modal-title" id="permaUserCreateModalLabel_{{ object.id }}">Create PermaUser user in {{ object.getProject }} / {{ object.getType.getName }}</h5>
  123.                     <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  124.                         <span aria-hidden="true">&times;</span>
  125.                     </button>
  126.                 </div>
  127.                 <div class="modal-body">
  128.                     <form>
  129.                         <div class="form-group">
  130.                         
  131.                             <label for="altusername_{{ object.id }}">Username</label>
  132.                             <input type="text" name='altusername_{{ object.id }}' class="form-control" id="altusername_{{ object.id }}" aria-describedby="permaUserCreateHelp" placeholder="Leave empty for your user or enter another user!" style="border: solid 2px red;">
  133.                         
  134.                             <label for="token1_{{ object.id }}">Invite Token 1</label>
  135.                             <input type="text" name='token1_{{ object.id }}' class="form-control" id="token1_{{ object.id }}" aria-describedby="permaUserCreateHelp" placeholder="Enter Invite token 1!" style="border: solid 2px red;">
  136.                             
  137.                             <label for="token2_{{ object.id }}">Invite Token 2</label>
  138.                             <input type="text" name='token2_{{ object.id }}' class="form-control" id="token2_{{ object.id }}" aria-describedby="permaUserCreateHelp" placeholder="Enter Invite token 2!" style="border: solid 2px red;">
  139.                             
  140.                             <small id="permaUserCreateHelp" class="form-text text-muted">Please redeploy to be a permauser.  Invite Tokens are available immediately!</small>
  141.                         </div>
  142.                     </form>
  143.                 </div>
  144.                 <div class="modal-footer">
  145.                     <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  146.                     <a class="btn btn-sm btn-default bg-info" id="button_create_perma_user_{{ object.id }}" href="#" data-baseurl="{{ admin.generateObjectUrl('create_perma_user',  object, {'token1': "none",'token2': "none",'altusername': "none"}) }}"><i class="fa fa-user-plus" aria-hidden="true">&nbsp;</i>Create Permauser</a>
  147.                 </div>
  148.             </div>
  149.         </div>
  150.     </div>
  151.     
  152.             <!-- Modal viber -->
  153.     <div class="modal fade" id="viberTokenModal_{{ object.id }}" tabindex="-1" role="dialog" aria-labelledby="viberTokenModalLabel_{{ object.id }}" aria-hidden="true">
  154.         <div class="modal-dialog" role="document">
  155.             <div class="modal-content">
  156.                 <div class="modal-header">
  157.                     <h5 class="modal-title" id="viberTokenModalLabel_{{ object.id }}">Adding viber auth token to {{ object.getProject }} / {{ object.getType.getName }}</h5>
  158.                     <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  159.                         <span aria-hidden="true">&times;</span>
  160.                     </button>
  161.                 </div>
  162.                 <div class="modal-body">
  163.                     <form>
  164.                         <div class="form-group">
  165.                             <label for="vibertoken_{{ object.id }}">Viber auth token</label>
  166.                             <input type="text" name='vibertoken_{{ object.id }}' class="form-control" id="vibertoken_{{ object.id }}" aria-describedby="viberTokenHelp" placeholder="Enter Viber auth token!" style="border: solid 2px green;">
  167.                             <small id="viberTokenHelp" class="form-text text-muted">Enter viber auth token or leave empty, if you want to remove auth token from this CHEQ project</small>
  168.                         </div>
  169.                     </form>
  170.                 </div>
  171.                 <div class="modal-footer">
  172.                     <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
  173.                     <a class="btn btn-sm btn-default bg-info" id="button_add_viber_token_{{ object.id }}" href="#" data-baseurl="{{ admin.generateObjectUrl('viber_token',  object, {'vibertoken': "none"}) }}"><i class="fa fa-user-plus" aria-hidden="true">&nbsp;</i>add Viber auth token</a>
  174.                 </div>
  175.             </div>
  176.         </div>
  177.     </div>
  178.     
  179.     
  180. {% else %}
  181.     <p class='font-italic'>Missing DB config!</p>
  182.     <select class="init_shared_db_dbserver" data-id="{{ object.id }}" id="init_shared_db_dbserver_{{ object.id }}">
  183.         <option value="-" readonly selected>Válassz Szervert!</option>
  184.         {% for value in admin.sharedDBServers %}
  185.             <option value="{{ value.id }}">
  186.                 {{ value.name }}
  187.             </option>
  188.         {% endfor %}
  189.     </select>
  190.     <a class="btn btn-sm btn-default bg-info" href="{{ admin.generateObjectUrl('init_rds_db', object) }}" title="Init new RDS (AWS SaaS Postgres) Database!"><i class="fa fa-database" aria-hidden="true">&nbsp;</i>Init RDS DB</a>
  191.     <a class="btn btn-sm btn-default bg-info" href="{{ admin.generateObjectUrl('init_adp_db', object) }}" title="Init new ADP (Azure Database for PostgreSQL) Database!"><i class="fa fa-database" aria-hidden="true">&nbsp;</i>Init ADP DB</a>
  192.     <a class="btn btn-sm btn-default bg-success" id="init_shared_db_button_{{ object.id }}" data-url="{{ admin.generateObjectUrl('init_shared_db', object, {"dbserver":""}) }}" href="#" disabled title="Init new PostgreSQL database on shared server"><i class="fa fa-database" aria-hidden="true">&nbsp;</i>Init shared db</a>
  193.     <a class="btn btn-sm btn-default bg-success" id="init_shared_db_admin_button_{{ object.id }}" data-url="{{ admin.generateObjectUrl('init_shared_db', object, {"prefix":"admin", "dbserver":"", }) }}" href="#" disabled title="Init new PostgreSQL database for ADMIN on shared server"><i class="fa fa-database" aria-hidden="true"><i class="fa fa-user" aria-hidden="true">&nbsp;</i></i>Init ADMIN shared db</a>
  194. {% endif %}
  195. {% endblock %}
  196. {% block javascripts %}
  197.     {% if object.isDbSet %}
  198.         <script type="text/javascript">
  199.             function copyToClipboard(text) {
  200.                 var dummy = document.createElement("textarea");
  201.                 document.body.appendChild(dummy);
  202.                 dummy.value = text;
  203.                 dummy.select();
  204.                 document.execCommand("copy");
  205.                 document.body.removeChild(dummy);
  206.             }
  207.             $( document ).ready(function() {
  208.             
  209.                 
  210.                 $('#botidpUserCreateEmail_{{ object.id }}').keypress(function (e) {
  211.                     if (e.which == 13) {
  212.                         return false;    //<---- Add this line
  213.                     }
  214.                 });
  215.                 $("#botidpUserCreateLanguage_{{ object.id }}").on("change", function (e) {
  216.                     checkCreateUser(e);
  217.                 });
  218.                 $("#botidpUserCreateGroup_{{ object.id }}").on("change", function (e) {
  219.                     checkCreateUser(e);
  220.                 });
  221.                 $("#botidpUserCreateEmail_{{ object.id }}").keyup(function (e) {
  222.                     checkCreateUser(e);
  223.                 });
  224.                 
  225.                 $('#token1_{{ object.id }}').keypress(function (e) {
  226.                     if (e.which == 13) {
  227.                         return false;    //<---- Add this line
  228.                     }
  229.                 });
  230.                                 
  231.                 $('#token2_{{ object.id }}').keypress(function (e) {
  232.                     if (e.which == 13) {
  233.                         return false;    //<---- Add this line
  234.                     }
  235.                 });
  236.                 
  237.                 $("#token1_{{ object.id }}").keyup(function (e) {
  238.                     checkCreatePermaUser(e);
  239.                 });
  240.                 $("#token2_{{ object.id }}").keyup(function (e) {
  241.                     checkCreatePermaUser(e);
  242.                 });
  243.                 
  244.                 $('#vibertoken_{{ object.id }}').keypress(function (e) {
  245.                     if (e.which == 13) {
  246.                         return false;    //<---- Add this line
  247.                     }
  248.                 });
  249.                 $("#vibertoken_{{ object.id }}").keyup(function (e) {
  250.                     addViberToken();
  251.                 });
  252.                 
  253.                 function checkCreateUser(e) {
  254.                     if($("#botidpUserCreateEmail_{{ object.id }}").val() == "") {
  255.                         $("#botidpUserCreateEmail_{{ object.id }}").css("border", "solid 2px red");
  256.                         $("#button_create_botdip_user_{{ object.id }}").attr("href", "#");
  257.                     } else {
  258.                         var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  259.                         var validEmails = true;
  260.                         var emailSplit = $("#botidpUserCreateEmail_{{ object.id }}").val().split(",");
  261.                         
  262.                         $.each( emailSplit, function( index, value ) {
  263.                             console.log(value);
  264.                             if(re.test(value.trim())) {
  265.                                 return;
  266.                             } else {
  267.                                 validEmails = false;
  268.                             }
  269.                         });
  270.                         if(!validEmails) {
  271.                             $("#botidpUserCreateEmail_{{ object.id }}").css("border", "solid 2px red");
  272.                             $("#button_create_botdip_user_{{ object.id }}").attr("href", "#");
  273.                         } else {
  274.                                 $("#botidpUserCreateEmail_{{ object.id }}").css("border", "solid 2px green");
  275.                                 baseurl = $("#button_create_botdip_user_{{ object.id }}").attr("data-baseurl");
  276.                                 baseurl = baseurl.replace("none", $("#botidpUserCr7eateEmail_{{ object.id }}").val());
  277.                                 baseurl = baseurl.replace("en_US", $("#botidpUserCreateLanguage_{{ object.id }}").val());
  278.                                 baseurl = baseurl.replace("defaultgroup", $("#botidpUserCreateGroup_{{ object.id }}").val());
  279.                                 $("#button_create_botdip_user_{{ object.id }}").attr("href", baseurl);
  280.                         }
  281.                     }
  282.                 };
  283.                 
  284.                 function checkCreatePermaUser(e) {
  285.             
  286.                     if($("#token1_{{ object.id }}").val() == "" || $("#token2_{{ object.id }}").val() == "" ) {
  287.                         $("#token1_{{ object.id }}").css("border", "solid 2px red");
  288.                         $("#token2_{{ object.id }}").css("border", "solid 2px red");
  289.                         $("#button_create_perma_user_{{ object.id }}").attr("href", "#");
  290.                     } else {
  291.                             
  292.                         if($("#token1_{{ object.id }}").val().length >4 && $("#token2_{{ object.id }}").val().length >4 ) {
  293.                                 $("#token1_{{ object.id }}").css("border", "solid 2px green");
  294.                                 $("#token2_{{ object.id }}").css("border", "solid 2px green");
  295.                                 $("#altusername_{{ object.id }}").css("border", "solid 2px green");
  296.                                 baseurl = $("#button_create_perma_user_{{ object.id }}").attr("data-baseurl");
  297.                                 baseurl = baseurl.replace("none", $("#token1_{{ object.id }}").val());
  298.                                 baseurl = baseurl.replace("none", $("#token2_{{ object.id }}").val());
  299.                                 baseurl = baseurl.replace("none", $("#altusername_{{ object.id }}").val());
  300.                                 $("#button_create_perma_user_{{ object.id }}").attr("href", baseurl);                        
  301.                         } else {
  302.                                 $("#token1_{{ object.id }}").css("border", "solid 2px red");
  303.                                 $("#token2_{{ object.id }}").css("border", "solid 2px red");
  304.                                 $("#altusername_{{ object.id }}").css("border", "solid 2px red");
  305.                                 $("#button_create_perma_user_{{ object.id }}").attr("href", "#");
  306.     
  307.                         }
  308.                       }
  309.                     };
  310.                 
  311.                     function addViberToken(e) {
  312.             
  313.                     $("#vibertoken_{{ object.id }}").css("border", "solid 2px green");    
  314.                     $("#button_add_viber_token_{{ object.id }}").attr("href", "#");
  315.                     console.log("Viberbuli");
  316.                     
  317.                                 baseurl = $("#button_add_viber_token_{{ object.id }}").attr("data-baseurl");
  318.                                 baseurl = baseurl.replace("none", $("#vibertoken_{{ object.id }}").val());
  319.                                 $("#button_add_viber_token_{{ object.id }}").attr("href", baseurl);                        
  320.                       
  321.                     };
  322.                 
  323.         
  324.                 $("#deploy_version_version_{{ object.id }}").change(function() {
  325.                     if($(this).val() != "-") {
  326.                         button = $("#deploy_version_button_"+$(this).attr("data-id"));
  327.                         url = button.attr("data-url");
  328.                         button.attr("href", url+$(this).val());
  329.                         button.removeAttr("disabled");
  330.                     } else {
  331.                         button = $("#deploy_version_button_"+$(this).attr("data-id"));
  332.                         button.attr("href", "#");
  333.                         button.attr("disabled", true);
  334.                     }
  335.                 });
  336.                 if($("#deploy_version_version_{{ object.id }}").val() != "-") {
  337.                     $("#deploy_version_version_{{ object.id }}").trigger("change");
  338.                 }
  339.                 $(".deploy_version_version").select2({
  340.                     escapeMarkup: function(m) {
  341.                         return m.replace(/\[color\=([a-z\-]+)\](.*)\[\/color\]/gi, '<span style=\'color:$1;\'>$2</span>');
  342.                     }
  343.                 });
  344.             });
  345.         </script>
  346.     {% else %}
  347.         <script type="text/javascript">
  348.             $( document ).ready(function() {
  349.                 $("#init_shared_db_dbserver_{{ object.id }}").change(function() {
  350.                     if($(this).val() != "-") {
  351.                         button = $("#init_shared_db_button_"+$(this).attr("data-id"));
  352.                         url = button.attr("data-url");
  353.                         button.attr("href", url+$(this).val());
  354.                         button.removeAttr("disabled");
  355.                         button = $("#init_shared_db_admin_button_"+$(this).attr("data-id"));
  356.                         url = button.attr("data-url");
  357.                         button.attr("href", url+$(this).val());
  358.                         button.removeAttr("disabled");
  359.                     } else {
  360.                         button = $("#init_shared_db_button_"+$(this).attr("data-id"));
  361.                         button.attr("href", "#");
  362.                         button.attr("disabled", true);
  363.                         button = $("#init_shared_db_admin_button_"+$(this).attr("data-id"));
  364.                         button.attr("href", "#");
  365.                         button.attr("disabled", true);
  366.                     }
  367.                 });
  368.                 if($("#init_shared_db_dbserver_{{ object.id }}").val() != "-") {
  369.                     $("#init_shared_db_dbserver_{{ object.id }}").trigger("change");
  370.                 }
  371.             });
  372.         </script>
  373.     {% endif %}
  374. {% endblock %}