class MediaForm(ListForm): template = 'admin/box-form.html' id = 'media-form' css_class = 'form' submit_text = None show_children_errors = True _name = 'media-form' # TODO: Figure out why this is required?? event = events.Admin.MediaForm fields = [ SingleSelectField('podcast', label_text=N_('Include in the Podcast'), css_classes=['dropdown-select'], help_text=N_('Optional'), options=lambda: [(None, None)] + DBSession.query(Podcast.id, Podcast.title).all()), TextField('slug', label_text=N_('Permalink'), maxlength=50), TextField('title', label_text=N_('Title'), validator=TextField.validator(not_empty=True), maxlength=255), TextField('author_name', label_text=N_('Author Name'), maxlength=50), TextField('author_email', label_text=N_('Author Email'), validator=email_validator(not_empty=True), maxlength=255), XHTMLTextArea('description', label_text=N_('Description'), attrs=dict(rows=5, cols=25)), CategoryCheckBoxList('categories', label_text=N_('Categories'), options=lambda: DBSession.query(Category.id, Category.name).all()), TextArea('tags', label_text=N_('Tags'), attrs=dict(rows=3, cols=15), help_text=N_(u'e.g.: puppies, great dane, adorable')), TextArea('notes', label_text=N_('Administrative Notes'), attrs=dict(rows=3, cols=25), container_attrs = lambda: ({'class': 'hidden'}, {})[bool(request.settings.get('wording_display_administrative_notes', ''))], default=lambda: request.settings['wording_administrative_notes']), SubmitButton('save', default=N_('Save'), named_button=True, css_classes=['btn', 'blue', 'f-rgt']), SubmitButton('delete', default=N_('Delete'), named_button=True, css_classes=['btn', 'f-lft']), ]
class fields(WidgetsList): name = TextField(validator=validators['name'], label_text=N_('Your Name:'), maxlength=50) email = TextField(validator=email_validator(not_empty=True), label_text=N_('Your Email:'), help_text=N_('(will never be published)'), maxlength=255) title = TextField(validator=validators['title'], label_text=N_('Title:'), maxlength=255) description = XHTMLTextArea(validator=validators['description'], label_text=N_('Description:'), attrs=dict(rows=5, cols=25)) url = TextField(validator=validators['url'], label_text=N_('Add a YouTube, Vimeo or Google Video URL:'), maxlength=255) file = FileField(validator=FieldStorageUploadConverter(if_missing=None, messages={'empty':N_('Oops! You forgot to enter a file.')}), label_text=N_('OR:')) submit = SubmitButton(default=N_('Submit'), css_classes=['mcore-btn', 'btn-submit'])
class UploadForm(ListForm): template = 'admin/box-form.html' id = 'settings-form' css_class = 'form' submit_text = None fields = [ TextField('max_upload_size', label_text=N_('Max. allowed upload file size in megabytes'), validator=MegaByteValidator(not_empty=True, min=0)), ListFieldSet('legal_wording', suppress_label=True, legend=N_('Legal Wording:'), css_classes=['details_fieldset'], children=[ XHTMLTextArea('wording_user_uploads', label_text=N_('User Uploads'), attrs=dict(rows=15, cols=25)), ]), SubmitButton('save', default=N_('Save'), css_classes=['btn', 'btn-save', 'blue', 'f-rgt']), ]
# along with this program. If not, see <http://www.gnu.org/licenses/>. __all__ = ['EmbedURLValidator', 'UploadForm'] from tw.api import WidgetsList, CSSLink import formencode from tw.forms.validators import NotEmpty, FieldStorageUploadConverter from pylons import config from mediacore.lib import helpers from mediacore.lib.filetypes import external_embedded_containers from mediacore.forms import ListForm, TextField, XHTMLTextArea, FileField, SubmitButton, email_validator validators = dict( description = XHTMLTextArea.validator( messages = {'empty': 'At least give it a short description...'}, not_empty = True, ), name = TextField.validator( messages = {'empty': "You've gotta have a name!"}, not_empty = True, ), tags = TextField.validator( not_empty = False, ), title = TextField.validator( messages = {'empty': "You've gotta have a title!"}, not_empty = True, ), ) class EmbedURLValidator(formencode.FancyValidator):
class PodcastForm(ListForm): template = 'admin/box-form.html' id = 'podcast-form' css_class = 'form' submit_text = None event = events.Admin.PodcastForm # required to support multiple named buttons to differentiate between Save & Delete? _name = 'vf' explicit_options = lambda: ( ('no', ''), ('yes', _('Parental Advisory')), ('clean', _('Clean')), ) category_options = [ 'Arts', 'Arts > Design', 'Arts > Fashion & Beauty', 'Arts > Food', 'Arts > Literature', 'Arts > Performing Arts', 'Arts > Visual Arts', 'Business', 'Business > Business News', 'Business > Careers', 'Business > Investing', 'Business > Management & Marketing', 'Business > Shopping', 'Comedy', 'Education', 'Education > Education Technology', 'Education > Higher Education', 'Education > K-12', 'Education > Language Courses', 'Education > Training', 'Games & Hobbies', 'Games & Hobbies > Automotive', 'Games & Hobbies > Aviation', 'Games & Hobbies > Hobbies', 'Games & Hobbies > Other Games', 'Games & Hobbies > Video Games', 'Government & Organizations', 'Government & Organizations > Local', 'Government & Organizations > National', 'Government & Organizations > Non-Profit', 'Government & Organizations > Regional', 'Health', 'Health > Alternative Health', 'Health > Fitness & Nutrition', 'Health > Self-Help', 'Health > Sexuality', 'Kids & Family', 'Music', 'News & Politics', 'Religion & Spirituality', 'Religion & Spirituality > Buddhism', 'Religion & Spirituality > Christianity', 'Religion & Spirituality > Hinduism', 'Religion & Spirituality > Islam', 'Religion & Spirituality > Judaism', 'Religion & Spirituality > Other', 'Religion & Spirituality > Spirituality', 'Science & Medicine', 'Science & Medicine > Medicine', 'Science & Medicine > Natural Sciences', 'Science & Medicine > Social Sciences', 'Society & Culture', 'Society & Culture > History', 'Society & Culture > Personal Journals', 'Society & Culture > Philosophy', 'Society & Culture > Places & Travel', 'Sports & Recreation', 'Sports & Recreation > Amateur', 'Sports & Recreation > College & High School', 'Sports & Recreation > Outdoor', 'Sports & Recreation > Professional', 'Technology', 'Technology > Gadgets', 'Technology > Tech News', 'Technology > Podcasting', 'Technology > Software How-To', 'TV & Film', ] fields = [ TextField('slug', label_text=N_('Permalink'), validator=NotEmpty, maxlength=50), TextField('title', label_text=N_('Title'), validator=TextField.validator(not_empty=True), maxlength=50), TextField('subtitle', label_text=N_('Subtitle'), maxlength=255), TextField('author_name', label_text=N_('Author Name'), validator=TextField.validator(not_empty=True), maxlength=50), TextField('author_email', label_text=N_('Author Email'), validator=email_validator(not_empty=True), maxlength=50), XHTMLTextArea('description', label_text=N_('Description'), attrs=dict(rows=5, cols=25)), ListFieldSet('details', suppress_label=True, legend=N_('Podcast Details:'), css_classes=['details_fieldset'], children=[ SingleSelectField('explicit', label_text=N_('Explicit?'), options=explicit_options), SingleSelectField('category', label_text=N_('Category'), options=category_options), TextField('copyright', label_text=N_('Copyright'), maxlength=50), ]), ListFieldSet('feed', suppress_label=True, legend=N_('Advanced Options:'), css_classes=['details_fieldset'], template='/admin/podcasts/feed_fieldset.html', children=[ TextField('feed_url', maxlength=50, label_text=N_('Your Feed URL'), attrs={'readonly': True}), TextField('itunes_url', validator=URL, label_text=N_('iTunes URL'), maxlength=80), TextField('feedburner_url', validator=URL, label_text=N_('Feedburner URL'), maxlength=80), ]), SubmitButton('save', default=N_('Save'), named_button=True, css_classes=['btn', 'blue', 'f-rgt']), SubmitButton('delete', default=N_('Delete'), named_button=True, css_classes=['btn']), ]
# This file is a part of MediaCore CE, Copyright 2009-2012 MediaCore Inc. # The source code contained in this file is licensed under the GPL. # See LICENSE.txt in the main project directory, for more information. from tw.api import WidgetsList from tw.forms.validators import FieldStorageUploadConverter from mediacore.lib.i18n import N_ from mediacore.forms import ListForm, TextField, XHTMLTextArea, FileField, SubmitButton, email_validator from mediacore.plugin import events validators = dict( description = XHTMLTextArea.validator( messages = {'empty': N_('At least give it a short description...')}, not_empty = True, ), name = TextField.validator( messages = {'empty': N_("You've gotta have a name!")}, not_empty = True, ), title = TextField.validator( messages = {'empty': N_("You've gotta have a title!")}, not_empty = True, ), url = TextField.validator( if_missing = None, ), ) class UploadForm(ListForm): template = 'upload/form.html'