mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-10-31 18:07:35 -04:00 
			
		
		
		
	Merge pull request #5015 from beganovich/v5-0203-acceptance-walkthrough
(v5) 2nd March: Acceptance walkthrough
This commit is contained in:
		
						commit
						4289f72085
					
				| @ -125,9 +125,11 @@ class HtmlEngine | |||||||
|             $data['$terms'] = &$data['$entity.terms']; |             $data['$terms'] = &$data['$entity.terms']; | ||||||
|             $data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_invoice').'</a>', 'label' => ctrans('texts.view_invoice')]; |             $data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_invoice').'</a>', 'label' => ctrans('texts.view_invoice')]; | ||||||
|             $data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_invoice')]; |             $data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_invoice')]; | ||||||
|  |             $data['$date'] = ['value' => $this->translateDate($this->entity->date, $this->entity->client->date_format(), $this->entity->client->locale()) ?: ' ', 'label' => ctrans('texts.invoice_date')]; | ||||||
| 
 | 
 | ||||||
|             if($this->entity->project()->exists()) |             if($this->entity->project()->exists()) { | ||||||
|                 $data['$project.name'] = ['value' => $this->entity->project->name, 'label' => ctrans('texts.project_name')]; |                 $data['$project.name'] = ['value' => $this->entity->project->name, 'label' => ctrans('texts.project_name')]; | ||||||
|  |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if ($this->entity_string == 'quote') { |         if ($this->entity_string == 'quote') { | ||||||
| @ -137,6 +139,7 @@ class HtmlEngine | |||||||
|             $data['$terms'] = &$data['$entity.terms']; |             $data['$terms'] = &$data['$entity.terms']; | ||||||
|             $data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_quote').'</a>', 'label' => ctrans('texts.view_quote')]; |             $data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_quote').'</a>', 'label' => ctrans('texts.view_quote')]; | ||||||
|             $data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_quote')]; |             $data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_quote')]; | ||||||
|  |             $data['$date'] = ['value' => $this->translateDate($this->entity->date, $this->entity->client->date_format(), $this->entity->client->locale()) ?: ' ', 'label' => ctrans('texts.quote_date')]; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if ($this->entity_string == 'credit') { |         if ($this->entity_string == 'credit') { | ||||||
| @ -147,6 +150,7 @@ class HtmlEngine | |||||||
|             $data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_credit').'</a>', 'label' => ctrans('texts.view_credit')]; |             $data['$view_link'] = ['value' => '<a class="button" href="'.$this->invitation->getLink().'">'.ctrans('texts.view_credit').'</a>', 'label' => ctrans('texts.view_credit')]; | ||||||
|             $data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_credit')]; |             $data['$view_url'] = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_credit')]; | ||||||
|             // $data['$view_link']          = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_credit')];
 |             // $data['$view_link']          = ['value' => $this->invitation->getLink(), 'label' => ctrans('texts.view_credit')];
 | ||||||
|  |             $data['$date'] = ['value' => $this->translateDate($this->entity->date, $this->entity->client->date_format(), $this->entity->client->locale()) ?: ' ', 'label' => ctrans('texts.credit_date')]; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         $data['$entity_number'] = &$data['$number']; |         $data['$entity_number'] = &$data['$number']; | ||||||
| @ -346,7 +350,7 @@ class HtmlEngine | |||||||
| 
 | 
 | ||||||
|         $data['$font_size'] = ['value' => $this->settings->font_size . 'px', 'label' => '']; |         $data['$font_size'] = ['value' => $this->settings->font_size . 'px', 'label' => '']; | ||||||
| 
 | 
 | ||||||
|         $data['$invoiceninja.whitelabel'] = ['value' => 'https://raw.githubusercontent.com/invoiceninja/invoiceninja/v5-develop/public/images/created-by-invoiceninja-new.png', 'label' => '']; |         $data['$invoiceninja.whitelabel'] = ['value' => 'https://raw.githubusercontent.com/invoiceninja/invoiceninja/v5-develop/public/images/new_logo.png', 'label' => '']; | ||||||
| 
 | 
 | ||||||
|         $data['$primary_color'] = ['value' => $this->settings->primary_color, 'label' => '']; |         $data['$primary_color'] = ['value' => $this->settings->primary_color, 'label' => '']; | ||||||
|         $data['$secondary_color'] = ['value' => $this->settings->secondary_color, 'label' => '']; |         $data['$secondary_color'] = ['value' => $this->settings->secondary_color, 'label' => '']; | ||||||
|  | |||||||
							
								
								
									
										44
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										44
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @ -2857,6 +2857,24 @@ | |||||||
|                 "sha.js": "^2.4.8" |                 "sha.js": "^2.4.8" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|  |         "create-html-element": { | ||||||
|  |             "version": "2.1.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/create-html-element/-/create-html-element-2.1.0.tgz", | ||||||
|  |             "integrity": "sha512-ofbOpJh3GSDsyINuqppupKRUcQHnXSyvwvk0F5DlEtwKwb+thdFoJAtYczy7bIZWdsQjZfADUc38pF4gVd0o+Q==", | ||||||
|  |             "requires": { | ||||||
|  |                 "escape-goat": "^1.3.0", | ||||||
|  |                 "html-tags": "^2.0.0", | ||||||
|  |                 "stringify-attributes": "^1.0.0", | ||||||
|  |                 "type-fest": "^0.3.0" | ||||||
|  |             }, | ||||||
|  |             "dependencies": { | ||||||
|  |                 "html-tags": { | ||||||
|  |                     "version": "2.0.0", | ||||||
|  |                     "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz", | ||||||
|  |                     "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=" | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|         "credit-card-type": { |         "credit-card-type": { | ||||||
|             "version": "8.3.0", |             "version": "8.3.0", | ||||||
|             "resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-8.3.0.tgz", |             "resolved": "https://registry.npmjs.org/credit-card-type/-/credit-card-type-8.3.0.tgz", | ||||||
| @ -3730,6 +3748,11 @@ | |||||||
|             "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", |             "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", | ||||||
|             "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" |             "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" | ||||||
|         }, |         }, | ||||||
|  |         "escape-goat": { | ||||||
|  |             "version": "1.3.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-1.3.0.tgz", | ||||||
|  |             "integrity": "sha512-E2nU1Y39N5UgfLU8qwMlK0vZrZprIwWLeVmDYN8wd/e37hMtGzu2w1DBiREts0XHfgyZEQlj/hYr0H0izF0HDQ==" | ||||||
|  |         }, | ||||||
|         "escape-html": { |         "escape-html": { | ||||||
|             "version": "1.0.3", |             "version": "1.0.3", | ||||||
|             "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", |             "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", | ||||||
| @ -5721,6 +5744,14 @@ | |||||||
|             "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", |             "integrity": "sha1-eZllXoZGwX8In90YfRUNMyTVRRM=", | ||||||
|             "dev": true |             "dev": true | ||||||
|         }, |         }, | ||||||
|  |         "linkify-urls": { | ||||||
|  |             "version": "3.1.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/linkify-urls/-/linkify-urls-3.1.1.tgz", | ||||||
|  |             "integrity": "sha512-sRxMSunCnLFtZ4iVkMqHhZKSJ3MC/nRAvej8Ou3pEEEPBL0iVN91mZvdFREKcGv3VNcakbT4qsfOnnWMEbA59w==", | ||||||
|  |             "requires": { | ||||||
|  |                 "create-html-element": "^2.1.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|         "listr": { |         "listr": { | ||||||
|             "version": "0.14.3", |             "version": "0.14.3", | ||||||
|             "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", |             "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", | ||||||
| @ -8882,6 +8913,14 @@ | |||||||
|                 "safe-buffer": "~5.1.0" |                 "safe-buffer": "~5.1.0" | ||||||
|             } |             } | ||||||
|         }, |         }, | ||||||
|  |         "stringify-attributes": { | ||||||
|  |             "version": "1.0.0", | ||||||
|  |             "resolved": "https://registry.npmjs.org/stringify-attributes/-/stringify-attributes-1.0.0.tgz", | ||||||
|  |             "integrity": "sha1-nosvmpRn57SAk8shJOvBwX5jgsU=", | ||||||
|  |             "requires": { | ||||||
|  |                 "escape-goat": "^1.1.0" | ||||||
|  |             } | ||||||
|  |         }, | ||||||
|         "strip-ansi": { |         "strip-ansi": { | ||||||
|             "version": "3.0.1", |             "version": "3.0.1", | ||||||
|             "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", |             "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", | ||||||
| @ -9283,6 +9322,11 @@ | |||||||
|             "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", |             "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", | ||||||
|             "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" |             "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" | ||||||
|         }, |         }, | ||||||
|  |         "type-fest": { | ||||||
|  |             "version": "0.3.1", | ||||||
|  |             "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", | ||||||
|  |             "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" | ||||||
|  |         }, | ||||||
|         "type-is": { |         "type-is": { | ||||||
|             "version": "1.6.18", |             "version": "1.6.18", | ||||||
|             "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", |             "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", | ||||||
|  | |||||||
| @ -26,6 +26,7 @@ | |||||||
|         "cross-env": "^7.0.3", |         "cross-env": "^7.0.3", | ||||||
|         "jsignature": "^2.1.3", |         "jsignature": "^2.1.3", | ||||||
|         "laravel-mix": "^5.0.9", |         "laravel-mix": "^5.0.9", | ||||||
|  |         "linkify-urls": "^3.1.1", | ||||||
|         "lodash": "^4.17.20", |         "lodash": "^4.17.20", | ||||||
|         "resolve-url-loader": "^3.1.2", |         "resolve-url-loader": "^3.1.2", | ||||||
|         "sass": "^1.32.7", |         "sass": "^1.32.7", | ||||||
|  | |||||||
							
								
								
									
										
											BIN
										
									
								
								public/images/new_logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/images/new_logo.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 9.2 KiB | 
							
								
								
									
										2
									
								
								public/js/clients/linkify-urls.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								public/js/clients/linkify-urls.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | /*! For license information please see linkify-urls.js.LICENSE.txt */ | ||||||
|  | !function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/",r(r.s=16)}({16:function(e,t,r){e.exports=r("cN42")},Ievl:function(e,t,r){"use strict";t.escape=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">"),t.unescape=e=>e.replace(/>/g,">").replace(/</g,"<").replace(/'/g,"'").replace(/"/g,'"').replace(/&/g,"&"),t.escapeTag=function(e){let r=e[0];for(let n=1;n<arguments.length;n++)r=r+t.escape(arguments[n])+e[n];return r},t.unescapeTag=function(e){let r=e[0];for(let n=1;n<arguments.length;n++)r=r+t.unescape(arguments[n])+e[n];return r}},PoD1:function(e,t,r){"use strict";e.exports=r("sW1H")},YIIW:function(e,t,r){"use strict";const n=r("dBjz"),o=r("PoD1"),a=r("Ievl"),u=new Set(o);e.exports=e=>{if((e=Object.assign({name:"div",attributes:{},html:""},e)).html&&e.text)throw new Error("The `html` and `text` options are mutually exclusive");const t=e.text?a.escape(e.text):e.html;let r=`<${e.name}${n(e.attributes)}>`;return u.has(e.name)||(r+=`${t}</${e.name}>`),r}},cN42:function(e,t,r){var n=r("jG5F");document.querySelectorAll("[data-ref=entity-terms]").forEach((function(e){e.innerHTML=n(e.innerText,{attributes:{target:"_blank",class:"text-primary"}})}))},dBjz:function(e,t,r){"use strict";const n=r("Ievl");e.exports=e=>{const t=[];for(const r of Object.keys(e)){let o=e[r];if(!1===o)continue;Array.isArray(o)&&(o=o.join(" "));let a=n.escape(r);!0!==o&&(a+=`="${n.escape(String(o))}"`),t.push(a)}return t.length>0?" "+t.join(" "):""}},jG5F:function(e,t,r){"use strict";const n=r("YIIW"),o=(e,t)=>n({name:"a",attributes:{href:"",...t.attributes,href:e},text:void 0===t.value?e:void 0,html:void 0===t.value?void 0:"function"==typeof t.value?t.value(e):t.value});e.exports=(e,t)=>{if("string"===(t={attributes:{},type:"string",...t}).type)return((e,t)=>e.replace(/((?<!\+)(?:https?(?::\/\/))(?:www\.)?(?:[a-zA-Z\d-_.]+(?:(?:\.|@)[a-zA-Z\d]{2,})|localhost)(?:(?:[-a-zA-Z\d:%_+.~#*$!?&//=@]*)(?:[,](?![\s]))*)*)/g,e=>o(e,t)))(e,t);if("dom"===t.type)return((e,t)=>{const r=document.createDocumentFragment();for(const[a,u]of Object.entries(e.split(/((?<!\+)(?:https?(?::\/\/))(?:www\.)?(?:[a-zA-Z\d-_.]+(?:(?:\.|@)[a-zA-Z\d]{2,})|localhost)(?:(?:[-a-zA-Z\d:%_+.~#*$!?&//=@]*)(?:[,](?![\s]))*)*)/g)))a%2?r.append((n=o(u,t),document.createRange().createContextualFragment(n))):u.length>0&&r.append(u);var n;return r})(e,t);throw new Error("The type option must be either `dom` or `string`")}},sW1H:function(e){e.exports=JSON.parse('["area","base","br","col","embed","hr","img","input","link","menuitem","meta","param","source","track","wbr"]')}}); | ||||||
							
								
								
									
										9
									
								
								public/js/clients/linkify-urls.js.LICENSE.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								public/js/clients/linkify-urls.js.LICENSE.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | /** | ||||||
|  |  * Invoice Ninja (https://invoiceninja.com) | ||||||
|  |  * | ||||||
|  |  * @link https://github.com/invoiceninja/invoiceninja source repository | ||||||
|  |  * | ||||||
|  |  * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com) | ||||||
|  |  * | ||||||
|  |  * @license https://opensource.org/licenses/AAL | ||||||
|  |  */ | ||||||
| @ -3,6 +3,7 @@ | |||||||
|     "/css/app.css": "/css/app.css?id=58736e43b16ddde82ba9", |     "/css/app.css": "/css/app.css?id=58736e43b16ddde82ba9", | ||||||
|     "/js/clients/invoices/action-selectors.js": "/js/clients/invoices/action-selectors.js?id=a09bb529b8e1826f13b4", |     "/js/clients/invoices/action-selectors.js": "/js/clients/invoices/action-selectors.js?id=a09bb529b8e1826f13b4", | ||||||
|     "/js/clients/invoices/payment.js": "/js/clients/invoices/payment.js?id=8ce8955ba775ea5f47d1", |     "/js/clients/invoices/payment.js": "/js/clients/invoices/payment.js?id=8ce8955ba775ea5f47d1", | ||||||
|  |     "/js/clients/linkify-urls.js": "/js/clients/linkify-urls.js?id=0dc8c34010d09195d2f7", | ||||||
|     "/js/clients/payment_methods/authorize-authorize-card.js": "/js/clients/payment_methods/authorize-authorize-card.js?id=206d7de4ac97612980ff", |     "/js/clients/payment_methods/authorize-authorize-card.js": "/js/clients/payment_methods/authorize-authorize-card.js?id=206d7de4ac97612980ff", | ||||||
|     "/js/clients/payments/authorize-credit-card-payment.js": "/js/clients/payments/authorize-credit-card-payment.js?id=a376eff2227da398b0ba", |     "/js/clients/payments/authorize-credit-card-payment.js": "/js/clients/payments/authorize-credit-card-payment.js?id=a376eff2227da398b0ba", | ||||||
|     "/js/clients/payments/card-js.min.js": "/js/clients/payments/card-js.min.js?id=5469146cd629ea1b5c20", |     "/js/clients/payments/card-js.min.js": "/js/clients/payments/card-js.min.js?id=5469146cd629ea1b5c20", | ||||||
|  | |||||||
							
								
								
									
										19
									
								
								resources/js/clients/linkify-urls.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								resources/js/clients/linkify-urls.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | /** | ||||||
|  |  * Invoice Ninja (https://invoiceninja.com)
 | ||||||
|  |  * | ||||||
|  |  * @link https://github.com/invoiceninja/invoiceninja source repository
 | ||||||
|  |  * | ||||||
|  |  * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
 | ||||||
|  |  * | ||||||
|  |  * @license https://opensource.org/licenses/AAL
 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | const linkifyUrls = require('linkify-urls'); | ||||||
|  | 
 | ||||||
|  | document | ||||||
|  |     .querySelectorAll('[data-ref=entity-terms]') | ||||||
|  |     .forEach((text) => { | ||||||
|  |         text.innerHTML = linkifyUrls(text.innerText, { | ||||||
|  |             attributes: {target: '_blank', class: 'text-primary'} | ||||||
|  |         }); | ||||||
|  |     }); | ||||||
| @ -4143,6 +4143,11 @@ $LANG = array( | |||||||
|      'hello' => 'Hello', |      'hello' => 'Hello', | ||||||
|      'group_documents' => 'Group documents', |      'group_documents' => 'Group documents', | ||||||
|      'quote_approval_confirmation_label' => 'Are you sure you want to approve this quote?', |      'quote_approval_confirmation_label' => 'Are you sure you want to approve this quote?', | ||||||
|  | 
 | ||||||
|  |     'click_agree_to_accept_terms' => 'Click "Agree" to Accept Terms.', | ||||||
|  |     'agree' => 'Agree', | ||||||
|  | 
 | ||||||
|  |     'pending_approval' => 'Pending Approval', | ||||||
| ); | ); | ||||||
| 
 | 
 | ||||||
| return $LANG; | return $LANG; | ||||||
|  | |||||||
| @ -41,10 +41,6 @@ | |||||||
|         color: #AAA9A9; |         color: #AAA9A9; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     #company-details > * { |  | ||||||
|         margin-bottom: 0.8rem; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     #company-address { |     #company-address { | ||||||
|         display: flex; |         display: flex; | ||||||
|         flex-direction: column; |         flex-direction: column; | ||||||
| @ -72,10 +68,6 @@ | |||||||
|         margin-top: 1rem; |         margin-top: 1rem; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     #client-details > * { |  | ||||||
|         margin-bottom: 0.5rem; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     #client-details > p:nth-child(1) { |     #client-details > p:nth-child(1) { | ||||||
|         color: var(--primary-color); |         color: var(--primary-color); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -65,8 +65,13 @@ | |||||||
|         margin-top: 0.8rem; |         margin-top: 0.8rem; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     .header-right-side-wrapper-right { | ||||||
|  |         display: flex; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     .header-wrapper .company-logo { |     .header-wrapper .company-logo { | ||||||
|         height: 5rem; |         height: 5rem; | ||||||
|  |         margin-left: auto; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     .entity-label { |     .entity-label { | ||||||
| @ -199,16 +204,18 @@ | |||||||
|         </div> |         </div> | ||||||
| 
 | 
 | ||||||
|         <div class="header-right-side-wrapper"> |         <div class="header-right-side-wrapper"> | ||||||
|             <div> |             <div class="header-right-side-wrapper-left"> | ||||||
|                 <p class="header-text-label">$to_label:</p> |                 <p class="header-text-label">$to_label:</p> | ||||||
|                 <div id="client-details"></div> |                 <div id="client-details"></div> | ||||||
|             </div> |             </div> | ||||||
| 
 | 
 | ||||||
|             <img |             <div class="header-right-side-wrapper-right"> | ||||||
|                 class="company-logo" |                 <img | ||||||
|                 src="$company.logo" |                     class="company-logo" | ||||||
|                 alt="$company.name logo" |                     src="$company.logo" | ||||||
|             /> |                     alt="$company.name logo" | ||||||
|  |                 /> | ||||||
|  |             </div> | ||||||
|         </div> |         </div> | ||||||
|     </div> |     </div> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -97,6 +97,12 @@ | |||||||
|         width: 100%; |         width: 100%; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     #product-table th + th, | ||||||
|  |     #delivery-note-table th + th, | ||||||
|  |     #task-table th + th { | ||||||
|  |         border-left: 2px solid white; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     #product-table > thead > tr > th, |     #product-table > thead > tr > th, | ||||||
|     #delivery-note-table > thead > tr > th, |     #delivery-note-table > thead > tr > th, | ||||||
|     #task-table > thead > tr > th { |     #task-table > thead > tr > th { | ||||||
|  | |||||||
| @ -15,6 +15,11 @@ | |||||||
|             <table class="min-w-full shadow rounded border border-gray-200 mt-4 credits-table"> |             <table class="min-w-full shadow rounded border border-gray-200 mt-4 credits-table"> | ||||||
|                 <thead> |                 <thead> | ||||||
|                     <tr> |                     <tr> | ||||||
|  |                         <th class="px-6 py-3 text-xs font-medium leading-4 tracking-wider text-left text-white uppercase border-b border-gray-200 bg-primary"> | ||||||
|  |                             <span role="button" wire:click="sortBy('number')" class="cursor-pointer"> | ||||||
|  |                                 {{ ctrans('texts.credit_number') }} | ||||||
|  |                             </span> | ||||||
|  |                         </th> | ||||||
|                         <th class="px-6 py-3 border-b border-gray-200 bg-primary text-left text-xs leading-4 font-medium text-white uppercase tracking-wider"> |                         <th class="px-6 py-3 border-b border-gray-200 bg-primary text-left text-xs leading-4 font-medium text-white uppercase tracking-wider"> | ||||||
|                             <span role="button" wire:click="sortBy('amount')" class="cursor-pointer"> |                             <span role="button" wire:click="sortBy('amount')" class="cursor-pointer"> | ||||||
|                                 {{ ctrans('texts.amount') }} |                                 {{ ctrans('texts.amount') }} | ||||||
| @ -32,7 +37,7 @@ | |||||||
|                         </th> |                         </th> | ||||||
|                         <th class="px-6 py-3 border-b border-gray-200 bg-primary text-left text-xs leading-4 font-medium text-white uppercase tracking-wider"> |                         <th class="px-6 py-3 border-b border-gray-200 bg-primary text-left text-xs leading-4 font-medium text-white uppercase tracking-wider"> | ||||||
|                             <span role="button" wire:click="sortBy('public_notes')" class="cursor-pointer"> |                             <span role="button" wire:click="sortBy('public_notes')" class="cursor-pointer"> | ||||||
|                                 {{ ctrans('texts.public_notes') }} |                                 {{ ctrans('texts.notes') }} | ||||||
|                             </span> |                             </span> | ||||||
|                         </th> |                         </th> | ||||||
|                         <th class="px-6 py-3 border-b border-gray-200 bg-primary"></th> |                         <th class="px-6 py-3 border-b border-gray-200 bg-primary"></th> | ||||||
| @ -41,6 +46,9 @@ | |||||||
|                 <tbody> |                 <tbody> | ||||||
|                     @forelse($credits as $credit) |                     @forelse($credits as $credit) | ||||||
|                         <tr class="bg-white group hover:bg-gray-100"> |                         <tr class="bg-white group hover:bg-gray-100"> | ||||||
|  |                             <td class="px-6 py-4 whitespace-no-wrap text-sm leading-5 text-gray-500"> | ||||||
|  |                                 {{ $credit->number }} | ||||||
|  |                             </td> | ||||||
|                             <td class="px-6 py-4 whitespace-no-wrap text-sm leading-5 text-gray-500"> |                             <td class="px-6 py-4 whitespace-no-wrap text-sm leading-5 text-gray-500"> | ||||||
|                                 {{ App\Utils\Number::formatMoney($credit->amount, $credit->client) }} |                                 {{ App\Utils\Number::formatMoney($credit->amount, $credit->client) }} | ||||||
|                             </td> |                             </td> | ||||||
| @ -78,4 +86,4 @@ | |||||||
|         @endif |         @endif | ||||||
|         {{ $credits->links('portal/ninja2020/vendor/pagination') }} |         {{ $credits->links('portal/ninja2020/vendor/pagination') }} | ||||||
|     </div> |     </div> | ||||||
| </div> | </div> | ||||||
|  | |||||||
| @ -20,7 +20,7 @@ | |||||||
|             </div> |             </div> | ||||||
|             <div class="mr-3"> |             <div class="mr-3"> | ||||||
|                 <input wire:model="status" value="overdue" type="checkbox" class="cursor-pointer form-checkbox" id="overdue-checkbox"> |                 <input wire:model="status" value="overdue" type="checkbox" class="cursor-pointer form-checkbox" id="overdue-checkbox"> | ||||||
|                 <label for="overdue-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.overdue') }}</label> |                 <label for="overdue-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.past_due') }}</label> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|     </div> |     </div> | ||||||
|  | |||||||
| @ -10,10 +10,6 @@ | |||||||
|             </select> |             </select> | ||||||
|         </div> |         </div> | ||||||
|         <div class="flex items-center"> |         <div class="flex items-center"> | ||||||
|             <div class="mr-3"> |  | ||||||
|                 <input wire:model="status" value="{{ App\Models\Quote::STATUS_DRAFT }}" type="checkbox" class="cursor-pointer form-checkbox" id="draft-checkbox"> |  | ||||||
|                 <label for="draft-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.status_draft') }}</label> |  | ||||||
|             </div> |  | ||||||
|             <div class="mr-3"> |             <div class="mr-3"> | ||||||
|                 <input wire:model="status" value="{{ App\Models\Quote::STATUS_SENT }}" value="sent" type="checkbox" class="cursor-pointer form-checkbox" id="sent-checkbox"> |                 <input wire:model="status" value="{{ App\Models\Quote::STATUS_SENT }}" value="sent" type="checkbox" class="cursor-pointer form-checkbox" id="sent-checkbox"> | ||||||
|                 <label for="sent-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.status_pending') }}</label> |                 <label for="sent-checkbox" class="text-sm cursor-pointer">{{ ctrans('texts.status_pending') }}</label> | ||||||
|  | |||||||
| @ -12,23 +12,23 @@ | |||||||
|                 <div class="mt-4"> |                 <div class="mt-4"> | ||||||
|                     @foreach($entities as $entity) |                     @foreach($entities as $entity) | ||||||
|                         <div class="mb-4"> |                         <div class="mb-4"> | ||||||
|                             <h4 class="leading-6 font-medium text-gray-900">{{ $entity_type }} {{ $entity->number }}:</h4> |                             <p class="text-sm leading-6 font-medium text-gray-500">{{ $entity_type }} {{ $entity->number }}:</p> | ||||||
|                             @if($entity->terms) |                             @if($entity->terms) | ||||||
|                                 <p class="text-sm leading-5 text-gray-500">{!! $entity->terms !!}</p> |                                 <h5 data-ref="entity-terms" class="text-sm leading-5 text-gray-900">{!! $entity->terms !!}</h5> | ||||||
|                             @else |                             @else | ||||||
|                                 <i class="text-sm leading-5 text-gray-500">{{ ctrans('texts.not_specified') }}</i> |                                 <i class="text-sm leading-5 text-gray-500">{{ ctrans('texts.not_specified') }}</i> | ||||||
|                             @endif |                             @endif | ||||||
|                         </div> |                         </div> | ||||||
|                     @endforeach |                     @endforeach | ||||||
| 
 | 
 | ||||||
|                     <p class="mt-4 block text-sm text-gray-900">{{ ctrans('texts.by_clicking_next_you_accept_terms') }}</p> |                     <p class="mt-4 block text-sm text-gray-900">{{ ctrans('texts.click_agree_to_accept_terms') }}</p> | ||||||
|                 </div> |                 </div> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|         <div class="mt-5 sm:mt-4 sm:flex sm:flex-row-reverse"> |         <div class="mt-5 sm:mt-4 sm:flex sm:flex-row-reverse"> | ||||||
|             <div class="flex w-full rounded-md shadow-sm sm:ml-3 sm:w-auto"> |             <div class="flex w-full rounded-md shadow-sm sm:ml-3 sm:w-auto"> | ||||||
|                 <button type="button" id="accept-terms-button" class="button button-primary bg-primary"> |                 <button type="button" id="accept-terms-button" class="button button-primary bg-primary"> | ||||||
|                     {{ ctrans('texts.next_step') }} |                     {{ ctrans('texts.agree') }} | ||||||
|                 </button> |                 </button> | ||||||
|             </div> |             </div> | ||||||
|             <div class="mt-3 flex w-full rounded-md shadow-sm sm:mt-0 sm:w-auto"> |             <div class="mt-3 flex w-full rounded-md shadow-sm sm:mt-0 sm:w-auto"> | ||||||
| @ -39,3 +39,7 @@ | |||||||
|         </div> |         </div> | ||||||
|     </div> |     </div> | ||||||
| </div> | </div> | ||||||
|  | 
 | ||||||
|  | @push('footer') | ||||||
|  |     <script src="{{ asset('js/clients/linkify-urls.js') }}" defer></script> | ||||||
|  | @endpush | ||||||
|  | |||||||
| @ -38,12 +38,6 @@ | |||||||
|                                 {{ ctrans('texts.invoice_number_placeholder', ['invoice' => $invoice->number])}} |                                 {{ ctrans('texts.invoice_number_placeholder', ['invoice' => $invoice->number])}} | ||||||
|                                 - {{ ctrans('texts.unpaid') }} |                                 - {{ ctrans('texts.unpaid') }} | ||||||
|                             </h3> |                             </h3> | ||||||
|                             <div class="mt-2 max-w-xl text-sm leading-5 text-gray-500"> |  | ||||||
|                                 <p translate> |  | ||||||
|                                 {{ ctrans('texts.invoice_still_unpaid') }} |  | ||||||
|                                 <!-- This invoice is still not paid. Click the button to complete the payment. --> |  | ||||||
|                                 </p> |  | ||||||
|                             </div> |  | ||||||
|                         </div> |                         </div> | ||||||
|                         <div class="mt-5 sm:mt-0 sm:ml-6 sm:flex-shrink-0 sm:flex sm:items-center"> |                         <div class="mt-5 sm:mt-0 sm:ml-6 sm:flex-shrink-0 sm:flex sm:items-center"> | ||||||
|                             <div class="inline-flex rounded-md shadow-sm"> |                             <div class="inline-flex rounded-md shadow-sm"> | ||||||
|  | |||||||
| @ -31,6 +31,10 @@ | |||||||
|             <div> |             <div> | ||||||
|                 @yield('gateway_content') |                 @yield('gateway_content') | ||||||
|             </div> |             </div> | ||||||
|  |             <span class="block mx-4 mb-4 text-xs inline-flex items-center"> | ||||||
|  |                 <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-green-600"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg> | ||||||
|  |                 <span class="ml-1">Secure 256-bit encryption</span> | ||||||
|  |             </span> | ||||||
|         </div> |         </div> | ||||||
|     </div> |     </div> | ||||||
| @endsection | @endsection | ||||||
|  | |||||||
| @ -3,9 +3,6 @@ | |||||||
|             <div class="md:col-span-1"> |             <div class="md:col-span-1"> | ||||||
|                 <div class="sm:px-0"> |                 <div class="sm:px-0"> | ||||||
|                     <h3 class="text-lg font-medium leading-6 text-gray-900">{{ ctrans('texts.profile') }}</h3> |                     <h3 class="text-lg font-medium leading-6 text-gray-900">{{ ctrans('texts.profile') }}</h3> | ||||||
|                     <p class="mt-1 text-sm leading-5 text-gray-500"> |  | ||||||
|                         {{ ctrans('texts.client_information_text') }} |  | ||||||
|                     </p> |  | ||||||
|                 </div> |                 </div> | ||||||
|             </div>  <!-- End of left-side --> |             </div>  <!-- End of left-side --> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3,9 +3,6 @@ | |||||||
|         <div class="md:col-span-1"> |         <div class="md:col-span-1"> | ||||||
|             <div class="sm:px-0"> |             <div class="sm:px-0"> | ||||||
|                 <h3 class="text-lg font-medium leading-6 text-gray-900">{{ ctrans('texts.name_website_logo') }}</h3> |                 <h3 class="text-lg font-medium leading-6 text-gray-900">{{ ctrans('texts.name_website_logo') }}</h3> | ||||||
|                 <p class="mt-1 text-sm leading-5 text-gray-500"> |  | ||||||
|                     {{ ctrans('texts.make_sure_use_full_link') }} |  | ||||||
|                 </p> |  | ||||||
|             </div> |             </div> | ||||||
|         </div> <!-- End of left side --> |         </div> <!-- End of left side --> | ||||||
| 
 | 
 | ||||||
| @ -34,7 +31,10 @@ | |||||||
|                                 @enderror |                                 @enderror | ||||||
|                             </div> |                             </div> | ||||||
|                             <div class="col-span-6 sm:col-span-3"> |                             <div class="col-span-6 sm:col-span-3"> | ||||||
|                                 <label for="website" class="input-label">{{ ctrans('texts.website') }}</label> |                                 <div class="inline-flex items-center"> | ||||||
|  |                                     <label for="website" class="input-label">{{ ctrans('texts.website') }}</label> | ||||||
|  |                                     <span class="text-xs ml-2 text-gray-600">E.g. https://invoiceninja.com</span> | ||||||
|  |                                 </div> | ||||||
|                                 <input id="website" class="input w-full" name="website" wire:model.defer="website" /> |                                 <input id="website" class="input w-full" name="website" wire:model.defer="website" /> | ||||||
|                                 @error('website') |                                 @error('website') | ||||||
|                                 <div class="validation validation-fail"> |                                 <div class="validation validation-fail"> | ||||||
|  | |||||||
| @ -2,10 +2,7 @@ | |||||||
|     <div class="md:grid md:grid-cols-3 md:gap-6"> |     <div class="md:grid md:grid-cols-3 md:gap-6"> | ||||||
|         <div class="md:col-span-1"> |         <div class="md:col-span-1"> | ||||||
|             <div class="sm:px-0"> |             <div class="sm:px-0"> | ||||||
|                 <h3 class="text-lg font-medium leading-6 text-gray-900">{{ ctrans('texts.personal_address') }}</h3> |                 <h3 class="text-lg font-medium leading-6 text-gray-900">{{ ctrans('texts.billing_address') }}</h3> | ||||||
|                 <p class="mt-1 text-sm leading-5 text-gray-500"> |  | ||||||
|                     {{ ctrans('texts.enter_your_personal_address') }} |  | ||||||
|                 </p> |  | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|         <div class="mt-5 md:mt-0 md:col-span-2"> |         <div class="mt-5 md:mt-0 md:col-span-2"> | ||||||
|  | |||||||
| @ -3,9 +3,6 @@ | |||||||
|         <div class="md:col-span-1"> |         <div class="md:col-span-1"> | ||||||
|             <div class="sm:px-0"> |             <div class="sm:px-0"> | ||||||
|                 <h3 class="text-lg font-medium leading-6 text-gray-900">{{ ctrans('texts.shipping_address') }}</h3> |                 <h3 class="text-lg font-medium leading-6 text-gray-900">{{ ctrans('texts.shipping_address') }}</h3> | ||||||
|                 <p class="mt-1 text-sm leading-5 text-gray-500"> |  | ||||||
|                     {{ ctrans('texts.enter_your_shipping_address') }} |  | ||||||
|                 </p> |  | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
|         <div class="mt-5 md:mt-0 md:col-span-2"> |         <div class="mt-5 md:mt-0 md:col-span-2"> | ||||||
|  | |||||||
| @ -7,16 +7,9 @@ | |||||||
|     <div class="bg-white shadow sm:rounded-lg"> |     <div class="bg-white shadow sm:rounded-lg"> | ||||||
|         <div class="px-4 py-5 sm:p-6"> |         <div class="px-4 py-5 sm:p-6"> | ||||||
|             <div class="sm:flex sm:items-start sm:justify-between"> |             <div class="sm:flex sm:items-start sm:justify-between"> | ||||||
|                 <div> |                 <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||||
|                     <h3 class="text-lg leading-6 font-medium text-gray-900"> |                     {{ ctrans('texts.pending_approval') }} | ||||||
|                         {{ ctrans('texts.waiting_for_approval') }} |                 </h3> | ||||||
|                     </h3> |  | ||||||
|                     <div class="mt-2 max-w-xl text-sm leading-5 text-gray-500"> |  | ||||||
|                         <p> |  | ||||||
|                             {{ ctrans('texts.quote_still_not_approved') }} |  | ||||||
|                         </p> |  | ||||||
|                     </div> |  | ||||||
|                 </div> |  | ||||||
| 
 | 
 | ||||||
|                 <div class="mt-5 sm:mt-0 sm:ml-6 sm:flex-shrink-0 sm:flex sm:items-center"> |                 <div class="mt-5 sm:mt-0 sm:ml-6 sm:flex-shrink-0 sm:flex sm:items-center"> | ||||||
|                     @yield('quote-not-approved-right-side') |                     @yield('quote-not-approved-right-side') | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								webpack.mix.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								webpack.mix.js
									
									
									
									
										vendored
									
									
								
							| @ -61,6 +61,10 @@ mix.js("resources/js/app.js", "public/js") | |||||||
|     .js( |     .js( | ||||||
|         "resources/js/clients/shared/multiple-downloads.js", |         "resources/js/clients/shared/multiple-downloads.js", | ||||||
|         "public/js/clients/shared/multiple-downloads.js" |         "public/js/clients/shared/multiple-downloads.js" | ||||||
|  |     ) | ||||||
|  |     .js( | ||||||
|  |         "resources/js/clients/linkify-urls.js", | ||||||
|  |         "public/js/clients/linkify-urls.js" | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
| mix.copyDirectory('node_modules/card-js/card-js.min.css', 'public/css/card-js.min.css'); | mix.copyDirectory('node_modules/card-js/card-js.min.css', 'public/css/card-js.min.css'); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user