[isidorus-cvs] r68 - in trunk/src: ajax/javascripts json rest_interface
Lukas Giessmann
lgiessmann at common-lisp.net
Thu Jun 25 18:16:31 UTC 2009
Author: lgiessmann
Date: Thu Jun 25 14:16:30 2009
New Revision: 68
Log:
ajax-client: fixed a general bug with optional occurrences, currently they are not disabled or minimized, when they own any content; fixed a bug with opera and textarea-values, currently there is used the method setValue instead of using update(<value>) - so in the browsers firefox, opera, safari there are no problems - therefore IE makes a lot of trouble\!
Modified:
trunk/src/ajax/javascripts/constants.js
trunk/src/ajax/javascripts/datamodel.js
trunk/src/json/json_tmcl_validation.lisp
trunk/src/rest_interface/set-up-json-interface.lisp
Modified: trunk/src/ajax/javascripts/constants.js
==============================================================================
--- trunk/src/ajax/javascripts/constants.js (original)
+++ trunk/src/ajax/javascripts/constants.js Thu Jun 25 14:16:30 2009
@@ -12,7 +12,7 @@
// --- Some constants fot the http connections via the XMLHttpRequest-Object
var TIMEOUT = 10000; // const TIMEOUT = 10000 --> "const" doesn't work under IE
-var HOST_PREF = "http://localhost:8000/";
+var HOST_PREF = "192.168.178.21/"; //"http://localhost:8000/";
var GET_PREFIX = HOST_PREF + "json/get/";
var GET_STUB_PREFIX = HOST_PREF + "json/topicstubs/";
var TMCL_TYPE_URL = HOST_PREF + "json/tmcl/type/";
Modified: trunk/src/ajax/javascripts/datamodel.js
==============================================================================
--- trunk/src/ajax/javascripts/datamodel.js (original)
+++ trunk/src/ajax/javascripts/datamodel.js Thu Jun 25 14:16:30 2009
@@ -1913,9 +1913,11 @@
var _content = null;
if(_contents && _contents.length > k) _content = _contents[k];
var occurrence = new OccurrenceC(_content, constraints[i].occurrenceTypes, constraints[i].constraints[j], constraints[i].uniqueConstraints, this.__containers__[i][j], min === 0 ? 1 : min, max === MMAX_INT ? -1 : max, title, dblClickHandler);
- if(min === 0) occurrence.disable();
+ if(min === 0 && !_content){
+ occurrence.disable();
+ occurrence.minimize();
+ }
this.__error__.insert({"before" : occurrence.getFrame()});
- if(min === 0)occurrence.minimize();
}
}
}
@@ -2199,11 +2201,19 @@
else {
this.__topicid__.__frames__[0].hideError();
}
+ if(this.__subjectIdentifier__.getContent().length === 0){
+ ret = false;
+ this.showError("The topic must contain at least one SubjectIdentifier!<br/>If it is not possible to insert one - please create a subjectidentifier-constraint for this topic (-type)!");
+ }
+ else if(ret === true){
+ this.hideError();
+ }
if(this.__subjectLocator__.isValid() === false) ret = false;
if(this.__subjectIdentifier__.isValid() === false) ret = false;
if(this.__name__.isValid() === false) ret = false;
if(this.__occurrence__.isValid() === false) ret = false;
+
return ret;
},
"getReferencedTopics" : function(){
@@ -2488,8 +2498,8 @@
var RoleContainerC = Class.create(ContainerC, {"initialize" : function($super, contents, associationRoleConstraints, rolePlayerConstraints, otherRoleConstraints, parent){
$super();
this.__frame__.writeAttribute({"class" : CLASSES.roleContainer()});
- this.__arContainer__ = new Object();
- this.__orContainer__ = new Object();
+ this.__arContainer__ = new Object(); this.__arContainer__.__frames__ = new Array();
+ this.__orContainer__ = new Object(); this.__orContainer__.__frames__ = new Array();
this.__associationRoleConstraints__ = associationRoleConstraints;
this.__otherRoleConstraints__ = otherRoleConstraints;
this.__rolePlayerConstraints__ = rolePlayerConstraints;
@@ -2567,7 +2577,7 @@
return {"usedContents" : usedContents, "contents" : contents, "alreadyUsedRoles" : alreadyUsedRoles};
},
"__createAdditionalRolesFromContents__" : function(contents,usedContents, alreadyUsedRoles, isARC){
- var roleContainer = this.__orContainer__.__frames__;
+ var roleContainer = this.__orContainer__.__frames__;
if(isARC === true) roleContainer = this.__arContainer__.__frames__;
if(roleContainer && roleContainer.length !== 0){
@@ -3972,8 +3982,7 @@
this.__datatype__.__frames__[0].remove();
this.__datatype__ = new Object();
}catch(err){}
-
- myself.__value__ = new Element("textarea", {"rows" : 3}).update(value);
+ myself.__value__ = new Element("textarea", {"rows" : 3}).setValue(value);
myself.__table__.insert({"bottom" : newRow(CLASSES.valueFrame(), "Resource Value", myself.__value__)});
if(cssTitle && cssTitle.length !== 0) myself.__value__.writeAttribute({"title" : cssTitle});
Modified: trunk/src/json/json_tmcl_validation.lisp
==============================================================================
--- trunk/src/json/json_tmcl_validation.lisp (original)
+++ trunk/src/json/json_tmcl_validation.lisp Thu Jun 25 14:16:30 2009
@@ -121,7 +121,7 @@
(not akos-are-topictype)
topictype-constraint)
;(return-from topictype-p nil))
- (error "~a is not a valid -- type for ~a" (uri (first (psis topic-instance))) (uri (first (psis topictype)))))
+ (error "~a is not a valid type for ~a" (uri (first (psis topic-instance))) (uri (first (psis topictype)))))
(loop for isa-of-this in isas-of-this
when (and (not (find isa-of-this current-checked-topics :test #'eq))
@@ -269,4 +269,26 @@
(topictype-of-p x nil)
x)
(condition () nil)))
- all-subtypes-of-all-instances)))))))
\ No newline at end of file
+ all-subtypes-of-all-instances)))))))
+
+
+(defun return-all-tmcl-types ()
+ "Returns all topics that are valid tmcl-types"
+ (let ((all-topics
+ (elephant:get-instances-by-class 'd:TopicC))
+ (topictype (get-item-by-psi json-tmcl-constants::*topictype-psi*))
+ (topictype-constraint (get-item-by-psi json-tmcl-constants::*topictype-constraint-psi*)))
+ (let ((all-types
+ (remove-if #'null
+ (map 'list #'(lambda(x)
+ (handler-case (progn
+ (json-tmcl::topictype-p x topictype topictype-constraint)
+ x)
+ (condition () nil))) all-topics))))
+ (let ((not-abstract-types
+ (remove-if #'null
+ (map 'list #'(lambda(x)
+ (unless (json-tmcl:abstract-p x)
+ x))
+ all-types))))
+ not-abstract-types))))
\ No newline at end of file
Modified: trunk/src/rest_interface/set-up-json-interface.lisp
==============================================================================
--- trunk/src/rest_interface/set-up-json-interface.lisp (original)
+++ trunk/src/rest_interface/set-up-json-interface.lisp Thu Jun 25 14:16:30 2009
@@ -107,28 +107,12 @@
"Returns all topics that are valid types -> so they have to be valid to the
topictype-constraint (if it exists) and the can't be abstract."
(declare (ignorable param))
- (handler-case (let ((all-topics
- (elephant:get-instances-by-class 'd:TopicC))
- (topictype (get-item-by-psi json-tmcl-constants::*topictype-psi*))
- (topictype-constraint (get-item-by-psi json-tmcl-constants::*topictype-constraint-psi*)))
- (let ((all-types
- (remove-if #'null
- (map 'list #'(lambda(x)
- (handler-case (progn
- (json-tmcl::topictype-p x topictype topictype-constraint)
- x)
- (condition () nil))) all-topics))))
- (let ((not-abstract-types
- (remove-if #'null
- (map 'list #'(lambda(x)
- (unless (json-tmcl:abstract-p x)
- x))
- all-types))))
- (setf (hunchentoot:content-type*) "application/json") ;RFC 4627
- (json:encode-json-to-string
- (map 'list #'(lambda(y)
- (map 'list #'uri y))
- (map 'list #'psis not-abstract-types))))))
+ (handler-case (let ((topic-types (json-tmcl::return-all-tmcl-types)))
+ (setf (hunchentoot:content-type*) "application/json") ;RFC 4627
+ (json:encode-json-to-string
+ (map 'list #'(lambda(y)
+ (map 'list #'uri y))
+ (map 'list #'psis topic-types))))
(condition (err) (progn
(setf (hunchentoot:return-code*) hunchentoot:+http-internal-server-error+)
(setf (hunchentoot:content-type*) "text")
More information about the Isidorus-cvs
mailing list