mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-04 03:29:03 -05:00 
			
		
		
		
	Bug fixes
This commit is contained in:
		
							parent
							
								
									ea82406567
								
							
						
					
					
						commit
						ccbbf6c6fa
					
				@ -4,7 +4,11 @@
 | 
				
			|||||||
### [https://www.invoiceninja.com](https://www.invoiceninja.com)
 | 
					### [https://www.invoiceninja.com](https://www.invoiceninja.com)
 | 
				
			||||||
### Introduction
 | 
					### Introduction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Most online invoicing sites are expensive. They shouldn't be. The aim of this project is to provide a free, open-source alternative. Additionally, the hope is this codebase will serve as a sample site for Laravel as well as other JavaScript technologies. 
 | 
					Most online invoicing sites are expensive. They shouldn't be. The aim of this project is to provide a free, open-source alternative. Additionally, the hope is the codebase will serve as a sample site for Laravel as well as other JavaScript technologies. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For updates follow [@invoiceninja](https://twitter.com/invoiceninja) and [@hillelcoren](https://twitter.com/hillelcoren)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Site design by [kantorp-wegl.in](http://kantorp-wegl.in/)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Features
 | 
					### Features
 | 
				
			||||||
* Core application built using Laravel 4.1
 | 
					* Core application built using Laravel 4.1
 | 
				
			||||||
@ -15,7 +19,7 @@ Most online invoicing sites are expensive. They shouldn't be. The aim of this pr
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
### Steps to setup
 | 
					### Steps to setup
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If you plan on submitting changes it's best to fork the repo (https://help.github.com/articles/fork-a-repo), otherwise you can just checkout the code.
 | 
					If you plan on submitting changes it's best to [fork the repo](https://help.github.com/articles/fork-a-repo), otherwise you can just checkout the code.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    git clone git@github.com:hillelcoren/invoice-ninja.git ninja
 | 
					    git clone git@github.com:hillelcoren/invoice-ninja.git ninja
 | 
				
			||||||
    cd ninja
 | 
					    cd ninja
 | 
				
			||||||
 | 
				
			|||||||
@ -105,7 +105,7 @@ class ConstantsSeeder extends Seeder
 | 
				
			|||||||
		Industry::create(array('name' => 'Travel & Luxury'));
 | 
							Industry::create(array('name' => 'Travel & Luxury'));
 | 
				
			||||||
		Industry::create(array('name' => 'Other'));
 | 
							Industry::create(array('name' => 'Other'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Size::create(array('name' => '1 = 3'));
 | 
							Size::create(array('name' => '1 - 3'));
 | 
				
			||||||
		Size::create(array('name' => '4 - 10'));
 | 
							Size::create(array('name' => '4 - 10'));
 | 
				
			||||||
		Size::create(array('name' => '11 - 50'));
 | 
							Size::create(array('name' => '11 - 50'));
 | 
				
			||||||
		Size::create(array('name' => '51 - 100'));
 | 
							Size::create(array('name' => '51 - 100'));
 | 
				
			||||||
@ -122,6 +122,7 @@ class ConstantsSeeder extends Seeder
 | 
				
			|||||||
		Currency::create(array('name' => 'US Dollar', 'code' => 'USD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'));
 | 
							Currency::create(array('name' => 'US Dollar', 'code' => 'USD', 'symbol' => '$', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'));
 | 
				
			||||||
		Currency::create(array('name' => 'Pound Sterling', 'code' => 'GBP', 'symbol' => '£', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'));
 | 
							Currency::create(array('name' => 'Pound Sterling', 'code' => 'GBP', 'symbol' => '£', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'));
 | 
				
			||||||
		Currency::create(array('name' => 'Euro', 'code' => 'EUR', 'symbol' => '€', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'));
 | 
							Currency::create(array('name' => 'Euro', 'code' => 'EUR', 'symbol' => '€', 'precision' => '2', 'thousand_separator' => ',', 'decimal_separator' => '.'));
 | 
				
			||||||
 | 
							Currency::create(array('name' => 'Rand', 'code' => 'ZAR', 'symbol' => 'R', 'precision' => '2', 'thousand_separator' => ' ', 'decimal_separator' => '.'));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		DatetimeFormat::create(array('format' => 'd/M/Y g:i a', 'label' => '10/Mar/2013'));
 | 
							DatetimeFormat::create(array('format' => 'd/M/Y g:i a', 'label' => '10/Mar/2013'));
 | 
				
			||||||
 | 
				
			|||||||
@ -162,7 +162,17 @@ class Client extends EntityModel
 | 
				
			|||||||
			return '';
 | 
								return '';
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return link_to($this->website, $this->website, array('target'=>'_blank'));
 | 
							$link = $this->website;
 | 
				
			||||||
 | 
							$title = $this->website;
 | 
				
			||||||
 | 
							$prefix = 'http://';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (strlen($link) > 7 && substr($link, 0, 7) === $prefix) {
 | 
				
			||||||
 | 
								$title = substr($title, 7);
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								$link = $prefix . $link;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return link_to($link, $title, array('target'=>'_blank'));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public function getDateCreated()
 | 
						public function getDateCreated()
 | 
				
			||||||
 | 
				
			|||||||
@ -64,7 +64,7 @@
 | 
				
			|||||||
    <div class="row">
 | 
					    <div class="row">
 | 
				
			||||||
      <div class="col-md-8 col-md-offset-2">
 | 
					      <div class="col-md-8 col-md-offset-2">
 | 
				
			||||||
        <h2>Open Source Platform</h2>
 | 
					        <h2>Open Source Platform</h2>
 | 
				
			||||||
        <p>Free yourself from online invoicing platforms with high monthly fees and limited functionality.  Being open source allows us fast app development, security audits by the open-course community, and we can keep it <span style="color:#2299c0"><strong>FREE!</strong></span></p>
 | 
					        <p>Free yourself from online invoicing platforms with high monthly fees and limited functionality.  Being <a href="https://github.com/hillelcoren/invoice-ninja" target="_blank">open source</a> allows us fast app development, security audits by the open-course community, and we can keep it <strong>FREE!</strong></p>
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -36,6 +36,8 @@
 | 
				
			|||||||
					{{-- do nothing --}}
 | 
										{{-- do nothing --}}
 | 
				
			||||||
				@elseif ($field == 'testMode' || $field == 'developerMode') 
 | 
									@elseif ($field == 'testMode' || $field == 'developerMode') 
 | 
				
			||||||
					{{-- Former::checkbox($gateway->id.'_'.$field)->label(Utils::toSpaceCase($field))->text('Enable') --}}				
 | 
										{{-- Former::checkbox($gateway->id.'_'.$field)->label(Utils::toSpaceCase($field))->text('Enable') --}}				
 | 
				
			||||||
 | 
									@elseif ($field == 'username' || $field == 'password') 
 | 
				
			||||||
 | 
										{{ Former::text($gateway->id.'_'.$field)->label('API '. ucfirst(Utils::toSpaceCase($field))) }}				
 | 
				
			||||||
				@else
 | 
									@else
 | 
				
			||||||
					{{ Former::text($gateway->id.'_'.$field)->label(Utils::toSpaceCase($field)) }}				
 | 
										{{ Former::text($gateway->id.'_'.$field)->label(Utils::toSpaceCase($field)) }}				
 | 
				
			||||||
				@endif
 | 
									@endif
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  To adjust your email notification settings please <a href="http://www.invoiceninja.com/company/notifications">click here</a>.
 | 
					  To adjust your email notification settings please <a href="http://www.invoiceninja.com/company/notifications">click here</a>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Regards,
 | 
					  Regards, <p/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  The InvoiceNinja Team
 | 
					  The InvoiceNinja Team
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
				
			|||||||
@ -9,9 +9,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  The following client {{ $clientName }} was emailed Invoice {{ $invoiceNumber }} for {{ $invoiceAmount}}.<p/>
 | 
					  The following client {{ $clientName }} was emailed Invoice {{ $invoiceNumber }} for {{ $invoiceAmount}}.<p/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Regards,
 | 
					  Regards, <p/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  The InvoiceNinja Team
 | 
					  The InvoiceNinja Team <p/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  To adjust your email notification settings please <a href="http://www.invoiceninja.com/company/notifications">click here</a>.<p/>
 | 
					  To adjust your email notification settings please <a href="http://www.invoiceninja.com/company/notifications">click here</a>.<p/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -9,9 +9,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  The following client {{ $clientName }} viewed Invoice {{ $invoiceNumber }} for {{ $invoiceAmount}}.<p/>
 | 
					  The following client {{ $clientName }} viewed Invoice {{ $invoiceNumber }} for {{ $invoiceAmount}}.<p/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Regards,
 | 
					  Regards,<p/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  The InvoiceNinja Team
 | 
					  The InvoiceNinja Team<p/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  To adjust your email notification settings please <a href="http://www.invoiceninja.com/company/notifications">click here</a>.<p/>
 | 
					  To adjust your email notification settings please <a href="http://www.invoiceninja.com/company/notifications">click here</a>.<p/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -77,7 +77,7 @@
 | 
				
			|||||||
	      <span class="icon-bar"></span>
 | 
						      <span class="icon-bar"></span>
 | 
				
			||||||
	      <span class="icon-bar"></span>
 | 
						      <span class="icon-bar"></span>
 | 
				
			||||||
	    </button>
 | 
						    </button>
 | 
				
			||||||
      <a href="{{ URL::to('/rocksteady') }}" class='navbar-brand'>
 | 
					      <a href="{{ URL::to('/') }}" class='navbar-brand'>
 | 
				
			||||||
        <img src="{{ asset('images/invoiceninja-logo.png') }}" style="height:18px;width:auto"/>
 | 
					        <img src="{{ asset('images/invoiceninja-logo.png') }}" style="height:18px;width:auto"/>
 | 
				
			||||||
      </a>	    
 | 
					      </a>	    
 | 
				
			||||||
	  </div>
 | 
						  </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -22,6 +22,8 @@
 | 
				
			|||||||
		'product_key' => 'max:20',
 | 
							'product_key' => 'max:20',
 | 
				
			||||||
	)); }}	
 | 
						)); }}	
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<input type="submit" style="display:none" name="submitButton" id="submitButton">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<div data-bind="with: invoice">
 | 
						<div data-bind="with: invoice">
 | 
				
			||||||
    <div class="row" style="min-height:195px" onkeypress="formEnterClick(event)">
 | 
					    <div class="row" style="min-height:195px" onkeypress="formEnterClick(event)">
 | 
				
			||||||
    	<div class="col-md-4" id="col_1">
 | 
					    	<div class="col-md-4" id="col_1">
 | 
				
			||||||
@ -255,7 +257,7 @@
 | 
				
			|||||||
					  )
 | 
										  )
 | 
				
			||||||
					, array('id'=>'primaryActions', 'style'=>'text-align:left', 'data-bind'=>'css: $root.enable.save'))->split(); --}}				
 | 
										, array('id'=>'primaryActions', 'style'=>'text-align:left', 'data-bind'=>'css: $root.enable.save'))->split(); --}}				
 | 
				
			||||||
			@else
 | 
								@else
 | 
				
			||||||
				{{ Button::success_submit('Save Invoice', array('id' => 'saveButton')) }}			
 | 
									{{ Button::success('Save Invoice', array('id' => 'saveButton', 'onclick' => 'onSaveClick()')) }}			
 | 
				
			||||||
			@endif
 | 
								@endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			{{ Button::normal('Email Invoice', array('id' => 'email_button', 'onclick' => 'onEmailClick()'))->append_with_icon('send'); }}		
 | 
								{{ Button::normal('Email Invoice', array('id' => 'email_button', 'onclick' => 'onEmailClick()'))->append_with_icon('send'); }}		
 | 
				
			||||||
@ -423,7 +425,7 @@
 | 
				
			|||||||
				<p>Examples of dynamic invoice variables:</p>
 | 
									<p>Examples of dynamic invoice variables:</p>
 | 
				
			||||||
				<ul>
 | 
									<ul>
 | 
				
			||||||
					<li>"Gym membership for the month of :MONTH" => "Gym membership for the month of July"</li>
 | 
										<li>"Gym membership for the month of :MONTH" => "Gym membership for the month of July"</li>
 | 
				
			||||||
					<li>":YEAR+1 yearly subscription" => "2014 Yearly Subscription"</li>
 | 
										<li>":YEAR+1 yearly subscription" => "2015 Yearly Subscription"</li>
 | 
				
			||||||
					<li>"Retainer payment for :QUARTER+1" => "Retainer payment for Q2"</li>
 | 
										<li>"Retainer payment for :QUARTER+1" => "Retainer payment for Q2"</li>
 | 
				
			||||||
				</ul>				
 | 
									</ul>				
 | 
				
			||||||
	    	 
 | 
						    	 
 | 
				
			||||||
@ -454,7 +456,26 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	$(function() {
 | 
						$(function() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		$('#country_id').combobox();
 | 
							$('#country_id').combobox().on('change', function(e) {
 | 
				
			||||||
 | 
								console.log('changed country');
 | 
				
			||||||
 | 
								var countryId = parseInt($('input[name=country_id]').val(), 10);	
 | 
				
			||||||
 | 
								var foundMatch = false;
 | 
				
			||||||
 | 
								$('#country_id option').each(function() {
 | 
				
			||||||
 | 
									var itemId = parseInt($(this).val(), 10);					
 | 
				
			||||||
 | 
									if (countryId === itemId) {
 | 
				
			||||||
 | 
										foundMatch = true;
 | 
				
			||||||
 | 
										var country = {id:countryId, name:$(this).text()};
 | 
				
			||||||
 | 
										model.invoice().client().country = country;
 | 
				
			||||||
 | 
										model.invoice().client().country_id(countryId);
 | 
				
			||||||
 | 
										return;					
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
								if (!foundMatch) {
 | 
				
			||||||
 | 
									model.invoice().client().country = false;
 | 
				
			||||||
 | 
									model.invoice().client().country_id(0);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		$('[rel=tooltip]').tooltip();
 | 
							$('[rel=tooltip]').tooltip();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		$('#invoice_date, #due_date, #start_date, #end_date').datepicker();
 | 
							$('#invoice_date, #due_date, #start_date, #end_date').datepicker();
 | 
				
			||||||
@ -470,6 +491,7 @@
 | 
				
			|||||||
				model.loadClient(clientMap[clientId]);				
 | 
									model.loadClient(clientMap[clientId]);				
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				model.loadClient($.parseJSON(ko.toJSON(new ClientModel())));
 | 
									model.loadClient($.parseJSON(ko.toJSON(new ClientModel())));
 | 
				
			||||||
 | 
									model.invoice().client().country = false;				
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			refreshPDF();
 | 
								refreshPDF();
 | 
				
			||||||
		}); //.trigger('change');				
 | 
							}); //.trigger('change');				
 | 
				
			||||||
@ -478,11 +500,6 @@
 | 
				
			|||||||
			refreshPDF();
 | 
								refreshPDF();
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		$('.country_select input.form-control').on('change', function(e) {
 | 
					 | 
				
			||||||
			var countryId = parseInt($('input[name=country_id]').val(), 10);	
 | 
					 | 
				
			||||||
			model.invoice().client().country_id(countryId);
 | 
					 | 
				
			||||||
		});		
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		@if ($client || $invoice)
 | 
							@if ($client || $invoice)
 | 
				
			||||||
			$('#invoice_number').focus();
 | 
								$('#invoice_number').focus();
 | 
				
			||||||
		@else
 | 
							@else
 | 
				
			||||||
@ -651,16 +668,17 @@
 | 
				
			|||||||
		@if (Auth::user()->confirmed)
 | 
							@if (Auth::user()->confirmed)
 | 
				
			||||||
		if (confirm('Are you sure you want to email this invoice?')) {
 | 
							if (confirm('Are you sure you want to email this invoice?')) {
 | 
				
			||||||
			$('#action').val('email');
 | 
								$('#action').val('email');
 | 
				
			||||||
			$('.main_form').submit();
 | 
								$('#submitButton').click();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		@else
 | 
							@else
 | 
				
			||||||
			$('#action').val('email');
 | 
								$('#action').val('email');
 | 
				
			||||||
			$('.main_form').submit();
 | 
								$('#submitButton').click();
 | 
				
			||||||
		@endif
 | 
							@endif
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	function onSaveClick() {
 | 
						function onSaveClick() {
 | 
				
			||||||
		$('.main_form').submit();
 | 
							$('#action').val('');
 | 
				
			||||||
 | 
							$('#submitButton').click();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	function isSaveValid() {
 | 
						function isSaveValid() {
 | 
				
			||||||
@ -698,7 +716,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	function onCloneClick() {
 | 
						function onCloneClick() {
 | 
				
			||||||
		$('#action').val('clone');
 | 
							$('#action').val('clone');
 | 
				
			||||||
		$('.main_form').submit();
 | 
							$('#submitButton').click();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@if ($client && $invoice)
 | 
						@if ($client && $invoice)
 | 
				
			||||||
@ -713,13 +731,13 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	function onArchiveClick() {
 | 
						function onArchiveClick() {
 | 
				
			||||||
		$('#action').val('archive');
 | 
							$('#action').val('archive');
 | 
				
			||||||
		$('.main_form').submit();
 | 
							$('#submitButton').click();		
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	function onDeleteClick() {
 | 
						function onDeleteClick() {
 | 
				
			||||||
		if (confirm('Are you sure you want to delete this invoice?')) {
 | 
							if (confirm('Are you sure you want to delete this invoice?')) {
 | 
				
			||||||
			$('#action').val('delete');
 | 
								$('#action').val('delete');
 | 
				
			||||||
			$('.main_form').submit();
 | 
								$('#submitButton').click();			
 | 
				
			||||||
		}		
 | 
							}		
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -730,8 +748,8 @@
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			event.preventDefault();		     				
 | 
								event.preventDefault();		     				
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								$('#action').val('');
 | 
				
			||||||
			$('.main_form').submit();
 | 
								$('#submitButton').click();
 | 
				
			||||||
			return false;
 | 
								return false;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@ -1431,6 +1449,7 @@
 | 
				
			|||||||
	var clientMap = {};
 | 
						var clientMap = {};
 | 
				
			||||||
	var $clientSelect = $('select#client');
 | 
						var $clientSelect = $('select#client');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (var i=0; i<clients.length; i++) {
 | 
						for (var i=0; i<clients.length; i++) {
 | 
				
			||||||
		var client = clients[i];
 | 
							var client = clients[i];
 | 
				
			||||||
		for (var j=0; j<client.contacts.length; j++) {
 | 
							for (var j=0; j<client.contacts.length; j++) {
 | 
				
			||||||
 | 
				
			|||||||
@ -3,7 +3,7 @@
 | 
				
			|||||||
  <head>
 | 
					  <head>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <title>Invoice Ninja {{ isset($title) ? $title : '' }}</title>
 | 
					    <title>Invoice Ninja {{ isset($title) ? $title : '' }}</title>
 | 
				
			||||||
    <link rel="canonical" href="https://www.invoiceninja.com/rocksteady"></link>
 | 
					    <link rel="canonical" href="https://www.invoiceninja.com"></link>
 | 
				
			||||||
    <link href="{{ asset('favicon.ico') }}" rel="icon" type="image/x-icon">    
 | 
					    <link href="{{ asset('favicon.ico') }}" rel="icon" type="image/x-icon">    
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    <link href='//fonts.googleapis.com/css?family=Roboto:400,700,900,100' rel='stylesheet' type='text/css'>
 | 
					    <link href='//fonts.googleapis.com/css?family=Roboto:400,700,900,100' rel='stylesheet' type='text/css'>
 | 
				
			||||||
@ -13,7 +13,7 @@
 | 
				
			|||||||
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
					    <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
				
			||||||
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
				
			||||||
    <meta property="og:site_name" content="Invoice Ninja"></meta>
 | 
					    <meta property="og:site_name" content="Invoice Ninja"></meta>
 | 
				
			||||||
    <meta property="og:url" content="https://www.invoiceninja.com/rocksteady"></meta>
 | 
					    <meta property="og:url" content="https://www.invoiceninja.com"></meta>
 | 
				
			||||||
    <meta property="og:title" content="Invoice Ninja"></meta>
 | 
					    <meta property="og:title" content="Invoice Ninja"></meta>
 | 
				
			||||||
    <meta property="og:image" content="https://www.invoiceninja.com/images/facebook.jpg"></meta>
 | 
					    <meta property="og:image" content="https://www.invoiceninja.com/images/facebook.jpg"></meta>
 | 
				
			||||||
    <meta property="og:description" content="Simple, Intuitive Invoicing."></meta>
 | 
					    <meta property="og:description" content="Simple, Intuitive Invoicing."></meta>
 | 
				
			||||||
 | 
				
			|||||||
@ -441,7 +441,7 @@ ko.bindingHandlers.dropdown = {
 | 
				
			|||||||
       /*
 | 
					       /*
 | 
				
			||||||
        ko.utils.registerEventHandler(element, "change", function () {
 | 
					        ko.utils.registerEventHandler(element, "change", function () {
 | 
				
			||||||
          console.log("change: %s", $(element).val());          
 | 
					          console.log("change: %s", $(element).val());          
 | 
				
			||||||
          var  
 | 
					          //var  
 | 
				
			||||||
          valueAccessor($(element).val());
 | 
					          valueAccessor($(element).val());
 | 
				
			||||||
            //$(element).combobox('refresh');
 | 
					            //$(element).combobox('refresh');
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
@ -1290,11 +1290,12 @@ function displayClient(doc, invoice, x, y, layout) {
 | 
				
			|||||||
  if (!client) {
 | 
					  if (!client) {
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  console.log('=== country: ' + (client.country ? client.country.name : false));
 | 
				
			||||||
  var data = [
 | 
					  var data = [
 | 
				
			||||||
    getClientDisplayName(client),
 | 
					    getClientDisplayName(client),
 | 
				
			||||||
    concatStrings(client.address1, client.address2),
 | 
					    concatStrings(client.address1, client.address2),
 | 
				
			||||||
    concatStrings(client.city, client.state, client.postal_code),
 | 
					    concatStrings(client.city, client.state, client.postal_code),
 | 
				
			||||||
 | 
					    client.country ? client.country.name : false,
 | 
				
			||||||
    client.contacts[0].email
 | 
					    client.contacts[0].email
 | 
				
			||||||
  ];
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1335,21 +1336,23 @@ function displaySubtotals(doc, layout, invoice, y, rightAlignTitleX)
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function concatStrings() {
 | 
					function concatStrings() {
 | 
				
			||||||
  var hasValue = false;
 | 
					 | 
				
			||||||
  var concatStr = '';
 | 
					  var concatStr = '';
 | 
				
			||||||
 | 
					  var data = [];
 | 
				
			||||||
  for (var i=0; i<arguments.length; i++) {
 | 
					  for (var i=0; i<arguments.length; i++) {
 | 
				
			||||||
    var string = arguments[i];
 | 
					    var string = arguments[i];
 | 
				
			||||||
    if (string) {
 | 
					    if (string) {
 | 
				
			||||||
      hasValue = true;
 | 
					      data.push(string);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    concatStr += string;
 | 
					  }
 | 
				
			||||||
    if (i == 0) {
 | 
					  for (var i=0; i<data.length; i++) {
 | 
				
			||||||
 | 
					    concatStr += data[i];
 | 
				
			||||||
 | 
					    if (i == 0 && data.length > 1) {
 | 
				
			||||||
      concatStr += ', ';
 | 
					      concatStr += ', ';
 | 
				
			||||||
    } else if (i < arguments.length -1) {
 | 
					    } else if (i < data.length -1) {
 | 
				
			||||||
      concatStr += ' ';
 | 
					      concatStr += ' ';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return hasValue ? concatStr : false;
 | 
					  return data.length ? concatStr : false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function displayGrid(doc, invoice, data, x, y, layout, hasheader, rightAlignX, rightAlignTitleX)  {
 | 
					function displayGrid(doc, invoice, data, x, y, layout, hasheader, rightAlignX, rightAlignTitleX)  {
 | 
				
			||||||
 | 
				
			|||||||
@ -2,7 +2,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
$I = new WebGuy($scenario);
 | 
					$I = new WebGuy($scenario);
 | 
				
			||||||
$I->wantTo('click invoice now');
 | 
					$I->wantTo('click invoice now');
 | 
				
			||||||
$I->amOnPage('/rocksteady'); 
 | 
					$I->amOnPage('/'); 
 | 
				
			||||||
$I->click('#startButton');
 | 
					$I->click('#startButton');
 | 
				
			||||||
$I->seeInDatabase('users', ['id' => 1]);
 | 
					$I->seeInDatabase('users', ['id' => 1]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,7 @@ $I->wantTo('Test Form:New Client. /clients/create');
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$I->amOnPage('/rocksteady'); 
 | 
					$I->amOnPage('/'); 
 | 
				
			||||||
$I->click('#startButton');
 | 
					$I->click('#startButton');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user