layout.php 3.69 KB
Newer Older
1
2
<?php
/**
Francois Marier's avatar
Francois Marier committed
3
 * Mahara: Electronic portfolio, weblog, resume builder and social networking
4
 * Copyright (C) 2006-2008 Catalyst IT Ltd (http://www.catalyst.net.nz)
5
 *
Francois Marier's avatar
Francois Marier committed
6
7
8
9
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
10
 *
Francois Marier's avatar
Francois Marier committed
11
12
13
14
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
15
 *
Francois Marier's avatar
Francois Marier committed
16
17
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
19
20
 *
 * @package    mahara
 * @subpackage core
21
 * @author     Catalyst IT Ltd
22
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL
23
 * @copyright  (C) 2006-2008 Catalyst IT Ltd http://catalyst.net.nz
24
25
26
 *
 */

27
28
// TODO fix title of this page
// TODO check security of this page
29
30
31
32
33
define('INTERNAL', 1);
define('MENUITEM', 'viewlayout');
require_once(dirname(dirname(__FILE__)) . '/init.php');
require_once('pieforms/pieform.php');
require_once('view.php');
34
require_once(get_config('libroot') . 'group.php');
35
define('TITLE', get_string('changemyviewlayout', 'view'));
36
37

$id = param_integer('id');
38
$new = param_boolean('new');
39
$category = param_alpha('c', '');
40
$view = new View($id);
41
$numcolumns = $view->get('numcolumns');
42
$currentlayout = $view->get('layout');
43
$back = !$USER->get_account_preference('addremovecolumns');
44
$group = $view->get('group');
45
$institution = $view->get('institution');
46
$owner = $view->get('owner');
47

48
49
50
if ($group && !group_user_can_edit_views($group)
    || $institution && !$USER->can_edit_institution($institution)
    || $owner && $owner != $USER->get('id')) {
51
52
53
    throw new AccessDeniedException(get_string('canteditdontown', 'view'));
}

54
55
56
57
// if not set, use equal width layout for that number of columns
if (!$currentlayout) {
    $currentlayout = ($numcolumns == 2 ? 1 : ($numcolumns == 3 ? 4 : 7));
}
58

59
60
if ($numcolumns > 1 && $numcolumns < 5) {
    $layouts = get_records_array('view_layout', 'columns', $numcolumns);
61
62
63
64
    $options = array();
    foreach ($layouts as $layout) {
        $options[$layout->id] = get_string($layout->widths, 'view');
    }
65
66
67
68
69
70
    $layoutform = new Pieform(array(
        'name' => 'viewlayout',
        'elements' => array(
            'layout'  => array(
                'type' => 'radio',
                'options' => $options,
71
                'defaultvalue' => $currentlayout,
72
73
            ),
            'submit' => array(
74
75
76
                'type' => 'submitcancel',
                'value' => array(get_string('submit'), get_string('cancel')),
                'goto' => get_config('wwwroot') . 'view/columns.php?id=' . $view->get('id') . '&c=' . $category . '&new=' . $new
77
78
79
            ),
        ),
    ));
80
81
}
else {
82
83
    $SESSION->add_error_msg(get_string('noviewlayouts', 'view', $numcolumns));
    redirect('/view/blocks.php?id=' . $id . '&c=' . $category . '&new=' . $new);
84
85
86
}

$smarty = smarty();
87
$smarty->assign('currentlayout', $currentlayout);
88
89
90
91
$smarty->assign('form', $layoutform);
$smarty->assign('form_start_tag', $layoutform->get_form_tag());
$smarty->assign('options', $options);
$smarty->assign('back', $back);
92
93
94
$smarty->display('view/layout.tpl');

function viewlayout_submit(Pieform $form, $values) {
95
    global $view, $SESSION, $category, $new;
96
97
    $view->set('layout', $values['layout']);
    $view->commit();
98
    $SESSION->add_ok_msg(get_string('viewlayoutchanged', 'view'));
99
    redirect(get_config('wwwroot') . 'view/blocks.php?id=' . $view->get('id') . '&c=' . $category . '&new=' . $new);
100
101
102
}

?>