Changes between Version 1 and Version 2 of Регистрација на корисник


Ignore:
Timestamp:
11/19/15 14:48:43 (9 years ago)
Author:
123009
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Регистрација на корисник

    v1 v2  
    1 = Custom Ticket Fields
    2 
    3 Trac supports adding custom, user-defined fields to the ticket module. Using custom fields, you can add typed, site-specific properties to tickets.
    4 
    5 == Configuration
    6 
    7 Configuring custom ticket fields is done in the [wiki:TracIni trac.ini] file. All field definitions should be under a section named `[ticket-custom]`.
    8 
    9 The syntax of each field definition is:
    10 {{{
    11  FIELD_NAME = TYPE
    12  (FIELD_NAME.OPTION = VALUE)
    13  ...
     1= Регистрација на корисник =
     2\\
     3|----------------------------------
     4{{{#!th align=right style="background: #ffd"
     5Use Case ID:
    146}}}
    15 
    16 The example below should help to explain the syntax.
    17 
    18 === Available Field Types and Options
    19 
    20  * '''text''': A simple (one line) text field.
    21    * label: Descriptive label.
    22    * value: Default value.
    23    * order: Sort order placement. Determines relative placement in forms with respect to other custom fields.
    24    * format: One of:
    25      * `plain` for plain text
    26      * `wiki` to interpret the content as WikiFormatting
    27      * `reference` to treat the content as a queryable value (''since 1.0'')
    28      * `list` to interpret the content as a list of queryable values, separated by whitespace (''since 1.0'')
    29  * '''checkbox''': A boolean value check box.
    30    * label: Descriptive label.
    31    * value: Default value: 0 or 1.
    32    * order: Sort order placement.
    33  * '''select''': Drop-down select box. Uses a list of values.
    34    * label: Descriptive label.
    35    * options: List of values, separated by '''|''' (vertical pipe).
    36    * value: Default value (one of the values from options).
    37    * order: Sort order placement.
    38  * '''radio''': Radio buttons. Essentially the same as '''select'''.
    39    * label: Descriptive label.
    40    * options: List of values, separated by '''|''' (vertical pipe).
    41    * value: Default value (one of the values from options).
    42    * order: Sort order placement.
    43  * '''textarea''': Multi-line text area.
    44    * label: Descriptive label.
    45    * value: Default text.
    46    * cols: Width in columns
    47    * rows: Height in lines.
    48    * order: Sort order placement.
    49    * format: Either `plain` for plain text or `wiki` to interpret the content as WikiFormatting.
    50 
    51 Macros will be expanded when rendering `textarea` fields with format `wiki`, but not when rendering `text` fields with format `wiki`.
    52 
    53 === Sample Configuration
    54 
    55 {{{#!ini
    56 [ticket-custom]
    57 
    58 test_one = text
    59 test_one.label = Just a text box
    60 
    61 test_two = text
    62 test_two.label = Another text-box
    63 test_two.value = Default [mailto:joe@nospam.com owner]
    64 test_two.format = wiki
    65 
    66 test_three = checkbox
    67 test_three.label = Some checkbox
    68 test_three.value = 1
    69 
    70 test_four = select
    71 test_four.label = My selectbox
    72 test_four.options = one|two|third option|four
    73 test_four.value = two
    74 
    75 test_five = radio
    76 test_five.label = Radio buttons are fun
    77 test_five.options = uno|dos|tres|cuatro|cinco
    78 test_five.value = dos
    79 
    80 test_six = textarea
    81 test_six.label = This is a large textarea
    82 test_six.value = Default text
    83 test_six.cols = 60
    84 test_six.rows = 30
     7{{{#!td align=left colspan=3
     81
    859}}}
    86 
    87 '''Note''': To make entering an option for a `select` type field optional, specify a leading `|` in the `fieldname.options` option.
    88 
    89 === Reports Involving Custom Fields
    90 
    91 Custom ticket fields are stored in the `ticket_custom` table, not in the `ticket` table. So to display the values from custom fields in a report, you will need a join on the 2 tables. Let's use an example with a custom ticket field called `progress`.
    92 
    93 {{{#!sql
    94 SELECT p.value AS __color__,
    95    id AS ticket, summary, owner, c.value AS progress
    96   FROM ticket t, enum p, ticket_custom c
    97   WHERE status IN ('assigned') AND t.id = c.ticket AND c.name = 'progress'
    98 AND p.name = t.priority AND p.type = 'priority'
    99   ORDER BY p.value
     10|----------------------------------
     11{{{#!th align=right style="background: #ffd"
     12Use Case Name:
    10013}}}
    101 
    102 '''Note''': This will only show tickets that have progress set in them, which is '''not the same as showing all tickets'''. If you created this custom ticket field ''after'' you have already created some tickets, they will not have that field defined, and thus they will never show up on this ticket query. If you go back and modify those tickets, the field will be defined, and they will appear in the query. If that is all that is required, you're set.
    103 
    104 However, if you want to show all ticket entries (with progress defined and without), you need to use a `JOIN` for every custom field that is in the query:
    105 {{{#!sql
    106 SELECT p.value AS __color__,
    107    id AS ticket, summary, component, version, milestone, severity,
    108    (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner,
    109    time AS created,
    110    changetime AS _changetime, description AS _description,
    111    reporter AS _reporter,
    112    (CASE WHEN c.value = '0' THEN 'None' ELSE c.value END) AS progress
    113   FROM ticket t
    114      LEFT OUTER JOIN ticket_custom c ON (t.id = c.ticket AND c.name = 'progress')
    115      JOIN enum p ON p.name = t.priority AND p.type='priority'
    116   WHERE status IN ('new', 'assigned', 'reopened')
    117   ORDER BY p.value, milestone, severity, time
     14{{{#!td align=left colspan=3
     15Регистрација на корисник
    11816}}}
    119 
    120 Note in particular the `LEFT OUTER JOIN` statement here.
    121 
    122 Note that if your config file uses an '''uppercase''' name:
    123 {{{#!ini
    124 [ticket-custom]
    125 
    126 Progress_Type = text
     17|----------------------------------
     18{{{#!th align=right style="background: #ffd"
     19Created By:
    12720}}}
    128 you would use '''lowercase''' in the SQL: `AND c.name = 'progress_type'`.
    129 
    130 === Updating the database
    131 
    132 As noted above, any tickets created before a custom field has been defined will not have a value for that field. Here is some SQL (tested with SQLite) that you can run directly on the Trac database to set an initial value for custom ticket fields. It inserts the default value of 'None' into a custom field called 'request_source' for all tickets that have no existing value:
    133 
    134 {{{#!sql
    135 INSERT INTO ticket_custom
    136    (ticket, name, value)
    137    SELECT
    138       id AS ticket,
    139       'request_source' AS name,
    140       'None' AS value
    141    FROM ticket
    142    WHERE id NOT IN (
    143       SELECT ticket FROM ticket_custom
    144    );
     21{{{#!td align=left
     22Елена Стојанова \\
     23Иван Трајков
    14524}}}
    146 
    147 If you added multiple custom fields at different points in time, you should be more specific in the subquery on table {{{ticket}}} by adding the exact custom field name to the query:
    148 
    149 {{{#!sql
    150 INSERT INTO ticket_custom
    151    (ticket, name, value)
    152    SELECT
    153       id AS ticket,
    154       'request_source' AS name,
    155       'None' AS value
    156    FROM ticket
    157    WHERE id NOT IN (
    158       SELECT ticket FROM ticket_custom WHERE name = 'request_source'
    159    );
     25{{{#!th align=right style="background: #ffd"
     26Last Updated By:
    16027}}}
    161 
    162 ----
    163 See also: TracTickets, TracIni
     28{{{#!td align=left
     29Елена Стојанова \\
     30Иван Трајков
     31}}}
     32|----------------------------------
     33{{{#!th align=right style="background: #ffd"
     34Date Created:
     35}}}
     36{{{#!td align=left
     3718.11.2015
     38}}}
     39{{{#!th align=right style="background: #ffd"
     40Date Last Updated:
     41}}}
     42{{{#!td align=left
     4319.11.2015
     44}}}
     45|----------------------------------
     46{{{#!th align=right style="background: #ffd"
     47Actors:
     48}}}
     49{{{#!td align=left colspan=3
     50Корисник - Купувач
     51}}}
     52|----------------------------------
     53{{{#!th align=right style="background: #ffd"
     54Description:
     55}}}
     56{{{#!td align=left colspan=3
     57Новиот корисник најпрво треба да се регистрира пред да може да купи книга.
     58}}}
     59|----------------------------------
     60{{{#!th align=right style="background: #ffd"
     61Trigger:
     62}}}
     63{{{#!td align=left colspan=3
     64Корисникот сака да купи книга.
     65}}}
     66|----------------------------------
     67{{{#!th align=right style="background: #ffd"
     68Preconditions:
     69}}}
     70{{{#!td align=left colspan=3
     71Не е претходно регистриран.
     72}}}
     73|----------------------------------
     74{{{#!th align=right style="background: #ffd"
     75Postconditions:
     76}}}
     77{{{#!td align=left colspan=3
     78Корисникот може да пребарува и купува книги.
     79}}}
     80|----------------------------------
     81{{{#!th align=right style="background: #ffd"
     82Flow of events:
     83}}}
     84{{{#!td align=left colspan=3
     85* Корисникот клика на копчето за регистрација
     86* Се отвара форма за внесување на информации потребни за регистрација
     87* Внесување на податоци од страна на корисникот
     88* Валидација на податоци \\
     89  1. Податоците не се валидни
     90    a. Извести го корисникот каде се случила грешка
     91  2. Податоците се валидни
     92    a. Праќање мејл за конфирмација на корисникот \\
     93    b. Креирање кориснички профил
     94}}}
     95|----------------------------------
     96{{{#!th align=right style="background: #ffd"
     97Includes:
     98}}}
     99{{{#!td align=center colspan=3
     100/
     101}}}
     102|----------------------------------
     103{{{#!th align=right style="background: #ffd"
     104Priority:
     105}}}
     106{{{#!td align=left colspan=3
     107Висок
     108}}}
     109|----------------------------------
     110{{{#!th align=right style="background: #ffd"
     111Frequency of Use:
     112}}}
     113{{{#!td align=left colspan=3
     114Секојдневна
     115}}}
     116|----------------------------------
     117{{{#!th align=right style="background: #ffd"
     118Exceptions:
     119}}}
     120{{{#!td align=center colspan=3
     121/
     122}}}
     123|----------------------------------
     124{{{#!th align=right style="background: #ffd"
     125Assumptions:
     126}}}
     127{{{#!td align=left colspan=3
     128* Корисникот внесува уникатна мејл адреса која до сега не е регистрирана во базата
     129* Корисникот внесува валидна мејл адреса
     130}}}
     131|----------------------------------
     132{{{#!th align=right style="background: #ffd"
     133Notes and Issues:
     134}}}
     135{{{#!td align=center colspan=3
     136/
     137}}}