(www-page-display-dir): Use `img.cgi' instead of `page.cgi' for
[elisp/album.git] / www-page.el
index 1682d09..6b30268 100644 (file)
@@ -41,7 +41,7 @@
     (VGA        640  480)
     (SVGA       800  600)
     (XGA       1024  768)
-    (WXGA      1280  768)
+    (WXGA      1280  800)
     (SXGA      1280 1024)
     (SXGA+     1400 1050)
     (WSXGA+    1680 1050)
         (concat dest (substring string i))
         coding-system))))
 
-(defun www-page-display-thumbnails (url-dir &optional size image-root
+(defun www-page-display-dir (url-dir &optional size image-root
                                             lang title parent-url)
   (setq url-dir (file-name-as-directory url-dir))
+  (princ "Content-Type: text/html; charset=UTF-8
+
+")
   (let* ((desc-file
          (expand-file-name "dir.desc"
                            (expand-file-name url-dir image-root)))
@@ -77,8 +80,8 @@
            (when (file-exists-p desc-file)
              (insert-file-contents desc-file)
              (read (current-buffer)))))
-        source-images
-        file
+        source-images ref-images
+        file i ref-file prev-file next-file file-desc
         note)
     (when (setq title (assq 'title params))
       (setq title (cdr title)))
@@ -88,6 +91,8 @@
             (substring url-dir 0 (1- (length url-dir))))))
     (when (setq source-images (assq 'files params))
       (setq source-images (cdr source-images)))
+    (when (setq ref-images (assq 'refs params))
+      (setq ref-images (cdr ref-images)))
     (when (setq note (assq 'note params))
       (setq note (cdr note)))
     (when (setq parent-url (assq 'exit params))
        (insert (format ".html.%s&size=%s\">"
                        (or lang 'en)
                        (or size 'VGA)))
-       (insert (format "<img alt=\"%s\" src=\"page.cgi?%s%s&size=thumbnail\">"
+       (insert (format "<img alt=\"%s\" src=\"img.cgi?%s%s&size=thumbnail\">"
                        file url-dir file))
        (insert "</a>\n"))
 
+      (setq i 1)
+      (while ref-images
+       (setq ref-file (car ref-images))
+       (setq next-file
+             (if (cdr ref-images)
+                 (format "%d" (1+ i))))
+       (setq file-desc
+             (expand-file-name
+              (format "%d.desc" i)
+              (expand-file-name url-dir image-root)))
+       (unless (file-exists-p file-desc)
+         (with-temp-buffer
+           (insert "(")
+           (if prev-file
+               (insert (format "(prev-file . %S)\n " prev-file)))
+            ;; (insert (format "(ref . \"%s%s\")\n "
+            ;;                 url-dir ref-file))
+           (insert (format "(ref . \"%s\")\n "
+                           ref-file))
+           (if next-file
+               (insert (format "(next-file . %S)\n " next-file)))
+           (insert "))\n")
+           (write-region (point-min)(point-max) file-desc)))
+       (setq file (file-name-nondirectory ref-file))
+       (insert "<a href=\"page.cgi?")
+       (insert url-dir)
+       (insert (format "%d.html.%s&size=%s\">"
+                       i
+                       (or lang 'en)
+                       (or size 'VGA)))
+        ;; (insert (format "<img alt=\"%s\" src=\"page.cgi?%s%s&size=thumbnail\">"
+        ;;                 file url-dir ref-file))
+       (insert (format "<img alt=\"%s\" src=\"%s&size=thumbnail\">"
+                       file ref-file))
+       (insert "</a>\n")
+       (setq prev-file (format "%d" i))
+       (setq i (1+ i)
+             ref-images (cdr ref-images)))
+
       (when note
        (insert "<p>")
        (insert note))
 </html>
 ")
       (encode-coding-region (point-min)(point-max) www-page-coding-system)
-      (princ "Content-Type: text/html; charset=UTF-8
-
-")
       (princ (buffer-string))
       )))
 
                (insert-file-contents desc-file)
                (read (current-buffer)))))
           dir-desc-file
+          image-file image-ref
           prev-file next-file
           prev-grade next-grade
           rest spec ret)
                (when (file-exists-p dir-desc-file)
                  (insert-file-contents dir-desc-file)
                  (read (current-buffer)))))
-       (when (setq rest (assq 'files params))
-         (setq rest (cdr rest)))
-       (setq ret (file-name-nondirectory file))
-       (while (and rest
-                   (not (string= (car rest) ret)))
-         (setq prev-file (car rest)
-               rest (cdr rest)))
-       (setq next-file (car (cdr rest)))
-       (if prev-file
-           (setq params (list (cons 'prev-file prev-file))))
-       (if next-file
-           (setq params (cons (cons 'next-file next-file)
-                              params)))
-       (with-temp-buffer
-         (insert (format "%S" params))
-          ;; (princ "X-XEmacs-Message: ")
-         (write-region (point-min)(point-max) desc-file)
-          ;; (princ "\n")
-         ))
+       (unless (assq 'refs params)
+         (when (setq rest (assq 'files params))
+           (setq rest (cdr rest)))
+         (setq ret (file-name-nondirectory file))
+         (while (and rest
+                     (not (string= (car rest) ret)))
+           (setq prev-file (car rest)
+                 rest (cdr rest)))
+         (setq next-file (car (cdr rest)))
+         (if prev-file
+             (setq params (list (cons 'prev-file prev-file))))
+         (if next-file
+             (setq params (cons (cons 'next-file next-file)
+                                params)))
+         (if (file-directory-p (file-name-directory desc-file))
+             (with-temp-buffer
+               (insert (format "%S" params))
+               ;; (princ "X-XEmacs-Message: ")
+               (write-region (point-min)(point-max) desc-file)
+               ;; (princ "\n")
+               ))))
+      (if (setq image-ref (assq 'ref params))
+         (setq image-ref (cdr image-ref))
+       (setq image-file file))
       (if (setq prev-file (assq 'prev-file params))
          (setq prev-file (cdr prev-file)))
       (if (setq next-file (assq 'next-file params))
                          (file-name-directory file) next-file
                          (or lang 'en)
                          size)))
-      (insert (format "<img alt=\"%s\" src=\"page.cgi?%s&size=%s\">"
-                     file file size))
-      (if next-file
-         (insert "</a>"))
-      (insert "
+       (if image-ref
+          (insert
+           (format "<img alt=\"%s\" src=\"%s&size=%s\">"
+                   file image-ref size))
+        (if (file-exists-p (expand-file-name image-file image-root))
+            (insert
+             (format "<img alt=\"%s\" src=\"img.cgi?%s&size=%s\">"
+                     file image-file size))
+          (insert "<p>")
+          (insert (format
+                   (cond
+                    ((eq lang 'ja)
+                     "\e$B2hA|%U%!%$%k\e(B %s \e$B$,8+IU$+$j$^$;$s!#\e(B\n")
+                    (t
+                     "Image file %s is not found.\n"))
+                   file))))
+
+       (if next-file
+          (insert "</a>"))
+       )
+    (insert "
 <hr>
 
 ")
-      (insert
-       (format "<a href=\"page.cgi?%s&lang=%s&size=%s\">[index]</a>"
-              (file-name-directory file)
-              (or lang 'en)
-              size))
-      (insert "
+    (insert
+     (format "<a href=\"page.cgi?%s&lang=%s&size=%s\">[index]</a>"
+            (file-name-directory file)
+            (or lang 'en)
+            size))
+    (insert "
 </body>
 </html>
-"))
+")
     (encode-coding-region (point-min)(point-max) www-page-coding-system)
     (princ (buffer-string))
     ))
 
 (defun www-page-display-image (file &optional size image-root)
   (setq file (expand-file-name file image-root))
-  (let (file-dir file-name
-       resized-file resized-dir
-       spec)
-    (cond
-     (size
-      (setq file-dir (file-name-directory file)
-           file-name (file-name-nondirectory file))
-      (setq resized-file
-           (expand-file-name
-            file-name
-            (setq resized-dir
-                  (expand-file-name
-                   size file-dir))))
-      (unless (file-exists-p resized-file)
-       (setq size (intern size))
-       (if (setq spec (assq size www-page-size-specs))
-           (progn
-             (condition-case nil
-                 (unless (file-exists-p resized-dir)
-                   (make-directory resized-dir))
-               (error nil))
-             (call-process
-              "convert" nil nil nil
-              "-resize" (format "%dx%d>" (nth 1 spec)(nth 2 spec))
-              file resized-file)
-             )
-         (setq resized-file file)))
-      ;; (princ resized-file)
-      (setq file resized-file)
-      )
-     (t
-      ;; (princ file)
-      ))
-    (princ (format "Content-Type: %s"
-                  (with-temp-buffer
-                    (call-process
-                     "file"
-                     nil t t
-                     "-b" "--mime" file)
-                    (insert "\n")
-                    (let ((coding-system-for-read 'binary)
-                          (coding-system-for-write 'binary))
-                      (insert-file-contents-literally file))
-                    (buffer-string))))))
+  (when (file-exists-p file)
+    (let (file-dir file-name
+                  resized-file resized-dir
+                  spec)
+      (cond
+       (size
+       (setq file-dir (file-name-directory file)
+             file-name (file-name-nondirectory file))
+       (setq resized-file
+             (expand-file-name
+              file-name
+              (setq resized-dir
+                    (expand-file-name
+                     size file-dir))))
+       (unless (file-exists-p resized-file)
+         (setq size (intern size))
+         (if (setq spec (assq size www-page-size-specs))
+             (progn
+               (condition-case nil
+                   (unless (file-exists-p resized-dir)
+                     (make-directory resized-dir))
+                 (error nil))
+               (call-process
+                "convert" nil nil nil
+                "-resize" (format "%dx%d>" (nth 1 spec)(nth 2 spec))
+                file resized-file)
+               )
+           (setq resized-file file)))
+       ;; (princ resized-file)
+       (setq file resized-file)
+       )
+       (t
+       ;; (princ file)
+       ))
+      (princ (format "Content-Type: %s"
+                    (with-temp-buffer
+                      (call-process
+                       "file"
+                       nil t t
+                       "-b" "--mime" file)
+                      (insert "\n")
+                      (let ((coding-system-for-read 'binary)
+                            (coding-system-for-write 'binary))
+                        (insert-file-contents-literally file))
+                      (buffer-string)))))))
 
 (defun www-page-batch-get ()
   ;; (set-coding-priority-list
                          default-directory)))
     (setq command-line-args-left (cdr command-line-args-left))
     (cond ((eq method 'dir)
-          (www-page-display-thumbnails target size image-root lang)
+          (www-page-display-dir target size image-root lang)
           )
          ((eq method 'page)
           (www-page-display-page target size image-root lang)