~ubuntu-branches/ubuntu/maverick/vdr-plugin-live/maverick

« back to all changes in this revision

Viewing changes to pages/recordings.ecpp

  • Committer: Bazaar Package Importer
  • Author(s): Thomas Schmidt
  • Date: 2007-07-02 21:02:17 UTC
  • Revision ID: james.westby@ubuntu.com-20070702210217-d34t69xf1qosqgvc
Tags: upstream-0.1.0
ImportĀ upstreamĀ versionĀ 0.1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<%pre>
 
2
#include <vdr/plugin.h>
 
3
#include <vdr/config.h>
 
4
 
 
5
#include "exception.h"
 
6
#include "tools.h"
 
7
#include "epg_events.h"
 
8
 
 
9
#include "recordings.h"
 
10
#include "setup.h"
 
11
 
 
12
using namespace vdrlive;
 
13
using namespace std;
 
14
 
 
15
</%pre>
 
16
<%args>
 
17
</%args>
 
18
<%session scope="global">
 
19
        bool logged_in(false);
 
20
</%session>
 
21
<%request scope="page">
 
22
RecordingsTree recordingsTree(LiveRecordingsManager());
 
23
EpgEvents epgEvents;
 
24
</%request>
 
25
<%include>page_init.eh</%include>
 
26
<%cpp>
 
27
        if (!logged_in && LiveSetup().UseAuth()) return reply.redirect("login.html");
 
28
 
 
29
        pageTitle = tr("Recordings");
 
30
</%cpp>
 
31
<& pageelems.doc_type &>
 
32
<html>
 
33
        <head>
 
34
                <title>VDR-Live - <$ pageTitle $></title>
 
35
                <link rel="stylesheet" type="text/css" href="styles.css" />
 
36
                <& tooltip.javascript var=("domTT_styleClass") value=("domTTepg") &>
 
37
                <& pageelems.ajax_js &>
 
38
                <script type="text/javascript" src="treeview.js"></script>
 
39
        </head>
 
40
        <body onload="<& pageelems.infobox_start_update &>">
 
41
                <& pageelems.logo &>
 
42
                <& menu active=("recordings") &>
 
43
                <div class="inhalt">
 
44
                        <div class="boxheader"><div><div><$ tr("List of recordings") $></div></div></div>
 
45
%                       if (Recordings.Count() == 0) {
 
46
                                <$ tr("No recordings found") $>
 
47
%                       } else {
 
48
                        <div class="recordings">
 
49
                        <ul class="recordingslist" style="display: block;">
 
50
<& recordings.recordings_item &>
 
51
                        </ul>
 
52
                        </div>
 
53
                        <div class="epg_data" style="display: none;">
 
54
<& recordings.recordings_data &>
 
55
                        </div>
 
56
%                       }
 
57
                </div>
 
58
        </body>
 
59
</html>
 
60
<%include>page_exit.eh</%include>
 
61
 
 
62
<# ---------------------------------------------------------------------- #>
 
63
 
 
64
<%def recordings_item>
 
65
<%args>
 
66
        path[];
 
67
        int level = 0;
 
68
</%args>
 
69
<%cpp>
 
70
RecordingsTree::Map::iterator iter;
 
71
RecordingsTree::Map::iterator end = recordingsTree.end(path);
 
72
 
 
73
for (iter = recordingsTree.begin(path); iter != end; ++iter) {
 
74
        RecordingsTree::RecordingsItemPtr recItem = iter->second;
 
75
        string folderimg("folder_closed.png");
 
76
        string collapseimg("plus.png");
 
77
        if (recItem->IsDir()) {
 
78
</%cpp>
 
79
        <li class="recording">
 
80
                <& rec_item_dir name=(recItem->Name()) level=(level) &>
 
81
<%cpp>
 
82
                cxxtools::QueryParams recItemParams(qparam, false);
 
83
                for (path_type::const_iterator i = path.begin(); i != path.end(); ++i) {
 
84
                        recItemParams.add("path", *i);
 
85
                }
 
86
                recItemParams.add("path", recItem->Name());
 
87
                recItemParams.add("level", lexical_cast<string, int>(level + 1));
 
88
</%cpp>
 
89
                <ul class="recordingslist" style="display: none;">
 
90
%               callComp("recordings.recordings_item", request, reply, recItemParams);
 
91
        </ul>
 
92
        </li>
 
93
%       }
 
94
%}
 
95
<%cpp>
 
96
for (iter = recordingsTree.begin(path); iter != end; ++iter) {
 
97
        RecordingsTree::RecordingsItemPtr recItem = iter->second;
 
98
    if (!recItem->IsDir()) {
 
99
                EpgEventPtr epgEvent(RecordingsTree::CreateEpgEvent(recItem));
 
100
                if (epgEvent) {
 
101
                        epgEvents.push_back(epgEvent);
 
102
                }
 
103
                string day(FormatDateTime("%a,", recItem->StartTime()));
 
104
                string dayLen(lexical_cast<string, int>(day.length() - 1) + ".25em;");
 
105
                string hint(tr("Click to view details.")); if (epgEvent && !epgEvent->ShortDescr().empty()) hint = (epgEvent->ShortDescr() + "<br />" + hint);
 
106
</%cpp>
 
107
        <li class="recording">
 
108
        <& rec_item_file name=(recItem->Name()) level=(level) id=(recItem->Id()) day=(day) dayLen=(dayLen) startTime=(recItem->StartTime()) hint=(hint) shortDescr=(epgEvent ? epgEvent->ShortDescr() : "") archived=(epgEvent ? epgEvent->Archived() : "") archiveId=(recItem->ArchiveId()) &>
 
109
    </li>
 
110
<%cpp>
 
111
        }
 
112
}
 
113
</%cpp>
 
114
</%def>
 
115
 
 
116
<# ---------------------------------------------------------------------- #>
 
117
 
 
118
<%def recordings_data>
 
119
<%cpp>
 
120
        // create hidden div for the tooltip hints.
 
121
        for (vector<EpgEventPtr>::iterator i = epgEvents.begin(); i != epgEvents.end(); ++i) {
 
122
                EpgEventPtr epg = *i;
 
123
                string start(epg->StartTime("%a,") + string(" ")
 
124
                                + epg->StartTime(tr("%b %d %y")) + string(" ")
 
125
                                + epg->StartTime(tr("%I:%M %p")));
 
126
                string tools_component = epg->Archived().empty() ? "recordings.rec_tools" : "recordings.archived_disc" ;
 
127
</%cpp>
 
128
                <& pageelems.epg_tt_box boxId=(epg->Id()) caption=(epg->Caption()) tools_comp=(tools_component) time=(start) title=(epg->Title()) short_descr=(epg->ShortDescr()) long_descr=(epg->LongDescr()) archived=(epg->Archived()) elapsed=(epg->Elapsed()) &>
 
129
<%cpp>
 
130
        }
 
131
</%cpp>
 
132
</%def>
 
133
 
 
134
<# ---------------------------------------------------------------------- #>
 
135
 
 
136
<%def rec_tools>
 
137
<%args>
 
138
        string id;
 
139
</%args>
 
140
<& pageelems.ajax_action_href action="play_recording" param=(id) tip=(tr("play this recording.")) image="play.png" alt="" &>
 
141
</%def>
 
142
 
 
143
<# ---------------------------------------------------------------------- #>
 
144
 
 
145
<%def archived_disc>
 
146
<%args>
 
147
        string archived;
 
148
</%args>
 
149
<img src="on_dvd.png" alt="on_dvd" <& tooltip.hint text=(archived) &> />
 
150
</%def>
 
151
 
 
152
<# ---------------------------------------------------------------------- #>
 
153
 
 
154
<%def rec_item_dir>
 
155
<%args>
 
156
        string name;
 
157
        int level;
 
158
        string collapseimg = "plus.png";
 
159
        string folderimg = "folder_closed.png";
 
160
</%args>
 
161
        <div class="recording_item" onclick="Toggle(this)">
 
162
        <div class="recording_imgs"><%cpp> reply.out() << StringRepeat(level, "<img src=\"transparent.png\" alt=\"\" width=\"16px\" height=\"16px\" />"); </%cpp><img class="recording_expander" src="<$ collapseimg $>" alt="" /><img class="recording_folder" src="<$ folderimg $>" alt="" /></div>
 
163
        <div class="recording_spec">
 
164
          <div class="recording_name"><$ name $></div>
 
165
    </div>
 
166
        <div class="recording_actions">&nbsp;</div>
 
167
        </div>
 
168
</%def>
 
169
 
 
170
<# ---------------------------------------------------------------------- #>
 
171
 
 
172
<%def rec_item_file>
 
173
<%args>
 
174
        string name;
 
175
        int level;
 
176
        string id;
 
177
        string day;
 
178
        string dayLen;
 
179
        time_t startTime;
 
180
        string hint;
 
181
        string shortDescr;
 
182
        string archived;
 
183
        string archiveId;
 
184
</%args>
 
185
        <div class="recording_item">
 
186
        <div class="recording_imgs"><%cpp> reply.out() << StringRepeat(level + 1, "<img src=\"transparent.png\" alt=\"\" width=\"16px\" height=\"16px\" />"); </%cpp><%cpp> if (!archived.empty()) { </%cpp><& archived_disc archived=(archived) &><%cpp> } else { </%cpp><img src="movie.png" alt="movie" /><%cpp> } </%cpp></div>
 
187
        <div class="recording_spec">
 
188
                <div class="recording_day" style="width: <$ dayLen $>"><$ day $></div>
 
189
                <div class="recording_date"><$ FormatDateTime(tr("%b %d %y"), startTime) $></div>
 
190
                <div class="recording_time"><$ FormatDateTime(tr("%I:%M %p"), startTime) $></div>
 
191
                <div class="recording_name" <& tooltip.hint text=(hint) &><& tooltip.display domId=(id) &>><$ name $><br /><%cpp>if ((name != shortDescr) && (!shortDescr.empty())) {</%cpp><span><$ shortDescr $></span><%cpp> } else { </%cpp><span>&nbsp;</span><%cpp> } </%cpp></div>
 
192
        </div>
 
193
        <div class="recording_actions">
 
194
<%cpp>
 
195
                if (archived.empty()) {
 
196
</%cpp>
 
197
                <& pageelems.ajax_action_href action="play_recording" param=(id) tip=(tr("play this recording.")) image="play.png" alt="" &>
 
198
<%cpp>
 
199
            }
 
200
                else {
 
201
</%cpp>
 
202
                <img src="transparent.png" alt="" width="16px" height="16px" />
 
203
<%cpp>
 
204
                }
 
205
</%cpp>
 
206
                <img src="edit.png" alt="" />
 
207
                <img src="del.png" alt="" />
 
208
        </div>
 
209
<%cpp>
 
210
        if (! archived.empty()) {
 
211
</%cpp>
 
212
        <div class="recording_arch"><$ archived $></div>
 
213
<%cpp>
 
214
        }
 
215
</%cpp>
 
216
        </div>
 
217
</%def>