File: 0.01.0a/entity.php (View as HTML)

  1: <?php 
  2: /* -------------------------------------------------------------
  3: This file is part of FreeDESK
  4: 
  5: FreeDESK is (C) Copyright 2012 David Cutting
  6: 
  7: FreeDESK is free software: you can redistribute it and/or modify
  8: it under the terms of the GNU General Public License as published by
  9: the Free Software Foundation, either version 3 of the License, or
 10: (at your option) any later version.
 11: 
 12: FreeDESK is distributed in the hope that it will be useful,
 13: but WITHOUT ANY WARRANTY; without even the implied warranty of
 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 15: GNU General Public License for more details.
 16: 
 17: You should have received a copy of the GNU General Public License
 18: along with FreeDESK.  If not, see www.gnu.org/licenses
 19: 
 20: For more information see www.purplepixie.org/freedesk/
 21: -------------------------------------------------------------- */
 22: 
 23: /**
 24:  * Entity Interface - Search, Edit, Create
 25: **/
 26: 
 27: 
 28: // Output buffer on and start FreeDESK then discard startup whitespace-spam
 29: ob_start();
 30: include("core/FreeDESK.php");
 31: $DESK = new FreeDESK("./");
 32: $DESK->Start();
 33: ob_end_clean();
 34: 
 35: 
 36: if (!isset($_REQUEST['sid']) || !$DESK->ContextManager->Open(ContextType::User, $_REQUEST['sid']))
 37: {
 38: 	$data=array("title"=>$DESK->Lang->Get("welcome"));
 39: 	$DESK->Skin->IncludeFile("min_header.php",$data);
 40: 
 41: 	echo "\n<noscript>\n";
 42: 	echo "<h1>Sorry you must have Javascript enabled to use FreeDESK analyst portal</h1>\n";
 43: 	echo "</noscript>\n";
 44: 
 45: 	echo "<h3>".$DESK->Lang->Get("login_invalid").":</h3>\n";
 46: 
 47: 	
 48: 	$DESK->Skin->IncludeFile("min_footer.php");
 49: 	exit();
 50: }
 51: 
 52: 
 53: // So we're authenticated let's view the main page
 54: $data=array("title"=>"FreeDESK");
 55: $DESK->Skin->IncludeFile("min_header.php",$data);
 56: 
 57: if (!isset($_REQUEST['mode']))
 58: 	$mode="";
 59: else
 60: 	$mode=$_REQUEST['mode'];
 61: if (!isset($_REQUEST['entity']))
 62: 	$entity="";
 63: else
 64: 	$entity=$_REQUEST['entity'];
 65: 
 66: $table = $DESK->DataDictionary->GetTable($entity);
 67: 
 68: if ( ($table === false) || (!$table->editable) )
 69: {
 70: 	echo "<h3>".$DESK->Lang->Get("entity_not_found")."</h3>";
 71: }
 72: else if (!$DESK->ContextManager->Permission("entity_".$entity))
 73: {
 74: 	echo "<h3>".$DESK->Lang->Get("permission_denied")."</h3>";
 75: }
 76: else if ($mode == "search")
 77: {
 78: 	echo "<script type=\"text/javascript\">\n";
 79: 	echo "DESKSearch.entity = \"".$entity."\";\n";
 80: 	echo "</script>\n";
 81: 	echo "<div id=\"searchfields\">\n";
 82: 	echo "<table class=\"search\">\n";
 83: 	echo "<form id=\"entitysearch\" onsubmit=\"return false;\">\n";
 84: 	
 85: 	$searchnow=false;
 86: 	foreach($table->fields as $id => $field)
 87: 	{
 88: 		if ($field->searchable)
 89: 		{
 90: 			echo "<tr><td>".$field->name."</td>\n";
 91: 			$val="";
 92: 			if (isset($_REQUEST[$field->field]))
 93: 			{
 94: 				$val=$_REQUEST[$field->field];
 95: 				if ($val!="")
 96: 					$searchnow=true;
 97: 			}
 98: 			echo "<td><input type=\"text\" name=\"".$field->field."\" value=\"".$val."\"></td></tr>\n";
 99: 		}
100: 	}
101: 	echo "<tr><td>&nbsp;</td>\n";
102: 	echo "<td><input type=\"submit\" value=\"".$DESK->Lang->Get("search")."\" onclick=\"DESKSearch.search();\"></td>\n";
103: 	echo "</tr>";
104: 	echo "</form></table>\n";
105: 	echo "</div>\n";
106: 	
107: 	echo "<div id=\"searchresults\">\n";
108: 	echo "</div>";
109: 	
110: 	
111: 	echo "<script type=\"text/javascript\">\n";
112: 	if (isset($_REQUEST['callback']) && $_REQUEST['callback']!="")
113: 		echo "DESKSearch.callback = window.opener.".$_REQUEST['callback'].";\n";
114: 	else
115: 		echo "DESKSearch.callback = null;\n";
116: 	if (isset($_REQUEST['onereturn']) && $_REQUEST['onereturn']==1)
117: 		echo "DESKSearch.callbackOnSingle = true;\n";
118: 	else
119: 		echo "DESKSearch.callbackOnSingle = false;\n";
120: 	if ($searchnow)
121: 		echo "DESKSearch.search();\n";
122: 	echo "</script>\n";
123: 	
124: }
125: else if ($mode == "edit")
126: {
127: 	$loaded = $DESK->EntityManager->Load($entity, $_REQUEST['value']);
128: 	if ($loaded !== false)
129: 	{
130: 		$data = $loaded->GetData();
131: 		echo "<table class=\"edit\">\n";
132: 		echo "<form id=\"entity_edit\" onsubmit=\"return false;\">\n";
133: 		echo "<input type=\"hidden\" name=\"mode\" value=\"entity_save\">\n";
134: 		echo "<input type=\"hidden\" name=\"entity\" value=\"".$entity."\">\n";
135: 		foreach($table->fields as $id => $field)
136: 		{
137: 			echo "<tr>\n";
138: 			echo "<td>".$field->name."</td>\n";
139: 			echo "<td>\n";
140: 			// TODO: Different field types in full
141: 			if ($field->type == DD_FieldType::Password)
142: 				$t="password";
143: 			else
144: 				$t="text";
145: 			$i="<input type=\"".$t."\" name=\"".$id."\" value=\"".$data[$id]."\"";
146: 			if ($field->readonly)
147: 				$i.=" readonly";
148: 			$i.=">";
149: 			echo $i;
150: 			echo "</td>\n";
151: 			echo "</tr>\n";
152: 		}
153: 		
154: 		echo "<tr><td>\n";
155: 		echo "<a href=\"#\" onclick=\"window.close();\">Cancel</a>";
156: 		echo "</td><td>";
157: 		echo "<input type=\"submit\" value=\"".$DESK->Lang->Get("save")."\" onclick=\"DESK.formAPI('entity_edit');\"> ";
158: 		echo "<input type=\"submit\" value=\"".$DESK->Lang->Get("save_close")."\" onclick=\"DESK.formAPI('entity_edit',true);\">";
159: 		echo "</td></tr>\n";
160: 		
161: 		echo "</form></table>\n";
162: 	}
163: 	else
164: 	{
165: 		echo "Entity Load Failed";
166: 	}
167: }
168: else if ($mode == "create")
169: {
170: 	echo "<table class=\"create\">\n";
171: 	echo "<form id=\"entity_create\" onsubmit=\"return false;\">\n";
172: 	echo "<input type=\"hidden\" name=\"mode\" value=\"entity_create\">\n";
173: 	echo "<input type=\"hidden\" name=\"entity\" value=\"".$entity."\">\n";
174: 	foreach($table->fields as $id => $field)
175: 	{
176: 		echo "<tr>\n";
177: 		echo "<td>".$field->name."</td>\n";
178: 		echo "<td>\n";
179: 		// TODO: Different field types in full
180: 		if ($field->type == DD_FieldType::Password)
181: 				$t="password";
182: 			else
183: 				$t="text";
184: 		echo "<input type=\"".$t."\" name=\"".$id."\" value=\"\">\n";
185: 		echo "</td></tr>";
186: 	}
187: 	echo "<tr><td>\n";
188: 	echo "<a href=\"#\" onclick=\"window.close();\">Cancel</a>";
189: 	echo "</td><td>";
190: 	echo "<input type=\"submit\" value=\"".$DESK->Lang->Get("save")."\" onclick=\"DESK.formAPI('entity_create');\"> ";
191: 	echo "<input type=\"submit\" value=\"".$DESK->Lang->Get("save_close")."\" onclick=\"DESK.formAPI('entity_create',true);\">";
192: 	echo "</td></tr>\n";
193: 	
194: 	echo "</form></table>\n";
195: }
196: 
197: else
198: {
199: 	echo "<h3>".$DESK->Lang->Get("action_invalid")."</h3>";
200: }
201: 			
202: 
203: $DESK->Skin->IncludeFile("min_footer.php");
204: 
205: 
206: ?>
207: