~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/media/browser/listing.js

  • Committer: mattgiuca
  • Date: 2008-01-13 12:08:48 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:211
fileservice/listing: Slight change to date format.
browser.js: Abstracted get_handler_type.
browser/listing.js: Wrote code to populate the side panel with the information
about the selected file and action links (very rough).

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
 
31
31
/** The listing object returned by the server as JSON */
32
32
file_listing = null;
 
33
thisdir = null;
 
34
 
 
35
/** Updates the side-panel. Expects selected_files reflects the current
 
36
 * selected files.
 
37
 */
 
38
function update_sidepanel(total_file_size_sel)
 
39
{
 
40
    var sidepanel = document.getElementById("sidepanel");
 
41
    var filename;
 
42
    var file;
 
43
    var p;
 
44
    /* Is this dir under svn? */
 
45
    var under_subversion = "svnstatus" in thisdir;
 
46
    dom_removechildren(sidepanel);
 
47
    if (selected_files.length <= 1)
 
48
    {
 
49
        if (selected_files.length == 0)
 
50
        {
 
51
            /* Display information about the current directory instead */
 
52
            filename = path_basename(current_path);
 
53
            file = thisdir;
 
54
        }
 
55
        else if (selected_files.length == 1)
 
56
        {
 
57
            filename = selected_files;
 
58
            file = file_listing[filename];
 
59
        }
 
60
        var filetype;
 
61
        if ("isdir" in file && file.isdir)
 
62
            filetype = "text/directory";
 
63
        else if ("type" in file)
 
64
            filetype = file.type;
 
65
        else
 
66
            filetype = "text/plain";
 
67
 
 
68
        p = document.createElement("p");
 
69
        sidepanel.appendChild(p);
 
70
        p.appendChild(dom_make_img(mime_type_to_icon(filetype, true),
 
71
            null, null, filetype));
 
72
        p = dom_make_text_elem("h2", filename);
 
73
        sidepanel.appendChild(p);
 
74
        p = dom_make_text_elem("p", filetype);
 
75
        sidepanel.appendChild(p);
 
76
        if ("size" in file)
 
77
        {
 
78
            p = dom_make_text_elem("p", "Size: " + nice_filesize(file.size));
 
79
            sidepanel.appendChild(p);
 
80
        }
 
81
        if ("mtime_nice" in file)
 
82
        {
 
83
            p = dom_make_text_elem("p", "Modified: " + file.mtime_nice);
 
84
            sidepanel.appendChild(p);
 
85
        }
 
86
    }
 
87
    else
 
88
    {
 
89
        /* Multiple files selected */
 
90
        p = document.createElement("p");
 
91
        sidepanel.appendChild(p);
 
92
        p.appendChild(dom_make_img(
 
93
            make_path(path_join(type_icons_path_large, "multi.png")),
 
94
            null, null, "Multiple files"));
 
95
        p = dom_make_text_elem("h2",
 
96
            selected_files.length.toString() + " files selected");
 
97
        sidepanel.appendChild(p);
 
98
        p = dom_make_text_elem("p", "Total size: "
 
99
            + nice_filesize(total_file_size_sel));
 
100
        sidepanel.appendChild(p);
 
101
    }
 
102
 
 
103
    p = dom_make_text_elem("h3", "Actions");
 
104
    sidepanel.appendChild(p);
 
105
 
 
106
    if (selected_files.length <= 1)
 
107
    {
 
108
        var handler_type = null;
 
109
        if ("type" in file)
 
110
            handler_type = get_handler_type(file.type);
 
111
        /* Action: Use the "files" / "edit" app */
 
112
        if (file.isdir)
 
113
            p = dom_make_link_elem("p", "Browse",
 
114
                "Browse this directory in the file browser");
 
115
        else if (handler_type == "text")
 
116
            p = dom_make_link_elem("p", "Edit", "Edit this file");
 
117
        else
 
118
            p = dom_make_link_elem("p", "Browse",
 
119
                "View this file in the file browser");
 
120
        sidepanel.appendChild(p);
 
121
 
 
122
        /* Action: Use the "serve" app */
 
123
        /* TODO: Figure out if this file is executable,
 
124
         * and change the link to "Run" */
 
125
        p = null;
 
126
        if (file.isdir || handler_type == "binary") {}
 
127
        else
 
128
            p = dom_make_link_elem("p", "View",
 
129
                "View this file");
 
130
        if (p)
 
131
            sidepanel.appendChild(p);
 
132
 
 
133
        /* Action: Use the "download" app */
 
134
        p = null;
 
135
        if (file.isdir)
 
136
            p = dom_make_link_elem("p", "Download as zip",
 
137
                "Download this directory as a ZIP file");
 
138
        else
 
139
            p = dom_make_link_elem("p", "Download",
 
140
                "Download this file to your computer");
 
141
        if (p)
 
142
            sidepanel.appendChild(p);
 
143
 
 
144
        p = dom_make_link_elem("p", "Rename",
 
145
            "Change the name of this file");
 
146
        sidepanel.appendChild(p);
 
147
    }
 
148
    else
 
149
    {
 
150
        /* Multiple files selected */
 
151
        p = dom_make_link_elem("p", "Download as zip",
 
152
            "Download the selected files as a ZIP file");
 
153
        sidepanel.appendChild(p);
 
154
    }
 
155
 
 
156
    /* Common actions */
 
157
    p = dom_make_link_elem("p", "Cut",
 
158
        "Prepare to move the selected files to another directory");
 
159
    sidepanel.appendChild(p);
 
160
    p = dom_make_link_elem("p", "Copy",
 
161
        "Prepare to copy the selected files to another directory");
 
162
    sidepanel.appendChild(p);
 
163
    p = dom_make_link_elem("p", "Paste",
 
164
        "Paste the copied or cut files to the current directory");
 
165
    sidepanel.appendChild(p);
 
166
 
 
167
    /*
 
168
     <p><a href="">Cut</a></p>
 
169
     <p><a href="">Copy</a></p>
 
170
     */
 
171
    if (under_subversion)
 
172
    {
 
173
        p = dom_make_text_elem("h3", "Subversion");
 
174
        sidepanel.appendChild(p);
 
175
        /*
 
176
     <p><a href="">Commit</a></p>
 
177
     <p><a href="">Update</a></p>
 
178
         */
 
179
    }
 
180
 
 
181
}
33
182
 
34
183
/** Updates the side-panel and status bar to reflect the current set of
35
184
 * selected files. This is done by inspecting the states of the check boxes.
79
228
        i++;
80
229
    }
81
230
 
 
231
    /* Write to the side-panel */
 
232
    update_sidepanel(total_file_size_sel);
 
233
 
82
234
    /* Write to the status bar */
83
235
    var statusbar = document.getElementById("statusbar");
84
236
    var statusmsg;
197
349
    file_listing = listing;     /* Global */
198
350
 
199
351
    /* Get "." out, it's special */
200
 
    var thisdir = listing["."];
 
352
    thisdir = listing["."];     /* Global */
201
353
    delete listing["."];
202
354
    /* Is this dir under svn? */
203
355
    var under_subversion = "svnstatus" in thisdir;