DEPRECATION WARNING

This documentation is not using the current rendering mechanism and is probably outdated. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.

EXT: abcourses

Author:Kasper Skårhøj
Created:2002-11-01T00:32:00
Changed by:Stefan Precht
Changed:2009-12-02T22:21:07
Author:Stefan Precht
Email:sprecht@gmx.de
Info 3:
Info 4:

EXT: abcourses

Extension Key: abcourses

Copyright 2005-2008, Stefan Precht, <sprecht@gmx.de> and Andreas Behrens, <behrens@b-networks.de>

This document is published under the Open Content License

available from http://www.opencontent.org/opl.shtml

The content of this document is related to TYPO3

- a GNU/GPL CMS/Framework available from www.typo3.com

Table of Contents

EXT: abcourses 1

Introduction 1

What does it do? 1

About the developing 2

Screen shots 2

Key-Features 4

Available content records 4

Category 4

Course 4

Course type 5

Teaching aids 5

Trainer 5

Event 5

Location 6

Category 6

Hotel 6

Arrangements 6

Available views 6

Categories overview 6

Mini search-box 7

Search result list 7

Detail view 8

Subscribe view 8

Last minute short 9

Last minute detailed 9

Category overview and a listing of current events 9

Overview of selected events 10

Detail search 10

Overview of selected categories 10

Installation 10

You should start with this 10

The TS configuration 12

plugin.tx_abcourses_pi1 12

TS for “Category overview” 15

TS for “Courses in category” 15

TS for “Quicksearch” 15

TS for “Resultlist” 15

TS for view-type “Detail” 16

TS for view-type “Subscribe” 16

TS for view-type “Category overview with next courses” 18

TS for view-type “Selected events” 18

Template structure of the different view-types 18

Template marker for records / general 18

Generally available markers 18

All category fields 21

All course fields 21

All event fields 22

All trainer fields 23

All location fields 23

All page fields 23

All hotel fields 23

All arrangement fields 23

All teaching aid fields 24

All conditions fields 25

Special content 25

The manual location selector 25

The subscription hook 25

The displayDetail Hook 25

The fillAllLabels Hook 25

How to change the subscription form 25

What you should know about the email template 26

Known problems 28

To-Do list 28

Changelog 28

Introduction

What does it do?

abcourses is an extension for offering your seminars, courses, or appointments in various ways. This extension aims to be compatible with the most requirements. So if you are looking for an extension to offer many courses and appointments, this extension is made for you. But if you need a solution which can be used right after installation (like plug'n play) than this is the wrong one. Abcourse is really flexible and it takes you some time to get in to it.

About the development

SYMPLASSON http://www.symplasson.de/ started the development of this extension in close collaboration with @b-networks http://www.ab-networks.de/ in 2005 to create a solution for offering different courses with several thousand appointments a year.

Since then, the development was continued along our customers requirements or our own ideas.

This extension is still under further development (if requested ;-) ) and is supported by Andreas Behrens (@b-networks; behrens@b-networks.de , Lüneburg, Germany) as well as by Stefan Precht ( sprecht@gmx.de , Hamburg, Germany)

Many people supported this extension within the last years. Independent from if it were just ideas, debugging or anything else. Here we want to say “thanks” for supporting the development to:

Screen shots

You will find some more screen shots associated to the different views later in this documentation. These few screens are just for a small overview.

Important notice:

The information as displayed on this sample screens are only for demonstrating the possible look and feel of this extension. Description and content of courses are test-data, just like shown prices or other informations!

img-1 Abbildung 1: Sample view of course details

img-2 Abbildung 2: Another detail view. Highlighted area on the right is rendered by the Last-Minute short overview

img-3 Abbildung 3: Sample of a start screen. The input field is rendered with the search-view, the colored boxes are rendered with the category overview. Other parts are normal text content elements.

Key-Features

By combining the different views on an page, you have various possibilities to advertise your offered courses. In the list below you will find some of the features not necessarily to derive from the available views.

content types for categories, courses, course types, events, trainers, skill level, teaching aids, accommodations, arrangements for accommodation and locations

  • 10 different view-type's available
  • each view is completely template based and it is up to you on which standard you want to implement them (HTML ||XHTML)
  • the search plug-in can be combined with the result page of the indexed_search (both catch the param. “sword”)
  • calculated prices can be shown with or without VAT, based on configurable input type and VAT value (the opposite value is then computed)
  • subscribing to events generates template based confirmation e-mails to a defined recipient and, if activated, to the subscriber
  • there is a hook implemented during subscribing process with references to the pi1 of abcourses an the used proxy class. So it is possible to interface an external application
  • you can switch on a contingent management for limiting the number of subscriptions to a certain number (for each event)
  • internally usage of a proxy class
  • to configure abcourses you can make some settings about a flex form but the most important values are configurable with TS too
  • you can use the flex form configuration to assign each abcourses PlugIn on the same page with different template files
  • configurable output format of shown dates and time
  • there is a special feature to look up the changed URL of the detail- view. Just in case your page works with realurl and you moved the page where your detail-view PlugIn is on. (useful for SEO efforts)
  • you can enter a date value (start / stop) for each event, if you want to limit the registration to a specific date range
  • there is a documentation available in the BE for the most important input values
  • server side input validation of the subscribing form as configured via TS

Available content records

In this chapter I want to introduce the available records coming with the installation of abcourses and their possible attributes.

Category

Courses are associated with categories. For a category you can enter a title, a description and you can upload an image for representing the category.

Course

For a course you can enter the following:

  • number
  • title
  • subtitle
  • associate a category (category 1 : n courses)
  • associate a type (type 1 : n courses)
  • associate teaching aids (teaching aids n : m courses)
  • teaser
  • description
  • associate pages with e.g. further informations
  • upload files as an associated download for a course (max. 5)
  • associate trainers (n : m)
  • skill level (represented with a small icon)
  • educational points (just for information)
  • days (just for information of the course duration)
  • contingent (just as information about the max. amount of participants)
  • conditions (text input)
  • conditions (reference to other course records)
  • price (with or without VAT must be configured in TS)

Course type

A course type represents the skill level in another way than the value “skill level” (attr. of course records). You can only enter a title of a course type.

Teaching aids

You can only enter a title for this records. Teaching aids are associated to course records for information purposes.

Trainer

The data for trainer records are saved in tt_address records. This is the reason for the fact, that tt_address is required for the use of abcourses.

Please consider that only a few fields are used in the template for a trainer. These are:

  • name
  • title
  • company
  • image
  • trainer number
  • trainer position

The last two attributes come with abcourses and extends the tt_address table.

Event

Events are the records a user can subscribe to and are associated to one course record.

Available fields are:

  • event number
  • start-date for registration
  • end-date for registration
  • start-date and time of the first day
  • end-date and time of the last day
  • associated course (course 1 : n event)
  • associated trainers
  • subscribed participants ( this field is not in use currently. See also the To-Do section...)
  • associated location (1:n)
  • discount flag (if the price for this single event should differ to the base price as entered in the course record)
  • discount value (enter a positive double value for raise, and a negative value for reduce the base price)
  • last-minute flag (if activated and supported by the corresponding templates, a special css class can be associated to this event for highlighting this record in listings. Records marked as “last minute” are shown in last-minute views automatically)
  • contingent amount (if contingent management is activated, this value limits the possible amount of subscriptions)
  • subscriptions (this value is increased with each subscription and will be compared with “contingent amount” if contingent management is activated)
  • associated arrangements (to offer additional accommodations)

Location

A location can be assigned to an event for informational purposes.

These attributes can be entered for location records:

  • title
  • street
  • zip
  • city
  • phone
  • fax
  • email
  • contact person
  • informations (as reference to a page record with e.g. additional informations)

Category

To categorize your offered courses.

You can enter:

  • title
  • teaser
  • image

Hotel

If you want to offer additional accommodations you have to enter some hotels and arrangements.

For a hotel you can enter:

  • name
  • subtitle
  • link
  • image (e.g. a logo)
  • rating (0 start, 1 star ...)

Arrangements

To offer additional accommodations with an event you need to enter arrangements to assign them later with the events.

For this you can enter:

  • backendname (as title in BE view)
  • frontendname (as title in FE output)
  • associated hotel (hotel 1 : n arrangements)
  • price (if this is with or without VAT depends on the global tax configuration)

Please consider that there is not really an interface for subscribing an accommodation. It is only included in the confirmation email.

Available views

Here we described the available views as offered with this extension.

Categories overview

This view represents two views in one. At least one PlugIn with this view-type is required for abcourses.

On one hand this view-type can list all available categories, and on the other hand it can list all courses for one specific category. It depends on an URL parameter which view-type will be rendered. With a flag available in the FlexForm of the PlugIn, you can force the view- type to ignore the URL parameter and list the categories all the time. For example this is necessary if you have one page with two PlugIns of this view type and you want to show the courses of the category on the left and an overview of other available categories on the right.

The following two screens represents the “courses in this category” view.

img-4 Abbildung 4: Courses in one category 2

Abbildung 5: An example for two PlugIns with view-type category overview on one page

Both views based internally completely on the abcourses object layer. It is up to you and depends on the used template which information will be displayed. Read more about this later in the template section...

Search result list

Come on, just guess what it does :-) Not to derive from the name: The search result list will get the parameters from indexed_search input fields for look ups as well. So you can combine both plug ins on the same page...

Detail view

The detail view can show all informations associated with a course. It depends on the template what will be displayed. Please consider that this view is not completely based on the abcourses object layer! Why? Because the extension grew with the time and there was no object layer in the first version. So this is a relict from previous version. But although it contains the full scope of operation. Refactoring of this function is already on our to do list... Maybe the template structure for this view can change then.

Events will be only shown if it is possible to subscribe. As an exception you can configure the count of days events may be expired. These expired events will be shown but there is no subscribe link rendered for them.

See screen shots of this view at Abbildung1 and Abbildung3 .

Subscribe view

The user reaches the subscribe view automatically (because the default subscribe view is configured via TS), if he clicks on an event for which a subscription is possible. Depending on the template the subscribe view shows all informations about the course, the event and all records which you can assign via the BE.

Depending on TS configuration and one more template snippet you can create a form for subscribing an event (including server side input validation). And if available, the user could request an accommodation as well!

After successful registration the user is redirected to a “thank you” side (a page record from you cms) and an email will be send to the admin as configured in TS (and optionally to the user). During the registration a hook is called which you can use for whatever you want it to do...

You can even use this PlugIn for direct subscriptions. Just add it via TYPO3 BE and select an event in the BE! Please don't do this for the default subscription view as configured in TS.

img-5 Abbildung 6: Front-End subscribe form

img-6 Abbildung 7: BE FlexForm PlugIn configuration

Read more about setup, hook and template later in this documentation.

Last minute short

Deprecated. Use the selectedEvents view.

This view was used for short listings of last minute events. Since you can use the “selectedEvents” view for this (since version 1.3.X) it is not recommended to use this short view. Also an argument for this is, that the selectedEvents view use the abcourses object layer. See the selectedEvents section of this document for further informations.

Last minute detailed

Deprecated. Use the selectedEvents view.

This view was used for short listings of last minute events. Since you can use the “selectedEvents” view for this (since version 1.3.X) it is not recommended to use this short view. Also an argument for this is, that the selectedEvents view use the abcourses object layer. See the selectedEvents section of this document for further informations.

Category overview and a listing of current events

This view-type is a special variant of the category listing and is able not only to list categories but also show an configurable number of courses, which the closest events are assigned to.

This is very useful for search engine optimization (for internal linking), because the page has (computed) different content which does not rotate with each page view or something like this but with each time one event is no longer the “closest” event within a category.

img-7 Abbildung 8: Sample screen shot for this view type.

Overview of selected events

This view is for displaying events without the selection of a special class and renders only special events. You can select this events manually or you can configure this view-type to display events which are marked as “last-minute”. For the last-minute layout you can set an amount of events you want to display as well.

The last-minute feature is implemented since version 1.3.X and displaces the both last-minute view-types. This is because it depends only on the assigned template file if you make this view type as an short or a detailed overview of last-minute events.

If there is more than one event selected (or computed) for one course, they get merged with this course during the rendering process.

img-8 Abbildung 9: Example layout for this view-type with additional course and trainer informations.

Overview of selected categories

This view is for displaying categories. But other than the normal categories overview, this view type only renders categories which you have manually selected in the BE FlexForm. Within the FlexForm use the Tab “Special View Settings” and than the selection “Categories to be shown within the special view Selected-Categories”.

There are some TS settings for this view to change the output. See more about this in the TS section of this documentation.

Installation

There are a few steps required to get the extension working with the min. features... This basic settings should be done in 15Min. But it can become very time expensive depending on the variants of configuration possibilities you want to use. As example: Using different templates for the same view-type on different pages and so on...

You should start with this

Make a back-up of your environment (to play safe)

Create some Sys-Folder records where your content for this extension is stored later. Depending on the number of records you want to deal with, it could be recommended to create a folder for each category (to store your events in)

img-9 I recommend a folder structure like this:

Seminars

  • Categories and Course-Types
  • Courses
  • Events
  • Hotels and Arrangements
  • Trainers, Locations and Teachin-Aid's

Create some page records for your front-end PlugIns.Depending on the TS configuration and some implemented link features you need at least pages for:

  • a categories overview
  • The result view of search queries (as not in menu)
  • the course details (as not in menu)
  • the subscribe view (as not in menu)
  • a “thank you” page where subscribers are redirected after a successful subscription

Add the corresponding PlugIn view types for the pages as mentioned above on each page

Overwrite the extensions default TS as described later in this documentation.

And: Do not forget to define a storage page within the backend. The storage page is used as pid for tracked subscriptions!

IMPORTANT! Have a look that the locale settings are correct. There are two fields for this within the plugins TypoScript: locale and offset. See more about this in the TS configuration table of this documentation and within the TS Default template as well.

That's it... Was easy, wasn't it? :-)

If you need help with your configuration: Since Version 1.3.3 there is a third Tab in the Plugins BE FlexForm called “config info”. Check the box on this tab and reload the page where you have problems... And configuration check will be rendered then! Sometimes this is very usefull and can save you a lot of time...

The TS configuration

Guess how funny it is to write this down... :-( But O.K., I am sure it would be no(!) fun for you without this... :-)

plugin.tx_abcourses_pi1

This is the basic PlugIn configuration.

CMD

Property

CMD

Data Type

Number

Description

With this value you can define the view-type for a PlugIn. Normally this is set via FlexForm, but if you want to insert one abcourses PlugIn via TS, you need to set this...

1:CATOVERVIEW2:QUICKSEARCH

3:RESULTLIST

4:DETAIL

5:SUBSCRIBE

6:LMSHORT (deprecated)

7:LMDETAIL (deprecated)

8:CATOVERVIEWWITHCOURSE

9:SPECIALEVENTOVERVIEW

Default

pidList

Property

pidList

Data Type

String

Description

Comma separated list with page id's. List of page id's where the abcourses records should be available. Normally this is set via FlexForm, but if you want to insert one abcourses PlugIn via TS, you need to set this...

Default

recursive

Property

recursive

Data Type

number

Description

How deep could the pages be nested where to look up abcourses records.

Default

2

template

Property

template

Data Type

string

Description

Filepath to your template file, starting at the root.

Default

typo3conf/ext/abcourses/pi1/abcourses_template.tmpl

uploaddir

Property

uploaddir

Data Type

string

Description

Don't change this...

Default

uploads/tx_abcourses/

skillimagepath

Property

skillimagepath

Data Type

string

Description

Where to look up the skill images. It is up to you to change them.

Default

typo3conf/ext/abcourses/

ratingimagepath

Property

ratingimagepath

Data Type

string

Description

Where to look up the hotel-rating images. It is up to you to change them.

Default

typo3conf/ext/abcourses/images/

parseFunc

Property

parseFunc

Data Type

parseFunc

Description

Take a look at the TSRef for further information

Default

tt_content.text.20.parseFunc

pidResults

Property

pidResults

Data Type

page_id

Description

The id of the page which contains the default abcourses plugin with view-type 3 “Resultlist”.

Default

pidCourseDetails

Property

pidCourseDetails

Data Type

page_id

Description

The id of the page which contains the default abcourses plugin with view-type 4 “Detail”.

Default

pidOverview

Property

pidOverview

Data Type

page_id

Description

The id of the page which contains the default abcourses plugin with view-type 1 “Catoverview”.

Default

pidLMOverview

Property

pidLMOverview

Data Type

page_id

Description

This is used to render some links. Since the LM-Overview is deprecated this should be set to a page id which contains a corresponding PlugIn of view type 9.

Default

pidSubscribe

Property

pidSubscribe

Data Type

page_id

Description

The id of the page which contains the default abcourses plugin with view-type 5 “Subscribe”.

Default

pidSubscribeSuccess

Property

pidSubscribeSuccess

Data Type

page_id

Description

This is the id of the page the subscribers are redirected to after an successful subscription. It is up to you what this page contains. I consider something like a “thanks for your subscription” to be in order.

Default

pidDetailSearch

Property

pidDetailSearch

Data Type

page_id

Description

This is actually not in use.

Default

ddmmyy

Property

ddmmyy

Data Type

string

Description

Format of the date output as used by PHP's strftime function. See http://de.php.net/manual/de/function.strftime.php for reference.

Default

%d.%m.%Y

hhmmss

Property

hhmmss

Data Type

string

Description

Format of the date output as used by PHP's strftime function. See http://de.php.net/manual/de/function.strftime.php for reference. This is used for time output format.

Default

%H:%M

locale

Property

locale

Data Type

string

Description

Set this to your locale.

Default

de_DE

offset

Property

offset

Data Type

integer

Description

Is there a difference between the time as entered within the BE and the time as shown in the FE? So use this to adjust them. Read more about this later in this documentation.

Default

-60

priceWithTax

Property

priceWithTax

Data Type

boolean

Description

Set this to 1 if your entered prices are already with VAT. Set this to 0 if they are without VAT.

Default

0

taxValue

Property

taxValue

Data Type

number

Description

Tax value

Default

19

currency

Property

currency

Data Type

String

Description

Abbrev. of the used currency

Default

EUR

lastminuteclass

Property

lastminuteclass

Data Type

string

Description

Additional css class name as used in event listings for last minute events. (usage depends on the template)

Default

lastminute

searchcoursefields

Property

searchcoursefields

Data Type

string

Description

Where the text query should look up.

Default

tx_abcourses_course.uid-title-teaser

sortingfieldcoursesincat

Property

sortingfieldcoursesincat

Data Type

String

Description

Name of the DB attribute of a course for sorting the course list in category overviews.

Default

name

usecontingent

Property

usecontingent

Data Type

boolean

Description

Set this to 1 if you want to activate the contingent management. Consider that it is only possible to subscribe for an event then, if the event has a contingent of at least 1 left.

Default

0

dlimage

Property

dlimage

Data Type

String

Description

Filepath to the default download icon.

Default

/typo3conf/ext/abcourses/images/dl_icon.gif

dlimage_pdf

Property

dlimage_pdf

Data Type

String

Description

Filepath to the download icon of pdf files.

Default

/typo3conf/ext/abcourses/images/pdf_icon.gif

dlimage_tif

Property

dlimage_tif

Data Type

string

Description

Default

=< dlimage

dlimage_zip

Property

dlimage_zip

Data Type

string

Description

Default

=< dlimage

redirectDetailPage

Property

redirectDetailPage

Data Type

number

Description

See inline TS comments for this please.

Default

N.A.

redirectDetailPageId

Property

redirectDetailPageId

Data Type

number

Description

Default

N.A.

redirectToDomain

Property

redirectToDomain

Data Type

number

Description

Default

N.A.

addOnLabels

Property

addOnLabels

Data Type

string

Description

Comma separated. If you add a value to this list and (lowercase) to the locallang.xml then it is available as a marker in every view. The marker is uppercase.

Default

addonlbl-membershipnr

trackSubscriptionsAsRecords

Property

trackSubscriptionsAsRecords

Data Type

int

Description

Set this to 0 to disable the subscription tracking. Set this to 1 and every subscription will be tracked as tt_address record.

Default

1 (On!)

addressRecordUniqueField

Property

addressRecordUniqueField

Data Type

string

Description

This value is for looking up similar subscribers. It must be an available name of your formfieldsas well as a valid name for a tt_address attribute field

Default

email

beUserId

Property

beUserId

Data Type

int

Description

BE Userid to create the tt_address records. This is just for association. Your TYPO will not change its user context!

Default

0

TS for “Category overview”

plugin.tx_abcourses_pi1.catoverview

parseFunc

Property

parseFunc

Data Type

ParseFunc / function

Description

Further informations in the TSRef

Default

< plugin.tx_abcourses_pi1.parseFunc

catImage

Property

catImage

Data Type

IMAGE / cObj

Description

Preconfiguration for rendered images.

Default

wrap = |

cols

Property

cols

Data Type

Number

Description

The template of this view is splitted in colums and rows. This value indicates how many cols will be rendered for each row.

Default

2

All category fields

Property

All category fields

Data Type

...

Description

Additionally you can configure all TS values as available for categories here. You will find more about this in the documentation of the template markers for categories.

Default

TS for “Courses in category”

plugin.tx_abcourses_pi1.coursesincat

parseFunc

Property

parseFunc

Data Type

ParseFunc / function

Description

Further informations in the TSRef

Default

< plugin.tx_abcourses_pi1.parseFunc

initevents

Property

initevents

Data Type

boolean

Description

Set this to 1, if you want to display events in this view too. If you do not set this flag, the events are not available for the course instances and so they will not be rendered!Keep in mind that this query may be expensive...

Default

0

category

Property

category

Data Type

All category fields

Description

Additionally you can configure all TS values as available for categories here. You will find more about this in the documentation of the template markers for categories.

Default

category.course

Property

category.course

Data Type

All course fields

Description

Additionally you can configure all TS values as available for courses here. You will find more about this in the documentation of the template markers for courses.

Default

category.course.event

Property

category.course.event

Data Type

All events fields

Description

See template section for this...

Default

TS for “Quicksearch”

Actually there is no configuration required for this view.

TS for “Resultlist”

plugin.tx_abcourses_pi1.resultlist

parseFunc

Property

parseFunc

Data Type

ParseFunc / function

Description

Further informations in the TSRef

Default

< plugin.tx_abcourses_pi1.parseFunc

course

Property

course

Data Type

All course fields

Description

See template section for this...

Default

TS for view-type “Detail”

In because of this view-type is currently not completely based on the object-model, some of the TS properties are not nested as like for other view-type's.

Template structure and TS configuration for this view will change during the implementation of the object model for this view-type!

plugin.tx_abcourses_pi1.coursedetail

parseFunc

Property

parseFunc

Data Type

ParseFunc / function

Description

Further informations in the TSRef

Default

< plugin.tx_abcourses_pi1.parseFunc

showeventsago

Property

showeventsago

Data Type

number

Description

If you would like to display expired events too, set this to an appropriate number of days an event may have expired.

Default

0

eventcols

Property

eventcols

Data Type

number

Description

The template for displaying the events of a course is split up in rows and columns so this value will define how many cols a row should contain.

Default

1

conditionalCourse

Property

conditionalCourse

Data Type

To start a sub part

Description

Below this, you can note all available Course fields. This will be used to display the referenced conditional courses

Default

Just 3 small examples

All course fields

Property

All course fields

Data Type

Description

See template section for this...

Default

All category fields

Property

All category fields

Data Type

Description

Default

All trainer fields

Property

All trainer fields

Data Type

Description

Default

All event fields

Property

All event fields

Data Type

Description

Default

All location fields

Property

All location fields

Data Type

Description

Default

All page fields

Property

All page fields

Data Type

Description

Default

All conditions fields

Property

All conditions fields

Data Type

Description

Default

Please consider, that the rendered “Similar courses” uses the “All course fields” too, because they are just course records and depends, technically, on the same rendering function.

TS for view-type “Subscribe”

This view-type is responsible for rendering generally informations for the corresponding event on the one hand, and for generating the accommodation- and subscribe-form on the other hand.

For the generally event informations

plugin.tx_abcourses_pi1.eventsubscribe

parseFunc

Property

parseFunc

Data Type

ParseFunc / function

Description

Further informations in the TSRef

Default

< plugin.tx_abcourses_pi1.parseFunc

All course fields

Property

All course fields

Data Type

Description

See template section for this...

Default

All event fields

Property

All event fields

Data Type

Description

Default

All trainer fields

Property

All trainer fields

Data Type

Description

Default

All location fields

Property

All location fields

Data Type

Description

Default

All category fields

Property

All category fields

Data Type

Description

Default

noContingentWrap

Property

noContingentWrap

Data Type

stdWrap

Description

If no contingent is left for an event, and short information is rendered and wrapped with this...

Default

All participant fields

Property

All participant fields

Data Type

Description

See template section for this

Default

For the accommodation- and subscribe-form

plugin.tx_abcourses_pi1.subscribe

sendTo

Property

sendTo

Data Type

string

Description

Recipient E-Mail address for the administrative subscription info E-Mail.

Default

xx@xxx.xx

mailFrom

Property

mailFrom

Data Type

string

Description

The From-Address of the info E-Mail.

Default

alias@domain.de

mailFromName

Property

mailFromName

Data Type

string

Description

The From-Name of the info E-Mail.

Default

Seminar Database

usedLabels

Property

usedLabels

Data Type

string

Description

Comma separated list of all(!) used form fields.

Default

anrede,vorname,nachname,email,telefon,fax,firma,adresse,eventid,arrang ement,invoiceaddress

required

Property

required

Data Type

string

Description

This string list below causes the corresponding form fields to be required

Default

vorname,nachname,email

mailLabels

Property

mailLabels

Data Type

string

Description

Use this list to determine which form fields will be included in the confirmation email.

Default

anrede,vorname,nachname,email,telefon,fax,firma,adresse,arrangement,in voiceaddress

sendEmailsAfterSubscription

Property

sendEmailsAfterSubscription

Data Type

boolean

Description

Setting this flag to 0 causes no confirmation e-mail is sent at all.

Default

1

sendConfirmation

Property

sendConfirmation

Data Type

boolean

Description

Set this flag to 1 if you want your subscriber to get a confirmation mail too.

Otherwise only the Admin will receive a confirmation.

This does not take an effect if the flag sendEmailsAfterSubscription is set to 0.

The form field “email” is used for the E-Mail address of the subscriber.

Default

0

tt_address_mapping

Property

tt_address_mapping

Data Type

string

Description

Here you can map your form fields with the corresponding tt_address entities.

Default

first_name:vorname,last_name:nachname,email:email,gender:gender

manlocselname

Property

manlocselname

Data Type

string

Description

See more about this in the “Special content” section.

This value is rendered as name attribute for the location select box.

Default

wunschstandort

manlocselparams

Property

manlocselparams

Data Type

string

Description

Additionally parameters for the select box.

Default

class="mf-input"

manlocselvalues

Property

manlocselvalues

Data Type

string

Description

The available options for the select box. If you prefix this list with a single “,”, the first value is rendered as an empty option.

Default

,Hamburg,Hannover,Kassel,Berlin,Potsdam/Kleinmachnow,Stuttgart,Leipzig ,Frankfurt,München,Regensburg,Nürnberg,Paderborn,Dortmund,Siegen,Wien

accommodationPeriod

Property

accommodationPeriod

Data Type

integer

Description

Possible period for accommodation, depending on the start and enddate of the corresponding event.

Default

2

hotel

Property

hotel

Data Type

All hotel fields...

Description

Take a look at the template marker section for this

Default

arrangement

Property

arrangement

Data Type

All arrangement fields...

Description

Default

TS for view-type “Category overview with next courses”

For this type of category overview you can display the next events and their courses too. This view type is really useful for SEO efforts because this list change every time an event is not the closest event for a category any more. So you can create a nice view with different internally links.

plugin.tx_abcourses_pi1.catoverviewwithnextevents

All category fields...

Property

All category fields...

Data Type

Description

Default

nextevents

Property

nextevents

Data Type

Integer

Description

Number of closest events in an category which should be rendered.

Default

3

course

Property

course

Data Type

All course fields...

Description

Default

course.event

Property

course.event

Data Type

All event fields...

Description

Default

TS for view-type “Selected events”

This view can represent a list of manually selected events and their corresponding courses as well as an computed list of events / courses which are marked as “last minute”.

Which variant this view stands for is normally selected via the FlexForm configuration of the PlugIn in the BackEnd. But if you want to insert this with TypoScript you must do this settings via TS too.

plugin.tx_abcourses_pi1.selectedevents

cols

Property

cols

Data Type

Integer

Description

The template is divided in rows and columns so this value sets the number of columns rendered for each row.

Default

2

asLastMinuteView

Property

asLastMinuteView

Data Type

Boolean

Description

Set this to 1 if you want this view to work as a last minute view.

Default

N.A. (uncomment this line if you want to use it)

maxNEvents

Property

maxNEvents

Data Type

Integer

Description

Number of closest last-minute events which should be rendered.

Default

N.A. (uncomment this line if you want to use it)

selectedEvents

Property

selectedEvents

Data Type

String

Description

Comma separated list of event id's. You will need this if you want to insert this view-type via TS but not as last minute view.

Default

N.A. (uncomment this line if you want to use it)

showEventsAgo

Property

showEventsAgo

Data Type

Integer

Description

This is ONLY available via TS at present. If you want to display expired events to, set this to the number of days an event can be expired.

Default

N.A. (uncomment this line if you want to use it)

course

Property

course

Data Type

All fields for courses...

Description

Default

course.event

Property

course.event

Data Type

All event fields...

Description

Default

course.trainer

Property

course.trainer

Data Type

All trainer fields...

Description

Default

Template structure of the different view-types

This extension is shipped with a default template. Please take a look at this default templates to get an overview of the corresponding template structure for the view-type you want to edit...!

Template marker for records / general

Generally available markers

The template marker as listed below can be used in every template! They are primarily intended to be used as labels.

###DAYSLABEL###

Marker

###DAYSLABEL###

Usage

Label for the “day” field in courses

TS Wrapper

TS Description

###LABELWARNING###

Marker

###LABELWARNING###

Usage

This has content if some required form fields of the subscribe form are missed.

TS Wrapper

TS Description

###WARNING###

Marker

###WARNING###

Usage

This has content if some required form fields of the subscribe form are missed.

TS Wrapper

TS Description

###LABELTRAINER###

Marker

###LABELTRAINER###

Usage

Label for trainer records.

TS Wrapper

TS Description

###LABELTITLE###

Marker

###LABELTITLE###

Usage

In forms for form of address

TS Wrapper

TS Description

###LABELTITLE.I.0### (.1, .2)

Marker

###LABELTITLE.I.0### (.1, .2)

Usage

This marker is comupted depending on the available translations in the locallang file. You can add there more values for this like I.0, I.1, I.2 ...

TS Wrapper

TS Description

###LABELADDITIONAL###

Marker

###LABELADDITIONAL###

Usage

TS Wrapper

TS Description

###LABELADDITIONAL.I.0###(.1 ...)

Marker

###LABELADDITIONAL.I.0###(.1 ...)

Usage

This marker is comupted depending on the available translations in the locallang file. You can add there more values for this like I.0, I.1, I.2 ...

TS Wrapper

TS Description

###LABELSELPERIODSTART###

Marker

###LABELSELPERIODSTART###

Usage

Label of the select box for accommodation start period

TS Wrapper

TS Description

###LABELSELPERIODEND###

Marker

###LABELSELPERIODEND###

Usage

Label of the select box for accommodation end period

TS Wrapper

TS Description

###LABELACCOMMODATION###

Marker

###LABELACCOMMODATION###

Usage

Label for accommodation records.

TS Wrapper

TS Description

###LABELCOURSEDAYS###

Marker

###LABELCOURSEDAYS###

Usage

Label for the days value as entered in a course record.

TS Wrapper

TS Description

###LABELSUBMIT###

Marker

###LABELSUBMIT###

Usage

The text on the “send” button of the search form.

TS Wrapper

TS Description

###LABELSUBMITSUBSCRIBE###

Marker

###LABELSUBMITSUBSCRIBE###

Usage

The label on the submit button as contained in the subcribe view.

TS Wrapper

TS Description

###LABELSUBSCRIBEHEADER###

Marker

###LABELSUBSCRIBEHEADER###

Usage

Informational header of the subscribe view.

TS Wrapper

TS Description

###LABELNAME###

Marker

###LABELNAME###

Usage

TS Wrapper

TS Description

###LABELLASTNAME###

Marker

###LABELLASTNAME###

Usage

TS Wrapper

TS Description

###LABELCOMPANY###

Marker

###LABELCOMPANY###

Usage

TS Wrapper

TS Description

###LABELADDRESS###

Marker

###LABELADDRESS###

Usage

TS Wrapper

TS Description

###LABELINVOICEADDRESS###

Marker

###LABELINVOICEADDRESS###

Usage

TS Wrapper

TS Description

###LABELEMAIL###

Marker

###LABELEMAIL###

Usage

TS Wrapper

TS Description

###LABELPHONE###

Marker

###LABELPHONE###

Usage

TS Wrapper

TS Description

###TAXLABEL###

Marker

###TAXLABEL###

Usage

As used for price information.

TS Wrapper

TS Description

###LABELARRANGEMENTSDESC###

Marker

###LABELARRANGEMENTSDESC###

Usage

Label for the description of arrangements.

TS Wrapper

TS Description

###CUR###

Marker

###CUR###

Usage

Currency as entered in TS. For price informations.

TS Wrapper

TS Description

###LABELTEACHINGAIDS###

Marker

###LABELTEACHINGAIDS###

Usage

TS Wrapper

TS Description

###LABELSIMILAR###

Marker

###LABELSIMILAR###

Usage

Label for listings of similar courses.

TS Wrapper

TS Description

###LABELPAGES###

Marker

###LABELPAGES###

Usage

Label for pages with further informations as assigned to a course record.

TS Wrapper

TS Description

###LABELPOINTS###

Marker

###LABELPOINTS###

Usage

TS Wrapper

TS Description

###LABELEVENT###

Marker

###LABELEVENT###

Usage

TS Wrapper

TS Description

###LABELNOEVENTS###

Marker

###LABELNOEVENTS###

Usage

TS Wrapper

TS Description

###LABELEVENTTITLE###

Marker

###LABELEVENTTITLE###

Usage

TS Wrapper

TS Description

###LABELCATOVERVIEW###

Marker

###LABELCATOVERVIEW###

Usage

TS Wrapper

TS Description

###LABELDATE###

Marker

###LABELDATE###

Usage

TS Wrapper

TS Description

###LABELPRICE###

Marker

###LABELPRICE###

Usage

TS Wrapper

TS Description

###LABELPARTICIPIANTS###

Marker

###LABELPARTICIPIANTS###

Usage

TS Wrapper

TS Description

###LABELREGSTART###

Marker

###LABELREGSTART###

Usage

Label for information about the start date of a registration period.

TS Wrapper

TS Description

###LABELREGEND###

Marker

###LABELREGEND###

Usage

TS Wrapper

TS Description

###LABELCOURSENUMBER###

Marker

###LABELCOURSENUMBER###

Usage

TS Wrapper

TS Description

###EDUPOINTSLABEL###

Marker

###EDUPOINTSLABEL###

Usage

TS Wrapper

TS Description

###CONDITIONSLABEL###

Marker

###CONDITIONSLABEL###

Usage

A label to introduce the conditions of a course.

TS Wrapper

TS Description

###LABELNORESULTS###

Marker

###LABELNORESULTS###

Usage

TS Wrapper

TS Description

###LABELERRORCONTACTUS###

Marker

###LABELERRORCONTACTUS###

Usage

TS Wrapper

TS Description

###LINKCATOVERVIEW###

Marker

###LINKCATOVERVIEW###

Usage

This will render a link to the default PlugIn (as defined via TS) which contains a category overview.

TS Wrapper

TS Description

###LINKDETAILSEARCH###

Marker

###LINKDETAILSEARCH###

Usage

This will render a link to the default PlugIn which contains a detail search. (not in use!)

TS Wrapper

TS Description

###LINKLMOVERVIEWSTART###

Marker

###LINKLMOVERVIEWSTART###

Usage

This will return only the <a href=”xxx”> part of a link to the default PlugIn (as defined via TS) with a LastMinute overview.

TS Wrapper

TS Description

###LINKLMOVERVIEWEND###

Marker

###LINKLMOVERVIEWEND###

Usage

Will return the </a> for the previous marker.

TS Wrapper

TS Description

###LINKLMOVERVIEW###

Marker

###LINKLMOVERVIEW###

Usage

Whole link to the last minute view.

TS Wrapper

TS Description

###LABELLOCNAME###

Marker

###LABELLOCNAME###

Usage

Location name

TS Wrapper

TS Description

###LABELLOCSTREET###

Marker

###LABELLOCSTREET###

Usage

TS Wrapper

TS Description

###LABELLOCZIP###

Marker

###LABELLOCZIP###

Usage

TS Wrapper

TS Description

###LABELLOCCITY###

Marker

###LABELLOCCITY###

Usage

TS Wrapper

TS Description

###LABELLOCPHONE###

Marker

###LABELLOCPHONE###

Usage

TS Wrapper

TS Description

###LABELLOCFAX###

Marker

###LABELLOCFAX###

Usage

TS Wrapper

TS Description

###LABELLOCEMAIL###

Marker

###LABELLOCEMAIL###

Usage

TS Wrapper

TS Description

###LABELLOCPERSON###

Marker

###LABELLOCPERSON###

Usage

TS Wrapper

TS Description

###REQUIREDHINT###

Marker

###REQUIREDHINT###

Usage

To mark something as “required”

TS Wrapper

TS Description

###LBLMSHORTTITLE###

Marker

###LBLMSHORTTITLE###

Usage

Label Last Minute short title by example for usage as headline.

TS Wrapper

TS Description

###LBLMOVERVIEWTITLE###

Marker

###LBLMOVERVIEWTITLE###

Usage

Label last minute overview by example for usage as headline

TS Wrapper

TS Description

###LABELLOCATIONINFO###

Marker

###LABELLOCATIONINFO###

Usage

TS Wrapper

TS Description

###LABELBACKTOCOURSE###

Marker

###LABELBACKTOCOURSE###

Usage

TS Wrapper

TS Description

###LABELMAX###

Marker

###LABELMAX###

Usage

Max participants label

TS Wrapper

TS Description

###LABELCOURSETYPE###

Marker

###LABELCOURSETYPE###

Usage

TS Wrapper

TS Description

###LABELHEADERSEARCHRESULTS###

Marker

###LABELHEADERSEARCHRESULTS###

Usage

TS Wrapper

TS Description

There is a hook which you can use to change this markers... See more about this in the “hooks” section of this documentation.

Example for labeladditional
<div class="additionaly">
    ###LABELADDITIONAL###<br />
    <select name="Raucherzimmer">
        <option select="selected">###LABELADDITIONAL.I.0###</option>
        <option>###LABELADDITIONAL.I.1###</option>
        <option>###LABELADDITIONAL.I.2###</option>
   </select>
</div>
Example for labeltitle
<div class="form-label">
    <label for="Anrede">###LABELTITLE###</label>
</div>
<select name="Anrede">
    <option select="selected">###LABELTITLE.I.0###</option>
    <option>###LABELTITLE.I.1###</option>
    <option>###LABELTITLE.I.2###</option>
</select>

All category fields

"

Marker

Usage

For rendering of later values.

TS Wrapper

parseFunc

TS Description

parseFunc/function

###CATIMAGE###

Marker

###CATIMAGE###

Usage

Icon for a category.

TS Wrapper

catImageWrap

TS Description

IMAGE/cObj

###CATTITLE###

Marker

###CATTITLE###

Usage

Same as above, but without the link.

TS Wrapper

catTitleWrap

TS Description

###CATTEASER###

Marker

###CATTEASER###

Usage

Teaser for a category.

TS Wrapper

catTeaserWrap

TS Description

< parseFunc

There is a template subpart ###NOCOURSES### for categories which tried to list their courses. This is only implemented within the Category object an may not be available in all kinds of view types.

All course fields

"

Marker

Usage

For rendering of later values.

TS Wrapper

parseFunc

TS Description

parseFunc/function

###COURSEUID###

Marker

###COURSEUID###

Usage

TS Wrapper

TS Description

###NUMBER###

Marker

###NUMBER###

Usage

Course number

TS Wrapper

courseNumberWrap

TS Description

stdWrap/function

###TITLE###

Marker

###TITLE###

Usage

title

TS Wrapper

courseTitleWrap

TS Description

stdWrap/function

###SUBTITLE###

Marker

###SUBTITLE###

Usage

subtitle

TS Wrapper

courseSubtitleWrap

TS Description

stdWrap/function

###TEASER###

Marker

###TEASER###

Usage

...

TS Wrapper

courseTeaserWrap

TS Description

< parseFunc

###DESCRIPTION###

Marker

###DESCRIPTION###

Usage

...

TS Wrapper

courseDescriptionWrap

TS Description

< parseFunc

###EDUPOINTS###

Marker

###EDUPOINTS###

Usage

...

TS Wrapper

courseEdupointsWrap

TS Description

stdWrap/function

###CONTINGENT###

Marker

###CONTINGENT###

Usage

...

TS Wrapper

courseContingentWrap

TS Description

stdWrap/function

###DAYS###

Marker

###DAYS###

Usage

...

TS Wrapper

courseDaysWrap

TS Description

stdWrap/function

###DAYSLABEL###

Marker

###DAYSLABEL###

Usage

Days label. Singular/Plural depending on days.

TS Wrapper

courseDayslabelWrap

TS Description

stdWrap/function

###CONDITIONSTEXT###

Marker

###CONDITIONSTEXT###

Usage

The textual entered course conditions

TS Wrapper

courseConditionWrap

TS Description

stdWrap/function

<--###CONDITIONS### begin-->

Marker

<--###CONDITIONS### begin-->

Usage

This starts a template subpart to render referenced conditional courses. Please take a look into the default template to get an example.

TS Wrapper

TS Description

<--###FILES### begin -->

Marker

<--###FILES### begin -->

Usage

This starts a template subpart to render referenced files. Find an example within the default template.

TS Wrapper

TS Description

###BASEPRICE###

Marker

###BASEPRICE###

Usage

Base price without VAT

TS Wrapper

basepriceWrap

TS Description

stdWrap/function

###BASEPRICETAX###

Marker

###BASEPRICETAX###

Usage

Base price with VAT

TS Wrapper

basepricetaxWrap

TS Description

stdWrap/function

###COURSESKILLLEVELIMAGE###

Marker

###COURSESKILLLEVELIMAGE###

Usage

Image, corresponding to the entered skill level.

TS Wrapper

courseSkillImageWrap

TS Description

IMAGE / cObj

###DOWNLOADLINKIMAGE###

Marker

###DOWNLOADLINKIMAGE###

Usage

Image downloadlink

TS Wrapper

TS Description

All event fields

<!-- ###LOCATIONS### -->

Marker

<!-- ###LOCATIONS### -->

Usage

If this marker is present in the events template and an assigned location is available for this event, the rendering of the location is triggered as well.. See an example below this table.

TS Wrapper

TS Description

###EVENTNUMBER###

Marker

###EVENTNUMBER###

Usage

Number of the event.

TS Wrapper

eventNumberWrap

TS Description

stdWrap / function

###EVENTTEASER###

Marker

###EVENTTEASER###

Usage

The event teaser

TS Wrapper

eventTeaserWrap

TS Description

stdWrap/function

###CONTINGENT###

Marker

###CONTINGENT###

Usage

The available contingent.

TS Wrapper

eventContingentWrap

TS Description

stdWrap/function

###CONTINGENTLEFT###

Marker

###CONTINGENTLEFT###

Usage

Remaining contingent

TS Wrapper

eventContingentLeftWrap

If the contingentmanagement is disabled, this marker is rendered with the ts wrapper usecontingentInactiveWrap instead.

TS Description

stdWrap/function

###DAYS###

Marker

###DAYS###

Usage

The duration of this event in days.

TS Wrapper

eventDaysWrap

TS Description

stdWrap/function

###DATE###

Marker

###DATE###

Usage

This marker contains the start date of this event and, if available, the end date as well. The date is formatted with the php strftime() function.

TS Wrapper

eventDateWrap

TS Description

stdWrap/function

###DATESTART###

Marker

###DATESTART###

Usage

Shows only the start date of an event. The date is formatted with the php strftime() function.

TS Wrapper

eventDateStartWrap

TS Description

stdWrap/function

###DATEEND###

Marker

###DATEEND###

Usage

Shows only the end date of an event. The date is formatted with the php strftime() function.

TS Wrapper

eventDateEndWrap

TS Description

stdWrap/function

###TIMEDATESTART###

Marker

###TIMEDATESTART###

Usage

Shows the start and, if available, the end time related to the first date of an event. The date is formatted with the php strftime() function.

TS Wrapper

eventTimeDateStartWrap

TS Description

stdWrap/function

###TIMEDATEEND###

Marker

###TIMEDATEEND###

Usage

Shows the start and, if available, the end time related to the last date of an event. The date is formatted with the php strftime() function.

TS Wrapper

eventTimeDateEndWrap

TS Description

stdWrap/function

###PRICE###

Marker

###PRICE###

Usage

The price for this event without VAT.

TS Wrapper

eventPriceWrap

TS Description

stdWrap/function

###PRICETAX###

Marker

###PRICETAX###

Usage

The price with VAT included.

TS Wrapper

eventPriceTaxWrap

TS Description

stdWrap/function

###REGSTART###

Marker

###REGSTART###

Usage

Shows the date the subscribe links are effective from.

TS Wrapper

eventRegStartWrap

TS Description

stdWrap/function

###REGEND###

Marker

###REGEND###

Usage

Shows the date the subscribe links losing their validity.

TS Wrapper

eventRegEndWrap

TS Description

stdWrap/function

###LASTMINUTE###

Marker

###LASTMINUTE###

Usage

If the event is marked as last minute, this marker is filled with the css class as configured in the basic PlugIn TS.

TS Wrapper

TS Description

Example for the usage of the sub template “Locations”:
<!-- ###EVENT### begin -->                                                        <div class="event ###LASTMINUTE###">
                ###DATE### - ###PRICE######CUR### (###PRICETAX######CUR### ###TAXLABEL###)<br />
                ###SUBSCRIBELINK###
        </div>
        <!-- ###LOCATIONS### begin -->
                <!-- ###LOCATION### begin -->
                        ###LOCCITY###
                <!-- ###LOCATION### end -->
        <!-- ###LOCATIONS### end -->
<!-- ###EVENT### end -->

All trainer fields

###TRAINERTITLE###

Marker

###TRAINERTITLE###

Usage

The title as entered in the tt_address record.

TS Wrapper

trainerTitleWrap

TS Description

stdWrap/function

###FULLNAME###

Marker

###FULLNAME###

Usage

Full name

TS Wrapper

trainerFullnameWrap

TS Description

stdWrap/function

###TRAINERCOMPANY###

Marker

###TRAINERCOMPANY###

Usage

Company

TS Wrapper

trainerCompanyWrap

TS Description

stdWrap/function

###TRAINERIMAGE###

Marker

###TRAINERIMAGE###

Usage

Image if uploaded

TS Wrapper

trainerImageWrap

TS Description

COBJ / IMAGE

###TRAINERNUMBER###

Marker

###TRAINERNUMBER###

Usage

Trainer number

TS Wrapper

TS Description

###TRAINERPOSITION###

Marker

###TRAINERPOSITION###

Usage

Trainer position

TS Wrapper

TS Description

All location fields

###LOCNAME###

Marker

###LOCNAME###

Usage

Name of the location.

TS Wrapper

locationNameWrap

TS Description

stdWrap/function

###LOCSTREET###

Marker

###LOCSTREET###

Usage

Street

TS Wrapper

locationStreetWrap

TS Description

stdWrap/function

###LOCZIP###

Marker

###LOCZIP###

Usage

Zipcode

TS Wrapper

locationZipWrap

TS Description

stdWrap/function

###LOCCITY###

Marker

###LOCCITY###

Usage

City

TS Wrapper

locationCityWrap

TS Description

stdWrap/function

###LOCPHONE###

Marker

###LOCPHONE###

Usage

Phone

TS Wrapper

locationPhoneWrap

TS Description

stdWrap/function

###LOCFAX###

Marker

###LOCFAX###

Usage

Facsimile number

TS Wrapper

locationFaxWrap

TS Description

stdWrap/function

###LOCEMAIL###

Marker

###LOCEMAIL###

Usage

E-Mail address of a contact person

TS Wrapper

locationEmailWrap

TS Description

stdWrap/function

###LOCPERSON###

Marker

###LOCPERSON###

Usage

Name of a contact person

TS Wrapper

locationPersonWrap

TS Description

stdWrap/function

All page fields

###PAGETITLE###

Marker

###PAGETITLE###

Usage

The title of a page assigned to a course.

TS Wrapper

pageTitleWrap

TS Description

StdWrap / function

###PAGESUBTITLE###

Marker

###PAGESUBTITLE###

Usage

The subtitle of a page assigned to a course.

TS Wrapper

pageSubtitleWrap

TS Description

StdWrap / function

All hotel fields

<!-- ###ARRANGEMENTS### -->

Marker

<!-- ###ARRANGEMENTS### -->

Usage

If this subtemplate is available and if there are initialized arrangements for this hotel, the rendering of the arrangements is triggered as well.

TS Wrapper

TS Description

###NAME###

Marker

###NAME###

Usage

The name of this hotel record.

TS Wrapper

TS Description

###SUBTITLE###

Marker

###SUBTITLE###

Usage

Subtitle for this hotel.

TS Wrapper

TS Description

###IMAGE###

Marker

###IMAGE###

Usage

Renders an image if you uploaded on for this hotel.

TS Wrapper

image

TS Description

COBJ / IMAGE

###RATING###

Marker

###RATING###

Usage

Renders an rating image corresponding to the rating you have chosen in the back end.

TS Wrapper

ratingImage

TS Description

COBJ / IMAGE

All arrangement fields

###FORMFIELD###

Marker

###FORMFIELD###

Usage

The uid of this record. See an example how to use this within a hotel template below this table.

TS Wrapper

TS Description

###FRONTENDNAME###

Marker

###FRONTENDNAME###

Usage

The name of this arrangement as shown in the frontend.

TS Wrapper

TS Description

###PRICE###

Marker

###PRICE###

Usage

The price for this arrangement. Without VAT.

TS Wrapper

priceWrap

TS Description

stdWrap/function

###PRICETAX###

Marker

###PRICETAX###

Usage

Price with tax included.

TS Wrapper

priceTaxWrap

TS Description

stdWrap/function

All teaching aid fields

For subtemplates of teaching aid records, there is only a fieldmarker ###NAME### without any special wrapping.

All conditions fields

In this case conditions are course records which contains recommended previous knowledge. You can integrate them only in the detail view of a course record at the moment. This is because the support for of them is currently not assumed in the object model.

###TITLE###

Marker

###TITLE###

Usage

Course title

TS Wrapper

conditionsTitleWrap

TS Description

stdWrap/function

###SUBTITLE###

Marker

###SUBTITLE###

Usage

Course subtitle

TS Wrapper

conditionsSubtitleWrap

TS Description

stdWrap/function

###DETAILLINK###

Marker

###DETAILLINK###

Usage

Course detail link

TS Wrapper

conditionsLinkWrap

TS Description

stdWrap/function

All participantfields

These are the available fields for tracked participants. You can create create participant records manually as well. They will only automatically created if you have activated and configured this feature.

###TITLE###

Marker

###TITLE###

Usage

Corresponding record field

TS Wrapper

titleWrap

TS Description

stdWrap/function

###FULLNAME###

Marker

###FULLNAME###

Usage

Corresponding record field

TS Wrapper

fullnameWrap

TS Description

stdWrap/function

###COMPANY###

Marker

###COMPANY###

Usage

Corresponding record field

TS Wrapper

companyWrap

TS Description

stdWrap/function

###GENDER###

Marker

###GENDER###

Usage

Corresponding record field

TS Wrapper

genderWrap

TS Description

stdWrap/function

###FIRST_NAME###

Marker

###FIRST_NAME###

Usage

Corresponding record field

TS Wrapper

firstNameWrap

TS Description

stdWrap/function

###MIDDLE_NAME###

Marker

###MIDDLE_NAME###

Usage

Corresponding record field

TS Wrapper

middleNameWrap

TS Description

stdWrap/function

###LAST_NAME###

Marker

###LAST_NAME###

Usage

Corresponding record field

TS Wrapper

lastNameWrap

TS Description

stdWrap/function

###EMAIL###

Marker

###EMAIL###

Usage

Corresponding record field

TS Wrapper

emailWrap

TS Description

stdWrap/function

###PHONE###

Marker

###PHONE###

Usage

Corresponding record field

TS Wrapper

phoneWrap

TS Description

stdWrap/function

###MOBILE###

Marker

###MOBILE###

Usage

Corresponding record field

TS Wrapper

mobileWrap

TS Description

stdWrap/function

###CITY###

Marker

###CITY###

Usage

Corresponding record field

TS Wrapper

cityWrap

TS Description

stdWrap/function

###ZIP###

Marker

###ZIP###

Usage

Corresponding record field

TS Wrapper

zipWrap

TS Description

stdWrap/function

Special content

The manual location selector

Coming soon...

The subscription hook

Pre-subscription hook. The variable $hookAbort is passed into the expected method. If you implement this as an reference in your hook handler, you can abort the subscription an the user will get an error message...

if (is_array ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey][$this->prefixId]['subscription'])) {
    foreach  ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey][$this->prefixId]['subscription'] as $classRef) {
            $hookObj= &t3lib_div::getUserObj($classRef);
                  if (method_exists($hookObj, 'startSubscription')) {
                  $hookObj->startSubscription($MA, $MACourse, $MAEvent, $MATrainer, $MALocation, $hookAbort, $this);
          }
    }
}

The parameters prefixed with $MA are associative marker arrays for template substitutions. $this is the PHP common reference to the current object. In this case, the pi1 class instance.

The displayDetail Hook

This hook is called just before the output of the displayDetail Method renders the detailed View of an course. That is the hook:

if (is_array ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey][$this->prefixId]['displayDetail'])){
    foreach  ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey][$this->prefixId]['displayDetail'] as $classRef){
            $hookObj= &t3lib_div::getUserObj($classRef);
                  if (method_exists($hookObj, 'customDisplayDetail')) {
                  $hookObj->customDisplayDetail($sRet,$MACourse);
          }
      }
}

Your method customDisplayDetail MUST receive the parameter as Reference to take an effect!!!

The fillAllLabels Hook

This hook is called just before the method fillAllLabels returns. The method fills an array with general markers and is used for substitution before the output of each view type! So you can use this hook to add different labels.

Thats the hook:

if (is_array ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey][$this->prefixId]['fillAllLabels'])) {
    foreach  ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF'][$this->extKey][$this->prefixId]['fillAllLabels'] as $classRef){
            $hookObj= &t3lib_div::getUserObj($classRef);
                  if (method_exists($hookObj, 'customFillAllLabels')) {
                    $hookObj->customFillAllLabels($MA);
            }
    }
}

How to change the subscription form

Due to the fact that a submitted subscription form is not stored in any way by this extension currently, you can add as many fields as you want. If you want the submitted data to be stored anywhere, you can use the subscription hook for this. Of course, that means you have to do some coding.

However, add some fields to the subscription form does not require any coding skills.

Here an example. Expecting you have a form-template with input fields for firstname, surname and email, the template would look like this:

<!--  ###SUBSCRIBEFORMTMPL### begin -->
    <h2>###LABELSUBSCRIBEHEADER###</h2>
    ###LABELWARNING###
    ###WARNING###
    <form action="###PATHSUBSCRIBE###" method="POST">

The next 3 lines are the input fields!

        ###LABELNAME### <input type="text" name="vorname" value="###VORNAME###"/><br />
        ###LABELLASTNAME### <input type="text" name="nachname" value="###NACHNAME###"/><br />
        ###LABELEMAIL### <input type="text" name="email" value="###EMAIL###"/>   <br />


        <input type="hidden" name="subscribe" value="1" />
        <input type="hidden" name="eventid" value="###EVENTID###" />
        <br />
        <input type="submit" value="###LABELSUBMITSUBSCRIBE###" />
    </form>
    <!--  ###NOSUBSCRIBEFORMTMPL### begin -->
            ###LABELERRORCONTACTUS###<br>
            ###LINKCATOVERVIEW###<br>
            ###LINKDETAILSEARCH###
    <!--  ###NOSUBSCRIBEFORMTMPL### end -->
<!--  ###SUBSCRIBEFORMTMPL### end -->

And now, we want to add an required input field where the subscriber should enter the name of the company he is working for. We call the input field “company”.

For a new Input field we can:

  • create a new localized template marker for the label of the field as shown on the rendered subscribing form
  • create a new localization for the rendered mails
  • define the new field as “required” input
  • suppress or show the field in the generated mail

Especially the last point is usefull if you integrate some hidden form fields which may be required within your subscription hook.

At first, you add one line in the template of you form:

<input type="text" name="company"/><br />

But now you have only an input field. You want to have a localized label as well. So you add a marker for the label:

###ADDONLBL-COMPANY### <input type="text" name="company"/><br />

Now, add “addonlbl-company” to the comma separated list of the plugins TS configuration. This is explained above in the section “TS Configuration”. And of course, add one line to the pi1's locallang.xml file. Use the key “addonlbl-company” for the index attribute of the new line in the XML file. Do not forget: f you update abcourses later, make a backup of you locallang.xml to play save!

We want the new form field to be stikky. That means, that the input of the field is not deleted if the subscriber returns to the subscribing form in case of a failed form validation. So, add the “value” attribute to the new form field and insert a marker. The marker must be the uppercase “name” attribute of the form field, but with 3 # prefixed and post-positioned.

###ADDONLBL-COMPANY### <input type="text" name="company" value=”###COMPANY###”/><br />

The first step is done now. You have a new line in your form, made it stikky, added a label and localized it. Great ;-)

But what is about the “required” setting as mentioned above? And where to find the visibility settings? Go back to the TS Configuration and you will find some description for the template marker: usedLabels, required, mailLabels.

For our example setup it should look like this:

# ALL fields of the form must be listed here!!!
usedLabels =  vorname, nachname, email, subscribe, eventid, company

# Here you list all fields that you wants to be reuired!!!
required      =  email, company

# And last but not least: list all labels that you wants to appear within the sent mails.
mailLabels  = vorname, nachname, email, company

One more hint! The name of the field “email” is automatically validated as an email address and will be used as the sendTo recipient for the customers confirmation email.

Thats it! I hope this quick overview was usefull for you.

What you should know about the email template

Within the email template you will find a marker ###FORMDATA###.

This marker will be replaced by the _POST variables of the subscription form. For each key>value pair their will be one new line rendered.

Please note that you have to define the values, which you want to be included in this listing, within the TS setup variable “mailLabels”.

By example: The _POST variable “company” will be rendered like this:

Company : XYZ AG

But where comes the “Company” from? Abcourses tries to look up every POST key in the locallang.xml. If you added there a line with “company” as index, you can localize the form field labels for the mail template.

If abcourses do not found a localization, it uses the key of the field as label with an upper cased first letter.

Please consider that you should not choose key names which already exists in the locallang.xml!

Known problems

  • If you do not use static url's and your mini search box uses “GET” as method, the values may be not submitted correctly. This is not due to abcourses but rather a generally booby trap with forms, when they have already an get parameter in their relative action path.
  • Some querys are incompatible with the dbal extension because dbal fails while translating some join querys.
  • If you encounter a difference between the start/end time you have entered for an event in the back end and the rendered value in the front end, take notice of the setting “offset” as described within the TS section of this documentation. This is necessary due to the fact, that the timestamp for field of TCA type “time” are not really a UTC+/-0 values as the fields of the type “date”.
  • Please report all bugs you may encounter!!!

To-Do list

  • Refactoring of the course-details view-type using completely the integrated object model. During this the template structure for this view as well as the TS structure will change. But do not panic, I will write down further informations about the changes then!
  • Refactoring of the subscribe view-type using completely the integrated object model. During this the template structure for this view as well as the TS structure will change. But do not panic, I will write down further informations about the changes then!

Do you have any special requirements? Do you need hooks on different places or need any special feature what could be nice for others too? Just write an E-Mail and vote for it.

Currently on the “wishlist”:

  • A generated form for requests to an event or course.
  • Language overlays for the available content types.
  • Different date formats for start- and end-date of an event.
  • Assignment between courses and categories n:m
  • ...

Currently just an idea:

  • Automated front-end user and group creation for offering course specific informations to the subscribers (Downloads, FAQ's, Podcasts, Forum like features for asking the trainer and so on...)
  • ...

Changelog

Please take a look at the corresponding ChangeLog file in the extensions folder for this.

img-10 EXT: abcourses - 27