function viewfolder($folderid, $userid, $level)
{
    $prefix = "";
    for ($i = 0; $i < $level; $i++) {
        $prefix .= "&gt;";
    }
    $fileprefix = $prefix . "&gt;";
    if ($folderid == -1) {
        $body = <<<END
                <option value="">ROOT</option>
END;
    } else {
        $current_folder = get_record('file_folders', 'owner', $userid, 'ident', $folderid);
        $name = strtoupper(stripslashes($current_folder->name));
        $body = <<<END
                    <option value="">{$prefix} {$name}</option>
END;
    }
    if ($files = get_records_select('files', "owner = ? AND folder = ?", array($userid, $folderid))) {
        foreach ($files as $file) {
            $filetitle = stripslashes($file->title);
            $body .= <<<END
                    
                    <option value="{$file->ident}">{$fileprefix} {$filetitle}</option>
END;
        }
    }
    if ($folders = get_records_select('file_folders', "owner = ? AND parent = ? ", array($userid, $folderid))) {
        foreach ($folders as $folder) {
            $body .= viewfolder($folder->ident, $userid, $level + 1);
        }
    }
    return $body;
}
function viewfolder($folderid, $userid, $level, $selected = -1)
{
    $prefix = "";
    for ($i = 0; $i < $level; $i++) {
        $prefix .= "&gt;";
    }
    $fileprefix = $prefix . "&gt;";
    $folders = get_records_select('file_folders', "files_owner = ? AND parent = ?", array($userid, $folderid));
    if ($folderid == -1) {
        $body = "<option value=\"-1\" ";
        if ($selected == -1) {
            $body .= "selected = \"selected\"";
        }
        $root = __gettext("Root");
        $body .= ">{$root}</option>";
    } else {
        $current_folder = get_record('file_folders', 'files_owner', $userid, 'ident', $folderid);
        $name = stripslashes($current_folder->name);
        $ident = $current_folder->ident;
        if ($ident == $selected) {
            $selectstring = "selected=\"selected\"";
        } else {
            $selectstring = "";
        }
        $body = <<<END
            <option value="{$ident}" {$selectstring} >{$prefix} {$name} </option>
END;
    }
    if (!empty($folders)) {
        foreach ($folders as $folder) {
            $body .= viewfolder($folder->ident, $userid, $level + 1, $selected);
        }
    }
    return $body;
}
function viewfolder($folderid, $userid, $level, $selected = -1)
{
    $prefix = "";
    for ($i = 0; $i < $level; $i++) {
        $prefix .= "&gt;";
    }
    $fileprefix = $prefix . "&gt;";
    $folders = db_query("select * from " . tbl_prefix . "file_folders where files_owner = {$userid} and parent = {$folderid}");
    if ($folderid == -1) {
        $body = "<option value=\"-1\" ";
        if ($selected == -1) {
            $body .= "selected = \"selected\"";
        }
        $body .= ">Root</option>";
    } else {
        $current_folder = db_query("select ident, name from " . tbl_prefix . "file_folders where files_owner = {$userid} and ident = {$folderid}");
        $name = stripslashes($current_folder[0]->name);
        $ident = $current_folder[0]->ident;
        if ($ident == $selected) {
            $selectstring = "selected=\"selected\"";
        } else {
            $selectstring = "";
        }
        $body = <<<END
\t\t\t\t\t<option value="{$ident}" {$selectstring} >{$prefix} {$name} </option>
END;
    }
    if (sizeof($folders) > 0) {
        foreach ($folders as $folder) {
            $body .= viewfolder($folder->ident, $userid, $level + 1, $selected);
        }
    }
    return $body;
}
function viewfolder($folderid, $userid, $level)
{
    $prefix = "";
    for ($i = 0; $i < $level; $i++) {
        $prefix .= "&gt;";
    }
    $fileprefix = $prefix . "&gt;";
    if ($folderid == -1) {
        $body = <<<END
                <option value="">ROOT</option>
END;
    } else {
        $current_folder = get_record('file_folders', 'owner', $userid, 'ident', $folderid);
        $textlib = textlib_get_instance();
        $name = htmlspecialchars($textlib->strtoupper($current_folder->name));
        $body = <<<END
                    <option value="" title="Folder">{$prefix} {$name}</option>
END;
    }
    if ($files = get_records_select('files', "owner = ? AND folder = ?", array($userid, $folderid))) {
        foreach ($files as $file) {
            $filetitle = htmlspecialchars($file->title);
            $filename = htmlspecialchars($file->originalname);
            if (run("users:access_level_check", $file->access)) {
                $body .= <<<END
                    
                    <option value="{$file->ident}" title="{$filename}">{$fileprefix} {$filetitle}</option>
END;
            }
        }
    }
    if ($folders = get_records_select('file_folders', "owner = ? AND parent = ? ", array($userid, $folderid))) {
        foreach ($folders as $folder) {
            if (run("users:access_level_check", $folder->access)) {
                $body .= viewfolder($folder->ident, $userid, $level + 1);
            }
        }
    }
    return $body;
}
function viewfolder($folderid, $userid, $level)
{
    $prefix = "";
    for ($i = 0; $i < $level; $i++) {
        $prefix .= "&gt;";
    }
    $fileprefix = $prefix . "&gt;";
    if ($folderid == -1) {
        $body = <<<END
\t\t\t\t<option value="">ROOT</option>
END;
    } else {
        $current_folder = db_query("select name from " . tbl_prefix . "file_folders where owner = {$userid} and ident = {$folderid}");
        $name = strtoupper(stripslashes($current_folder[0]->name));
        $body = <<<END
\t\t\t\t\t<option value="">{$prefix} {$name}</option>
END;
    }
    $files = db_query("select * from " . tbl_prefix . "files where owner = {$userid} and folder = {$folderid}");
    if (sizeof($files) > 0) {
        foreach ($files as $file) {
            $name = stripslashes($file->name);
            $filetitle = stripslashes($file->title);
            $body .= <<<END
\t\t\t\t\t
\t\t\t\t\t<option value="{$file->ident}">{$fileprefix} {$filetitle}</option>
END;
        }
    }
    $folders = db_query("select * from " . tbl_prefix . "file_folders where owner = {$userid} and parent = {$folderid}");
    if (sizeof($folders) > 0) {
        foreach ($folders as $folder) {
            $body .= viewfolder($folder->ident, $userid, $level + 1);
        }
    }
    return $body;
}
Пример #6
0
function folio_page_edit($page, $permissions, $page_title, $username, $parentpage_ident = -1)
{
    global $CFG;
    global $profile_id;
    global $language;
    global $page_owner;
    global $metatags;
    if (!$page && !isloggedin()) {
        // We don't allow non-logged in users to create new pages
        error('You can not create a new page without logging in.');
    } elseif (!$page) {
        // Set values for the new page.
        // @TODO: Find a better random method, or at least verify that the page doesn't already exist.
        // Generate a new value for the page key.
        // If we change this, also update the stuff in lib that creates a new record.
        $page_ident = rand(1, 999999999);
        // If this page is being created because of a hyperlink, then we
        //	already know what it should be named.  If not, then
        //	set to something that obviously needs to be changed.
        if (!strlen($page_title) > 0) {
            $title = 'New Page Title';
        } else {
            $title = $page_title;
        }
        $body = 'Create your new page here!';
        // Translate passed username into a user ident.
        $user_ident = folio_finduser($username);
        if (!$user_ident) {
            error('mod\\folio\\control\\page_edit.php was called without a username parameter ' . "or with an invalid one ({$username})");
        }
        $user_ident = $user_ident->ident;
        $page = new StdClass();
        $page->page_ident = $page_ident;
        $page->title = $title;
        $page->body = $body;
        $page->security_ident = $page_ident;
        $page->parentpage_ident = $parentpage_ident;
        $page->user_ident = $user_ident;
        $username = $username;
    } else {
        // Clean DB Entries, making them suitable for displaying.
        $page_ident = intval($page->page_ident);
        $body = stripslashes($page->body);
        $title = stripslashes($page->title);
        $parentpage_ident = intval($page->parentpage_ident);
        $security_ident = intval($page->security_ident);
        $user_ident = intval($page->user_ident);
    }
    // Include javascript for the tinymce rich editor.
    // Lose the trailing slash
    $url = substr(url, 0, -1);
    //get current language
    if (empty($CFG->userlocale)) {
        $lang = substr($CFG->defaultlocale, 0, 2);
    } elseif (is_array($CFG->userlocale)) {
        $lang = substr($CFG->userlocale[0], 0, 2);
    } else {
        $lang = substr($CFG->userlocale, 0, 2);
    }
    $metatags .= <<<END
\t\t<SCRIPT type="text/javascript" src="{$url}/mod/folio/control/yav1_2_3/js_compact/yav.js"></SCRIPT>
\t\t<SCRIPT type="text/javascript" src="{$url}/mod/folio/control/yav1_2_3/js_compact/yav-config.js"></SCRIPT>
\t    <script language="javascript" type="text/javascript" src="{$url}/_tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
\t\t
\t    <script language="javascript" type="text/javascript">
\t\t    tinyMCE.init({
\t\t    // General options
\t\t\tmode : "exact",
\t\t\telements : "page_body",
\t\t\tplugins : "safari,pagebreak,table,save,advhr,advimage,emotions,iespell,inlinepopups,media,paste,fullscreen,visualchars,nonbreaking,blockquote",
\t\t\tlanguage : "{$lang}",
\t\t\tconvert_urls : false,
\t\t\trelative_urls : false,
\t\t\tapply_source_formatting : false,
\t\t\tremove_linebreaks : true,
\t\t\tgecko_spellcheck : true,
\t\t\tspellchecker_languages : "+English=en,Dutch=nl,German=de,Spanish=es,Danish=dk,Swedish=sv,French=fr,Japanese=jp",
\t\t\t//script should be a default element according to the docs, but doesn"t appear to work
\t\t\textended_valid_elements : "script[language|src|type],iframe[*]",
\t\t\t//the following shouldn"t be necessary, but seems to be due to some sort of tinymce bug
\t\t\tcustom_elements : "script,iframe",
\t\t\t
\t\t    // Theme options
\t\t    theme : 'advanced',
\t\t\ttheme_advanced_buttons1 : "fontselect,fontsizeselect,bold,italic,underline,strikethrough,sub,sup,separator,link,unlink,image,code,fullscreen",
\t\t    theme_advanced_buttons2 : "justifyleft,justifycenter,justifyright,justifyfull,separator,outdent,indent,blockquote,separator,bullist,numlist,separator,forecolor,backcolor,separator,charmap,hr,removeformat,visualaid",
\t\t    theme_advanced_buttons3 : "undo,redo,cut,copy,paste,pastetext,replace,separator,tablecontrols",
\t\t\ttheme_advanced_buttons4 : "",
\t\t\ttheme_advanced_toolbar_location : "top",
\t\t\ttheme_advanced_toolbar_align : "left",
\t\t\ttheme_advanced_statusbar_location : "bottom",
\t\t\ttheme_advanced_resizing : true,
\t\t\ttheme_advanced_source_editor_width : "500",
\t    \ttheme_advanced_source_editor_height : "380"
\t\t    
    });
\t</script>

<SCRIPT>
    var rules=new Array();
    rules[0]='page_title|regexp|^([A-Za-z0-9-_ ()]+)\$|The Page title can only contain the following characters: ()-_';
</SCRIPT>
<script language="javascript" type="text/javascript">
    function addFile(form) {
        if (form.weblog_add_file.selectedIndex != '') {
            form.page_body.value = form.page_body.value + '{{file:' + form.weblog_add_file.options[form.weblog_add_file.selectedIndex].value + '}}';    
\t\t\ttinyMCE.execCommand('mceInsertContent',true,'{{file:' + form.weblog_add_file.options[form.weblog_add_file.selectedIndex].value + '}}');
\t\t}
    }
</script>

END;
    // Restore the trailing slash in $url
    $url = url;
    $run_result = <<<END
    
<form method="post" name="elggform" action="{$url}_folio/action_redirection.php" onsubmit="return performCheck('elggform', rules, 'classic');">

\t<h2>{$page_title}</h2>
END;
    $run_result .= templates_draw(array('context' => 'databoxvertical', 'name' => 'Title', 'contents' => "<input type=text id='page_title' value='{$title}' name='page_title' style='width: 80%' />"));
    $run_result .= templates_draw(array('context' => 'databoxvertical', 'name' => '', 'contents' => display_input_field(array("page_body", stripslashes($body), "weblogtext"))));
    if (logged_on) {
        $sitename = sitename;
        $filelist = viewfolder(-1, $_SESSION['userid'], 0);
        $run_result .= <<<END
            <p>
      \t\t\tEmbed a file from your {$sitename} file storage:<br />
                <select name="weblog_add_file" id="weblog_add_file">
                    {$filelist}        
                </select>
                <input type="button" value="Add" onclick="addFile(this.form);" /><br />
                (This will add a code to your weblog post that will be converted into an embedded file.)
            </p>
    
END;
    }
    //	if (! stripos($_SERVER['HTTP_USER_AGENT'],"Safari")) //no rich text in Safari - no worky
    $run_result .= <<<END
    <p>
      Embed an external video or other widget:<br />(Copy and paste embed code from external web site)<br />
                <span id="embed"><textarea name="weblog_embed_object" id="weblog_embed_object" rows="3" cols="40"></textarea>
                <input type="button" value="Embed" onclick="tinyMCE.execCommand('mceInsertRawHTML',true,this.form.weblog_embed_object.value);tinyMCE.execCommand('mceCleanup');" /></span>
            </p>
END;
    $run_result .= <<<END
\t<p>
\t\t<input type="hidden" name="action" value="folio:page:update" />
\t\t<input type="hidden" name="username" value="{$username}" />
\t\t<input type="hidden" name="user_ident" value="{$user_ident}" />
\t\t<input type="hidden" name="page_ident" value="{$page_ident}" />
\t\t<!-- <input type="hidden" name="parentpage_ident" value="{$parentpage_ident}" /> -->
\t\t<input type="submit" value="Save" />
        <INPUT TYPE="button" VALUE="Cancel" onClick="javascript:history.back()">
\t</p>

END;
    // Include security
    $run_result .= folio_control_page_edit_security($page) . folio_control_page_edit_move($page) . '</form>';
    return $run_result;
}