diff --git a/controllers/shipments_controller.php b/controllers/shipments_controller.php index ddf2fed3..24863dcc 100644 --- a/controllers/shipments_controller.php +++ b/controllers/shipments_controller.php @@ -34,12 +34,40 @@ class ShipmentsController extends AppController { $this->set('shipment', $this->Shipment->read(null, $id)); } + + function add() { + $principles = $this->Shipment->Principle->find('list'); + $freightForwarders = $this->Shipment->FreightForwarder->find('list'); + $shipmentType = $this->typeOptions(false); + $shipmentTypeShort = $this->typeOptions(true); + $this->set(compact('principles', 'freightForwarders', 'shipmentType', 'shipmentTypeShort')); + + } + + function edit($id = null) { + + if(isset($id)) { + if (empty($this->data)) { + $this->data = $this->Shipment->read(null, $id); + $principles = $this->Shipment->Principle->find('list'); + $freightForwarders = $this->Shipment->FreightForwarder->find('list'); + $shipmentType = $this->typeOptions(false); + $shipmentTypeShort = $this->typeOptions(true); + $this->set(compact('principles', 'freightForwarders', 'shipmentType', 'shipmentTypeShort')); + + + } + } + + } + + function ajax_edit() { $this->layout = 'ajax'; if(!empty($this->data)) { - $this->Shipment->create(); + //$this->Shipment->create($this->data); - if ($this->Shipment->save($this->data)) { + if ($this->Shipment->saveAll($this->data)) { echo "SUCCESS"; } else { @@ -56,19 +84,24 @@ class ShipmentsController extends AppController { function ajax_add() { - $this->layout = 'ajax'; + $this->layout = 'ajax'; + if(!empty($this->data)) { + $this->Shipment->create($this->data); + + if ($this->Shipment->saveAll($this->data)) { + echo "SUCCESS"; + } + else { + echo "FAILURE"; + } - $this->Shipment->create(); - - if ($this->Shipment->save($this->data)) { - echo "SUCCESS"; } else { - echo "FAILURE"; + echo "NO-DATA"; } + } - /* Moved the Views for Adding/Editing to elements. Called from the Index. diff --git a/models/shipment_invoice.php b/models/shipment_invoice.php index e7ed1044..522e47f1 100644 --- a/models/shipment_invoice.php +++ b/models/shipment_invoice.php @@ -2,13 +2,13 @@ class ShipmentInvoice extends AppModel { var $name = 'ShipmentInvoice'; - var $validate = array( + /*var $validate = array( 'shipment_id' => array('numeric'), 'principle_id' => array('numeric'), 'currency_id' => array('numeric'), 'invoice_number' => array('notempty'), 'approved' => array('numeric') - ); + );*/ //The Associations below have been created with all possible keys, those that are not needed can be removed var $belongsTo = array( diff --git a/views/elements/add_shipment.ctp b/views/elements/add_shipment.ctp index ad189026..8119a9d4 100644 --- a/views/elements/add_shipment.ctp +++ b/views/elements/add_shipment.ctp @@ -1,8 +1,10 @@ + + create('Shipment', array('default'=>false));?> input('user_id', array('type'=>'hidden', 'value'=>$currentuser['User']['id'])); echo $form->input('type', array('options'=>$shipmentType, 'id'=>'shipmentType')); - +echo $form->input('id', array('type'=>'hidden')); ?>
input('type', array('options'=>$shipmentType, 'id'=>'shipmentType')) end();?> -
input('Box.0.length', array('label'=>'Length (cm)', 'div'=>'length'));?> input('Box.0.width', array('label'=>'Width (cm)', 'div'=>'width'));?> diff --git a/views/shipments/add.ctp b/views/shipments/add.ctp index 9fb91677..bc083c54 100644 --- a/views/shipments/add.ctp +++ b/views/shipments/add.ctp @@ -1,36 +1,2 @@ -link('shipment_add');?> - - -create('Shipment');?> - input('shipmentType', array('options'=>$shipmentType, 'id'=>'shipmentType')); - - ?> -
- input('date_arrived_display', array('label'=>'Date Arrived', 'id'=>'date_arrived_display')); - echo $form->input('date_arrived', array('type'=>'hidden', 'id'=>'date_arrived')); - - ?> -
- -
- input('Principle', array('type'=>'select', 'multiple'=>true)); ?> - -
- - input('PurchaseOrder'); - echo $form->input('Job'); - - - - echo $form->input('freight_forwarder_id'); - echo $form->input('airway_bill'); - - echo $form->input('date_dispatched'); - - echo $form->input('comments'); - - ?> -end();?> +link('add_edit_shipment');?> + element('add_shipment');?> \ No newline at end of file diff --git a/views/shipments/edit.ctp b/views/shipments/edit.ctp index f1845f62..0b934a65 100644 --- a/views/shipments/edit.ctp +++ b/views/shipments/edit.ctp @@ -1,37 +1,129 @@ -
-create('Shipment');?> -
- - input('id'); - echo $form->input('box_count'); - echo $form->input('freight_forwarder_id'); - echo $form->input('date_arrived'); - echo $form->input('date_dispatched'); - echo $form->input('airway_bill'); - echo $form->input('comments'); - echo $form->input('Job'); - echo $form->input('Principle'); - echo $form->input('PurchaseOrder'); - ?> -
-end('Submit');?> +link('add_edit_shipment');?> + +create('Shipment', array('default'=>false));?> +input('user_id', array('type'=>'hidden', 'value'=>$currentuser['User']['id'])); +echo $form->input('type', array('options'=>$shipmentType, 'id'=>'shipmentType')); +echo $form->input('id', array('type'=>'hidden')); +?> +
+ input('date_arrived_display', array('label'=>'Date Arrived', 'id'=>'date_arrived_display', 'value'=>$this->element('isEmptyDate', array('date'=>$this->data['Shipment']['date_arrived'])))); + echo $form->input('date_arrived', array('type'=>'hidden', 'id'=>'date_arrived')); + ?> + + +
-
-
    -
  • link(__('Delete', true), array('action' => 'delete', $form->value('Shipment.id')), null, sprintf(__('Are you sure you want to delete # %s?', true), $form->value('Shipment.id'))); ?>
  • -
  • link(__('List Shipments', true), array('action' => 'index'));?>
  • -
  • link(__('List Freight Forwarders', true), array('controller' => 'freight_forwarders', 'action' => 'index')); ?>
  • -
  • link(__('New Freight Forwarder', true), array('controller' => 'freight_forwarders', 'action' => 'add')); ?>
  • -
  • link(__('List Boxes', true), array('controller' => 'boxes', 'action' => 'index')); ?>
  • -
  • link(__('New Box', true), array('controller' => 'boxes', 'action' => 'add')); ?>
  • -
  • link(__('List Shipment Invoices', true), array('controller' => 'shipment_invoices', 'action' => 'index')); ?>
  • -
  • link(__('New Shipment Invoice', true), array('controller' => 'shipment_invoices', 'action' => 'add')); ?>
  • -
  • link(__('List Jobs', true), array('controller' => 'jobs', 'action' => 'index')); ?>
  • -
  • link(__('New Job', true), array('controller' => 'jobs', 'action' => 'add')); ?>
  • -
  • link(__('List Principles', true), array('controller' => 'principles', 'action' => 'index')); ?>
  • -
  • link(__('New Principle', true), array('controller' => 'principles', 'action' => 'add')); ?>
  • -
  • link(__('List Purchase Orders', true), array('controller' => 'purchase_orders', 'action' => 'index')); ?>
  • -
  • link(__('New Purchase Order', true), array('controller' => 'purchase_orders', 'action' => 'add')); ?>
  • -
+ +
+ input('date_dispatched_display', array('label'=>'Date Dispatched', 'id'=>'date_dispatched_display', 'value'=>$this->element('isEmptyDate', array('date'=>$this->data['Shipment']['date_dispatched'])))); + + echo $form->input('date_dispatched', array('type'=>'hidden', 'id'=>'date_dispatched')); + ?>
+ + +
+ input('Principle', array('name'=>'PrincipleSelect', 'type'=>'select', 'multiple'=>false)); ?> + +
    + data['Principle'] as $principle):?> +
  • + + + +
  • + +
+ +
+ +
+ input('purchase_order', array('id'=>'purchase_order_autocomplete'));?> + +
    + data['PurchaseOrder'] as $po):?> +
  • + + + +
  • + +
+
+ +
+ input('job', array('id'=>'job_autocomplete')); + ?> + + +
    + data['Job'] as $job):?> +
  • + + + +
  • + +
+ +
+ +
+ input('customer', array('id'=>'customer_autocomplete', 'label'=>'Customer'));?> + input('customer_id', array('type'=>'hidden', 'id'=>'customer_id'));?> +
+ +
+ Shipping Address: +
+
+ +
+ + +
+ input('freight_forwarder_id');?> +
+ +
+ input('airway_bill');?> +
+ +
+ + + + data['Box'] as $box):?> +
+ + input("Box.{$boxNo}.length", array('label'=>'Length (cm)', 'div'=>'length'));?> + input("Box.{$boxNo}.width", array('label'=>'Width (cm)', 'div'=>'width'));?> + input("Box.{$boxNo}.height", array('label'=>'Height (cm)', 'div'=>'height'));?> + input("Box.{$boxNo}.weight", array('label'=>'Weight (kg)', 'div'=>'weight'));?> +
+ +
+ +
+ input('comments');?> + +
+ + +end();?> + +
+ input('length', array('label'=>'Length (cm)', 'div'=>'length'));?> + input('width', array('label'=>'Width (cm)', 'div'=>'width'));?> + input('height', array('label'=>'Height (cm)', 'div'=>'height'));?> + input('weight', array('label'=>'Weight (kg)', 'div'=>'weight'));?> +
+ +data); ?> \ No newline at end of file diff --git a/views/shipments/index.ctp b/views/shipments/index.ctp index f7fd97ef..fa3aa635 100644 --- a/views/shipments/index.ctp +++ b/views/shipments/index.ctp @@ -134,7 +134,7 @@ - + @@ -152,8 +152,12 @@
-
- element('add_shipment');?> +
+
+ +
+ + \ No newline at end of file diff --git a/webroot/js/add_edit_shipment.js b/webroot/js/add_edit_shipment.js new file mode 100644 index 00000000..53259169 --- /dev/null +++ b/webroot/js/add_edit_shipment.js @@ -0,0 +1,289 @@ +$(function() { + + var addedBoxes = $(".boxForm").length; + + $('button').button(); + displayReleventFields(); + + $('#date_arrived_display').datepicker({ + showButtonPanel: true, + dateFormat: 'd M yy', + altFormat: 'yy-mm-dd', + altField: '#date_arrived' + }); + + + $('#date_dispatched_display').datepicker({ + showButtonPanel: true, + dateFormat: 'd M yy', + altFormat: 'yy-mm-dd', + altField: '#date_dispatched' + }); + + /** + * Display the relevent elements depending on this Shipment Type */ + $("#shipmentType").change(function() { + displayReleventFields(); + + }); + + //Remove X button clicked. + $('.removeFromList').live('click', function() { + $(this).parent().remove(); + }); + + + + $('#addPrinciple').button().click(function() { + + var principleID = getSelectedID('#PrinciplePrinciple'); + + if($('#PrincipleID_'+principleID).length > 0) { //This Principle is already in the List. Don't do anything.' + return false; + } + + var principleName =getSelectedText('#PrinciplePrinciple'); + + //addPrincipleToList(principleID); + addToList('Principle', principleID, principleName, $('#principlesList') ); + + return false; + + }); + + + $( "#purchase_order_autocomplete" ).autocomplete({ + source: "/purchase_orders/autocomplete", + minLength: 2, + select: function( event, ui ) { + //alert(ui.item.value + ":" + ui.item.id); + //alert($('#PurchaseOrderID_'+ui.item.id).length); + + + if($('#PurchaseOrderID_'+ui.item.id).length == 0) { //This PO is already in the List. Don't do anything.' + addToList('PurchaseOrder', ui.item.id, ui.item.value, $('#purchaseOrdersList')); + } + + + } + }); + + $( "#job_autocomplete" ).autocomplete({ + source: "/jobs/autocomplete", + minLength: 2, + select: function( event, ui ) { + //alert(ui.item.value + ":" + ui.item.id); + + if($('#JobID_'+ui.item.id).length == 0) { //This Job is already in the List. Don't do anything.' + addToList('Job', ui.item.id, ui.item.value, $('#jobsList')); + } + } + }); + + + $("#customer_autocomplete").autocomplete({ + source: "/customers/completeCustomer", + minLength: 2, + select: function( event, ui ) { + $("#customer_id").val(ui.item.id); + + $.get('/addresses/customerAddresses/'+ui.item.id, function(data) { + $("#address").html(data); + $(".selectAddress", data).button(); + }); + + } + }) + + + $("#addBox").button().click(function() { + addBox(addedBoxes); + addedBoxes++; + }); + + $(".removeBox").live('click',function() { + $(this).parent().remove(); + }); + + + $(".selectAddress").live('click', function() { + var ID = $(this).attr('id'); + $("#address_id").val(ID); + + + + + $(this).removeClass('selectAddress'); + $(this).addClass('changeAddress'); + + $(".selectAddress").button('disable'); + $(".selectAddress").parent('div').fadeOut(); + + $(this).button({ + label: 'Select a different address' + }); + $(this).button('enable'); + + }); + + $(".changeAddress").live('click', function() { + $("#address_id").val(''); + $(this).removeClass('changeAddress'); + $(this).button({ + label: 'Ship to this Address' + }); + $(this).addClass('selectAddress'); + + $(".selectAddress").parent('div').fadeIn(); + + $('.selectAddress').button('enable'); + }); + + + function displayReleventFields() { + var shipmentTypeID = getSelectedID('#shipmentType'); + shipmentTypeID = parseInt(shipmentTypeID); + $(".hiddenDefault").hide(); + + switch(shipmentTypeID) { + case 1: //Import + $("#importFields, #principle, #purchaseOrder, #freight_forwarder, #airway_bill, #boxes").show(); + break; + + case 2: //Direct + $("#purchaseOrder, #job,#principle, #dateDispatched, #customer, #address, #addressSpan, #freight_forwarder, #airway_bill, #boxes").show(); + break; + case 3: //Export + $("#job, #dateDispatched, #customer, #address, #addressSpan, #freight_forwarder, #airway_bill, #boxes").show(); + break; + case 4: //Local + $("#job, #dateDispatched, #customer, #address, #addressSpan, #freight_forwarder, #airway_bill, #boxes").show(); + + break; + + default: + + + break; + } + } + + function addBox(addedBoxes) { + + var model = 'Box'; + + var newBoxForm = $("#boxFactory").clone(); + + var boxNo = addedBoxes; + + newBoxForm.attr('id',''); + newBoxForm.addClass('boxForm'); + newBoxForm.show(); + + //Set the appropriate naming for the fields so cake can work its magic. + //Should refactor into a function. + var div = newBoxForm.find('.length'); + var ID = getCakeID(model,boxNo,'length'); + var name = getCakeName(model, boxNo, 'length'); + div.children('label').attr('for', ID); + div.children('input').attr('id', ID).attr('name', name); + + div = newBoxForm.find('.width'); + ID = getCakeID(model,boxNo,'width'); + name = getCakeName(model, boxNo, 'width'); + div.children('label').attr('for', ID); + div.children('input').attr('id', ID).attr('name', name); + + div = newBoxForm.find('.height'); + ID = getCakeID(model,boxNo,'height'); + name = getCakeName(model, boxNo, 'height'); + div.children('label').attr('for', ID); + div.children('input').attr('id', ID).attr('name', name); + + div = newBoxForm.find('.weight'); + ID = getCakeID(model,boxNo,'weight'); + name = getCakeName(model, boxNo, 'weight'); + div.children('label').attr('for', ID); + div.children('input').attr('id', ID).attr('name', name); + + + + + + var closeButton = $(''); + closeButton.addClass('removeBox'); + closeButton.button(); + + newBoxForm.prepend(closeButton); + + $("#boxes").append(newBoxForm); + } + + + function getCakeID(model, count, field) { + return model+count+capitalizeFirstLetter(field); + } + + function getCakeName(model, count, field) { + return 'data['+model+']['+count+']['+field+']'; + } + + function capitalizeFirstLetter(string) { + return string.charAt(0).toUpperCase() + string.slice(1); + } + + + /** + * A more generic way of handling the HABTM
  • [REMOVE BUTTON] NAME [HIDDEN INPUT]
+ */ + function addToList(modelName, id, value, ULelement) { + var thisLI = $('
  • '); + var thisButton = $(''); + thisButton.addClass('removeFromList'); + thisButton.button(); + + var thisHiddenInput = $(''); + + var modelString = '['+modelName+']'; + + thisHiddenInput.attr('name', 'data'+modelString+modelString+'[]'); + + thisHiddenInput.attr('value', id); + + thisLI.attr('id', modelName+'ID_'+id); + thisLI.html(value); + thisLI.prepend(thisButton); + thisLI.append(thisHiddenInput); + ULelement.append(thisLI); + + } + + + function getSelectedID(elementID) { + var id; + $(elementID+" :selected").each(function(i, selected) { + id = this.value; + }); + return id; + } + + function getSelectedText(elementID) { + var text; + $(elementID+" :selected").each(function(i, selected) { + text = $(selected).text(); + }); + return text; + } + + /** + * Resets the Form to its default site + */ + + function resetForm() { + + $(".hiddenDefault").hide(); + //$("#ShipmentAddForm")[0].reset(); + } + + +}); diff --git a/webroot/js/shipment_index.js b/webroot/js/shipment_index.js index be593874..c0dce791 100644 --- a/webroot/js/shipment_index.js +++ b/webroot/js/shipment_index.js @@ -1,10 +1,9 @@ $(function() { - resetForm(); + + - var addedBoxes = 0; - - $( "#dialog-form" ).dialog({ + $( "#add-form" ).dialog({ autoOpen: false, height: 900, width: 600, @@ -14,14 +13,14 @@ $(function() { var thisShipmentInputs = $('#ShipmentAddForm').find('input,select,textarea'); $.post('/shipments/ajax_add', thisShipmentInputs, function(data) { - $( "#dialog-form" ).dialog('close'); - //window.location.reload(); //Change this to fetch a new copy of the table and update a
    . + $( "#add-form" ).dialog('close'); + window.location.reload(); //Change this to fetch a new copy of the table and update a
    . }); }, Cancel: function() { $( this ).dialog( "close" ); - $("#ShipmentAddForm")[0].reset(); + //$("#ShipmentAddForm")[0].reset(); $("#principlesList").empty(); } }, @@ -34,289 +33,66 @@ $(function() { } }); - $( ".newShipment" ).button().click(function() { - $( "#dialog-form" ).dialog( "open" ); + $( "#edit-form" ).dialog({ + autoOpen: false, + height: 900, + width: 600, + modal: true, + buttons: { + "Save Shipment": function() { + var thisShipmentInputs = $('#ShipmentEditForm').find('input,select,textarea'); - }); + $.post('/shipments/ajax_edit', thisShipmentInputs, function(data) { + $( "#edit-form" ).dialog('close'); + window.location.reload(); //Change this to fetch a new copy of the table and update a
    . + }); + + }, + Cancel: function() { + $( this ).dialog( "close" ); + //$("#ShipmentEditForm")[0].reset(); + $("#principlesList").empty(); + } + }, + close: function() { + + $("#importFields").hide(); + $("#principle").hide(); - - $('#date_arrived_display').datepicker({ - showButtonPanel: true, - dateFormat: 'd M yy', - altFormat: 'yy-mm-dd', - altField: '#date_arrived' - }); - - - $('#date_dispatched_display').datepicker({ - showButtonPanel: true, - dateFormat: 'd M yy', - altFormat: 'yy-mm-dd', - altField: '#date_dispatched' - }); - - /** - * Display the relevent elements depending on this Shipment Type */ - $("#shipmentType").change(function() { - var shipmentTypeID = getSelectedID('#shipmentType'); - shipmentTypeID = parseInt(shipmentTypeID); - $(".hiddenDefault").hide(); - - switch(shipmentTypeID) { - case 1: //Import - $("#importFields, #principle, #purchaseOrder, #freight_forwarder, #airway_bill, #boxes").show(); - break; - - case 2: //Direct - $("#purchaseOrder, #job,#principle, #dateDispatched, #customer, #address, #addressSpan, #freight_forwarder, #airway_bill, #boxes").show(); - break; - case 3: //Export - $("#job, #dateDispatched, #customer, #address, #addressSpan, #freight_forwarder, #airway_bill, #boxes").show(); - break; - case 4: //Local - $("#job, #dateDispatched, #customer, #address, #addressSpan, #freight_forwarder, #airway_bill, #boxes").show(); - - break; - - default: - - - break; } + }); + + + $( ".newShipment" ).button().click(function() { + $.get('/shipments/add/', false, function(data) { + + $("#add-form").html(data); + } ); + + $( "#add-form" ).dialog( "open" ); }); - //Remove X button clicked. - $('.removeFromList').live('click', function() { - $(this).parent().remove(); + + $(".editButton").button().click(function() { + + var id = $(this).attr('id'); + + $.get('/shipments/edit/'+id, false, function(data) { + + $("#edit-form").html(data); + } ); + + $( "#edit-form" ).dialog( "open" ); }); + + + + - - $('#addPrinciple').button().click(function() { - - var principleID = getSelectedID('#PrinciplePrinciple'); - - if($('#PrincipleID_'+principleID).length > 0) { //This Principle is already in the List. Don't do anything.' - return false; - } - - var principleName =getSelectedText('#PrinciplePrinciple'); - - //addPrincipleToList(principleID); - addToList('Principle', principleID, principleName, $('#principlesList') ); - - return false; - - }); - - - $( "#purchase_order_autocomplete" ).autocomplete({ - source: "/purchase_orders/autocomplete", - minLength: 2, - select: function( event, ui ) { - //alert(ui.item.value + ":" + ui.item.id); - //alert($('#PurchaseOrderID_'+ui.item.id).length); - - - if($('#PurchaseOrderID_'+ui.item.id).length == 0) { //This PO is already in the List. Don't do anything.' - addToList('PurchaseOrder', ui.item.id, ui.item.value, $('#purchaseOrdersList')); - } - - - } - }); - - $( "#job_autocomplete" ).autocomplete({ - source: "/jobs/autocomplete", - minLength: 2, - select: function( event, ui ) { - //alert(ui.item.value + ":" + ui.item.id); - - if($('#JobID_'+ui.item.id).length == 0) { //This Job is already in the List. Don't do anything.' - addToList('Job', ui.item.id, ui.item.value, $('#jobsList')); - } - } - }); - - - $("#customer_autocomplete").autocomplete({ - source: "/customers/completeCustomer", - minLength: 2, - select: function( event, ui ) { - $("#customer_id").val(ui.item.id); - - $.get('/addresses/customerAddresses/'+ui.item.id, function(data) { - $("#address").html(data); - $(".selectAddress", data).button(); - }); - - } - }) - - - $("#addBox").button().click(function() { - addBox(addedBoxes); - addedBoxes++; - }); - - $(".removeBox").live('click',function() { - $(this).parent().remove(); - }); - - - $(".selectAddress").live('click', function() { - var ID = $(this).attr('id'); - $("#address_id").val(ID); - - - - - $(this).removeClass('selectAddress'); - $(this).addClass('changeAddress'); - - $(".selectAddress").button('disable'); - $(".selectAddress").parent('div').fadeOut(); - - $(this).button({ - label: 'Select a different address' - }); - $(this).button('enable'); - - }); - - $(".changeAddress").live('click', function() { - $("#address_id").val(''); - $(this).removeClass('changeAddress'); - $(this).button({ - label: 'Ship to this Address' - }); - $(this).addClass('selectAddress'); - - $(".selectAddress").parent('div').fadeIn(); - - $('.selectAddress').button('enable'); - }); - - /** - * Resets the Form to its default site - */ - - function resetForm() { - - $(".hiddenDefault").hide(); - $("#ShipmentAddForm")[0].reset(); - } - - - function addBox(addedBoxes) { - - var model = 'Box'; - - var newBoxForm = $("#boxFactory").clone(); - - var boxNo = addedBoxes; - - newBoxForm.attr('id',''); - newBoxForm.addClass('boxForm'); - newBoxForm.show(); - - //Set the appropriate naming for the fields so cake can work its magic. - //Should refactor into a function. - var div = newBoxForm.find('.length'); - var ID = getCakeID(model,boxNo,'length'); - var name = getCakeName(model, boxNo, 'length'); - div.children('label').attr('for', ID); - div.children('input').attr('id', ID).attr('name', name); - - div = newBoxForm.find('.width'); - ID = getCakeID(model,boxNo,'width'); - name = getCakeName(model, boxNo, 'width'); - div.children('label').attr('for', ID); - div.children('input').attr('id', ID).attr('name', name); - - div = newBoxForm.find('.height'); - ID = getCakeID(model,boxNo,'height'); - name = getCakeName(model, boxNo, 'height'); - div.children('label').attr('for', ID); - div.children('input').attr('id', ID).attr('name', name); - - div = newBoxForm.find('.weight'); - ID = getCakeID(model,boxNo,'weight'); - name = getCakeName(model, boxNo, 'weight'); - div.children('label').attr('for', ID); - div.children('input').attr('id', ID).attr('name', name); - - - - - - var closeButton = $(''); - closeButton.addClass('removeBox'); - closeButton.button(); - - newBoxForm.prepend(closeButton); - - $("#boxes").append(newBoxForm); - } - - - function getCakeID(model, count, field) { - return model+count+capitalizeFirstLetter(field); - } - - function getCakeName(model, count, field) { - return 'data['+model+']['+count+']['+field+']'; - } - - function capitalizeFirstLetter(string) { - return string.charAt(0).toUpperCase() + string.slice(1); - } - - - /** - * A more generic way of handling the HABTM
    • [REMOVE BUTTON] NAME [HIDDEN INPUT]
    - */ - function addToList(modelName, id, value, ULelement) { - var thisLI = $('
  • '); - var thisButton = $(''); - thisButton.addClass('removeFromList'); - thisButton.button(); - - var thisHiddenInput = $(''); - - var modelString = '['+modelName+']'; - - thisHiddenInput.attr('name', 'data'+modelString+modelString+'[]'); - - thisHiddenInput.attr('value', id); - - thisLI.attr('id', modelName+'ID_'+id); - thisLI.html(value); - thisLI.prepend(thisButton); - thisLI.append(thisHiddenInput); - ULelement.append(thisLI); - - } - - - function getSelectedID(elementID) { - var id; - $(elementID+" :selected").each(function(i, selected) { - id = this.value; - }); - return id; - } - - function getSelectedText(elementID) { - var text; - $(elementID+" :selected").each(function(i, selected) { - text = $(selected).text(); - }); - return text; - }