commit 14faa2e3255122c5a80e3b67faafc0b0be13174b
Author: Moritz Bunkus <m.bunkus@linet.de>
Date:   Tue Apr 23 11:03:03 2013 +0200

    Pflichtenheft-Popupmenü: Überschriften immer und unterstrichen anzeigen

diff --git a/css/jquery.contextMenu.css b/css/jquery.contextMenu.css
index f088e6318..46d601394 100755
--- a/css/jquery.contextMenu.css
+++ b/css/jquery.contextMenu.css
@@ -140,3 +140,8 @@
 .context-menu-accesskey {
     text-decoration: underline;
 }
+
+.context-menu-item.context-menu-heading {
+    text-decoration: underline;
+    font-weight: bold;
+}
diff --git a/js/locale/de.js b/js/locale/de.js
index 5bba34d11..22bd93fe6 100644
--- a/js/locale/de.js
+++ b/js/locale/de.js
@@ -18,18 +18,22 @@ namespace("kivi").setupLocale({
 "Do you want to set the account number \"#1\" to \"#2\" and the name \"#3\" to \"#4\"?":"Soll die Kontonummer \"#1\" zu \"#2\" und den Name \"#3\" zu \"#4\" geändert werden?",
 "Edit":"Bearbeiten",
 "Edit text block":"Textblock bearbeiten",
-"Edit":"Bearbeiten",
 "Enter longdescription":"Langtext eingeben",
+"Function block actions":"Funktionsblockaktionen",
 "Map":"Karte",
 "Part picker":"Artikelauswahl",
 "Paste":"Einfügen",
-"Requirement spec actions:":"Pflichtenheftaktionen:",
+"Requirement spec actions":"Pflichtenheftaktionen",
 "Revert to version":"Auf Version zurücksetzen",
 "Save":"Speichern",
+"Section/Function block actions":"Abschnitts-/Funktionsblockaktionen",
+"Text block actions":"Textblockaktionen",
 "The description is missing.":"Die Beschreibung fehlt.",
 "The name is missing.":"Der Name fehlt.",
 "The name must only consist of letters, numbers and underscores and start with a letter.":"Der Name darf nur aus Buchstaben (keine Umlaute), Ziffern und Unterstrichen bestehen und muss mit einem Buchstaben beginnen.",
 "The option field is empty.":"Das Optionsfeld ist leer.",
 "The selected database is still configured for client \"#1\". If you delete the database that client will stop working until you re-configure it. Do you still want to delete the database?":"Die auswählte Datenbank ist noch für Mandant \"#1\" konfiguriert. Wenn Sie die Datenbank löschen, wird der Mandanten nicht mehr funktionieren, bis er anders konfiguriert wurde. Wollen Sie die Datenbank trotzdem löschen?"
-"Toggle marker":"Markierung umschalten"
+"Time/cost estimate actions":"Aktionen für Kosten-/Zeitabschätzung",
+"Toggle marker":"Markierung umschalten",
+"Version actions":"Aktionen für Versionen"
 });
diff --git a/js/requirement_spec.js b/js/requirement_spec.js
index a03eb901b..6373b69fe 100644
--- a/js/requirement_spec.js
+++ b/js/requirement_spec.js
@@ -369,8 +369,8 @@ function revert_to_versioned_copy_ajax_call(key, opt) {
 function create_requirement_spec_context_menus() {
   var general_actions = {
       sep98:           "---------"
-    , general_actions: { name: kivi.t8('Requirement spec actions:') }
-    , sep99:           "---------"
+    , general_actions: { name: kivi.t8('Requirement spec actions'), className: 'context-menu-heading' }
+    // , sep99:           "---------"
     , create_version:  { name: kivi.t8('Create new version'),      icon: "new",    callback: create_requirement_spec_version, disabled: disable_requirement_spec_commands }
     , copy_reqspec:    { name: kivi.t8('Copy requirement spec'),   icon: "copy",   callback: copy_reqspec   }
     , delete_reqspec:  { name: kivi.t8('Delete requirement spec'), icon: "delete", callback: delete_reqspec }
@@ -393,7 +393,8 @@ function create_requirement_spec_context_menus() {
       , hide: requirement_spec_text_block_popup_menu_hidden
     },
     items:    $.extend({
-        add:     { name: kivi.t8('Add text block'),        icon: "add",    callback: standard_text_block_ajax_call }
+        heading: { name: kivi.t8('Text block actions'),    className: 'context-menu-heading' }
+      , add:     { name: kivi.t8('Add text block'),        icon: "add",    callback: standard_text_block_ajax_call }
       , edit:    { name: kivi.t8('Edit text block'),       icon: "edit",   callback: standard_text_block_ajax_call, disabled: disable_edit_text_block_commands }
       , delete:  { name: kivi.t8('Delete text block'),     icon: "delete", callback: ask_delete_text_block,         disabled: disable_edit_text_block_commands }
       , sep1:    "---------"
@@ -413,7 +414,8 @@ function create_requirement_spec_context_menus() {
     selector: '.section-context-menu',
     events:   events,
     items:    $.extend({
-        add_section:        { name: kivi.t8('Add section'),        icon: "add",    callback: standard_item_ajax_call }
+        heading:            { name: kivi.t8('Section/Function block actions'), className: 'context-menu-heading' }
+      , add_section:        { name: kivi.t8('Add section'),        icon: "add",    callback: standard_item_ajax_call }
       , add_function_block: { name: kivi.t8('Add function block'), icon: "add",    callback: standard_item_ajax_call, disabled: disable_add_function_block_command }
       , sep1:               "---------"
       , edit:               { name: kivi.t8('Edit'),               icon: "edit",   callback: standard_item_ajax_call, disabled: disable_edit_item_commands }
@@ -430,7 +432,8 @@ function create_requirement_spec_context_menus() {
     selector: '.function-block-context-menu,.sub-function-block-context-menu',
     events:   events,
     items:    $.extend({
-        add_function_block:     { name: kivi.t8('Add function block'),     icon: "add",    callback: standard_item_ajax_call }
+        heading:                { name: kivi.t8('Function block actions'), className: 'context-menu-heading' }
+      , add_function_block:     { name: kivi.t8('Add function block'),     icon: "add",    callback: standard_item_ajax_call }
       , add_sub_function_block: { name: kivi.t8('Add sub function block'), icon: "add",    callback: standard_item_ajax_call }
       , sep1:                   "---------"
       , edit:                   { name: kivi.t8('Edit'),                   icon: "edit",   callback: standard_item_ajax_call, disabled: disable_edit_item_commands }
@@ -445,22 +448,27 @@ function create_requirement_spec_context_menus() {
 
   $.contextMenu({
     selector: '.time-cost-estimate-context-menu',
-    items:    $.extend({ edit: { name: kivi.t8('Edit'), icon: "edit", callback: standard_time_cost_estimate_ajax_call } }, general_actions)
+    items:    $.extend({
+        heading: { name: kivi.t8('Time/cost estimate actions'), className: 'context-menu-heading' }
+      , edit:    { name: kivi.t8('Edit'), icon: "edit", callback: standard_time_cost_estimate_ajax_call }
+    }, general_actions)
   });
 
   $.contextMenu({
     selector: '.edit-time-cost-estimate-context-menu',
     items:    $.extend({
-        save:   { name: kivi.t8('Save'),   icon: "save",  callback: standard_time_cost_estimate_ajax_call }
-      , cancel: { name: kivi.t8('Cancel'), icon: "close", callback: standard_time_cost_estimate_ajax_call }
+        heading: { name: kivi.t8('Time/cost estimate actions'), className: 'context-menu-heading' }
+      , save:    { name: kivi.t8('Save'),   icon: "save",  callback: standard_time_cost_estimate_ajax_call }
+      , cancel:  { name: kivi.t8('Cancel'), icon: "close", callback: standard_time_cost_estimate_ajax_call }
     }, general_actions)
   });
 
   $.contextMenu({
     selector: '.versioned-copy-context-menu',
     items:    $.extend({
+        heading:           { name: kivi.t8('Version actions'), className: 'context-menu-heading' }
         // create_pdf:        { name: kivi.t8('Create PDF'),        icon: "pdf",    callback: create_pdf_for_versioned_copy_ajax_call                                                }
-      revert_to_version: { name: kivi.t8('Revert to version'), icon: "revert", callback: revert_to_versioned_copy_ajax_call,     disabled: disable_versioned_copy_item_commands }
+      , revert_to_version: { name: kivi.t8('Revert to version'), icon: "revert", callback: revert_to_versioned_copy_ajax_call,     disabled: disable_versioned_copy_item_commands }
     }, general_actions)
   });
 }
diff --git a/locale/de/all b/locale/de/all
index be833f06f..b341d9871 100755
--- a/locale/de/all
+++ b/locale/de/all
@@ -1080,6 +1080,7 @@ $self->{texts} = {
   'Full Preview'                => 'Alles',
   'Full access to all functions' => 'Vollzugriff auf alle Funktionen',
   'Function block'              => 'Funktionsblock',
+  'Function block actions'      => 'Funktionsblockaktionen',
   'Function/position'           => 'Funktion/Position',
   'Fwd'                         => 'Vorw&auml;rts',
   'GL Transaction'              => 'Dialogbuchung',
@@ -1867,7 +1868,7 @@ $self->{texts} = {
   'Requirement Spec Type'       => 'Pflichtenhefttyp',
   'Requirement Spec Types'      => 'Pflichtenhefttypen',
   'Requirement Specs'           => 'Pflichtenhefte',
-  'Requirement spec actions:'   => 'Pflichtenheftaktionen:',
+  'Requirement spec actions'    => 'Pflichtenheftaktionen',
   'Requirement spec function block #1 with #2 sub function blocks; description: "#3"' => 'Pflichtenheft-Funktionsblock #1 mit #2 Unterfunktionsblöcken; Beschreibung: "#3"',
   'Requirement spec section #1 "#2" with #3 function blocks and a total of #4 sub function blocks; preamble: "#5"' => 'Pflichtenheftabschnitt #1 "#2" mit #3 Funktionsblöcken und insgesamt #4 Unterfunktionsblöcken; Einleitung: "#5"',
   'Requirement spec sub function block #1; description: "#2"' => 'Pflichtenheft-Unterfunktionsblock #1; Beschreibung: "#2"',
@@ -1959,6 +1960,7 @@ $self->{texts} = {
   'Searchable'                  => 'Durchsuchbar',
   'Secondary sorting'           => 'Untersortierung',
   'Section "#1"'                => 'Abschnitt "#1"',
+  'Section/Function block actions' => 'Abschnitts-/Funktionsblockaktionen',
   'Sections'                    => 'Abschnitte',
   'Select'                      => 'auswählen',
   'Select a Customer'           => 'Endkunde auswählen',
@@ -2185,6 +2187,7 @@ $self->{texts} = {
   'Terms missing in row '       => '+Tage fehlen in Zeile ',
   'Test and preview'            => 'Test und Vorschau',
   'Test database connectivity'  => 'Datenbankverbindung testen',
+  'Text block actions'          => 'Textblockaktionen',
   'Text blocks back'            => 'Textblöcke hinten',
   'Text blocks front'           => 'Textblöcke vorne',
   'Text field'                  => 'Textfeld',
@@ -2493,6 +2496,7 @@ $self->{texts} = {
   'Time and cost estimate'      => 'Zeit- und Kostenschätzung',
   'Time estimate'               => 'Zeitschätzung',
   'Time period for the analysis:' => 'Analysezeitraum:',
+  'Time/cost estimate actions'  => 'Aktionen für Kosten-/Zeitabschätzung',
   'Timestamp'                   => 'Uhrzeit',
   'Title'                       => 'Titel',
   'To'                          => 'An',
@@ -2635,6 +2639,7 @@ $self->{texts} = {
   'Vendor type'                 => 'Lieferantentyp',
   'Vendors'                     => 'Lieferanten',
   'Verrechnungseinheit'         => 'Verrechnungseinheit',
+  'Version actions'             => 'Aktionen für Versionen',
   'Version number'              => 'Versionsnummer',
   'Version'                     => 'Version',
   'Versions'                    => 'Versionen',
