Files
selima-perl/lib/perl5/Selima/Form/UserPref.pm
2026-03-10 21:31:43 +08:00

112 lines
3.8 KiB
Perl

# Selima Website Content Management System
# UserPref.pm: The user preference form.
# Copyright (c) 2004-2018 imacat.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Author: imacat <imacat@mail.imacat.idv.tw>
# First written: 2004-10-14
package Selima::Form::UserPref;
use 5.008;
use strict;
use warnings;
use base qw(Selima::Form);
use Selima::DataVars qw(:scptconf);
use Selima::FormFunc;
use Selima::HTTP;
use Selima::MarkAbbr;
use Selima::ShortCut;
use Selima::Unicode;
use Selima::UserName;
# new: Initialize the HTML form table displayer
sub new : method {
local ($_, %_);
my ($class, $status, $args, $self);
($class, $status, $args) = @_;
$args = {} if !defined $args;
# $args must be a hash reference
http_500 "type of argument 2 must be a hash reference"
if ref($args) ne "HASH";
$$args{"type"} = form_type
if !exists $$args{"type"};
$$args{"table"} = "usermem"
if !exists $$args{"table"};
$$args{"deltext"} = C_("Delete this user preference")
if !exists $$args{"deltext"};
if (!exists $$args{"summary"}) {
# A form to create a new item
if ($$args{"type"} eq "new") {
$$args{"summary"} = C_("This table provides you a form to add a new user preference.");
# A form to edit a current item
} elsif ($$args{"type"} eq "cur") {
$$args{"summary"} = C_("This table provides you a form to modify a current user preference.");
# A form to delete a current item
} elsif ($$args{"type"} eq "del") {
$$args{"summary"} = C_("This table provides you a form to delete a user preference.");
}
}
if (!exists $$args{"cols"}) {
# A form to create a new item
if ($$args{"type"} eq "new") {
$$args{"cols"} = [qw(usr domain name value)];
# A form to edit a current item
# A form to delete a current item
} elsif ($$args{"type"} eq "cur" || $$args{"type"} eq "del") {
$$args{"cols"} = [qw(sn usr domain name value
created createdby updated updatedby)];
}
}
if (!exists $$args{"title"}) {
# A form to create a new item
if ($$args{"type"} eq "new") {
$$args{"title"} = C_("Add A New User Preference");
# A form to edit a current item
} elsif ($$args{"type"} eq "cur") {
$$args{"title"} = C_("Modify a Current User Preference");
# A form to delete a current item
} elsif ($$args{"type"} eq "del") {
$$args{"title"} = C_("Delete a User Preference");
}
}
$self = $class->SUPER::new($status, $args);
$self->{"form"}->delete("usr")
if defined $self->{"form"}->param("usr")
&& (!defined $self->{"form"}->param("usr")
|| $self->{"form"}->param("usr") eq "");
return $self;
}
# _html_col_domain: The preference domain
sub _html_col_domain : method {
$_[0]->_html_coltmpl_text_null("domain", h_abbr(C_("Domain:")),
"everywhere", h_abbr(C_("Everywhere")));
}
# _html_col_usr: The user
sub _html_col_usr : method {
$_[0]->_html_coltmpl_call_null("usr", h_abbr(C_("User:")),
"everyone", h_abbr(C_("Everyone")), \&username);
}
# _html_col_value: The preference value
sub _html_col_value : method {
$_[0]->_html_coltmpl_text("value", h_abbr(C_("Value:")));
}
return 1;