⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sg_remote_files_gen.html

📁 Here is the DHTML tree example with full source code
💻 HTML
字号:
<html>

<head>
	<title>Remote files generator</title>

	<script language="javascript" src="smart_cells_lib.js"></script>
	<script language="javascript" src="smart_grid_lib.js"></script>

</head>

<body>

<h1>Smart Grid remote files generator</h1>

<h4>
This script automatically builds Smart Grid remote files corresponding
to your table. The remote files are used to retreive data from the table and
parse queries posted by Smart Grid to add/modify data in the table.
</h4>

<p>

<strong>To generate remote files for your Smart Grid instance the following
steps should be performed:</strong><br>
<ol>
	<li>Take JS code of your SG and put in this file between

<pre>
/*

Smart Grid Code

*/
</pre>

and

<pre>
/*

!Smart Grid Code

*/
</pre>

<br>

Eg.

<i>
<pre>
/*

Smart Grid Code

*/

var smart_grid = new SmartGrid('smart_grid');

var sc0 = new SmartCell_image();
	sc0.folder = '/images';
	sc0.preview_size = 500;
	sc0.set_value(4);
	sc0.params = {
db_field: ''
	};
var sc0_params = {
	'name': 'Picture',
	'width': '50'
};
	smart_grid.add_column(sc0_params, sc0);


var sc1 = new SmartCell_text();
	sc1.params = {
db_field: 'name'
	};
var sc1_params = {
	'name': 'Name1234567890123456789',
	'width': '140'
};
	sc1.readonly = true;
	smart_grid.add_column(sc1_params, sc1);

.&nbsp;.&nbsp;.<br>


/*

Smart Grid Code

*/
</pre>
</i>

	</li>

	<li>
Place an object with the same ID as specified as an argument for function
SmartGrid, eg:<br>
<pre>
&lt;div id="smart_grid" style="display:none"&gt;
&lt;/div&gt;
</pre>
	</li>

	<li>
Type name of your table in text field "Table name".
	</li>

	<li>
Click on "Generate!" button.
	</li>

	<li>
Save content of text areas "XML data file (xml_data.php)" and
"Save SG table file (save_sg_table.php)" as files xml_data.php and
save_sg_table.php correspondingly.
	</li>

	<li>
That's all.
	</li>
</ol>

</p>

<hr>
<br>

<div id="smart_grid" style="display:none">
</div>

<script language="JavaScript">

/*

Smart Grid Code

*/

var smart_grid = new SmartGrid('smart_grid');
//	smart_grid.on_save_cell = on_save_cell;
	smart_grid.page_mode = true;
	smart_grid.current_page = 1;
	smart_grid.page_size = 100;//2;
	smart_grid.image_path = 'img/';

//	smart_grid.dynamic_loading = true;

	smart_grid.data_url = 'xml_data.php';
	smart_grid.actions_url = 'save_sg_table.php';
//	smart_grid.init();

//*
var sc0 = new SmartCell_image();
//	sc0.language = 'rus';
	sc0.folder = '/images';
	sc0.preview_size = 500;
	sc0.set_value(4);
	sc0.params = {
db_field: ''
	};
var sc0_params = {
	'name': 'Picture',
	'width': '50'
};
//	sc0.readonly = true;
	smart_grid.add_column(sc0_params, sc0);
//*/


var sc1 = new SmartCell_text();
	sc1.params = {
db_field: 'name'
	};
var sc1_params = {
	'name': 'Name1234567890123456789',
	'width': '140'
};
	smart_grid.add_column(sc1_params, sc1);


var sc2 = new SmartCell_text();
	sc2.params = {
db_field: 'surname'
	};
var sc2_params = {
	'name': 'Surname',
	'width': '40'
};
//	sc2.readonly = true;
	smart_grid.add_column(sc2_params, sc2);


var sc3 = new SmartCell_select();
	sc3.params = {
db_field: 'level'
	};
	sc3.add_option('1', 'First');
	sc3.add_option('2', 'Second');
	sc3.add_option('3', 'Third');
	sc3.add_option('4', 'Forth');
var sc3_params = {
	'name': 'Level',
	'width': '60'
};
//	sc3.readonly = true;
	sc3.set_default_value('1');
	smart_grid.add_column(sc3_params, sc3);


var sc8 = new SmartCell_radio();
	sc8.group = 'table_group';
	sc8.params = {
db_field: 'chairman'
	};
var sc8_params = {
	'name': 'Chairman',
	'width': '70'
};
//	sc8.readonly = true;
	smart_grid.add_column(sc8_params, sc8);


var sc4 = new SmartCell_time();
	sc4.params = {
db_field: 'time'
	};
var sc4_params = {
	'name': 'Time',
	'width': '50'
};
//	sc4.readonly = true;
	sc4.set_default_value('11:00');
	smart_grid.add_column(sc4_params, sc4);


var sc5 = new SmartCell_textarea();
	sc5.params = {
db_field: 'description'
	};
var sc5_params = {
	'name': 'Description',
	'width': '100'
};
//	sc5.readonly = true;
	sc5.set_default_value('');
	smart_grid.add_column(sc5_params, sc5);


var sc6 = new SmartCell_checkbox();
	sc6.params = {
db_field: 'status'
	};
var sc6_params = {
	'name': 'Active',
	'width': '50'
};
//	sc6.readonly = true;
	sc6.set_default_value(0);
	smart_grid.add_column(sc6_params, sc6);


var sc10 = new SmartCell_price();
	sc10.params = {
db_field: 'amount'
	};
var sc10_params = {
	'name': 'Amount',
	'width': '60'
};
//	sc10.readonly = true;
	smart_grid.add_column(sc10_params, sc10);


var sc7 = new SmartCell_date();
	sc7.params = {
db_field: 'created'
	};
var sc7_params = {
	'name': 'Created',
	'width': '80'
};
	sc7.readonly = true;
//sc7.format = 'yyyy:mm:dd';
//sc7.time_format = 'hh:mm:ss';
	sc7.set_default_value('');
	smart_grid.add_column(sc7_params, sc7);

/*

!Smart Grid Code

*/


function sg_remote_files_gen(grid) {
var i;
var xml_data_row_template = "		<cell>'.{ROW_CONTENT}.'</cell>";
var xml_data_rows = '';
var vars = '';
var del_images_code = '';
var add_fields = '';
var add_code = '';
var update_code = '';
var save_sg_data = '';
var checkbox_code = '';


	for (i=0; i<grid.columns.length; i++) {
		if (vars != '') vars += '\n';
		save_sg_data += ',\n';

		var sc = grid.columns[i].cell;

		var cell_type = '';
		if (sc.params['db_field'] == '') {
			cell_type = 'no_field';
		}

		if (sc.type == 'time') {
			cell_type = 'time';
		}

		switch (cell_type) {
			case 'no_field':
				var xml_row_content = "$row['id']";
				if (sc.type == 'image') {
					vars += "$folder" + i + " = @$_POST['folder" + i + "'];";

					if (del_images_code != '') del_images_code += '\n';

					del_images_code += "" +
"					$pict = new dynaimage($image_id, $folder" + i + ", 0, $parent_folder);" +
"					$pict->delete($pict->file());";

				}

				save_sg_data += "'cell_value" + i + "' => @$new_row_id";
				break;
			case 'time':
				var xml_row_content = "substr($row['" + sc.params['db_field'] + "'], 0, 5)";
				save_sg_data += "'cell_value" + i + "' => substr(@$row_data['" + sc.params['db_field'] + "'], 0, 5)";
				break;
			default:
				var xml_row_content = "htmlspecialchars($row['" + sc.params['db_field'] + "'])";
				save_sg_data += "'cell_value" + i + "' => htmlspecialchars(@$row_data['" + sc.params['db_field'] + "'])";
				break;
		}

		if (xml_data_rows != '') xml_data_rows += '\n';
		xml_data_rows += xml_data_row_template.replace('{ROW_CONTENT}',
														xml_row_content);

		switch (cell_type) {
			case 'no_field':
				break;
			case 'time':
			default:
				vars += "$" + sc.params['db_field'] + " = @$_POST['" + sc.params['db_field'] + "'];";

				if (!sc.readonly) {
					if (add_code != '') add_code += ',\n';
					add_code += "\"'.mysql_real_escape_string($" + sc.params['db_field'] + ").'\"";

					if (add_fields != '') add_fields += ',';
					add_fields += sc.params['db_field'];
				}

				if (update_code != '') update_code += ',\n';
				if (!sc.readonly) {
					update_code += sc.params['db_field'] + " = \"'.mysql_real_escape_string($" + sc.params['db_field'] + ").'\"";
				} else {
					update_code += sc.params['db_field'] + " = " + sc.params['db_field'];
				}

				break;
		}

		if (sc.type == 'radio') {
			checkbox_code += "\n" +
"			if ($" + sc.params['db_field'] + ") {\n" +
"	$query = '\n" +
"update {TABLE_NAME} set " + sc.params['db_field'] + " = \"0\"\n" +
"	';\n" +
"\n" +
"	$q = new query($query);\n" +
"	$q->update();\n" +
"			}\n" +
			"";
		}

	}


	// table name
	var table_name = document.getElementById('table_name').value;

	// xml_data.php

	// xml data template textarea
	var xml_data_template_obj = document.getElementById('xml_data_template');

	// xml data textarea
	var xml_data_obj = document.getElementById('xml_data');

	var template = xml_data_template_obj.value;
	template = template.replace(/{TABLE_NAME}/g, table_name);
	xml_data_obj.value = template.replace('{ROWS}', xml_data_rows);



	// save_sg_table.php

	// xml data template textarea
	var save_sg_table_template_obj = document.getElementById('save_sg_table_template');

	// xml data textarea
	var save_sg_table_obj = document.getElementById('save_sg_table');

	var template = save_sg_table_template_obj.value;
	template = template.replace('{VARS}', vars);
	template = template.replace('{UPDATE_CODE}', update_code);
	template = template.replace('{ADD_FIELDS}',	add_fields);
	template = template.replace('{ADD_CODE}', add_code);
	template = template.replace('{DATA}', save_sg_data);
	template = template.replace(/{CHECKBOXES}/g, checkbox_code);
	template = template.replace(/{TABLE_NAME}/g, table_name);
	save_sg_table_obj.value = template;
}

</script>

Table name:<br>
<input type="text" id="table_name" value="sg_table" />
<br><br>

XML data file template:<br>
<textarea id="xml_data_template" rows="20" cols="80" style="width:100%">
<?php

	$pm_charset = 'iso-8859-1';

	session_start();


// Ajax config code
if (!defined("PATH_SEPARATOR"))
  define("PATH_SEPARATOR", getenv("COMSPEC")? ";" : ":");
ini_set("include_path", ini_get("include_path").PATH_SEPARATOR.dirname(__FILE__));
// Ajax config code


	require_once('class/class.query.php');


// Declare Ajax lib
require_once 'ajax/JsHttpRequest.php';

// Create main library object
// Set page encoding. Important!
$JsHttpRequest =& new JsHttpRequest($pm_charset);
// Get query


$row_id = @$_POST['row_id'];

$action = @$_GET['action'];
$row_id_list = @$_GET['row_id_list'];

$page = (int)@$_POST['page'];
$page_size = (int)@$_POST['page_size'];

$dl_start_with = (int)@$_POST['dl_start_with'];
$dl_size = (int)@$_POST['dl_size'];


	// if there is no such page in table, take the last one
	$flag = false;
	while (!$flag) {

		$query = '
SELECT * FROM {TABLE_NAME} ORDER BY id
		';

		// paging on
		if ($page_size) {
			$query .= ' limit '.($page*$page_size+$dl_start_with).', '.
					($dl_size?$dl_size:$page_size);
		} else {
			if ($dl_size) {
				$query .= ' limit '.$dl_start_with.', '.$dl_size;
			}
		}

		$q = new query($query);

		$data = $q->select();

		if (!$data && $page) $page--;
			else $flag = 1;
	}

	// count total number of pages
	if ($page_size) {
		$query = '
SELECT count(id) AS number FROM {TABLE_NAME}
		';
		$total_data = $q->select1($query);
		$total_rows = $total_data['number'];
		$total_pages = (int)(($total_rows-1)/$page_size)+1;
	} else {
		$total_pages = 1;
	}

	if ($dl_size) {
		$query_real_data = 'SELECT id AS number FROM {TABLE_NAME}';

		if ($page_size) {
			$query_real_data .= ' limit '.($page*$page_size).', '.$page_size;
		}

		$q = new query($query_real_data);

		$real_data = $q->select();
		$real_page_size = count($real_data);
	} else {
		$real_page_size = count($data);
	}

	if ($data) {
		$xml_data = '<'.'?xml version="1.0" encoding="UTF-8"?'.'>
<rows page="'.$page.'" pagesize="'.$page_size.'" realpagesize="'.$real_page_size.'" totalpages="'.$total_pages.'">
		';

		// prepare xml tree
		foreach ($data as $key=>$row) {
			$xml_data .= '
	<row id="'.$row['id'].'">
{ROWS}
	</row>
			';
		}

		$xml_data .= '
</rows>';
	} else {
		$error = 'Cannot retrieve data from DB!';
	}

// Prepare result as a PHP array
$_RESULT = array(
	'status' => isset($error)?$error:'ok',
	'xml_data' => @$xml_data
);

?>
</textarea>

<br>

XML data file (xml_data.php):<br>
<textarea id="xml_data" rows="20" cols="80" style="width:100%">
</textarea>

<br>
<br>

Save SG table file template:<br>
<textarea id="save_sg_table_template" rows="20" cols="80" style="width:100%">
<?php

	include('sc_config.inc.php');

	$pm_charset = 'iso-8859-1';

	session_start();


// Ajax config code
if (!defined("PATH_SEPARATOR"))
  define("PATH_SEPARATOR", getenv("COMSPEC")? ";" : ":");
ini_set("include_path", ini_get("include_path").PATH_SEPARATOR.dirname(__FILE__));
// Ajax config code


	require_once('class/class.dynaimage.php');
	require_once('class/class.query.php');


// Declare Ajax lib
require_once 'ajax/JsHttpRequest.php';

// Create main library object
// Set page encoding. Important!
$JsHttpRequest =& new JsHttpRequest($pm_charset);
// Get query


$row_id = @$_POST['row_id'];
{VARS}

$action = @$_GET['action'];
$row_id_list = @$_GET['row_id_list'];


	switch ($action) {

		case 'delete':

			$id_array = explode('|', $row_id_list);
			if ($id_array) {
				// delete images
				foreach ($id_array as $key=>$image_id) {
					$pict = new dynaimage($image_id, $folder0, 0, $parent_folder);
					$pict->delete($pict->file());
				}

				$sql_id_str = '('.implode(',', $id_array).')';

				$query = '
delete from {TABLE_NAME} where id in '.$sql_id_str.'
				';

				$q = new query($query);

				if (!$q->exec()) {
					$error = 'Cannot delete rows selected!';
				}
			} else {
				$error = 'No rows to delete!';
			}

			break;

		case 'add':

			{CHECKBOXES}

			$query = '
insert into {TABLE_NAME}
({ADD_FIELDS})
	values
({ADD_CODE})
			';

			$q = new query($query);
			$new_row_id = $q->insert();

			if (!$new_row_id) {
				$error = $query.'Cannot save new row in DB!';
			} else {
				// read the DB row as some data (ie dates) could
				// be changed by DB
				$query = '
SELECT *
	FROM {TABLE_NAME}
WHERE id = "'.mysql_real_escape_string($new_row_id).'"
				';

				$q = new query($query);
				$row_data = $q->select1();
			}

			break;

		default:

			{CHECKBOXES}

			$query = '
update {TABLE_NAME} set
{UPDATE_CODE}
where id = "'.mysql_real_escape_string($row_id).'"
			';
			$q = new query($query);

			$result = $q->update();

			if (!$result) {
				$error = 'Cannot save the row changed in DB!';
			} else {
				// read the DB row as some data (ie dates) could
				// be changed by DB
				$query = '
SELECT *
	FROM {TABLE_NAME}
WHERE id = "'.mysql_real_escape_string($row_id).'"
				';

				$q = new query($query);
				$row_data = $q->select1();

			}

			break;
	}


// Prepare result as a PHP array
$_RESULT = array(
	'status' => isset($error)?$error:'ok',
	'new_row_id' => @$new_row_id?$new_row_id:''{DATA}
);

?>
</textarea>
<br>

Save SG table file (save_sg_table.php):<br>
<textarea id="save_sg_table" rows="20" cols="80" style="width:100%">
</textarea>

<br>
<input type="button" value="Generate!" onclick="sg_remote_files_gen(smart_grid)" />

</body>

</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -