Added Service Add, some internal consistency updates
This commit is contained in:
@@ -11,13 +11,148 @@
|
||||
*/
|
||||
class Controller_Admin_Service extends Controller_Service {
|
||||
protected $secure_actions = array(
|
||||
'add'=>TRUE,
|
||||
'ajaxaddplugin'=>TRUE,
|
||||
'edit'=>TRUE,
|
||||
'listdomainservicesbysupplier'=>TRUE,
|
||||
'listdomainservicesbydnshost'=>TRUE,
|
||||
'listhostservicesbysupplier'=>TRUE,
|
||||
'update'=>TRUE,
|
||||
'view'=>TRUE,
|
||||
);
|
||||
|
||||
public function action_add() {
|
||||
if ($this->request->post() AND $so=$this->add_edit() AND $so->loaded())
|
||||
HTTP::redirect(URL::link('admin','service/edit/'.$so->id));
|
||||
|
||||
// @todo This AJAX URL should be a service one
|
||||
Script::factory()
|
||||
->type('stdin')
|
||||
->data('
|
||||
var nowTemp = new Date();
|
||||
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
|
||||
|
||||
$(document).ready(function() {
|
||||
$("select[name=product_id]").change(function() {
|
||||
// If we select a blank, then dont continue
|
||||
if (this.value == 0)
|
||||
return false;
|
||||
|
||||
// Send the request and update sub category dropdown
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
data: "key="+$(this).val(),
|
||||
dataType: "html",
|
||||
cache: false,
|
||||
url: "'.URL::link('admin','service/ajaxaddplugin/',TRUE).'",
|
||||
timeout: 2000,
|
||||
error: function(x) {
|
||||
alert("Failed to submit");
|
||||
},
|
||||
success: function(data) {
|
||||
$("div[id=plugin]").empty().append(data);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$("#date_next_invoice_label").datepicker({
|
||||
autoclose : true,
|
||||
startDate : now,
|
||||
format : "dd-M-yyyy",
|
||||
todayBtn : true,
|
||||
}).on("hide",function(ev) {
|
||||
$("input[name=date_next_invoicel]").val(ev.date.valueOf()/1000);
|
||||
});
|
||||
|
||||
$("input[name=account_id_label]").typeahead({
|
||||
minLength: 2,
|
||||
source: function (query,process) {
|
||||
search("'.URL::link('admin','payment/ajaxlist').'",query,process);
|
||||
},
|
||||
|
||||
matcher: function () { return true; },
|
||||
|
||||
updater: function (item) {
|
||||
$("input[name=account_id]").val(users[item]);
|
||||
|
||||
return item;
|
||||
},
|
||||
});
|
||||
});
|
||||
');
|
||||
|
||||
Script::factory()
|
||||
->type('file')
|
||||
->data('media/theme/bootstrap/vendor/datepicker/js/bootstrap-datepicker.js');
|
||||
|
||||
Style::factory()
|
||||
->type('file')
|
||||
->data('media/theme/bootstrap/vendor/datepicker/css/datepicker.css');
|
||||
|
||||
Block::factory()
|
||||
->type('form-horizontal')
|
||||
->title('Add/View Charge')
|
||||
->title_icon('icon-wrench')
|
||||
->body(View::factory('service/admin/add'));
|
||||
}
|
||||
|
||||
public function action_ajaxaddplugin() {
|
||||
$po = ORM::factory('Product',$this->request->query('key'));
|
||||
|
||||
if (! $po->loaded()) {
|
||||
$output = __('Unable to find product :key',array(':key'=>$this->request->query('key')));
|
||||
|
||||
} else {
|
||||
$output = $po->plugin()->render_order();
|
||||
}
|
||||
|
||||
$this->template->content = $output;
|
||||
}
|
||||
|
||||
public function action_edit() {
|
||||
list($id,$output) = Table::page(__METHOD__);
|
||||
|
||||
$so = $this->request->post() ? $this->add_edit($id) : ORM::factory('Service',$id);
|
||||
|
||||
if (! $so->loaded())
|
||||
HTTP::redirect('welcome/index');
|
||||
|
||||
Script::factory()
|
||||
->type('file')
|
||||
->data('media/theme/bootstrap/vendor/datepicker/js/bootstrap-datepicker.js');
|
||||
|
||||
Style::factory()
|
||||
->type('file')
|
||||
->data('media/theme/bootstrap/vendor/datepicker/css/datepicker.css');
|
||||
|
||||
Script::factory()
|
||||
->type('stdin')
|
||||
->data('
|
||||
var nowTemp = new Date();
|
||||
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
|
||||
|
||||
$(document).ready(function() {
|
||||
$("#date_next_invoice_label").datepicker({
|
||||
autoclose : true,
|
||||
startDate : now,
|
||||
format : "dd-M-yyyy",
|
||||
todayBtn : true,
|
||||
}).on("hide",function(ev) {
|
||||
$("input[name=date_next_invoicel]").val(ev.date.valueOf()/1000);
|
||||
});
|
||||
});
|
||||
');
|
||||
|
||||
Block::factory()
|
||||
->type('form-horizontal')
|
||||
->title(sprintf('%s: %s %s',_('Update Service'),$id,$so->name()))
|
||||
->title_icon('icon-wrench')
|
||||
->body(View::factory('service/admin/edit')
|
||||
->set('o',$so)
|
||||
->set('plugin_form',$so->plugin_edit())
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public function action_listdomainservicesbysupplier() {
|
||||
$svs = ORM::factory('Service')->list_bylistgroup('DOMAIN');
|
||||
Sort::MAsort($svs,'plugin()->domain_registrar_id,name()');
|
||||
@@ -114,64 +249,6 @@ class Controller_Admin_Service extends Controller_Service {
|
||||
));
|
||||
}
|
||||
|
||||
public function action_update() {
|
||||
list($id,$output) = Table::page(__METHOD__);
|
||||
|
||||
$so = ORM::factory('Service',$id);
|
||||
|
||||
if (! $so->loaded())
|
||||
HTTP::redirect('welcome/index');
|
||||
|
||||
if ($_POST) {
|
||||
// Entry updated
|
||||
if (isset($_POST['plugin']) AND $_POST['plugin']) {
|
||||
$p = $so->plugin();
|
||||
|
||||
if ($p->values($_POST['plugin'])->changed() AND ! $this->save($p))
|
||||
$p->reload();
|
||||
}
|
||||
|
||||
if ($so->values($_POST)->changed() AND ! $this->save($so))
|
||||
$so->reload();
|
||||
}
|
||||
|
||||
Script::factory()
|
||||
->type('file')
|
||||
->data('media/theme/bootstrap/vendor/datepicker/js/bootstrap-datepicker.js');
|
||||
|
||||
Style::factory()
|
||||
->type('file')
|
||||
->data('media/theme/bootstrap/vendor/datepicker/css/datepicker.css');
|
||||
|
||||
Script::factory()
|
||||
->type('stdin')
|
||||
->data('
|
||||
var nowTemp = new Date();
|
||||
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
|
||||
|
||||
$(document).ready(function() {
|
||||
$("#date_next_invoice_label").datepicker({
|
||||
autoclose : true,
|
||||
startDate : now,
|
||||
format : "dd-M-yyyy",
|
||||
todayBtn : true,
|
||||
}).on("hide",function(ev) {
|
||||
$("input[name=date_next_invoicel]").val(ev.date.valueOf()/1000);
|
||||
});
|
||||
});
|
||||
');
|
||||
|
||||
Block::factory()
|
||||
->type('form-horizontal')
|
||||
->title(sprintf('%s: %s %s',_('Update Service'),$id,$so->name()))
|
||||
->title_icon('icon-wrench')
|
||||
->body(View::factory('service/admin/edit')
|
||||
->set('o',$so)
|
||||
->set('plugin_form',$so->admin_update())
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public function action_view() {
|
||||
list($id,$output) = Table::page(__METHOD__);
|
||||
|
||||
@@ -257,5 +334,24 @@ $(document).ready(function() {
|
||||
'body'=>$output,
|
||||
));
|
||||
}
|
||||
|
||||
private function add_edit($id=NULL,$output='') {
|
||||
$so = ORM::factory('Service',$id);
|
||||
|
||||
if ($_POST) {
|
||||
if ($so->values($this->request->post())->changed() AND ! ($this->save($so)))
|
||||
$so->reload();
|
||||
|
||||
// Do we have plugin data to save as well
|
||||
if ($this->request->post('plugin') AND $so->loaded()) {
|
||||
$x = $so->plugin();
|
||||
|
||||
if ($x->values(Arr::merge(array('service_id'=>$so->id),$this->request->post('plugin')))->changed())
|
||||
$this->save($x);
|
||||
}
|
||||
}
|
||||
|
||||
return $so;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
Reference in New Issue
Block a user