This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
Deon George 29c1913f47 Theme work with focusbusiness and baseadmin
Improvements to NAVBAR, updates to StaticList methods, other minor items
Enable product category rendering and other minor improvements
Added ADSL-large category price plan
2013-05-02 20:49:30 +10:00

210 lines
5.3 KiB
PHP

<?php defined('SYSPATH') or die('No direct access allowed.');
/**
* This class provides Admin Product management
*
* @package Product
* @category Controllers/Admin
* @author Deon George
* @copyright (c) 2009-2013 Open Source Billing
* @license http://dev.osbill.net/license.html
*/
class Controller_Admin_Product extends Controller_Product {
protected $auth_required = TRUE;
protected $secure_actions = array(
'ajaxtranslatecategory'=>TRUE,
'ajaxtranslate'=>TRUE,
'category'=>TRUE,
'edit'=>TRUE,
'list'=>TRUE,
'view'=>TRUE,
);
public function action_ajaxtranslate() {
$po = ORM::factory('Product',$this->request->param('id'));
if (! $po->loaded() OR ! isset($_REQUEST['key'])) {
$output = _('Unable to find translate data');
} else {
$pto = $po->product_translate->where('language_id','=',$_REQUEST['key'])->find();
$output = View::factory('product/admin/ajaxtranslate')
->set('o',$pto);
}
$this->response->body($output);
}
/**
* Retrieve the product category translate record
*/
public function action_ajaxtranslatecategory() {
$pco = ORM::factory('Product_Category',$this->request->param('id'));
if (! $pco->loaded() OR ! isset($_REQUEST['key'])) {
$output = _('Unable to find translate data');
} else {
$pcto = $pco->product_category_translate->where('language_id','=',$_REQUEST['key'])->find();
$output = View::factory('product/category/admin/ajaxtranslate')
->set('o',$pcto);
}
$this->response->body($output);
}
/**
* Update the product category
*/
public function action_category() {
$pco = ORM::factory('Product_Category',$this->request->param('id'));
if (! $pco->loaded())
HTTP::redirect('welcome/index');
if ($_POST)
$pco->values($_POST)->save();
Script::factory()
->type('stdin')
->data('
$(document).ready(function() {
$("select[name=language_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','product/ajaxtranslatecategory/'.$pco->id,TRUE).'",
timeout: 2000,
error: function(x) {
alert("Failed to submit");
},
success: function(data) {
$("div[id=translate]").replaceWith(data);
}
});
});
});
');
Block::factory()
->type('form-horizontal')
->title('Update Category')
->title_icon('icon-wrench')
->body(View::factory('product/category/admin/edit')
->set('o',$pco));
}
/**
* Edit a product configuration
*/
public function action_edit() {
$po = ORM::factory('Product',$this->request->param('id'));
if (! $po->loaded())
HTTP::redirect('welcome/index');
if ($_POST)
$po->values($_POST)->save();
Script::factory()
->type('stdin')
->data('
$(document).ready(function() {
$("select[name=language_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','product/ajaxtranslate/'.$po->id,TRUE).'",
timeout: 2000,
error: function(x) {
alert("Failed to submit");
},
success: function(data) {
$("div[id=translate]").replaceWith(data);
}
});
});
});
');
Block::factory()
->type('form-horizontal')
->title('Update Product')
->title_icon('icon-wrench')
->body(View::factory('product/admin/edit')
->set('plugin_form',$po->admin_update())
->set('o',$po));
}
/**
* Show a list of products
*/
public function action_list() {
$products = ($x=$this->request->param('id')) ? ORM::factory('Product_Category',$x)->products() : ORM::factory('Product')->order_by('status DESC,prod_plugin_file')->find_all();
Block::factory()
->title(_('Products'))
->title_icon('icon-th')
->body(Table::display(
$products,
25,
array(
'id'=>array('label'=>'ID','url'=>URL::link('admin','product/view/')),
'title()'=>array('label'=>'Details'),
'status(TRUE)'=>array('label'=>'Active'),
'prod_plugin_file'=>array('label'=>'Plugin Name'),
'prod_plugin_data'=>array('label'=>'Plugin Data'),
'price_type'=>array('label'=>'Price Type'),
'taxable'=>array('label'=>'Taxable'),
'count_services()'=>array('label'=>'Services'),
'count_invoices()'=>array('label'=>'Invoices'),
),
array(
'page'=>TRUE,
'type'=>'select',
'form'=>URL::link('admin','product/view'),
)));
}
public function action_view() {
$po = ORM::factory('Product',$this->request->param('id'));
Block::factory()
->title(sprintf('%s: %s',_('Current Services Using this Product'),$po->title()))
->title_icon('icon-th-list')
->body(Table::display(
$po->services()->find_all(),
25,
array(
'id'=>array('label'=>'ID','url'=>URL::link('user','service/view/')),
'account->accnum()'=>array(),
'account->name()'=>array('label'=>'Account'),
'name()'=>array('label'=>'Details'),
'status(TRUE)'=>array('label'=>'Active'),
'price(TRUE,TRUE)'=>array('label'=>'Price','align'=>'right'),
),
array(
'page'=>TRUE,
'type'=>'select',
'form'=>URL::link('user','service/view'),
)));
}
}
?>