update.
[chise/est.git] / cwiki-view.el
index 30d07ae..826503f 100644 (file)
@@ -2,14 +2,16 @@
 (require 'cwiki-common)
 
 (defvar chise-wiki-view-url "view.cgi")
-(defvar chise-wiki-edit-url "edit/edit.cgi")
-(defvar chise-wiki-add-url "edit/add.cgi")
+(defvar chise-wiki-edit-url "edit.cgi")
+(defvar chise-wiki-add-url "add.cgi")
 
-(defun www-display-char-desc (uri-char &optional lang level)
+(defun www-display-char-desc (uri-char &optional lang level simple)
   (unless level
     (setq level 1))
   (let ((char (www-uri-decode-char uri-char))
-       logical-feature displayed-features)
+       logical-feature chise-wiki-displayed-features
+       parents
+       GlyphWiki-id)
     (when (characterp char)
       (when (= (length uri-char) 1)
        (setq uri-char (www-uri-encode-char char)))
                  (decode-uri-string uri-char 'utf-8-mcs-er))
          'utf-8-mcs-er))
        (princ "<body>\n"))
-      (princ (format "<h%d>%s</h%d>\n"
+      (dolist (feature (char-feature-property '$object 'additional-features))
+       (mount-char-attribute-table
+        (char-feature-name-at-domain feature '$rev=latest)))
+      (princ
+       (format
+       (if simple
+           "<div style=\"text-align:right;\">
+<a href=\"edit/view.cgi?char=%s\">
+<input type=\"submit\" value=\"Edit\" />
+</a>
+<input type=\"submit\" value=\"New Account\" />
+</div>
+<hr />\n"
+         "<div style=\"text-align:right;\">
+<a href=\"../view.cgi?char=%s\">
+<input type=\"submit\" value=\"Simple\" />
+</a>
+</div>
+<hr />\n")
+       uri-char))
+      (when (setq parents (www-char-feature char '<-denotational))
+       (princ (format "<p>%s %s</p>\n<hr>\n"
+                      (www-format-value-as-char-list parents)
+                      (www-format-feature-name '->denotational lang))))
+      (when (setq parents (www-char-feature char '<-subsumptive))
+       (princ (format "<p>%s %s</p>\n<hr>\n"
+                      (www-format-value-as-char-list parents)
+                      (www-format-feature-name '->subsumptive lang))))
+      (setq GlyphWiki-id (char-GlyphWiki-id char))
+      (princ (format "<h%d>%s%s</h%d>\n"
                     level
                     (www-format-encode-string (char-to-string char))
+                    (if GlyphWiki-id
+                        (format
+                         " <a href=\"http://glyphwiki.org/wiki/%s\"><img alt=\"%s\" src=\"http://glyphwiki.org/glyph/%s.50px.png\" /></a>"
+                         GlyphWiki-id
+                         GlyphWiki-id GlyphWiki-id)
+                      "")
                     level))
       (if (> level 1)
          (princ "<ul>"))
-      (dolist (feature (char-feature-property '$object 'additional-features))
-       (mount-char-attribute-table
-        (char-feature-name-at-domain feature '$rev=latest)))
       (dolist (cell (sort (char-attribute-alist char)
                          (lambda (a b)
-                           (char-attribute-name< (car a)(car b)))))
+                           (char-attribute-name<
+                            (char-feature-name-sans-versions (car a))
+                            (char-feature-name-sans-versions (car b))))))
        (setq logical-feature (char-feature-name-sans-versions (car cell)))
-       (unless (memq logical-feature displayed-features)
-         (push logical-feature displayed-features)
+       (unless (memq logical-feature chise-wiki-displayed-features)
+         (push logical-feature chise-wiki-displayed-features)
          (princ
           (if (= level 1)
-              "<p>\n"
+              "<div class=\"feature\" style=\"line-height:150%\">\n"
             "<li>\n"))
          (princ
           (www-format-eval-list
-           (or (char-feature-property logical-feature ; (car cell)
-                                      'format)
-               '((name) " : " (value)))
+           (www-feature-format logical-feature)
+            ;; (or (char-feature-property logical-feature ; (car cell)
+            ;;                            'format)
+            ;;     '((name) " : " (value)))
            char
            logical-feature ; (car cell)
-           lang uri-char))
-         (princ
-          (format " <a href=\"%s?char=%s&feature=%s&format=wiki-text\"
+           lang uri-char
+           nil simple))
+         (unless simple
+           (princ
+            (format " <a href=\"%s?char=%s&feature=%s&format=wiki-text\"
 ><input type=\"submit\" value=\"note\" /></a>"
-                  chise-wiki-edit-url
-                  (www-format-encode-string uri-char)
-                  (www-format-encode-string
-                   (www-uri-encode-feature-name
-                    (intern (format "%s*note"
-                                    logical-feature ; (car cell)
-                                    ))))))
+                    chise-wiki-edit-url
+                    (www-format-encode-string uri-char)
+                    (www-format-encode-string
+                     (www-uri-encode-feature-name
+                      (intern (format "%s*note"
+                                      logical-feature ; (car cell)
+                                      )))))))
          (princ
           (if (= level 1)
-              "</p>\n"
+              "</div>\n"
             "<li>\n"))
          ))
       (princ
        (if (= level 1)
           "<p>\n"
         "<li>\n"))
-      (princ
-       (format "<a href=\"%s?char=%s\"
+      (unless simple
+       (princ
+        (format "<a href=\"%s?char=%s\"
 ><input type=\"submit\" value=\"add feature\" /></a>
 "
-              chise-wiki-add-url
-              (www-format-encode-string uri-char)))
+                chise-wiki-add-url
+                (www-format-encode-string uri-char))))
+      (princ
+       (if (= level 1)
+          "<p>\n"
+        "<li>\n"))
+      (princ
+       "<form action=\"http://chise.zinbun.kyoto-u.ac.jp/ids-find\">\n")
+      (princ
+       (www-format-encode-string
+       (format "%c" char)))
+      (princ
+       (format
+       " <input type=\"text\" name=\"components\"
+size=\"30\" maxlength=\"30\" value=\"%s\" />"
+       (encode-coding-string (char-to-string char) 'utf-8-jp-er)))
+      ;; (princ (www-format-encode-string "と"))
+      ;; (princ "<input type=\"text\" name=\"additional-components\"
+size=\;; "30\" maxlength=\"30\" value=\"\" />")
+      (princ
+       (www-format-encode-string
+       "を\u542Bむ\u6F22\u5B57を\u63A2す"))
+      (princ " <input type=\"submit\" value=\"search\" />\n")
+      (princ "</form>\n")
       (princ
        (if (= level 1)
           "</p>\n"
         "<li>\n"))
       )))
 
-(defun www-display-feature-desc (uri-feature-name uri-char &optional lang)
+(defun www-display-feature-desc (uri-feature-name uri-char
+                                                 &optional lang simple)
   (let ((feature-name (www-uri-decode-feature-name uri-feature-name))
        (name@lang (intern (format "name@%s" lang))))
     (princ
       'utf-8-mcs-er))
     (princ "<body>\n")
     (princ
+     (format
+      (if simple
+         "<div style=\"text-align:right;\">
+<a href=\"edit/view.cgi?feature=%s&char=%s\">
+<input type=\"submit\" value=\"Edit\" />
+</a>
+<input type=\"submit\" value=\"New Account\" />
+</div>
+<hr />\n"
+         "<div style=\"text-align:right;\">
+<a href=\"../view.cgi?feature=%s&char=%s\">
+<input type=\"submit\" value=\"Simple\" />
+</a>
+</div>
+<hr />\n")
+      uri-feature-name uri-char))
+    (princ
      (format "<h1>%s</h1>\n"
             (www-format-encode-string
              (symbol-name feature-name))))
     (princ (format "<p>name : %s "
                   (or (www-format-feature-name feature-name) "")))
-    (princ
-     (format " <a href=\"%s?feature=%s&property=name&format=string&char=%s\"
-><input type=\"submit\" value=\"edit\" /></a>"
-            chise-wiki-edit-url
-            uri-feature-name
-            uri-char))
-    ;; (www-html-display-text
-    ;;  (format "[[[edit|%s?feature=%s&property=name&char=%s]]]"
-    ;;          ;; (char-feature-property feature-name 'name)
-    ;;          chise-wiki-edit-url
-    ;;          uri-feature-name ; (www-uri-encode-feature-name feature-name)
-    ;;          uri-char))
-    (princ "</p>")
+    (unless simple
+      (princ
+       (format
+       " <a href=\"%s?feature=%s&property=name&format=string&char=%s\">"
+       chise-wiki-edit-url
+       uri-feature-name
+       uri-char))
+      (princ "<input type=\"submit\" value=\"edit\" /></a>\n"))
+    (princ "</p>\n")
     (when lang
       (princ "<p>")
       (princ
        (format "%s : %s"
                name@lang
                (or (char-feature-property feature-name name@lang) ""))))
-      (princ
-       (format " <a href=\"%s?feature=%s&property=%s&format=string&char=%s\"
-><input type=\"submit\" value=\"edit\" /></a>"
-              chise-wiki-edit-url
-              uri-feature-name
-              name@lang
-              uri-char))
-      ;; (www-html-display-text
-      ;;  (format " [[[edit|%s?feature=%s&property=%s&char=%s]]]"
-      ;;          chise-wiki-edit-url
-      ;;          uri-feature-name
-      ;;          name@lang
-      ;;          uri-char))
-      (princ "</p>"))
+      (unless simple
+       (princ
+        (format
+         " <a href=\"%s?feature=%s&property=%s&format=string&char=%s\">"
+         chise-wiki-edit-url
+         uri-feature-name
+         name@lang
+         uri-char))
+       (princ "<input type=\"submit\" value=\"edit\" /></a>\n"))
+      (princ "</p>\n"))
     (www-html-display-paragraph
      (format "type : %s"
              (or (www-feature-type feature-name)
                 ;; (char-feature-property feature-name 'type)
                 'generic)))
-    (www-html-display-paragraph
-     (format "value-format : %s"
-            (www-xml-format-list
-             (or (www-feature-value-format feature-name)
-                 'default))))
-    (www-html-display-paragraph
-     (format "format : %s"
-            (www-xml-format-list
-             (or (char-feature-property feature-name 'format)
-                 '((name) " : " (value))))))
+    (princ (format "<p>value-format : %s "
+                  (www-format-value
+                   nil 'value-format 
+                   (or (www-feature-value-format feature-name)
+                       'default)
+                   'default
+                   'without-tags)))
+    (unless simple
+      (princ
+       (format
+       " <a href=\"%s?feature=%s&property=value-format&format=wiki-text&char=%s\"
+>"
+       chise-wiki-edit-url
+       uri-feature-name
+       uri-char))
+      (princ "<input type=\"submit\" value=\"edit\" /></a>\n"))
+    (princ "</p>\n")
+
+    (princ "<p>format : ")
+    (www-html-display-text
+     (decode-coding-string
+      (www-xml-format-list
+       (www-feature-format feature-name))
+      'utf-8-mcs-er))
+    (unless simple
+      (princ
+       (format
+       " <a href=\"%s?feature=%s&property=format&format=wiki-text&char=%s\"
+>"
+       chise-wiki-edit-url
+       uri-feature-name
+       uri-char))
+      (princ "<input type=\"submit\" value=\"edit\" /></a>\n"))
+    (princ "</p>\n")
+    
     (www-html-display-paragraph
      (format "description : %s"
              (or (char-feature-property feature-name 'description)
       (let* ((target (pop command-line-args-left))
             (user (pop command-line-args-left))
             (accept-language (pop command-line-args-left))
+            (mode (intern (pop command-line-args-left)))
             (lang
              (intern
               (car (split-string
 ")
        (cond
         ((stringp target)
+         (when (string-match "^char=\\(&[^&;]+;\\)" target)
+           (setq ret (match-end 0))
+           (setq target
+                 (concat "char="
+                         (www-uri-encode-char
+                          (www-uri-decode-char (match-string 1 target)))
+                         (substring target ret))))
          (setq target
                (mapcar (lambda (cell)
                          (if (string-match "=" cell)
          (setq ret (car target))
          (cond ((eq (car ret) 'char)
                 (www-display-char-desc
-                  (cdr ret) ; (decode-uri-string (cdr ret) 'utf-8-mcs-er)
-                 lang)
+                  (cdr ret)
+                 lang nil
+                 (eq mode 'simple))
                 )
                ((eq (car ret) 'feature)
                 (www-display-feature-desc
                  (decode-uri-string (cdr ret) 'utf-8-mcs-er)
                   (cdr (assq 'char target))
-                 ;; (decode-uri-string (cdr (assq 'char target)))
-                 lang)
+                 lang
+                 (eq mode 'simple))
                 ))
          ))
        (princ "\n<hr>\n")
+       (princ (format "mode=%S\n" mode))
        (princ (format "user=%s\n" user))
-       (princ (format "local user=%s\n" (user-login-name)))
+        ;; (princ (format "local user=%s\n" (user-login-name)))
        (princ (format "lang=%S\n" lang))
-       (princ emacs-version)
-       (princ " CHISE ")
-       (princ xemacs-chise-version)
+       (princ (emacs-version))
+        ;; (princ " CHISE ")
+        ;; (princ xemacs-chise-version)
        (princ "
 </body>
 </html>")