]> git.plutz.net Git - rawnet/blobdiff - page_channel.sh
styling of channel display
[rawnet] / page_channel.sh
old mode 100644 (file)
new mode 100755 (executable)
index 223f882..b1fd4c5
@@ -26,7 +26,7 @@ if [ "$channel" -a -f "$chan_db" -a -r "$chan_db" ]; then
        $(grep "^${channel}     " "${chan_db}")
        EOF
   if [ "$CHANNEL_ID" ]; then
-           CHANNEL_NAME="$(UNSTRING "$CHANNEL_NAME")"
+           CHANNEL_NAME="$(UNSTRING "${CHANNEL_NAME}")"
     CHANNEL_DESCRIPTION="$(UNSTRING "$CHANNEL_DESCRIPTION")"
         CHANNEL_AUTHORS="$(UNSTRING "$CHANNEL_AUTHORS")"
     CHANNEL_DESCR_CACHE="$(UNSTRING "$CHANNEL_DESCR_CACHE")"
@@ -96,24 +96,52 @@ update_channel(){
       REDIRECT "${_BASE}/channel/${channel}/#ERROR_UPDATE_NOLOCK"
     fi
     ;;
+  update_channel_cancel)
+    REDIRECT "${_BASE}/channel/${channel}/"
+    ;;
   newvideo)
     video="$(POST video |checkid)"
-    # database video create
-    REDIRECT "${_BASE}/channel/${channel}/${video}/"
+
+    [ "$channel" -a "$USER_ID" -a ! "${CHANNEL_AUTHORS##*${USER_ID}*}" ] \
+    && mkdir -p -- "${_DATA}/${channel}/"
+
+    if [ ! "$video" ]; then
+      REDIRECT "${_BASE}/channel/${channel}/#ERROR_INVALID_ID"
+    elif [ ! "$channel" ]; then
+      REDIRECT "${_BASE}/channel/#ERROR_NOCHANNEL"
+    elif [ ! "$USER_ID" ]; then
+      REDIRECT "${_BASE}/channel/${channel}/#ERROR_NOTLOGGEDIN"
+    elif [ "${CHANNEL_AUTHORS##*${USER_ID}*}" ]; then
+      REDIRECT "${_BASE}/channel/${channel}/#ERROR_UPDATE_NOTALLOWED"
+    elif LOCK "$vid_db"; then
+      if grep -q '^${video}    ' "$vid_db"; then
+        RELEASE "$vid_db"
+        REDIRECT "${_BASE}/channel/${channel}/#ERROR_NEWVIDEO_EXISTS"
+      else
+               # ID    NAME    DESC    RESX    RESY    LENGTH  COVER   STATUS  UPLOADER HITS   FUTUREUSE
+       printf '%s      \\      \\      \\      \\      \\      \\      private %s      \\      \\\n' \
+               "$video" "$(STRING "$USER_ID")" \
+               >>"$vid_db"
+        RELEASE "$vid_db"
+        REDIRECT "${_BASE}/channel/${channel}/${video}/edit"
+      fi
+    else
+      REDIRECT "${_BASE}/channel/${channel}/#ERROR_NEWVIDEO_NOLOCK"
+    fi
     ;;
 esac
 
 w_video(){
   local CID="$1" thumb
-  local ID NAME DESCRIPTION RESX RESY LENGTH COVER STATUS UPLOADER HITS FUTUREUSE
-  if read -r ID NAME DESCRIPTION RESX RESY LENGTH COVER STATUS UPLOADER HITS FUTUREUSE; then
+  local ID NAME DESCRIPTION RESX RESY LENGTH COVER STATUS UPLOADER HITS DESCR_CACHE FUTUREUSE
+  if read -r ID NAME DESCRIPTION RESX RESY LENGTH COVER STATUS UPLOADER HITS DESCR_CACHE FUTUREUSE; then
     thumb="${_BASE}/${CID}/thumb_${ID}.jpg"
-    cat <<-EOF
-       [div .video
-         [h3 . $(UNSTRING "$NAME" |HTML)]
-         [img href="${thumb}" alt="$(UNSTRING "$DESCRIPTION" |HTML)"]
-       ]
-       EOF
+    [ "$NAME" = \\ ] && NAME="(Unnamed Video)"
+    printf '[div .video .thumb
+              [h3 [a href="%s/" . %s]]
+              [figure [img src="%s" alt=""]]
+              [div .description . %s]
+            ]' "$ID" "$(UNSTRING "$NAME" |HTML)" "$thumb" "$(UNSTRING "$DESCR_CACHE")"
   else
     return 1
   fi
@@ -124,12 +152,15 @@ w_channel(){
   local ID NAME DESCRIPTION LOGO THEME AUTHORS DESCR_CACHE FUTUREUSE
   if read -r ID NAME DESCRIPTION LOGO THEME AUTHORS DESCR_CACHE FUTUREUSE; then
     vid_db="${_DATA}/${ID}/videos.db"
+    [ "$NAME" = \\ ] && NAME="(UNNAMED CHANNEL)"
     cat <<-EOF
        [div .channel
-         [h2 . $(UNSTRING "$NAME" |HTML)]
-         [div .description . $(UNSTRING "$DESCR_CACHE")]
-         $( [ -f "$vid_db" -a -r "$vid_db" ] \
-            && while w_video "$ID"; do :; done <"$vid_db"
+         [div .description
+           [h2 [a href="${_BASE}/channel/${ID}/" $(UNSTRING "${NAME}" |HTML)]]
+           $(UNSTRING "$DESCR_CACHE")
+         ]$(
+            [ -f "$vid_db" -a -r "$vid_db" ] \
+           && while w_video "$ID"; do :; done <"$vid_db"
          )
        ]
        EOF
@@ -153,22 +184,36 @@ w_channel_list(){
 if [ "$channel" -a "$video" ]; then
   . ${_EXEC}/page_video.sh
 elif [ "$channel" -a "$action" = edit ]; then
+  [ "$USER_ID" -a ! "${CHANNEL_AUTHORS##*${USER_ID}*}" ] \
+  || REDIRECT "${_BASE}/${channel}/#ERROR_EDIT_NOTALLOWED"
   yield_page "$CHANNEL_NAME - Edit" "channel edit" <<-EOF
        [form .channel .edit method=POST
          [input name="name" value="$(HTML "$CHANNEL_NAME")" placeholder="Channel Name"]
-         <textarea name="description" placeholder="Description">$(HTML "$CHANNEL_DESCRIPTION")</textarea>
+         [textarea name="description" placeholder="Description" . $(HTML "$CHANNEL_DESCRIPTION")]
          [submit "action" "update_channel" . Update]
+         [submit "action" "update_channel_cancel" . Cancel]
        ]
        EOF
 elif [ "$channel" ]; then
   yield_page "$CHANNEL_NAME" "channel" <<-EOF
+       [nav [a href="../" Channels] - [span $(HTML "${CHANNEL_NAME:-(Unnamed Channel)}")]
+         $( [ "$USER_ID" -a ! "${CHANNEL_AUTHORS##*${USER_ID}*}" ] \
+             && printf ' - [a href="edit" edit]'
+          )
+       ]
        [h1 .name $(HTML "$CHANNEL_NAME")]
        [div .description . ${CHANNEL_DESCR_CACHE}]
-       [div .videos
-         $( [ -f "$vid_db" -a -r "$vid_db" ] \
-            && while w_video "$ID"; do :; done <"$vid_db"
-         )
-       ]
+       [h1 .videos Videos]
+       [div .videos . $(
+          [ "$USER_ID" -a ! "${CHANNEL_AUTHORS##*${USER_ID}*}" ] \
+         && printf '
+             [form .video .newvideo method=POST
+               [hidden "video" "%s"]
+               [submit "action" "newvideo" New Video]
+             ]' "$(timeid)"
+         [ -f "$vid_db" -a -r "$vid_db" ] \
+         && while w_video "$ID"; do :; done <"$vid_db"
+       )]
        EOF
 else
   yield_page "Channels" "channels" <<-EOF