Changeset 3716

Show
Ignore:
Timestamp:
08/01/08 08:57:30 (4 months ago)
Author:
hans
Message:

more news work.
make owned-object have only one instead of multiple owners.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/bknr/modules/album/album.lisp

    r2417 r3716  
    77         (images (when user 
    88                   (remove-if-not #'(lambda (image) 
    9                                       (member user (owned-object-owners image))) 
     9                                      (eq user (owned-object-owner image))) 
    1010                                  (get-keyword-store-images 
    1111                                   (make-keyword-from-string album)))))) 
  • trunk/bknr/web/src/images/image.lisp

    r3430 r3716  
    124124        (let ((store-image (apply #'make-object  
    125125                                  class-name 
    126                                   :owners (list user) 
     126                                  :owner user 
    127127                                  :timestamp (get-universal-time) 
    128128                                  :name name 
  • trunk/bknr/web/src/packages.lisp

    r3683 r3716  
    137137 
    138138           #:owned-object 
    139            #:owned-object-owners 
     139           #:owned-object-owner 
    140140           #:store-objects-owned-by 
    141141           #:store-object-owners 
  • trunk/bknr/web/src/rss/rss.lisp

    r3713 r3716  
    180180transaction context.") 
    181181  (:method ((channel rss-channel) item) 
    182     (setf (slot-value channel 'items) (cons item (rss-channel-items channel)))) 
     182    (push item (slot-value channel 'items))) 
    183183  (:method ((channel string) item) 
    184184    (aif (find-rss-channel channel) 
  • trunk/bknr/web/src/sysclasses/user.lisp

    r3694 r3716  
    191191 
    192192(define-persistent-class owned-object (store-object) 
    193   ((owners :update :initform nil 
    194            :index-type hash-list-index 
    195            :index-reader store-object-owners))) 
    196  
    197 (deftransaction owned-object-remove-owner (object owner) 
    198   (setf (owned-object-owners object) 
    199         (remove owner (owned-object-owners object)))) 
    200  
    201 (deftransaction owned-object-add-owner (object owner) 
    202   (pushnew owner (owned-object-owners object))) 
     193  ((owner :update :initform nil 
     194          :index-type hash-index 
     195          :index-reader store-object-owner))) 
     196 
     197(defmethod convert-slot-value-while-restoring ((object owned-object) (slot-name (eql 'owners)) owners) 
     198  (when owners 
     199    (unless (= 1 (length owners)) 
     200      (warn "object ~A has more than one owner ~S, using first" object owners)) 
     201    (setf (slot-value object 'owner) (car owners)))) 
    203202 
    204203(defgeneric user-owns-object-p (user object)) 
    205204 
    206 (defmethod user-owns-object-p ((user user) object
     205(defmethod user-owns-object-p ((user user) (object t)
    207206  nil) 
    208207 
    209208(defmethod user-owns-object-p ((user user) (object owned-object)) 
    210   (member user (owned-object-owners object))) 
     209  (eq user (owned-object-owner object))) 
    211210 
    212211(define-persistent-class message-event (event) 
  • trunk/projects/quickhoney/src/handlers.lisp

    r3713 r3716  
    137137                                  "webserver@quickhoney.com" 
    138138                                  (remove-duplicates (mapcar #'user-email 
    139                                                              (or (owned-object-owners image) 
     139                                                             (or (owned-object-owner image) 
    140140                                                                 (list (find-user "n") (find-user "p")))))) 
    141141      (cl-mime:print-mime 
     
    439439    ; do nothing 
    440440    ) 
     441  (:method :before ((image quickhoney-image)) 
     442    (when (owned-object-owner image) 
     443      (encode-object-element "owner" (user-login (owned-object-owner image)))) 
     444    (encode-object-element "date" (format-date-time (blob-timestamp image) :vms-style t :show-time nil)) 
     445    (encode-object-element "name" (store-image-name image))) 
    441446  (:method ((image quickhoney-image)) 
    442447    (let ((vectorp (member :vector (store-image-keywords image)))) 
    443       (encode-object-element "uploader" (if vectorp "Peter" "Nana")) 
    444448      (encode-object-element "category" (if vectorp "vector" "pixel")) 
    445       (encode-object-element "subcategory" "unknown") 
    446       (encode-object-element "date" (format-date-time (rss-item-pub-date image) :vms-style t :show-time nil)) 
    447       (encode-object-element "name" (store-image-name image))))) 
     449      (encode-object-element "subcategory" "unknown"))) 
     450  (:method ((item quickhoney-news-item)) 
     451    (encode-object-element "title" (quickhoney-news-item-title item)) 
     452    (encode-object-element "text" (quickhoney-news-item-text item)))) 
    448453 
    449454(defmethod handle-object ((handler json-news-handler) (channel rss-channel)) 
  • trunk/projects/quickhoney/src/quickhoney.asd

    r3713 r3716  
    3434               (:file "imageproc" :depends-on ("config")) 
    3535               (:file "json" :depends-on ("packages")) 
    36                (:file "handlers" :depends-on ("json" "layout" "config" "image")) 
     36               (:file "handlers" :depends-on ("json" "layout" "config" "image" "news")) 
    3737               (:file "tags" :depends-on ("image")) 
    3838               (:file "webserver" :depends-on ("handlers")) 
  • trunk/projects/quickhoney/website/static/javascript.js

    r3713 r3716  
    247247                                         DIV(null, 
    248248                                             H1(null, item.name), 
    249                                              item.date, ' by ', item.uploader, ' | ', 
     249                                             item.date, ' by ', item.owner, ' | ', 
    250250                                             A({ href: '/index#' + item.category + '/' + item.subcategory + '/' + item.image_name }, 'permalink'), 
    251251                                             BR(), 
     
    462462                   footer_hide(); 
    463463                   loadJSONDoc('/json-news-archive/quickhoney').addCallbacks(load_news_archive, alert); 
    464                    //                   load_news(); 
     464                   loadJSONDoc('/json-news/quickhoney').addCallbacks(load_news, alert); 
    465465               }); 
    466466