<form class="rte_form{{ not is_ajax ? ' disableAjax' }}" action="{{ url('/database/routines') }}" method="post"> <input name="{{ is_edit_mode ? 'edit_item' : 'add_item' }}" type="hidden" value="1"> {% if is_edit_mode %} <input name="item_original_name" type="hidden" value="{{ routine.item_original_name }}"> <input name="item_original_type" type="hidden" value="{{ routine.item_original_type }}"> {% endif %} {{ get_hidden_inputs(db) }} <div class="card"> <div class="card-header"> {% trans 'Details' %} {% if not is_edit_mode %} {{ show_mysql_docu('CREATE_PROCEDURE') }} {% endif %} </div> <div class="card-body"> <table class="rte_table table table-borderless table-sm"> <tr> <td>{% trans 'Routine name' %}</td> <td> <input type="text" name="item_name" maxlength="64" value="{{ routine.item_name }}"> </td> </tr> <tr> <td>{% trans 'Type' %}</td> <td> {% if is_ajax %} <select name="item_type"> <option value="PROCEDURE"{{ routine.item_type == 'PROCEDURE' ? ' selected' }}>PROCEDURE</option> <option value="FUNCTION"{{ routine.item_type == 'FUNCTION' ? ' selected' }}>FUNCTION</option> </select> {% else %} <input name="item_type" type="hidden" value="{{ routine.item_type }}"> <div class="fw-bold text-center w-50"> {{ routine['item_type'] }} </div> <input type="submit" class="btn btn-secondary" name="routine_changetype" value="{{ 'Change to %s'|trans|format(routine.item_type_toggle) }}"> {% endif %} </td> </tr> <tr> <td>{% trans 'Parameters' %}</td> <td> <table class="routine_params_table table table-borderless table-sm"> <thead> <tr> <td></td> <th class="routine_direction_cell{{ routine.item_type == 'FUNCTION' ? ' hide' }}">{% trans 'Direction' %}</th> <th>{% trans 'Name' %}</th> <th>{% trans 'Type' %}</th> <th>{% trans 'Length/Values' %}</th> <th colspan="2">{% trans 'Options' %}</th> <th class="routine_param_remove hide"></th> </tr> </thead> <tbody> {{ parameter_rows|raw }} </tbody> </table> </td> </tr> <tr> <td></td> <td> {% if is_ajax %} <button type="button" class="btn btn-primary" id="addRoutineParameterButton">{% trans 'Add parameter' %}</button> {% else %} <input type="submit" class="btn btn-primary" name="routine_addparameter" value="{% trans 'Add parameter' %}"> <input type="submit" class="btn btn-secondary" name="routine_removeparameter" value="{% trans 'Remove last parameter' %}"{{ not routine.item_num_params ? ' disabled' }}> {% endif %} </td> </tr> <tr class="routine_return_row{{ routine.item_type == 'PROCEDURE' ? ' hide' }}"> <td>{% trans 'Return type' %}</td> <td> <select name="item_returntype"> {{ get_supported_datatypes(true, routine.item_returntype) }} </select> </td> </tr> <tr class="routine_return_row{{ routine.item_type == 'PROCEDURE' ? ' hide' }}"> <td>{% trans 'Return length/values' %}</td> <td> <input type="text" name="item_returnlength" value="{{ routine.item_returnlength }}"> </td> <td class="hide no_len">---</td> </tr> <tr class="routine_return_row{{ routine.item_type == 'PROCEDURE' ? ' hide' }}"> <td>{% trans 'Return options' %}</td> <td> <div> <select lang="en" dir="ltr" name="item_returnopts_text"> <option value="">{% trans 'Charset' %}</option> <option value=""></option> {% for charset in charsets %} <option value="{{ charset.getName() }}" title="{{ charset.getDescription() }}"{{ routine.item_returnopts_text == charset.getName() ? ' selected' }}>{{ charset.getName() }}</option> {% endfor %} </select> </div> <div> <select name="item_returnopts_num"> <option value=""></option> {% for numeric_option in numeric_options %} <option value="{{ numeric_option }}"{{ routine.item_returnopts_num == numeric_option ? ' selected' }}>{{ numeric_option }}</option> {% endfor %} </select> </div> <div class="hide no_opts">---</div> </td> </tr> <tr> <td>{% trans 'Definition' %}</td> <td> <textarea name="item_definition" rows="15" cols="40">{{ routine.item_definition }}</textarea> </td> </tr> <tr> <td>{% trans 'Is deterministic' %}</td> <td> <input type="checkbox" name="item_isdeterministic"{{ routine.item_isdeterministic|raw }}> </td> </tr> {% if is_edit_mode %} <tr> <td> {% trans 'Adjust privileges' %} {{ show_docu('faq', 'faq6-39') }} </td> <td> {% if has_privileges %} <input type="checkbox" name="item_adjust_privileges" value="1" checked> {% else %} <input type="checkbox" name="item_adjust_privileges" value="1" title="{% trans 'You do not have sufficient privileges to perform this operation; Please refer to the documentation for more details.' %}" disabled> {% endif %} </td> </tr> {% endif %} <tr> <td>{% trans 'Definer' %}</td> <td> <input type="text" name="item_definer" value="{{ routine.item_definer }}"> </td> </tr> <tr> <td>{% trans 'Security type' %}</td> <td> <select name="item_securitytype"> <option value="DEFINER"{{ routine.item_securitytype_definer|raw }}>DEFINER</option> <option value="INVOKER"{{ routine.item_securitytype_invoker|raw }}>INVOKER</option> </select> </td> </tr> <tr> <td>{% trans 'SQL data access' %}</td> <td> <select name="item_sqldataaccess"> {% for value in sql_data_access %} <option value="{{ value }}"{{ routine.item_sqldataaccess == value ? ' selected' }}>{{ value }}</option> {% endfor %} </select> </td> </tr> <tr> <td>{% trans 'Comment' %}</td> <td> <input type="text" name="item_comment" maxlength="64" value="{{ routine.item_comment }}"> </td> </tr> </table> </div> {% if is_ajax %} <input type="hidden" name="{{ is_edit_mode ? 'editor_process_edit' : 'editor_process_add' }}" value="true"> <input type="hidden" name="ajax_request" value="true"> {% else %} <div class="card-footer"> <input class="btn btn-primary" type="submit" name="{{ is_edit_mode ? 'editor_process_edit' : 'editor_process_add' }}" value="{% trans 'Go' %}"> </div> {% endif %} </div> </form>