]> git.plutz.net Git - rawnet/blob - widgets.sh
refactoring: fewer global variables, manage all url parsing in index.cgi, split some...
[rawnet] / widgets.sh
1 #!/bin/sh
2
3 ["$include_widgets" ] && return 0
4 include_widgets="$0"
5
6 . "$_EXEC/db_channel.sh"
7 . "$_EXEC/db_video.sh"
8
9 AUTHOR(){
10   if [ "$CHANNEL_ID" -a "$USER_ID" -a ! "${CHANNEL_AUTHORS##*${USER_ID}*}" ]; then
11     return 0
12   else
13     return 1
14   fi
15 }
16
17 w_video(){
18   local thumb
19   eval "$LOCAL_VIDEO"
20
21   if read_video; then
22     VIDEO_LENGTH="${VIDEO_LENGTH%.*}"
23     [ "${VIDEO_STATUS}" = public ] || AUTHOR || return 0
24
25     thumb="${_BASE}/video/${CHANNEL_ID}/${VIDEO_ID}.thumb.jpg"
26     [ "$NAME" = \\ ] && NAME="(Unnamed Video)"
27     printf '[div .video .thumb
28               [a href="%s/channel/%s/%s/"
29                 [h3 . %s]
30                 [figure [img src="%s" alt=""]]
31                 [span .duration . %i:%02i]
32                 [div .description . %s]
33               ]
34             ]' "$_BASE" "$CHANNEL_ID" "$VIDEO_ID" \
35                "$(HTML "${VIDEO_NAME:-(Unnamed Video)}")" \
36                "$thumb" \
37                "$((VIDEO_LENGTH / 60))" "$((VIDEO_LENGTH % 60))" \
38                "$(UNSTRING "$DESCR_CACHE")"
39   else
40     return 1
41   fi
42 }
43
44 w_channel(){
45   local vid_db
46   eval "$LOCAL_CHANNEL"
47
48   if read_channel; then
49     vid_db="${_DATA}/${CHANNEL_ID}/videos.db"
50
51     cat <<-EOF
52         [div .channel
53           [div .description
54             [h2 [a href="${_BASE}/channel/${CHANNEL_ID}/" $(HTML "${CHANNEL_NAME:-(Unnamed Channel)}")]]
55             ${CHANNEL_DESCR_CACHE}
56           ]$(
57             [ -f "$vid_db" -a -r "$vid_db" ] \
58             && while w_video; do :; done <"$vid_db"
59           )
60         ]
61         EOF
62   else
63     return 1
64   fi
65 }