(www-display-object-desc): Add code to clickable image of clipped
[chise/est.git] / cwiki-view.el
index 570e6e3..6d48331 100644 (file)
@@ -69,6 +69,7 @@ size=\"64\" maxlength=\"256\" value=\"%s\">
        logical-feature chise-wiki-displayed-features
        parents
        GlyphWiki-id HNG-card HNG-card-id HNG-card-cobj ret object-spec
+       item-code page char-num glyph-image-id
        width height image-cobj base-image x y w h)
     (if (eq level 0)
        (setq level 1
@@ -190,10 +191,14 @@ li { margin: 0 0 0 2em; }
                           genre rdf-uri-object)
                 "")))
       (when (setq parents (www-get-feature-value object '<-denotational))
+       (if (characterp parents)
+           (setq parents (list parents)))
        (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-get-feature-value object '<-subsumptive))
+       (if (characterp parents)
+           (setq parents (list parents)))
        (princ (format "<p>%s %s</p>\n<hr>\n"
                       (www-format-value-as-char-list parents)
                       (www-format-feature-name '->subsumptive lang))))
@@ -273,9 +278,34 @@ li { margin: 0 0 0 2em; }
           (format "<img alt=\"%s\" src=\"%s\" />"
                   ret ret)))
        )
-       ((and (eq genre 'glyph-image)
-            (setq image-cobj
-                  (car (concord-object-get object '->image-resource))))
+       ((or (and (eq genre 'glyph-image)
+                (setq image-cobj
+                      (car (concord-object-get object '->image-resource))))
+           (and (eq genre 'character)
+                (setq ret (www-format-encode-string
+                           (est-format-object object 'readable)))
+                (string-match
+                 "<img alt=\"SW-JIGUGE\\([45]\\)-\\([0-9][0-9][0-9]\\)\\([0-9][0-9]\\)"
+                 ret)
+                (setq item-code (string-to-int (match-string 1 ret))
+                      page (string-to-int (match-string 2 ret))
+                      char-num (string-to-int (match-string 3 ret)))
+                (setq glyph-image-id
+                      (cond ((eq item-code 4)
+                             (intern
+                              (format "zinbun/toho/A024/A024%04d/char=%d"
+                                      (+ page 18) char-num))
+                             )
+                            ((eq item-code 5)
+                             (intern
+                              (format "zinbun/toho/A020/A020%04d/char=%d"
+                                      (+ page 16) char-num))
+                             )))
+                (setq image-cobj
+                      (concord-decode-object '=id glyph-image-id 'glyph-image))
+                (setq image-cobj
+                      (car (concord-object-get image-cobj '->image-resource)))
+                ))
        (if (and (setq ret (concord-object-get image-cobj '=location@iiif))
                 (setq base-image
                       (car (concord-object-get image-cobj '<-image-segment))))
@@ -457,56 +487,45 @@ size=\"30\" maxlength=\"30\" value=\"%s\">)</p>
           "<p>\n"
         "<li>\n"))
       (when (eq genre 'character)
-       (princ
-        "<form action=\"http://www.chise.org/ids-find\">\n")
-       (princ
-        (www-format-encode-string
-         (est-format-object object)
-         ;; (if (eq genre 'character)
-         ;;     (format "%c" object)
-         ;;   (format "%s" (concord-object-id object)))
-         ))
-       (princ
-        (format
-         " <input type=\"text\" name=\"components\"
+       (let ((object-str (est-format-object object))
+             encoded-object-for-form)
+         (princ
+          "<form action=\"http://www.chise.org/ids-find\">\n")
+         (princ (www-format-encode-string object-str))
+         (setq encoded-object-for-form
+               (with-temp-buffer
+                 (insert (encode-coding-string object-str 'utf-8-jp-er))
+                 (goto-char (point-min))
+                 (while (search-forward "&GT-" nil t)
+                   (replace-match "&amp;GT-" t t)
+                   )
+                 (buffer-string)))
+         (princ
+          (format
+           " <input type=\"text\" name=\"components\"
 size=\"30\" maxlength=\"30\" value=\"%s\" />"
-         (encode-coding-string
-          (est-format-object object)
-          ;; (if (eq genre 'character)
-          ;;     (char-to-string object)
-          ;;   (format "%s" (concord-object-id object)))
-          'utf-8-jp-er)))
-       (princ
-        (www-format-encode-string
-         "を\u542Bむ\u6F22\u5B57を\u63A2す"))
-       (princ " <input type=\"submit\" value=\"search\" />\n")
-       (princ "</form>\n")
+           encoded-object-for-form))
+         (princ
+          (www-format-encode-string
+           "を\u542Bむ\u6F22\u5B57を\u63A2す"))
+         (princ " <input type=\"submit\" value=\"search\" />\n")
+         (princ "</form>\n")
 
-       (princ
-        "<form action=\"http://www.chise.org/hng-ids-find\">\n")
-       (princ
-        (www-format-encode-string
-         (est-format-object object)
-         ;; (if (eq genre 'character)
-         ;;     (format "%c" object)
-         ;;   (format "%s" (concord-object-id object)))
-         ))
-       (princ
-        (format
-         " <input type=\"text\" name=\"components\"
+         (princ
+          "<form action=\"http://www.chise.org/hng-ids-find\">\n")
+         (princ (www-format-encode-string object-str))
+
+         (princ
+          (format
+           " <input type=\"text\" name=\"components\"
 size=\"30\" maxlength=\"30\" value=\"%s\" />"
-         (encode-coding-string
-          (est-format-object object)
-          ;; (if (eq genre 'character)
-          ;;     (char-to-string object)
-          ;;   (format "%s" (concord-object-id object)))
-          'utf-8-jp-er)))
-       (princ
-        (www-format-encode-string
-         "を\u542Bむ HNG の\u6F22\u5B57を\u63A2す"))
-       (princ " <input type=\"submit\" value=\"search\" />\n")
-       (princ "</form>\n")
-       )
+           encoded-object-for-form))
+         (princ
+          (www-format-encode-string
+           "を\u542Bむ HNG の\u6F22\u5B57を\u63A2す"))
+         (princ " <input type=\"submit\" value=\"search\" />\n")
+         (princ "</form>\n")
+       ))
       (princ
        (if (= level 1)
           "</p>\n"