tinycm annotate plugins/blog/blog.cgi @ rev 60

Improve dashboard and plugin integration
author Christophe Lincoln <pankso@slitaz.org>
date Sat Feb 01 01:28:51 2014 +0100 (2014-02-01)
parents 6400421b49c9
children 03338ebb4d86
rev   line source
pankso@27 1 #!/bin/sh
pankso@27 2 #
pankso@27 3 # TinyCM Plugin - Blog
pankso@27 4 #
pankso@27 5 . /usr/lib/slitaz/httphelper
pankso@27 6
pankso@27 7 blog="$tiny/$content/blog"
pankso@27 8
pankso@27 9 # Blog tools
pankso@27 10 blog_tools() {
pankso@27 11 cat << EOT
pankso@27 12 <div id="tools">
pankso@60 13 <a href="$script?blog=edit&amp;d=new">$(gettext "New post")</a>
pankso@27 14 <a href="$script?dashboard">Dashboard</a>
pankso@27 15 $([ "$index" == "blog" ] && echo "<a href='$script?d=index'>Index</a>")
pankso@27 16 $([ "$HG" == "yes" ] && echo "<a href='$script?hg'>Hg Log</a>")
pankso@27 17 </div>
pankso@27 18 EOT
pankso@27 19 }
pankso@27 20
pankso@27 21 # Post tools
pankso@27 22 post_tools() {
pankso@27 23 cat << EOT
pankso@28 24 - <a href="$script?blogedit&amp;d=${d}">$(gettext "Edit it!")</a>
pankso@27 25 EOT
pankso@48 26 #<a href="$script?blogrm=${d}">$(gettext "Remove")</a>
pankso@27 27 }
pankso@27 28
pankso@27 29 # Display blog post: show_posts nb
pankso@28 30 show_post() {
pankso@28 31 d=${1%.txt}
pankso@28 32 date=$(fgrep 'DATE=' ${blog}/${d}.txt | cut -d '"' -f 2)
pankso@28 33 # Get post author
pankso@28 34 author=$(fgrep 'AUTHOR=' ${blog}/${d}.txt | cut -d '"' -f 2)
pankso@28 35 if [ -f "${PEOPLE}/${author}/account.conf" ]; then
pankso@28 36 . ${PEOPLE}/${author}/account.conf
pankso@28 37 else
pankso@48 38 echo "ERROR: ${PEOPLE}/${author}/account.conf"
pankso@28 39 fi
pankso@28 40 echo "<div class=\"blogpost\">"
pankso@28 41 cat ${blog}/${d}.txt | sed -e '/AUTHOR=/'d -e '/DATE=/'d | wiki_parser
pankso@28 42 cat << EOT
pankso@28 43 <div class="post-tools">
pankso@28 44 <a href="$script?user=$USER">$(get_gravatar $MAIL 24)</a>
pankso@28 45 <span class="date">$date</span>
pankso@28 46 EOT
pankso@48 47 # Post tools for admin users
pankso@48 48 if check_auth && admin_user; then
pankso@28 49 post_tools
pankso@28 50 echo "</div>"
pankso@28 51 else
pankso@28 52 echo "</div>"
pankso@28 53 fi
pankso@28 54 echo "</div>"
pankso@28 55 }
pankso@28 56
pankso@28 57 # Display blog post: show_posts count
pankso@27 58 show_posts() {
pankso@49 59 for p in $(ls $blog | sort -r -n | head -n $1)
pankso@27 60 do
pankso@28 61 show_post ${p}
pankso@27 62 done
pankso@27 63 }
pankso@27 64
pankso@27 65 #
pankso@27 66 # Index main page can display the lastest Blog posts
pankso@27 67 #
pankso@27 68 if fgrep -q '[BLOG]' $tiny/$wiki/index.txt && [ ! "$(GET)" ]; then
pankso@28 69 d="Blog posts"
pankso@27 70 index="blog"
pankso@27 71 header
pankso@27 72 html_header
pankso@27 73 user_box
pankso@27 74 # Post tools for auth users
pankso@30 75 if admin_user; then
pankso@27 76 blog_tools
pankso@27 77 fi
pankso@27 78 show_posts 5
pankso@27 79 echo "<p><a href='$script?blog'>$(gettext "More blog posts")</a></p>"
pankso@27 80 html_footer && exit 0
pankso@27 81 fi
pankso@27 82
pankso@60 83 #
pankso@60 84 # Handle GET requests
pankso@60 85 #
pankso@60 86
pankso@60 87 if [ "$(GET blog)" ]; then
pankso@60 88 case " $(GET blog) " in
pankso@60 89 *\ edit\ *)
pankso@60 90 d="$(GET d)"
pankso@60 91 header
pankso@60 92 html_header
pankso@60 93 user_box
pankso@60 94 if ! check_auth && admin_user; then
pankso@60 95 gettext "You must be admin to create a new Blog post"
pankso@60 96 html_footer && exit 0
pankso@60 97 fi
pankso@60 98 # New post
pankso@60 99 if [ "$d" == "new" ]; then
pankso@60 100 date=$(date '+%Y-%m-%d')
pankso@60 101 last=$(ls $blog | sort -r -n | head -n 1)
pankso@60 102 nb=${last%.txt}
pankso@60 103 d=$(($nb + 1))
pankso@60 104 conf=$(echo -e "\n\nAUTHOR=\"$user\"\nDATE=\"$date\"\n\n====Title====")
pankso@60 105 fi
pankso@60 106 cat << EOT
pankso@27 107 <h2>$(gettext "Blog post"): $d</h2>
pankso@27 108
pankso@27 109 <div id="edit">
pankso@60 110 <form method="get" action="$script?" name="editor">
pankso@60 111 <input type="hidden" name="blog" value="save" />
pankso@60 112 <input type="hidden" name="d" value="$d" />
pankso@48 113 <textarea name="content">${conf}$(cat "$blog/$d.txt")</textarea>
pankso@27 114 <input type="submit" value="$(gettext "Post content")" />
pankso@27 115 $(gettext "Code Helper:")
pankso@27 116 $(cat lib/jseditor.html)
pankso@27 117 </form>
pankso@27 118 </div>
pankso@27 119 EOT
pankso@60 120 html_footer && exit 0 ;;
pankso@60 121
pankso@60 122 *\ save\ *)
pankso@60 123 d="$(GET d)"
pankso@60 124 if check_auth && admin_user; then
pankso@60 125 [ -d "$blog" ] || mkdir -p ${blog}
pankso@60 126 # New post ?
pankso@60 127 if [ ! -f "${blog}/${d}.txt" ]; then
pankso@60 128 echo "New Blog post: <a href='$script?blog=$d'>Read it!</a>" \
pankso@60 129 | log_activity
pankso@60 130 fi
pankso@60 131 # Write content to file
pankso@60 132 sed "s/$(echo -en '\r') /\n/g" > ${blog}/${d}.txt << EOT
pankso@27 133 $(GET content)
pankso@27 134 EOT
pankso@60 135 fi
pankso@60 136 header "Location: $script?blog" ;;
pankso@60 137
pankso@60 138 *)
pankso@60 139 d="Blog posts"
pankso@60 140 count="20"
pankso@60 141 header
pankso@60 142 html_header
pankso@60 143 user_box
pankso@60 144 # Blog tools for admin users
pankso@60 145 if check_auth && admin_user; then
pankso@60 146 blog_tools
pankso@60 147 fi
pankso@60 148 # Exit if plugin is disabled
pankso@60 149 if [ ! -d "$blog" ]; then
pankso@60 150 echo "<p class='error box'>"
pankso@60 151 gettext "Blog plugin is not yet active."; echo "</p>"
pankso@60 152 html_footer && exit 0
pankso@60 153 fi
pankso@60 154 # Single post
pankso@60 155 if [ "$(GET blog)" != "blog" ]; then
pankso@60 156 show_post "$(GET blog)"
pankso@60 157 else
pankso@60 158 show_posts ${count}
pankso@60 159 fi ;;
pankso@60 160 esac
pankso@60 161 html_footer && exit 0
pankso@60 162 fi