2015-03-16 22:45:25 +01:00
|
|
|
@extends('header')
|
|
|
|
|
|
|
|
|
|
|
|
@section('onReady')
|
|
|
|
$('input#name').focus();
|
|
|
|
@stop
|
|
|
|
|
|
|
|
@section('content')
|
2015-10-28 20:22:07 +01:00
|
|
|
|
|
|
|
@if ($errors->first('contacts'))
|
|
|
|
<div class="alert alert-danger">{{ trans($errors->first('contacts')) }}</div>
|
|
|
|
@endif
|
|
|
|
|
2015-03-16 22:45:25 +01:00
|
|
|
<div class="row">
|
|
|
|
|
2015-07-07 22:08:16 +02:00
|
|
|
{!! Former::open($url)
|
|
|
|
->rules(
|
|
|
|
['email' => 'email']
|
|
|
|
)->addClass('col-md-12 warn-on-exit')
|
|
|
|
->method($method) !!}
|
2015-03-16 22:45:25 +01:00
|
|
|
|
|
|
|
@if ($client)
|
2015-03-26 07:24:02 +01:00
|
|
|
{!! Former::populate($client) !!}
|
2015-10-28 20:22:07 +01:00
|
|
|
{!! Former::hidden('public_id') !!}
|
2015-03-16 22:45:25 +01:00
|
|
|
@endif
|
|
|
|
|
|
|
|
<div class="row">
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
|
|
|
|
2015-04-20 16:34:23 +02:00
|
|
|
<div class="panel panel-default">
|
|
|
|
<div class="panel-heading">
|
|
|
|
<h3 class="panel-title">{!! trans('texts.organization') !!}</h3>
|
|
|
|
</div>
|
|
|
|
<div class="panel-body">
|
|
|
|
|
2015-03-26 07:24:02 +01:00
|
|
|
{!! Former::text('name')->data_bind("attr { placeholder: placeholderName }") !!}
|
|
|
|
{!! Former::text('id_number') !!}
|
|
|
|
{!! Former::text('vat_number') !!}
|
|
|
|
{!! Former::text('website') !!}
|
|
|
|
{!! Former::text('work_phone') !!}
|
2015-03-16 22:45:25 +01:00
|
|
|
|
2015-10-22 20:48:12 +02:00
|
|
|
@if (Auth::user()->isPro())
|
2015-03-16 22:45:25 +01:00
|
|
|
@if ($customLabel1)
|
2015-03-26 07:24:02 +01:00
|
|
|
{!! Former::text('custom_value1')->label($customLabel1) !!}
|
2015-03-16 22:45:25 +01:00
|
|
|
@endif
|
|
|
|
@if ($customLabel2)
|
2015-03-26 07:24:02 +01:00
|
|
|
{!! Former::text('custom_value2')->label($customLabel2) !!}
|
2015-03-16 22:45:25 +01:00
|
|
|
@endif
|
|
|
|
@endif
|
2015-04-20 16:34:23 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="panel panel-default">
|
|
|
|
<div class="panel-heading">
|
|
|
|
<h3 class="panel-title">{!! trans('texts.address') !!}</h3>
|
|
|
|
</div>
|
|
|
|
<div class="panel-body">
|
|
|
|
|
2015-03-26 07:24:02 +01:00
|
|
|
{!! Former::text('address1') !!}
|
|
|
|
{!! Former::text('address2') !!}
|
|
|
|
{!! Former::text('city') !!}
|
|
|
|
{!! Former::text('state') !!}
|
|
|
|
{!! Former::text('postal_code') !!}
|
|
|
|
{!! Former::select('country_id')->addOption('','')
|
|
|
|
->fromQuery($countries, 'name', 'id') !!}
|
2015-03-16 22:45:25 +01:00
|
|
|
|
2015-04-20 16:34:23 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
2015-03-16 22:45:25 +01:00
|
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
2015-04-20 16:34:23 +02:00
|
|
|
|
|
|
|
<div class="panel panel-default">
|
|
|
|
<div class="panel-heading">
|
|
|
|
<h3 class="panel-title">{!! trans('texts.contacts') !!}</h3>
|
|
|
|
</div>
|
|
|
|
<div class="panel-body">
|
|
|
|
|
2015-03-16 22:45:25 +01:00
|
|
|
<div data-bind='template: { foreach: contacts,
|
|
|
|
beforeRemove: hideContact,
|
|
|
|
afterAdd: showContact }'>
|
2015-10-28 20:22:07 +01:00
|
|
|
{!! Former::hidden('public_id')->data_bind("value: public_id, valueUpdate: 'afterkeydown',
|
|
|
|
attr: {name: 'contacts[' + \$index() + '][public_id]'}") !!}
|
|
|
|
{!! Former::text('first_name')->data_bind("value: first_name, valueUpdate: 'afterkeydown',
|
|
|
|
attr: {name: 'contacts[' + \$index() + '][first_name]'}") !!}
|
|
|
|
{!! Former::text('last_name')->data_bind("value: last_name, valueUpdate: 'afterkeydown',
|
|
|
|
attr: {name: 'contacts[' + \$index() + '][last_name]'}") !!}
|
|
|
|
{!! Former::text('email')->data_bind("value: email, valueUpdate: 'afterkeydown',
|
|
|
|
attr: {name: 'contacts[' + \$index() + '][email]', id:'email'+\$index()}") !!}
|
|
|
|
{!! Former::text('phone')->data_bind("value: phone, valueUpdate: 'afterkeydown',
|
|
|
|
attr: {name: 'contacts[' + \$index() + '][phone]'}") !!}
|
2015-03-16 22:45:25 +01:00
|
|
|
|
|
|
|
<div class="form-group">
|
|
|
|
<div class="col-lg-8 col-lg-offset-4 bold">
|
|
|
|
<span class="redlink bold" data-bind="visible: $parent.contacts().length > 1">
|
2015-03-26 07:24:02 +01:00
|
|
|
{!! link_to('#', trans('texts.remove_contact').' -', array('data-bind'=>'click: $parent.removeContact')) !!}
|
2015-03-16 22:45:25 +01:00
|
|
|
</span>
|
|
|
|
<span data-bind="visible: $index() === ($parent.contacts().length - 1)" class="pull-right greenlink bold">
|
2015-03-26 07:24:02 +01:00
|
|
|
{!! link_to('#', trans('texts.add_contact').' +', array('onclick'=>'return addContact()')) !!}
|
2015-03-16 22:45:25 +01:00
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2015-04-20 16:34:23 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2015-03-16 22:45:25 +01:00
|
|
|
|
2015-04-20 16:34:23 +02:00
|
|
|
<div class="panel panel-default">
|
|
|
|
<div class="panel-heading">
|
|
|
|
<h3 class="panel-title">{!! trans('texts.additional_info') !!}</h3>
|
|
|
|
</div>
|
|
|
|
<div class="panel-body">
|
|
|
|
|
|
|
|
{!! Former::select('currency_id')->addOption('','')
|
2015-09-10 19:50:09 +02:00
|
|
|
->placeholder($account->currency ? $account->currency->name : '')
|
2015-04-20 16:34:23 +02:00
|
|
|
->fromQuery($currencies, 'name', 'id') !!}
|
2015-09-10 19:50:09 +02:00
|
|
|
{!! Former::select('language_id')->addOption('','')
|
|
|
|
->placeholder($account->language ? $account->language->name : '')
|
|
|
|
->fromQuery($languages, 'name', 'id') !!}
|
2015-03-26 07:24:02 +01:00
|
|
|
{!! Former::select('payment_terms')->addOption('','')
|
2015-07-07 22:08:16 +02:00
|
|
|
->fromQuery($paymentTerms, 'name', 'num_days')
|
|
|
|
->help(trans('texts.payment_terms_help')) !!}
|
2015-03-26 07:24:02 +01:00
|
|
|
{!! Former::select('size_id')->addOption('','')
|
|
|
|
->fromQuery($sizes, 'name', 'id') !!}
|
|
|
|
{!! Former::select('industry_id')->addOption('','')
|
|
|
|
->fromQuery($industries, 'name', 'id') !!}
|
|
|
|
{!! Former::textarea('private_notes') !!}
|
2015-10-22 20:48:12 +02:00
|
|
|
|
2015-04-20 16:34:23 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
2015-03-16 22:45:25 +01:00
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
2015-03-26 07:24:02 +01:00
|
|
|
{!! Former::hidden('data')->data_bind("value: ko.toJSON(model)") !!}
|
2015-03-16 22:45:25 +01:00
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
|
|
|
|
|
$(function() {
|
|
|
|
$('#country_id').combobox();
|
|
|
|
});
|
|
|
|
|
|
|
|
function ContactModel(data) {
|
|
|
|
var self = this;
|
|
|
|
self.public_id = ko.observable('');
|
|
|
|
self.first_name = ko.observable('');
|
|
|
|
self.last_name = ko.observable('');
|
|
|
|
self.email = ko.observable('');
|
|
|
|
self.phone = ko.observable('');
|
|
|
|
|
|
|
|
if (data) {
|
2015-10-28 20:22:07 +01:00
|
|
|
ko.mapping.fromJS(data, {}, this);
|
|
|
|
}
|
2015-03-16 22:45:25 +01:00
|
|
|
}
|
|
|
|
|
2015-10-28 20:22:07 +01:00
|
|
|
function ClientModel(data) {
|
2015-03-16 22:45:25 +01:00
|
|
|
var self = this;
|
2015-10-28 20:22:07 +01:00
|
|
|
|
|
|
|
self.contacts = ko.observableArray();
|
2015-03-16 22:45:25 +01:00
|
|
|
|
|
|
|
self.mapping = {
|
|
|
|
'contacts': {
|
|
|
|
create: function(options) {
|
|
|
|
return new ContactModel(options.data);
|
|
|
|
}
|
|
|
|
}
|
2015-10-28 20:22:07 +01:00
|
|
|
}
|
2015-03-16 22:45:25 +01:00
|
|
|
|
|
|
|
if (data) {
|
2015-10-28 20:22:07 +01:00
|
|
|
ko.mapping.fromJS(data, self.mapping, this);
|
2015-03-16 22:45:25 +01:00
|
|
|
} else {
|
|
|
|
self.contacts.push(new ContactModel());
|
|
|
|
}
|
|
|
|
|
|
|
|
self.placeholderName = ko.computed(function() {
|
|
|
|
if (self.contacts().length == 0) return '';
|
|
|
|
var contact = self.contacts()[0];
|
|
|
|
if (contact.first_name() || contact.last_name()) {
|
|
|
|
return contact.first_name() + ' ' + contact.last_name();
|
|
|
|
} else {
|
|
|
|
return contact.email();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2015-10-28 20:22:07 +01:00
|
|
|
@if ($data)
|
|
|
|
window.model = new ClientModel({!! $data !!});
|
|
|
|
@else
|
|
|
|
window.model = new ClientModel({!! $client !!});
|
|
|
|
@endif
|
2015-03-16 22:45:25 +01:00
|
|
|
|
|
|
|
model.showContact = function(elem) { if (elem.nodeType === 1) $(elem).hide().slideDown() }
|
|
|
|
model.hideContact = function(elem) { if (elem.nodeType === 1) $(elem).slideUp(function() { $(elem).remove(); }) }
|
|
|
|
|
|
|
|
|
|
|
|
ko.applyBindings(model);
|
|
|
|
|
|
|
|
function addContact() {
|
|
|
|
model.contacts.push(new ContactModel());
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
model.removeContact = function() {
|
|
|
|
model.contacts.remove(this);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<center class="buttons">
|
2015-05-19 21:14:00 +02:00
|
|
|
{!! Button::normal(trans('texts.cancel'))->large()->asLinkTo(URL::to('/clients/' . ($client ? $client->public_id : '')))->appendIcon(Icon::create('remove-circle')) !!}
|
2015-06-04 22:53:58 +02:00
|
|
|
{!! Button::success(trans('texts.save'))->submit()->large()->appendIcon(Icon::create('floppy-disk')) !!}
|
2015-03-16 22:45:25 +01:00
|
|
|
</center>
|
|
|
|
|
2015-03-26 07:24:02 +01:00
|
|
|
{!! Former::close() !!}
|
2015-03-16 22:45:25 +01:00
|
|
|
</div>
|
|
|
|
@stop
|