squareup.twig (49099B)
1 {{ header }} 2 {{ column_left }} 3 <div id="content"> 4 <div class="page-header"> 5 <div class="container-fluid"> 6 <div class="pull-right"> 7 <button type="submit" form="form-square-checkout" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button> 8 <a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div> 9 <h1>{{ heading_title }}</h1> 10 <ul class="breadcrumb"> 11 {% for breadcrumb in breadcrumbs %} 12 <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li> 13 {% endfor %} 14 </ul> 15 </div> 16 </div> 17 <div class="container-fluid"> 18 {% for alert in alerts %} 19 <div class="alert alert-{{ alert.type }}"><i class="fa fa-{{ alert.icon }}"></i> {{ alert.text }} 20 <button type="button" class="close" data-dismiss="alert">×</button> 21 </div> 22 {% endfor %} 23 24 <div class="panel panel-default"> 25 <div class="panel-heading"> 26 <h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_edit_heading }}</h3> 27 </div> 28 <div class="panel-body"> 29 <form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-square-checkout" class="form-horizontal"> 30 <input type="hidden" name="payment_squareup_card" value="1" /> 31 <ul class="nav nav-tabs"> 32 <li><a href="#tab-setting" data-toggle="tab"><i class="fa fa-gear"></i> {{ tab_setting }}</a></li> 33 <li><a href="#tab-transaction" data-toggle="tab"><i class="fa fa-list"></i> {{ tab_transaction }}</a></li> 34 <li><a href="#tab-cron" data-toggle="tab"><i class="fa fa-clock-o"></i> {{ tab_cron }}</a></li> 35 <li><a href="#tab-recurring" data-toggle="tab"><i class="fa fa-hourglass-half"></i> {{ tab_recurring }}</a></li> 36 </ul> 37 <div class="tab-content"> 38 <div class="tab-pane" id="tab-setting"> 39 <fieldset> 40 {% if payment_squareup_merchant_id %} 41 <legend>{{ text_connection_section }} - {{ text_connected }}</legend> 42 <div class="row"> 43 <div class="col-sm-12"> 44 <span data-toggle="tooltip" title="{{ text_disabled_connect_help_text }}"> 45 <a id="reconnect-button" href="{{ payment_squareup_auth_link }}" class="btn btn-primary btn-lg btn-connect" >{{ button_reconnect}}</a> 46 </span> 47 48 <span data-toggle="tooltip" title="{{ text_disabled_connect_help_text }}"> 49 <a id="refresh-button" href="{{ payment_squareup_refresh_link }}" class="btn btn-primary btn-lg btn-connect" >{{ button_refresh }}</a> 50 </span> 51 52 <p>{{ text_connected_info}}</p> 53 </div> 54 </div> 55 {% else %} 56 <legend>{{ text_connection_section }} - {{ text_not_connected }}</legend> 57 <div class="row"> 58 <div class="col-sm-12"> 59 <span data-toggle="tooltip" title="{{ text_disabled_connect_help_text }}"> 60 <a id="connect-button" href="{{ payment_squareup_auth_link }}" class="btn btn-primary btn-lg btn-connect">{{ button_connect }}</a> 61 </span> 62 <p>{{ text_not_connected_info }}</p> 63 </div> 64 </div> 65 {% endif %} 66 </fieldset> 67 <fieldset> 68 <legend>{{ text_settings_section_heading }}</legend> 69 <div class="form-group"> 70 <label class="col-sm-2 control-label" for="dropdown_payment_squareup_status"><span data-toggle="tooltip" title="{{ text_extension_status_help }}">{{ text_extension_status }}</span></label> 71 <div class="col-sm-10"> 72 <select name="payment_squareup_status" id="dropdown_payment_squareup_status" class="form-control"> 73 <option value="1" {% if payment_squareup_status == 1 %} selected {% endif %}>{{ text_extension_status_enabled }}</option> 74 <option value="0" {% if payment_squareup_status == 0 %} selected {% endif %}>{{ text_extension_status_disabled }}</option> 75 </select> 76 </div> 77 </div> 78 <div class="form-group"> 79 <label class="col-sm-2 control-label"> 80 <span data-toggle="tooltip" title="{{ text_payment_method_name_help }}">{{ text_payment_method_name_label }}</span> 81 </label> 82 <div class="col-sm-10"> 83 {% for language in languages %} 84 <div class="input-group"> 85 <span class="input-group-addon"><img src="{{ language.image }}" alt="{{ language.name }}" /></span> 86 <input type="text" name="payment_squareup_display_name[{{ language.language_id }}]" value="{{ payment_squareup_display_name[language.language_id] ?? text_payment_method_name_placeholder }}" placeholder="{{ text_payment_method_name_placeholder }}" class="form-control"/> 87 </div> 88 {% endfor %} 89 </div> 90 </div> 91 <div class="form-group"> 92 <label class="col-sm-2 control-label" for="input_payment_squareup_redirect_uri_static"> 93 <span data-toggle="tooltip" title="{{ text_redirect_uri_help }}">{{ text_redirect_uri_label }}</span> 94 </label> 95 <div class="col-sm-10"> 96 <input type="text" id="input_payment_squareup_redirect_uri_static" name="payment_squareup_redirect_uri_static" value="{{ payment_squareup_redirect_uri }}" class="form-control" disabled /> 97 </div> 98 </div> 99 <div class="form-group required"> 100 <label class="col-sm-2 control-label" for="input_payment_squareup_client_id"> 101 <span data-toggle="tooltip" title="{{ text_client_id_help }}">{{ text_client_id_label }}</span> 102 </label> 103 <div class="col-sm-10"> 104 <input type="text" name="payment_squareup_client_id" value="{{ payment_squareup_client_id }}" placeholder="{{ text_client_id_placeholder }}" id="input_payment_squareup_client_id" class="form-control"/> 105 {% if error_client_id %} 106 <div class="text-danger">{{ error_client_id }}</div> 107 {% endif %} 108 </div> 109 </div> 110 <div class="form-group required"> 111 <label class="col-sm-2 control-label" for="input_payment_squareup_client_secret"> 112 <span data-toggle="tooltip" title="{{ text_client_secret_help }}">{{ text_client_secret_label }}</span> 113 </label> 114 <div class="col-sm-10"> 115 <input type="text" name="payment_squareup_client_secret" value="{{ payment_squareup_client_secret }}" placeholder="{{ text_client_secret_placeholder }}" id="input_payment_squareup_client_secret" class="form-control"/> 116 {% if error_client_secret %} 117 <div class="text-danger">{{ error_client_secret }}</div> 118 {% endif %} 119 </div> 120 </div> 121 <div class="form-group"> 122 <label class="col-sm-2 control-label" for="dropdown_payment_squareup_delay_capture"><span data-toggle="tooltip" title="{{ text_delay_capture_help }}">{{ text_delay_capture_label }}</span></label> 123 <div class="col-sm-10"> 124 <select name="payment_squareup_delay_capture" id="dropdown_payment_squareup_delay_capture" class="form-control"> 125 <option value="1" {% if payment_squareup_delay_capture == 1 %} selected {% endif %}>{{ text_authorize_label }}</option> 126 <option value="0" {% if payment_squareup_delay_capture == 0 %} selected {% endif %}>{{ text_sale_label }}</option> 127 </select> 128 </div> 129 </div> 130 <div class="form-group"> 131 <label class="col-sm-2 control-label" for="input_payment_squareup_total"> 132 <span data-toggle="tooltip" title="{{ help_total }}">{{ entry_total }}</span> 133 </label> 134 <div class="col-sm-10"> 135 <input type="text" name="payment_squareup_total" value="{{ payment_squareup_total }}" placeholder="{{ entry_total }}" id="payment_squareup_total" class="form-control"/> 136 </div> 137 </div> 138 <div class="form-group"> 139 <label class="col-sm-2 control-label" for="input-geo-zone">{{ entry_geo_zone }}</label> 140 <div class="col-sm-10"> 141 <select name="payment_squareup_geo_zone_id" id="input-geo-zone" class="form-control"> 142 <option value="0">{{ text_all_zones }}</option> 143 {% for geo_zone in geo_zones %} 144 <option value="{{ geo_zone.geo_zone_id }}" {% if geo_zone.geo_zone_id == payment_squareup_geo_zone_id %} selected {% endif %}>{{ geo_zone.name }}</option> 145 {% endfor %} 146 </select> 147 </div> 148 </div> 149 <div class="form-group"> 150 <label class="col-sm-2 control-label" for="input_payment_squareup_sort_order"> 151 {{ entry_sort_order }} 152 </label> 153 <div class="col-sm-10"> 154 <input type="text" name="payment_squareup_sort_order" value="{{ payment_squareup_sort_order }}" placeholder="{{ entry_sort_order }}" id="input_payment_squareup_sort_order" class="form-control"/> 155 </div> 156 </div> 157 <div class="form-group"> 158 <label class="col-sm-2 control-label" for="dropdown_payment_squareup_debug"><span data-toggle="tooltip" title="{{ text_debug_help }}">{{ text_debug_label }}</span></label> 159 <div class="col-sm-10"> 160 <select name="payment_squareup_debug" id="dropdown_payment_squareup_debug" class="form-control"> 161 <option value="1" {% if payment_squareup_debug == 1 %} selected {% endif %}>{{ text_debug_enabled }}</option> 162 <option value="0" {% if payment_squareup_debug == 0 %} selected {% endif %}>{{ text_debug_disabled }}</option> 163 </select> 164 </div> 165 </div> 166 <div class="form-group"> 167 <label class="col-sm-2 control-label" for="dropdown_payment_squareup_enable_sandbox"><span data-toggle="tooltip" title="{{ text_enable_sandbox_help }}">{{ text_enable_sandbox_label }}</span></label> 168 <div class="col-sm-10"> 169 <select name="payment_squareup_enable_sandbox" id="dropdown_payment_squareup_enable_sandbox" class="form-control"> 170 <option value="1" {% if payment_squareup_enable_sandbox == 1 %} selected {% endif %}>{{ text_sandbox_enabled_label }}</option> 171 <option value="0" {% if payment_squareup_enable_sandbox == 0 %} selected {% endif %}>{{ text_sandbox_disabled_label }}</option> 172 </select> 173 </div> 174 </div> 175 </fieldset> 176 <fieldset id="sandbox_settings" {% if not payment_squareup_enable_sandbox %} style="display: none;" {% endif %}> 177 <legend>{{ text_sandbox_section_heading }}</legend> 178 <div class="form-group required"> 179 <label class="col-sm-2 control-label" for="input_payment_squareup_sandbox_client_id"> 180 <span data-toggle="tooltip" title="{{ text_sandbox_client_id_help }}">{{ text_sandbox_client_id_label }}</span> 181 </label> 182 <div class="col-sm-10"> 183 <input type="text" name="payment_squareup_sandbox_client_id" value="{{ payment_squareup_sandbox_client_id }}" placeholder="{{ text_sandbox_client_id_placeholder }}" id="input_payment_squareup_sandbox_client_id" class="form-control" /> 184 {% if error_sandbox_client_id %} 185 <div class="text-danger">{{ error_sandbox_client_id }}</div> 186 {% endif %} 187 </div> 188 </div> 189 <div class="form-group required"> 190 <label class="col-sm-2 control-label" for="input_payment_squareup_sandbox_token"> 191 <span data-toggle="tooltip" title="{{ text_sandbox_access_token_help }}">{{ text_sandbox_access_token_label }}</span> 192 </label> 193 <div class="col-sm-10"> 194 <input type="text" name="payment_squareup_sandbox_token" value="{{ payment_squareup_sandbox_token }}" placeholder="{{ text_sandbox_access_token_placeholder }}" id="input_payment_squareup_sandbox_token" class="form-control"/> 195 {% if error_sandbox_token %} 196 <div class="text-danger">{{ error_sandbox_token }}</div> 197 {% endif %} 198 </div> 199 </div> 200 </fieldset> 201 <fieldset> 202 <legend>{{ text_merchant_info_section_heading }}</legend> 203 <div class="form-group"> 204 <label class="col-sm-2 control-label" for="input_merchant_name"> 205 {{ text_merchant_name_label }} 206 </label> 207 <div class="col-sm-10"> 208 <input type="text" name="merchant_name" value="{{ payment_squareup_merchant_name }}" placeholder="{{ text_merchant_name_placeholder }}" id="input_merchant_name" class="form-control" disabled/> 209 </div> 210 </div> 211 <div class="form-group"> 212 <label class="col-sm-2 control-label" for="access_token_expires_time"> 213 {{ text_access_token_expires_label }} 214 </label> 215 <div class="col-sm-10"> 216 <input type="text" name="access_token_expires" value="{{ access_token_expires_time }}" placeholder="{{ text_access_token_expires_placeholder }}" id="access_token_expires_time" class="form-control" disabled /> 217 </div> 218 </div> 219 <div class="form-group required"> 220 <label class="col-sm-2 control-label" for="dropdown_payment_squareup_sandbox_location_id"><span data-toggle="tooltip" title="{{ text_location_help }}">{{ text_location_label }}</span></label> 221 <div class="col-sm-10"> 222 <select name="payment_squareup_location_id" id="dropdown_payment_squareup_location_id" class="form-control" {% if not payment_squareup_locations %} disabled {% endif %}> 223 {% for location in payment_squareup_locations %} 224 <option value="{{ location.id }}" {% if location.id == payment_squareup_location_id %} selected {% endif %}>{{ location.name }}</option> 225 {% endfor %} 226 </select> 227 <select name="payment_squareup_sandbox_location_id" id="dropdown_payment_squareup_sandbox_location_id" class="form-control" {% if not payment_squareup_sandbox_locations %} disabled {% endif %}> 228 {% for location in payment_squareup_sandbox_locations %} 229 <option value="{{ location.id }}" {% if location.id == payment_squareup_sandbox_location_id %} selected {% endif %}>{{ location.name }}</option> 230 {% endfor %} 231 </select> 232 {% if error_location %} 233 <div class="text-danger">{{ error_location }}</div> 234 {% endif %} 235 </div> 236 </div> 237 </fieldset> 238 <fieldset> 239 <legend>{{ text_transaction_statuses }}</legend> 240 <div class="form-group"> 241 <label class="col-sm-2 control-label" for="dropdown_payment_squareup_status_authorized"><span data-toggle="tooltip" title="{{ payment_squareup_status_comment_authorized }}">{{ entry_status_authorized }}</span></label> 242 <div class="col-sm-10"> 243 <select name="payment_squareup_status_authorized" id="dropdown_payment_squareup_status_authorized" class="form-control"> 244 {% for order_status in order_statuses %} 245 <option value="{{ order_status.order_status_id }}" {% if order_status.order_status_id == payment_squareup_status_authorized %} selected {% endif %}>{{ order_status.name }}</option> 246 {% endfor %} 247 </select> 248 </div> 249 </div> 250 <div class="form-group"> 251 <label class="col-sm-2 control-label" for="dropdown_payment_squareup_status_captured"><span data-toggle="tooltip" title="{{ payment_squareup_status_comment_captured }}">{{ entry_status_captured }}</span></label> 252 <div class="col-sm-10"> 253 <select name="payment_squareup_status_captured" id="dropdown_payment_squareup_status_captured" class="form-control"> 254 {% for order_status in order_statuses %} 255 <option value="{{ order_status.order_status_id }}" {% if order_status.order_status_id == payment_squareup_status_captured %} selected {% endif %}>{{ order_status.name }}</option> 256 {% endfor %} 257 </select> 258 </div> 259 </div> 260 <div class="form-group"> 261 <label class="col-sm-2 control-label" for="dropdown_payment_squareup_status_voided"><span data-toggle="tooltip" title="{{ payment_squareup_status_comment_voided }}">{{ entry_status_voided }}</span></label> 262 <div class="col-sm-10"> 263 <select name="payment_squareup_status_voided" id="dropdown_payment_squareup_status_voided" class="form-control"> 264 {% for order_status in order_statuses %} 265 <option value="{{ order_status.order_status_id }}" {% if order_status.order_status_id == payment_squareup_status_voided %} selected {% endif %}>{{ order_status.name }}</option> 266 {% endfor %} 267 </select> 268 </div> 269 </div> 270 <div class="form-group"> 271 <label class="col-sm-2 control-label" for="dropdown_payment_squareup_status_failed"><span data-toggle="tooltip" title="{{ payment_squareup_status_comment_failed }}">{{ entry_status_failed }}</span></label> 272 <div class="col-sm-10"> 273 <select name="payment_squareup_status_failed" id="dropdown_payment_squareup_status_failed" class="form-control"> 274 {% for order_status in order_statuses %} 275 <option value="{{ order_status.order_status_id }}" {% if order_status.order_status_id == payment_squareup_status_failed %} selected {% endif %}>{{ order_status.name }}</option> 276 {% endfor %} 277 </select> 278 </div> 279 </div> 280 </fieldset> 281 </div> 282 <div class="tab-pane" id="tab-transaction"> 283 <div id="transaction-alert" data-message="{{ text_loading }}"></div> 284 <div class="text-right margin-bottom"> 285 </div> 286 <div class="table-responsive"> 287 <table class="table table-bordered table-hover"> 288 <thead> 289 <tr> 290 <th class="text-left hidden-xs">{{ column_transaction_id }}</th> 291 <th class="text-left">{{ column_customer }}</th> 292 <th class="text-left hidden-xs">{{ column_order_id }}</th> 293 <th class="text-left hidden-xs">{{ column_type }}</th> 294 <th class="text-left hidden-xs">{{ column_amount }}</th> 295 <th class="text-left hidden-xs">{{ column_refunds }}</th> 296 <th class="text-left hidden-xs hidden-sm">{{ column_ip }}</th> 297 <th class="text-left">{{ column_date_created }}</th> 298 <th class="text-right">{{ column_action }}</th> 299 </tr> 300 </thead> 301 <tbody id="transactions"> 302 </tbody> 303 </table> 304 <div id="transactions_pagination"></div> 305 </div> 306 </div> 307 <div class="tab-pane" id="tab-cron"> 308 <fieldset> 309 <legend>{{ text_executables }}</legend> 310 <div class="alert alert-info"><i class="fa fa-info-circle"></i> {{ text_recurring_info }}</div> 311 <div class="form-group"> 312 <label class="col-sm-2 control-label"><span data-toggle="tooltip" data-original-title="{{ help_local_cron }}">{{ text_local_cron }}</span></label> 313 <div class="col-sm-10"> 314 <input disabled type="text" class="form-control" value="{{ payment_squareup_cron_command }}" /> 315 </div> 316 </div> 317 <div class="form-group"> 318 <label class="col-sm-2 control-label"><span data-toggle="tooltip" data-original-title="{{ help_remote_cron }}">{{ text_remote_cron }}</span></label> 319 <div class="col-sm-10"> 320 <div class="input-group"> 321 <input disabled type="text" name="payment_squareup_cron_url" id="input_payment_squareup_cron_url" class="form-control" value="" /> 322 <div data-toggle="tooltip" data-original-title="{{ text_refresh_token }}" class="input-group-addon btn btn-primary" id="refresh-cron-token"> 323 <i class="fa fa-refresh"></i> 324 </div> 325 </div> 326 <input id="input_payment_squareup_cron_token" type="hidden" name="payment_squareup_cron_token" value="{{ payment_squareup_cron_token }}" /> 327 </div> 328 </div> 329 <div class="form-group required"> 330 <label class="col-sm-2 control-label" for="checkbox_payment_squareup_cron_acknowledge">{{ entry_setup_confirmation }}</label> 331 <div class="col-sm-10"> 332 <label class="checkbox-inline"> 333 <input id="checkbox_payment_squareup_cron_acknowledge" type="checkbox" value="1" {% if payment_squareup_cron_acknowledge %} checked {% endif %} name="payment_squareup_cron_acknowledge" /> {{ text_acknowledge_cron }} 334 </label> 335 336 {% if error_cron_acknowledge %} 337 <div class="text-danger">{{ error_cron_acknowledge }}</div> 338 {% endif %} 339 </div> 340 </div> 341 </fieldset> 342 <fieldset> 343 <legend>{{ text_admin_notifications }}</legend> 344 <div class="form-group"> 345 <label class="control-label col-sm-2" for="dropdown_payment_squareup_cron_email_status"><span data-toggle="tooltip" data-original-title="{{ help_cron_email_status }}">{{ text_cron_email_status }}</span></label> 346 <div class="col-sm-10"> 347 <select id="dropdown_payment_squareup_cron_email_status" name="payment_squareup_cron_email_status" class="form-control"> 348 <option value="1" {% if payment_squareup_cron_email_status == '1' %} selected {% endif %}>{{ text_enabled }}</option> 349 <option value="0" {% if payment_squareup_cron_email_status == '0' %} selected {% endif %}>{{ text_disabled }}</option> 350 </select> 351 </div> 352 </div> 353 <div class="form-group required"> 354 <label class="col-sm-2 control-label" for="input_payment_squareup_cron_email"><span data-toggle="tooltip" data-original-title="{{ help_cron_email }}">{{ text_cron_email }}</span></label> 355 <div class="col-sm-10"> 356 <input id="input_payment_squareup_cron_email" name="payment_squareup_cron_email" type="text" class="form-control" value="{{ payment_squareup_cron_email }}"/> 357 {% if error_cron_email %} 358 <div class="text-danger">{{ error_cron_email }}</div> 359 {% endif %} 360 </div> 361 </div> 362 </fieldset> 363 </div> 364 <div class="tab-pane" id="tab-recurring"> 365 <div class="form-group"> 366 <label class="control-label col-sm-2" for="dropdown_payment_squareup_recurring_status"><span data-toggle="tooltip" data-original-title="{{ help_recurring_status }}">{{ text_recurring_status }}</span></label> 367 <div class="col-sm-10"> 368 <select id="dropdown_payment_squareup_recurring_status" name="payment_squareup_recurring_status" class="form-control"> 369 <option value="1" {% if payment_squareup_recurring_status == '1' %} selected {% endif %}>{{ text_enabled }}</option> 370 <option value="0" {% if payment_squareup_recurring_status == '0' %} selected {% endif %}>{{ text_disabled }}</option> 371 </select> 372 </div> 373 </div> 374 <fieldset> 375 <legend>{{ text_customer_notifications }}</legend> 376 <div class="form-group"> 377 <label class="control-label col-sm-2" for="dropdown_payment_squareup_notify_recurring_success"><span data-toggle="tooltip" data-original-title="{{ help_notify_recurring_success }}">{{ text_notify_recurring_success }}</span></label> 378 <div class="col-sm-10"> 379 <select id="dropdown_payment_squareup_notify_recurring_success" name="payment_squareup_notify_recurring_success" class="form-control"> 380 <option value="1" {% if payment_squareup_notify_recurring_success == '1' %} selected {% endif %}>{{ text_enabled }}</option> 381 <option value="0" {% if payment_squareup_notify_recurring_success == '0' %} selected {% endif %}>{{ text_disabled }}</option> 382 </select> 383 </div> 384 </div> 385 <div class="form-group"> 386 <label class="control-label col-sm-2" for="dropdown_payment_squareup_notify_recurring_fail"><span data-toggle="tooltip" data-original-title="{{ help_notify_recurring_fail }}">{{ text_notify_recurring_fail }}</span></label> 387 <div class="col-sm-10"> 388 <select id="dropdown_payment_squareup_notify_recurring_fail" name="payment_squareup_notify_recurring_fail" class="form-control"> 389 <option value="1" {% if payment_squareup_notify_recurring_fail == '1' %} selected {% endif %}>{{ text_enabled }}</option> 390 <option value="0" {% if payment_squareup_notify_recurring_fail == '0' %} selected {% endif %}>{{ text_disabled }}</option> 391 </select> 392 </div> 393 </div> 394 </fieldset> 395 </div> 396 </div> 397 </form> 398 </div> 399 </div> 400 </div> 401 <div class="modal fade" id="squareup-confirm-modal"> 402 <div class="modal-dialog"> 403 <div class="modal-content"> 404 <div class="modal-header"> 405 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> 406 <h4 class="modal-title">{{ text_confirm_action }}</h4> 407 </div> 408 <div class="modal-body"> 409 <h4 id="squareup-confirm-modal-content"></h4> 410 </div> 411 <div class="modal-footer"> 412 <button type="button" class="btn btn-default" data-dismiss="modal">{{ text_close }}</button> 413 <button id="squareup-confirm-ok" type="button" class="btn btn-primary">{{ text_ok }}</button> 414 </div> 415 </div> 416 </div> 417 </div> 418 <div class="modal fade" id="squareup-refund-modal"> 419 <div class="modal-dialog"> 420 <div class="modal-content"> 421 <div class="modal-header"> 422 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> 423 <h4 class="modal-title">{{ text_refund_details }}</h4> 424 </div> 425 <div class="modal-body"> 426 <div class="form-group"> 427 <label class="control-label" id="squareup-refund-modal-content-reason"></label> 428 <textarea class="form-control" id="squareup-refund-reason" required></textarea> 429 </div> 430 <div class="form-group"> 431 <label class="control-label" id="squareup-refund-modal-content-amount"></label> 432 <input class="form-control" type="text" id="squareup-refund-amount" required /> 433 </div> 434 </div> 435 <div class="modal-footer"> 436 <button type="button" class="btn btn-default" data-dismiss="modal">{{ text_close }}</button> 437 <button id="squareup-refund-ok" type="button" class="btn btn-primary">{{ text_ok }}</button> 438 </div> 439 </div> 440 </div> 441 </div> 442 </div> 443 <script type="text/javascript"> 444 $(document).ready(function() { 445 var triggerConnectButtons = function() { 446 if ($('#input_payment_squareup_client_id').val() != '' && $('#input_payment_squareup_client_secret').val() != '') { 447 $('.btn-connect').removeClass('disabled'); 448 } else { 449 $('.btn-connect').addClass('disabled'); 450 } 451 } 452 453 var setCronUrl = function() { 454 $('#input_payment_squareup_cron_url').val( 455 "{{ payment_squareup_cron_url }}".replace('{CRON_TOKEN}', $('#input_payment_squareup_cron_token').val()) 456 ); 457 } 458 459 var randomString = function() { 460 return (Math.random() * 100).toString(16).replace('.', ''); 461 } 462 463 var onConnectClick = function(event) { 464 if ($('#input_payment_squareup_client_id').val() != '{{ payment_squareup_client_id }}' || $('#input_payment_squareup_client_secret').val() != '{{ payment_squareup_client_secret }}') { 465 event.preventDefault(); 466 event.stopPropagation(); 467 468 $('form').attr('action','{{ action_save_auth }}').submit(); 469 } 470 } 471 472 var listTransactions = function(page) { 473 $.ajax({ 474 url : '{{ url_list_transactions }}'.replace('{PAGE}', page ? page : transactionListPage), 475 dataType : 'json', 476 beforeSend : function() { 477 $('#refresh_transactions').button('loading'); 478 $('#transactions_pagination').empty(); 479 $('#transactions').html('<tr><td colspan="9" class="text-center"><i class="fa fa-circle-o-notch fa-spin"></i> {{ text_loading }}</td></tr>'); 480 }, 481 success : function(data) { 482 var html = ''; 483 484 if (data.transactions.length) { 485 for (var i in data.transactions) { 486 var row = data.transactions[i]; 487 488 html += '<tr>'; 489 html += '<td class="text-left hidden-xs">' + row.transaction_id + '</td>'; 490 html += '<td class="text-left hidden-xs">' + row.customer + '</td>'; 491 html += '<td class="text-left"><a target="_blank" href="' + row.url_order + '">' + row.order_id + '</td>'; 492 html += '<td class="text-left hidden-xs">' + row.type + '</td>'; 493 html += '<td class="text-left hidden-xs">' + row.amount + '</td>'; 494 html += '<td class="text-left hidden-xs">' + row.num_refunds + '</td>'; 495 html += '<td class="text-left hidden-xs hidden-sm">' + row.ip + '</td>'; 496 html += '<td class="text-left">' + row.date_created + '</td>'; 497 html += '<td class="text-right">'; 498 499 switch (row.type) { 500 case "AUTHORIZED" : { 501 html += '<a class="btn btn-success" data-url-transaction-capture="' + row.url_capture + '" data-confirm-capture="' + row.confirm_capture + '">{{ text_capture }}</a> '; 502 html += '<a class="btn btn-warning" data-url-transaction-void="' + row.url_void + '" data-confirm-void="' + row.confirm_void + '">{{ text_void }}</a> '; 503 } break; 504 505 case "CAPTURED" : { 506 html += '<a class="btn btn-danger" data-url-transaction-refund="' + row.url_refund + '" data-confirm-refund="' + row.confirm_refund + '" data-insert-amount="' + row.insert_amount + '">{{ text_refund }}</a> '; 507 } break; 508 } 509 510 html += ' <a class="btn btn-info" href="' + row.url_info + '">{{ text_view }}</a>'; 511 html += '</td>'; 512 html += '</tr>'; 513 } 514 } else { 515 html += '<tr>'; 516 html += '<td class="text-center" colspan="9">{{ text_no_transactions }}</td>'; 517 html += '</tr>'; 518 } 519 520 $('#transactions').html(html); 521 522 $('#transactions_pagination').html(data.pagination).find('a[href]').each(function(index,element) { 523 $(this).click(function(e) { 524 e.preventDefault(); 525 526 transactionListPage = isNaN($(this).attr('href')) ? 1 : $(this).attr('href'); 527 528 listTransactions(); 529 }) 530 }); 531 }, 532 complete : function() { 533 $('#refresh_transactions').button('reset'); 534 } 535 }); 536 } 537 538 var transactionLoading = function() { 539 var message = $('#transaction-alert').attr('data-message'); 540 541 $('#transaction-alert').html('<div class="text-center alert alert-info"><i class="fa fa-circle-o-notch fa-spin"></i> ' + message + '</div>'); 542 } 543 544 var transactionError = function(message) { 545 $('#transaction-alert').html('<div class="alert alert-danger"><button type="button" class="close" data-dismiss="alert" aria-label="X"><span aria-hidden="true">×</span></button><i class="fa fa-exclamation-circle"></i> ' + message + '</div>'); 546 } 547 548 var transactionSuccess = function(message) { 549 $('#transaction-alert').html('<div class="alert alert-success"><button type="button" class="close" data-dismiss="alert" aria-label="X"><span aria-hidden="true">×</span></button><i class="fa fa-exclamation-circle"></i> ' + message + '</div>'); 550 } 551 552 var addOrderHistory = function(data, success_callback) { 553 $.ajax({ 554 url: '{{ catalog }}index.php?route=api/order/history&api_token={{ api_token }}&order_id=' + data.order_id, 555 type: 'post', 556 dataType: 'json', 557 data: data, 558 success: function(json) { 559 if (json['error']) { 560 transactionError(json['error']); 561 enableTransactionButtons(); 562 } 563 564 if (json['success']) { 565 success_callback(); 566 } 567 }, 568 error: function(xhr, ajaxOptions, thrownError) { 569 transactionError(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); 570 enableTransactionButtons(); 571 } 572 }); 573 } 574 575 var transactionRequest = function(type, url, data) { 576 $.ajax({ 577 url : url, 578 dataType : 'json', 579 type : type, 580 data : data, 581 beforeSend : transactionLoading, 582 success : function(json) { 583 if (json.error) { 584 transactionError(json.error); 585 enableTransactionButtons(); 586 } 587 588 if (json.success && json.order_history_data) { 589 addOrderHistory(json.order_history_data, function() { 590 transactionSuccess(json.success); 591 listTransactions(); 592 }); 593 } 594 }, 595 error : function(xhr, ajaxSettings, thrownError) { 596 transactionError(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); 597 enableTransactionButtons(); 598 } 599 }); 600 } 601 602 var disableTransactionButtons = function() { 603 $('*[data-url-transaction-capture], *[data-url-transaction-void], *[data-url-transaction-refund]').attr('disabled', true); 604 } 605 606 var enableTransactionButtons = function() { 607 $('*[data-url-transaction-capture], *[data-url-transaction-void], *[data-url-transaction-refund]').attr('disabled', false); 608 } 609 610 var modalConfirm = function(url, text) { 611 var modal = '#squareup-confirm-modal'; 612 var content = '#squareup-confirm-modal-content'; 613 var button = '#squareup-confirm-ok'; 614 615 $(content).html(text); 616 $(button).unbind().click(function() { 617 disableTransactionButtons(); 618 619 $(modal).modal('hide'); 620 621 transactionRequest('GET', url); 622 }); 623 624 $(modal).modal('show'); 625 } 626 627 var refundInputValidate = function(reason_input, amount_input) { 628 var result = true; 629 630 if (!$(reason_input)[0].checkValidity()) { 631 $(reason_input).closest('.form-group').addClass('has-error'); 632 result = false; 633 } else { 634 $(reason_input).closest('.form-group').removeClass('has-error'); 635 } 636 637 if (!$(amount_input)[0].checkValidity()) { 638 $(amount_input).closest('.form-group').addClass('has-error'); 639 result = false; 640 } else { 641 $(amount_input).closest('.form-group').removeClass('has-error'); 642 } 643 644 return result; 645 } 646 647 var modalRefund = function(url, text_reason, text_amount) { 648 var modal = '#squareup-refund-modal'; 649 var content_reason = '#squareup-refund-modal-content-reason'; 650 var content_amount = '#squareup-refund-modal-content-amount'; 651 var button = '#squareup-refund-ok'; 652 var reason_input = '#squareup-refund-reason'; 653 var amount_input = '#squareup-refund-amount'; 654 655 $(content_reason).html(text_reason); 656 $(content_amount).html(text_amount); 657 658 $(reason_input).val(''); 659 $(amount_input).val(''); 660 661 $(button).unbind().click(function() { 662 if (!refundInputValidate(reason_input, amount_input)) { 663 return; 664 } 665 666 disableTransactionButtons(); 667 668 $(modal).modal('hide'); 669 670 transactionRequest('POST', url, { 671 reason : $(reason_input).val(), 672 amount : $(amount_input).val() 673 }); 674 }); 675 676 $(modal).modal('show'); 677 } 678 679 var transactionListPage = 1; 680 681 $('.nav-tabs a[href="#{{ tab }}"]').tab('show'); 682 683 $('#dropdown_payment_squareup_enable_sandbox') 684 .change(function() { 685 if ($(this).val() == '0') { 686 $('#sandbox_settings').slideUp(); 687 $('#dropdown_payment_squareup_location_id').show(); 688 $('#dropdown_payment_squareup_sandbox_location_id').hide(); 689 } else { 690 $('#sandbox_settings').slideDown(); 691 $('#dropdown_payment_squareup_location_id').hide(); 692 $('#dropdown_payment_squareup_sandbox_location_id').show(); 693 } 694 }) 695 .trigger('change'); 696 697 $('#input_payment_squareup_client_id, #input_payment_squareup_client_secret') 698 .change(triggerConnectButtons) 699 .keyup(triggerConnectButtons) 700 .trigger('change'); 701 702 $('#refresh-cron-token').click(function() { 703 $('#input_payment_squareup_cron_token').val(randomString() + randomString()); 704 setCronUrl(); 705 }); 706 707 $('#connect-button').click(onConnectClick); 708 709 $('#reconnect-button').click(onConnectClick); 710 711 $(document).on('click', '*[data-url-transaction-capture]', function() { 712 if ($(this).attr('disabled')) return; 713 714 modalConfirm( 715 $(this).attr('data-url-transaction-capture'), 716 $(this).attr('data-confirm-capture') 717 ); 718 }); 719 720 $(document).on('click', '*[data-url-transaction-void]', function() { 721 if ($(this).attr('disabled')) return; 722 723 modalConfirm( 724 $(this).attr('data-url-transaction-void'), 725 $(this).attr('data-confirm-void') 726 ); 727 }); 728 729 $(document).on('click', '*[data-url-transaction-refund]', function() { 730 if ($(this).attr('disabled')) return; 731 732 modalRefund( 733 $(this).attr('data-url-transaction-refund'), 734 $(this).attr('data-confirm-refund'), 735 $(this).attr('data-insert-amount') 736 ); 737 }); 738 739 setCronUrl(); 740 741 listTransactions(); 742 }); 743 </script> 744 {{ footer }}