소스 검색

Autosave function

pecesama 18 년 전
부모
커밋
7ed00a70aa
5개의 변경된 파일2142개의 추가작업 그리고 3개의 파일을 삭제
  1. 42 0
      admin/form.autosave.php
  2. 11 1
      admin/index.php
  3. 97 0
      admin/scripts/form.autosave.js
  4. 1985 0
      admin/scripts/prototype.js
  5. 7 2
      notice.txt

+ 42 - 0
admin/form.autosave.php 파일 보기

1
+<?php
2
+
3
+session_start();
4
+
5
+function isAjax() { 
6
+	return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
7
+	$_SERVER ['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'; 
8
+}
9
+
10
+function saveForm() {
11
+	$type = getMethod();
12
+	$id = ($type=='GET') ? $_GET['autosaveid'] : $_POST['autosaveid'];
13
+	$_SESSION[$id] = $_SERVER['QUERY_STRING'];
14
+	echo date('H:i | d/m/y',time());
15
+}
16
+
17
+function loadForm() {
18
+	$type = getMethod();
19
+	$id = ($type=='GET') ? $_GET['autosaveid'] : $_POST['autosaveid'];
20
+	if(isset($_SESSION[$id]))
21
+		echo $_SESSION[$id];
22
+}
23
+
24
+function isLoad() {
25
+	$type = getMethod();
26
+	if($type=='GET' and isset($_GET['autosave'])) return true;
27
+	elseif(isset($_POST['autosave'])) return true;
28
+	return false;
29
+}
30
+
31
+function getMethod() {
32
+	return $_SERVER['REQUEST_METHOD'];
33
+}
34
+
35
+if(isAjax()) {
36
+	if(isLoad()) loadForm();
37
+	else saveForm();
38
+}
39
+
40
+exit;
41
+
42
+?>

+ 11 - 1
admin/index.php 파일 보기

99
 		<script language="javascript" type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/tools.js"></script>
99
 		<script language="javascript" type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/tools.js"></script>
100
 		<script language="javascript" type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/mootools.js"></script>
100
 		<script language="javascript" type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/mootools.js"></script>
101
 		<script language="javascript" type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/slimbox.js"></script>
101
 		<script language="javascript" type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/slimbox.js"></script>
102
+		<script language="javascript" type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/prototype.js"></script>
103
+		<script language="javascript" type="text/javascript" src="<?php echo $conf->urlGelato;?>/admin/scripts/form.autosave.js"></script>
102
 		<script language="javascript" type="text/javascript">
104
 		<script language="javascript" type="text/javascript">
103
 		<!--
105
 		<!--
104
 			function exit(el, path) {
106
 			function exit(el, path) {
196
 						}
198
 						}
197
 					}					
199
 					}					
198
 ?>					
200
 ?>					
199
-					<form action="index.php" method="post" <?php echo (isset($_GET["new"]) && $_GET["new"]=="photo") ? "enctype=\"multipart/form-data\"" : ""?> name="frmAdd" class="newpost">
201
+					<form action="index.php" method="post" <?php echo (isset($_GET["new"]) && $_GET["new"]=="photo") ? "enctype=\"multipart/form-data\"" : ""?> name="frmAdd" id="autosave" class="newpost">
200
 						<fieldset>
202
 						<fieldset>
203
+						<div id="update" style="display:none;" class="exito"></div><br />
201
 <?php
204
 <?php
202
 							if ($isEdition) {
205
 							if ($isEdition) {
203
 ?>
206
 ?>
302
 								</p>
305
 								</p>
303
 						</fieldset>
306
 						</fieldset>
304
 					</form>
307
 					</form>
308
+					<div id="serialize"></div>
309
+					<script type="text/javascript" language="javascript" charset="utf-8">
310
+					// <![CDATA[
311
+						//id: formulario, id: info, options
312
+						new Form.autoSave('autosave','update',{});
313
+					// ]]>
314
+					</script>
305
 					
315
 					
306
 					<div class="footer-box">&nbsp;</div>
316
 					<div class="footer-box">&nbsp;</div>
307
 				</div>
317
 				</div>

+ 97 - 0
admin/scripts/form.autosave.js 파일 보기

1
+/*  Autocompleter.editor, version 1.0: http://icebeat.bitacoras.com
2
+ *  (c) 2005 Daniel Mota aka IceBeat <daniel.mota@gmail.com>
3
+ *
4
+/*--------------------------------------------------------------------------*/
5
+Form.autoSave = Class.create();
6
+Form.autoSave.prototype = {
7
+	/*	
8
+	*	Inicializamos la clase y preparamos parametros
9
+	*/
10
+  initialize: function(element, update, options) {
11
+    this.element = $(element);
12
+    this.update = $(update);
13
+    this.options = $H({
14
+			url: 'form.autosave.php',
15
+			frequency: 30,
16
+			method: 'get',
17
+			msg: {
18
+			  loading:  'Filling form',
19
+			  loaded:   'Form filled',
20
+			  sending:  'Sending form',
21
+			  update:   'Form saved at: '
22
+			}
23
+		}).merge(options);
24
+		this.msg = this.options.msg;
25
+		this.message(this.msg.loading);
26
+    new Ajax.Request(this.options.url, { method: this.options.method, parameters:"autosave=true&autosaveid="+this.element.id, onSuccess: this.autoFill.bind(this) });
27
+  },
28
+  message: function(msg) {
29
+    Element.show(this.update);
30
+    this.update.innerHTML = msg;
31
+  },
32
+  send: function(element,value) {
33
+    this.message(this.msg.sending);
34
+    new Ajax.Request(this.options.url, { method: this.options.method, parameters:"autosaveid="+element.id+'&'+value, onSuccess: this.updateForm.bind(this) });
35
+  },
36
+  updateForm: function(resp) {
37
+    if(resp.responseText) {
38
+      this.message(this.msg.update+resp.responseText);
39
+    }
40
+  },
41
+  autoFill: function(resp) {
42
+    if(resp.responseText) {
43
+      this.message(this.msg.loaded);
44
+      Form.Unserialize(this.element,resp.responseText);
45
+    } else {
46
+      Element.hide(this.update);
47
+    }
48
+    new Form.Observer(this.element,this.options.frequency,this.send.bind(this));
49
+  }
50
+};
51
+
52
+Form.Unserialize = function(form,queryComponents) {
53
+  var elements = Form.getElements($(form));
54
+  var queryComponents = queryComponents.toQueryParams();
55
+  for (var i = 0; i < elements.length; i++) {
56
+    var element = elements[i];
57
+    var name = element.name;
58
+    if(queryComponents[name]) {
59
+      var method = element.tagName.toLowerCase();
60
+      var value = decodeURIComponent(queryComponents[name]);
61
+      Form.Element.Unserializers[method](element,value);
62
+    }
63
+  }
64
+};
65
+
66
+Form.Element.Unserializers = {
67
+  input: function(element,value) {
68
+    switch (element.type.toLowerCase()) {
69
+      case 'submit':
70
+      case 'hidden':
71
+      case 'password':
72
+      case 'text':
73
+        return Form.Element.Unserializers.textarea(element,value);
74
+      case 'checkbox':
75
+      case 'radio':
76
+        return Form.Element.Unserializers.inputSelector(element,value);
77
+    }
78
+    return false;
79
+  },
80
+
81
+  inputSelector: function(element,value) {
82
+    if (element.value == value)
83
+        element.checked = 'checked';
84
+  },
85
+
86
+  textarea: function(element,value) {
87
+    element.value = value;
88
+  },
89
+
90
+  select: function(element,value) {
91
+    for (var i = 0; i < element.length; i++) {
92
+      var opt = element.options[i];
93
+      if(opt.value == value || opt.text == value) 
94
+        opt.selected = 'selected';
95
+    }
96
+  }
97
+}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1985 - 0
admin/scripts/prototype.js


+ 7 - 2
notice.txt 파일 보기

1
-== CREDITS==
1
+== CREDITS==
2
 Gelato developers and designers (in chronological order):
2
 Gelato developers and designers (in chronological order):
3
 
3
 
4
 Pedro Santana [ http://www.pecesama.net/weblog/ ]
4
 Pedro Santana [ http://www.pecesama.net/weblog/ ]
5
 Jorge Condomí [ http://www.raven.com.ar/ ]
5
 Jorge Condomí [ http://www.raven.com.ar/ ]
6
 Víctor de la Rocha [ http://blog.mis-algoritmos.com/ ]
6
 Víctor de la Rocha [ http://blog.mis-algoritmos.com/ ]
7
 Victor Bracco [ http://www.vbracco.com.ar/blog/ ]
7
 Victor Bracco [ http://www.vbracco.com.ar/blog/ ]
8
+Matt Heitzenroder [ http://www.globaljourney.net/ ]
8
 
9
 
9
 = COPYRIGHT NOTICES =
10
 = COPYRIGHT NOTICES =
10
 This product includes code and libraries developed by third parties, which are governed by different licenses.  These components, and their licenses, are listed below.
11
 This product includes code and libraries developed by third parties, which are governed by different licenses.  These components, and their licenses, are listed below.
48
 = PHP-gettext =
49
 = PHP-gettext =
49
 Copyright (c) 2003 Danilo Segan, http://savannah.nongnu.org/projects/php-gettext/
50
 Copyright (c) 2003 Danilo Segan, http://savannah.nongnu.org/projects/php-gettext/
50
 Copyright (c) 2005 Nico Kaiser
51
 Copyright (c) 2005 Nico Kaiser
51
-PHP-gettext available under GNU General Public License.
52
+PHP-gettext available under GNU General Public License.
53
+
54
+= form.autosave =
55
+Copyright (c) Daniel Mota Leiva, http://icebeat.bitacoras.com/app/autosave/
56
+form.autosave available under Creative Commons Attribution-ShareAlike License.