Skip to content

Instantly share code, notes, and snippets.

@mvidner
Last active December 19, 2015 04:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mvidner/5899029 to your computer and use it in GitHub Desktop.
Save mvidner/5899029 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
diff -ur result/add-on/src/include/add-on/add-on-workflow.rb result-bck/add-on/src/include/add-on/add-on-workflow.rb
--- result/add-on/src/include/add-on/add-on-workflow.rb 2013-06-28 13:55:14.924000000 +0200
+++ result-bck/add-on/src/include/add-on/add-on-workflow.rb 2013-06-28 12:36:25.828000000 +0200
@@ -948,8 +948,13 @@
PushButton(Id(:packager), _("Run &Software Manager..."))
)
),
- _("<p>All add-on products installed on your system are displayed.</p>") + _(
- "<p>Click <b>Add</b> to add a new add-on product, or <b>Delete</b> to remove an add-on which is in use.</p>"
+ Ops.add(
+ _(
+ "<p>All add-on products installed on your system are displayed.</p>"
+ ),
+ _(
+ "<p>Click <b>Add</b> to add a new add-on product, or <b>Delete</b> to remove an add-on which is in use.</p>"
+ )
),
false,
true
diff -ur result/add-on-creator/src/include/add-on-creator/complex.rb result-bck/add-on-creator/src/include/add-on-creator/complex.rb
--- result/add-on-creator/src/include/add-on-creator/complex.rb 2013-06-28 13:41:42.332000000 +0200
+++ result-bck/add-on-creator/src/include/add-on-creator/complex.rb 2013-06-28 12:36:11.020000000 +0200
@@ -105,14 +105,21 @@
end
return ret2
}
- help_text = ((_(
- "<p>Start creating a new add-on product configuration with <b>Add</b>.</p>"
- ) + _(
- "<p>Use <b>Edit</b> to modify the selected add-on product configuration.</p>"
- )) + _(
- "<p>Delete the selected configuration using <b>Delete</b>.</p>"
- )) + _(
- "<p>Build the new add-on product based on the selected configuration with <b>Build</b>.</p>"
+ help_text = Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Start creating a new add-on product configuration with <b>Add</b>.</p>"
+ ),
+ _(
+ "<p>Use <b>Edit</b> to modify the selected add-on product configuration.</p>"
+ )
+ ),
+ _("<p>Delete the selected configuration using <b>Delete</b>.</p>")
+ ),
+ _(
+ "<p>Build the new add-on product based on the selected configuration with <b>Build</b>.</p>"
+ )
)
contents = VBox(
VWeight(
diff -ur result/add-on-creator/src/include/add-on-creator/dialogs.rb result-bck/add-on-creator/src/include/add-on-creator/dialogs.rb
--- result/add-on-creator/src/include/add-on-creator/dialogs.rb 2013-06-28 13:41:35.624000000 +0200
+++ result-bck/add-on-creator/src/include/add-on-creator/dialogs.rb 2013-06-28 12:36:11.020000000 +0200
@@ -271,7 +271,7 @@
AddOnCreator.GetLangCodes(true)
)
if new != nil
- new = Ops.add("license" + ((new == "") ? "" : "."), new)
+ new = Ops.add(Ops.add("license", (new == "") ? "" : "."), new)
Ops.assign(license_files, new, "")
replace_license_widgets.call(new)
ret = :lic_files
@@ -508,7 +508,7 @@
AddOnCreator.GetLangCodes(false)
)
if new != nil
- new = Ops.add("COPYRIGHT" + ((new == "") ? "" : "."), new)
+ new = Ops.add(Ops.add("COPYRIGHT", (new == "") ? "" : "."), new)
Ops.assign(copyright_files, new, "")
replace_copyright_widgets.call(new)
ret = :copyright_files
@@ -570,7 +570,7 @@
AddOnCreator.GetLangCodes(false)
)
if new != nil
- new = Ops.add("COPYING" + ((new == "") ? "" : "."), new)
+ new = Ops.add(Ops.add("COPYING", (new == "") ? "" : "."), new)
Ops.assign(copying_files, new, "")
replace_copying_widgets.call(new)
ret = :copying_files
diff -ur result/add-on-creator/src/include/add-on-creator/helps.rb result-bck/add-on-creator/src/include/add-on-creator/helps.rb
--- result/add-on-creator/src/include/add-on-creator/helps.rb 2013-06-28 13:41:43.360000000 +0200
+++ result-bck/add-on-creator/src/include/add-on-creator/helps.rb 2013-06-28 12:36:11.012000000 +0200
@@ -13,95 +13,167 @@
"<p><b><big>Creating the Add-On</big></b><br>\nPlease wait...<br></p>\n"
),
"write" => _("<p>Writing the add-on configurations<br>\n</p>\n"),
- "start" => (_(
- "<p>This module offers guidance for the creation of an add-on product.</p>"
- ) + _(
- "<p>Select how to create the new add-on product. You can create it from the beginning or base it on an existing product.</p>"
- )) + _(
- "<p>When basing the new product on an existing product, check <b>Generate Package Descriptions</b> to generate new descriptions of packages in the existing product.</p>"
- ),
- "sources" => ((((((_("<p><b>Name and Version</b></p>") + _(
- "<p>Enter the name and version of add-on product.</p>"
- )) + _(
- "<p><b>Required Product</b></p>"
- )) + _(
- "<p>Select the product to which the new add-on product can be applied. This selection forms the <b>REQUIRES</b> value of the <tt>content</tt> file.</p>"
- )) + _(
- "<p><b>Add-On Packages</b></p>"
- )) + _(
- "<p>Choose the path to the directory containing the RPM packages that should form your add-on product.</p>"
- )) + _(
- "<p><b>Required Product Packages</b></p>"
- )) + _(
- "<p>Optionally, choose the path to the directory containing the RPM packages from the product the add-on product should be based on. These packages will not be contained in the add-on product, but could be used for creating the patterns later in the workflow.</p>"
- ),
- "content" => (_(
- "<p>Here, edit the values of the <tt>content</tt> file.</p>"
- ) + _(
- "<p>Enter the information required to identify the add-on product. Deselect <b>Show Only Required Keywords</b> to see all attributes of the <tt>content</tt> file.</p>"
- )) + _(
- "<p>Use <b>Import</b> to import an existing <tt>content</tt> file.</p>"
- ),
- "packages" => ((_(
- "<p>Edit the language-specific descriptions of packages (<tt>packages.lang</tt> files) here.</p>"
- ) + _(
- "<p>Use <b>Add Language</b> to add a description file for a new language. The list of available languages is read from the <b>LINGUAS</b> value of the <tt>content</tt> file. Import an existing file with package descriptions with <b>Import</b>. Delete the description file with <b>Delete</b>.</p>"
- )) + _(
- "<p>Use <b>Add</b> and <b>Edit</b> in the second table to modify description entries for the selected package.</p>"
- )) + _(
- "<p>Optionally, choose the path for the file providing <b>Additional Package Dependencies</b> (EXTRA_PROV).</p>"
- ),
- "patterns" => ((_(
- "<p>Create and edit the patterns for the add-on product here.</p>"
- ) + _(
- "<p>Use <b>New</b> to create a new pattern or <b>Import</b> to import an existing one.</p>"
- )) + _(
- "<p>Use <b>Add</b> and <b>Edit</b> in the second table to modify pattern attributes.</p>"
- )) + _(
- "<p>Check <b>Required pattern</b> to mark the selected pattern as required for\nthe add-on product. Such a pattern will be automatically preselected when the installation of the add-on product is started.</p>"
- ),
- "output" => (_(
- "<p>Specify the path to the directory in which the add-on product should be created. Select <b>Create ISO Image</b> to create the ISO image of the product in the output directory.</p>"
- ) + _(
- "<p>Use <b>Generate Changelog</b> to generate a changelog file containing all changes of packages on the add-on product made in the last two years.</p>"
- )) + _(
- "<p>Adapt the workflow of the add-on product with <b>Configure Workflow</b>. Use <b>Optional Files</b> to configure texts of <tt>README</tt> files, licenses, and other optional values.</p>"
- ),
- "workflow" => (_(
- "<p>Here, you can enter the files necessary for customizing your add-on product workflow.</p>"
- ) + _(
- "<p>Enter the location of the file with the workflow description. This file is an alternative to <tt>control.xml</tt> and is saved as <tt>installation.xml</tt> in the add-on product's base directory.</p>"
- )) + _(
- "<p>To use custom YaST modules during the installation of the add-on product, enter the path to the <tt>y2update.tgz</tt> archive where these modules are stored or configure the contents of <tt>y2update.tgz</tt> by specifying the YaST RPM packages in <b>Import the Packages</b>.</p>"
- ),
- "expert" => _(
- "<p>The optional <tt>info.txt</tt> file gives information about the add-on that should be displayed as a pop-up window with an <b>OK</b> button.</p>"
- ) + _(
- "<p>The text of the license is displayed in a window with <b>Agree</b> and <b>Disagree</b> buttons before the installation starts. The files with the license texts in different languages are compressed to the <tt>license.zip</tt> archive and stored in the <tt>media.1</tt> directory.</p>"
+ "start" => Ops.add(
+ Ops.add(
+ _(
+ "<p>This module offers guidance for the creation of an add-on product.</p>"
+ ),
+ _(
+ "<p>Select how to create the new add-on product. You can create it from the beginning or base it on an existing product.</p>"
+ )
+ ),
+ _(
+ "<p>When basing the new product on an existing product, check <b>Generate Package Descriptions</b> to generate new descriptions of packages in the existing product.</p>"
+ )
+ ),
+ "sources" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b>Name and Version</b></p>"),
+ _("<p>Enter the name and version of add-on product.</p>")
+ ),
+ _("<p><b>Required Product</b></p>")
+ ),
+ _(
+ "<p>Select the product to which the new add-on product can be applied. This selection forms the <b>REQUIRES</b> value of the <tt>content</tt> file.</p>"
+ )
+ ),
+ _("<p><b>Add-On Packages</b></p>")
+ ),
+ _(
+ "<p>Choose the path to the directory containing the RPM packages that should form your add-on product.</p>"
+ )
+ ),
+ _("<p><b>Required Product Packages</b></p>")
+ ),
+ _(
+ "<p>Optionally, choose the path to the directory containing the RPM packages from the product the add-on product should be based on. These packages will not be contained in the add-on product, but could be used for creating the patterns later in the workflow.</p>"
+ )
+ ),
+ "content" => Ops.add(
+ Ops.add(
+ _("<p>Here, edit the values of the <tt>content</tt> file.</p>"),
+ _(
+ "<p>Enter the information required to identify the add-on product. Deselect <b>Show Only Required Keywords</b> to see all attributes of the <tt>content</tt> file.</p>"
+ )
+ ),
+ _(
+ "<p>Use <b>Import</b> to import an existing <tt>content</tt> file.</p>"
+ )
+ ),
+ "packages" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Edit the language-specific descriptions of packages (<tt>packages.lang</tt> files) here.</p>"
+ ),
+ _(
+ "<p>Use <b>Add Language</b> to add a description file for a new language. The list of available languages is read from the <b>LINGUAS</b> value of the <tt>content</tt> file. Import an existing file with package descriptions with <b>Import</b>. Delete the description file with <b>Delete</b>.</p>"
+ )
+ ),
+ _(
+ "<p>Use <b>Add</b> and <b>Edit</b> in the second table to modify description entries for the selected package.</p>"
+ )
+ ),
+ _(
+ "<p>Optionally, choose the path for the file providing <b>Additional Package Dependencies</b> (EXTRA_PROV).</p>"
+ )
+ ),
+ "patterns" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Create and edit the patterns for the add-on product here.</p>"
+ ),
+ _(
+ "<p>Use <b>New</b> to create a new pattern or <b>Import</b> to import an existing one.</p>"
+ )
+ ),
+ _(
+ "<p>Use <b>Add</b> and <b>Edit</b> in the second table to modify pattern attributes.</p>"
+ )
+ ),
+ _(
+ "<p>Check <b>Required pattern</b> to mark the selected pattern as required for\nthe add-on product. Such a pattern will be automatically preselected when the installation of the add-on product is started.</p>"
+ )
+ ),
+ "output" => Ops.add(
+ Ops.add(
+ _(
+ "<p>Specify the path to the directory in which the add-on product should be created. Select <b>Create ISO Image</b> to create the ISO image of the product in the output directory.</p>"
+ ),
+ _(
+ "<p>Use <b>Generate Changelog</b> to generate a changelog file containing all changes of packages on the add-on product made in the last two years.</p>"
+ )
+ ),
+ _(
+ "<p>Adapt the workflow of the add-on product with <b>Configure Workflow</b>. Use <b>Optional Files</b> to configure texts of <tt>README</tt> files, licenses, and other optional values.</p>"
+ )
+ ),
+ "workflow" => Ops.add(
+ Ops.add(
+ _(
+ "<p>Here, you can enter the files necessary for customizing your add-on product workflow.</p>"
+ ),
+ _(
+ "<p>Enter the location of the file with the workflow description. This file is an alternative to <tt>control.xml</tt> and is saved as <tt>installation.xml</tt> in the add-on product's base directory.</p>"
+ )
+ ),
+ _(
+ "<p>To use custom YaST modules during the installation of the add-on product, enter the path to the <tt>y2update.tgz</tt> archive where these modules are stored or configure the contents of <tt>y2update.tgz</tt> by specifying the YaST RPM packages in <b>Import the Packages</b>.</p>"
+ )
+ ),
+ "expert" => Ops.add(
+ _(
+ "<p>The optional <tt>info.txt</tt> file gives information about the add-on that should be displayed as a pop-up window with an <b>OK</b> button.</p>"
+ ),
+ _(
+ "<p>The text of the license is displayed in a window with <b>Agree</b> and <b>Disagree</b> buttons before the installation starts. The files with the license texts in different languages are compressed to the <tt>license.zip</tt> archive and stored in the <tt>media.1</tt> directory.</p>"
+ )
),
"expert2" => _(
"<p>The <tt>COPYRIGHT</tt> and <tt>COPYING</tt> files can have various language modifications and are stored in the root directory of the add-on product.</p>"
),
- "signing" => (_(
- "<p>Here, configure the signing of the add-on product. Choose a secret key from the list of keys available or create a new one with <b>Create</b>.</p>"
- ) + _(
- "<p>Enter the passphrase needed to unlock the secret key.</p>"
- )) + _(
- "<p>Decide if you want to <b>Sign All Packages</b> of the add-on product with the selected key. All previous package signatures will be removed.</p>"
- ),
- "generate" => ((_(
- "<p>Enter the values necessary for generating the new primary key pair.</p>"
- ) + _(
- "<p>The default size of a DSA key is 1024 bits. RSA keys may be between 1024 and 4096 bits long.</p>"
- )) + _(
- "<p>As <b>Expiration Date</b>, enter the number of days after which the key expires. If the number is followed by <tt>w</tt>,<tt>m</tt>, or <tt>y</tt>, it indicates the number of weeks, months, or years. Leave the entry empty for a key that never expires.</p>"
- )) + _(
- "<p>Use <b>Name</b>, <b>Comment</b>, and <b>E-Mail Address</b> to provide the user identification with which the new key should be associated.</p>"
- ),
- "overview" => _(
- "<p>Here, see the overview of data for generating the add-on product.</p>"
- ) + _(
- "<p>Press <b>Finish</b> to create the add-on product in the output directory.</p>"
+ "signing" => Ops.add(
+ Ops.add(
+ _(
+ "<p>Here, configure the signing of the add-on product. Choose a secret key from the list of keys available or create a new one with <b>Create</b>.</p>"
+ ),
+ _("<p>Enter the passphrase needed to unlock the secret key.</p>")
+ ),
+ _(
+ "<p>Decide if you want to <b>Sign All Packages</b> of the add-on product with the selected key. All previous package signatures will be removed.</p>"
+ )
+ ),
+ "generate" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Enter the values necessary for generating the new primary key pair.</p>"
+ ),
+ _(
+ "<p>The default size of a DSA key is 1024 bits. RSA keys may be between 1024 and 4096 bits long.</p>"
+ )
+ ),
+ _(
+ "<p>As <b>Expiration Date</b>, enter the number of days after which the key expires. If the number is followed by <tt>w</tt>,<tt>m</tt>, or <tt>y</tt>, it indicates the number of weeks, months, or years. Leave the entry empty for a key that never expires.</p>"
+ )
+ ),
+ _(
+ "<p>Use <b>Name</b>, <b>Comment</b>, and <b>E-Mail Address</b> to provide the user identification with which the new key should be associated.</p>"
+ )
+ ),
+ "overview" => Ops.add(
+ _(
+ "<p>Here, see the overview of data for generating the add-on product.</p>"
+ ),
+ _(
+ "<p>Press <b>Finish</b> to create the add-on product in the output directory.</p>"
+ )
)
}
end
diff -ur result/apparmor/src/include/apparmor/aa-config.rb result-bck/apparmor/src/include/apparmor/aa-config.rb
--- result/apparmor/src/include/apparmor/aa-config.rb 2013-06-28 13:55:37.728000000 +0200
+++ result-bck/apparmor/src/include/apparmor/aa-config.rb 2013-06-28 12:35:42.476000000 +0200
@@ -396,12 +396,18 @@
evnotify = "disabled" if evnotify == "notinstalled"
end
caption = _("AppArmor Configuration")
- help = (_(
- "<p><b>AppArmor Status</b><br>This reports whether the AppArmor policy enforcement \nmodule is loaded and functioning.</p>"
- ) + _(
- "<p><b>Security Event Notification</b><br>Configure this tool if you want \nto be notified by email when access violations have occurred.</p>"
- )) + _(
- "<p><b>Profile Modes</b><br>Use this tool to change the way that AppArmor \nuses individual profiles.</p>"
+ help = Ops.add(
+ Ops.add(
+ _(
+ "<p><b>AppArmor Status</b><br>This reports whether the AppArmor policy enforcement \nmodule is loaded and functioning.</p>"
+ ),
+ _(
+ "<p><b>Security Event Notification</b><br>Configure this tool if you want \nto be notified by email when access violations have occurred.</p>"
+ )
+ ),
+ _(
+ "<p><b>Profile Modes</b><br>Use this tool to change the way that AppArmor \nuses individual profiles.</p>"
+ )
)
contents = HVCenter(
VBox(
@@ -433,7 +439,10 @@
HSpacing(1),
Left(
HVCenter(
- Label(Id(:modesLabel), " " + _("Set profile modes"))
+ Label(
+ Id(:modesLabel),
+ Ops.add(" ", _("Set profile modes"))
+ )
)
),
PushButton(Id(:modeconf), _("Co&nfigure")),
diff -ur result/apparmor/src/include/apparmor/apparmor_profile_check.rb result-bck/apparmor/src/include/apparmor/apparmor_profile_check.rb
--- result/apparmor/src/include/apparmor/apparmor_profile_check.rb 2013-06-28 13:55:36.028000000 +0200
+++ result-bck/apparmor/src/include/apparmor/apparmor_profile_check.rb 2013-06-28 12:35:42.448000000 +0200
@@ -34,9 +34,12 @@
Ops.add(
Ops.add(
Ops.add(
- _(
- "<p>These problems must be corrected before AppArmor can be started or the profile management tools can be used.</p> "
- ) + "<p>",
+ Ops.add(
+ _(
+ "<p>These problems must be corrected before AppArmor can be started or the profile management tools can be used.</p> "
+ ),
+ "<p>"
+ ),
errmsg
),
"</p>"
diff -ur result/apparmor/src/include/apparmor/apparmor_ycp_utils.rb result-bck/apparmor/src/include/apparmor/apparmor_ycp_utils.rb
--- result/apparmor/src/include/apparmor/apparmor_ycp_utils.rb 2013-06-28 13:55:33.404000000 +0200
+++ result-bck/apparmor/src/include/apparmor/apparmor_ycp_utils.rb 2013-06-28 12:35:42.448000000 +0200
@@ -111,7 +111,10 @@
VSpacing(1),
Top(
Label(
- Ops.add(_("AppArmor Profile Repository Setup") + "\n", repo_url)
+ Ops.add(
+ Ops.add(_("AppArmor Profile Repository Setup"), "\n"),
+ repo_url
+ )
)
),
VBox(ReplacePoint(Id(:replace), Empty())),
diff -ur result/apparmor/src/include/apparmor/capabilities.rb result-bck/apparmor/src/include/apparmor/capabilities.rb
--- result/apparmor/src/include/apparmor/capabilities.rb 2013-06-28 13:55:47.448000000 +0200
+++ result-bck/apparmor/src/include/apparmor/capabilities.rb 2013-06-28 12:35:42.476000000 +0200
@@ -83,12 +83,18 @@
},
"net_admin" => {
"name" => "CAP_NET_ADMIN",
- "info" => (_(
- "<ul><li> Allows interface configuration</li> \n<li> Allows administration of IP firewall, masquerading and accounting</li> \n<li> Allows setting debug option on sockets</li> \n<li> Allows modification of routing tables</li>"
- ) + _(
- "<li> Allows setting arbitrary process / process group ownership on sockets</li> \n<li> Allows binding to any address for transparent proxying</li> \n<li> Allows setting TOS (type of service)</li> \n<li> Allows setting promiscuous mode</li> \n<li> Allows clearing driver statistics</li>"
- )) + _(
- "<li> Allows multicasting</li> \n<li> Allows read/write of device-specific registers</li> \n<li> Allows activation of ATM control sockets </li>\n</ul>"
+ "info" => Ops.add(
+ Ops.add(
+ _(
+ "<ul><li> Allows interface configuration</li> \n<li> Allows administration of IP firewall, masquerading and accounting</li> \n<li> Allows setting debug option on sockets</li> \n<li> Allows modification of routing tables</li>"
+ ),
+ _(
+ "<li> Allows setting arbitrary process / process group ownership on sockets</li> \n<li> Allows binding to any address for transparent proxying</li> \n<li> Allows setting TOS (type of service)</li> \n<li> Allows setting promiscuous mode</li> \n<li> Allows clearing driver statistics</li>"
+ )
+ ),
+ _(
+ "<li> Allows multicasting</li> \n<li> Allows read/write of device-specific registers</li> \n<li> Allows activation of ATM control sockets </li>\n</ul>"
+ )
)
},
"net_raw" => {
@@ -135,22 +141,43 @@
},
"sys_admin" => {
"name" => "CAP_SYS_ADMIN",
- "info" => ((((((_(
- "<ul><li> Allows configuration of the secure attention key</li> \n<li> Allows administration of the random device</li> \n<li> Allows examination and configuration of disk quotas</li> \n<li> Allows configuring the kernel's syslog (printk behaviour)</li>"
- ) + _(
- "<li> Allows setting the domain name</li> \n<li> Allows setting the hostname</li> \n<li> Allows calling bdflush()</li> \n<li> Allows mount() and umount(), setting up new smb connection</li> \n<li> Allows some autofs root ioctls</li>"
- )) + _(
- "<li> Allows nfsservctl</li> \n<li> Allows VM86_REQUEST_IRQ</li> \n<li> Allows to read/write pci config on alpha</li> \n<li> Allows irix_prctl on mips (setstacksize)</li> \n<li> Allows flushing all cache on m68k (sys_cacheflush)</li>"
- )) + _(
- "<li> Allows removing semaphores</li> \n<li> Used instead of CAP_CHOWN to \"chown\" IPC message queues, semaphores and shared memory</li> \n<li> Allows locking/unlocking of shared memory segment</li> \n<li> Allows turning swap on/off</li> \n<li> Allows forged pids on socket credentials passing</li>"
- )) + _(
- "<li> Allows setting read ahead and flushing buffers on block devices</li> \n<li> Allows setting geometry in floppy driver</li> \n<li> Allows turning DMA on/off in xd driver</li> \n<li> Allows administration of md devices (mostly the above, but some extra ioctls)</li>"
- )) + _(
- "<li> Allows tuning the ide driver</li> \n<li> Allows access to the nvram device</li> \n<li> Allows administration of apm_bios, serial and bttv (TV) device</li> \n<li> Allows manufacturer commands in iaan CAPI support driver</li>"
- )) + _(
- "<li> Allows reading non-standardized portions of pci configuration space</li> \n<li> Allows DDI debug ioctl on sbpcd driver</li> \n<li> Allows setting up serial ports</li> \n<li> Allows sending raw qic-117 commands</li>"
- )) + _(
- "<li> Allows enabling/disabling tagged queuing on SCSI controllers\n and sending arbitrary SCSI commands</li> \n<li> Allows setting encryption key on loopback filesystem </li></ul>"
+ "info" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<ul><li> Allows configuration of the secure attention key</li> \n<li> Allows administration of the random device</li> \n<li> Allows examination and configuration of disk quotas</li> \n<li> Allows configuring the kernel's syslog (printk behaviour)</li>"
+ ),
+ _(
+ "<li> Allows setting the domain name</li> \n<li> Allows setting the hostname</li> \n<li> Allows calling bdflush()</li> \n<li> Allows mount() and umount(), setting up new smb connection</li> \n<li> Allows some autofs root ioctls</li>"
+ )
+ ),
+ _(
+ "<li> Allows nfsservctl</li> \n<li> Allows VM86_REQUEST_IRQ</li> \n<li> Allows to read/write pci config on alpha</li> \n<li> Allows irix_prctl on mips (setstacksize)</li> \n<li> Allows flushing all cache on m68k (sys_cacheflush)</li>"
+ )
+ ),
+ _(
+ "<li> Allows removing semaphores</li> \n<li> Used instead of CAP_CHOWN to \"chown\" IPC message queues, semaphores and shared memory</li> \n<li> Allows locking/unlocking of shared memory segment</li> \n<li> Allows turning swap on/off</li> \n<li> Allows forged pids on socket credentials passing</li>"
+ )
+ ),
+ _(
+ "<li> Allows setting read ahead and flushing buffers on block devices</li> \n<li> Allows setting geometry in floppy driver</li> \n<li> Allows turning DMA on/off in xd driver</li> \n<li> Allows administration of md devices (mostly the above, but some extra ioctls)</li>"
+ )
+ ),
+ _(
+ "<li> Allows tuning the ide driver</li> \n<li> Allows access to the nvram device</li> \n<li> Allows administration of apm_bios, serial and bttv (TV) device</li> \n<li> Allows manufacturer commands in iaan CAPI support driver</li>"
+ )
+ ),
+ _(
+ "<li> Allows reading non-standardized portions of pci configuration space</li> \n<li> Allows DDI debug ioctl on sbpcd driver</li> \n<li> Allows setting up serial ports</li> \n<li> Allows sending raw qic-117 commands</li>"
+ )
+ ),
+ _(
+ "<li> Allows enabling/disabling tagged queuing on SCSI controllers\n and sending arbitrary SCSI commands</li> \n<li> Allows setting encryption key on loopback filesystem </li></ul>"
+ )
)
},
"sys_boot" => {
@@ -165,10 +192,13 @@
},
"sys_resource" => {
"name" => "CAP_SYS_RESOURCE",
- "info" => _(
- "<ul><li> Override resource limits. Set resource limits.</li> \n<li> Override quota limits.</li> \n<li> Override reserved space on ext2 filesystem</li> \n<li> Modify data journaling mode on ext3 filesystem (uses journaling resources)</li>"
- ) + _(
- "<li> NOTE: ext2 honors fsuid when checking for resource overrides, so you can override using fsuid too</li> \n<li> Override size restrictions on IPC message queues</li> \n<li> Allows more than 64hz interrupts from the real-time clock</li> \n<li> Override max number of consoles on console allocation</li> \n<li> Override max number of keymaps </li></ul>"
+ "info" => Ops.add(
+ _(
+ "<ul><li> Override resource limits. Set resource limits.</li> \n<li> Override quota limits.</li> \n<li> Override reserved space on ext2 filesystem</li> \n<li> Modify data journaling mode on ext3 filesystem (uses journaling resources)</li>"
+ ),
+ _(
+ "<li> NOTE: ext2 honors fsuid when checking for resource overrides, so you can override using fsuid too</li> \n<li> Override size restrictions on IPC message queues</li> \n<li> Allows more than 64hz interrupts from the real-time clock</li> \n<li> Override max number of consoles on console allocation</li> \n<li> Override max number of keymaps </li></ul>"
+ )
)
},
"sys_time" => {
diff -ur result/apparmor/src/include/apparmor/config_complain.rb result-bck/apparmor/src/include/apparmor/config_complain.rb
--- result/apparmor/src/include/apparmor/config_complain.rb 2013-06-28 13:55:45.576000000 +0200
+++ result-bck/apparmor/src/include/apparmor/config_complain.rb 2013-06-28 12:35:42.476000000 +0200
@@ -12,12 +12,18 @@
Yast.import("Label")
Yast.import("Popup")
Yast.import("Wizard")
- @modeHelp = (_(
- "<p><b>Profile Mode Configuration</b><br>This tool allows \nyou to set AppArmor profiles to either complain or enforce mode.</p>"
- ) + _(
- "<p><b>Complain mode</b> is a profile training state that logs application \nactivity. All the violations of the AppArmor profile rules are logged \n(into <i>/var/log/audit/audit.log</i> file), but still permitted, so \nthat application's behavior is not restricted.</p>"
- )) + _(
- "<p>With the profile in <b>enforce mode</b>, application is protected by \nAppArmor. The profile rules are enforced and their violation is logged,\nbut not permitted (e.g. an application cannot access files, unless it is\npermitted to do so by the profile).</p>"
+ @modeHelp = Ops.add(
+ Ops.add(
+ _(
+ "<p><b>Profile Mode Configuration</b><br>This tool allows \nyou to set AppArmor profiles to either complain or enforce mode.</p>"
+ ),
+ _(
+ "<p><b>Complain mode</b> is a profile training state that logs application \nactivity. All the violations of the AppArmor profile rules are logged \n(into <i>/var/log/audit/audit.log</i> file), but still permitted, so \nthat application's behavior is not restricted.</p>"
+ )
+ ),
+ _(
+ "<p>With the profile in <b>enforce mode</b>, application is protected by \nAppArmor. The profile rules are enforced and their violation is logged,\nbut not permitted (e.g. an application cannot access files, unless it is\npermitted to do so by the profile).</p>"
+ )
)
@showAll = false
end
diff -ur result/apparmor/src/include/apparmor/helps.rb result-bck/apparmor/src/include/apparmor/helps.rb
--- result/apparmor/src/include/apparmor/helps.rb 2013-06-28 13:55:46.500000000 +0200
+++ result-bck/apparmor/src/include/apparmor/helps.rb 2013-06-28 12:35:42.448000000 +0200
@@ -9,102 +9,354 @@
def initialize_apparmor_helps(include_target)
textdomain "yast2-apparmor"
@helps = {
- "EventNotifyHelpText" => ((((((((((_(
- "<p>The Security Event Notification screen enables you to setup email \nalerts for security events. In the following steps, specify how often \nalerts are sent, who receives the alert, and how severe the security \nevent must be to send an alert.</p>"
- ) + _(
- "<p><b>Notification Types</b><br> <b>Terse Notification:</b> \nTerse notification summarizes the total number of system events without \nproviding details. <br>For example:<br> <tt>dhcp-101.up.wirex.com has \nhad 10 security events since Tue Oct 12 11:10:00 2004</tt></p>"
- )) + _(
- "<p><b>Summary Notification:</b> The Summary notification displays \nthe logged AppArmor security events, and lists the number of \nindividual occurrences, including the date of the last occurrence. \n<br>For example:<br> <tt>AppArmor: PERMITTING access to capability\n'setgid' (httpd2-prefork(6347) profile /usr/sbin/httpd2-prefork \nactive /usr/sbin/httpd2-prefork) 2 times, the latest at Sat Oct 9 16:05:54 2004.</tt>\n</p>"
- )) + _(
- "<p><b>Verbose Notification:</b> The Verbose notification displays \nunmodified, logged AppArmor security events. It tells you every time \nan event occurs and writes a new line in the Verbose log. These \nsecurity events include the date and time the event occurred, when \nthe application profile permits access as well as rejects access, \nand the type of file permission access that is permitted or rejected.</p>"
- )) + _(
- "<p>Verbose Notification also reports several messages that \nthe logprof tool uses to interpret profiles. <br>For example:<br>\n<tt> Oct 9 15:40:31 AppArmor: PERMITTING r access to\n/etc/apache2/httpd.conf (httpd2-prefork(6068) profile \n/usr/sbin/httpd2-prefork active /usr/sbin/httpd2-prefork)</tt></p>"
- )) + "<ol>") + _(
- "<li> For each notification type that you would like \nenabled, select the frequency of notification that you would \nlike. For example, if you select <b>1 day</b> from the \npull-down list, you will be sent daily notifications of \nsecurity events, if they occur.</li>"
- )) + _(
- "<li> Enter the email address of those who should receive \nthe Terse, Summary, or Verbose notifications.If there is no local \nSMTP server configured to distribute e-mails from this host to the \ndomain you entered, enter for example <i><user>@localhost</i> \nand enable <i><user></i> to receive system mail, if it is not \na root user. </li>"
- )) + _(
- "<li>Select the lowest <b>severity level</b> for which a notification \nshould be sent. Security events will be logged and the notifications \nwill be sent at the time indicated by the interval when events are \nequal or greater than the selected severity level. If the interval \nis 1 day, the notification will be sent daily, if security events \noccur."
- )) + _(
- "<b>Severity Levels:</b> These are numbered 1 through 10, \n10 being the most severe security incident. The <b>severity.db</b> \nfile defines the severity level of potential security events. \nThe severity levels are determined by the importance of \ndifferent security events, such as certain resources accessed \nor services denied.</li>"
- )) + _(
- "<li>Select <b>Include unknown security events</b> if \nyou would like to include events that are not rated with a severity number.</li>"
- )) + "</ol>",
- "profileWizard" => ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((_(
- "<b>AppArmor Profiling Wizard</b><br>"
- ) + _(
- "This wizard presents entries generated by the AppArmor access control module. \nYou can generate highly optimized and robust security profiles \nby using the suggestions made by AppArmor."
- )) + _(
- "AppArmor suggests that you allow or deny access to specific resources \nor define execute permission for entries. Questions \nthat display were logged during the normal application \nexecution test previously performed. <br>"
- )) + _(
- "The following help text describes the detail of the security profile \nsyntax used by AppArmor. <br><br>At any stage, you may \ncustomize the profile entry by changing the suggested response. \nThis overview will assist you in your options. Refer to the \nNovell AppArmor Administration Guide for step-by-step \ninstructions. <br><br>"
- )) + _(
- "<b>Access Modes</b><br>"
- )) + _(
- "File permission access modes consists of combinations of the following six modes:"
- )) + "<ul>") + _(
- "<li>r - read</li>"
- )) + _(
- "<li>w - write</li>"
- )) + _(
- "<li>m - mmap PROT_EXEC</li>"
- )) + _(
- "<li>px - discrete profile execute</li>"
- )) + _(
- "<li>ux - unconfined execute</li>"
- )) + _(
- "<li>ix - inherit execute</li>"
- )) + _(
- "<li>l - link</li>"
- )) + "</ul>") + _(
- "<b>Details for Access Modes</b>"
- )) + "<br><br>") + _(
- "<b>Read mode</b><br>"
- )) + _(
- "Allows the program to have read access to the\nresource. Read access is required for shell scripts\nand other interpreted content, and determines if an\nexecuting process can core dump or be attached to with\nptrace(2). (ptrace(2) is used by utilities such as\nstrace(1), ltrace(1), and gdb(1).)"
- )) + "<br><br>") + _(
- "<b>Write mode</b><br>"
- )) + _(
- "Allows the program to have write access to the\nresource. Files must have this permission if they are\nto be unlinked (removed.)"
- )) + "<br><br>") + _(
- "<b>Mmap PROT_EXEC mode</b><br>"
- )) + _(
- "Allows the program to call mmap with PROT_EXEC on the\nresource."
- )) + "<br><br>") + _(
- "<b>Unconfined execute mode</b><br>"
- )) + _(
- "Allows the program to execute the resource without any\nAppArmor profile being applied to the executed\nresource. Requires listing execute mode as well.\nIncompatible with Inherit and Discrete Profile execute\nentries."
- )) + "<br><br>") + _(
- "This mode is useful when a confined program needs to\nbe able to perform a privileged operation, such as\nrebooting the machine. By placing the privileged section \nin another executable and granting unconfined \nexecution rights, it is possible to bypass the mandatory \nconstraints imposed on all confined processes.\nFor more information on what is constrained, see the\napparmor(7) man page."
- )) + "<br><br>") + _(
- "<b>Discrete Profile execute mode</b><br>"
- )) + _(
- "This mode requires that a discrete security profile is\ndefined for a resource executed at a AppArmor domain\ntransition. If there is no profile defined then the\naccess will be denied. Incompatible with Inherit and\nUnconstrained execute entries."
- )) + "<br><br>") + _(
- "<b>Link mode</b><br>"
- )) + _(
- "Allows the program to be able to create and remove a\nlink with this name (including symlinks). When a link\nis created, the file that is being linked to MUST have\nthe same access permissions as the link being created\n(with the exception that the destination does not have\nto have link access.) Link access is required for\nunlinking a file."
- )) + "<br><br>") + _(
- "<b>Globbing</b>"
- )) + "<br><br>") + _(
- "File resources may be specified with a globbing syntax\nsimilar to that used by popular shells, such as csh(1),\nbash(1), zsh(1)."
- )) + "<br>") + "<ul>") + _(
- "<li><b>*</b> can substitute for any number of characters, except '/'<li>"
- )) + _(
- "<li><b>**</b> can substitute for any number of characters, including '/'</li>"
- )) + _(
- "<li><b>?</b> can substitute for any single character except '/'</li>"
- )) + _(
- "<li><b>[abc]</b> will substitute for the single character a, b, or c</li>"
- )) + _(
- "<li><b>[a-c]</b> will substitute for the single character a, b, or c</li>"
- )) + _(
- "<li><b>{ab,cd}</b> will expand to one rule to match ab, one rule to match cd</li>"
- )) + "</ul>") + _(
- "<b>Clean Exec - for sanitized execution</b>"
- )) + "<br><br>") + _(
- "The Clean Exec option for the discrete profile and unconstrained \nexecute permissions provide added security by stripping the \nenvironment that is inherited by the child program of specific \nvariables. You will be prompted to choose whether you want to sanitize the\nenvironment if you choose 'p' or 'u' during the profiling process.\nThe variables are:"
- )) + "<ul>") + "<li>GCONV_PATH</li>") + "<li>GETCONF_DIR</li>") + "<li>HOSTALIASES</li>") + "<li>LD_AUDIT</li>") + "<li>LD_DEBUG</li>") + "<li>LD_DEBUG_OUTPUT</li>") + "<li>LD_DYNAMIC_WEAK</li>") + "<li>LD_LIBRARY_PATH</li>") + "<li>LD_ORIGIN_PATH</li>") + "<li>LD_PRELOAD</li>") + "<li>LD_PROFILE</li>") + "<li>LD_SHOW_AUXV</li>") + "<li>LD_USE_LOAD_BIAS</li>") + "<li>LOCALDOMAIN</li>") + "<li>LOCPATH</li>") + "<li>MALLOC_TRACE</li>") + "<li>NLSPATH</li>") + "<li>RESOLV_HOST_CONF</li>") + "<li>RES_OPTION</li>") + "<li>TMPDIR</li>") + "<li>TZDIR</li> </ul>"
+ "EventNotifyHelpText" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>The Security Event Notification screen enables you to setup email \nalerts for security events. In the following steps, specify how often \nalerts are sent, who receives the alert, and how severe the security \nevent must be to send an alert.</p>"
+ ),
+ _(
+ "<p><b>Notification Types</b><br> <b>Terse Notification:</b> \nTerse notification summarizes the total number of system events without \nproviding details. <br>For example:<br> <tt>dhcp-101.up.wirex.com has \nhad 10 security events since Tue Oct 12 11:10:00 2004</tt></p>"
+ )
+ ),
+ _(
+ "<p><b>Summary Notification:</b> The Summary notification displays \nthe logged AppArmor security events, and lists the number of \nindividual occurrences, including the date of the last occurrence. \n<br>For example:<br> <tt>AppArmor: PERMITTING access to capability\n'setgid' (httpd2-prefork(6347) profile /usr/sbin/httpd2-prefork \nactive /usr/sbin/httpd2-prefork) 2 times, the latest at Sat Oct 9 16:05:54 2004.</tt>\n</p>"
+ )
+ ),
+ _(
+ "<p><b>Verbose Notification:</b> The Verbose notification displays \nunmodified, logged AppArmor security events. It tells you every time \nan event occurs and writes a new line in the Verbose log. These \nsecurity events include the date and time the event occurred, when \nthe application profile permits access as well as rejects access, \nand the type of file permission access that is permitted or rejected.</p>"
+ )
+ ),
+ _(
+ "<p>Verbose Notification also reports several messages that \nthe logprof tool uses to interpret profiles. <br>For example:<br>\n<tt> Oct 9 15:40:31 AppArmor: PERMITTING r access to\n/etc/apache2/httpd.conf (httpd2-prefork(6068) profile \n/usr/sbin/httpd2-prefork active /usr/sbin/httpd2-prefork)</tt></p>"
+ )
+ ),
+ "<ol>"
+ ),
+ _(
+ "<li> For each notification type that you would like \nenabled, select the frequency of notification that you would \nlike. For example, if you select <b>1 day</b> from the \npull-down list, you will be sent daily notifications of \nsecurity events, if they occur.</li>"
+ )
+ ),
+ _(
+ "<li> Enter the email address of those who should receive \nthe Terse, Summary, or Verbose notifications.If there is no local \nSMTP server configured to distribute e-mails from this host to the \ndomain you entered, enter for example <i><user>@localhost</i> \nand enable <i><user></i> to receive system mail, if it is not \na root user. </li>"
+ )
+ ),
+ _(
+ "<li>Select the lowest <b>severity level</b> for which a notification \nshould be sent. Security events will be logged and the notifications \nwill be sent at the time indicated by the interval when events are \nequal or greater than the selected severity level. If the interval \nis 1 day, the notification will be sent daily, if security events \noccur."
+ )
+ ),
+ _(
+ "<b>Severity Levels:</b> These are numbered 1 through 10, \n10 being the most severe security incident. The <b>severity.db</b> \nfile defines the severity level of potential security events. \nThe severity levels are determined by the importance of \ndifferent security events, such as certain resources accessed \nor services denied.</li>"
+ )
+ ),
+ _(
+ "<li>Select <b>Include unknown security events</b> if \nyou would like to include events that are not rated with a severity number.</li>"
+ )
+ ),
+ "</ol>"
+ ),
+ "profileWizard" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<b>AppArmor Profiling Wizard</b><br>"
+ ),
+ _(
+ "This wizard presents entries generated by the AppArmor access control module. \nYou can generate highly optimized and robust security profiles \nby using the suggestions made by AppArmor."
+ )
+ ),
+ _(
+ "AppArmor suggests that you allow or deny access to specific resources \nor define execute permission for entries. Questions \nthat display were logged during the normal application \nexecution test previously performed. <br>"
+ )
+ ),
+ _(
+ "The following help text describes the detail of the security profile \nsyntax used by AppArmor. <br><br>At any stage, you may \ncustomize the profile entry by changing the suggested response. \nThis overview will assist you in your options. Refer to the \nNovell AppArmor Administration Guide for step-by-step \ninstructions. <br><br>"
+ )
+ ),
+ _(
+ "<b>Access Modes</b><br>"
+ )
+ ),
+ _(
+ "File permission access modes consists of combinations of the following six modes:"
+ )
+ ),
+ "<ul>"
+ ),
+ _(
+ "<li>r - read</li>"
+ )
+ ),
+ _(
+ "<li>w - write</li>"
+ )
+ ),
+ _(
+ "<li>m - mmap PROT_EXEC</li>"
+ )
+ ),
+ _(
+ "<li>px - discrete profile execute</li>"
+ )
+ ),
+ _(
+ "<li>ux - unconfined execute</li>"
+ )
+ ),
+ _(
+ "<li>ix - inherit execute</li>"
+ )
+ ),
+ _(
+ "<li>l - link</li>"
+ )
+ ),
+ "</ul>"
+ ),
+ _(
+ "<b>Details for Access Modes</b>"
+ )
+ ),
+ "<br><br>"
+ ),
+ _(
+ "<b>Read mode</b><br>"
+ )
+ ),
+ _(
+ "Allows the program to have read access to the\nresource. Read access is required for shell scripts\nand other interpreted content, and determines if an\nexecuting process can core dump or be attached to with\nptrace(2). (ptrace(2) is used by utilities such as\nstrace(1), ltrace(1), and gdb(1).)"
+ )
+ ),
+ "<br><br>"
+ ),
+ _(
+ "<b>Write mode</b><br>"
+ )
+ ),
+ _(
+ "Allows the program to have write access to the\nresource. Files must have this permission if they are\nto be unlinked (removed.)"
+ )
+ ),
+ "<br><br>"
+ ),
+ _(
+ "<b>Mmap PROT_EXEC mode</b><br>"
+ )
+ ),
+ _(
+ "Allows the program to call mmap with PROT_EXEC on the\nresource."
+ )
+ ),
+ "<br><br>"
+ ),
+ _(
+ "<b>Unconfined execute mode</b><br>"
+ )
+ ),
+ _(
+ "Allows the program to execute the resource without any\nAppArmor profile being applied to the executed\nresource. Requires listing execute mode as well.\nIncompatible with Inherit and Discrete Profile execute\nentries."
+ )
+ ),
+ "<br><br>"
+ ),
+ _(
+ "This mode is useful when a confined program needs to\nbe able to perform a privileged operation, such as\nrebooting the machine. By placing the privileged section \nin another executable and granting unconfined \nexecution rights, it is possible to bypass the mandatory \nconstraints imposed on all confined processes.\nFor more information on what is constrained, see the\napparmor(7) man page."
+ )
+ ),
+ "<br><br>"
+ ),
+ _(
+ "<b>Discrete Profile execute mode</b><br>"
+ )
+ ),
+ _(
+ "This mode requires that a discrete security profile is\ndefined for a resource executed at a AppArmor domain\ntransition. If there is no profile defined then the\naccess will be denied. Incompatible with Inherit and\nUnconstrained execute entries."
+ )
+ ),
+ "<br><br>"
+ ),
+ _(
+ "<b>Link mode</b><br>"
+ )
+ ),
+ _(
+ "Allows the program to be able to create and remove a\nlink with this name (including symlinks). When a link\nis created, the file that is being linked to MUST have\nthe same access permissions as the link being created\n(with the exception that the destination does not have\nto have link access.) Link access is required for\nunlinking a file."
+ )
+ ),
+ "<br><br>"
+ ),
+ _(
+ "<b>Globbing</b>"
+ )
+ ),
+ "<br><br>"
+ ),
+ _(
+ "File resources may be specified with a globbing syntax\nsimilar to that used by popular shells, such as csh(1),\nbash(1), zsh(1)."
+ )
+ ),
+ "<br>"
+ ),
+ "<ul>"
+ ),
+ _(
+ "<li><b>*</b> can substitute for any number of characters, except '/'<li>"
+ )
+ ),
+ _(
+ "<li><b>**</b> can substitute for any number of characters, including '/'</li>"
+ )
+ ),
+ _(
+ "<li><b>?</b> can substitute for any single character except '/'</li>"
+ )
+ ),
+ _(
+ "<li><b>[abc]</b> will substitute for the single character a, b, or c</li>"
+ )
+ ),
+ _(
+ "<li><b>[a-c]</b> will substitute for the single character a, b, or c</li>"
+ )
+ ),
+ _(
+ "<li><b>{ab,cd}</b> will expand to one rule to match ab, one rule to match cd</li>"
+ )
+ ),
+ "</ul>"
+ ),
+ _(
+ "<b>Clean Exec - for sanitized execution</b>"
+ )
+ ),
+ "<br><br>"
+ ),
+ _(
+ "The Clean Exec option for the discrete profile and unconstrained \nexecute permissions provide added security by stripping the \nenvironment that is inherited by the child program of specific \nvariables. You will be prompted to choose whether you want to sanitize the\nenvironment if you choose 'p' or 'u' during the profiling process.\nThe variables are:"
+ )
+ ),
+ "<ul>"
+ ),
+ "<li>GCONV_PATH</li>"
+ ),
+ "<li>GETCONF_DIR</li>"
+ ),
+ "<li>HOSTALIASES</li>"
+ ),
+ "<li>LD_AUDIT</li>"
+ ),
+ "<li>LD_DEBUG</li>"
+ ),
+ "<li>LD_DEBUG_OUTPUT</li>"
+ ),
+ "<li>LD_DYNAMIC_WEAK</li>"
+ ),
+ "<li>LD_LIBRARY_PATH</li>"
+ ),
+ "<li>LD_ORIGIN_PATH</li>"
+ ),
+ "<li>LD_PRELOAD</li>"
+ ),
+ "<li>LD_PROFILE</li>"
+ ),
+ "<li>LD_SHOW_AUXV</li>"
+ ),
+ "<li>LD_USE_LOAD_BIAS</li>"
+ ),
+ "<li>LOCALDOMAIN</li>"
+ ),
+ "<li>LOCPATH</li>"
+ ),
+ "<li>MALLOC_TRACE</li>"
+ ),
+ "<li>NLSPATH</li>"
+ ),
+ "<li>RESOLV_HOST_CONF</li>"
+ ),
+ "<li>RES_OPTION</li>"
+ ),
+ "<li>TMPDIR</li>"
+ ),
+ "<li>TZDIR</li> </ul>"
+ )
}
end
end
diff -ur result/apparmor/src/include/apparmor/profile_dialogs.rb result-bck/apparmor/src/include/apparmor/profile_dialogs.rb
--- result/apparmor/src/include/apparmor/profile_dialogs.rb 2013-06-28 13:55:50.160000000 +0200
+++ result-bck/apparmor/src/include/apparmor/profile_dialogs.rb 2013-06-28 12:35:42.476000000 +0200
@@ -14,7 +14,7 @@
Yast.import("Map")
Yast.include(include_target, "apparmor/capabilities.rb")
textdomain "yast2-apparmor"
- @timeout_millisec = 20 * 1000
+ @timeout_millisec = Ops.multiply(20, 1000)
@Settings = { "CURRENT_PROFILE" => "" }
end
@@ -41,7 +41,7 @@
)
frametitle = Ops.add(
Ops.add(
- (" " + _("Capabilities enabled for the profile")) + " ",
+ Ops.add(Ops.add(" ", _("Capabilities enabled for the profile")), " "),
profile
),
" "
@@ -819,9 +819,12 @@
Label(
Ops.add(
Ops.add(
- _(
- "Enter the name of the Hat that you would like \nto add to the profile\n"
- ) + " ",
+ Ops.add(
+ _(
+ "Enter the name of the Hat that you would like \nto add to the profile\n"
+ ),
+ " "
+ ),
parentProfile
),
"."
diff -ur result/apparmor/src/include/apparmor/report_helptext.rb result-bck/apparmor/src/include/apparmor/report_helptext.rb
--- result/apparmor/src/include/apparmor/report_helptext.rb 2013-06-28 13:55:52.680000000 +0200
+++ result-bck/apparmor/src/include/apparmor/report_helptext.rb 2013-06-28 12:35:42.448000000 +0200
@@ -8,39 +8,72 @@
module ApparmorReportHelptextInclude
def initialize_apparmor_report_helptext(include_target)
textdomain "yast2-apparmor"
- @defs = ((((((_(
- "<b>Program Name Pattern:</b><br> When you enter a program name or pattern \nthat matches the name of the binary executable of the program of \ninterest, the report will display security events that have \noccurred for a specific program.<br>"
- ) + _(
- "<b>Profile Name Pattern:</b> When you enter the name of the profile, \nthe report will display the security events that are generated for \nthe specified profile. You can use this to see what is being confined \nby a specific profile.<br>"
- )) + _(
- "<b>PID Number:</b> Process ID number is a number that uniquely identifies \none specific process or running program (this number is valid only \nduring the lifetime of that process).<br>"
- )) + _(
- "<b>Severity Level:</b> Select the lowest severity level for security \nevents that you would like to be included in the report. The selected \nseverity level, and above, will be included in the reports.<br>"
- )) + _(
- "<b>Detail:</b> A source to which the profile has denied access. \nThis includes capabilities and files. You can use this field to \nreport the resources are not allowed to be accessed by profiles.<br>"
- )) + _(
- "<b>Mode:</b> The Mode is the permission that the profile grants \nto the program or process to which it is applied. The options are: \nr (read) w (write) l (link) x (execute)<br>"
- )) + _(
- "<b>Access Type:</b> The access type describes what is actually happening \nwith the security event. The options are: PERMITTING, REJECTING, \nor AUDITING.<br>"
- )) + _(
- "<b>CSV or HTML:</b> Enables you to export a CSV (comma separated \nvalues) or html file. The CSV file separates pieces of data in \nthe log entries with commas using a standard data format for \nimporting into table-oriented applications. You can enter a \npathname for your exported report by typing in the full \npathname in the field provided.</p>"
+ @defs = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<b>Program Name Pattern:</b><br> When you enter a program name or pattern \nthat matches the name of the binary executable of the program of \ninterest, the report will display security events that have \noccurred for a specific program.<br>"
+ ),
+ _(
+ "<b>Profile Name Pattern:</b> When you enter the name of the profile, \nthe report will display the security events that are generated for \nthe specified profile. You can use this to see what is being confined \nby a specific profile.<br>"
+ )
+ ),
+ _(
+ "<b>PID Number:</b> Process ID number is a number that uniquely identifies \none specific process or running program (this number is valid only \nduring the lifetime of that process).<br>"
+ )
+ ),
+ _(
+ "<b>Severity Level:</b> Select the lowest severity level for security \nevents that you would like to be included in the report. The selected \nseverity level, and above, will be included in the reports.<br>"
+ )
+ ),
+ _(
+ "<b>Detail:</b> A source to which the profile has denied access. \nThis includes capabilities and files. You can use this field to \nreport the resources are not allowed to be accessed by profiles.<br>"
+ )
+ ),
+ _(
+ "<b>Mode:</b> The Mode is the permission that the profile grants \nto the program or process to which it is applied. The options are: \nr (read) w (write) l (link) x (execute)<br>"
+ )
+ ),
+ _(
+ "<b>Access Type:</b> The access type describes what is actually happening \nwith the security event. The options are: PERMITTING, REJECTING, \nor AUDITING.<br>"
+ )
+ ),
+ _(
+ "<b>CSV or HTML:</b> Enables you to export a CSV (comma separated \nvalues) or html file. The CSV file separates pieces of data in \nthe log entries with commas using a standard data format for \nimporting into table-oriented applications. You can enter a \npathname for your exported report by typing in the full \npathname in the field provided.</p>"
+ )
)
@setArchHelp = Ops.add(
- (_(
- "<p>The Report Configuration dialog enables you to filter the archived \nreport selected in the previous screen. To filter by <b>Date Range:</b>"
- ) + _(
- "<ol><li>Click <b>Filter By Date Range</b>. The fields become active.</li> \n<li>Enter the start and end dates that delineate the scope of the report.</li> \n <li>Enter other filtering parameters. See below for definitions of parameters.</li></ol></p>"
- )) + _(
- "The following definitions help you to enter the filtering parameters in the \nReport Configuration Dialog:<br>"
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>The Report Configuration dialog enables you to filter the archived \nreport selected in the previous screen. To filter by <b>Date Range:</b>"
+ ),
+ _(
+ "<ol><li>Click <b>Filter By Date Range</b>. The fields become active.</li> \n<li>Enter the start and end dates that delineate the scope of the report.</li> \n <li>Enter other filtering parameters. See below for definitions of parameters.</li></ol></p>"
+ )
+ ),
+ _(
+ "The following definitions help you to enter the filtering parameters in the \nReport Configuration Dialog:<br>"
+ )
),
@defs
)
- @types = (_(
- "<b>Executive Security Summary:</b> A combined report, \nconsisting of one or more Security incident reports from \none or more machines. This report provides a single view of \nsecurity events on multiple machines.<br>"
- ) + _(
- "<b>Applications Audit Report:</b> An auditing tool that \nreports which application servers are running and whether \nthe applications are confined by AppArmor. Application \nservers are applications that accept incoming network connections. <br>"
- )) + _(
- "<b>Security Incident Report:</b> A report that displays application \nsecurity for a single host. It reports policy violations for locally \nconfined applications during a specific time period. You can edit and \ncustomize this report, or add new versions.</p>"
+ @types = Ops.add(
+ Ops.add(
+ _(
+ "<b>Executive Security Summary:</b> A combined report, \nconsisting of one or more Security incident reports from \none or more machines. This report provides a single view of \nsecurity events on multiple machines.<br>"
+ ),
+ _(
+ "<b>Applications Audit Report:</b> An auditing tool that \nreports which application servers are running and whether \nthe applications are confined by AppArmor. Application \nservers are applications that accept incoming network connections. <br>"
+ )
+ ),
+ _(
+ "<b>Security Incident Report:</b> A report that displays application \nsecurity for a single host. It reports policy violations for locally \nconfined applications during a specific time period. You can edit and \ncustomize this report, or add new versions.</p>"
+ )
)
@runHelp = Ops.add(
_(
@@ -50,10 +83,13 @@
)
@filterCfHelp1 = @setArchHelp
@schedHelpText = Ops.add(
- _(
- "<p>The summary of scheduled reports page shows us when reports are scheduled to run. \nReports can be set to run monthly, weekly, daily, or hourly. The default settings are \ndaily at midnight. The reports can also be emailed, upon completion, to up to three \nemail recipients.<br>"
- ) + _(
- "In the Set Schedule section, you can schedule the following three types of security reports:<br>"
+ Ops.add(
+ _(
+ "<p>The summary of scheduled reports page shows us when reports are scheduled to run. \nReports can be set to run monthly, weekly, daily, or hourly. The default settings are \ndaily at midnight. The reports can also be emailed, upon completion, to up to three \nemail recipients.<br>"
+ ),
+ _(
+ "In the Set Schedule section, you can schedule the following three types of security reports:<br>"
+ )
),
@types
)
@@ -67,10 +103,13 @@
@archHelp = RichText(@archHelpText)
@otherHelp = RichText(@archHelpText)
@repConfHelp = _("repConfHelp")
- @sirHelp = _(
- "<p><b>Security Incident Report (SIR):</b> A report that displays security \nevents of interest to an administrator. The SIR reports policy violations \nfor locally confined applications during the specified time period. The SIR \nreports policy exceptions and policy engine state changes. These two types \nof security events are defined as follows:"
- ) + _(
- "<ul> <li><b>Policy Exceptions:</b> When an application requests a resource \nthat's not defined within its profile, a security event is generated.</li> \n<li><b>Policy Engine State Changes:</b> Enforces policy for applications and \nmaintains its own state, including when engines start or stop, when a policy \nis reloaded, and when global security feature are enabled or disabled.</li></ul> \nSelect the report from the archive, then <b>View</b> to see the report details.</p>"
+ @sirHelp = Ops.add(
+ _(
+ "<p><b>Security Incident Report (SIR):</b> A report that displays security \nevents of interest to an administrator. The SIR reports policy violations \nfor locally confined applications during the specified time period. The SIR \nreports policy exceptions and policy engine state changes. These two types \nof security events are defined as follows:"
+ ),
+ _(
+ "<ul> <li><b>Policy Exceptions:</b> When an application requests a resource \nthat's not defined within its profile, a security event is generated.</li> \n<li><b>Policy Engine State Changes:</b> Enforces policy for applications and \nmaintains its own state, including when engines start or stop, when a policy \nis reloaded, and when global security feature are enabled or disabled.</li></ul> \nSelect the report from the archive, then <b>View</b> to see the report details.</p>"
+ )
)
@audHelp = _(
"<p><b>Applications Audit Report (AUD):</b> An auditing tool that reports which application servers are running and whether they are confined by AppArmor. Application servers are applications that accept incoming network connections. This report provides the host machine's IP Address, the date the Applications Audit Report ran, the name and path of the unconfined program or application server, the suggested profile or a placeholder for a profile for an unconfined program, the process ID number, the state of the program (confined or unconfined) and the type of confinement that the profile is performing (enforce/complain).</p>"
diff -ur result/apparmor/src/include/apparmor/reporting_archived_dialogs.rb result-bck/apparmor/src/include/apparmor/reporting_archived_dialogs.rb
--- result/apparmor/src/include/apparmor/reporting_archived_dialogs.rb 2013-06-28 13:55:51.752000000 +0200
+++ result-bck/apparmor/src/include/apparmor/reporting_archived_dialogs.rb 2013-06-28 12:35:42.476000000 +0200
@@ -15,7 +15,7 @@
Yast.include(include_target, "apparmor/report_helptext.rb")
Yast.include(include_target, "apparmor/reporting_utils.rb")
textdomain "yast2-apparmor"
- @timeout_millisec = 20 * 1000
+ @timeout_millisec = Ops.multiply(20, 1000)
end
def turnArchReportPage(curPage, lastPage)
diff -ur result/apparmor/src/include/apparmor/reporting_dialogues.rb result-bck/apparmor/src/include/apparmor/reporting_dialogues.rb
--- result/apparmor/src/include/apparmor/reporting_dialogues.rb 2013-06-28 13:55:43.184000000 +0200
+++ result-bck/apparmor/src/include/apparmor/reporting_dialogues.rb 2013-06-28 12:35:42.476000000 +0200
@@ -2195,7 +2195,7 @@
)
mode = "All"
aamode = "R"
- timeout_millisec = 20 * 1000
+ timeout_millisec = Ops.multiply(20, 1000)
event = {}
addInput = nil
while true
@@ -2609,7 +2609,7 @@
)
mode = _("All")
aamode = _("R")
- timeout_millisec = 20 * 1000
+ timeout_millisec = Ops.multiply(20, 1000)
event = {}
editInput = nil
UI.ChangeWidget(Id(:weekday), :Value, swday) if swday != _("All")
diff -ur result/audit-laf/src/include/audit-laf/helps.rb result-bck/audit-laf/src/include/audit-laf/helps.rb
--- result/audit-laf/src/include/audit-laf/helps.rb 2013-06-28 13:56:19.084000000 +0200
+++ result-bck/audit-laf/src/include/audit-laf/helps.rb 2013-06-28 12:35:47.496000000 +0200
@@ -9,69 +9,138 @@
def initialize_audit_laf_helps(include_target)
textdomain "audit-laf"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing Configuration of Linux Audit Framework</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing Configuration of Linux Audit Framework</big></b><br>\n</p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
),
- "write" => _(
- "<p><b><big>Saving auditd Configuration and Rules</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving auditd Configuration and Rules</big></b><br>\n</p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
),
- "logfile_settings" => ((((((_(
- "<p><b><big>Auditd Log File Configuration</big></b><br>\nThe audit daemon is the component of the Linux Auditing System which is responsible for writing all relevant audit events to the log file <i>/var/log/audit/audit.log</i> (default).\nEvents may come from the <i>apparmor</i> kernel module, from applications which use <i>libaudit</i> (e.g. PAM) or incidents caused by rules (e.g. file watches).</p>"
- ) + _(
- "<p>The <b>Rules for auditctl</b> dialog offers more information about rules and the possibility to add rules.\nDetailed information about the log file settings can be obtained from the manual page ('man auditd.conf').</p>"
- )) + _(
- "<p><b>Log File</b>: Enter the full path name to the log file\n(or use <b>Select File</b>.)</p>"
- )) + _(
- "<p><b>Format</b>: set <i>RAW</i> to log all data (store in a format exactly as the kernel\nsends it) or <i>NOLOG</i> to discard all audit information instead of writing it on disk (does not affect\ndata sent to the dispatcher).</p> "
- )) + _(
- "<p><b>Flush</b>: describes how to write the data to disk. If set to <i>INCREMENTAL</i> the\n<b>Frequency</b> parameter tells how many records to write before issuing an explicit flush to disk.\n<i>NONE</i> means: no special effort is made to flush data, <i>DATA</i>: keep data portion synced,\n<i>SYNC</i>: keep data and meta-data fully synced.</p>"
- )) + _(
- "<p>Configure the maximum log file size (in megabytes) and the action to take when this\nvalue is reached via <b>Size and Action</b>.</p>\n"
- )) + _(
- "<p>If the action is set to <i>ROTATE</i> the <b>Number of Log Files</b> specifies the number\nof files to keep. Set to <i>SYSLOG</i>, the audit daemon will write a warning\nto /var/log/messages. With <i>SUSPEND</i> the daemon stops writing records to\ndisk. <i>IGNORE</i> means do nothing, <i>KEEP_LOGS</i> is similar\nto ROTATE, but log files are not overwritten.</p>\n"
- )) + _(
- "<p><b>Computer Name Format</b> describes how to write the computer name to the\nlog file. If <i>USER</i> is set, the <b>User Defined Name</b> is\nused. <i>NONE</i> means no computer name is inserted. <i>HOSTNAME</i> uses the\nname returned by the 'gethostname' syscall. <i>FQD</i> uses the fully qualified\ndomain name.</p>\n"
+ "logfile_settings" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Auditd Log File Configuration</big></b><br>\nThe audit daemon is the component of the Linux Auditing System which is responsible for writing all relevant audit events to the log file <i>/var/log/audit/audit.log</i> (default).\nEvents may come from the <i>apparmor</i> kernel module, from applications which use <i>libaudit</i> (e.g. PAM) or incidents caused by rules (e.g. file watches).</p>"
+ ),
+ _(
+ "<p>The <b>Rules for auditctl</b> dialog offers more information about rules and the possibility to add rules.\nDetailed information about the log file settings can be obtained from the manual page ('man auditd.conf').</p>"
+ )
+ ),
+ _(
+ "<p><b>Log File</b>: Enter the full path name to the log file\n(or use <b>Select File</b>.)</p>"
+ )
+ ),
+ _(
+ "<p><b>Format</b>: set <i>RAW</i> to log all data (store in a format exactly as the kernel\nsends it) or <i>NOLOG</i> to discard all audit information instead of writing it on disk (does not affect\ndata sent to the dispatcher).</p> "
+ )
+ ),
+ _(
+ "<p><b>Flush</b>: describes how to write the data to disk. If set to <i>INCREMENTAL</i> the\n<b>Frequency</b> parameter tells how many records to write before issuing an explicit flush to disk.\n<i>NONE</i> means: no special effort is made to flush data, <i>DATA</i>: keep data portion synced,\n<i>SYNC</i>: keep data and meta-data fully synced.</p>"
+ )
+ ),
+ _(
+ "<p>Configure the maximum log file size (in megabytes) and the action to take when this\nvalue is reached via <b>Size and Action</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p>If the action is set to <i>ROTATE</i> the <b>Number of Log Files</b> specifies the number\nof files to keep. Set to <i>SYSLOG</i>, the audit daemon will write a warning\nto /var/log/messages. With <i>SUSPEND</i> the daemon stops writing records to\ndisk. <i>IGNORE</i> means do nothing, <i>KEEP_LOGS</i> is similar\nto ROTATE, but log files are not overwritten.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Computer Name Format</b> describes how to write the computer name to the\nlog file. If <i>USER</i> is set, the <b>User Defined Name</b> is\nused. <i>NONE</i> means no computer name is inserted. <i>HOSTNAME</i> uses the\nname returned by the 'gethostname' syscall. <i>FQD</i> uses the fully qualified\ndomain name.</p>\n"
+ )
),
- "dispatcher" => (((_(
- "<p><b><big>Auditd Dispatcher Configuration</big></b><br>\nDetailed information about the dispatcher settings can be obtained from the manual page\n('man auditd.conf').</p>"
- ) + _(
- "<p><b>Dispatcher</b>: The dispatcher program is started by the audit daemon and\ngets all audit events on stdin.</p>"
- )) + _(
- "<p><b>Communication</b>: Controls the communication between the daemon and the dispatcher\nprogram. A <i>lossy</i> communication means that events going to the dispatcher are discarded\nwhen the queue (a 128kB buffer) is full. Choose <i>lossless</i> if you want a blocking/lossless\ncommunication.</p>"
- )) + _(
- "<p>The dispatcher 'audispd' is an audit event multiplexor.\nFor more information see the manual pages ('man audispd' and 'man audispd.conf').</p>"
- )) + _(
- "<p><b>Note:</b> The dispatcher program must be owned by 'root', have '0750'\n file permissions, and the full path name has to be entered.</p>\n"
+ "dispatcher" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Auditd Dispatcher Configuration</big></b><br>\nDetailed information about the dispatcher settings can be obtained from the manual page\n('man auditd.conf').</p>"
+ ),
+ _(
+ "<p><b>Dispatcher</b>: The dispatcher program is started by the audit daemon and\ngets all audit events on stdin.</p>"
+ )
+ ),
+ _(
+ "<p><b>Communication</b>: Controls the communication between the daemon and the dispatcher\nprogram. A <i>lossy</i> communication means that events going to the dispatcher are discarded\nwhen the queue (a 128kB buffer) is full. Choose <i>lossless</i> if you want a blocking/lossless\ncommunication.</p>"
+ )
+ ),
+ _(
+ "<p>The dispatcher 'audispd' is an audit event multiplexor.\nFor more information see the manual pages ('man audispd' and 'man audispd.conf').</p>"
+ )
+ ),
+ _(
+ "<p><b>Note:</b> The dispatcher program must be owned by 'root', have '0750'\n file permissions, and the full path name has to be entered.</p>\n"
+ )
),
- "diskspace_settings" => ((((_(
- "<p><b><big>Auditd Disk Space Configuration</big></b><br>\nThe settings made here refer to disk space on log partition.\nFor detailed information, refer to the manual page ('man auditd.conf').</p>\n"
- ) + _(
- "<p><b>Space Left</b> (in megabytes) tells the audit daemon when to perform an <b>Action</b> because\nthe system is starting to run low on space.</p>"
- )) + _(
- "<p>The value for <b>Admin Space Left</b> should be lower than above. The system <b>is running\nlow</b> on disk space if the value is reached and the specified <b>Action</b> will be performed.</p>"
- )) + _(
- "<p>If an action is set to <i>EMAIL</i>, a warning mail will be sent to the\naccount specified in <b>Action Mail Account</b>.<br> <i>SYSLOG</i> means the\ndisk space warning will be written to /var/log/messages. <i>IGNORE</i> means\ndo nothing. <i>EXEC</i> runs the script specified in <b>Path to\nScript</b>. <i>SUSPEND</i> stops writing records to disk. <i>SINGLE</i>\nswitches the system to single user mode. <i>HALT</i> shuts down the\nsystem.</p>\n"
- )) + _(
- "<p>You can also specify a <b>Disk Full Action</b> (disk has become full already) and\na <b>Disk Error Action</b> (performed whenever an error is detected while writing to disk).\nAvailable actions are the same as above (except for <i>EMAIL</i>).</p>"
- )) + _(
- "<p><b>Note:</b> All scripts specified for <i>EXEC</i> must be owned\nby 'root', have '0750' file permissions, and the full path name has to be entered.</p>\n"
+ "diskspace_settings" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Auditd Disk Space Configuration</big></b><br>\nThe settings made here refer to disk space on log partition.\nFor detailed information, refer to the manual page ('man auditd.conf').</p>\n"
+ ),
+ _(
+ "<p><b>Space Left</b> (in megabytes) tells the audit daemon when to perform an <b>Action</b> because\nthe system is starting to run low on space.</p>"
+ )
+ ),
+ _(
+ "<p>The value for <b>Admin Space Left</b> should be lower than above. The system <b>is running\nlow</b> on disk space if the value is reached and the specified <b>Action</b> will be performed.</p>"
+ )
+ ),
+ _(
+ "<p>If an action is set to <i>EMAIL</i>, a warning mail will be sent to the\naccount specified in <b>Action Mail Account</b>.<br> <i>SYSLOG</i> means the\ndisk space warning will be written to /var/log/messages. <i>IGNORE</i> means\ndo nothing. <i>EXEC</i> runs the script specified in <b>Path to\nScript</b>. <i>SUSPEND</i> stops writing records to disk. <i>SINGLE</i>\nswitches the system to single user mode. <i>HALT</i> shuts down the\nsystem.</p>\n"
+ )
+ ),
+ _(
+ "<p>You can also specify a <b>Disk Full Action</b> (disk has become full already) and\na <b>Disk Error Action</b> (performed whenever an error is detected while writing to disk).\nAvailable actions are the same as above (except for <i>EMAIL</i>).</p>"
+ )
+ ),
+ _(
+ "<p><b>Note:</b> All scripts specified for <i>EXEC</i> must be owned\nby 'root', have '0750' file permissions, and the full path name has to be entered.</p>\n"
+ )
),
- "audit_rules" => ((((_(
- "<p><b><big>Rules for auditctl</big></b><br>\nThis dialog offers the possibility to enable or to disable the syscall\nauditing as well as to lock the audit configuration.\nThe selected flag from <b>Set Enabled Flag</b> will be added to the rules.</p>"
- ) + _(
- "<p><b>Note:</b><br>Locking the rules means they cannot be changed until next reboot.</p>"
- )) + _(
- "<p>Enabling auditing without additional rules will cause the\n applications which use <i>libaudit</i>, e.g. PAM to log to /var/log/audit/audit.log (default).</p> "
- )) + _(
- "<p>You can also edit the rules manually, which we only recommended for advanced users.<br>\nFor more information about all options, see 'man auditctl'.</p>\n"
- )) + _(
- "<p><b>Check Syntax</b> sends the rules via <i>auditctl</i> to the audit subsystem and checks the syntax.<br><b>Restore</b> restores the settings from /etc/audit/audit.rules.</p>\n"
- )) + _(
- "<p>Click <b>Restore and Reset</b> to restore the rules and reset\nthe changes (from previous syntax checks) by calling <i>auditctl</i>.<br>\nClick <b>Load</b> to open a file selection dialog in which you can load\nan example rules file.</p>\n"
+ "audit_rules" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Rules for auditctl</big></b><br>\nThis dialog offers the possibility to enable or to disable the syscall\nauditing as well as to lock the audit configuration.\nThe selected flag from <b>Set Enabled Flag</b> will be added to the rules.</p>"
+ ),
+ _(
+ "<p><b>Note:</b><br>Locking the rules means they cannot be changed until next reboot.</p>"
+ )
+ ),
+ _(
+ "<p>Enabling auditing without additional rules will cause the\n applications which use <i>libaudit</i>, e.g. PAM to log to /var/log/audit/audit.log (default).</p> "
+ )
+ ),
+ _(
+ "<p>You can also edit the rules manually, which we only recommended for advanced users.<br>\nFor more information about all options, see 'man auditctl'.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Check Syntax</b> sends the rules via <i>auditctl</i> to the audit subsystem and checks the syntax.<br><b>Restore</b> restores the settings from /etc/audit/audit.rules.</p>\n"
+ )
+ ),
+ _(
+ "<p>Click <b>Restore and Reset</b> to restore the rules and reset\nthe changes (from previous syntax checks) by calling <i>auditctl</i>.<br>\nClick <b>Load</b> to open a file selection dialog in which you can load\nan example rules file.</p>\n"
+ )
)
}
end
diff -ur result/audit-laf/src/modules/AuditLaf.rb result-bck/audit-laf/src/modules/AuditLaf.rb
--- result/audit-laf/src/modules/AuditLaf.rb 2013-06-28 13:56:13.596000000 +0200
+++ result-bck/audit-laf/src/modules/AuditLaf.rb 2013-06-28 12:35:47.496000000 +0200
@@ -221,10 +221,11 @@
Builtins.y2milestone("Check whether package 'audit' is installed")
if !Package.InstallMsg(
"audit",
- _(
- "<p>To continue the configuration of Linux Auditing, the package <b>%1</b> must be installed.</p>"
- ) + _(
- "<p>Install it now?</p>"
+ Ops.add(
+ _(
+ "<p>To continue the configuration of Linux Auditing, the package <b>%1</b> must be installed.</p>"
+ ),
+ _("<p>Install it now?</p>")
)
)
Popup.Error(Message.CannotContinueWithoutPackagesInstalled)
diff -ur result/autofs/src/include/autofs/helps.rb result-bck/autofs/src/include/autofs/helps.rb
--- result/autofs/src/include/autofs/helps.rb 2013-06-28 13:56:32.380000000 +0200
+++ result-bck/autofs/src/include/autofs/helps.rb 2013-06-28 12:35:52.772000000 +0200
@@ -9,24 +9,35 @@
def initialize_autofs_helps(include_target)
textdomain "autofs"
@HELPS = {
- "read" => _(
- "<p><b>Initializing autofs configuration</b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ "read" => Ops.add(
+ _("<p><b>Initializing autofs configuration</b><br>\n</p>\n"),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
),
- "write" => _(
- "<p><b>Saving autofs configuration</b><br>\n</p>\n"
- ) + _(
- "<p><b>Aborting Save:</b><br>\nAbort the save procedure by pressing <b>Abort</b>.\n</p>\n"
+ "write" => Ops.add(
+ _("<p><b>Saving autofs configuration</b><br>\n</p>\n"),
+ _(
+ "<p><b>Aborting Save:</b><br>\nAbort the save procedure by pressing <b>Abort</b>.\n</p>\n"
+ )
),
- "ConfigureDialog" => ((_(
- "<p><b>Automounter Maps</b><br/>\nThe automounter maps are referred to by the master map of the\nautomounter. Entries in the automounter maps describe how file\nsystems below the mount point of the map are to be mounted.\n<br/></p>\n"
- ) + _(
- "<p><b><big>Key</big></b><br>\nThis is the part of the pathname between the map mount point and\nthe path into the filesystem mounted.\n</p>"
- )) + _(
- "<p><b><big>Options</big></b><br>\nThe options are comma separated, as customary for the <b>mount</b>(8) command.\n<br></p>\n"
- )) + _(
- "<p><b><big>Location</big></b><br>\nThe location specifies from where the file system is to be mounted.\nFor an NFS volume the usual notation is host:pathname.\nIf the filesystem to be mounted begins with a '/' (such as local\nentries or smbfs shares) a ':' needs to be prefixed.\n</p>"
+ "ConfigureDialog" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b>Automounter Maps</b><br/>\nThe automounter maps are referred to by the master map of the\nautomounter. Entries in the automounter maps describe how file\nsystems below the mount point of the map are to be mounted.\n<br/></p>\n"
+ ),
+ _(
+ "<p><b><big>Key</big></b><br>\nThis is the part of the pathname between the map mount point and\nthe path into the filesystem mounted.\n</p>"
+ )
+ ),
+ _(
+ "<p><b><big>Options</big></b><br>\nThe options are comma separated, as customary for the <b>mount</b>(8) command.\n<br></p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Location</big></b><br>\nThe location specifies from where the file system is to be mounted.\nFor an NFS volume the usual notation is host:pathname.\nIf the filesystem to be mounted begins with a '/' (such as local\nentries or smbfs shares) a ':' needs to be prefixed.\n</p>"
+ )
),
"EntryDialogNFS" => _(
"<p><b><big>NFS Entry</big></b><br>\nIn the case of NFS entries, the <b>Server</b> is the DNS name or IP address of the NFS server.<br/>\nThe <b>Path</b> is the absolute path to the directory on the NFS server.<br/>\nThe <b>Options</b> must be valid options of the <b>mount</b>(8) command for NFS file systems.<br/>\n<br/></p>\n"
diff -ur result/autoinstallation/src/include/autoinstall/autopart.rb result-bck/autoinstallation/src/include/autoinstall/autopart.rb
--- result/autoinstallation/src/include/autoinstall/autopart.rb 2013-06-28 13:53:53.712000000 +0200
+++ result-bck/autoinstallation/src/include/autoinstall/autopart.rb 2013-06-28 12:36:21.152000000 +0200
@@ -238,7 +238,7 @@
partition,
"size",
Ops.multiply(
- 1024 * 1024,
+ Ops.multiply(1024, 1024),
Partitions.SwapSizeMb(
0,
Convert.convert(
@@ -1610,7 +1610,7 @@
def add_cylinder_info(conf, gap)
conf = deep_copy(conf)
gap = deep_copy(gap)
- big_cyl = ((4 * 1024) * 1024) * 1024
+ big_cyl = Ops.multiply(Ops.multiply(Ops.multiply(4, 1024), 1024), 1024)
cyl_size = Convert.convert(
Ops.index(gap, "cyl_size", 1),
{ :from => "any", :to => "integer" }
@@ -2947,7 +2947,7 @@
{ :from => "any", :to => "integer" }
)
),
- (100 * 1024) * 1024
+ Ops.multiply(Ops.multiply(100, 1024), 1024)
)
)
Builtins.y2milestone("after pct parts %1", ret)
@@ -2969,7 +2969,7 @@
{ :from => "any", :to => "integer" }
)
),
- (50 * 1024) * 1024
+ Ops.multiply(Ops.multiply(50, 1024), 1024)
)
)
Builtins.y2milestone("after maximizes parts %1", ret)
@@ -3184,7 +3184,10 @@
false
)
Builtins.y2milestone("win=%1", win)
- if (win != nil) && Ops.greater_than(psize, (300 * 1024) * 1024)
+ if (win != nil) && Ops.greater_than(
+ psize,
+ Ops.multiply(Ops.multiply(300, 1024), 1024)
+ )
Ops.assign(p, "winfo", win)
Ops.assign(
p,
diff -ur result/autoinstallation/src/include/autoinstall/helps.rb result-bck/autoinstallation/src/include/autoinstall/helps.rb
--- result/autoinstallation/src/include/autoinstall/helps.rb 2013-06-28 13:54:23.736000000 +0200
+++ result-bck/autoinstallation/src/include/autoinstall/helps.rb 2013-06-28 12:36:21.156000000 +0200
@@ -9,41 +9,80 @@
def initialize_autoinstall_helps(include_target)
textdomain "autoinst"
@HELPS = {
- "valid" => (_("<p><b><big>Profile Validation</big></b><br>") + _(
- "<p>This tool uses <em>xmllint</em> to validate the profile against the DTD and\nit checks for missing data. Some missing data might be intentional and any\nreported errors can be ignored, for example, when creating classes.</p>\n"
- )) + _(
- "<p>Load a profile first. Otherwise an empty file\nis validated.</p>\n"
+ "valid" => Ops.add(
+ Ops.add(
+ _("<p><b><big>Profile Validation</big></b><br>"),
+ _(
+ "<p>This tool uses <em>xmllint</em> to validate the profile against the DTD and\nit checks for missing data. Some missing data might be intentional and any\nreported errors can be ignored, for example, when creating classes.</p>\n"
+ )
+ ),
+ _(
+ "<p>Load a profile first. Otherwise an empty file\nis validated.</p>\n"
+ )
),
- "kickstart" => _("<p><b><big>Importing Kickstart Files</big></b><br>") + _(
- "<p>To import a Kickstart file, enter the path to the configuration file. \nThe imported data is loaded into the configuration management system \nto add more configuration options available with SUSE.</p>\n"
+ "kickstart" => Ops.add(
+ _("<p><b><big>Importing Kickstart Files</big></b><br>"),
+ _(
+ "<p>To import a Kickstart file, enter the path to the configuration file. \nThe imported data is loaded into the configuration management system \nto add more configuration options available with SUSE.</p>\n"
+ )
),
"clone" => _(
"<p>This tool creates a reference profile by reading\ninformation from this system. Select the resources to read from this system\nin addition to the default resources, like partitioning and package selections.</p>\n"
),
- "drivedialog" => (((((((((((_("<p> Partition your hard disks... </p>") + _(
- "<p>The table to the right shows the partitions to create on the target system.\n</p>\n"
- )) + _(
- "<p><b>Hard disks</b> are designated like this </p>"
- )) + _(
- "<tt>/dev/hda </tt>1st EIDE disk\n<tt>/dev/hdb </tt>2nd EIDE disk\n<tt>/dev/hdc </tt>3rd EIDE disk"
- )) + _(
- "<p>etc.</p>"
- )) + _(
- "<p>- or - </p>"
- )) + _(
- "<p><tt>/dev/sda </tt>1st SCSI disk\n<tt>/dev/sdb </tt>2nd SCSI disk\n<tt>/dev/sdc </tt>3rd SCSI disk</p>"
- )) + _(
- "If no partitions are defined and the specified drive is also\nthe drive where the root partition should reside, the following partitions are\ncreated automatically:"
- )) + _(
- " <tt>/boot</tt>, <tt>swap</tt>, and a root partition <tt>/</tt>.\nSizes are calculated automatically.\n"
- )) + _(
- "<p><b>Advanced Options</b></p>"
- )) + _(
- "By default, AutoYaST will create an extended partition and adds all new partitions as logical devices. It is possible, however, to instruct AutoYaST to create a certain partition as a primary partition or as extended partition. Additionally, it is possible to specify the size of a partition using sectors rather than size in MBytes."
- )) + _(
- "These options and other advanced options cannot be configured using this\ninterface. Instead, add them manually to the control file.\n"
- )) + _(
- "<p>\nFor LVM and RAID setup, consult the documentation and add the configuration\nto an existing control file. You can only create unformatted LVM and RAID partitions as\na preparation.\n</p>\n"
+ "drivedialog" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p> Partition your hard disks... </p>"),
+ _(
+ "<p>The table to the right shows the partitions to create on the target system.\n</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Hard disks</b> are designated like this </p>"
+ )
+ ),
+ _(
+ "<tt>/dev/hda </tt>1st EIDE disk\n<tt>/dev/hdb </tt>2nd EIDE disk\n<tt>/dev/hdc </tt>3rd EIDE disk"
+ )
+ ),
+ _("<p>etc.</p>")
+ ),
+ _("<p>- or - </p>")
+ ),
+ _(
+ "<p><tt>/dev/sda </tt>1st SCSI disk\n<tt>/dev/sdb </tt>2nd SCSI disk\n<tt>/dev/sdc </tt>3rd SCSI disk</p>"
+ )
+ ),
+ _(
+ "If no partitions are defined and the specified drive is also\nthe drive where the root partition should reside, the following partitions are\ncreated automatically:"
+ )
+ ),
+ _(
+ " <tt>/boot</tt>, <tt>swap</tt>, and a root partition <tt>/</tt>.\nSizes are calculated automatically.\n"
+ )
+ ),
+ _("<p><b>Advanced Options</b></p>")
+ ),
+ _(
+ "By default, AutoYaST will create an extended partition and adds all new partitions as logical devices. It is possible, however, to instruct AutoYaST to create a certain partition as a primary partition or as extended partition. Additionally, it is possible to specify the size of a partition using sectors rather than size in MBytes."
+ )
+ ),
+ _(
+ "These options and other advanced options cannot be configured using this\ninterface. Instead, add them manually to the control file.\n"
+ )
+ ),
+ _(
+ "<p>\nFor LVM and RAID setup, consult the documentation and add the configuration\nto an existing control file. You can only create unformatted LVM and RAID partitions as\na preparation.\n</p>\n"
+ )
)
}
end
diff -ur result/autoinstallation/src/modules/AutoInstallRules.rb result-bck/autoinstallation/src/modules/AutoInstallRules.rb
--- result/autoinstallation/src/modules/AutoInstallRules.rb 2013-06-28 13:53:13.612000000 +0200
+++ result-bck/autoinstallation/src/modules/AutoInstallRules.rb 2013-06-28 12:36:21.036000000 +0200
@@ -171,7 +171,7 @@
Ops.index(memories, [0, "resource", "phys_mem", 0, "range"], 0),
{ :from => "any", :to => "integer" }
)
- @memsize = Ops.divide(memory, 1024 * 1024)
+ @memsize = Ops.divide(memory, Ops.multiply(1024, 1024))
Ops.assign(@ATTR, "memsize", @memsize)
storage = Storage.GetTargetMap
_PhysicalTargetMap = Builtins.filter(storage) { |k, v|
diff -ur result/autoinstallation/src/modules/AutoinstConfig.rb result-bck/autoinstallation/src/modules/AutoinstConfig.rb
--- result/autoinstallation/src/modules/AutoinstConfig.rb 2013-06-28 13:53:29.572000000 +0200
+++ result-bck/autoinstallation/src/modules/AutoinstConfig.rb 2013-06-28 12:36:21.068000000 +0200
@@ -292,12 +292,18 @@
end
def MainHelp
- main_help = (_(
- "<h3>AutoYaST Configuration Management System</h3>\n<p>Almost all resources of the control file can be\nconfigured using the configuration management system.</p>\n"
- ) + _(
- "<p>Most of the modules used to create the configuration are identical to those available\nthrough the YaST Control Center. Instead of configuring this system, the data\nentered is collected and exported to the control file that can be used to\ninstall another system using AutoYaST.\n</p>\n"
- )) + _(
- "<p>In addition to the existing and familiar modules,\nnew interfaces were created for special and complex configurations, including\npartitioning, general options, and software.</p>\n"
+ main_help = Ops.add(
+ Ops.add(
+ _(
+ "<h3>AutoYaST Configuration Management System</h3>\n<p>Almost all resources of the control file can be\nconfigured using the configuration management system.</p>\n"
+ ),
+ _(
+ "<p>Most of the modules used to create the configuration are identical to those available\nthrough the YaST Control Center. Instead of configuring this system, the data\nentered is collected and exported to the control file that can be used to\ninstall another system using AutoYaST.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>In addition to the existing and familiar modules,\nnew interfaces were created for special and complex configurations, including\npartitioning, general options, and software.</p>\n"
+ )
)
return main_help
end
diff -ur result/autoinstallation/src/modules/AutoinstLVM.rb result-bck/autoinstallation/src/modules/AutoinstLVM.rb
--- result/autoinstallation/src/modules/AutoinstLVM.rb 2013-06-28 13:53:16.016000000 +0200
+++ result-bck/autoinstallation/src/modules/AutoinstLVM.rb 2013-06-28 12:36:21.076000000 +0200
@@ -181,9 +181,9 @@
Ops.multiply(Ops.divide(vgsize, 1024), 1024)
)
lvsize = Ops.multiply(
- 1024 * 1024,
+ Ops.multiply(1024, 1024),
Partitions.SwapSizeMb(
- Ops.divide(vgsize, 1024 * 1024),
+ Ops.divide(vgsize, Ops.multiply(1024, 1024)),
lvsize_str == "suspend"
)
)
diff -ur result/autoinstallation/src/modules/AutoinstPartPlan.rb result-bck/autoinstallation/src/modules/AutoinstPartPlan.rb
--- result/autoinstallation/src/modules/AutoinstPartPlan.rb 2013-06-28 13:53:08.756000000 +0200
+++ result-bck/autoinstallation/src/modules/AutoinstPartPlan.rb 2013-06-28 12:36:21.072000000 +0200
@@ -675,7 +675,7 @@
Ops.index(v, "pesize", 1),
{ :from => "any", :to => "integer" }
),
- 1024 * 1024
+ Ops.multiply(1024, 1024)
)
)
)
diff -ur result/autoinstallation/src/modules/AutoinstStorage.rb result-bck/autoinstallation/src/modules/AutoinstStorage.rb
--- result/autoinstallation/src/modules/AutoinstStorage.rb 2013-06-28 13:53:35.640000000 +0200
+++ result-bck/autoinstallation/src/modules/AutoinstStorage.rb 2013-06-28 12:36:21.020000000 +0200
@@ -571,7 +571,7 @@
),
Ops.divide(
Ops.subtract(usedSize, sizeByCyl),
- 1024 * 1024
+ Ops.multiply(1024, 1024)
)
)
)
@@ -993,7 +993,7 @@
Builtins.sformat(
"%1",
Ops.multiply(
- 1024 * 1024,
+ Ops.multiply(1024, 1024),
Partitions.SwapSizeMb(
0,
Convert.to_string(Ops.index(pe, "size", "")) == "suspend"
diff -ur result/backup/src/include/backup/help_texts.rb result-bck/backup/src/include/backup/help_texts.rb
--- result/backup/src/include/backup/help_texts.rb 2013-06-28 13:57:11.312000000 +0200
+++ result-bck/backup/src/include/backup/help_texts.rb 2013-06-28 12:36:07.408000000 +0200
@@ -11,36 +11,60 @@
end
def backup_help_archive_settings
- return (_(
- "<P><B><big>Backup</big></B><BR>To create a backup of your system,\nenter the absolute path for the file in which to store the backup in \n<b>Filename</b>. To store the file on an NFS server, select <b>Network</b> \nas the location and enter the server details."
- ) + _(
- "<P>The backup module creates a tar archive with changed files and \nan autoinstallation profile for easy and fast system reinstallation. \nTo store only the names of detected files instead of creating an archive, \nselect <B>Only Create List of Files Found</B>.</P>"
- )) + _(
- "<P>If you use ACLs (access control lists) for file access and \nwant to back them up, select the subarchive type star. To create a \nmultivolume archive, for example, for storage on a fixed-size media \nlike CDs, use <b>Options</b> to configure these settings.</P>"
+ return Ops.add(
+ Ops.add(
+ _(
+ "<P><B><big>Backup</big></B><BR>To create a backup of your system,\nenter the absolute path for the file in which to store the backup in \n<b>Filename</b>. To store the file on an NFS server, select <b>Network</b> \nas the location and enter the server details."
+ ),
+ _(
+ "<P>The backup module creates a tar archive with changed files and \nan autoinstallation profile for easy and fast system reinstallation. \nTo store only the names of detected files instead of creating an archive, \nselect <B>Only Create List of Files Found</B>.</P>"
+ )
+ ),
+ _(
+ "<P>If you use ACLs (access control lists) for file access and \nwant to back them up, select the subarchive type star. To create a \nmultivolume archive, for example, for storage on a fixed-size media \nlike CDs, use <b>Options</b> to configure these settings.</P>"
+ )
)
end
def backup_help_archive_options
- return (_(
- "<P><B><BIG>Multivolume Archive</BIG></B><BR>\nA backup archive can be divided into several smaller parts. This is useful \nif an archive is larger than the space available on the backup medium.</P>"
- ) + _(
- "<P>To create a multivolume archive, enable that option and \nselect your backup medium. If your backup medium is not in the list, \nselect <B>Custom</B>. Then enter the volume size in <b>Custom Size</b>.</P>"
- )) + _(
- "<P><B>Note:</B> 1 kB=1000 bytes, 1 KiB=1024 bytes, etc. \nThe entered volume size will be rounded down to a \nmultiple of 2048 bytes.</P>"
+ return Ops.add(
+ Ops.add(
+ _(
+ "<P><B><BIG>Multivolume Archive</BIG></B><BR>\nA backup archive can be divided into several smaller parts. This is useful \nif an archive is larger than the space available on the backup medium.</P>"
+ ),
+ _(
+ "<P>To create a multivolume archive, enable that option and \nselect your backup medium. If your backup medium is not in the list, \nselect <B>Custom</B>. Then enter the volume size in <b>Custom Size</b>.</P>"
+ )
+ ),
+ _(
+ "<P><B>Note:</B> 1 kB=1000 bytes, 1 KiB=1024 bytes, etc. \nThe entered volume size will be rounded down to a \nmultiple of 2048 bytes.</P>"
+ )
)
end
def backup_help_backup_setting
- return (((_(
- "<P><B><BIG>Backup Options</BIG></B><BR>Here, select which parts of the system to search and back up. <B>Archive Description</B> is an optional description of the backup archive.</P>"
- ) + _(
- "<P>The archive will contain files from packages that were changed since\npackage installation or upgrade. Files that do not belong to any\npackage can be optionally added to the archive.</P>"
- )) + _(
- "<P>Check <B>Display List of Files</B> to show and edit a list of files found before creating the backup archive.</P>"
- )) + _(
- "<P>If you select <b>Check MD5 Sum</b>, the MD5 sum is used to determine if the file was changed. It is more reliable than checking the size or modification time, but takes longer.</P>"
- )) + _(
- "<p>Select <b>Backup Content of All Packages</b> to back up all files belonging\nto all installed packages. This option is useful when creating an archive that\nneed not have the same installation repositories or the same packages\navailable in order to restore. It is faster not to use this option.</p>\n"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<P><B><BIG>Backup Options</BIG></B><BR>Here, select which parts of the system to search and back up. <B>Archive Description</B> is an optional description of the backup archive.</P>"
+ ),
+ _(
+ "<P>The archive will contain files from packages that were changed since\npackage installation or upgrade. Files that do not belong to any\npackage can be optionally added to the archive.</P>"
+ )
+ ),
+ _(
+ "<P>Check <B>Display List of Files</B> to show and edit a list of files found before creating the backup archive.</P>"
+ )
+ ),
+ _(
+ "<P>If you select <b>Check MD5 Sum</b>, the MD5 sum is used to determine if the file was changed. It is more reliable than checking the size or modification time, but takes longer.</P>"
+ )
+ ),
+ _(
+ "<p>Select <b>Backup Content of All Packages</b> to back up all files belonging\nto all installed packages. This option is useful when creating an archive that\nneed not have the same installation repositories or the same packages\navailable in order to restore. It is faster not to use this option.</p>\n"
+ )
)
end
@@ -63,10 +87,13 @@
end
def backup_help_file_selection
- return _(
- "<P><B><BIG>Detected Files</BIG></B><BR>This is a list of files found. Select which files to store in the archive.</P>"
- ) + _(
- "<P>A mark in the first column indicates that the file will be backed up.</P>"
+ return Ops.add(
+ _(
+ "<P><B><BIG>Detected Files</BIG></B><BR>This is a list of files found. Select which files to store in the archive.</P>"
+ ),
+ _(
+ "<P>A mark in the first column indicates that the file will be backed up.</P>"
+ )
)
end
@@ -83,50 +110,86 @@
end
def backup_help_cron_dialog
- return ((_(
- "<P><B><BIG>Automatic Backup</BIG></B><BR>\nThe selected profile can be started automatically in the background without \nany user interaction.</P>"
- ) + _(
- "<P>To start the backup automatically with the selected profile, \ncheck <b>Start Backup Automatically</b> and set how often and when the \nbackup should be started. Use the 24-hour clock format for <b>Hour</b>.</P>"
- )) + _(
- "<P>The previous full backup archive, if it exists, will be renamed by \nputting the date in the form YYYYMMDDHHMMSS at the beginning of the \nfilename. If the number of old archives is greater than the predefined \nvalue, the oldest archives are deleted. All archives are stored\nas <b>full backups</b>.</P>"
- )) + _(
- "<p>For the root user to receive information about the backup, \nselect <b>Send Summary Mail to User root</b>. This summary contains \ninformation about the files included in the backup and any errors that \noccur.</p>"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<P><B><BIG>Automatic Backup</BIG></B><BR>\nThe selected profile can be started automatically in the background without \nany user interaction.</P>"
+ ),
+ _(
+ "<P>To start the backup automatically with the selected profile, \ncheck <b>Start Backup Automatically</b> and set how often and when the \nbackup should be started. Use the 24-hour clock format for <b>Hour</b>.</P>"
+ )
+ ),
+ _(
+ "<P>The previous full backup archive, if it exists, will be renamed by \nputting the date in the form YYYYMMDDHHMMSS at the beginning of the \nfilename. If the number of old archives is greater than the predefined \nvalue, the oldest archives are deleted. All archives are stored\nas <b>full backups</b>.</P>"
+ )
+ ),
+ _(
+ "<p>For the root user to receive information about the backup, \nselect <b>Send Summary Mail to User root</b>. This summary contains \ninformation about the files included in the backup and any errors that \noccur.</p>"
+ )
)
end
def profile_help
- return ((_(
- "<P><B><BIG>System Backup</BIG></B><BR>\nThis backup tool searches files on your system and creates a backup \narchive from them. It is a small, easy-to-use backup program. \nIf you need advanced features, such as incremental backup or \nnetwork backup, you should use an expert tool.</P>"
- ) + _(
- "<P>This dialog shows the list of currently stored backup \nprofiles. A backup profile is used to name a group of different settings, \nsuch as the name of an archive and how to search for files.</P>"
- )) + _(
- "<P>You can have a number of profiles, each with a unique name. \nUsing the actions in <B>Profile Management</B>, you can add a new profile \nbased on default values, duplicate an existing profile, change the settings \nstored in a profile, or delete a profile. Use the <b>Automatic Backup</b> \noption to configure routine backups of the selected profile.</P>"
- )) + _(
- "<P>Press <B>Create Backup</B> to start the backup using \nsettings stored in the currently selected profile. Press \n<B>Back Up Manually</B> to use default settings that can be \nmodified before starting the backup process.</P>"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<P><B><BIG>System Backup</BIG></B><BR>\nThis backup tool searches files on your system and creates a backup \narchive from them. It is a small, easy-to-use backup program. \nIf you need advanced features, such as incremental backup or \nnetwork backup, you should use an expert tool.</P>"
+ ),
+ _(
+ "<P>This dialog shows the list of currently stored backup \nprofiles. A backup profile is used to name a group of different settings, \nsuch as the name of an archive and how to search for files.</P>"
+ )
+ ),
+ _(
+ "<P>You can have a number of profiles, each with a unique name. \nUsing the actions in <B>Profile Management</B>, you can add a new profile \nbased on default values, duplicate an existing profile, change the settings \nstored in a profile, or delete a profile. Use the <b>Automatic Backup</b> \noption to configure routine backups of the selected profile.</P>"
+ )
+ ),
+ _(
+ "<P>Press <B>Create Backup</B> to start the backup using \nsettings stored in the currently selected profile. Press \n<B>Back Up Manually</B> to use default settings that can be \nmodified before starting the backup process.</P>"
+ )
)
end
def expert_options_help
- return (_(
- "<P><BIG><B>Expert Options</B></BIG><BR>Some advanced configuration options\ncan be set in this dialog. Usually there is no need to modify the default values.</P>"
- ) + _(
- "<P>System areas, such as partition table or ext2 image, can be added to the backup archive with <b>Back Up Hard Disk System Areas</b>. These system areas can only be restored from an archive manually.</P>"
- )) + _(
- "<P>In <B>Temporary Directory</B>, set the location in which parts\nof the archive are stored before the final archive is created. The temporary directory should have enough\nfree space for the entire archive.</P>\n"
+ return Ops.add(
+ Ops.add(
+ _(
+ "<P><BIG><B>Expert Options</B></BIG><BR>Some advanced configuration options\ncan be set in this dialog. Usually there is no need to modify the default values.</P>"
+ ),
+ _(
+ "<P>System areas, such as partition table or ext2 image, can be added to the backup archive with <b>Back Up Hard Disk System Areas</b>. These system areas can only be restored from an archive manually.</P>"
+ )
+ ),
+ _(
+ "<P>In <B>Temporary Directory</B>, set the location in which parts\nof the archive are stored before the final archive is created. The temporary directory should have enough\nfree space for the entire archive.</P>\n"
+ )
)
end
def backup_help_constraints
- return (((_(
- "<p><b>Included Directories</b><br>\nIt is possible to limit the search to back up only selected directories.\nTo add a new directory, click <b>Add</b> and select a directory.\nTo change or delete a directory, select it and click \n<b>Edit</b> or <b>Delete</b>.\nIf you do not select any directory or if you delete all the already listed ones,\nthe entire file system is searched and backed up.</p>\n"
- ) + _(
- "<P><BIG><B>Constraints</B></BIG>\n<BR>It is possible to exclude some files from the backup.\nSearch constraints can be a directory, file system, or regular expression.\nUse <b>Edit</b> to modify an existing constraint, or\n<b>Delete</b> to remove the selected constraint.\nTo add a new constraint, click <b>Add</b> then select the type of constraint. </P>"
- )) + _(
- "<P><B>Directory</B>: All files located in the specified directories will not be backed up.</P>"
- )) + _(
- "<P><B>File System</B>: It is possible to exclude all files located\non a certain type of file system (such as ReiserFS or Ext2).\nThe root directory will always be searched, even if its file system is selected.\nFile systems that cannot be used on a local disk, such as network file systems,\nare excluded by default.</P>"
- )) + _(
- "<P><B>Regular Expressions</B>: Any filename that matches any of the regular expressions will not be backed up. Use Perl regular expressions. To exclude, for example, <tt>*.bak</tt> files, add the regular expression <tt>\\.bak$</tt>.</P>"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b>Included Directories</b><br>\nIt is possible to limit the search to back up only selected directories.\nTo add a new directory, click <b>Add</b> and select a directory.\nTo change or delete a directory, select it and click \n<b>Edit</b> or <b>Delete</b>.\nIf you do not select any directory or if you delete all the already listed ones,\nthe entire file system is searched and backed up.</p>\n"
+ ),
+ _(
+ "<P><BIG><B>Constraints</B></BIG>\n<BR>It is possible to exclude some files from the backup.\nSearch constraints can be a directory, file system, or regular expression.\nUse <b>Edit</b> to modify an existing constraint, or\n<b>Delete</b> to remove the selected constraint.\nTo add a new constraint, click <b>Add</b> then select the type of constraint. </P>"
+ )
+ ),
+ _(
+ "<P><B>Directory</B>: All files located in the specified directories will not be backed up.</P>"
+ )
+ ),
+ _(
+ "<P><B>File System</B>: It is possible to exclude all files located\non a certain type of file system (such as ReiserFS or Ext2).\nThe root directory will always be searched, even if its file system is selected.\nFile systems that cannot be used on a local disk, such as network file systems,\nare excluded by default.</P>"
+ )
+ ),
+ _(
+ "<P><B>Regular Expressions</B>: Any filename that matches any of the regular expressions will not be backed up. Use Perl regular expressions. To exclude, for example, <tt>*.bak</tt> files, add the regular expression <tt>\\.bak$</tt>.</P>"
+ )
)
end
end
diff -ur result/backup/src/include/backup/ui.rb result-bck/backup/src/include/backup/ui.rb
--- result/backup/src/include/backup/ui.rb 2013-06-28 13:57:10.304000000 +0200
+++ result-bck/backup/src/include/backup/ui.rb 2013-06-28 12:36:07.424000000 +0200
@@ -1642,7 +1642,10 @@
Left(
Label(
Id(:package),
- _("Searching in Package: ") + " "
+ Ops.add(
+ _("Searching in Package: "),
+ " "
+ )
)
),
VSpacing(3.0),
@@ -1887,7 +1890,10 @@
1,
Label(
Id(:directory),
- _("Searching in Directory: ") + " "
+ Ops.add(
+ _("Searching in Directory: "),
+ " "
+ )
)
)
)
@@ -3889,7 +3895,7 @@
Item(Id(:add), Ops.add(Label.AddButton, "...")),
Item(Id(:clone), _("&Duplicate...")),
Item(Id(:edit), Ops.add(Label.EditButton, "...")),
- Item(Id(:rename), _("Re&name") + "..."),
+ Item(Id(:rename), Ops.add(_("Re&name"), "...")),
Item(Id(:delete), Label.DeleteButton),
Item(Id(:cron), Ops.add(tableheader3, "..."))
]
diff -ur result/backup/src/modules/Backup.rb result-bck/backup/src/modules/Backup.rb
--- result/backup/src/modules/Backup.rb 2013-06-28 13:57:02.124000000 +0200
+++ result-bck/backup/src/modules/Backup.rb 2013-06-28 12:36:07.368000000 +0200
@@ -168,7 +168,7 @@
@unselected_files = deep_copy(@default_unselected_files)
@no_interactive = false
@selected_profile = nil
- @undetected_volume_size = (1024 * 1024) * 1024
+ @undetected_volume_size = Ops.multiply(Ops.multiply(1024, 1024), 1024)
@installable_packages = []
@complete_backup = []
@remove_cron_files = []
@@ -180,31 +180,31 @@
{
"label" => _("CD-R/RW 650 MB (74 min.)"),
"symbol" => :cd650,
- "capacity" => (649 * 1024) * 1024
+ "capacity" => Ops.multiply(Ops.multiply(649, 1024), 1024)
},
{
"label" => _("CD-R/RW 700 MB (80 min.)"),
"symbol" => :cd700,
- "capacity" => (702 * 1024) * 1024
+ "capacity" => Ops.multiply(Ops.multiply(702, 1024), 1024)
}
]
@floppy_media_descriptions = [
{
"label" => _("Floppy 1.44 MB"),
"symbol" => :fd144,
- "capacity" => 1423 * 1024
+ "capacity" => Ops.multiply(1423, 1024)
},
{
"label" => _("Floppy 1.2 MB"),
"symbol" => :fd12,
- "capacity" => 1185 * 1024
+ "capacity" => Ops.multiply(1185, 1024)
}
]
@zip_media_descriptions = [
{
"label" => _("ZIP 100 MB"),
"symbol" => :zip100,
- "capacity" => (95 * 1024) * 1024
+ "capacity" => Ops.multiply(Ops.multiply(95, 1024), 1024)
}
]
@misc_descriptions = []
@@ -223,7 +223,11 @@
{ "label" => _("kB"), "capacity" => 1000, "symbol" => :kB },
{ "label" => _("KiB"), "capacity" => 1024, "symbol" => :kiB },
{ "label" => _("MB"), "capacity" => 1000000, "symbol" => :MB },
- { "label" => _("MiB"), "capacity" => 1024 * 1024, "symbol" => :MiB }
+ {
+ "label" => _("MiB"),
+ "capacity" => Ops.multiply(1024, 1024),
+ "symbol" => :MiB
+ }
]
@configuration_filename = "/var/adm/YaST/backup/profiles"
@backup_scripts_dir = "/var/adm/YaST/backup/scripts/"
@@ -1605,12 +1609,18 @@
{ :from => "any", :to => "integer" }
) : 0
raw_size = Ops.multiply(sz, sect_sz)
- if raw_size == (((96 * 64) * 32) * 512)
+ if raw_size == Ops.multiply(
+ Ops.multiply(Ops.multiply(96, 64), 32),
+ 512
+ )
preselected = :zip100
else
if Ops.greater_than(raw_size, 0)
preselected = :user
- user_size = Ops.subtract(raw_size, 1024 * 1024)
+ user_size = Ops.subtract(
+ raw_size,
+ Ops.multiply(1024, 1024)
+ )
end
end
else
@@ -1641,7 +1651,9 @@
}
Builtins.y2milestone("sect_sz: %1", sect_sz)
if Ops.greater_than(sect_sz, 0)
- preselected = :fd144 if sect_sz == (2880 * 512)
+ if sect_sz == Ops.multiply(2880, 512)
+ preselected = :fd144
+ end
end
end
end
diff -ur result/bootloader/src/include/bootloader/grub/misc.rb result-bck/bootloader/src/include/bootloader/grub/misc.rb
--- result/bootloader/src/include/bootloader/grub/misc.rb 2013-06-28 13:58:47.304000000 +0200
+++ result-bck/bootloader/src/include/bootloader/grub/misc.rb 2013-06-28 12:35:42.604000000 +0200
@@ -257,7 +257,10 @@
activate = Ops.index(BootCommon.globals, "activate", "false") == "true"
generic_mbr = Ops.index(BootCommon.globals, "generic_mbr", "false") == "true"
Builtins.y2milestone(
- "Updating disk system area, activate partition: %1, " + "install generic boot code in MBR: %2",
+ Ops.add(
+ "Updating disk system area, activate partition: %1, ",
+ "install generic boot code in MBR: %2"
+ ),
activate,
generic_mbr
)
diff -ur result/bootloader/src/include/bootloader/grub2/misc.rb result-bck/bootloader/src/include/bootloader/grub2/misc.rb
--- result/bootloader/src/include/bootloader/grub2/misc.rb 2013-06-28 13:58:55.244000000 +0200
+++ result-bck/bootloader/src/include/bootloader/grub2/misc.rb 2013-06-28 12:35:42.604000000 +0200
@@ -257,7 +257,10 @@
activate = Ops.index(BootCommon.globals, "activate", "false") == "true"
generic_mbr = Ops.index(BootCommon.globals, "generic_mbr", "false") == "true"
Builtins.y2milestone(
- "Updating disk system area, activate partition: %1, " + "install generic boot code in MBR: %2",
+ Ops.add(
+ "Updating disk system area, activate partition: %1, ",
+ "install generic boot code in MBR: %2"
+ ),
activate,
generic_mbr
)
diff -ur result/bootloader/src/include/bootloader/routines/helps.rb result-bck/bootloader/src/include/bootloader/routines/helps.rb
--- result/bootloader/src/include/bootloader/routines/helps.rb 2013-06-28 13:59:27.684000000 +0200
+++ result-bck/bootloader/src/include/bootloader/routines/helps.rb 2013-06-28 12:35:42.604000000 +0200
@@ -48,14 +48,23 @@
end
def SectionsHelp
- return ((_(
- "<P> In the table, each section represents one item\nin the boot menu.</P>"
- ) + _(
- "<P> Press <B>Edit</B> to display the properties of the\nselected section.</P>"
- )) + _(
- "<P> By pressing <b>Set as Default</b>, mark the selected \nsection as default. When booting, the boot loader will provide \na boot menu and wait for the user to select the kernel or other \nOS to boot. If no key is pressed before the time-out, the default \nkernel or OS will be booted. The order of sections in the boot loader\nmenu can be changed using the <B>Up</B> and <B>Down</B> buttons.</P>"
- )) + _(
- "<P>Press <B>Add</B> to create a new boot loader section\nor <B>Delete</B> to delete the selected section.</P>"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<P> In the table, each section represents one item\nin the boot menu.</P>"
+ ),
+ _(
+ "<P> Press <B>Edit</B> to display the properties of the\nselected section.</P>"
+ )
+ ),
+ _(
+ "<P> By pressing <b>Set as Default</b>, mark the selected \nsection as default. When booting, the boot loader will provide \na boot menu and wait for the user to select the kernel or other \nOS to boot. If no key is pressed before the time-out, the default \nkernel or OS will be booted. The order of sections in the boot loader\nmenu can be changed using the <B>Up</B> and <B>Down</B> buttons.</P>"
+ )
+ ),
+ _(
+ "<P>Press <B>Add</B> to create a new boot loader section\nor <B>Delete</B> to delete the selected section.</P>"
+ )
)
end
@@ -140,18 +149,33 @@
end
def SectionTypeHelp
- return ((((_(
- "<p><big><b>Type of the New Section</b></big><br>\nSelect the type of the new section to create.</p>"
- ) + _(
- "<p>Select <b>Clone Selected Section</b> to clone the currently selected\nsection. Then modify the options that should differ from the\nselected section.</p>"
- )) + _(
- "<p>Select <b>Image Section</b> to add a new Linux kernel or other image\nto load and start.</p>"
- )) + _(
- "<p>Select <b>Xen Section</b> to add a new Linux kernel or other image,\nbut to start it in a Xen environment.</p>"
- )) + _(
- "<p>Select <b>Other System (Chainloader)</b> to add a section that \nloads and starts a boot sector of a partition of the disk. This is used for\nbooting other operating systems.</p>"
- )) + _(
- "<p>Select <b>Menu Section</b> to add a section that \nloads configuration file (the list of boot sections) from a partition of the disk. This is used for\nbooting other operating systems.</p>"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><big><b>Type of the New Section</b></big><br>\nSelect the type of the new section to create.</p>"
+ ),
+ _(
+ "<p>Select <b>Clone Selected Section</b> to clone the currently selected\nsection. Then modify the options that should differ from the\nselected section.</p>"
+ )
+ ),
+ _(
+ "<p>Select <b>Image Section</b> to add a new Linux kernel or other image\nto load and start.</p>"
+ )
+ ),
+ _(
+ "<p>Select <b>Xen Section</b> to add a new Linux kernel or other image,\nbut to start it in a Xen environment.</p>"
+ )
+ ),
+ _(
+ "<p>Select <b>Other System (Chainloader)</b> to add a section that \nloads and starts a boot sector of a partition of the disk. This is used for\nbooting other operating systems.</p>"
+ )
+ ),
+ _(
+ "<p>Select <b>Menu Section</b> to add a section that \nloads configuration file (the list of boot sections) from a partition of the disk. This is used for\nbooting other operating systems.</p>"
+ )
)
end
end
diff -ur result/bootloader/src/include/bootloader/routines/lilolike.rb result-bck/bootloader/src/include/bootloader/routines/lilolike.rb
--- result/bootloader/src/include/bootloader/routines/lilolike.rb 2013-06-28 13:59:08.716000000 +0200
+++ result-bck/bootloader/src/include/bootloader/routines/lilolike.rb 2013-06-28 12:35:42.604000000 +0200
@@ -401,7 +401,10 @@
new_this_section = Ops.index(new_sect, type, {})
if new_this_section == {}
Builtins.y2warning(
- "Warning, could not find freshly proposed section" + "corresponding to section %1, deleting it",
+ Ops.add(
+ "Warning, could not find freshly proposed section",
+ "corresponding to section %1, deleting it"
+ ),
Convert.to_string(Ops.index(s, "name", ""))
)
next {}
diff -ur result/bootloader/src/modules/BootCommon.rb result-bck/bootloader/src/modules/BootCommon.rb
--- result/bootloader/src/modules/BootCommon.rb 2013-06-28 13:58:03.764000000 +0200
+++ result-bck/bootloader/src/modules/BootCommon.rb 2013-06-28 12:35:42.604000000 +0200
@@ -145,7 +145,10 @@
}
end
}
- memory_size = Ops.subtract(Ops.divide(memory_size, 1024), 64 * 1024)
+ memory_size = Ops.subtract(
+ Ops.divide(memory_size, 1024),
+ Ops.multiply(64, 1024)
+ )
Builtins.y2milestone("Memory size for XEN domain 0: %1", memory_size)
return memory_size
end
diff -ur result/bootloader/src/modules/BootELILO.rb result-bck/bootloader/src/modules/BootELILO.rb
--- result/bootloader/src/modules/BootELILO.rb 2013-06-28 13:58:17.804000000 +0200
+++ result-bck/bootloader/src/modules/BootELILO.rb 2013-06-28 12:35:42.604000000 +0200
@@ -444,7 +444,13 @@
end
bl_logfile = "/var/log/YaST2/y2log_bootloader"
bl_command = Builtins.sformat(
- ("/usr/sbin/efibootmgr -v --create --label \"%1\" " + "--disk %2 --part %3 ") + "--loader '\\efi\\SuSE\\elilo.efi' --write-signature >> %4 2>&1",
+ Ops.add(
+ Ops.add(
+ "/usr/sbin/efibootmgr -v --create --label \"%1\" ",
+ "--disk %2 --part %3 "
+ ),
+ "--loader '\\efi\\SuSE\\elilo.efi' --write-signature >> %4 2>&1"
+ ),
Ops.index(BootCommon.globals, "boot_efilabel", ""),
boot_disk,
boot_part,
@@ -518,7 +524,13 @@
if Ops.index(BootCommon.globals, "boot_efilabel", "") != ""
bl_logfile = "/var/log/YaST2/y2log_bootloader"
bl_command = Builtins.sformat(
- ("/usr/sbin/efibootmgr -v --create --label \"%1\" " + "--disk %2 --part %3 ") + "--loader '\\efi\\SuSE\\elilo.efi' --write-signature >> %4 2>&1",
+ Ops.add(
+ Ops.add(
+ "/usr/sbin/efibootmgr -v --create --label \"%1\" ",
+ "--disk %2 --part %3 "
+ ),
+ "--loader '\\efi\\SuSE\\elilo.efi' --write-signature >> %4 2>&1"
+ ),
Ops.index(BootCommon.globals, "boot_efilabel", ""),
boot_disk,
boot_part,
@@ -558,7 +570,10 @@
default_entry_map = Convert.to_map(
SCR.Execute(
path(".target.bash_output"),
- "/usr/sbin/efibootmgr |grep ^BootOrder: | " + "cut -d ' ' -f 2 | cut -d ',' -f 1"
+ Ops.add(
+ "/usr/sbin/efibootmgr |grep ^BootOrder: | ",
+ "cut -d ' ' -f 2 | cut -d ',' -f 1"
+ )
)
)
new_entry = Convert.to_string(
@@ -576,7 +591,10 @@
new_entry = Builtins.deletechars(new_entry, "\n ")
new_entry = Ops.add("Boot", new_entry)
command = Builtins.sformat(
- "set -o pipefail; /usr/sbin/efibootmgr -v | " + "grep '%1' |sed 's/%1.*\\(HD(.*)File(.*)\\).*/\\1/'",
+ Ops.add(
+ "set -o pipefail; /usr/sbin/efibootmgr -v | ",
+ "grep '%1' |sed 's/%1.*\\(HD(.*)File(.*)\\).*/\\1/'"
+ ),
String.Quote(new_entry)
)
hd_descr_map = Convert.to_map(
@@ -588,7 +606,10 @@
"\n "
)
command = Builtins.sformat(
- "set -o pipefail; /usr/sbin/efibootmgr -v |" + "grep '%1' |awk '{print $1}'",
+ Ops.add(
+ "set -o pipefail; /usr/sbin/efibootmgr -v |",
+ "grep '%1' |awk '{print $1}'"
+ ),
String.Quote(hd_descr)
)
entries2remove_map = Convert.to_map(
diff -ur result/bootloader/src/modules/Bootloader.rb result-bck/bootloader/src/modules/Bootloader.rb
--- result/bootloader/src/modules/Bootloader.rb 2013-06-28 13:58:21.452000000 +0200
+++ result-bck/bootloader/src/modules/Bootloader.rb 2013-06-28 12:35:42.604000000 +0200
@@ -303,7 +303,10 @@
out = Convert.to_map(
SCR.Execute(
path(".target.bash_output"),
- "test -f /sbin/devmap_mknod.sh && /sbin/devmap_mknod.sh;" + "test -f /sbin/vgscan && /sbin/vgscan --mknodes"
+ Ops.add(
+ "test -f /sbin/devmap_mknod.sh && /sbin/devmap_mknod.sh;",
+ "test -f /sbin/vgscan && /sbin/vgscan --mknodes"
+ )
)
)
if Convert.convert(
diff -ur result/ca-management/src/clients/ca_mgm_auto.rb result-bck/ca-management/src/clients/ca_mgm_auto.rb
--- result/ca-management/src/clients/ca_mgm_auto.rb 2013-06-28 14:01:34.260000000 +0200
+++ result-bck/ca-management/src/clients/ca_mgm_auto.rb 2013-06-28 12:36:06.048000000 +0200
@@ -1061,7 +1061,7 @@
Ops.index(
Convert.to_list(Ops.index(serverCertIssuer, "CN", [])),
0,
- Ops.add(Ops.add("YaST Default CA " + "(", domain), ")")
+ Ops.add(Ops.add(Ops.add("YaST Default CA ", "("), domain), ")")
)
)
)
@@ -1122,7 +1122,7 @@
Ops.assign(
CaMgm.autoYaSTSettings,
"ca_commonName",
- Ops.add(Ops.add("YaST Default CA " + "(", domain), ")")
+ Ops.add(Ops.add(Ops.add("YaST Default CA ", "("), domain), ")")
)
Ops.assign(
CaMgm.autoYaSTSettings,
diff -ur result/ca-management/src/clients/ca_mgm_proposal.rb result-bck/ca-management/src/clients/ca_mgm_proposal.rb
--- result/ca-management/src/clients/ca_mgm_proposal.rb 2013-06-28 14:01:38.088000000 +0200
+++ result-bck/ca-management/src/clients/ca_mgm_proposal.rb 2013-06-28 12:36:06.036000000 +0200
@@ -126,10 +126,15 @@
CaMgm.prop_keep_ca = false
if CaMgm.prop_settingsWritten
if !Popup.YesNo(
- (((_("CA Management") + "\n") + _(
- "Settings have already been written."
- )) + "\n") + _(
- "Delete the old settings?"
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(_("CA Management"), "\n"),
+ _("Settings have already been written.")
+ ),
+ "\n"
+ ),
+ _("Delete the old settings?")
)
)
CaMgm.prop_keep_ca = true
@@ -179,10 +184,15 @@
CaMgm.prop_settingsWritten = (@defaultRootCA != nil) ? true : false
if CaMgm.prop_settingsWritten
if CaMgm.prop_keep_ca || !Popup.YesNo(
- (((_("CA Management") + "\n") + _(
- "Settings have already been written."
- )) + "\n") + _(
- "Delete the old settings?"
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(_("CA Management"), "\n"),
+ _("Settings have already been written.")
+ ),
+ "\n"
+ ),
+ _("Delete the old settings?")
)
)
CaMgm.prop_keep_ca = true
@@ -422,10 +432,15 @@
@sequence = WFM.CallFunction("ca_select_proposal", [])
if CaMgm.prop_settingsWritten
if !Popup.YesNo(
- (((_("CA Management") + "\n") + _(
- "Settings have already been written."
- )) + "\n") + _(
- "Delete the old settings?"
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(_("CA Management"), "\n"),
+ _("Settings have already been written.")
+ ),
+ "\n"
+ ),
+ _("Delete the old settings?")
)
)
CaMgm.prop_keep_ca = true
diff -ur result/ca-management/src/clients/common_cert.rb result-bck/ca-management/src/clients/common_cert.rb
--- result/ca-management/src/clients/common_cert.rb 2013-06-28 14:01:42.848000000 +0200
+++ result-bck/ca-management/src/clients/common_cert.rb 2013-06-28 12:36:06.040000000 +0200
@@ -143,10 +143,14 @@
else
reallyRemove = Popup.AnyQuestion(
Label.WarningMsg,
- (_("The certificate is not yet expired.\n") + _(
- "Please make sure, that no service use this certificate anymore.\n\n"
- )) + _(
- "Are you sure, that you want to remove the certificate?"
+ Ops.add(
+ Ops.add(
+ _("The certificate is not yet expired.\n"),
+ _(
+ "Please make sure, that no service use this certificate anymore.\n\n"
+ )
+ ),
+ _("Are you sure, that you want to remove the certificate?")
),
Label.YesButton,
Label.NoButton,
diff -ur result/certify/src/include/certify/helps.rb result-bck/certify/src/include/certify/helps.rb
--- result/certify/src/include/certify/helps.rb 2013-06-28 14:01:51.348000000 +0200
+++ result-bck/certify/src/include/certify/helps.rb 2013-06-28 12:35:52.532000000 +0200
@@ -12,22 +12,34 @@
end
def DetectedDialogHelp
- return (_(
- "<P><B><BIG>Self Certify Setup</BIG></B><BR>\nHere, configure your self certify.\n<BR></P>\n"
- ) + _(
- "<P><B><BIG>Adding a Self Certify:</BIG></B><BR>\nChoose a self_certify from the list of the detected ones. If your self_certify was\nnot autodetected, use <B>Other (not detected)</B>. Then press\n<B>Configure</B>.\n</P>\n"
- )) + _(
- "<P><B><BIG>Editing or deleting:</BIG></B><BR>\nIf you press <B>Edit</B>, an additional dialog (where you\ncan change the configuration) will open.\n</P>"
+ return Ops.add(
+ Ops.add(
+ _(
+ "<P><B><BIG>Self Certify Setup</BIG></B><BR>\nHere, configure your self certify.\n<BR></P>\n"
+ ),
+ _(
+ "<P><B><BIG>Adding a Self Certify:</BIG></B><BR>\nChoose a self_certify from the list of the detected ones. If your self_certify was\nnot autodetected, use <B>Other (not detected)</B>. Then press\n<B>Configure</B>.\n</P>\n"
+ )
+ ),
+ _(
+ "<P><B><BIG>Editing or deleting:</BIG></B><BR>\nIf you press <B>Edit</B>, an additional dialog (where you\ncan change the configuration) will open.\n</P>"
+ )
)
end
def OverviewDialogHelp
- return (_(
- "<P><B><BIG>Self Certify Overview</BIG></B><BR>\nHere, get an overview of installed self certifies. Additionally,\nyou can edit their configuration.\n<BR></P>\n"
- ) + _(
- "<P><B><BIG>Adding a Self Certify:</BIG></B><BR>\nIf you press <B>Add</B>, you can manually configure a self_certify.\n</P>\n"
- )) + _(
- "<P><B><BIG>Editing or Deleting:</BIG></B><BR>\nChoose a self_certify to change or remove.\nThen press the appropriate button: <B>Edit</B> or <B>Delete</B>.\n</P>\n"
+ return Ops.add(
+ Ops.add(
+ _(
+ "<P><B><BIG>Self Certify Overview</BIG></B><BR>\nHere, get an overview of installed self certifies. Additionally,\nyou can edit their configuration.\n<BR></P>\n"
+ ),
+ _(
+ "<P><B><BIG>Adding a Self Certify:</BIG></B><BR>\nIf you press <B>Add</B>, you can manually configure a self_certify.\n</P>\n"
+ )
+ ),
+ _(
+ "<P><B><BIG>Editing or Deleting:</BIG></B><BR>\nChoose a self_certify to change or remove.\nThen press the appropriate button: <B>Edit</B> or <B>Delete</B>.\n</P>\n"
+ )
)
end
@@ -116,10 +128,13 @@
end
def SummaryDialogHelp
- return _(
- "<p>After ejecting the floppy, immediately change it to read-only. E-mail the files located on this floppy as soon as possible to:<br>&lt;certify@suse.de&gt;<br> and send the floppy to the following postal address:</p>"
- ) + _(
- "<p>SUSE LINUX AG<br>Hardware Certification<br>Maxfeldstr. 5<br>D-90409 Nuernberg<br>Germany</p>"
+ return Ops.add(
+ _(
+ "<p>After ejecting the floppy, immediately change it to read-only. E-mail the files located on this floppy as soon as possible to:<br>&lt;certify@suse.de&gt;<br> and send the floppy to the following postal address:</p>"
+ ),
+ _(
+ "<p>SUSE LINUX AG<br>Hardware Certification<br>Maxfeldstr. 5<br>D-90409 Nuernberg<br>Germany</p>"
+ )
)
end
diff -ur result/certify/src/include/certify/ui_tests.rb result-bck/certify/src/include/certify/ui_tests.rb
--- result/certify/src/include/certify/ui_tests.rb 2013-06-28 14:01:50.428000000 +0200
+++ result-bck/certify/src/include/certify/ui_tests.rb 2013-06-28 12:35:52.532000000 +0200
@@ -145,10 +145,13 @@
frameheader = _("Ping Test")
customwidget = VBox(
Label(
- _(
- "Now the reachability of a remote host in the LAN\nthrough the network interface will be tested.\n\n"
- ) + _(
- "Enter the name or address of a running\nand reachable host in your network.\n"
+ Ops.add(
+ _(
+ "Now the reachability of a remote host in the LAN\nthrough the network interface will be tested.\n\n"
+ ),
+ _(
+ "Enter the name or address of a running\nand reachable host in your network.\n"
+ )
)
),
VSpacing(0.5),
diff -ur result/cluster/src/include/cluster/helps.rb result-bck/cluster/src/include/cluster/helps.rb
--- result/cluster/src/include/cluster/helps.rb 2013-06-28 14:02:02.260000000 +0200
+++ result-bck/cluster/src/include/cluster/helps.rb 2013-06-28 12:36:04.948000000 +0200
@@ -21,15 +21,19 @@
"csync2" => _(
"\n\t\t<p><b><big>Sync Host</big></b><br>The hostnames used here must be the local hostnames of the cluster nodes. That means you must use exactly the same string as printed out by the hostname command.</p>\n\t\t<p><b><big>Sync File</big></b><br>The full absolute filename to be synced.</p>\n\t\t<p><b><big>Pre-Shared-Keys</big></b><br>Authentication is performed using the IP addresses and pre-shared-keys in Csync2. The key file is generated with csync2 -k /etc/csync2/key_hagroup. The file key_hagroup should be copied to all members of the cluster manually after it's created.</p>\n\t"
),
- "read" => _(
- "<p><b><big>Initializing Cluster Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing Cluster Configuration</big></b><br>\n</p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
),
- "write" => _(
- "<p><b><big>Saving cluster Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ "write" => Ops.add(
+ _("<p><b><big>Saving cluster Configuration</big></b><br>\n</p>\n"),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
)
}
end
diff -ur result/country/keyboard/src/include/keyboard/dialogs.rb result-bck/country/keyboard/src/include/keyboard/dialogs.rb
--- result/country/keyboard/src/include/keyboard/dialogs.rb 2013-06-28 13:42:49.656000000 +0200
+++ result-bck/country/keyboard/src/include/keyboard/dialogs.rb 2013-06-28 12:35:52.356000000 +0200
@@ -19,10 +19,13 @@
def KeyboardExpertDialog
ret = :none
- help_text = _(
- "<p>\nHere, fine tune various settings of the keyboard module.\nThese settings are written into the file <tt>/etc/sysconfig/keyboard</tt>.\nIf unsure, use the default values already selected.\n</p>"
- ) + _(
- "<p>Settings made here apply only to the console keyboard. Configure the keyboard for the graphical user interface with another tool, such as SaX.</p>\n"
+ help_text = Ops.add(
+ _(
+ "<p>\nHere, fine tune various settings of the keyboard module.\nThese settings are written into the file <tt>/etc/sysconfig/keyboard</tt>.\nIf unsure, use the default values already selected.\n</p>"
+ ),
+ _(
+ "<p>Settings made here apply only to the console keyboard. Configure the keyboard for the graphical user interface with another tool, such as SaX.</p>\n"
+ )
)
help_text = Ops.add(
help_text,
diff -ur result/country/timezone/src/include/timezone/dialogs.rb result-bck/country/timezone/src/include/timezone/dialogs.rb
--- result/country/timezone/src/include/timezone/dialogs.rb 2013-06-28 13:42:23.680000000 +0200
+++ result-bck/country/timezone/src/include/timezone/dialogs.rb 2013-06-28 12:35:52.352000000 +0200
@@ -136,10 +136,11 @@
def SetTimeDialog
ntp_help_text = Convert.to_string(ntp_call("ui_help_text", {}))
htext = Ops.add(
- _(
- "<p>The current system time and date are displayed. If required, change them to the correct values manually or use Network Time Protocol (NTP).</p>"
- ) + _(
- "<p>Press <b>Accept</b> to save your changes.</p>"
+ Ops.add(
+ _(
+ "<p>The current system time and date are displayed. If required, change them to the correct values manually or use Network Time Protocol (NTP).</p>"
+ ),
+ _("<p>Press <b>Accept</b> to save your changes.</p>")
),
ntp_help_text
)
@@ -604,8 +605,11 @@
)
)
)
- help_text = _("\n<p><b><big>Time Zone and Clock Settings</big></b></p>") + _(
- "<p>\nTo select the time zone to use in your system, first select the <b>Region</b>.\nIn <b>Time Zone</b>, then select the appropriate time zone, country, or \nregion from those available.\n</p>\n"
+ help_text = Ops.add(
+ _("\n<p><b><big>Time Zone and Clock Settings</big></b></p>"),
+ _(
+ "<p>\nTo select the time zone to use in your system, first select the <b>Region</b>.\nIn <b>Time Zone</b>, then select the appropriate time zone, country, or \nregion from those available.\n</p>\n"
+ )
)
if !utc_only
help_text = Ops.add(
diff -ur result/country/timezone/src/modules/Timezone.rb result-bck/country/timezone/src/modules/Timezone.rb
--- result/country/timezone/src/modules/Timezone.rb 2013-06-28 13:42:21.544000000 +0200
+++ result-bck/country/timezone/src/modules/Timezone.rb 2013-06-28 12:35:52.352000000 +0200
@@ -501,7 +501,10 @@
end
clock_setting = _("UTC")
clock_setting = _("Local Time") if @hwclock == "--localtime"
- clock_setting = Ops.add(_("Hardware Clock Set To") + " ", clock_setting)
+ clock_setting = Ops.add(
+ Ops.add(_("Hardware Clock Set To"), " "),
+ clock_setting
+ )
date = GetDateTime(true, true)
Builtins.y2milestone("MakeProposal hwclock %1", @hwclock)
ret = [
@@ -699,7 +702,10 @@
Yast.import("HTML")
clock_setting = _("UTC")
clock_setting = _("Local Time") if @hwclock == "--localtime"
- clock_setting = Ops.add(_("Hardware Clock Set To") + " ", clock_setting)
+ clock_setting = Ops.add(
+ Ops.add(_("Hardware Clock Set To"), " "),
+ clock_setting
+ )
ret = [Builtins.sformat(_("Current Time Zone: %1"), @name), clock_setting]
return HTML.List(ret)
end
diff -ur result/crowbar/src/include/crowbar/helps.rb result-bck/crowbar/src/include/crowbar/helps.rb
--- result/crowbar/src/include/crowbar/helps.rb 2013-06-28 14:02:13.124000000 +0200
+++ result-bck/crowbar/src/include/crowbar/helps.rb 2013-06-28 12:36:16.940000000 +0200
@@ -15,8 +15,11 @@
"write" => _(
"<p><b><big>Saving Crowbar Configuration</big></b><br>\nPlease wait...<br></p>\n"
),
- "overview" => _("<p><b>Crowbar Configuration Overview</b>\n<br></p>") + _(
- "<p>\nSee the SUSE Cloud deployment guide for details on the network\nconfiguration and on using this YaST module.\n</p>"
+ "overview" => Ops.add(
+ _("<p><b>Crowbar Configuration Overview</b>\n<br></p>"),
+ _(
+ "<p>\nSee the SUSE Cloud deployment guide for details on the network\nconfiguration and on using this YaST module.\n</p>"
+ )
)
}
end
diff -ur result/dhcp-server/src/include/dhcp-server/dialogs2.rb result-bck/dhcp-server/src/include/dhcp-server/dialogs2.rb
--- result/dhcp-server/src/include/dhcp-server/dialogs2.rb 2013-06-28 14:03:45.176000000 +0200
+++ result-bck/dhcp-server/src/include/dhcp-server/dialogs2.rb 2013-06-28 12:36:06.572000000 +0200
@@ -355,14 +355,17 @@
def seconds2time(seconds)
unit = "seconds"
count = seconds
- if Ops.modulo(seconds, (60 * 60) * 24) == 0
+ if Ops.modulo(seconds, Ops.multiply(Ops.multiply(60, 60), 24)) == 0
return {
"unit" => "days",
- "count" => Ops.divide(seconds, (60 * 60) * 24)
+ "count" => Ops.divide(seconds, Ops.multiply(Ops.multiply(60, 60), 24))
}
end
- if Ops.modulo(seconds, 60 * 60) == 0
- return { "unit" => "hours", "count" => Ops.divide(seconds, 60 * 60) }
+ if Ops.modulo(seconds, Ops.multiply(60, 60)) == 0
+ return {
+ "unit" => "hours",
+ "count" => Ops.divide(seconds, Ops.multiply(60, 60))
+ }
end
if Ops.modulo(seconds, 60) == 0
return { "unit" => "minutes", "count" => Ops.divide(seconds, 60) }
diff -ur result/dhcp-server/src/include/dhcp-server/dns-helps.rb result-bck/dhcp-server/src/include/dhcp-server/dns-helps.rb
--- result/dhcp-server/src/include/dhcp-server/dns-helps.rb 2013-06-28 14:03:38.844000000 +0200
+++ result-bck/dhcp-server/src/include/dhcp-server/dns-helps.rb 2013-06-28 12:36:06.592000000 +0200
@@ -12,30 +12,51 @@
"<p><b><big>Adding a New Range of DNS Records</big></b><br />\n<b>First IP Address</b> defines\nthe starting address of the range and <b>Last IP Address</b> defines\nthe last one. <b>Hostname Base</b> is a string that determines how hostnames\nare created (such as <tt>dhcp-%i</tt> or <tt>e25-%i-a</tt>).\n<tt>%i</tt> is replaced with the number of the host in the range.\nIf no <tt>%i</tt> is defined, the number is added at the end of the\nstring. <tt>%i</tt> can be used only once in <b>Hostname Base</b>.\n<b>Start</b> defines the first number that is used for the first\nhostname. Hostnames are created incrementally.</p>\n"
)
@DNS_HELPS = {
- "wizard-zones" => (_(
- "<p><b><big>DNS Wizard</big></b><br />\nIn this wizard, create a new DNS zone\ndirectly from the DHCP server configuration. This DNS zone is important\nif you want to identify your DHCP clients by hostname. The DNS zone\ntranslates names to the assigned IP addresses. You can also\ncreate a reverse zone that translates IP addresses to names.</p>\n"
- ) + _(
- "<p><b>New Zone Name</b> or <b>Reverse Zone Name</b>\nare taken from your current DHCP server and network settings and cannot be changed.</p>\n"
- )) + _(
- "<p>Select <b>Also Create Reverse Zone</b> to create a zone \nto contain reverse entries of the main DNS zone.</p>\n"
+ "wizard-zones" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>DNS Wizard</big></b><br />\nIn this wizard, create a new DNS zone\ndirectly from the DHCP server configuration. This DNS zone is important\nif you want to identify your DHCP clients by hostname. The DNS zone\ntranslates names to the assigned IP addresses. You can also\ncreate a reverse zone that translates IP addresses to names.</p>\n"
+ ),
+ _(
+ "<p><b>New Zone Name</b> or <b>Reverse Zone Name</b>\nare taken from your current DHCP server and network settings and cannot be changed.</p>\n"
+ )
+ ),
+ _(
+ "<p>Select <b>Also Create Reverse Zone</b> to create a zone \nto contain reverse entries of the main DNS zone.</p>\n"
+ )
),
- "wizard-nameservers" => ((_(
- "<p><big><b>Name Servers</b></big><br />\nName servers are needed for proper DNS server functionality.\nThey administer all the DNS zone records.</p>\n"
- ) + _(
- "<p><b><big>DNS Queries</big></b><br />\nEvery DNS query (for example searching an IP address for a\nhostname in a DNS zone) first asks the parent zone\n(<tt>com</tt> for <tt>example.com</tt>) for the current zone\nname servers. Then it sends a DNS query to these name servers requesting\nthe desired IP address.<br />\nTherefore, always specify the current DNS server hostname as one of\nthe zone name servers.</p>\n"
- )) + _(
- "<p>To add a <b>New Name Server</b>, click <b>Add</b>, complete the form,\nthen click <b>Ok</b>. If the new name server name is included in the current\nDNS zone, also enter its IP address. This is mandatory because it is used\nduring the zone creation.</p>\n"
- )) + _(
- "<p>To edit or delete an entry, select it and click\n<b>Edit</b> or <b>Delete</b>.</p>\n"
+ "wizard-nameservers" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><big><b>Name Servers</b></big><br />\nName servers are needed for proper DNS server functionality.\nThey administer all the DNS zone records.</p>\n"
+ ),
+ _(
+ "<p><b><big>DNS Queries</big></b><br />\nEvery DNS query (for example searching an IP address for a\nhostname in a DNS zone) first asks the parent zone\n(<tt>com</tt> for <tt>example.com</tt>) for the current zone\nname servers. Then it sends a DNS query to these name servers requesting\nthe desired IP address.<br />\nTherefore, always specify the current DNS server hostname as one of\nthe zone name servers.</p>\n"
+ )
+ ),
+ _(
+ "<p>To add a <b>New Name Server</b>, click <b>Add</b>, complete the form,\nthen click <b>Ok</b>. If the new name server name is included in the current\nDNS zone, also enter its IP address. This is mandatory because it is used\nduring the zone creation.</p>\n"
+ )
+ ),
+ _(
+ "<p>To edit or delete an entry, select it and click\n<b>Edit</b> or <b>Delete</b>.</p>\n"
+ )
),
"wizard-ranges" => Ops.add(
Ops.add(
- (_(
- "<p><b><big>DNS Records</big></b><br />\nDefine DNS hostnames for all DHCP clients. You do not need to define\nall hostnames one by one. Set simple rules for how\nthe hostnames are created. These rules define the ranges of IP addresses to use\nand the string from which hostnames are generated for a range.</p>\n"
- ) + _(
- "<p><b><big>Range of DNS Records</big></b><br />\nFor example, create a set of hostnames from <tt>dhcp-133-a</tt>\nto <tt>dhcp-233-a</tt> with IP addresses from <tt>192.168.5.88</tt>\nto <tt>192.168.5.188</tt>.</p>\n"
- )) + _(
- "<p>To add a new range of DNS records, click <b>Add</b>,\ncomplete the form, then click <b>Ok</b>.</p>\n"
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>DNS Records</big></b><br />\nDefine DNS hostnames for all DHCP clients. You do not need to define\nall hostnames one by one. Set simple rules for how\nthe hostnames are created. These rules define the ranges of IP addresses to use\nand the string from which hostnames are generated for a range.</p>\n"
+ ),
+ _(
+ "<p><b><big>Range of DNS Records</big></b><br />\nFor example, create a set of hostnames from <tt>dhcp-133-a</tt>\nto <tt>dhcp-233-a</tt> with IP addresses from <tt>192.168.5.88</tt>\nto <tt>192.168.5.188</tt>.</p>\n"
+ )
+ ),
+ _(
+ "<p>To add a new range of DNS records, click <b>Add</b>,\ncomplete the form, then click <b>Ok</b>.</p>\n"
+ )
),
@new_range_help
),
@@ -43,20 +64,32 @@
"<p>To edit or delete an entry, select it and click\n<b>Edit</b> or <b>Delete</b>.</p>\n"
)
),
- "wizard-summary" => _(
- "<p>This is a summary of all data\nentered in the configuration wizard so far.</p>\n"
- ) + _(
- "<p>Click <b>Accept</b> to save the settings for\nthe DNS server and return to the DHCP server configuration.\nThe settings are not saved permanently until you complete the \nDHCP server configuration.</p>\n"
+ "wizard-summary" => Ops.add(
+ _(
+ "<p>This is a summary of all data\nentered in the configuration wizard so far.</p>\n"
+ ),
+ _(
+ "<p>Click <b>Accept</b> to save the settings for\nthe DNS server and return to the DHCP server configuration.\nThe settings are not saved permanently until you complete the \nDHCP server configuration.</p>\n"
+ )
),
"edit-current-settings" => Ops.add(
- ((_(
- "<p><b><big>DNS Synchronization</big></b><br />\nThis is an advanced tool for editing DNS server settings to match your\nDHCP settings. Only 'A' records--DNS records that convert hostnames to\nIP addresses--are maintained here.</p>\n"
- ) + _(
- "<b>Current Subnet</b> and <b>Netmask</b> show the current network settings.\n<b>Domain</b> is taken from the current DHCP configuration.\n<b>First IP Address</b> and <b>Second IP Address</b> match the current\nDynamic DHCP range.</p>\n"
- )) + _(
- "<p>\nTo create a DNS zone from scratch, use <b>Run Wizard</b>\nfrom <b>Special Tasks</b>.</p>\n"
- )) + _(
- "<p>\n To create or remove a single DNS record,\nclick <b>Add</b> or <b>Delete</b>.\nTo synchronize the DNS entries with their reverse forms in the corresponding\nreverse zone, select <b>Synchronize with Reverse Zone</b>.\nUse <b>Remove DNS Records Matching Range</b> \nfrom <b>Special Tasks</b> to delete any information relating to this range of IP addresses from the DNS server. To create a new range of DNS records, select\n<b>Add New Range of DNS Records</b> from <b>Special Tasks</b>.</p>\n"
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>DNS Synchronization</big></b><br />\nThis is an advanced tool for editing DNS server settings to match your\nDHCP settings. Only 'A' records--DNS records that convert hostnames to\nIP addresses--are maintained here.</p>\n"
+ ),
+ _(
+ "<b>Current Subnet</b> and <b>Netmask</b> show the current network settings.\n<b>Domain</b> is taken from the current DHCP configuration.\n<b>First IP Address</b> and <b>Second IP Address</b> match the current\nDynamic DHCP range.</p>\n"
+ )
+ ),
+ _(
+ "<p>\nTo create a DNS zone from scratch, use <b>Run Wizard</b>\nfrom <b>Special Tasks</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p>\n To create or remove a single DNS record,\nclick <b>Add</b> or <b>Delete</b>.\nTo synchronize the DNS entries with their reverse forms in the corresponding\nreverse zone, select <b>Synchronize with Reverse Zone</b>.\nUse <b>Remove DNS Records Matching Range</b> \nfrom <b>Special Tasks</b> to delete any information relating to this range of IP addresses from the DNS server. To create a new range of DNS records, select\n<b>Add New Range of DNS Records</b> from <b>Special Tasks</b>.</p>\n"
+ )
),
@new_range_help
)
diff -ur result/dhcp-server/src/include/dhcp-server/dns-server-dialogs.rb result-bck/dhcp-server/src/include/dhcp-server/dns-server-dialogs.rb
--- result/dhcp-server/src/include/dhcp-server/dns-server-dialogs.rb 2013-06-28 14:03:36.900000000 +0200
+++ result-bck/dhcp-server/src/include/dhcp-server/dns-server-dialogs.rb 2013-06-28 12:36:06.592000000 +0200
@@ -363,14 +363,16 @@
)
UI.SetFocus(Id("hostname_base"))
Report.Error(
- Ops.add(_("Invalid hostname.") + "\n\n", Hostname.ValidHost)
+ Ops.add(Ops.add(_("Invalid hostname."), "\n\n"), Hostname.ValidHost)
)
return nil
end
first_ip = Convert.to_string(UI.QueryWidget(Id("first_ip"), :Value))
if !IP.Check4(first_ip)
UI.SetFocus(Id("first_ip"))
- Report.Error(Ops.add(_("Invalid IP address.") + "\n\n", IP.Valid4))
+ Report.Error(
+ Ops.add(Ops.add(_("Invalid IP address."), "\n\n"), IP.Valid4)
+ )
return nil
end
if !IPisInRangeOfIPs(
@@ -393,7 +395,9 @@
last_ip = Convert.to_string(UI.QueryWidget(Id("last_ip"), :Value))
if !IP.Check4(last_ip)
UI.SetFocus(Id("last_ip"))
- Report.Error(Ops.add(_("Invalid IP address.") + "\n\n", IP.Valid4))
+ Report.Error(
+ Ops.add(Ops.add(_("Invalid IP address."), "\n\n"), IP.Valid4)
+ )
return nil
end
if !IPisInRangeOfIPs(
diff -ur result/dhcp-server/src/include/dhcp-server/dns-server-management.rb result-bck/dhcp-server/src/include/dhcp-server/dns-server-management.rb
--- result/dhcp-server/src/include/dhcp-server/dns-server-management.rb 2013-06-28 14:03:23.220000000 +0200
+++ result-bck/dhcp-server/src/include/dhcp-server/dns-server-management.rb 2013-06-28 12:36:06.596000000 +0200
@@ -181,14 +181,19 @@
if !Hostname.Check(new_hostname)
UI.SetFocus(Id("new_hostname"))
Report.Error(
- Ops.add(_("Invalid hostname.") + "\n\n", Hostname.ValidHost)
+ Ops.add(
+ Ops.add(_("Invalid hostname."), "\n\n"),
+ Hostname.ValidHost
+ )
)
next
end
new_ip = Convert.to_string(UI.QueryWidget(Id("new_ip"), :Value))
if !IP.Check4(new_ip)
UI.SetFocus(Id("new_ip"))
- Report.Error(Ops.add(_("Invalid IP address.") + "\n\n", IP.Valid4))
+ Report.Error(
+ Ops.add(Ops.add(_("Invalid IP address."), "\n\n"), IP.Valid4)
+ )
next
end
func_ret = DnsServerAPI.AddZoneRR(
@@ -299,13 +304,17 @@
first_ip = Convert.to_string(UI.QueryWidget(Id("first_ip"), :Value))
if !IP.Check4(first_ip)
UI.SetFocus(Id("first_ip"))
- Report.Error(Ops.add(_("Invalid IP address.") + "\n\n", IP.Valid4))
+ Report.Error(
+ Ops.add(Ops.add(_("Invalid IP address."), "\n\n"), IP.Valid4)
+ )
next
end
last_ip = Convert.to_string(UI.QueryWidget(Id("last_ip"), :Value))
if !IP.Check4(last_ip)
UI.SetFocus(Id("last_ip"))
- Report.Error(Ops.add(_("Invalid IP address.") + "\n\n", IP.Valid4))
+ Report.Error(
+ Ops.add(Ops.add(_("Invalid IP address."), "\n\n"), IP.Valid4)
+ )
next
end
first_ip_list = Builtins.maplist(Builtins.splitstring(first_ip, ".")) { |ip_part|
diff -ur result/dhcp-server/src/include/dhcp-server/dns-server-wizard.rb result-bck/dhcp-server/src/include/dhcp-server/dns-server-wizard.rb
--- result/dhcp-server/src/include/dhcp-server/dns-server-wizard.rb 2013-06-28 14:03:15.200000000 +0200
+++ result-bck/dhcp-server/src/include/dhcp-server/dns-server-wizard.rb 2013-06-28 12:36:06.608000000 +0200
@@ -164,7 +164,10 @@
if !Hostname.CheckDomain(hostname_check)
UI.SetFocus(Id("nameserver"))
Report.Error(
- Ops.add("Invalid hostname." + "\n\n", Hostname.ValidDomain)
+ Ops.add(
+ Ops.add("Invalid hostname.", "\n\n"),
+ Hostname.ValidDomain
+ )
)
next
end
@@ -183,7 +186,9 @@
end
if (new_selected_ip != "") && !IP.Check4(new_selected_ip)
UI.SetFocus(Id("ip"))
- Report.Error(Ops.add("Invalid IP address." + "\n\n", IP.Valid4))
+ Report.Error(
+ Ops.add(Ops.add("Invalid IP address.", "\n\n"), IP.Valid4)
+ )
next
end
if (new_selected_ip == "") && Builtins.regexpmatch(
diff -ur result/dhcp-server/src/include/dhcp-server/helps.rb result-bck/dhcp-server/src/include/dhcp-server/helps.rb
--- result/dhcp-server/src/include/dhcp-server/helps.rb 2013-06-28 14:03:37.920000000 +0200
+++ result-bck/dhcp-server/src/include/dhcp-server/helps.rb 2013-06-28 12:36:06.580000000 +0200
@@ -30,10 +30,13 @@
"ldap_support" => _(
"<p>\nTo store the DHCP configuration in LDAP,\nenable <b>LDAP Support</b>.</p>"
),
- "configtree" => _(
- "<p><b>Configured Declarations</b> shows the configuration options in use.\nTo modify an existing declaration, select it and click <b>Edit</b>.\nTo add a new declaration, select a declaration that should include\nthe new declaration and click <b>Add</b>.\nTo delete a declaration, select it and click <b>Delete</b>.</p>"
- ) + _(
- "<p><b><big>Advanced Functions</big></b><br>\nUse <b>Advanced</b> to display the log of the DHCP server,\nchange network interfaces to which the DHCP server listens,\nor manage TSIG keys that can be used for authentication of \ndynamic DNS updates.</p>"
+ "configtree" => Ops.add(
+ _(
+ "<p><b>Configured Declarations</b> shows the configuration options in use.\nTo modify an existing declaration, select it and click <b>Edit</b>.\nTo add a new declaration, select a declaration that should include\nthe new declaration and click <b>Add</b>.\nTo delete a declaration, select it and click <b>Delete</b>.</p>"
+ ),
+ _(
+ "<p><b><big>Advanced Functions</big></b><br>\nUse <b>Advanced</b> to display the log of the DHCP server,\nchange network interfaces to which the DHCP server listens,\nor manage TSIG keys that can be used for authentication of \ndynamic DNS updates.</p>"
+ )
),
"subnet" => _(
"<p><b><big>Subnet Configuration</big></b><br>\nSet the <b>Network Address</b> and <b>Network Mask</b> of the subnet.</p>"
@@ -59,12 +62,18 @@
"dyn_dns_button" => _(
"<p>\nTo adjust dynamic DNS for hosts of this subnet, use <b>Dynamic DNS</b>.</p>"
),
- "enable_ddns" => (_(
- "<p><b><big>Enabling Dynamic DNS</big></b><br>\nTo enable Dynamic DNS updates for this subnet, set\n<b>Enable Dynamic DNS for This Subnet</b>.</p>"
- ) + _(
- "<p><b><big>TSIG Key</big></b><br>\nTo make Dynamic DNS updates, the authentication key must be set. Use\n<b>TSIG Key</b> to select the key to use for authentication. The key must\nbe the same for both DHCP and DNS servers. Specify the key for both forward\nand reverse zone.</p>"
- )) + _(
- "<p><b><big>Global DHCP Server Settings</big></b><br>\nGlobal settings of DHCP server must be updated to make Dynamic\nDNS work properly. To do it automatically, set\n<b>Update Global Dynamic DNS Settings</b>.</p>"
+ "enable_ddns" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Enabling Dynamic DNS</big></b><br>\nTo enable Dynamic DNS updates for this subnet, set\n<b>Enable Dynamic DNS for This Subnet</b>.</p>"
+ ),
+ _(
+ "<p><b><big>TSIG Key</big></b><br>\nTo make Dynamic DNS updates, the authentication key must be set. Use\n<b>TSIG Key</b> to select the key to use for authentication. The key must\nbe the same for both DHCP and DNS servers. Specify the key for both forward\nand reverse zone.</p>"
+ )
+ ),
+ _(
+ "<p><b><big>Global DHCP Server Settings</big></b><br>\nGlobal settings of DHCP server must be updated to make Dynamic\nDNS work properly. To do it automatically, set\n<b>Update Global Dynamic DNS Settings</b>.</p>"
+ )
),
"ddns_zones" => _(
"<p><b><big>Zones to Update</big></b><br>\nSpecify forward and reverse zones to update. For both, also specify \ntheir primary name server. If the name server runs on the same host as the DHCP\nserver, you can leave the fields empty.</p>"
@@ -78,31 +87,61 @@
"ldap_server_name" => _(
"Optionally, you can also specify <b>DHCP Server Name</b>\n(the name of dhcpServer LDAP object), if it differs from your hostname.\n"
),
- "global_settings" => ((((((_(
- "<p><b><big>Global Settings</big></b><br>\nHere, make several DHCP settings.</p>"
- ) + _(
- "<p><b>Domain Name</b> sets the domain for which the DHCP server\nleases IPs to clients.</p>"
- )) + _(
- "<p><b>Primary Name Server IP</b> and <b>Secondary Name Server IP</b> \noffer these name servers to the DHCP clients.\nThese values must be IP addresses.</p>"
- )) + _(
- "<p><b>Default Gateway</b> inserts this\nvalue as the default route in the routing table of clients.</p>"
- )) + _(
- "<p><b>Time Server</b> tells clients to use this server\nfor time synchronization.</p>"
- )) + _(
- "<p><b>Print Server</b> offers this server as the default print server.</p>"
- )) + _(
- "<p><b>WINS Server</b> offers this server as the WINS server\n(Windows Internet Naming Service).</p>"
- )) + _(
- "<p><b>Default Lease Time</b> sets the time after which the leased IP expires\nand the client must ask for an IP again.</p>"
- ),
- "dynamic_dhcp" => ((_(
- "<p><b><big>Subnet Information</big></b></br>\nView information about the current subnet, such as its address,\nnetmask, minimum and maximum IP addresses available for the clients.\n</p>\n"
- ) + _(
- "<p><b><big>IP Address Range</big></b><br>\nSet the <b>First IP Address</b> and the <b>Last IP Address</b>\nof the address range to be leased to clients. These addresses must have the same netmask.\nFor instance, <tt>192.168.1.1</tt> and <tt>192.168.1.64</tt>. Check the <b>\nAllow Dynamic BOOTP</b> flag if the specified range may be dynamically\nassigned to BOOTP clients as well as DHCP clients</p>.\n"
- )) + _(
- "<p><b><big>Lease Time</big></b><br>\nSet the <b>Default</b> lease time for the current IP address range,\nwhich sets the optimal IP refreshing time for clients.<br></p>"
- )) + _(
- "<p><b>Maximum</b> (optional value) sets the maximum time period\nfor which this IP is blocked for the client on the DHCP server.</p>"
+ "global_settings" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Global Settings</big></b><br>\nHere, make several DHCP settings.</p>"
+ ),
+ _(
+ "<p><b>Domain Name</b> sets the domain for which the DHCP server\nleases IPs to clients.</p>"
+ )
+ ),
+ _(
+ "<p><b>Primary Name Server IP</b> and <b>Secondary Name Server IP</b> \noffer these name servers to the DHCP clients.\nThese values must be IP addresses.</p>"
+ )
+ ),
+ _(
+ "<p><b>Default Gateway</b> inserts this\nvalue as the default route in the routing table of clients.</p>"
+ )
+ ),
+ _(
+ "<p><b>Time Server</b> tells clients to use this server\nfor time synchronization.</p>"
+ )
+ ),
+ _(
+ "<p><b>Print Server</b> offers this server as the default print server.</p>"
+ )
+ ),
+ _(
+ "<p><b>WINS Server</b> offers this server as the WINS server\n(Windows Internet Naming Service).</p>"
+ )
+ ),
+ _(
+ "<p><b>Default Lease Time</b> sets the time after which the leased IP expires\nand the client must ask for an IP again.</p>"
+ )
+ ),
+ "dynamic_dhcp" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Subnet Information</big></b></br>\nView information about the current subnet, such as its address,\nnetmask, minimum and maximum IP addresses available for the clients.\n</p>\n"
+ ),
+ _(
+ "<p><b><big>IP Address Range</big></b><br>\nSet the <b>First IP Address</b> and the <b>Last IP Address</b>\nof the address range to be leased to clients. These addresses must have the same netmask.\nFor instance, <tt>192.168.1.1</tt> and <tt>192.168.1.64</tt>. Check the <b>\nAllow Dynamic BOOTP</b> flag if the specified range may be dynamically\nassigned to BOOTP clients as well as DHCP clients</p>.\n"
+ )
+ ),
+ _(
+ "<p><b><big>Lease Time</big></b><br>\nSet the <b>Default</b> lease time for the current IP address range,\nwhich sets the optimal IP refreshing time for clients.<br></p>"
+ )
+ ),
+ _(
+ "<p><b>Maximum</b> (optional value) sets the maximum time period\nfor which this IP is blocked for the client on the DHCP server.</p>"
+ )
),
"all_settings_button" => _(
"<p><b><big>Expert Configuration</big></b><br>\nTo enter the complete configuration of the DHCP server, click\n<b>DHCP Server Expert Configuration</b>.</p>"
@@ -110,12 +149,18 @@
"interfaces" => _(
"<p><b><big>Network Interfaces</big></b><br>\nSelect the network interfaces to which the DHCP server should listen from\n<b>Available Interfaces</b>.</p>"
),
- "host_management" => (_(
- "<p><b><big>Host Management</big></b><br>\nUse this dialog to edit hosts with static address binding.</p>"
- ) + _(
- "<p>To add a new new host, set its <b>Name</b>,\n<b>Hardware Address</b>, and <b>IP Address</b>\nthen click <b>Add</b>.</p>\n<p>To modify a configured host, select it in the table,\nchange all values, and click <b>Change in List</b>.</p>"
- )) + _(
- "<p>To remove a host, select it and click <b>Delete from List</b>.</p>"
+ "host_management" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Host Management</big></b><br>\nUse this dialog to edit hosts with static address binding.</p>"
+ ),
+ _(
+ "<p>To add a new new host, set its <b>Name</b>,\n<b>Hardware Address</b>, and <b>IP Address</b>\nthen click <b>Add</b>.</p>\n<p>To modify a configured host, select it in the table,\nchange all values, and click <b>Change in List</b>.</p>"
+ )
+ ),
+ _(
+ "<p>To remove a host, select it and click <b>Delete from List</b>.</p>"
+ )
)
}
end
diff -ur result/dns-server/src/include/dns-server/dialog-installwizard.rb result-bck/dns-server/src/include/dns-server/dialog-installwizard.rb
--- result/dns-server/src/include/dns-server/dialog-installwizard.rb 2013-06-28 14:02:35.212000000 +0200
+++ result-bck/dns-server/src/include/dns-server/dialog-installwizard.rb 2013-06-28 12:35:56.792000000 +0200
@@ -23,7 +23,10 @@
end
def runInstallWizardForwardersDialog
- caption = (_("DNS Server Installation") + ": ") + _("Forwarder Settings")
+ caption = Ops.add(
+ Ops.add(_("DNS Server Installation"), ": "),
+ _("Forwarder Settings")
+ )
contents = ExpertForwardersDialog()
Wizard.SetContentsButtons(
caption,
@@ -66,7 +69,10 @@
end
def runInstallWizardZonesDialog
- caption = (_("DNS Server Installation") + ": ") + _("DNS Zones")
+ caption = Ops.add(
+ Ops.add(_("DNS Server Installation"), ": "),
+ _("DNS Zones")
+ )
Wizard.SetContentsButtons(
caption,
ExpertZonesDialog(),
@@ -121,7 +127,10 @@
end
def runInstallWizardFinishDialog
- caption = (_("DNS Server Installation") + ": ") + _("Finish Wizard")
+ caption = Ops.add(
+ Ops.add(_("DNS Server Installation"), ": "),
+ _("Finish Wizard")
+ )
ReadForwarders()
fw = Builtins.mergestring(DnsServerUI.forwarders, ", ")
zones = DnsServer.FetchZones
diff -ur result/dns-server/src/include/dns-server/dialog-main.rb result-bck/dns-server/src/include/dns-server/dialog-main.rb
--- result/dns-server/src/include/dns-server/dialog-main.rb 2013-06-28 14:02:30.024000000 +0200
+++ result-bck/dns-server/src/include/dns-server/dialog-main.rb 2013-06-28 12:35:56.792000000 +0200
@@ -939,7 +939,10 @@
Report.Error(
Ops.add(
Ops.add(
- Ops.add(_("Invalid IPv4 or IPv6 address.") + "\n", IP.Valid4),
+ Ops.add(
+ Ops.add(_("Invalid IPv4 or IPv6 address."), "\n"),
+ IP.Valid4
+ ),
"\n"
),
_(
diff -ur result/dns-server/src/include/dns-server/helps.rb result-bck/dns-server/src/include/dns-server/helps.rb
--- result/dns-server/src/include/dns-server/helps.rb 2013-06-28 14:02:45.836000000 +0200
+++ result-bck/dns-server/src/include/dns-server/helps.rb 2013-06-28 12:35:56.788000000 +0200
@@ -10,15 +10,21 @@
textdomain "dns-server"
Yast.import("DnsServer")
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing DNS Server Configuration</big></b><br>\nPlease wait...<br></p>"
- ) + _(
- "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>"
- ),
- "write" => _(
- "<p><b><big>Saving DNS Server Configuration</big></b><br>\nPlease wait...<br></p>"
- ) + _(
- "<p><b><big>Aborting Saving</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs you whether it is safe to do so.</p>"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing DNS Server Configuration</big></b><br>\nPlease wait...<br></p>"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving DNS Server Configuration</big></b><br>\nPlease wait...<br></p>"
+ ),
+ _(
+ "<p><b><big>Aborting Saving</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs you whether it is safe to do so.</p>"
+ )
),
"start" => _(
"<p><b><big>Start DNS Server</big></b><br>\nTo run the DNS server every time your computer is started, set\n<b>Start DNS Server</b>.</p>"
@@ -38,10 +44,13 @@
"allow_ddns" => _(
"<p><b><big>Dynamic DNS Zone Updates</big></b><br>\nThe zone can be updated automatically, usually because of dynamically\nassigned IP addresses by DHCP server. To allow DDNS updates, set\n<b>Allow Dynamic Updates</b> and the <b>TSIG Key</b>\nto use for authentication. The key must be the same for\nboth DHCP and DNS servers.</p>"
),
- "master_zone" => _(
- "<p><b><big>Editing a DNS Zone</big></b><br>\nTo edit the zone settings, choose the appropriate\nentry of the table then click <b>Edit</b>.</p>"
- ) + _(
- "<p>To add a new record to the zone, click <b>Add</b>. To remove\na record, select it and click <b>Delete</b>.</p>"
+ "master_zone" => Ops.add(
+ _(
+ "<p><b><big>Editing a DNS Zone</big></b><br>\nTo edit the zone settings, choose the appropriate\nentry of the table then click <b>Edit</b>.</p>"
+ ),
+ _(
+ "<p>To add a new record to the zone, click <b>Add</b>. To remove\na record, select it and click <b>Delete</b>.</p>"
+ )
),
"soa_button" => _(
"<p><b><big>SOA Record</big></b><br>\nTo edit the SOA (Start of Authority) record of the zone, click\n<b>Edit SOA</b>.</p>"
@@ -61,75 +70,132 @@
"adapt_firewall" => _(
"<p><b><big>Adapting Firewall Settings</big></b><br>\nTo adapt the firewall settings so that the DNS server can be accessed\nvia all network interfaces to which it listens, check\n<b>Adapt Firewall Settings</b>.</p>\n"
),
- "soa" => (((((((_(
- "<p><b><big>SOA Record Configuration</big></b><br>\nSet the entries of the SOA record.</p>"
- ) + _(
- "<p><b>$TTL</b> specifies the time to live for all records in the\nzone that do not have an explicit TTL.</p>"
- )) + _(
- "<p><b>Primary Source</b> must contain the fully qualified domain name\nof the primary name server.</p>"
- )) + _(
- "<p><b>Administrator's Mail</b> must contain the e-mail address of\nthe administrator responsible for the zone.</p>\n"
- )) + _(
- "<p><b>Serial</b> number is used for determining if the zone has changed on\nthe master servers (so that slave servers do not always need to synchronize the\nentire zone).</p>\n"
- )) + _(
- "<p><b>Refresh</b> sets how often the zone should be synchronized from\nmaster name server to slave name servers.</p>"
- )) + _(
- "<p><b>Retry</b> sets how often slave servers try to synchronize\nthe zone from the master server if synchronization fails.</p>"
- )) + _(
- "<p><b>Expiry</b> means the period after which the zone expires on slave\nservers and slave servers stop answering replies until it is synchronized.\n</p>"
- )) + _(
- "<p><b>Minimum</b> sets for how long the slave servers should cache\nnegative answers (name resolution failed).</p>"
+ "soa" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>SOA Record Configuration</big></b><br>\nSet the entries of the SOA record.</p>"
+ ),
+ _(
+ "<p><b>$TTL</b> specifies the time to live for all records in the\nzone that do not have an explicit TTL.</p>"
+ )
+ ),
+ _(
+ "<p><b>Primary Source</b> must contain the fully qualified domain name\nof the primary name server.</p>"
+ )
+ ),
+ _(
+ "<p><b>Administrator's Mail</b> must contain the e-mail address of\nthe administrator responsible for the zone.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Serial</b> number is used for determining if the zone has changed on\nthe master servers (so that slave servers do not always need to synchronize the\nentire zone).</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Refresh</b> sets how often the zone should be synchronized from\nmaster name server to slave name servers.</p>"
+ )
+ ),
+ _(
+ "<p><b>Retry</b> sets how often slave servers try to synchronize\nthe zone from the master server if synchronization fails.</p>"
+ )
+ ),
+ _(
+ "<p><b>Expiry</b> means the period after which the zone expires on slave\nservers and slave servers stop answering replies until it is synchronized.\n</p>"
+ )
+ ),
+ _(
+ "<p><b>Minimum</b> sets for how long the slave servers should cache\nnegative answers (name resolution failed).</p>"
+ )
),
"ddns_keys" => _(
"<p><b><big>TSIG Key Management</big></b><br>\nDefine TSIG keys used for dynamic zone updates.\nTo add a new TSIG key, use the \n<b>File Name</b> text field or the <b>Browse</b> button then click <b>Add</b>.\nTo delete an existing TSIG key, select it in the list and click <b>Delete</b>.\n</p>"
),
- "start_up" => (_(
- "<p><b><big>Booting</big></b><br>\nTo start the DNS server every time your computer is booted, set\n<b>On</b>. Otherwise set <b>Off</b>.</p> "
- ) + (DnsServer.ExpertUI(
- ) ? _(
- "<p><b><big>LDAP Support</big></b><br>\nTo store the DNS zones in LDAP instead of native configuration files,\nset <b>LDAP Support Active</b>.</p>"
- ) : "")) + _(
- "<p><b><big>Switch On or Off</big></b><br>\nTo start or stop the DNS server immediately, use \n<b>Start DNS Server Now</b> or\n<b>Stop DNS Server Now</b>.</p>\n"
- ),
- "forwarders" => _(
- "<p><b><big>Forwarders</big></b><br>\nForwarders are DNS servers to which your DNS server should send queries\nit cannot answer.</p>\n"
- ) + _(
- "<p>To add a new forwarder, set its <b>IP Address</b> and click <b>Add</b>.\nTo delete a configured forwarder, select it and click <b>Delete</b>.</p>"
- ),
- "basic_options" => (_(
- "<p><b><big>Edit DNS Server Options</big></b><br>\nUse this dialog to edit options of the DNS server.</p>"
- ) + _(
- "<p>To add new options, select the <b>Option</b>,\nenter its <b>Value</b>, and click <b>Add</b>.</p>\n<p>To modify a configured option, select it in the table,\nchange the <b>Value</b>, and click <b>Change</b>.</p>\n"
- )) + _(
- "<p>To remove an option, select it and click <b>Delete</b>.</p>"
- ),
- "logging" => (_(
- "<p><b><big>Logging</big></b><br>\nUse this dialog to define various options of the DNS server logging.</p>"
- ) + _(
- "<p>\nSelect <b>Log to System Log</b> to save DNS server log messages to the system log. \nTo save the DNS server log messages to a separate file, select \n<b>Log to File</b> and set the <b>Filename</b> to which to save the log and \nthe <b>Maximum Size</b> of the log file.\nThe DNS server automatically rotates the log files. Use <b>Maximum Versions</b>\nto specify how many log files should be saved.</p>\n"
- )) + _(
- "<p>In <b>Additional Logging</b>,\nset which actions should be logged. Common actions are always logged.\n<b>Log All DNS Queries</b> logs all queries from clients to the DNS server.\n<b>Log Zone Updates</b> logs when DNS has been updated.\n<b>Log Zone Transfers</b> logs when zone is completely transferred to the \nsecondary\nname server.</p>\n"
- ),
- "acls" => _(
- "<p><b><big>ACLs</big></b><br>\nIn this dialog, define access control lists to control\naccess to zones.</p>\n"
- ) + _(
- "<p>To add a new ACL entry, just enter the option's <b>Name</b>\nand <b>Value</b> then click <b>Add</b>. To remove an \nACL entry, select it and click <b>Delete</b>.</p>\n"
- ),
- "keys" => (_(
- "<p><b><big>TSIG Keys</big></b><br>\nTSIG keys are used for authentication when remotely\nchanging the configuration of the DNS server. This is needed\nfor the dynamic updates of DNS zones (DDNS).</p>\n"
- ) + _(
- "<p>To add an already created key, set the <b>Filename</b>\n(or use the <b>Browse</b> button to select it) and click <b>Add</b>.\nTo generate a new key, enter the <b>Filename</b> and the <b>Key ID</b>\nthen click <b>Generate</b>. The new key will be generated and also added.</p>\n"
- )) + _(
- "<p>To remove an existing key, select it and\nclick <b>Delete</b>.</p>"
+ "start_up" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Booting</big></b><br>\nTo start the DNS server every time your computer is booted, set\n<b>On</b>. Otherwise set <b>Off</b>.</p> "
+ ),
+ DnsServer.ExpertUI ? _(
+ "<p><b><big>LDAP Support</big></b><br>\nTo store the DNS zones in LDAP instead of native configuration files,\nset <b>LDAP Support Active</b>.</p>"
+ ) : ""
+ ),
+ _(
+ "<p><b><big>Switch On or Off</big></b><br>\nTo start or stop the DNS server immediately, use \n<b>Start DNS Server Now</b> or\n<b>Stop DNS Server Now</b>.</p>\n"
+ )
+ ),
+ "forwarders" => Ops.add(
+ _(
+ "<p><b><big>Forwarders</big></b><br>\nForwarders are DNS servers to which your DNS server should send queries\nit cannot answer.</p>\n"
+ ),
+ _(
+ "<p>To add a new forwarder, set its <b>IP Address</b> and click <b>Add</b>.\nTo delete a configured forwarder, select it and click <b>Delete</b>.</p>"
+ )
+ ),
+ "basic_options" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Edit DNS Server Options</big></b><br>\nUse this dialog to edit options of the DNS server.</p>"
+ ),
+ _(
+ "<p>To add new options, select the <b>Option</b>,\nenter its <b>Value</b>, and click <b>Add</b>.</p>\n<p>To modify a configured option, select it in the table,\nchange the <b>Value</b>, and click <b>Change</b>.</p>\n"
+ )
+ ),
+ _("<p>To remove an option, select it and click <b>Delete</b>.</p>")
+ ),
+ "logging" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Logging</big></b><br>\nUse this dialog to define various options of the DNS server logging.</p>"
+ ),
+ _(
+ "<p>\nSelect <b>Log to System Log</b> to save DNS server log messages to the system log. \nTo save the DNS server log messages to a separate file, select \n<b>Log to File</b> and set the <b>Filename</b> to which to save the log and \nthe <b>Maximum Size</b> of the log file.\nThe DNS server automatically rotates the log files. Use <b>Maximum Versions</b>\nto specify how many log files should be saved.</p>\n"
+ )
+ ),
+ _(
+ "<p>In <b>Additional Logging</b>,\nset which actions should be logged. Common actions are always logged.\n<b>Log All DNS Queries</b> logs all queries from clients to the DNS server.\n<b>Log Zone Updates</b> logs when DNS has been updated.\n<b>Log Zone Transfers</b> logs when zone is completely transferred to the \nsecondary\nname server.</p>\n"
+ )
+ ),
+ "acls" => Ops.add(
+ _(
+ "<p><b><big>ACLs</big></b><br>\nIn this dialog, define access control lists to control\naccess to zones.</p>\n"
+ ),
+ _(
+ "<p>To add a new ACL entry, just enter the option's <b>Name</b>\nand <b>Value</b> then click <b>Add</b>. To remove an \nACL entry, select it and click <b>Delete</b>.</p>\n"
+ )
+ ),
+ "keys" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>TSIG Keys</big></b><br>\nTSIG keys are used for authentication when remotely\nchanging the configuration of the DNS server. This is needed\nfor the dynamic updates of DNS zones (DDNS).</p>\n"
+ ),
+ _(
+ "<p>To add an already created key, set the <b>Filename</b>\n(or use the <b>Browse</b> button to select it) and click <b>Add</b>.\nTo generate a new key, enter the <b>Filename</b> and the <b>Key ID</b>\nthen click <b>Generate</b>. The new key will be generated and also added.</p>\n"
+ )
+ ),
+ _(
+ "<p>To remove an existing key, select it and\nclick <b>Delete</b>.</p>"
+ )
),
"zones" => Ops.add(
Ops.add(
- (_(
- "<p><b><big>DNS Zones</big></b><br>\nUse this dialog to manage the DNS zones.</p>\n"
- ) + _(
- "<p>To add a new zone, enter its <b>Zone Name</b>, select the <b>Zone Type</b>,\nand click <b>Add</b>.</p>\n"
- )) + _(
- "<p>To add a new IPv4 reverse zone, enter a part of the reverse IPv4 address followed by\n<tt>.in-addr.arpa</tt> as its <b>Zone Name</b> (for example, zone name\n<tt>0.168.192.in-addr.arpa</tt> for network <tt>192.168.0.0/24</tt>), select\nthe <b>Zone Type</b>, and click <b>Add</b>.</p>\n"
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>DNS Zones</big></b><br>\nUse this dialog to manage the DNS zones.</p>\n"
+ ),
+ _(
+ "<p>To add a new zone, enter its <b>Zone Name</b>, select the <b>Zone Type</b>,\nand click <b>Add</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p>To add a new IPv4 reverse zone, enter a part of the reverse IPv4 address followed by\n<tt>.in-addr.arpa</tt> as its <b>Zone Name</b> (for example, zone name\n<tt>0.168.192.in-addr.arpa</tt> for network <tt>192.168.0.0/24</tt>), select\nthe <b>Zone Type</b>, and click <b>Add</b>.</p>\n"
+ )
),
Builtins.sformat(
_(
@@ -145,17 +211,28 @@
"<p>To modify settings for a zone, such as zone transport and name and\nmail servers, select it, and click <b>Edit</b>.\nTo remove a configured zone, select it and click <b>Delete</b>.</p>\n"
)
),
- "zone_editor_basics" => ((((DnsServer.ExpertUI ? _(
- "<p><b><big>DDNS and Zone Transport</big></b><br>\nUse this dialog to change dynamic DNS settings of the zone and control access\nto the zone.</p>\n"
- ) : "") + (DnsServer.ExpertUI(
- ) ? _(
- "<p>\nTo allow dynamic updates of the zone, set <b>Allow Dynamic Updates</b>\nand select the <b>TSIG Key</b>. At least one TSIG key must be defined\nbefore the zone can be updated dynamically.</p>\n"
- ) : "")) + _(
- "<p>\nTo allow transports of the zone, set <b>Enable Zone Transport</b>\nand select the <b>ACLs</b> to check when a remote host\nattempts to transfer the zone. At least one ACL must be defined\nto allow zone transports.</p>"
- )) + _(
- "<p>\nReverse zone records can be generated from another master zone.\nSelect the <b>Automatically Generate Records From</b>\ncheck-box and choose the zone to generate the records from.</p>\n"
- )) + _(
- "<p>\nIf this is not a reverse zone, you can see which zones are generated\nfrom the current on in the <b>Connected Reverse Zones</b> field.</p>"
+ "zone_editor_basics" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ DnsServer.ExpertUI ? _(
+ "<p><b><big>DDNS and Zone Transport</big></b><br>\nUse this dialog to change dynamic DNS settings of the zone and control access\nto the zone.</p>\n"
+ ) : "",
+ DnsServer.ExpertUI ? _(
+ "<p>\nTo allow dynamic updates of the zone, set <b>Allow Dynamic Updates</b>\nand select the <b>TSIG Key</b>. At least one TSIG key must be defined\nbefore the zone can be updated dynamically.</p>\n"
+ ) : ""
+ ),
+ _(
+ "<p>\nTo allow transports of the zone, set <b>Enable Zone Transport</b>\nand select the <b>ACLs</b> to check when a remote host\nattempts to transfer the zone. At least one ACL must be defined\nto allow zone transports.</p>"
+ )
+ ),
+ _(
+ "<p>\nReverse zone records can be generated from another master zone.\nSelect the <b>Automatically Generate Records From</b>\ncheck-box and choose the zone to generate the records from.</p>\n"
+ )
+ ),
+ _(
+ "<p>\nIf this is not a reverse zone, you can see which zones are generated\nfrom the current on in the <b>Connected Reverse Zones</b> field.</p>"
+ )
),
"zone_editor_nameservers" => _(
"<p><b><big>NS Records</big></b><br>\nTo add a new name server, enter the name server address and click <b>Add</b>.\nTo remove one of the listed name servers, select it and click\n<b>Delete</b>.</p>\n"
@@ -163,63 +240,116 @@
"zone_editor_mailservers" => _(
"<p><b><big>MX Records</big></b><br>\nTo add a new mail server, enter the <b>Address</b> and <b>Priority</b>\nand click <b>Add</b>.\nTo remove one of the listed mail servers, select it and click\n<b>Delete</b>.</p>\n"
),
- "zone_editor_soa" => (((((_(
- "<p><b><big>SOA Record Configuration</big></b><br>\nSet the entries of the SOA record.</p>"
- ) + _(
- "<p><b>Serial</b> is the number used for determining if the zone has \nchanged on\nthe master servers (then slave servers do not always need to synchronize the\nentire zone).</p>\n"
- )) + _(
- "<p><b>TTL</b> specifies the time to live for all records in the\nzone that do not have an explicit TTL.</p>"
- )) + _(
- "<p><b>Refresh</b> sets how often the zone should be synchronized from\nmaster name server to slave name servers.</p>"
- )) + _(
- "<p><b>Retry</b> sets how often slave servers try to synchronize\nthe zone from the master server if synchronization fails.</p>"
- )) + _(
- "<p><b>Expiration</b> means the period after which the zone expires on slave\nservers and slave servers stop answering replies until it is synchronized.\n</p>"
- )) + _(
- "<p><b>Minimum</b> sets for how long the slave servers should cache\nnegative answers (name resolution failed).</p>"
- ),
- "zone_editor_records" => (_(
- "<p><b><big>Records</big></b><br>\nIn this dialog, edit the resource records of the zone. To add new resource\nrecords, set the <b>Record Key</b>, <b>Type</b>, and <b>Value</b> then\nclick <b>Add</b>.</p>"
- ) + _(
- "<p>To change an existing record, select it, modify the desired entries,\nand click <b>Change</b>. To delete a record, select it and click\n<b>Delete</b>.</p>"
- )) + _(
- "<p>\nEach type of record has its own syntax defined in the RFC.</p>\n"
- ),
- "zone_editor_records_forward" => ((_(
- "<p><b>A: Domain Name Translation</b>:\n<b>Record Key</b> is a hostname without domain or a fully qualified \nhostname followed by a dot.\n <b>Value</b> is an IP address.</p>"
- ) + _(
- "<p><b>CNAME: Alias for Domain Name</b>:\n<b>Record Key</b> is a hostname relative to the current zone or a fully\nqualified hostname followed by a dot.\n<b>Value</b> is a hostname relative to the current zone or a fully\nqualified hostname followed by a dot. It must be represented by\nan A record.</p>\n"
- )) + _(
- "<p><b>NS: Name Server</b>:\n<b>Record Key</b> is a zone name relative to the current zone or an absolute\ndomain name followed by a dot.\n<b>Value</b> is a hostname relative to the current zone or fully qualified\nhostname followed by a dot. It must be represented by an A record.</p>\n"
- )) + _(
- "<p><b>MX: Mail Relay</b>:\n<b>Record Key</b> is a hostname or zone name relative to the current zone\nor an absolute hostname or zone name followed by a dot.\n<b>Value</b> is a hostname relative to the current zone or fully qualified\nhostname followed by a dot. It must be represented by an A record.</p>\n"
- ),
- "zone_editor_records_reverse" => _(
- "<p><b>PTR: Reverse Translation</b>:\n<b>Record Key</b> is a full reverse zone name (derived from the IP address)\nfollowed by a dot\n(such as <tt>1.0.168.192.in-addr.arpa.</tt> for IP address <tt>192.168.0.1</tt>)\n or a part of reverse zone name relative to the current zone\n(such as <tt>1</tt> for IP address <tt>192.168.0.1</tt> in zone\n<tt>0.168.192.in-addr.arpa.</tt>).\n<b>Value</b> is a fully qualified hostname followed by a dot.</p>\n"
- ) + _(
- "<p><b>NS: Name Server</b>:\n<b>Record Key</b> is a zone name relative to the current zone or an absolute\ndomain name followed by a dot.\n<b>Value</b> is a hostname relative to the current zone or fully qualified\nhostname followed by a dot. It must be represented by an A record.</p>\n"
- ),
- "installwizard_step3" => (((_(
- "<p><b><big>Finishing the Configuration</big></b></p>\n<p>Check the entered settings before finishing the configuration.</p> \n"
- ) + _(
- "<p>Select <b>Open Port in Firewall</b> to adapt the\nSuSEfirewall2 settings to allow all connections to your DNS server.</p>"
- )) + _(
- "<p>\nTo start the DNS server every time your computer is booted, set the \nstart-up behavior to <b>On</b>. Otherwise set it to <b>Off</b>.</p> \n"
- )) + (DnsServer.ExpertUI(
- ) ? _(
- "<p>\nTo store the DNS zones in LDAP instead of native configuration files,\nset <b>LDAP Support Active</b>.</p>"
- ) : "")) + _(
- "<p>\nTo enter the expert mode of the DNS server configuration, click\n<b>DNS Server Expert Configuration</b>.</p>"
- ),
- "slave_zone" => _(
- "<p><big><b>Slave DNS Zone</b></big><br>\nEach slave zone must have the master name server defined. Use\n<b>Master DNS Server IP</b> to define the master name server.</p>"
- ) + _(
- "<p><big><b>Zone Transport</b></big><br>\nTo allow transports of the zone, set <b>Enable Zone Transport</b>\nand select the <b>ACLs</b> to check when a remote host\nattempts to transfer the zone. At least one ACL must be defined\nto allow zone transports.</p>"
- ),
- "forward_zone" => _(
- "<p><big><b>Forward DNS Zone</b></big><br>\nThis type of DNS zone only forwards DNS queries to forwarders\ndefined in it.</p>"
- ) + _(
- "<p>If there are no forwarders defined, all DNS queries\nfor the respective zone are denied, because there is no DNS\nserver to which that query should be forwarded.</p>"
+ "zone_editor_soa" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>SOA Record Configuration</big></b><br>\nSet the entries of the SOA record.</p>"
+ ),
+ _(
+ "<p><b>Serial</b> is the number used for determining if the zone has \nchanged on\nthe master servers (then slave servers do not always need to synchronize the\nentire zone).</p>\n"
+ )
+ ),
+ _(
+ "<p><b>TTL</b> specifies the time to live for all records in the\nzone that do not have an explicit TTL.</p>"
+ )
+ ),
+ _(
+ "<p><b>Refresh</b> sets how often the zone should be synchronized from\nmaster name server to slave name servers.</p>"
+ )
+ ),
+ _(
+ "<p><b>Retry</b> sets how often slave servers try to synchronize\nthe zone from the master server if synchronization fails.</p>"
+ )
+ ),
+ _(
+ "<p><b>Expiration</b> means the period after which the zone expires on slave\nservers and slave servers stop answering replies until it is synchronized.\n</p>"
+ )
+ ),
+ _(
+ "<p><b>Minimum</b> sets for how long the slave servers should cache\nnegative answers (name resolution failed).</p>"
+ )
+ ),
+ "zone_editor_records" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Records</big></b><br>\nIn this dialog, edit the resource records of the zone. To add new resource\nrecords, set the <b>Record Key</b>, <b>Type</b>, and <b>Value</b> then\nclick <b>Add</b>.</p>"
+ ),
+ _(
+ "<p>To change an existing record, select it, modify the desired entries,\nand click <b>Change</b>. To delete a record, select it and click\n<b>Delete</b>.</p>"
+ )
+ ),
+ _(
+ "<p>\nEach type of record has its own syntax defined in the RFC.</p>\n"
+ )
+ ),
+ "zone_editor_records_forward" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b>A: Domain Name Translation</b>:\n<b>Record Key</b> is a hostname without domain or a fully qualified \nhostname followed by a dot.\n <b>Value</b> is an IP address.</p>"
+ ),
+ _(
+ "<p><b>CNAME: Alias for Domain Name</b>:\n<b>Record Key</b> is a hostname relative to the current zone or a fully\nqualified hostname followed by a dot.\n<b>Value</b> is a hostname relative to the current zone or a fully\nqualified hostname followed by a dot. It must be represented by\nan A record.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>NS: Name Server</b>:\n<b>Record Key</b> is a zone name relative to the current zone or an absolute\ndomain name followed by a dot.\n<b>Value</b> is a hostname relative to the current zone or fully qualified\nhostname followed by a dot. It must be represented by an A record.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>MX: Mail Relay</b>:\n<b>Record Key</b> is a hostname or zone name relative to the current zone\nor an absolute hostname or zone name followed by a dot.\n<b>Value</b> is a hostname relative to the current zone or fully qualified\nhostname followed by a dot. It must be represented by an A record.</p>\n"
+ )
+ ),
+ "zone_editor_records_reverse" => Ops.add(
+ _(
+ "<p><b>PTR: Reverse Translation</b>:\n<b>Record Key</b> is a full reverse zone name (derived from the IP address)\nfollowed by a dot\n(such as <tt>1.0.168.192.in-addr.arpa.</tt> for IP address <tt>192.168.0.1</tt>)\n or a part of reverse zone name relative to the current zone\n(such as <tt>1</tt> for IP address <tt>192.168.0.1</tt> in zone\n<tt>0.168.192.in-addr.arpa.</tt>).\n<b>Value</b> is a fully qualified hostname followed by a dot.</p>\n"
+ ),
+ _(
+ "<p><b>NS: Name Server</b>:\n<b>Record Key</b> is a zone name relative to the current zone or an absolute\ndomain name followed by a dot.\n<b>Value</b> is a hostname relative to the current zone or fully qualified\nhostname followed by a dot. It must be represented by an A record.</p>\n"
+ )
+ ),
+ "installwizard_step3" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Finishing the Configuration</big></b></p>\n<p>Check the entered settings before finishing the configuration.</p> \n"
+ ),
+ _(
+ "<p>Select <b>Open Port in Firewall</b> to adapt the\nSuSEfirewall2 settings to allow all connections to your DNS server.</p>"
+ )
+ ),
+ _(
+ "<p>\nTo start the DNS server every time your computer is booted, set the \nstart-up behavior to <b>On</b>. Otherwise set it to <b>Off</b>.</p> \n"
+ )
+ ),
+ DnsServer.ExpertUI ? _(
+ "<p>\nTo store the DNS zones in LDAP instead of native configuration files,\nset <b>LDAP Support Active</b>.</p>"
+ ) : ""
+ ),
+ _(
+ "<p>\nTo enter the expert mode of the DNS server configuration, click\n<b>DNS Server Expert Configuration</b>.</p>"
+ )
+ ),
+ "slave_zone" => Ops.add(
+ _(
+ "<p><big><b>Slave DNS Zone</b></big><br>\nEach slave zone must have the master name server defined. Use\n<b>Master DNS Server IP</b> to define the master name server.</p>"
+ ),
+ _(
+ "<p><big><b>Zone Transport</b></big><br>\nTo allow transports of the zone, set <b>Enable Zone Transport</b>\nand select the <b>ACLs</b> to check when a remote host\nattempts to transfer the zone. At least one ACL must be defined\nto allow zone transports.</p>"
+ )
+ ),
+ "forward_zone" => Ops.add(
+ _(
+ "<p><big><b>Forward DNS Zone</b></big><br>\nThis type of DNS zone only forwards DNS queries to forwarders\ndefined in it.</p>"
+ ),
+ _(
+ "<p>If there are no forwarders defined, all DNS queries\nfor the respective zone are denied, because there is no DNS\nserver to which that query should be forwarded.</p>"
+ )
)
}
end
diff -ur result/drbd/src/include/drbd/helps.rb result-bck/drbd/src/include/drbd/helps.rb
--- result/drbd/src/include/drbd/helps.rb 2013-06-28 14:11:35.208000000 +0200
+++ result-bck/drbd/src/include/drbd/helps.rb 2013-06-28 12:35:57.108000000 +0200
@@ -9,49 +9,76 @@
def initialize_drbd_helps(include_target)
textdomain "drbd"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing DRBD Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving DRBD Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ "read" => Ops.add(
+ _("<p><b><big>Initializing DRBD Configuration</big></b><br>\n</p>\n"),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _("<p><b><big>Saving DRBD Configuration</big></b><br>\n</p>\n"),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
),
"start_conf" => _("Start to configure DRBD."),
- "global_conf" => ((_(
- "<p><b><big>Global Configuration of DRBD</big></b></p>"
- ) + _(
- "<p>Check <b>\"Disable IP Verification\"</b> to disable one of drbdadm's sanity check</p>"
- )) + _(
- "<p><b>Dialog Refresh:</b> The user dialog counts and displays the seconds it waited so\n far. You might want to disable this if you have the console\n of your server connected to a serial terminal server with\n limited logging capacity.\n The Dialog will print the count each 'dialog-refresh' seconds,\n set it to 0 to disable redrawing completely. </p>"
- )) + _(
- "<p><b>Minor Count:</b>\nUse this option if you want to define more resources later without reloading the\nmodule. By default we load the module with exactly as many devices as\nconfigured in this file.</p>\n"
- ),
- "summary" => (_(
- "<p><b><big>DRBD Configuration</big></b><br>\nConfigure DRBD here.<br></p>\n"
- ) + _(
- "<p><b><big>Adding a DRBD:</big></b><br>\nChoose a DRBD from the list of detected DRBDs.\nIf your DRBD was not detected, use <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting:</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
- ),
- "overview" => (_(
- "<p><b><big>DRBD Configuration Overview</big></b><br>\nObtain an overview of installed DRBDS. Additionally\nedit their configurations.<br></p>\n"
- ) + _(
- "<p><b><big>Adding a DRBD:</big></b><br>\nPress <b>Add</b> to configure a DRBD.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting:</big></b><br>\nChoose a DRBD to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> as desired.</p>\n"
- ),
- "c1" => _(
- "<p><b><big>Configuration Part One</big></b><br>\nPress <b>Next</b> to continue.\n<br></p>"
- ) + _(
- "<p><b><big>Selecting Something</big></b><br>\nIt is not possible. You must code it first. :-)\n</p>"
- ),
- "c2" => _(
- "<p><b><big>Configuration Part Two</big></b><br>\nPress <b>Next</b> to continue.\n<br></p>\n"
- ) + _(
- "<p><b><big>Selecting Something</big></b><br>\nIt is not possible. You must code it first. :-)\n</p>"
+ "global_conf" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b><big>Global Configuration of DRBD</big></b></p>"),
+ _(
+ "<p>Check <b>\"Disable IP Verification\"</b> to disable one of drbdadm's sanity check</p>"
+ )
+ ),
+ _(
+ "<p><b>Dialog Refresh:</b> The user dialog counts and displays the seconds it waited so\n far. You might want to disable this if you have the console\n of your server connected to a serial terminal server with\n limited logging capacity.\n The Dialog will print the count each 'dialog-refresh' seconds,\n set it to 0 to disable redrawing completely. </p>"
+ )
+ ),
+ _(
+ "<p><b>Minor Count:</b>\nUse this option if you want to define more resources later without reloading the\nmodule. By default we load the module with exactly as many devices as\nconfigured in this file.</p>\n"
+ )
+ ),
+ "summary" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>DRBD Configuration</big></b><br>\nConfigure DRBD here.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding a DRBD:</big></b><br>\nChoose a DRBD from the list of detected DRBDs.\nIf your DRBD was not detected, use <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting:</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
+ )
+ ),
+ "overview" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>DRBD Configuration Overview</big></b><br>\nObtain an overview of installed DRBDS. Additionally\nedit their configurations.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding a DRBD:</big></b><br>\nPress <b>Add</b> to configure a DRBD.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting:</big></b><br>\nChoose a DRBD to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> as desired.</p>\n"
+ )
+ ),
+ "c1" => Ops.add(
+ _(
+ "<p><b><big>Configuration Part One</big></b><br>\nPress <b>Next</b> to continue.\n<br></p>"
+ ),
+ _(
+ "<p><b><big>Selecting Something</big></b><br>\nIt is not possible. You must code it first. :-)\n</p>"
+ )
+ ),
+ "c2" => Ops.add(
+ _(
+ "<p><b><big>Configuration Part Two</big></b><br>\nPress <b>Next</b> to continue.\n<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Selecting Something</big></b><br>\nIt is not possible. You must code it first. :-)\n</p>"
+ )
)
}
end
diff -ur result/fcoe-client/src/include/fcoe-client/helps.rb result-bck/fcoe-client/src/include/fcoe-client/helps.rb
--- result/fcoe-client/src/include/fcoe-client/helps.rb 2013-06-28 14:11:45.724000000 +0200
+++ result-bck/fcoe-client/src/include/fcoe-client/helps.rb 2013-06-28 12:36:05.636000000 +0200
@@ -9,50 +9,85 @@
def initialize_fcoe_client_helps(include_target)
textdomain "fcoe-client"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing fcoe-client Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving fcoe-client Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
- ),
- "summary" => (_(
- "<p><b><big>FcoeClient Configuration</big></b><br>\nConfigure fcoe-client here.<br></p>\n"
- ) + _(
- "<p><b><big>Adding a fcoe-client:</big></b><br>\nChoose a fcoe-client from the list of detected fcoe-clients.\nIf your fcoe-client was not detected, use <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting:</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
- ),
- "services" => (_(
- "<p><b><big>Starting of services</big><br></b><br>\nEnable or disable the start of the services <b>fcoe</b> and <b>lldpad</b> at boot time.</p>\n"
- ) + _(
- "<p>Starting the service <b>fcoe</b> means starting the <i>Fibre Channel over\nEthernet</i> service daemon <i>fcoemon</i> which controls the FCoE interfaces and\nestablishes a connection with the daemon <i>lldpad</i>.</p>"
- )) + _(
- "<p>The <b>lldpad</b> service provides the <i>Link Layer Discovery Protocol</i> agent daemon <i>lldpad</i>, which informs <i>fcoemon</i> about DCB (Data Center Bridging) features and configuration of the interfaces.</p>"
- ),
- "interfaces" => ((_(
- "<p><b><big>Network interface overview</big></b></p>"
- ) + _(
- "<p>The interfaces dialog shows all detected netcards including the status of VLAN and FCoE configuration.<br>FCoE is possible if a VLAN interface is configured for FCoE on the switch. For every netcard (network interface), this is shown in column <i>FCoE VLAN Interface</i>.</p>"
- )) + _(
- "<p>The values for <i>FCoE VLAN Interface</i> in detail:<br>\n<b>not available</b>: Fibre Channel over Ethernet is not possible (must be enabled on the switch first).<br>\n<b>not configured</b>: FCoE is possible but not yet activated. Press <b>Create FCoE VLAN Interface</b> to activate.<br>\n If the FCoE VLAN interface has already been created, the name is shown in the column, e.g. eth3.200.</p>\n"
- )) + _(
- "<p>To change the configuration of an existing FCoE VLAN interface, click on<b>Change Settings</b>.</p>"
- ),
- "configuration" => (_(
- "<p><b><big>General Configuration of FCoE</big></b></p>"
- ) + _(
- "<p>Configure the general settings for the FCoE system service. The settings are written to '/etc/fcoe/config'.</p>"
- )) + _(
- "<p>The values are:<br>\n<b>Debug</b>: <i>yes</i> or <i>no</i><br>\nThis is used to enable or disable debugging messages from the fcoe service script and <i>fcoemon</i>.<br>\n<b>Use syslog</b>: <i>yes</i> or <i>no</i><br>\nMessages are sent to the system log if set to <i>yes</i> (data are logged to /var/log/messages).</p>"
- ),
- "change" => (_("<p>Edit Settings in /etc/fcoe/ethx</p>") + _(
- "<p>The daemon <i>fcoemon</i> reads these configuration files on initialization.\n There is a file for every interface and the values indicate whether FCoE instances\n should be created and if DCB is required.</p>"
- )) + _(
- "<p>The values are:<br> \n<b>FCoE Enable</b>: <i>yes</i> or <i>no</i><br>\nEnable or disable the creation of FCoE instances.<br>\n<b>DCB Required</b>: <i>yes</i> or <i>no</i><br>\nThe default is <i>yes</i>, DCB is usually required.<br>\n<b>AUTO VLAN</b>: <i>yes</i> or <i>no</i><br>\nIf set to <i>yes</i> 'fcoemon' will create the VLAN\ninterfaces automatically.</p>"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing fcoe-client Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving fcoe-client Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
+ ),
+ "summary" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>FcoeClient Configuration</big></b><br>\nConfigure fcoe-client here.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding a fcoe-client:</big></b><br>\nChoose a fcoe-client from the list of detected fcoe-clients.\nIf your fcoe-client was not detected, use <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting:</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
+ )
+ ),
+ "services" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Starting of services</big><br></b><br>\nEnable or disable the start of the services <b>fcoe</b> and <b>lldpad</b> at boot time.</p>\n"
+ ),
+ _(
+ "<p>Starting the service <b>fcoe</b> means starting the <i>Fibre Channel over\nEthernet</i> service daemon <i>fcoemon</i> which controls the FCoE interfaces and\nestablishes a connection with the daemon <i>lldpad</i>.</p>"
+ )
+ ),
+ _(
+ "<p>The <b>lldpad</b> service provides the <i>Link Layer Discovery Protocol</i> agent daemon <i>lldpad</i>, which informs <i>fcoemon</i> about DCB (Data Center Bridging) features and configuration of the interfaces.</p>"
+ )
+ ),
+ "interfaces" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b><big>Network interface overview</big></b></p>"),
+ _(
+ "<p>The interfaces dialog shows all detected netcards including the status of VLAN and FCoE configuration.<br>FCoE is possible if a VLAN interface is configured for FCoE on the switch. For every netcard (network interface), this is shown in column <i>FCoE VLAN Interface</i>.</p>"
+ )
+ ),
+ _(
+ "<p>The values for <i>FCoE VLAN Interface</i> in detail:<br>\n<b>not available</b>: Fibre Channel over Ethernet is not possible (must be enabled on the switch first).<br>\n<b>not configured</b>: FCoE is possible but not yet activated. Press <b>Create FCoE VLAN Interface</b> to activate.<br>\n If the FCoE VLAN interface has already been created, the name is shown in the column, e.g. eth3.200.</p>\n"
+ )
+ ),
+ _(
+ "<p>To change the configuration of an existing FCoE VLAN interface, click on<b>Change Settings</b>.</p>"
+ )
+ ),
+ "configuration" => Ops.add(
+ Ops.add(
+ _("<p><b><big>General Configuration of FCoE</big></b></p>"),
+ _(
+ "<p>Configure the general settings for the FCoE system service. The settings are written to '/etc/fcoe/config'.</p>"
+ )
+ ),
+ _(
+ "<p>The values are:<br>\n<b>Debug</b>: <i>yes</i> or <i>no</i><br>\nThis is used to enable or disable debugging messages from the fcoe service script and <i>fcoemon</i>.<br>\n<b>Use syslog</b>: <i>yes</i> or <i>no</i><br>\nMessages are sent to the system log if set to <i>yes</i> (data are logged to /var/log/messages).</p>"
+ )
+ ),
+ "change" => Ops.add(
+ Ops.add(
+ _("<p>Edit Settings in /etc/fcoe/ethx</p>"),
+ _(
+ "<p>The daemon <i>fcoemon</i> reads these configuration files on initialization.\n There is a file for every interface and the values indicate whether FCoE instances\n should be created and if DCB is required.</p>"
+ )
+ ),
+ _(
+ "<p>The values are:<br> \n<b>FCoE Enable</b>: <i>yes</i> or <i>no</i><br>\nEnable or disable the creation of FCoE instances.<br>\n<b>DCB Required</b>: <i>yes</i> or <i>no</i><br>\nThe default is <i>yes</i>, DCB is usually required.<br>\n<b>AUTO VLAN</b>: <i>yes</i> or <i>no</i><br>\nIf set to <i>yes</i> 'fcoemon' will create the VLAN\ninterfaces automatically.</p>"
+ )
)
}
end
diff -ur result/fcoe-client/src/modules/FcoeClient.rb result-bck/fcoe-client/src/modules/FcoeClient.rb
--- result/fcoe-client/src/modules/FcoeClient.rb 2013-06-28 14:11:39.688000000 +0200
+++ result-bck/fcoe-client/src/modules/FcoeClient.rb 2013-06-28 12:36:05.632000000 +0200
@@ -155,10 +155,11 @@
Builtins.y2milestone("Check if open-fcoe package installed")
if !Package.InstallMsg(
"open-fcoe",
- _(
- "<p>To continue the FCoE configuration, the <b>%1</b> package must be installed.</p>"
- ) + _(
- "<p>Install it now?</p>"
+ Ops.add(
+ _(
+ "<p>To continue the FCoE configuration, the <b>%1</b> package must be installed.</p>"
+ ),
+ _("<p>Install it now?</p>")
)
)
Popup.Error(Message.CannotContinueWithoutPackagesInstalled)
diff -ur result/fingerprint-reader/src/include/fingerprint-reader/dialogs.rb result-bck/fingerprint-reader/src/include/fingerprint-reader/dialogs.rb
--- result/fingerprint-reader/src/include/fingerprint-reader/dialogs.rb 2013-06-28 14:12:01.924000000 +0200
+++ result-bck/fingerprint-reader/src/include/fingerprint-reader/dialogs.rb 2013-06-28 12:36:24.740000000 +0200
@@ -41,10 +41,13 @@
def FingerprintReaderDialog
caption = _("Fingerprint Reader Configuration")
use_pam = FingerprintReader.use_pam
- help_text = _(
- "<p>\n<b>Fingerprint Authentication</b><br>\nThe fingerprint reader configuration updates your PAM settings to enable authentication with fingerprints.</p>\n"
- ) + _(
- "<p>To register fingerprints for a user, start YaST User Management and see the Plug-Ins tab of the selected user. To automatically start YaST User Management, activate <b>Start User Management After Finish</b>.</p>"
+ help_text = Ops.add(
+ _(
+ "<p>\n<b>Fingerprint Authentication</b><br>\nThe fingerprint reader configuration updates your PAM settings to enable authentication with fingerprints.</p>\n"
+ ),
+ _(
+ "<p>To register fingerprints for a user, start YaST User Management and see the Plug-Ins tab of the selected user. To automatically start YaST User Management, activate <b>Start User Management After Finish</b>.</p>"
+ )
)
con = HBox(
HSpacing(3),
diff -ur result/fingerprint-reader/src/include/fingerprint-reader/helps.rb result-bck/fingerprint-reader/src/include/fingerprint-reader/helps.rb
--- result/fingerprint-reader/src/include/fingerprint-reader/helps.rb 2013-06-28 14:12:04.112000000 +0200
+++ result-bck/fingerprint-reader/src/include/fingerprint-reader/helps.rb 2013-06-28 12:36:24.740000000 +0200
@@ -9,15 +9,19 @@
def initialize_fingerprint_reader_helps(include_target)
textdomain "fingerprint-reader"
@HELPS = {
- "read" => _(
- "<p><b>Initializing Fingerprint Reader Configuration</b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b>Initializing Fingerprint Reader Configuration</b><br>\n</p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
),
- "write" => _(
- "<p><b>Saving Fingerprint Reader Configuration</b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ "write" => Ops.add(
+ _("<p><b>Saving Fingerprint Reader Configuration</b><br>\n</p>\n"),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
)
}
end
diff -ur result/firewall/src/include/firewall/helps.rb result-bck/firewall/src/include/firewall/helps.rb
--- result/firewall/src/include/firewall/helps.rb 2013-06-28 14:12:26.840000000 +0200
+++ result-bck/firewall/src/include/firewall/helps.rb 2013-06-28 12:35:57.308000000 +0200
@@ -19,10 +19,13 @@
"firewall-interfaces" => _(
"<p><b><big>Interfaces</big></b>\n<br>Here, assign your network devices into firewall zones\nby selecting the device in the table and clicking <b>Change</b>.</p>\n\n<p>Enter special strings, like <tt>any</tt>, using \n<b>Custom</b>. You can also enter interfaces not yet configured here.\nIf you need masquerading, the string <tt>any</tt> is not allowed.</p>\n\n<p>Every network device should be assigned to a firewall zone.\nNetwork traffic through any unassigned interface is blocked.</p>\n"
),
- "allowed-services" => _(
- "<p><b><big>Allowed Services</big></b>\n<br>Specify services or ports that should be accessible from the network.\nNetworks are divided into firewall zones.</p>\n\n<p>To allow a service, select the <b>Zone</b> and the\n<b>Service to Allow</b> then press <b>Add</b>.\nTo remove an allowed service, select the <b>Zone</b> and the <b>Allowed Service</b> then press <b>Delete</b>.</p>\n\n<p>By deselecting <b>Protect Firewall from Internal Zone</b>, you remove\nprotection from the zone. All services and ports in your internal network will\nbe unprotected.</p>\n"
- ) + _(
- "<p>Additional settings can be configured using <b>Advanced</b>.\nEntries must be separated by a space. There you can allow TCP, UDP, and RPC ports and\nIP protocols.</p>\n<p>TCP and UDP ports can be entered as port names (<tt>ftp-data</tt>),\nport numbers (<tt>3128</tt>), and port ranges (<tt>8000:8520</tt>).\nRPC ports must be entered as service names (<tt>portmap</tt> or <tt>nlockmgr</tt>).\nEnter IP protocols as the protocol name (<tt>esp</tt>).\n</p>\n"
+ "allowed-services" => Ops.add(
+ _(
+ "<p><b><big>Allowed Services</big></b>\n<br>Specify services or ports that should be accessible from the network.\nNetworks are divided into firewall zones.</p>\n\n<p>To allow a service, select the <b>Zone</b> and the\n<b>Service to Allow</b> then press <b>Add</b>.\nTo remove an allowed service, select the <b>Zone</b> and the <b>Allowed Service</b> then press <b>Delete</b>.</p>\n\n<p>By deselecting <b>Protect Firewall from Internal Zone</b>, you remove\nprotection from the zone. All services and ports in your internal network will\nbe unprotected.</p>\n"
+ ),
+ _(
+ "<p>Additional settings can be configured using <b>Advanced</b>.\nEntries must be separated by a space. There you can allow TCP, UDP, and RPC ports and\nIP protocols.</p>\n<p>TCP and UDP ports can be entered as port names (<tt>ftp-data</tt>),\nport numbers (<tt>3128</tt>), and port ranges (<tt>8000:8520</tt>).\nRPC ports must be entered as service names (<tt>portmap</tt> or <tt>nlockmgr</tt>).\nEnter IP protocols as the protocol name (<tt>esp</tt>).\n</p>\n"
+ )
),
"base-masquerading" => _(
"<p><b><big>Masquerading</big></b>\n<br>Masquerading is a function that hides your internal network behind your firewall and allows\nyour internal network to access the external network, such as the Internet, transparently. Requests\nfrom the external network to the internal one are blocked.\nSelect <b>Masquerade Networks</b> to masquerade your networks\nto the external network.</p>\n"
@@ -45,41 +48,77 @@
"box-summary" => _(
"<p><b><big>Summary</big></b>\n<br>Here, find a summary of your configuration settings.\nThis summary is divided into general configuration and parts for each firewall zone.\nEvery existing zone is summarized here.</p>\n\n<p><b>Firewall Starting</b> shows whether the firewall is started in the\n<b>boot process</b> or only <b>manually</b>.</p>\n\n<p>Firewall zones must have a network interface assigned to list the following items in the summary:</p>\n\n<p><b>Interfaces</b>: All interfaces are listed using their configuration name and device name.</p>\n\n<p><b>Open Services, Ports, and Protocols</b>: This lists all allowed network services, additional\nTCP (Transmission Control Protocol), UDP (User Datagram Protocol), and RPC (Remote Procedure Call)\nports, and IP (Internet Protocol) protocols.</p>\n"
),
- "additional-services" => ((((_(
- "<p>Here, enter additional\nports or protocols to enable in the firewall zone.</p>"
- ) + _(
- "<p><b>TCP Ports</b> and <b>UDP Ports</b> can be entered as\na list of port numbers, port names, or port ranges separated by spaces,\nsuch as <tt>22</tt>, <tt>http</tt>, or <tt>137:139</tt>.</p>"
- )) + _(
- "<p><b>RPC Ports</b> is a list of RPC services, such as\n<tt>nlockmgr</tt>, <tt>ypbind</tt>, or <tt>portmap</tt>, separated by spaces.</p>"
- )) + _(
- "<p><b>IP Protocols</b> is a list of protocols, such as\n<tt>esp</tt>, <tt>smp</tt>, or <tt>chaos</tt>, separated by spaces.\nFind the current list of protocols at\nhttp://www.iana.org/assignments/protocol-numbers.</p>"
- )) + _(
- "<p>The <b>Port Range</b> consists of two colon-separated numbers that represent\nall numbers inside the range including the numbers themselves.\nThe first port number must be lower than the second one,\nfor example, <tt>200:215</tt>.</p>"
- )) + _(
- "<p>The <b>Port Name</b> is a name assigned to a port number by the IANA\norganization. One port number can have multiple port names assigned. Find\nthe assignment currently in use in the <tt>/etc/services</tt> file.</p>"
+ "additional-services" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Here, enter additional\nports or protocols to enable in the firewall zone.</p>"
+ ),
+ _(
+ "<p><b>TCP Ports</b> and <b>UDP Ports</b> can be entered as\na list of port numbers, port names, or port ranges separated by spaces,\nsuch as <tt>22</tt>, <tt>http</tt>, or <tt>137:139</tt>.</p>"
+ )
+ ),
+ _(
+ "<p><b>RPC Ports</b> is a list of RPC services, such as\n<tt>nlockmgr</tt>, <tt>ypbind</tt>, or <tt>portmap</tt>, separated by spaces.</p>"
+ )
+ ),
+ _(
+ "<p><b>IP Protocols</b> is a list of protocols, such as\n<tt>esp</tt>, <tt>smp</tt>, or <tt>chaos</tt>, separated by spaces.\nFind the current list of protocols at\nhttp://www.iana.org/assignments/protocol-numbers.</p>"
+ )
+ ),
+ _(
+ "<p>The <b>Port Range</b> consists of two colon-separated numbers that represent\nall numbers inside the range including the numbers themselves.\nThe first port number must be lower than the second one,\nfor example, <tt>200:215</tt>.</p>"
+ )
+ ),
+ _(
+ "<p>The <b>Port Name</b> is a name assigned to a port number by the IANA\norganization. One port number can have multiple port names assigned. Find\nthe assignment currently in use in the <tt>/etc/services</tt> file.</p>"
+ )
),
"installation_proposal" => _(
"<p><b><big>Firewall</big></b><br />\nA firewall is a defensive mechanism that protects your computer from network attacks.</p>\n"
),
- "custom-rules" => (((_(
- "<p><b><big>Custom Rules</big></b><br>\nSet special firewall rules that allow new connections\nmatching these rules.</p>\n"
- ) + _(
- "<p><b>Source Network</b><br>\nNetwork or IP address where the connection comes from,\ne.g., <tt>192.168.0.1</tt> or <tt>192.168.0.0/255.255.255.0</tt>\nor <tt>192.168.0.0/24</tt> or <tt>0/0</tt> (which means <tt>all</tt>).</p>\n"
- )) + _(
- "<p><b>Protocol</b><br>\nProtocol used by that packet. Special protocol <tt>RPC</tt> is used for\nRPC services.</p>"
- )) + _(
- "<p><b>Destination Port</b><br>\nPort name, port number or range of ports that are allowed to be\naccessed, e.g., <tt>smtp</tt> or <tt>25</tt> or <tt>100:110</tt>.\nIn case of <tt>RPC</tt> protocol, use the RPC service name.\nThis entry is optional.</p>"
- )) + _(
- "<p><b>Source Port</b><br>\nPort name, port number or range of ports where the packet\noriginates from. This entry is optional.</p>"
- ),
- "custom-rules-popup" => ((_(
- "<p><b>Source Network</b><br>\nNetwork or IP address where the connection comes from,\ne.g., <tt>192.168.0.1</tt> or <tt>192.168.0.0/255.255.255.0</tt>\nor <tt>192.168.0.0/24</tt> or <tt>0/0</tt> (which means <tt>all</tt>).</p>\n"
- ) + _(
- "<p><b>Protocol</b><br>\nProtocol used by that packet. Special protocol <tt>RPC</tt> is used for\nRPC services.</p>"
- )) + _(
- "<p><b>Destination Port</b><br>\nPort name, port number or range of ports that are allowed to be\naccessed, e.g., <tt>smtp</tt> or <tt>25</tt> or <tt>100:110</tt>.\nIn case of <tt>RPC</tt> protocol, use the RPC service name.\nThis entry is optional.</p>"
- )) + _(
- "<p><b>Source Port</b><br>\nPort name, port number or range of ports where the packet\noriginates from. This entry is optional.</p>"
+ "custom-rules" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Custom Rules</big></b><br>\nSet special firewall rules that allow new connections\nmatching these rules.</p>\n"
+ ),
+ _(
+ "<p><b>Source Network</b><br>\nNetwork or IP address where the connection comes from,\ne.g., <tt>192.168.0.1</tt> or <tt>192.168.0.0/255.255.255.0</tt>\nor <tt>192.168.0.0/24</tt> or <tt>0/0</tt> (which means <tt>all</tt>).</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Protocol</b><br>\nProtocol used by that packet. Special protocol <tt>RPC</tt> is used for\nRPC services.</p>"
+ )
+ ),
+ _(
+ "<p><b>Destination Port</b><br>\nPort name, port number or range of ports that are allowed to be\naccessed, e.g., <tt>smtp</tt> or <tt>25</tt> or <tt>100:110</tt>.\nIn case of <tt>RPC</tt> protocol, use the RPC service name.\nThis entry is optional.</p>"
+ )
+ ),
+ _(
+ "<p><b>Source Port</b><br>\nPort name, port number or range of ports where the packet\noriginates from. This entry is optional.</p>"
+ )
+ ),
+ "custom-rules-popup" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b>Source Network</b><br>\nNetwork or IP address where the connection comes from,\ne.g., <tt>192.168.0.1</tt> or <tt>192.168.0.0/255.255.255.0</tt>\nor <tt>192.168.0.0/24</tt> or <tt>0/0</tt> (which means <tt>all</tt>).</p>\n"
+ ),
+ _(
+ "<p><b>Protocol</b><br>\nProtocol used by that packet. Special protocol <tt>RPC</tt> is used for\nRPC services.</p>"
+ )
+ ),
+ _(
+ "<p><b>Destination Port</b><br>\nPort name, port number or range of ports that are allowed to be\naccessed, e.g., <tt>smtp</tt> or <tt>25</tt> or <tt>100:110</tt>.\nIn case of <tt>RPC</tt> protocol, use the RPC service name.\nThis entry is optional.</p>"
+ )
+ ),
+ _(
+ "<p><b>Source Port</b><br>\nPort name, port number or range of ports where the packet\noriginates from. This entry is optional.</p>"
+ )
)
}
end
diff -ur result/firewall/src/include/firewall/subdialogs.rb result-bck/firewall/src/include/firewall/subdialogs.rb
--- result/firewall/src/include/firewall/subdialogs.rb 2013-06-28 14:12:13.160000000 +0200
+++ result-bck/firewall/src/include/firewall/subdialogs.rb 2013-06-28 12:35:57.308000000 +0200
@@ -226,7 +226,7 @@
PushButton(
Id("advanced_allowed_service"),
Opt(:hstretch, :key_F7),
- (" " + _("A&dvanced...")) + " "
+ Ops.add(Ops.add(" ", _("A&dvanced...")), " ")
)
)
)
diff -ur result/firewall/src/include/firewall/summary.rb result-bck/firewall/src/include/firewall/summary.rb
--- result/firewall/src/include/firewall/summary.rb 2013-06-28 14:12:18.960000000 +0200
+++ result-bck/firewall/src/include/firewall/summary.rb 2013-06-28 12:35:57.308000000 +0200
@@ -101,9 +101,10 @@
SuSEFirewallUI.simple_text_output ? String.UnderlinedHeader(
_("Interfaces"),
4
- ) : (("<h3>" + _(
- "Interfaces"
- )) + "</h3>")
+ ) : Ops.add(
+ Ops.add("<h3>", _("Interfaces")),
+ "</h3>"
+ )
),
"\n"
)
@@ -278,9 +279,10 @@
SuSEFirewallUI.simple_text_output ? String.UnderlinedHeader(
_("Open Services, Ports, and Protocols"),
4
- ) : (("<h3>" + _(
- "Open Services, Ports, and Protocols"
- )) + "</h3>"),
+ ) : Ops.add(
+ Ops.add("<h3>", _("Open Services, Ports, and Protocols")),
+ "</h3>"
+ ),
"\n"
)
if (zone_id == "INT") && !SuSEFirewall.GetProtectFromInternalZone
@@ -377,7 +379,7 @@
return ""
end
end
- rules = ("<h3>" + _("Custom Rules")) + "</h3>"
+ rules = Ops.add(Ops.add("<h3>", _("Custom Rules")), "</h3>")
rules = Ops.add(rules, @ul_start)
if !show_details
rules = Ops.add(
@@ -458,9 +460,10 @@
SuSEFirewallUI.simple_text_output ? String.UnderlinedHeader(
_("Firewall Starting"),
0
- ) : (("<h2>" + _(
- "Firewall Starting"
- )) + "</h2>")
+ ) : Ops.add(
+ Ops.add("<h2>", _("Firewall Starting")),
+ "</h2>"
+ )
),
"\n"
)
@@ -554,9 +557,10 @@
SuSEFirewallUI.simple_text_output ? String.UnderlinedHeader(
_("Unassigned Interfaces"),
0
- ) : (("<h2>" + _(
- "Unassigned Interfaces"
- )) + "</h2>")
+ ) : Ops.add(
+ Ops.add("<h2>", _("Unassigned Interfaces")),
+ "</h2>"
+ )
),
"\n"
)
diff -ur result/firewall/src/include/firewall/uifunctions.rb result-bck/firewall/src/include/firewall/uifunctions.rb
--- result/firewall/src/include/firewall/uifunctions.rb 2013-06-28 14:12:24.232000000 +0200
+++ result-bck/firewall/src/include/firewall/uifunctions.rb 2013-06-28 12:35:57.308000000 +0200
@@ -807,7 +807,7 @@
UI.SetFocus(Id(ui_id))
Popup.Error(
Ops.add(
- _("Wrong port definition.") + "\n\n",
+ Ops.add(_("Wrong port definition."), "\n\n"),
PortAliases.AllowedPortNameOrNumber
)
)
@@ -837,7 +837,7 @@
Popup.Error(
Ops.add(
Ops.add(
- Ops.add(_("Invalid IP definition.") + "\n\n", IP.Valid4),
+ Ops.add(Ops.add(_("Invalid IP definition."), "\n\n"), IP.Valid4),
"\n"
),
IP.Valid6
diff -ur result/firewall/src/modules/SuSEFirewallCMDLine.rb result-bck/firewall/src/modules/SuSEFirewallCMDLine.rb
--- result/firewall/src/modules/SuSEFirewallCMDLine.rb 2013-06-28 14:12:10.672000000 +0200
+++ result-bck/firewall/src/modules/SuSEFirewallCMDLine.rb 2013-06-28 12:35:57.300000000 +0200
@@ -731,8 +731,8 @@
table_items,
[
zone,
- ("*" + _("All services")) + "*",
- ("*" + _("Entire zone unprotected")) + "*"
+ Ops.add(Ops.add("*", _("All services")), "*"),
+ Ops.add(Ops.add("*", _("Entire zone unprotected")), "*")
]
)
next
@@ -794,8 +794,8 @@
table_items,
[
zone,
- ("*" + _("All ports")) + "*",
- ("*" + _("Entire zone unprotected")) + "*"
+ Ops.add(Ops.add("*", _("All ports")), "*"),
+ Ops.add(Ops.add("*", _("Entire zone unprotected")), "*")
]
)
next
@@ -826,8 +826,8 @@
table_items,
[
zone,
- ("*" + _("All IP protocols")) + "*",
- ("*" + _("Entire zone unprotected")) + "*"
+ Ops.add(Ops.add("*", _("All IP protocols")), "*"),
+ Ops.add(Ops.add("*", _("Entire zone unprotected")), "*")
]
)
next
diff -ur result/firstboot/src/clients/firstboot_finish.rb result-bck/firstboot/src/clients/firstboot_finish.rb
--- result/firstboot/src/clients/firstboot_finish.rb 2013-06-28 14:13:28.976000000 +0200
+++ result-bck/firstboot/src/clients/firstboot_finish.rb 2013-06-28 12:36:07.752000000 +0200
@@ -40,12 +40,17 @@
)
end
@caption = _("Configuration Completed")
- @text = ((_("<p><b>Congratulations!</b></p>") + _(
- "<p>The installation of &product; on your machine is complete.\nAfter clicking <b>Finish</b>, you can log in to the system.</p>\n"
- )) + _(
- "<p>Visit us at www.suse.com.</p>"
- )) + _(
- "<p>Have a lot of fun!<br>Your SuSE Development Team</p>"
+ @text = Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b>Congratulations!</b></p>"),
+ _(
+ "<p>The installation of &product; on your machine is complete.\nAfter clicking <b>Finish</b>, you can log in to the system.</p>\n"
+ )
+ ),
+ _("<p>Visit us at www.suse.com.</p>")
+ ),
+ _("<p>Have a lot of fun!<br>Your SuSE Development Team</p>")
)
@finish_text = ""
@finish_text_file = Misc.SysconfigRead(
@@ -71,10 +76,16 @@
@check_box_start_y2cc,
VSpacing(2)
)
- @help = (_("<p>Your system is ready for use.</p>") + _(
- "<p><b>Finish</b> will close the YaST installation and continue\nto the login screen.</p>\n"
- )) + _(
- "<p>If you choose the default graphical desktop KDE, you can\nadjust some KDE settings to your hardware. Also notice\nour SuSE Welcome Dialog.</p>\n"
+ @help = Ops.add(
+ Ops.add(
+ _("<p>Your system is ready for use.</p>"),
+ _(
+ "<p><b>Finish</b> will close the YaST installation and continue\nto the login screen.</p>\n"
+ )
+ ),
+ _(
+ "<p>If you choose the default graphical desktop KDE, you can\nadjust some KDE settings to your hardware. Also notice\nour SuSE Welcome Dialog.</p>\n"
+ )
)
if Firstboot.show_y2cc_checkbox
@help = Ops.add(
diff -ur result/firstboot/src/clients/firstboot_language_keyboard.rb result-bck/firstboot/src/clients/firstboot_language_keyboard.rb
--- result/firstboot/src/clients/firstboot_language_keyboard.rb 2013-06-28 14:13:24.748000000 +0200
+++ result-bck/firstboot/src/clients/firstboot_language_keyboard.rb 2013-06-28 12:36:07.752000000 +0200
@@ -60,12 +60,16 @@
VWeight(1, VStretch()),
VWeight(3, VStretch())
)
- @help_text = (_(
- "<p>\nChoose the <b>Language</b> and the <b>Keyboard Layout</b> to be used during\nconfiguration and in the installed system.\n</p>\n"
- ) + _(
- "<p>\nClick <b>Next</b> to proceed to the next dialog.\n</p>\n"
- )) + _(
- "<p>\nSelect <b>Abort</b> to abort the\ninstallation process at any time.\n</p>\n"
+ @help_text = Ops.add(
+ Ops.add(
+ _(
+ "<p>\nChoose the <b>Language</b> and the <b>Keyboard Layout</b> to be used during\nconfiguration and in the installed system.\n</p>\n"
+ ),
+ _("<p>\nClick <b>Next</b> to proceed to the next dialog.\n</p>\n")
+ ),
+ _(
+ "<p>\nSelect <b>Abort</b> to abort the\ninstallation process at any time.\n</p>\n"
+ )
)
Wizard.SetContents(
@heading_text,
diff -ur result/ftp-server/src/include/ftp-server/helps.rb result-bck/ftp-server/src/include/ftp-server/helps.rb
--- result/ftp-server/src/include/ftp-server/helps.rb 2013-06-28 14:17:18.560000000 +0200
+++ result-bck/ftp-server/src/include/ftp-server/helps.rb 2013-06-28 12:35:51.972000000 +0200
@@ -9,15 +9,19 @@
def initialize_ftp_server_helps(include_target)
textdomain "ftp-server"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing FTP Server Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving FTP Server Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing FTP Server Configuration</big></b><br>\n</p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _("<p><b><big>Saving FTP Server Configuration</big></b><br>\n</p>\n"),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
),
"selected_services" => _(
"<p><b>Selected Service</b><br>\n The frame shows which daemon is currently configured: <b>vsftpd, pure-ftpd, \n </b>. If you have installed both daemons you can switch between them.\n</p>\n"
@@ -103,19 +107,31 @@
"SSL" => _(
"<p><b>Security Settings</b><br>\n<i>Disable SSL/TLS</i> Disable SSL/TLS encryption layer.\n<i>Accept SSL and TLS</i> Accept both, traditional and encrypted sessions.\n<i>Refuse Connections Without SSL/TLS</i> Refuse connections that do not use SSL/TLS security mechanisms, including anonymous sessions.\n</p>"
),
- "summary" => (_(
- "<p><b><big>FTP Server Configuration</big></b><br>\nConfigure the FTP server.<br></p>\n"
- ) + _(
- "<p><b><big>Adding an FTP Server:</big></b><br>\nChoose an FTP server from the list of detected FTP servers.\nIf your FTP server was not detected, use <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
- ),
- "overview" => (_(
- "<p><b><big>FTP Server Configuration Overview</big></b><br>\nObtain an overview of the installed FTP servers. Additionally,\nedit their configurations.<br></p>\n"
- ) + _(
- "<p><b><big>Adding a FTP Server</big></b><br>\nPress <b>Add</b> to configure a FTP server.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting</big></b><br>\nChoose a FTP server to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> respectively.</p>\n"
+ "summary" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>FTP Server Configuration</big></b><br>\nConfigure the FTP server.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding an FTP Server:</big></b><br>\nChoose an FTP server from the list of detected FTP servers.\nIf your FTP server was not detected, use <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
+ )
+ ),
+ "overview" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>FTP Server Configuration Overview</big></b><br>\nObtain an overview of the installed FTP servers. Additionally,\nedit their configurations.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding a FTP Server</big></b><br>\nPress <b>Add</b> to configure a FTP server.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting</big></b><br>\nChoose a FTP server to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> respectively.</p>\n"
+ )
)
}
end
diff -ur result/heartbeat/src/include/heartbeat/helps.rb result-bck/heartbeat/src/include/heartbeat/helps.rb
--- result/heartbeat/src/include/heartbeat/helps.rb 2013-06-28 14:17:51.132000000 +0200
+++ result-bck/heartbeat/src/include/heartbeat/helps.rb 2013-06-28 12:36:20.488000000 +0200
@@ -9,87 +9,165 @@
def initialize_heartbeat_helps(include_target)
textdomain "heartbeat"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing Heartbeat Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving Heartbeat Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
- ),
- "node_conf" => ((_(
- "<p><b>Node Configuration</b> lets you specify and\nadd nodes to your cluster. This installation program lets you create\na new cluster or add nodes to an existing cluster. To add new nodes\nto an existing cluster, you must run this installation program from a\nnode that is already in the cluster, not on a node that you want to add\nto the cluster.</p>\n"
- ) + _(
- "<p>This cluster installation program does not copy the Heartbeat\nsoftware package to cluster nodes. Prior to running this installation program, the\nHeartbeat software package must be installed on all nodes that will be\npart of your cluster.</p>"
- )) + _(
- "<p>To add a node to the cluster, enter the name of the node\nthen click <b>Add</b>. Repeat this process for each\nnode to add to the cluster. Find node names for servers\nby entering the <tt>uname -n</tt> command on each node.</p>\n"
- )) + _(
- "<p>If you need to specify a different node name after adding a node to the cluster,\ndouble-click the node to edit, change its name, then click <b>Edit</b>.</p>\n"
- ),
- "media_conf" => (((_(
- "<p><b>Heartbeat Media Configuration</b> lets you\n specify the method Heartbeat should use for internal communication\nbetween cluster nodes. This provides a way for cluster nodes to signal\nthat they are alive to other nodes in the cluster. For proper redundancy,\nyou should specify more than one heartbeat medium if possible.</p>\n"
- ) + _(
- "<p>Choose at least one <b>Heartbeat Medium</b> and, if possible,\n two or more. After specifying a heartbeat medium, click <b>Add</b> to add\nthat medium type to Heartbeat.</p>\n"
- )) + _(
- "<p>If you choose <b>Broadcast</b>, select one of the available network\ndevices in the device list.</p>\n"
- )) + _(
- "<p>For <b>Multicast</b>, choose a network device, multicast\ngroup to join (class D multicast address 224.0.0.0-239.255.255.255), and\nthe ttl value (1-255).</p>\n"
- )) + _(
- "<p><b>UDP Port</b> sets the UDP port that is used for the\nbroadcast media. Leave this set to the default value (694)\nunless you are running multiple Heartbeat clusters on the same network\nsegment, in which case you need to run each cluster on a different port\nnumber.</p>\n"
- ),
- "auth_conf" => (_(
- "<p>Specify the authentication method to\n use for network communication between cluster nodes. Choosing\nan authentication method protects against network attacks.</p>\n"
- ) + _(
- "<p>Both the <b>md5</b> and <b>sha1</b> methods require a\n <i>shared secret</i>, which is used to protect and authenticate\n messages. The <b>crc</b> method does not perform message authentication\n and only protects against corruption, not against attacks.</p>\n"
- )) + _(
- "<p>The <b>sha1</b> method is recommended because it provides the\n strongest authentication scheme available. The authentication key\n(password) specified is used on all nodes in the cluster.</p>\n"
- ),
- "resources_conf" => (((((_(
- "<p><b>Resources</b> -- specify which resources are handled by Heartbeat\nand how Heartbeat should handle failback (migration of resources back to\na node after a failure has been resolved).</p>\n"
- ) + _(
- "<p>If you set <b>Automatic Failback</b> to <i>on</i>, Heartbeat \nmigrates resources back to the primary owner as soon as it becomes\navailable again. This automatically restores the balancing of\nresources between the nodes, but requires that the resources are briefly\nstopped so they can be cleanly started, leading to a minor\ninterruption of service.</p>\n"
- )) + _(
- "<p>For most scenarios, <i>off</i> is the correct choice. It requires \nthe administrator to trigger the failback of resources manually\n(using the hb_standby command line tool) as soon as the failure is\nresolved. This allows him to schedule a maintenance window and not\ninterrupt the service even more.</p>\n"
- )) + _(
- "<p><i>legacy</i> is the old default for compatibility with former\nHeartbeat releases. It activates the automatic failback if not all\nnodes support the new directive yet. Explicitly choosing either \n<i>on</i> or <i>off</i> is recommended for new deployments.</p>\n"
- )) + _(
- "<p>Adding a resource to a given node places the resource under\nHeartbeat's control. It will be started and stopped automatically by\nHeartbeat. Make sure the resource is not started by anything\nelse.</p>\n"
- )) + _(
- "<p>Heartbeat primarily starts the resource on the node to which it is\nassigned if both nodes are healthy and up. See the <b>auto_failback</b>\nsetting above.</p>\n"
- )) + _(
- "<p>Specify any init script name as a resource or a specify a special \nHeartbeat resource script (provided in the <i>/etc/ha.d/resource.d</i>\ndirectory). Some of the latter take additional arguments, which are\nseparated from the resource script name itself by <i>::</i>, for\nexample, <i>Filesystem::/dev/sda1::/mnt::reiserfs</i>. Check the\ndocumentation for the resource scripts.</p>\n"
- ),
- "stonith_conf" => (_(
- "<p>To protect the shared data, <b>STONITH</b>\n must be configured. Heartbeat is capable of driving a number of\nserial and network power switches to prevent a potentially faulty\nnode from corrupting shared data.</p>\n"
- ) + _(
- "<p>STONITH needs to know which nodes can access the power\n switch. Enter or select the name of the node in <b>Host From</b>.\n For a serial power switch, this is a specific node name.\n For a network power switch, you should typically enter an asterisk\n (*) to indicate that it is accessible from all nodes.</p>\n"
- )) + _(
- "<p>The <b>STONITH Type</b> is the name of the module that\n is used to control the power switch. <b>Parameters</b> are\n specific to the module specified. See the <tt>stonith -h</tt>\n command line tool for a list of supported modules and\n the parameters they accept.</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing Heartbeat Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving Heartbeat Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
+ ),
+ "node_conf" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b>Node Configuration</b> lets you specify and\nadd nodes to your cluster. This installation program lets you create\na new cluster or add nodes to an existing cluster. To add new nodes\nto an existing cluster, you must run this installation program from a\nnode that is already in the cluster, not on a node that you want to add\nto the cluster.</p>\n"
+ ),
+ _(
+ "<p>This cluster installation program does not copy the Heartbeat\nsoftware package to cluster nodes. Prior to running this installation program, the\nHeartbeat software package must be installed on all nodes that will be\npart of your cluster.</p>"
+ )
+ ),
+ _(
+ "<p>To add a node to the cluster, enter the name of the node\nthen click <b>Add</b>. Repeat this process for each\nnode to add to the cluster. Find node names for servers\nby entering the <tt>uname -n</tt> command on each node.</p>\n"
+ )
+ ),
+ _(
+ "<p>If you need to specify a different node name after adding a node to the cluster,\ndouble-click the node to edit, change its name, then click <b>Edit</b>.</p>\n"
+ )
+ ),
+ "media_conf" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b>Heartbeat Media Configuration</b> lets you\n specify the method Heartbeat should use for internal communication\nbetween cluster nodes. This provides a way for cluster nodes to signal\nthat they are alive to other nodes in the cluster. For proper redundancy,\nyou should specify more than one heartbeat medium if possible.</p>\n"
+ ),
+ _(
+ "<p>Choose at least one <b>Heartbeat Medium</b> and, if possible,\n two or more. After specifying a heartbeat medium, click <b>Add</b> to add\nthat medium type to Heartbeat.</p>\n"
+ )
+ ),
+ _(
+ "<p>If you choose <b>Broadcast</b>, select one of the available network\ndevices in the device list.</p>\n"
+ )
+ ),
+ _(
+ "<p>For <b>Multicast</b>, choose a network device, multicast\ngroup to join (class D multicast address 224.0.0.0-239.255.255.255), and\nthe ttl value (1-255).</p>\n"
+ )
+ ),
+ _(
+ "<p><b>UDP Port</b> sets the UDP port that is used for the\nbroadcast media. Leave this set to the default value (694)\nunless you are running multiple Heartbeat clusters on the same network\nsegment, in which case you need to run each cluster on a different port\nnumber.</p>\n"
+ )
+ ),
+ "auth_conf" => Ops.add(
+ Ops.add(
+ _(
+ "<p>Specify the authentication method to\n use for network communication between cluster nodes. Choosing\nan authentication method protects against network attacks.</p>\n"
+ ),
+ _(
+ "<p>Both the <b>md5</b> and <b>sha1</b> methods require a\n <i>shared secret</i>, which is used to protect and authenticate\n messages. The <b>crc</b> method does not perform message authentication\n and only protects against corruption, not against attacks.</p>\n"
+ )
+ ),
+ _(
+ "<p>The <b>sha1</b> method is recommended because it provides the\n strongest authentication scheme available. The authentication key\n(password) specified is used on all nodes in the cluster.</p>\n"
+ )
+ ),
+ "resources_conf" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b>Resources</b> -- specify which resources are handled by Heartbeat\nand how Heartbeat should handle failback (migration of resources back to\na node after a failure has been resolved).</p>\n"
+ ),
+ _(
+ "<p>If you set <b>Automatic Failback</b> to <i>on</i>, Heartbeat \nmigrates resources back to the primary owner as soon as it becomes\navailable again. This automatically restores the balancing of\nresources between the nodes, but requires that the resources are briefly\nstopped so they can be cleanly started, leading to a minor\ninterruption of service.</p>\n"
+ )
+ ),
+ _(
+ "<p>For most scenarios, <i>off</i> is the correct choice. It requires \nthe administrator to trigger the failback of resources manually\n(using the hb_standby command line tool) as soon as the failure is\nresolved. This allows him to schedule a maintenance window and not\ninterrupt the service even more.</p>\n"
+ )
+ ),
+ _(
+ "<p><i>legacy</i> is the old default for compatibility with former\nHeartbeat releases. It activates the automatic failback if not all\nnodes support the new directive yet. Explicitly choosing either \n<i>on</i> or <i>off</i> is recommended for new deployments.</p>\n"
+ )
+ ),
+ _(
+ "<p>Adding a resource to a given node places the resource under\nHeartbeat's control. It will be started and stopped automatically by\nHeartbeat. Make sure the resource is not started by anything\nelse.</p>\n"
+ )
+ ),
+ _(
+ "<p>Heartbeat primarily starts the resource on the node to which it is\nassigned if both nodes are healthy and up. See the <b>auto_failback</b>\nsetting above.</p>\n"
+ )
+ ),
+ _(
+ "<p>Specify any init script name as a resource or a specify a special \nHeartbeat resource script (provided in the <i>/etc/ha.d/resource.d</i>\ndirectory). Some of the latter take additional arguments, which are\nseparated from the resource script name itself by <i>::</i>, for\nexample, <i>Filesystem::/dev/sda1::/mnt::reiserfs</i>. Check the\ndocumentation for the resource scripts.</p>\n"
+ )
+ ),
+ "stonith_conf" => Ops.add(
+ Ops.add(
+ _(
+ "<p>To protect the shared data, <b>STONITH</b>\n must be configured. Heartbeat is capable of driving a number of\nserial and network power switches to prevent a potentially faulty\nnode from corrupting shared data.</p>\n"
+ ),
+ _(
+ "<p>STONITH needs to know which nodes can access the power\n switch. Enter or select the name of the node in <b>Host From</b>.\n For a serial power switch, this is a specific node name.\n For a network power switch, you should typically enter an asterisk\n (*) to indicate that it is accessible from all nodes.</p>\n"
+ )
+ ),
+ _(
+ "<p>The <b>STONITH Type</b> is the name of the module that\n is used to control the power switch. <b>Parameters</b> are\n specific to the module specified. See the <tt>stonith -h</tt>\n command line tool for a list of supported modules and\n the parameters they accept.</p>\n"
+ )
),
"startup_conf" => _(
"<p><b><big>Booting</big></b><br>\nTo start the Heartbeat software each time this cluster server\nis booted, select <b>On</b>. If you select <b>Off</b>, you \nmust start Heartbeat manually each time this cluster server\nis booted. You can start the Heartbeat server manually using\nthe <tt>/etc/init.d/heartbeat start</tt> command.</p>\n<p>To propagate the configuration to all nodes of the cluster and \nto enable heartbeat service on them, run the command line utility \n<tt>/usr/lib/heartbeat/ha_propagate</tt> on this node after the \nconfiguration is saved.</p>\n"
),
- "timeouts_conf" => ((((_(
- "<p>Heartbeat uses a variety of timers to tune and configure its behavior.\nAll timers are specified in seconds.</p>\n"
- ) + _(
- "<p><b>Keep Alive</b> specifies the interval at which a node announces itself on\nthe network.</p>\n"
- )) + _(
- "<p><b>Dead Time</b> is the time after which a node is presumed to be dead.\nIt should probably default to five times the Keep Alive interval.</p>\n"
- )) + _(
- "<p><b>Warn Time</b> is the time after which Heartbeat warns in the log files\nthat a node has been slow in sending its heartbeats. This should\nprobably default to three times the Keep Alive interval.</p>\n"
- )) + _(
- "<p><b>Init Dead Time</b> is the time a node waits after start-up for the other\nnodes, given that sometimes network interfaces, routing, etc., take a\nwhile to stabilize. It should default to at least twice the Dead Time.</p>\n"
- )) + _(
- "If the <b>Watchdog Timer</b> is enabled, Heartbeat uses\nthe in-kernel watchdog for monitoring the local node itself. If\nHeartbeat does not write to that file every sixty seconds, the kernel \nforcibly reboots the node.</p>\n"
- ),
- "ipfail_conf" => (_(
- "<p><b>IP Fail</b> allows monitoring of external\nhosts and moving the resources accordingly (i.e., to the host with the\n<i>best</i> connectivity).</p>\n"
- ) + _(
- "<p>If enabled, Heartbeat needs a <b>Ping List</b> of external nodes to ping.\nThe minimum if IP fail is enabled is one. A maximum of four to eight nodes seems sensible.</p>\n"
- )) + _(
- "<p>For more complex configurations, Heartbeat also supports <i>Ping Groups</i>."
+ "timeouts_conf" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Heartbeat uses a variety of timers to tune and configure its behavior.\nAll timers are specified in seconds.</p>\n"
+ ),
+ _(
+ "<p><b>Keep Alive</b> specifies the interval at which a node announces itself on\nthe network.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Dead Time</b> is the time after which a node is presumed to be dead.\nIt should probably default to five times the Keep Alive interval.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Warn Time</b> is the time after which Heartbeat warns in the log files\nthat a node has been slow in sending its heartbeats. This should\nprobably default to three times the Keep Alive interval.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Init Dead Time</b> is the time a node waits after start-up for the other\nnodes, given that sometimes network interfaces, routing, etc., take a\nwhile to stabilize. It should default to at least twice the Dead Time.</p>\n"
+ )
+ ),
+ _(
+ "If the <b>Watchdog Timer</b> is enabled, Heartbeat uses\nthe in-kernel watchdog for monitoring the local node itself. If\nHeartbeat does not write to that file every sixty seconds, the kernel \nforcibly reboots the node.</p>\n"
+ )
+ ),
+ "ipfail_conf" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b>IP Fail</b> allows monitoring of external\nhosts and moving the resources accordingly (i.e., to the host with the\n<i>best</i> connectivity).</p>\n"
+ ),
+ _(
+ "<p>If enabled, Heartbeat needs a <b>Ping List</b> of external nodes to ping.\nThe minimum if IP fail is enabled is one. A maximum of four to eight nodes seems sensible.</p>\n"
+ )
+ ),
+ _(
+ "<p>For more complex configurations, Heartbeat also supports <i>Ping Groups</i>."
+ )
),
"group_conf" => _(
"A list of IP addresses is grouped together and if any\nof them is reachable, the node is deemed able to communicate with\nthe <i>Ping Group</i>.</p>\n"
diff -ur result/heartbeat/src/include/heartbeat/resources_conf.rb result-bck/heartbeat/src/include/heartbeat/resources_conf.rb
--- result/heartbeat/src/include/heartbeat/resources_conf.rb 2013-06-28 14:17:52.888000000 +0200
+++ result-bck/heartbeat/src/include/heartbeat/resources_conf.rb 2013-06-28 12:36:20.492000000 +0200
@@ -339,8 +339,12 @@
nodes = Convert.to_list(Ops.index(Heartbeat.config, "node", []))
if Builtins.size(nodes) != 2
Report.Error(
- (_("Heartbeat resource manager only supports two nodes.") + " ") + _(
- "Configure nodes first."
+ Ops.add(
+ Ops.add(
+ _("Heartbeat resource manager only supports two nodes."),
+ " "
+ ),
+ _("Configure nodes first.")
)
)
return :node_conf
diff -ur result/http-server/src/include/http-server/helps.rb result-bck/http-server/src/include/http-server/helps.rb
--- result/http-server/src/include/http-server/helps.rb 2013-06-28 14:18:47.480000000 +0200
+++ result-bck/http-server/src/include/http-server/helps.rb 2013-06-28 12:35:42.052000000 +0200
@@ -10,15 +10,21 @@
textdomain "http-server"
Yast.import("ProductFeatures")
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing HTTP Server Configuration</big></b>\n<br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving HTTP Server Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Saving</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs you whether it is safe to do so.</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing HTTP Server Configuration</big></b>\n<br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving HTTP Server Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs you whether it is safe to do so.</p>\n"
+ )
),
"open_port" => _(
"<p>The <b>Port</b> value defines the port on which Apache2 listens. The default is 80.</p>"
@@ -38,12 +44,18 @@
"expert_conf" => _(
"<p>Press <b>HTTP Server Expert Configuration</b> \n\t\tto create a more detailed configuration before writing the configuration.</p>"
),
- "modules" => (_(
- "<p><b><big>Editing HTTP Server Modules</big></b><br>\nThe table contains a list of all available Apache2 modules.\nThe first column contains the name of the module. \nThe second column shows whether the module should be\nloaded by the server. Enabled modules will be loaded. The last column displays a short description\nof the module.</p>"
- ) + _(
- "<p>To change the status of a module, \nchoose the appropriate entry of the table and click <b>Toggle Status</b>.</p>\n"
- )) + _(
- "<p>If you need to add a module not listed in the table, \nuse <b>Add Module</b>.</p>\n"
+ "modules" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Editing HTTP Server Modules</big></b><br>\nThe table contains a list of all available Apache2 modules.\nThe first column contains the name of the module. \nThe second column shows whether the module should be\nloaded by the server. Enabled modules will be loaded. The last column displays a short description\nof the module.</p>"
+ ),
+ _(
+ "<p>To change the status of a module, \nchoose the appropriate entry of the table and click <b>Toggle Status</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p>If you need to add a module not listed in the table, \nuse <b>Add Module</b>.</p>\n"
+ )
),
"server_enable" => _(
"<p><b><big>HTTP Server Settings</big></b><br>\nActivate the HTTP server by choosing <b>Enabled</b>. To deactivate it, choose\n<b>Disabled</b>.</p>\n"
@@ -51,59 +63,99 @@
"firewall_adapt" => _(
"<p>By enabling <b>Open Firewall on Selected Ports</b>, \nadapt the firewall according the ports on which Apache2 listens. \nThe interfaces of the firewall are not added or deleted. \nThis option is only available if the firewall is enabled.</p>\n"
),
- "overview_widget" => (_(
- "<p>The list of options presents\nseveral parts of the server configuration. <b>Listen On</b>\ncontains a list of ports and IP addresses on which the\nserver should listen for the incoming requests. \n<b>Modules</b> allows configuring the modules loaded by the\nserver.\n<b>Default Host</b> is a server name of a host used as a\ndefault (fallback) host. If the server name of the default\nhost is not specified, a path to the document root of the\ndefault host is displayed.\n<b>Hosts</b> contains a list of hosts configured for the server.</p>\n"
- ) + _(
- "<p>Choose an appropriate entry from the table and click <b>Edit</b> to change settings.</p>"
- )) + _(
- "<p><b>Log Files</b> displays server log files.</p>"
- ),
- "hosts" => _(
- "<p><b><big>Configured Hosts</big></b><br>\nThis is a list of already configured hosts. One of the hosts is \nmarked as default (the asterisk next to the server name). A default host is used if no other host\nmatches for an incoming request. To set a host as default,\npress <b>Set as Default</b>.</p>\n"
- ) + _(
- "<p>Choose an appropriate entry of the table and click <b>Edit</b> to change the host.\nTo add a host, click <b>Add</b>. To remove a host, select it and click <b>Delete</b>.</p>"
- ),
- "global_table" => _(
- "<p><b><big>Host Configuration</big></b><br>\nTo edit the host settings, choose the appropriate entry of the table then click <b>Edit</b>.\nTo add a new option, click <b>Add</b>. To remove an option, select it and click <b>Delete</b>.</p>"
- ) + _(
- "<p>The <b>Server Resolution</b> options set the resolution when using\n\tvirtual hosts. However, when you choose <b>Resolution via HTTP Headers</b>,\n\tthe default server will never be served requests to the IP address of\n\ta name-based virtual host. If you plan to configure a SSL based vhost, use <b>Resolution via IP address</b></p>"
- ),
- "listen" => _(
- "<p><b><big><i>Listen</i> Settings for a Host</big></b><br>\nThe <i>Listen</i> directive allows selection of ports and network interfaces\nwhere the HTTP server should listen for incoming requests.</p>\n"
- ) + _(
- "<p>Choose an appropriate entry of the table and click <b>Edit</b> to change the entry.\nTo add a new entry, click <b>Add</b>. To remove an entry, select it and click <b>Delete</b>.</p>"
- ),
- "ssl" => (((_(
- "<p><b><big>SSL Configuration</big></b><br>\nThis is a list of options related to the SSL (Secure Socket Layer) settings\nof the host. SSL allows communicating securely with the host by \nencrypting communication.</p>\n"
- ) + _(
- "<p>General behavior is determined by the SSL option. The host can\nnot support SSL at all (<tt>No SSL</tt>), allow both non-SSL and SSL access (<tt>Allowed</tt>),\nor accept only connections encrypted via SSL (<tt>Required</tt>).\n</p>\n"
- )) + _(
- "<p>Choose an appropriate option of the table and click <b>Edit</b> to change the option.\nTo add a new option, click <b>Add</b>. To remove an option, select it and click <b>Delete</b>.</p>"
- )) + ((ProductFeatures.GetFeature(
- "globals",
- "ui_mode"
- ) != "simple") ? _(
- "<p>The <b>Certificates</b> menu allows \nimporting server certificates. <b>Import Server Certificate</b> \nallows use of a special purpose certificate. \n<b>Use Common Certificate</b> configures usage of the\ncommon certificate issued for this host.</p>\n"
- ) : "")) + _(
- "<p><b>Note:</b> If you enable use of SSL for a host, the <tt>mod_ssl</tt> \nmodule should be loaded by the server.</p>\n"
- ),
- "add_host_general" => (_(
- "<p><b><big>New Host</big></b><br>\nThis dialog allows you to enter a basic information about a new virtual host.</p>"
- ) + _(
- "<p><b>Server Identification</b> specifies the content and\nthe presentation of the the new virtual host. <b>Server Name</b> is the DNS name returned as a part\nof the HTTP headers of the server response. <b>Server Contents Root</b>\nis an absolute path to a directory containing all documents provided by\nthis virtual host. <b>Administrator E-Mail</b> allows setup of an e-mail\naddress for feedback about this host.</p>\n"
- )) + _(
- "<p><big><b>Server Resolution</b></big><br>\nApache2 must be able to determine which virtual host\nsettings it should use to create a response for an HTTP request. \nThere are two basic approaches. If using HTTP headers\nfrom the incoming request, the server looks up the host name specified by\nthe HTTP request headers. The other possibility is to determine the virtual host\nby the IP address used by the client when connecting to the server.\nIf you plan to configure SSL-based vhost, use <b>Resolution via IP address</b>\nConsult the Apache2 manual for further details.</p>\n"
- ),
- "set_vhost" => (((_(
- "<p><b><big>Details for New Host</big></b><br>\nThis dialog allows you to specify additional information about a new virtual host.</p>"
- ) + _(
- "<p>Select <b>Enable CGI Support</b>\nto run CGI scripts in the path in <b>CGI Directory Path</b> using the alias <tt>/cgi-bin/</tt>.</p>"
- )) + _(
- "<p>For HTTPS access to this virtual host, select <b>Enable SSL Support</b>.\n\nThen enter the path for the certificate file in <b>Certificate File\nPath</b>.This option is only available for IP-based vhosts.</p>\n"
- )) + _(
- "<p>In <b>Directory Index</b>, enter a space-separated list of files that Apache should look for and provide when a URL for a directory (one that ends in <tt>/</tt>) is requested. The first matching file found is provided.</p>"
- )) + _(
- "<p><b>Public HTML</b>\n\nenables access to <tt>.public_html</tt> directories of all users.</p>"
+ "overview_widget" => Ops.add(
+ Ops.add(
+ _(
+ "<p>The list of options presents\nseveral parts of the server configuration. <b>Listen On</b>\ncontains a list of ports and IP addresses on which the\nserver should listen for the incoming requests. \n<b>Modules</b> allows configuring the modules loaded by the\nserver.\n<b>Default Host</b> is a server name of a host used as a\ndefault (fallback) host. If the server name of the default\nhost is not specified, a path to the document root of the\ndefault host is displayed.\n<b>Hosts</b> contains a list of hosts configured for the server.</p>\n"
+ ),
+ _(
+ "<p>Choose an appropriate entry from the table and click <b>Edit</b> to change settings.</p>"
+ )
+ ),
+ _("<p><b>Log Files</b> displays server log files.</p>")
+ ),
+ "hosts" => Ops.add(
+ _(
+ "<p><b><big>Configured Hosts</big></b><br>\nThis is a list of already configured hosts. One of the hosts is \nmarked as default (the asterisk next to the server name). A default host is used if no other host\nmatches for an incoming request. To set a host as default,\npress <b>Set as Default</b>.</p>\n"
+ ),
+ _(
+ "<p>Choose an appropriate entry of the table and click <b>Edit</b> to change the host.\nTo add a host, click <b>Add</b>. To remove a host, select it and click <b>Delete</b>.</p>"
+ )
+ ),
+ "global_table" => Ops.add(
+ _(
+ "<p><b><big>Host Configuration</big></b><br>\nTo edit the host settings, choose the appropriate entry of the table then click <b>Edit</b>.\nTo add a new option, click <b>Add</b>. To remove an option, select it and click <b>Delete</b>.</p>"
+ ),
+ _(
+ "<p>The <b>Server Resolution</b> options set the resolution when using\n\tvirtual hosts. However, when you choose <b>Resolution via HTTP Headers</b>,\n\tthe default server will never be served requests to the IP address of\n\ta name-based virtual host. If you plan to configure a SSL based vhost, use <b>Resolution via IP address</b></p>"
+ )
+ ),
+ "listen" => Ops.add(
+ _(
+ "<p><b><big><i>Listen</i> Settings for a Host</big></b><br>\nThe <i>Listen</i> directive allows selection of ports and network interfaces\nwhere the HTTP server should listen for incoming requests.</p>\n"
+ ),
+ _(
+ "<p>Choose an appropriate entry of the table and click <b>Edit</b> to change the entry.\nTo add a new entry, click <b>Add</b>. To remove an entry, select it and click <b>Delete</b>.</p>"
+ )
+ ),
+ "ssl" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>SSL Configuration</big></b><br>\nThis is a list of options related to the SSL (Secure Socket Layer) settings\nof the host. SSL allows communicating securely with the host by \nencrypting communication.</p>\n"
+ ),
+ _(
+ "<p>General behavior is determined by the SSL option. The host can\nnot support SSL at all (<tt>No SSL</tt>), allow both non-SSL and SSL access (<tt>Allowed</tt>),\nor accept only connections encrypted via SSL (<tt>Required</tt>).\n</p>\n"
+ )
+ ),
+ _(
+ "<p>Choose an appropriate option of the table and click <b>Edit</b> to change the option.\nTo add a new option, click <b>Add</b>. To remove an option, select it and click <b>Delete</b>.</p>"
+ )
+ ),
+ (ProductFeatures.GetFeature("globals", "ui_mode") != "simple") ? _(
+ "<p>The <b>Certificates</b> menu allows \nimporting server certificates. <b>Import Server Certificate</b> \nallows use of a special purpose certificate. \n<b>Use Common Certificate</b> configures usage of the\ncommon certificate issued for this host.</p>\n"
+ ) : ""
+ ),
+ _(
+ "<p><b>Note:</b> If you enable use of SSL for a host, the <tt>mod_ssl</tt> \nmodule should be loaded by the server.</p>\n"
+ )
+ ),
+ "add_host_general" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>New Host</big></b><br>\nThis dialog allows you to enter a basic information about a new virtual host.</p>"
+ ),
+ _(
+ "<p><b>Server Identification</b> specifies the content and\nthe presentation of the the new virtual host. <b>Server Name</b> is the DNS name returned as a part\nof the HTTP headers of the server response. <b>Server Contents Root</b>\nis an absolute path to a directory containing all documents provided by\nthis virtual host. <b>Administrator E-Mail</b> allows setup of an e-mail\naddress for feedback about this host.</p>\n"
+ )
+ ),
+ _(
+ "<p><big><b>Server Resolution</b></big><br>\nApache2 must be able to determine which virtual host\nsettings it should use to create a response for an HTTP request. \nThere are two basic approaches. If using HTTP headers\nfrom the incoming request, the server looks up the host name specified by\nthe HTTP request headers. The other possibility is to determine the virtual host\nby the IP address used by the client when connecting to the server.\nIf you plan to configure SSL-based vhost, use <b>Resolution via IP address</b>\nConsult the Apache2 manual for further details.</p>\n"
+ )
+ ),
+ "set_vhost" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Details for New Host</big></b><br>\nThis dialog allows you to specify additional information about a new virtual host.</p>"
+ ),
+ _(
+ "<p>Select <b>Enable CGI Support</b>\nto run CGI scripts in the path in <b>CGI Directory Path</b> using the alias <tt>/cgi-bin/</tt>.</p>"
+ )
+ ),
+ _(
+ "<p>For HTTPS access to this virtual host, select <b>Enable SSL Support</b>.\n\nThen enter the path for the certificate file in <b>Certificate File\nPath</b>.This option is only available for IP-based vhosts.</p>\n"
+ )
+ ),
+ _(
+ "<p>In <b>Directory Index</b>, enter a space-separated list of files that Apache should look for and provide when a URL for a directory (one that ends in <tt>/</tt>) is requested. The first matching file found is provided.</p>"
+ )
+ ),
+ _(
+ "<p><b>Public HTML</b>\n\nenables access to <tt>.public_html</tt> directories of all users.</p>"
+ )
)
}
end
diff -ur result/http-server/src/include/http-server/wizard-dialog.rb result-bck/http-server/src/include/http-server/wizard-dialog.rb
--- result/http-server/src/include/http-server/wizard-dialog.rb 2013-06-28 14:18:45.152000000 +0200
+++ result-bck/http-server/src/include/http-server/wizard-dialog.rb 2013-06-28 12:35:42.052000000 +0200
@@ -38,7 +38,7 @@
widget_names = ["open_port", "listen_interfaces", "firewall_adapt"]
w = CWM.CreateWidgets(widget_names, HttpServerWidgets.widgets)
help = Ops.add(
- ("<h3>" + _("Network Device Selection")) + "</h3>",
+ Ops.add(Ops.add("<h3>", _("Network Device Selection")), "</h3>"),
CWM.MergeHelps(w)
)
contents = CWM.PrepareDialog(contents, w)
@@ -119,7 +119,10 @@
contents = Top("script_modules")
widget_names = ["script_modules"]
w = CWM.CreateWidgets(widget_names, HttpServerWidgets.widgets)
- help = Ops.add(("<h3>" + _("Modules")) + "</h3>", CWM.MergeHelps(w))
+ help = Ops.add(
+ Ops.add(Ops.add("<h3>", _("Modules")), "</h3>"),
+ CWM.MergeHelps(w)
+ )
contents = CWM.PrepareDialog(contents, w)
Wizard.SetContentsButtons(
caption,
diff -ur result/http-server/src/modules/HttpServer.rb result-bck/http-server/src/modules/HttpServer.rb
--- result/http-server/src/modules/HttpServer.rb 2013-06-28 14:18:29.048000000 +0200
+++ result-bck/http-server/src/modules/HttpServer.rb 2013-06-28 12:35:42.048000000 +0200
@@ -115,10 +115,11 @@
end
if !Package.InstallAllMsg(
required,
- _(
- "<p>To configure the HTTP server, the <b>%1</b> packages must be installed.</p>"
- ) + _(
- "<p>Do you want to install it now?</p>"
+ Ops.add(
+ _(
+ "<p>To configure the HTTP server, the <b>%1</b> packages must be installed.</p>"
+ ),
+ _("<p>Do you want to install it now?</p>")
)
)
if !Package.Available("apache2")
@@ -518,7 +519,7 @@
)
summary = Summary.AddLine(
summary,
- "SSL " + (ssl ? _("enabled") : _("disabled"))
+ Ops.add("SSL ", ssl ? _("enabled") : _("disabled"))
)
summary = Summary.AddLine(summary, _("<h3>Virtual Hosts</h3>"))
Builtins.foreach(YaST::HTTPDData.GetHostsList) { |host|
diff -ur result/http-server/src/modules/HttpServerWidgets.rb result-bck/http-server/src/modules/HttpServerWidgets.rb
--- result/http-server/src/modules/HttpServerWidgets.rb 2013-06-28 14:18:37.176000000 +0200
+++ result-bck/http-server/src/modules/HttpServerWidgets.rb 2013-06-28 12:35:42.048000000 +0200
@@ -360,7 +360,7 @@
"custom_widget" => VBox(
Table(
Id(:modules),
- Header(_("Name"), _("Status") + " ", _("Description")),
+ Header(_("Name"), Ops.add(_("Status"), " "), _("Description")),
[]
),
HBox(
@@ -771,7 +771,7 @@
def validate_servername(value)
if !Hostname.CheckFQ(value)
Popup.Error(
- Ops.add(_("Invalid server name.") + "\n\n", Hostname.ValidFQ)
+ Ops.add(Ops.add(_("Invalid server name."), "\n\n"), Hostname.ValidFQ)
)
return false
else
diff -ur result/inetd/src/include/inetd/helps.rb result-bck/inetd/src/include/inetd/helps.rb
--- result/inetd/src/include/inetd/helps.rb 2013-06-28 14:16:28.196000000 +0200
+++ result-bck/inetd/src/include/inetd/helps.rb 2013-06-28 12:35:52.560000000 +0200
@@ -11,55 +11,112 @@
@HELPS = {
"no_install" => _("No packages selected. Configuration aborted."),
"install_packages" => _("Selected packages will be installed."),
- "read" => _(
- "<p><b><big>Initializing xinetd Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting the Initialization Process:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing xinetd Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting the Initialization Process:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
),
- "write" => _(
- "<p><b><big>Saving xinetd Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting the Save Process:</big></b><br>\nAbort saving by pressing <b>Abort</b>.\nAn additional dialog will inform you whether it is safe to do so.\n</p>\n"
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving xinetd Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting the Save Process:</big></b><br>\nAbort saving by pressing <b>Abort</b>.\nAn additional dialog will inform you whether it is safe to do so.\n</p>\n"
+ )
),
- "c1" => ((((((((_(
- "<p><b><big>Network Service Configuration</big></b><br>\nClick <b>Enable</b> to enable network services managed by a super-server\nconfiguration. To stop the super-server, click <b>Disable</b>.</p>\n"
- ) + "<p><br></p>") + _(
- "<p><b><big>Configuration Service Status:</big></b><br>\nAll services marked with <b>X</b> in column <b>Ch</b> were edited\nand will be changed in the system configuration.</p>\n"
- )) + _(
- "<p><b><big>Services Status:</big></b><br>\nAll services marked with <b>---</b> are inactive (locked).\nAll services marked with <b>On</b> are active (unlocked).\nAll services marked with <b>NI</b> are not installed and cannot be configured.</p>"
- )) + _(
- "<p><b><big>Changing Service Status:</big></b><br>\nSelect the service to enable or disable and press <b>Toggle Status (On or Off)</b>.</p>\n"
- )) + _(
- "<p><b><big>Editing Services:</big></b><br>\nSelect the service to edit and press <b>Edit</b>.</p>\n"
- )) + _(
- "<p><b><big>Deleting Services:</big></b><br>\nSelect the service to delete and press <b>Delete</b>.</p>\n"
- )) + _(
- "<p><b><big>Adding a New Entry:</big></b>\nClick <b>Create</b> and complete the form.</p>\n"
- )) + "<p><br></p>") + _(
- "<p><b><big>Canceling Configuration:</big></b>\nLeave the configuration untouched by pressing the <b>Cancel</b> button.\nIf you do so, all your changes will be lost and the original configuration will remain.</p>\n"
+ "c1" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Network Service Configuration</big></b><br>\nClick <b>Enable</b> to enable network services managed by a super-server\nconfiguration. To stop the super-server, click <b>Disable</b>.</p>\n"
+ ),
+ "<p><br></p>"
+ ),
+ _(
+ "<p><b><big>Configuration Service Status:</big></b><br>\nAll services marked with <b>X</b> in column <b>Ch</b> were edited\nand will be changed in the system configuration.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Services Status:</big></b><br>\nAll services marked with <b>---</b> are inactive (locked).\nAll services marked with <b>On</b> are active (unlocked).\nAll services marked with <b>NI</b> are not installed and cannot be configured.</p>"
+ )
+ ),
+ _(
+ "<p><b><big>Changing Service Status:</big></b><br>\nSelect the service to enable or disable and press <b>Toggle Status (On or Off)</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing Services:</big></b><br>\nSelect the service to edit and press <b>Edit</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Deleting Services:</big></b><br>\nSelect the service to delete and press <b>Delete</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Adding a New Entry:</big></b>\nClick <b>Create</b> and complete the form.</p>\n"
+ )
+ ),
+ "<p><br></p>"
+ ),
+ _(
+ "<p><b><big>Canceling Configuration:</big></b>\nLeave the configuration untouched by pressing the <b>Cancel</b> button.\nIf you do so, all your changes will be lost and the original configuration will remain.</p>\n"
+ )
)
}
end
def EditCreateHelp
- return (((((((_(
- "\n<p>To create a valid entry (service) for the super-server,\nenter</p>\n"
- ) + _(
- "<ul>\n<li>service name\n<li>RPC version (optional)\n<li>socket type\n<li>protocol\n<li>wait/nowait\n<li>user\n<li>group\n<li>server program\n<li>server program arguments\n</ul>"
- )) + _(
- "<p>This is a short description. For details, see <b>info xinetd.conf</b>.</p>\n"
- )) + _(
- "<p>Enter a valid service name into the <b>service</b> field.\n</p>\n"
- )) + _(
- "<p>The <b>socket type</b> should be stream, dgram, raw, or seqpacket,\ndepending on whether the service is stream-based, is datagram-based,\nrequires direct access to IP, or requires reliable sequential datagram\ntransmission.</p>\n"
- )) + _(
- "<p>The <b>protocol</b> must be a valid protocol as specified in /etc/protocols.\nExamples include <i>tcp</i>,<i>udp</i>,<i>rpc/tcp</i>, and <i>rpc/udp</i>.\n</p>\n"
- )) + _(
- "<p>The <b>wait/nowait</b> entry determines if the service is\nsingle-threaded or multithreaded and whether xinetd accepts the\nconnection or the server program accepts the connection. If its value is\n<b>yes</b>, the service is single-threaded. This means that xinetd \nstarts the server then stops handling requests for the service\nuntil the server dies and that the server software accepts the\nconnection. If the attribute value is <b>no</b>, the service is\nmultithreaded and xinetd keeps handling new service requests and\nxinetd accepts the connection. \n<i>udp/dgram</i> services normally expect the value to be <b>yes</b>,\nbecause udp is not connection oriented. <i>tcp/stream</i> servers\nnormally expect the value to be <b>no</b>.</p>\n"
- )) + _(
- "<p>The server will be run with the permissions of the user selected in\n<b>User</b>. This is useful to make services run with permissions\nless than root.\n</p>\n"
- )) + _(
- "<p>In <b>Server</b>, enter the path name of the program to\nbe executed by the super-server when a request reaches its socket.\nParameters for this program can be specified in <b>Server Arguments</b>.\n\n</p>\n"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "\n<p>To create a valid entry (service) for the super-server,\nenter</p>\n"
+ ),
+ _(
+ "<ul>\n<li>service name\n<li>RPC version (optional)\n<li>socket type\n<li>protocol\n<li>wait/nowait\n<li>user\n<li>group\n<li>server program\n<li>server program arguments\n</ul>"
+ )
+ ),
+ _(
+ "<p>This is a short description. For details, see <b>info xinetd.conf</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p>Enter a valid service name into the <b>service</b> field.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>The <b>socket type</b> should be stream, dgram, raw, or seqpacket,\ndepending on whether the service is stream-based, is datagram-based,\nrequires direct access to IP, or requires reliable sequential datagram\ntransmission.</p>\n"
+ )
+ ),
+ _(
+ "<p>The <b>protocol</b> must be a valid protocol as specified in /etc/protocols.\nExamples include <i>tcp</i>,<i>udp</i>,<i>rpc/tcp</i>, and <i>rpc/udp</i>.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>The <b>wait/nowait</b> entry determines if the service is\nsingle-threaded or multithreaded and whether xinetd accepts the\nconnection or the server program accepts the connection. If its value is\n<b>yes</b>, the service is single-threaded. This means that xinetd \nstarts the server then stops handling requests for the service\nuntil the server dies and that the server software accepts the\nconnection. If the attribute value is <b>no</b>, the service is\nmultithreaded and xinetd keeps handling new service requests and\nxinetd accepts the connection. \n<i>udp/dgram</i> services normally expect the value to be <b>yes</b>,\nbecause udp is not connection oriented. <i>tcp/stream</i> servers\nnormally expect the value to be <b>no</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p>The server will be run with the permissions of the user selected in\n<b>User</b>. This is useful to make services run with permissions\nless than root.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>In <b>Server</b>, enter the path name of the program to\nbe executed by the super-server when a request reaches its socket.\nParameters for this program can be specified in <b>Server Arguments</b>.\n\n</p>\n"
+ )
)
end
end
diff -ur result/installation/src/clients/copy_files_finish.rb result-bck/installation/src/clients/copy_files_finish.rb
--- result/installation/src/clients/copy_files_finish.rb 2013-06-28 14:09:33.880000000 +0200
+++ result-bck/installation/src/clients/copy_files_finish.rb 2013-06-28 12:35:50.088000000 +0200
@@ -214,7 +214,7 @@
Ops.add(
Ops.add(
Ops.add(
- "/bin/chmod 0644 " + "'",
+ Ops.add("/bin/chmod 0644 ", "'"),
String.Quote(Installation.destdir)
),
Directory.etcdir
@@ -246,7 +246,7 @@
Ops.add(
Ops.add(
Ops.add(
- "/bin/chmod 0644 " + "'",
+ Ops.add("/bin/chmod 0644 ", "'"),
String.Quote(Installation.destdir)
),
Directory.etcdir
diff -ur result/installation/src/clients/deploy_image_auto.rb result-bck/installation/src/clients/deploy_image_auto.rb
--- result/installation/src/clients/deploy_image_auto.rb 2013-06-28 14:09:24.012000000 +0200
+++ result-bck/installation/src/clients/deploy_image_auto.rb 2013-06-28 12:35:50.088000000 +0200
@@ -58,11 +58,17 @@
end
else
if @func == "Summary"
- @ret = ("<ul><li>" + ((Installation.image_installation == true) ? _(
- "Installation from images is: <b>enabled</b>"
- ) : _(
- "Installation from images is: <b>disabled</b>"
- ))) + "</li></ul>"
+ @ret = Ops.add(
+ Ops.add(
+ "<ul><li>",
+ (Installation.image_installation == true) ? _(
+ "Installation from images is: <b>enabled</b>"
+ ) : _(
+ "Installation from images is: <b>disabled</b>"
+ )
+ ),
+ "</li></ul>"
+ )
else
if @func == "GetModified"
@ret = true
@@ -127,8 +133,11 @@
1,
VBox(
Label(
- _("Here you can create custom images.\n") + _(
- "You have to configure the software selection first before you can create an image here"
+ Ops.add(
+ _("Here you can create custom images.\n"),
+ _(
+ "You have to configure the software selection first before you can create an image here"
+ )
)
),
RadioButtonGroup(
@@ -194,10 +203,13 @@
),
HStretch()
),
- _(
- "<p><b>Installation from Images</b> is used to speed the installation up.\nImages contain compressed snapshots of an installed system matching your\nselection of patterns. The rest of the packages which are not contained in the\nimages will be installed from packages the standard way.</p>\n"
- ) + _(
- "<p><b>Creating own Images</b> is used if you\nwant to skip the complete step of RPM installation. Instead AutoYaST will dump an\nimage on the harddisk which is a lot faster and can be pre-configured already.\nEverything else than RPM installation is done like during a normal auto-installation.</p>"
+ Ops.add(
+ _(
+ "<p><b>Installation from Images</b> is used to speed the installation up.\nImages contain compressed snapshots of an installed system matching your\nselection of patterns. The rest of the packages which are not contained in the\nimages will be installed from packages the standard way.</p>\n"
+ ),
+ _(
+ "<p><b>Creating own Images</b> is used if you\nwant to skip the complete step of RPM installation. Instead AutoYaST will dump an\nimage on the harddisk which is a lot faster and can be pre-configured already.\nEverything else than RPM installation is done like during a normal auto-installation.</p>"
+ )
),
Label.BackButton,
Label.OKButton
diff -ur result/installation/src/clients/deploying_proposal.rb result-bck/installation/src/clients/deploying_proposal.rb
--- result/installation/src/clients/deploying_proposal.rb 2013-06-28 14:09:29.324000000 +0200
+++ result-bck/installation/src/clients/deploying_proposal.rb 2013-06-28 12:35:50.088000000 +0200
@@ -41,12 +41,18 @@
@ret = {
"preformatted_proposal" => GenerateProposalText(),
"links" => [@im_do_enable, @im_do_disable],
- "help" => (_(
- "<p><b>Installation from Images</b> is used to speed the installation up.\nImages contain compressed snapshots of an installed system matching your\nselection of patterns. The rest of the packages which are not contained in the\nimages will be installed from packages the standard way.</p>\n"
- ) + _(
- "<p>Note that when installing from images, the time stamps of all packages originating from the images will\nnot match the installation date but rather the date the image was created.</p>"
- )) + _(
- "<p>Installation from images is disabled by default if the current\npattern selection does not fit any set of images.</p>"
+ "help" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b>Installation from Images</b> is used to speed the installation up.\nImages contain compressed snapshots of an installed system matching your\nselection of patterns. The rest of the packages which are not contained in the\nimages will be installed from packages the standard way.</p>\n"
+ ),
+ _(
+ "<p>Note that when installing from images, the time stamps of all packages originating from the images will\nnot match the installation date but rather the date the image was created.</p>"
+ )
+ ),
+ _(
+ "<p>Installation from images is disabled by default if the current\npattern selection does not fit any set of images.</p>"
+ )
)
}
else
diff -ur result/installation/src/clients/desktop_finish.rb result-bck/installation/src/clients/desktop_finish.rb
--- result/installation/src/clients/desktop_finish.rb 2013-06-28 14:10:20.504000000 +0200
+++ result-bck/installation/src/clients/desktop_finish.rb 2013-06-28 12:35:50.088000000 +0200
@@ -183,7 +183,16 @@
@ret2 = Convert.to_map(
SCR.Execute(
path(".target.bash_output"),
- (("test -x /sbin/set_polkit_default_privs && " + "echo /sbin/set_polkit_default_privs && ") + "/sbin/set_polkit_default_privs | wc -l && ") + "echo 'Done'"
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ "test -x /sbin/set_polkit_default_privs && ",
+ "echo /sbin/set_polkit_default_privs && "
+ ),
+ "/sbin/set_polkit_default_privs | wc -l && "
+ ),
+ "echo 'Done'"
+ )
)
)
Builtins.y2milestone("Command returned: %1", @ret2)
diff -ur result/installation/src/clients/inst_complex_welcome.rb result-bck/installation/src/clients/inst_complex_welcome.rb
--- result/installation/src/clients/inst_complex_welcome.rb 2013-06-28 14:09:15.416000000 +0200
+++ result-bck/installation/src/clients/inst_complex_welcome.rb 2013-06-28 12:35:50.088000000 +0200
@@ -105,16 +105,26 @@
),
VWeight(1, VStretch())
)
- @help_text = (((_(
- "<p>\nChoose the <b>Language</b> and the <b>Keyboard layout</b> to be used during\ninstallation and for the installed system.\n</p>\n"
- ) + _(
- "<p>\nThe license must be accepted before the installation continues.\nUse <b>License Translations...</b> to show the license in all available translations.\n</p>\n"
- )) + _(
- "<p>\nClick <b>Next</b> to proceed to the next dialog.\n</p>\n"
- )) + _(
- "<p>\nNothing will happen to your computer until you confirm\nall your settings in the last installation dialog.\n</p>\n"
- )) + _(
- "<p>\nSelect <b>Abort</b> to abort the\ninstallation process at any time.\n</p>\n"
+ @help_text = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>\nChoose the <b>Language</b> and the <b>Keyboard layout</b> to be used during\ninstallation and for the installed system.\n</p>\n"
+ ),
+ _(
+ "<p>\nThe license must be accepted before the installation continues.\nUse <b>License Translations...</b> to show the license in all available translations.\n</p>\n"
+ )
+ ),
+ _("<p>\nClick <b>Next</b> to proceed to the next dialog.\n</p>\n")
+ ),
+ _(
+ "<p>\nNothing will happen to your computer until you confirm\nall your settings in the last installation dialog.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>\nSelect <b>Abort</b> to abort the\ninstallation process at any time.\n</p>\n"
+ )
)
Wizard.SetContents(
@heading_text,
diff -ur result/installation/src/clients/inst_congratulate.rb result-bck/installation/src/clients/inst_congratulate.rb
--- result/installation/src/clients/inst_congratulate.rb 2013-06-28 14:10:16.568000000 +0200
+++ result-bck/installation/src/clients/inst_congratulate.rb 2013-06-28 12:35:50.088000000 +0200
@@ -100,8 +100,11 @@
if @text == ""
@text = Ops.add(
Ops.add(
- _("<p><b>Congratulations!</b></p>") + _(
- "<p>The installation of &product; on your machine is complete.\nAfter clicking <b>Finish</b>, you can log in to the system.</p>\n"
+ Ops.add(
+ _("<p><b>Congratulations!</b></p>"),
+ _(
+ "<p>The installation of &product; on your machine is complete.\nAfter clicking <b>Finish</b>, you can log in to the system.</p>\n"
+ )
),
Builtins.sformat(_("<p>Visit us at %1.</p>"), @vendor_url)
),
@@ -126,12 +129,17 @@
VSpacing(2)
)
@help_file = ""
- @help = (_("<p>Your system is ready for use.</p>") + _(
- "<p><b>Finish</b> will close the YaST installation and take you\nto the login screen.</p>\n"
- )) + (DisplayKDEHelp(
- ) ? _(
- "<p>If you choose the default graphical desktop KDE, you can\nadjust some KDE settings to your hardware. Also notice\nour SUSE Welcome Dialog.</p>\n"
- ) : "")
+ @help = Ops.add(
+ Ops.add(
+ _("<p>Your system is ready for use.</p>"),
+ _(
+ "<p><b>Finish</b> will close the YaST installation and take you\nto the login screen.</p>\n"
+ )
+ ),
+ DisplayKDEHelp() ? _(
+ "<p>If you choose the default graphical desktop KDE, you can\nadjust some KDE settings to your hardware. Also notice\nour SUSE Welcome Dialog.</p>\n"
+ ) : ""
+ )
if @show_clone_checkbox
@help = Ops.add(
@help,
@@ -209,10 +217,11 @@
AddOnProduct.ReadTmpExportFilename
if !Package.InstallMsg(
"autoyast2",
- _(
- "<p>To clone the current system, the <b>%1</b> package must be installed.</p>"
- ) + _(
- "<p>Install it now?</p>"
+ Ops.add(
+ _(
+ "<p>To clone the current system, the <b>%1</b> package must be installed.</p>"
+ ),
+ _("<p>Install it now?</p>")
)
)
Popup.Error(_("autoyast2 package not installed. Cloning disabled."))
diff -ur result/installation/src/clients/inst_extrasources.rb result-bck/installation/src/clients/inst_extrasources.rb
--- result/installation/src/clients/inst_extrasources.rb 2013-06-28 14:09:53.840000000 +0200
+++ result-bck/installation/src/clients/inst_extrasources.rb 2013-06-28 12:35:50.088000000 +0200
@@ -82,9 +82,12 @@
Ops.index(@upgrade_info, "repositories", [])
)
if Ops.greater_than(Builtins.size(@upgrade_repos), 0)
- @message = _(
- "Package updates have been found in these additional repositories:"
- ) + "\n\n"
+ @message = Ops.add(
+ _(
+ "Package updates have been found in these additional repositories:"
+ ),
+ "\n\n"
+ )
Builtins.foreach(@upgrade_repos) { |repo|
repo_info = Pkg.SourceGeneralData(repo)
@message = Ops.add(
diff -ur result/installation/src/clients/inst_mode.rb result-bck/installation/src/clients/inst_mode.rb
--- result/installation/src/clients/inst_mode.rb 2013-06-28 14:09:39.508000000 +0200
+++ result-bck/installation/src/clients/inst_mode.rb 2013-06-28 12:35:50.088000000 +0200
@@ -382,25 +382,46 @@
end
def InstModeDialogHelp
- return ((((((_(
- "<p><big><b>Installation Mode</b></big><br>\nSelect what to do:</p>"
- ) + _(
- "<p>\nSelect <b>New Installation</b> if there is no existing Linux system on your\nmachine or if you want to replace an existing Linux system completely,\ndiscarding all its configuration data.\n</p>\n"
- )) + _(
- "<p>\nSelect <b>Update an Existing System</b> to update a Linux system already\ninstalled on your machine. This option preserves configuration settings\nfrom your existing system whenever possible.\n</p>"
- )) + ((@show_online_repositories == true) ? _(
- "<p>\nTo use suggested remote repositories during installation or update, select\n<b>Add Online Repositories Before Installation</b>.</p>"
- ) : "")) + _(
- "<p>\nTo install an add-on product from separate media together with &product;, select\n<b>Include Add-on Products from Separate Media</b>.</p>\n"
- )) + ((InstData.enable_autoconfiguration(
- ) == true) ? (_(
- "<p>\nSelect <b>Use Automatic Configuration</b> to let the installation program\nconfigure your network and hardware automatically. Otherwise you will\nbe offered a configuration proposal with the possibility to tune all the\nsettings manually. Inexperienced users are advised to use automatic\nconfiguration.</p>\n"
- ) + _(
- "<p>Update mode does not support automatic configuration.</p>"
- )) : "")) + _(
- "<p>The feature <b>Update</b> is only\navailable if an existing Linux system has been detected.\n</p>\n"
- )) + _(
- "<p>If you need specific hardware drivers for installation, see <i>http://drivers.suse.com</i> site.</p>"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><big><b>Installation Mode</b></big><br>\nSelect what to do:</p>"
+ ),
+ _(
+ "<p>\nSelect <b>New Installation</b> if there is no existing Linux system on your\nmachine or if you want to replace an existing Linux system completely,\ndiscarding all its configuration data.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>\nSelect <b>Update an Existing System</b> to update a Linux system already\ninstalled on your machine. This option preserves configuration settings\nfrom your existing system whenever possible.\n</p>"
+ )
+ ),
+ (@show_online_repositories == true) ? _(
+ "<p>\nTo use suggested remote repositories during installation or update, select\n<b>Add Online Repositories Before Installation</b>.</p>"
+ ) : ""
+ ),
+ _(
+ "<p>\nTo install an add-on product from separate media together with &product;, select\n<b>Include Add-on Products from Separate Media</b>.</p>\n"
+ )
+ ),
+ (InstData.enable_autoconfiguration == true) ? Ops.add(
+ _(
+ "<p>\nSelect <b>Use Automatic Configuration</b> to let the installation program\nconfigure your network and hardware automatically. Otherwise you will\nbe offered a configuration proposal with the possibility to tune all the\nsettings manually. Inexperienced users are advised to use automatic\nconfiguration.</p>\n"
+ ),
+ _("<p>Update mode does not support automatic configuration.</p>")
+ ) : ""
+ ),
+ _(
+ "<p>The feature <b>Update</b> is only\navailable if an existing Linux system has been detected.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>If you need specific hardware drivers for installation, see <i>http://drivers.suse.com</i> site.</p>"
+ )
)
end
diff -ur result/installation/src/clients/inst_network_check.rb result-bck/installation/src/clients/inst_network_check.rb
--- result/installation/src/clients/inst_network_check.rb 2013-06-28 14:09:54.840000000 +0200
+++ result-bck/installation/src/clients/inst_network_check.rb 2013-06-28 12:35:50.088000000 +0200
@@ -92,10 +92,13 @@
),
VStretch()
),
- _(
- "<p>The current installation system does not\nhave a configured network.</p>\n"
- ) + _(
- "<p>A configured network is needed for using remote repositories\nor add-on products. If you do not use remote repositories, skip the configuration.</p>\n"
+ Ops.add(
+ _(
+ "<p>The current installation system does not\nhave a configured network.</p>\n"
+ ),
+ _(
+ "<p>A configured network is needed for using remote repositories\nor add-on products. If you do not use remote repositories, skip the configuration.</p>\n"
+ )
),
@enable_next,
@enable_back
diff -ur result/installation/src/clients/inst_network_setup.rb result-bck/installation/src/clients/inst_network_setup.rb
--- result/installation/src/clients/inst_network_setup.rb 2013-06-28 14:09:20.192000000 +0200
+++ result-bck/installation/src/clients/inst_network_setup.rb 2013-06-28 12:35:50.088000000 +0200
@@ -407,12 +407,18 @@
Left(Label(_("Hardware Information of the Selected Network Card"))),
VWeight(2, RichText(Id("hardware_information"), ""))
),
- (_(
- "<p>Here you can configure your network cards to be used immediately.</p>"
- ) + _(
- "<p>If you do not need a network connection now,\nyou can safely skip the configuration.</p>"
- )) + _(
- "<p>To configure a network card, select it from the list\nand click the <b>Next</b> button.\nOtherwise, click <b>Cancel</b>.</p>\n"
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Here you can configure your network cards to be used immediately.</p>"
+ ),
+ _(
+ "<p>If you do not need a network connection now,\nyou can safely skip the configuration.</p>"
+ )
+ ),
+ _(
+ "<p>To configure a network card, select it from the list\nand click the <b>Next</b> button.\nOtherwise, click <b>Cancel</b>.</p>\n"
+ )
),
Label.BackButton,
Label.NextButton
@@ -899,10 +905,13 @@
Wizard.SetContentsButtons(
_("Network Setup"),
HBox(HStretch(), netsetup_dialog, HStretch()),
- _(
- "<p><big><b>Network Setup</b></big>\n<br>Configure your network card.\nSelect either DHCP or static setup. DHCP fits for most cases.\nFor details contact your Internet provider or your network\nadministrator.</p>\n"
- ) + _(
- "<p><big><b>Proxy</b></big>\n<br>Proxy is a server-based cache for accessing the web.\nIn most cases, if you have a direct connection to the Internet,\nyou do not need to use one.</p>\n"
+ Ops.add(
+ _(
+ "<p><big><b>Network Setup</b></big>\n<br>Configure your network card.\nSelect either DHCP or static setup. DHCP fits for most cases.\nFor details contact your Internet provider or your network\nadministrator.</p>\n"
+ ),
+ _(
+ "<p><big><b>Proxy</b></big>\n<br>Proxy is a server-based cache for accessing the web.\nIn most cases, if you have a direct connection to the Internet,\nyou do not need to use one.</p>\n"
+ )
),
Label.BackButton,
Label.OKButton
diff -ur result/installation/src/clients/inst_new_desktop.rb result-bck/installation/src/clients/inst_new_desktop.rb
--- result/installation/src/clients/inst_new_desktop.rb 2013-06-28 14:09:30.936000000 +0200
+++ result-bck/installation/src/clients/inst_new_desktop.rb 2013-06-28 12:35:50.088000000 +0200
@@ -27,10 +27,13 @@
Ops.index(UI.GetDisplayInfo, "TextMode", false),
{ :from => "any", :to => "boolean" }
)
- @help = _(
- "<p>At Linux <b>choice</b> is a top priority. <i>openSUSE</i> offers a number \nof different desktop environments. Below you see a list of the 2 major ones \n<b>GNOME</b> and <b>KDE</b>.</p>"
- ) + _(
- "<p>You may select alternative desktop environments (or one of minimal installation patterns)\nthat could fit your needs better using the <b>Other</b> option . Later in the software \nselection or after installation, you can change your selection or add additional desktop \nenvironments. This screen allows you to set the default.</p>"
+ @help = Ops.add(
+ _(
+ "<p>At Linux <b>choice</b> is a top priority. <i>openSUSE</i> offers a number \nof different desktop environments. Below you see a list of the 2 major ones \n<b>GNOME</b> and <b>KDE</b>.</p>"
+ ),
+ _(
+ "<p>You may select alternative desktop environments (or one of minimal installation patterns)\nthat could fit your needs better using the <b>Other</b> option . Later in the software \nselection or after installation, you can change your selection or add additional desktop \nenvironments. This screen allows you to set the default.</p>"
+ )
)
if (DefaultDesktop.Desktop == nil) || (DefaultDesktop.Desktop == "")
DefaultDesktop.Init
diff -ur result/installation/src/clients/inst_prepareprogress.rb result-bck/installation/src/clients/inst_prepareprogress.rb
--- result/installation/src/clients/inst_prepareprogress.rb 2013-06-28 14:10:03.288000000 +0200
+++ result-bck/installation/src/clients/inst_prepareprogress.rb 2013-06-28 12:35:50.088000000 +0200
@@ -38,7 +38,7 @@
"0"
)
)
- @live_size = 1024 * 1024 if @live_size == 0
+ @live_size = Ops.multiply(1024, 1024) if @live_size == 0
end
@stages = [
{
diff -ur result/installation/src/clients/inst_proposal.rb result-bck/installation/src/clients/inst_proposal.rb
--- result/installation/src/clients/inst_proposal.rb 2013-06-28 14:09:13.916000000 +0200
+++ result-bck/installation/src/clients/inst_proposal.rb 2013-06-28 12:35:50.088000000 +0200
@@ -110,8 +110,12 @@
end
else
if (@input == :reset_to_defaults) && Popup.ContinueCancel(
- (_("Really reset everything to default values?") + "\n") + _(
- "You will lose all changes."
+ Ops.add(
+ Ops.add(
+ _("Really reset everything to default values?"),
+ "\n"
+ ),
+ _("You will lose all changes.")
)
)
make_proposal(true, false)
@@ -1003,10 +1007,11 @@
)
else
if @proposal_mode == "uml"
- help_text_string = _(
- "<P><B>UML Installation Proposal</B></P>"
- ) + _(
- "<P>UML (User Mode Linux) installation allows you to start independent\nLinux virtual machines in the host system.</P>"
+ help_text_string = Ops.add(
+ _("<P><B>UML Installation Proposal</B></P>"),
+ _(
+ "<P>UML (User Mode Linux) installation allows you to start independent\nLinux virtual machines in the host system.</P>"
+ )
)
else
if Convert.to_string(
diff -ur result/installation/src/clients/inst_upgrade_urls.rb result-bck/installation/src/clients/inst_upgrade_urls.rb
--- result/installation/src/clients/inst_upgrade_urls.rb 2013-06-28 14:09:02.128000000 +0200
+++ result-bck/installation/src/clients/inst_upgrade_urls.rb 2013-06-28 12:35:50.088000000 +0200
@@ -156,12 +156,16 @@
)
)
),
- (_(
- "<p>Here you see all software repositories found\non the system you are upgrading. Enable the ones you want to include in the upgrade process.</p>"
- ) + _(
- "<p>To enable, remove or disable an URL, click on the\n<b>Toggle Status</b> button or double-click on the respective table item.</p>"
- )) + _(
- "<p>To change the URL, click on the <b>Change...</b> button.</p>"
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Here you see all software repositories found\non the system you are upgrading. Enable the ones you want to include in the upgrade process.</p>"
+ ),
+ _(
+ "<p>To enable, remove or disable an URL, click on the\n<b>Toggle Status</b> button or double-click on the respective table item.</p>"
+ )
+ ),
+ _("<p>To change the URL, click on the <b>Change...</b> button.</p>")
),
true,
true
diff -ur result/installation/src/clients/inst_welcome.rb result-bck/installation/src/clients/inst_welcome.rb
--- result/installation/src/clients/inst_welcome.rb 2013-06-28 14:10:27.808000000 +0200
+++ result-bck/installation/src/clients/inst_welcome.rb 2013-06-28 12:35:50.088000000 +0200
@@ -39,8 +39,11 @@
{ :from => "any", :to => "boolean" }
) ? 1 : 3
@caption = _("Welcome")
- @text = _("<p><b>Welcome!</b></p>") + _(
- "<p>There are a few more steps to take before your system is ready to\nuse. YaST will now guide you through some basic configuration. Click\n<b>Next</b> to continue. </p>\n \n"
+ @text = Ops.add(
+ _("<p><b>Welcome!</b></p>"),
+ _(
+ "<p>There are a few more steps to take before your system is ready to\nuse. YaST will now guide you through some basic configuration. Click\n<b>Next</b> to continue. </p>\n \n"
+ )
)
@welcome_text = (Convert.to_string(Ops.index(@welcome, "text", "")) != "") ? Convert.to_string(
Ops.index(@welcome, "text", "")
diff -ur result/installation/src/clients/ssh_settings_finish.rb result-bck/installation/src/clients/ssh_settings_finish.rb
--- result/installation/src/clients/ssh_settings_finish.rb 2013-06-28 14:09:22.032000000 +0200
+++ result-bck/installation/src/clients/ssh_settings_finish.rb 2013-06-28 12:35:50.088000000 +0200
@@ -41,7 +41,10 @@
path(".local.bash"),
Ops.add(
Ops.add(
- "umask 077 ; awk -F : ' /^root:/ { print $1\":\"$2 }' < /etc/shadow > " + "'",
+ Ops.add(
+ "umask 077 ; awk -F : ' /^root:/ { print $1\":\"$2 }' < /etc/shadow > ",
+ "'"
+ ),
String.Quote(Installation.destdir)
),
"/tmp/rootpwd.txt'"
diff -ur result/installation/src/clients/stroj-casu.rb result-bck/installation/src/clients/stroj-casu.rb
--- result/installation/src/clients/stroj-casu.rb 2013-06-28 14:09:31.916000000 +0200
+++ result-bck/installation/src/clients/stroj-casu.rb 2013-06-28 12:35:50.088000000 +0200
@@ -43,7 +43,7 @@
if Builtins.contains(@wait, @ret)
Popup.TimedWarning(
Tr("Waiting for the feature to appear..."),
- (365 * 24) * 3600
+ Ops.multiply(Ops.multiply(365, 24), 3600)
)
end
Wizard.CloseDialog
diff -ur result/installation/src/clients/x11_finish.rb result-bck/installation/src/clients/x11_finish.rb
--- result/installation/src/clients/x11_finish.rb 2013-06-28 14:10:18.480000000 +0200
+++ result-bck/installation/src/clients/x11_finish.rb 2013-06-28 12:35:50.088000000 +0200
@@ -61,7 +61,7 @@
Ops.add(
Ops.add(
Ops.add(
- "/bin/ln -sf " + "'",
+ Ops.add("/bin/ln -sf ", "'"),
String.Quote(Installation.destdir)
),
"/usr/X11R6/bin/XFree86' "
diff -ur result/installation/src/include/installation/misc.rb result-bck/installation/src/include/installation/misc.rb
--- result/installation/src/include/installation/misc.rb 2013-06-28 14:08:55.984000000 +0200
+++ result-bck/installation/src/include/installation/misc.rb 2013-06-28 12:35:50.084000000 +0200
@@ -161,13 +161,17 @@
)
confirm_button_label = Label.InstallButton
else
- heading = ("<h3>" + _("Confirm Update")) + "</h3>"
- body = (_(
- "<p>Information required to perform an update is now complete.</p>"
- ) + _(
- "\n<p>If you continue now, data on your hard disk will be overwritten\naccording to the settings in the previous dialogs.</p>"
- )) + _(
- "<p>Go back and check the settings if you are unsure.</p>"
+ heading = Ops.add(Ops.add("<h3>", _("Confirm Update")), "</h3>")
+ body = Ops.add(
+ Ops.add(
+ _(
+ "<p>Information required to perform an update is now complete.</p>"
+ ),
+ _(
+ "\n<p>If you continue now, data on your hard disk will be overwritten\naccording to the settings in the previous dialogs.</p>"
+ )
+ ),
+ _("<p>Go back and check the settings if you are unsure.</p>")
)
confirm_button_label = _("Start &Update")
end
diff -ur result/installation/src/include/installation/scr_switch_debugger.rb result-bck/installation/src/include/installation/scr_switch_debugger.rb
--- result/installation/src/include/installation/scr_switch_debugger.rb 2013-06-28 14:08:53.228000000 +0200
+++ result-bck/installation/src/include/installation/scr_switch_debugger.rb 2013-06-28 12:35:50.084000000 +0200
@@ -231,7 +231,10 @@
parts_cmd = Convert.to_map(
WFM.Execute(
path(".local.bash_output"),
- ("mount " + "| grep -v '^\\(/proc\\) on' ") + "| sed 's/\\/.* on \\(.*\\) type .*/\\1/'"
+ Ops.add(
+ Ops.add("mount ", "| grep -v '^\\(/proc\\) on' "),
+ "| sed 's/\\/.* on \\(.*\\) type .*/\\1/'"
+ )
)
)
partitions = {}
diff -ur result/installation/src/modules/Vendor.rb result-bck/installation/src/modules/Vendor.rb
--- result/installation/src/modules/Vendor.rb 2013-06-28 14:08:47.524000000 +0200
+++ result-bck/installation/src/modules/Vendor.rb 2013-06-28 12:35:50.084000000 +0200
@@ -28,7 +28,10 @@
path(".local.bash"),
Ops.add(
Ops.add(
- "l=/var/log/driverupdate.log ; [ -f $l ] && /bin/cat $l " + ">> '",
+ Ops.add(
+ "l=/var/log/driverupdate.log ; [ -f $l ] && /bin/cat $l ",
+ ">> '"
+ ),
String.Quote(Installation.destdir)
),
"$l'"
@@ -38,7 +41,7 @@
path(".local.bash"),
Ops.add(
Ops.add(
- "/bin/cp -a /update " + "'",
+ Ops.add("/bin/cp -a /update ", "'"),
String.Quote(Installation.destdir)
),
"/tmp/update'"
@@ -61,7 +64,13 @@
Ops.add(
Ops.add(
Ops.add(
- ("cd /; \n" + "for i in /tmp/update/[0-9]*/install ; do \n") + " echo \"# Installing Driver Update from $i\">>",
+ Ops.add(
+ Ops.add(
+ "cd /; \n",
+ "for i in /tmp/update/[0-9]*/install ; do \n"
+ ),
+ " echo \"# Installing Driver Update from $i\">>"
+ ),
logfile
),
"; \n"
@@ -111,7 +120,13 @@
return if Ops.less_or_equal(Builtins.size(updatefiles), 0)
SCR.Execute(
path(".target.bash"),
- (("cd / ; " + "for i in /tmp/update/[0-9]*/install ; do ") + " [ -f \"$i/update.post2\" ] && /bin/chmod +x \"$i/update.post2\" && \"$i/update.post2\" \"$i\" ; ") + "done"
+ Ops.add(
+ Ops.add(
+ Ops.add("cd / ; ", "for i in /tmp/update/[0-9]*/install ; do "),
+ " [ -f \"$i/update.post2\" ] && /bin/chmod +x \"$i/update.post2\" && \"$i/update.post2\" \"$i\" ; "
+ ),
+ "done"
+ )
)
SCR.Execute(path(".target.bash"), "/bin/rm -rf /tmp/update")
nil
diff -ur result/installation/src/modules/X11Version.rb result-bck/installation/src/modules/X11Version.rb
--- result/installation/src/modules/X11Version.rb 2013-06-28 14:08:49.988000000 +0200
+++ result-bck/installation/src/modules/X11Version.rb 2013-06-28 12:35:50.084000000 +0200
@@ -87,10 +87,11 @@
else
if !Package.InstallAllMsg(
pacs,
- _(
- "<p>To access the X11 system, the <b>%1</b> package must be installed.</p>"
- ) + _(
- "<p>Do you want to install it now?</p>"
+ Ops.add(
+ _(
+ "<p>To access the X11 system, the <b>%1</b> package must be installed.</p>"
+ ),
+ _("<p>Do you want to install it now?</p>")
)
)
ret = false
diff -ur result/instserver/src/include/instserver/helps.rb result-bck/instserver/src/include/instserver/helps.rb
--- result/instserver/src/include/instserver/helps.rb 2013-06-28 14:19:10.836000000 +0200
+++ result-bck/instserver/src/include/instserver/helps.rb 2013-06-28 12:36:11.332000000 +0200
@@ -9,85 +9,145 @@
def initialize_instserver_helps(include_target)
textdomain "instserver"
@HELPS = {
- "server" => (_(
- "<p><b><big>Network Server Configuration</big></b><br>\n</p>"
- ) + _(
- "<p>Select one of the server options and specify where all the repositories\nshould be hosted on the local system.\n</p>"
- )) + _(
- "<p>If you have one of the services already running and want to do the\nserver configuration manually, select not to configure \nthe services.\n</p>\n"
- ),
- "nfs" => (((_(
- "<p><b><big>NFS Server Configuration</big></b><br>\n</p>"
- ) + _(
- "<p>To complete this configuration, a new entry in the file\n<em>/etc/exports</em> must be added and the NFS server must be \ninstalled and started.\n</p>\n"
- )) + _(
- "<p>If you need to restrict access to the exported directories to certain \nhosts, add a more restrictive wild card mask. For example, use <em>192.168.1.0/24</em>\nto restrict access to the <em>192.168.1.0</em> subnet.\n</p>\n"
- )) + _(
- "<p>Additionally, set the export options. For more details about the available\noptions, see the manual page for <em>exports</em> (man exports(5))\n</p>\n"
- )) + _(
- "<p>The repository will be available at the following URL:\n<tt>nfs://Host_IP/Repository_Name</tt></p>"
- ),
- "ftp" => (((_(
- "<p><b><big>FTP Server Configuration</big></b><br>\n</p>"
- ) + _(
- "<p>To complete this configuration, an FTP server must be \ninstalled and started.</p>\n"
- )) + _(
- "<p>If the chosen software repository directory is outside\nthe FTP server hierarchy, a mount entry is added to <tt>/etc/fstab</tt>.\nThis makes the software repository directory available under the\nFTP server (using the <tt>--bind</tt> option of <tt>mount</tt>).\n</p>\n"
- )) + _(
- "<p>The installation server will be available to clients using the following URL:\n</p>\n"
- )) + _(
- "<p><tt>ftp://&lt;Host IP&gt;/&lt;Repository Name&gt;</tt>\n</p>"
- ),
- "http" => ((_(
- "<p><b><big>HTTP Server Configuration</big></b><br>\n</p>"
- ) + _(
- "<p>To complete this configuration, an HTTP server must be \ninstalled and started. The alias will be used to reference the installation\nserver root directory.</p>\n"
- )) + _(
- "<p>Select a short and easy to remember alias. For example, if you select\n<em>SUSE</em> as the alias, the repositories will be available as shown below:</p>\n"
- )) + _(
- "<p><tt>http://&lt;Host IP&gt;/SUSE/&lt;Repository Name&gt;</tt>\n</p>"
- ),
- "initial" => ((_(
- "<p><b>Configuration of the Repository</b><br>\n</p>\n"
- ) + _(
- "<p>The repository name is used to create a directory under which all product\nCDs are copied and managed. The repository is accessed using the\nconfigured protocol (NFS, FTP, or HTTP).</p> \n"
- )) + _(
- "<p><b><big>SLP Support</big></b></p>"
- )) + _(
- "<p>SLP (Service Location Protocol) facilitates finding an installation server. \nIf checked, the repository will be announced on the network using SLP.</p>\n"
- ),
- "initial2" => (((_(
- "<p><b>Configuration of the Repository</b><br>\n</p>\n"
- ) + _(
- "<p>Select a source drive from the list, insert the first medium of a base product, and press\n<b>Next</b> to copy the content into the local repository.</p>\n"
- )) + _(
- "<p>When the base media are copied to the local repository, you can add additional\nCDs to the repository (for example, Service Pack CDs or any add-on CDs).</p>\n"
- )) + _(
- "<p><b><big>ISO Images</big></b></p>"
- )) + _(
- "<p>ISO images can be used instead of CD or DVD media. If you press <b>Next</b>, you can\nselect ISO image files.</p>\n"
- ),
- "read" => _(
- "<p><b><big>Initializing Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _("<p><b>Saving Repository Configuration</b><br>\n</p>\n") + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
- ),
- "summary" => (_(
- "<p><b>Repository Configuration</b><br>\nConfigure the installation server here.<br></p>\n"
- ) + _(
- "<p><b>Adding a Repository:</b><br>\nUnconfigured directories are detected in the repository directory and then made \navailable for configuration.\nTo add a repository, select it from the list of unconfigured repositories and press <b>Configure</b>.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting:</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
- ),
- "overview" => (_(
- "<p><b>Repositories Overview</b><br>\nGet an overview of the configured repositories and edit their \nconfiguration if necessary.<br></p>\n"
- ) + _(
- "<p><b>Adding a Repository:</b><br>\nPress <b>Add</b> to configure a repository.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting:</big></b><br>\nChoose the repository you want to change or remove and\npress <b>Edit</b> or <b>Delete</b>, respectively.</p>\n"
+ "server" => Ops.add(
+ Ops.add(
+ _("<p><b><big>Network Server Configuration</big></b><br>\n</p>"),
+ _(
+ "<p>Select one of the server options and specify where all the repositories\nshould be hosted on the local system.\n</p>"
+ )
+ ),
+ _(
+ "<p>If you have one of the services already running and want to do the\nserver configuration manually, select not to configure \nthe services.\n</p>\n"
+ )
+ ),
+ "nfs" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b><big>NFS Server Configuration</big></b><br>\n</p>"),
+ _(
+ "<p>To complete this configuration, a new entry in the file\n<em>/etc/exports</em> must be added and the NFS server must be \ninstalled and started.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>If you need to restrict access to the exported directories to certain \nhosts, add a more restrictive wild card mask. For example, use <em>192.168.1.0/24</em>\nto restrict access to the <em>192.168.1.0</em> subnet.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>Additionally, set the export options. For more details about the available\noptions, see the manual page for <em>exports</em> (man exports(5))\n</p>\n"
+ )
+ ),
+ _(
+ "<p>The repository will be available at the following URL:\n<tt>nfs://Host_IP/Repository_Name</tt></p>"
+ )
+ ),
+ "ftp" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b><big>FTP Server Configuration</big></b><br>\n</p>"),
+ _(
+ "<p>To complete this configuration, an FTP server must be \ninstalled and started.</p>\n"
+ )
+ ),
+ _(
+ "<p>If the chosen software repository directory is outside\nthe FTP server hierarchy, a mount entry is added to <tt>/etc/fstab</tt>.\nThis makes the software repository directory available under the\nFTP server (using the <tt>--bind</tt> option of <tt>mount</tt>).\n</p>\n"
+ )
+ ),
+ _(
+ "<p>The installation server will be available to clients using the following URL:\n</p>\n"
+ )
+ ),
+ _("<p><tt>ftp://&lt;Host IP&gt;/&lt;Repository Name&gt;</tt>\n</p>")
+ ),
+ "http" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b><big>HTTP Server Configuration</big></b><br>\n</p>"),
+ _(
+ "<p>To complete this configuration, an HTTP server must be \ninstalled and started. The alias will be used to reference the installation\nserver root directory.</p>\n"
+ )
+ ),
+ _(
+ "<p>Select a short and easy to remember alias. For example, if you select\n<em>SUSE</em> as the alias, the repositories will be available as shown below:</p>\n"
+ )
+ ),
+ _(
+ "<p><tt>http://&lt;Host IP&gt;/SUSE/&lt;Repository Name&gt;</tt>\n</p>"
+ )
+ ),
+ "initial" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b>Configuration of the Repository</b><br>\n</p>\n"),
+ _(
+ "<p>The repository name is used to create a directory under which all product\nCDs are copied and managed. The repository is accessed using the\nconfigured protocol (NFS, FTP, or HTTP).</p> \n"
+ )
+ ),
+ _("<p><b><big>SLP Support</big></b></p>")
+ ),
+ _(
+ "<p>SLP (Service Location Protocol) facilitates finding an installation server. \nIf checked, the repository will be announced on the network using SLP.</p>\n"
+ )
+ ),
+ "initial2" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b>Configuration of the Repository</b><br>\n</p>\n"),
+ _(
+ "<p>Select a source drive from the list, insert the first medium of a base product, and press\n<b>Next</b> to copy the content into the local repository.</p>\n"
+ )
+ ),
+ _(
+ "<p>When the base media are copied to the local repository, you can add additional\nCDs to the repository (for example, Service Pack CDs or any add-on CDs).</p>\n"
+ )
+ ),
+ _("<p><b><big>ISO Images</big></b></p>")
+ ),
+ _(
+ "<p>ISO images can be used instead of CD or DVD media. If you press <b>Next</b>, you can\nselect ISO image files.</p>\n"
+ )
+ ),
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _("<p><b>Saving Repository Configuration</b><br>\n</p>\n"),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
+ ),
+ "summary" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b>Repository Configuration</b><br>\nConfigure the installation server here.<br></p>\n"
+ ),
+ _(
+ "<p><b>Adding a Repository:</b><br>\nUnconfigured directories are detected in the repository directory and then made \navailable for configuration.\nTo add a repository, select it from the list of unconfigured repositories and press <b>Configure</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting:</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
+ )
+ ),
+ "overview" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b>Repositories Overview</b><br>\nGet an overview of the configured repositories and edit their \nconfiguration if necessary.<br></p>\n"
+ ),
+ _(
+ "<p><b>Adding a Repository:</b><br>\nPress <b>Add</b> to configure a repository.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting:</big></b><br>\nChoose the repository you want to change or remove and\npress <b>Edit</b> or <b>Delete</b>, respectively.</p>\n"
+ )
)
}
end
diff -ur result/irda/src/include/irda/ui.rb result-bck/irda/src/include/irda/ui.rb
--- result/irda/src/include/irda/ui.rb 2013-06-28 14:19:17.640000000 +0200
+++ result-bck/irda/src/include/irda/ui.rb 2013-06-28 12:36:10.604000000 +0200
@@ -154,14 +154,23 @@
def IrDADialog
caption = _("IrDA Configuration")
- help = ((_(
- "<p>Here, configure an infrared interface (<b>IrDA</b>) for your computer.</p>"
- ) + _(
- "<p>Choose the correct serial port for <b>Port</b>. Refer to your BIOS setup to find out which is correct.</p>"
- )) + _(
- "<p>To test if it works, put your IrDA device (phone, PDA, etc.) in range of your infrared port and push <b>Test</b>.</p>"
- )) + _(
- "<p>For some mobile phones, the speed of the infrared connection must be limited. Try setting <b>Maximum Baud Rate</b> if you encounter problems.</p>"
+ help = Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Here, configure an infrared interface (<b>IrDA</b>) for your computer.</p>"
+ ),
+ _(
+ "<p>Choose the correct serial port for <b>Port</b>. Refer to your BIOS setup to find out which is correct.</p>"
+ )
+ ),
+ _(
+ "<p>To test if it works, put your IrDA device (phone, PDA, etc.) in range of your infrared port and push <b>Test</b>.</p>"
+ )
+ ),
+ _(
+ "<p>For some mobile phones, the speed of the infrared connection must be limited. Try setting <b>Maximum Baud Rate</b> if you encounter problems.</p>"
+ )
)
start = Irda.start
port = Irda.port
diff -ur result/iscsi-client/src/include/iscsi-client/helps.rb result-bck/iscsi-client/src/include/iscsi-client/helps.rb
--- result/iscsi-client/src/include/iscsi-client/helps.rb 2013-06-28 14:19:33.688000000 +0200
+++ result-bck/iscsi-client/src/include/iscsi-client/helps.rb 2013-06-28 12:35:42.252000000 +0200
@@ -9,36 +9,58 @@
def initialize_iscsi_client_helps(include_target)
textdomain "iscsi-client"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing iSCSI Initiator Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving iSCSI Initiator Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Saving</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
- ),
- "summary" => (_(
- "<p><b><big>iSCSI Initiator Configuration</big></b><br>\nConfigure an iSCSI initiator here.<br></p>\n"
- ) + _(
- "<p><b><big>Adding an iSCSI Initiator</big></b><br>\nSelect an iSCSI initiator from the list of detected initiators.\nIf your iSCSI initiator was not detected, use <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
- ),
- "overview" => (_(
- "<p><b><big>iSCSI Initiator Configuration Overview</big></b><br>\nObtain an overview of installed iSCSI initiators. Additionally\nedit their configurations.<br></p>\n"
- ) + _(
- "<p><b><big>Adding an iSCSI Initiator</big></b><br>\nPress <b>Add</b> to configure an iSCSI initiator.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting</big></b><br>\nChoose an iSCSI Initiator to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> as desired.</p>\n"
- ),
- "server_table" => (_(
- "List of current sessions. To add a new target, select it and press <b>Add</b>.\nTo remove it, press <b>Log Out</b>.\nTo change the start-up status, press <b>Toggle</b>.\n"
- ) + _(
- "<h1>Warning</h1>"
- )) + _(
- "<p>When accessing an iSCSI device <b>READ</b>/<b>WRITE</b>, make sure that this access is exclusive. Otherwise there is a potential risk of data corruption.</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing iSCSI Initiator Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving iSCSI Initiator Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
+ ),
+ "summary" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>iSCSI Initiator Configuration</big></b><br>\nConfigure an iSCSI initiator here.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding an iSCSI Initiator</big></b><br>\nSelect an iSCSI initiator from the list of detected initiators.\nIf your iSCSI initiator was not detected, use <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
+ )
+ ),
+ "overview" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>iSCSI Initiator Configuration Overview</big></b><br>\nObtain an overview of installed iSCSI initiators. Additionally\nedit their configurations.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding an iSCSI Initiator</big></b><br>\nPress <b>Add</b> to configure an iSCSI initiator.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting</big></b><br>\nChoose an iSCSI Initiator to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> as desired.</p>\n"
+ )
+ ),
+ "server_table" => Ops.add(
+ Ops.add(
+ _(
+ "List of current sessions. To add a new target, select it and press <b>Add</b>.\nTo remove it, press <b>Log Out</b>.\nTo change the start-up status, press <b>Toggle</b>.\n"
+ ),
+ _("<h1>Warning</h1>")
+ ),
+ _(
+ "<p>When accessing an iSCSI device <b>READ</b>/<b>WRITE</b>, make sure that this access is exclusive. Otherwise there is a potential risk of data corruption.</p>\n"
+ )
),
"initiator_name" => _(
"<p><b>InitiatorName</b> is a value from <tt>/etc/iscsi/initiatorname.iscsi</tt>. \nIn case you have iBFT, this value will be added from there and you are only able to change it in the BIOS setup.</p>"
@@ -46,27 +68,47 @@
"isns" => _(
"If you want to use <b>iSNS</b> (Internet Storage Name Service) for discovering targets instead of the default SendTargets method,\nfill in the IP address of the iSNS server and port. The default port should be 3205.\n"
),
- "discovery" => ((_("<h1>iSCSI Initiator</h1>") + _(
- "Enter the <b>IP Address</b> of the discovered server.\nOnly change <b>Port</b> if needed. For authentication, use <b>Username</b> and <b>Password</b>. If you do not need authentication,\nselect <b>No Authentication</b>.\n"
- )) + _(
- "<h1>Warning</h1>"
- )) + _(
- "<p>When accessing an iSCSI device <b>READ</b>/<b>WRITE</b>, make sure that this access is exclusive. Otherwise there is a potential risk of data corruption.</p>\n"
- ),
- "targets_table" => _("<h1>iSCSI Initiator</h1>") + _(
- "List of nodes offered by the iSCSI target. Select one item and click <b>Connect</b>. "
- ),
- "conn_auth" => ((_("<h1>iSCSI Initiator</h1>") + _(
- "Select the type of authentication and enter the <b>Username</b> and <b>Password</b>."
- )) + _(
- "<h1>Startup</h1>"
- )) + _(
- "<p><b>manual</b> is for iSCSI targets which are not to be connected by\ndefault, the user needs to connect them manually</p>\n<p><b>onboot</b> is for iSCSI targets to be connected during boot, i.e. when\nroot is on iSCSI. As such it will be evaluated by the initrd.</p>\n<p><b>automatic</b> is for iSCSI targets to be connected when the iSCSI service\nstarts up.</p>\n"
+ "discovery" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h1>iSCSI Initiator</h1>"),
+ _(
+ "Enter the <b>IP Address</b> of the discovered server.\nOnly change <b>Port</b> if needed. For authentication, use <b>Username</b> and <b>Password</b>. If you do not need authentication,\nselect <b>No Authentication</b>.\n"
+ )
+ ),
+ _("<h1>Warning</h1>")
+ ),
+ _(
+ "<p>When accessing an iSCSI device <b>READ</b>/<b>WRITE</b>, make sure that this access is exclusive. Otherwise there is a potential risk of data corruption.</p>\n"
+ )
+ ),
+ "targets_table" => Ops.add(
+ _("<h1>iSCSI Initiator</h1>"),
+ _(
+ "List of nodes offered by the iSCSI target. Select one item and click <b>Connect</b>. "
+ )
+ ),
+ "conn_auth" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h1>iSCSI Initiator</h1>"),
+ _(
+ "Select the type of authentication and enter the <b>Username</b> and <b>Password</b>."
+ )
+ ),
+ _("<h1>Startup</h1>")
+ ),
+ _(
+ "<p><b>manual</b> is for iSCSI targets which are not to be connected by\ndefault, the user needs to connect them manually</p>\n<p><b>onboot</b> is for iSCSI targets to be connected during boot, i.e. when\nroot is on iSCSI. As such it will be evaluated by the initrd.</p>\n<p><b>automatic</b> is for iSCSI targets to be connected when the iSCSI service\nstarts up.</p>\n"
+ )
),
"discovered" => _(
"List of discovered targets. Start a new <b>Discovery</b> or <b>Connect</b> to any target."
),
- "ibft_table" => _("<h1>iBTF</h1>") + "The <p>iSCSI Boot Firmware Table</p> is a table created by the iSCSI boot firmware in order to\npass parameters about the iSCSI boot device to the loaded OS."
+ "ibft_table" => Ops.add(
+ _("<h1>iBTF</h1>"),
+ "The <p>iSCSI Boot Firmware Table</p> is a table created by the iSCSI boot firmware in order to\npass parameters about the iSCSI boot device to the loaded OS."
+ )
}
end
end
diff -ur result/iscsi-client/src/modules/IscsiClientLib.rb result-bck/iscsi-client/src/modules/IscsiClientLib.rb
--- result/iscsi-client/src/modules/IscsiClientLib.rb 2013-06-28 14:19:23.988000000 +0200
+++ result-bck/iscsi-client/src/modules/IscsiClientLib.rb 2013-06-28 12:35:42.252000000 +0200
@@ -31,7 +31,7 @@
@offload_card = "default"
@offboard_script = "iscsi_offload"
@offload = [
- ["default", ("default" + " ") + _("(Software)"), [], []],
+ ["default", Ops.add(Ops.add("default", " "), _("(Software)")), [], []],
["all", "all", [], []],
["bnx2", "bnx2/bnx2i/bnx2x", ["bnx2", "bnx2i", "bnx2x"], ["bnx2i"]],
["cxgb3", "cxgb3/cxgb3i", ["cxgb3", "cxgb3i"], ["cxgb3i"]],
@@ -369,7 +369,7 @@
def startIScsid
SCR.Execute(path(".target.bash"), "pgrep iscsid || iscsid")
Builtins.foreach([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) { |i|
- Builtins.sleep(1 * 1000)
+ Builtins.sleep(Ops.multiply(1, 1000))
cmd = Convert.convert(
SCR.Execute(path(".target.bash_output"), GetAdmCmd("-m session")),
{ :from => "any", :to => "map <string, any>" }
diff -ur result/iscsi-client/src/modules/IscsiClient.rb result-bck/iscsi-client/src/modules/IscsiClient.rb
--- result/iscsi-client/src/modules/IscsiClient.rb 2013-06-28 14:19:25.604000000 +0200
+++ result-bck/iscsi-client/src/modules/IscsiClient.rb 2013-06-28 12:35:42.252000000 +0200
@@ -46,10 +46,11 @@
ret = false
if !Package.InstallMsg(
"open-iscsi",
- _(
- "<p>To configure the iSCSI initiator, the <b>%1</b> package must be installed.</p>"
- ) + _(
- "<p>Install it now?</p>"
+ Ops.add(
+ _(
+ "<p>To configure the iSCSI initiator, the <b>%1</b> package must be installed.</p>"
+ ),
+ _("<p>Install it now?</p>")
)
)
Popup.Error(Message.CannotContinueWithoutPackagesInstalled)
diff -ur result/iscsi-lio-server/src/include/iscsi-lio-server/helps.rb result-bck/iscsi-lio-server/src/include/iscsi-lio-server/helps.rb
--- result/iscsi-lio-server/src/include/iscsi-lio-server/helps.rb 2013-06-28 14:19:57.824000000 +0200
+++ result-bck/iscsi-lio-server/src/include/iscsi-lio-server/helps.rb 2013-06-28 12:36:19.980000000 +0200
@@ -9,42 +9,66 @@
def initialize_iscsi_lio_server_helps(include_target)
textdomain "iscsi-lio-server"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing iSCSI LIO Target Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving iSCSI Target Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing iSCSI LIO Target Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving iSCSI Target Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
),
"save_configuration" => _(
"<p><b>Save</b> button will export some information about\ntargets into selected file.</p>"
),
- "summary" => (_(
- "<p><b><big>iSCSI Target Configuration</big></b><br>\nConfigure an iSCSI target here.<br></p>\n"
- ) + _(
- "<p><b><big>Adding an iSCSI Target</big></b><br>\nChoose an iSCSI target from the list of detected iSCSI targets.\nIf your target was not detected, use <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
- ),
- "overview" => (_(
- "<p><b><big>iSCSI Target Configuration Overview</big></b><br>\nObtain an overview of installed iSCSI targets. Additionally\nedit their configurations.<br></p>\n"
- ) + _(
- "<p><b><big>Adding an iSCSI Target</big></b><br>\nPress <b>Add</b> to configure an iSCSI target.</p>"
- )) + _(
- "<p><b><big>Editing or Deleting</big></b><br>\nChoose an iSCSI target to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> as desired.</p>\n"
- ),
- "c1" => _(
- "<p><b><big>Configuration Part One</big></b><br>\nPress <b>Next</b> to continue.\n<br></p>"
- ) + _(
- "<p><b><big>Selecting Something</big></b><br>\nIt is not possible. You must code it first. :-)\n</p>"
- ),
- "c2" => _(
- "<p><b><big>Configuration Part Two</big></b><br>\nPress <b>Next</b> to continue.\n<br></p>\n"
- ) + _(
- "<p><b><big>Selecting Something</big></b><br>\nIt is not possible. You must code it first. :-)\n</p>"
+ "summary" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>iSCSI Target Configuration</big></b><br>\nConfigure an iSCSI target here.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding an iSCSI Target</big></b><br>\nChoose an iSCSI target from the list of detected iSCSI targets.\nIf your target was not detected, use <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
+ )
+ ),
+ "overview" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>iSCSI Target Configuration Overview</big></b><br>\nObtain an overview of installed iSCSI targets. Additionally\nedit their configurations.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding an iSCSI Target</big></b><br>\nPress <b>Add</b> to configure an iSCSI target.</p>"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting</big></b><br>\nChoose an iSCSI target to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> as desired.</p>\n"
+ )
+ ),
+ "c1" => Ops.add(
+ _(
+ "<p><b><big>Configuration Part One</big></b><br>\nPress <b>Next</b> to continue.\n<br></p>"
+ ),
+ _(
+ "<p><b><big>Selecting Something</big></b><br>\nIt is not possible. You must code it first. :-)\n</p>"
+ )
+ ),
+ "c2" => Ops.add(
+ _(
+ "<p><b><big>Configuration Part Two</big></b><br>\nPress <b>Next</b> to continue.\n<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Selecting Something</big></b><br>\nIt is not possible. You must code it first. :-)\n</p>"
+ )
),
"global_config" => _(
"Select the type of authentication. Use <b>No Authentication</b> or one of <b>Incoming</b> and <b>Outgoing</b> (can be both together). Then insert <b>User</b> and <b>Password</b>."
@@ -55,27 +79,71 @@
"server_table" => _(
"List of offered targets and target portal groups. Create a new target by clicking <b>Add</b>. \nTo delete or modify an item, select it and press <b>Modify</b> or <b>Delete</b>."
),
- "target-modify" => (((((_(
- "<h1>iSCSI Target IP/Port and LUN setup</h1>"
- ) + "<p>") + _(
- "It is possible to make arbitary block devices or files available under a lun.\nYou have to provide <b>path</b> to either block devices or file. \nThe <b>LUN name</b> is an arbitrary name to uniquely identify the <b>LUN</b>. \nThe name needs to be unique within the target portal group. If the user\ndoes not provide a name for LUN, it is generated automatically."
- )) + "</p>") + "<p>") + _(
- "<p>Under <b>Ip Address</b> and <b>Port Number</b> you specify under which address\nand port the service will be available. Default for port number is 3260.\nOnly ip addresses assigned to one of the network cards are possible."
- )) + "</p>",
- "target-add" => (((((((_(
- "<h1>iSCSI Target IP/Port and LUN setup</h1>"
- ) + "<p>") + _(
- "Create a new target. Replace template values with the correct values."
- )) + "</p>") + _(
- "It is possible to make arbitary block devices or files available under a lun.\nYou have to provide <b>path</b> to either block devices or file. \nThe <b>LUN name</b> is an arbitrary name to uniquely identify the <b>LUN</b>. \nThe name needs to be unique within the target portal group. If the user\ndoes not provide a name for LUN, it is generated automatically."
- )) + "</p>") + "<p>") + _(
- "<p>Under <b>Ip Address</b> and <b>Port Number</b> you specify under which address\nand port the service will be available. Default for port number is 3260.\nOnly ip addresses assigned to one of the network cards are possible."
- )) + "</p>",
- "expert" => _("<h1>iSCSI Target</h1>") + _(
- "It is possible to <b>add</b>, <b>edit</b> or <b>delete</b> all additional configuration options."
- ),
- "lun-details" => _("<h1>iSCSI Target</h1>") + _(
- "Edit <b>LUN</b> number if needed, set <b>Type</b> (nullio is for testing purposes). \nIf Type=fileio set <b>Path</b> to disk device or file.<b>SCSI ID</b> and <b>Sectors</b> are optional."
+ "target-modify" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h1>iSCSI Target IP/Port and LUN setup</h1>"),
+ "<p>"
+ ),
+ _(
+ "It is possible to make arbitary block devices or files available under a lun.\nYou have to provide <b>path</b> to either block devices or file. \nThe <b>LUN name</b> is an arbitrary name to uniquely identify the <b>LUN</b>. \nThe name needs to be unique within the target portal group. If the user\ndoes not provide a name for LUN, it is generated automatically."
+ )
+ ),
+ "</p>"
+ ),
+ "<p>"
+ ),
+ _(
+ "<p>Under <b>Ip Address</b> and <b>Port Number</b> you specify under which address\nand port the service will be available. Default for port number is 3260.\nOnly ip addresses assigned to one of the network cards are possible."
+ )
+ ),
+ "</p>"
+ ),
+ "target-add" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h1>iSCSI Target IP/Port and LUN setup</h1>"),
+ "<p>"
+ ),
+ _(
+ "Create a new target. Replace template values with the correct values."
+ )
+ ),
+ "</p>"
+ ),
+ _(
+ "It is possible to make arbitary block devices or files available under a lun.\nYou have to provide <b>path</b> to either block devices or file. \nThe <b>LUN name</b> is an arbitrary name to uniquely identify the <b>LUN</b>. \nThe name needs to be unique within the target portal group. If the user\ndoes not provide a name for LUN, it is generated automatically."
+ )
+ ),
+ "</p>"
+ ),
+ "<p>"
+ ),
+ _(
+ "<p>Under <b>Ip Address</b> and <b>Port Number</b> you specify under which address\nand port the service will be available. Default for port number is 3260.\nOnly ip addresses assigned to one of the network cards are possible."
+ )
+ ),
+ "</p>"
+ ),
+ "expert" => Ops.add(
+ _("<h1>iSCSI Target</h1>"),
+ _(
+ "It is possible to <b>add</b>, <b>edit</b> or <b>delete</b> all additional configuration options."
+ )
+ ),
+ "lun-details" => Ops.add(
+ _("<h1>iSCSI Target</h1>"),
+ _(
+ "Edit <b>LUN</b> number if needed, set <b>Type</b> (nullio is for testing purposes). \nIf Type=fileio set <b>Path</b> to disk device or file.<b>SCSI ID</b> and <b>Sectors</b> are optional."
+ )
)
}
end
diff -ur result/iscsi-lio-server/src/modules/IscsiLioData.rb result-bck/iscsi-lio-server/src/modules/IscsiLioData.rb
--- result/iscsi-lio-server/src/modules/IscsiLioData.rb 2013-06-28 14:19:48.104000000 +0200
+++ result-bck/iscsi-lio-server/src/modules/IscsiLioData.rb 2013-06-28 12:36:19.964000000 +0200
@@ -1473,7 +1473,10 @@
cmd = Ops.add(
Ops.add(
Ops.add(
- ("lio_node " + (value ? "--enableauth" : "--disableauth")) + " ",
+ Ops.add(
+ Ops.add("lio_node ", value ? "--enableauth" : "--disableauth"),
+ " "
+ ),
tgt
),
" "
diff -ur result/iscsi-server/src/include/iscsi-server/helps.rb result-bck/iscsi-server/src/include/iscsi-server/helps.rb
--- result/iscsi-server/src/include/iscsi-server/helps.rb 2013-06-28 14:20:14.836000000 +0200
+++ result-bck/iscsi-server/src/include/iscsi-server/helps.rb 2013-06-28 12:36:00.848000000 +0200
@@ -9,42 +9,66 @@
def initialize_iscsi_server_helps(include_target)
textdomain "iscsi-server"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing iSCSI Target Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving iSCSI Target Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing iSCSI Target Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving iSCSI Target Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
),
"save_configuration" => _(
"<p><b>Save</b> button will export some information about\ntargets into selected file.</p>"
),
- "summary" => (_(
- "<p><b><big>iSCSI Target Configuration</big></b><br>\nConfigure an iSCSI target here.<br></p>\n"
- ) + _(
- "<p><b><big>Adding an iSCSI Target</big></b><br>\nChoose an iSCSI target from the list of detected iSCSI targets.\nIf your target was not detected, use <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
- ),
- "overview" => (_(
- "<p><b><big>iSCSI Target Configuration Overview</big></b><br>\nObtain an overview of installed iSCSI targets. Additionally\nedit their configurations.<br></p>\n"
- ) + _(
- "<p><b><big>Adding an iSCSI Target</big></b><br>\nPress <b>Add</b> to configure an iSCSI target.</p>"
- )) + _(
- "<p><b><big>Editing or Deleting</big></b><br>\nChoose an iSCSI target to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> as desired.</p>\n"
- ),
- "c1" => _(
- "<p><b><big>Configuration Part One</big></b><br>\nPress <b>Next</b> to continue.\n<br></p>"
- ) + _(
- "<p><b><big>Selecting Something</big></b><br>\nIt is not possible. You must code it first. :-)\n</p>"
- ),
- "c2" => _(
- "<p><b><big>Configuration Part Two</big></b><br>\nPress <b>Next</b> to continue.\n<br></p>\n"
- ) + _(
- "<p><b><big>Selecting Something</big></b><br>\nIt is not possible. You must code it first. :-)\n</p>"
+ "summary" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>iSCSI Target Configuration</big></b><br>\nConfigure an iSCSI target here.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding an iSCSI Target</big></b><br>\nChoose an iSCSI target from the list of detected iSCSI targets.\nIf your target was not detected, use <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
+ )
+ ),
+ "overview" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>iSCSI Target Configuration Overview</big></b><br>\nObtain an overview of installed iSCSI targets. Additionally\nedit their configurations.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding an iSCSI Target</big></b><br>\nPress <b>Add</b> to configure an iSCSI target.</p>"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting</big></b><br>\nChoose an iSCSI target to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> as desired.</p>\n"
+ )
+ ),
+ "c1" => Ops.add(
+ _(
+ "<p><b><big>Configuration Part One</big></b><br>\nPress <b>Next</b> to continue.\n<br></p>"
+ ),
+ _(
+ "<p><b><big>Selecting Something</big></b><br>\nIt is not possible. You must code it first. :-)\n</p>"
+ )
+ ),
+ "c2" => Ops.add(
+ _(
+ "<p><b><big>Configuration Part Two</big></b><br>\nPress <b>Next</b> to continue.\n<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Selecting Something</big></b><br>\nIt is not possible. You must code it first. :-)\n</p>"
+ )
),
"global_config" => _(
"Select the type of authentication. Use <b>No Authentication</b> or one of <b>Incoming</b> and <b>Outgoing</b> (can be both together). Then insert <b>User</b> and <b>Password</b>.\nFor incoming authentication, it is possible to <b>Add</b> more pairs or <b>Edit</b> or <b>Delete</b> them."
@@ -52,19 +76,34 @@
"server_table" => _(
"List of offered targets. Create a new target by clicking <b>Add</b>. \nTo delete or modify an item, select it and press <b>Modify</b> or <b>Delete</b>."
),
- "target-modify" => _("<h1>iSCSI Target</h1>") + _(
- "It is possible to change the <b>Path</b> to block devices, regular files, LVM, or RAID.\n"
- ),
- "target-add" => (_("<h1>iSCSI Target</h1>") + _(
- "Create a new target. Replace template values with the correct values.\nFor <b>Target</b>, use the format iqn.yyyy-mm.<reversed domain name>.\nFor <b>Path</b>, use block devices, regular files, LVM, or RAID.\n"
- )) + _(
- "<b>Add</b> one or more LUNs.\nIf you need additional options, click <b>Expert Settings</b>.\n"
- ),
- "expert" => _("<h1>iSCSI Target</h1>") + _(
- "It is possible to <b>add</b>, <b>edit</b> or <b>delete</b> all additional configuration options."
- ),
- "lun-details" => _("<h1>iSCSI Target</h1>") + _(
- "Edit <b>LUN</b> number if needed, set <b>Type</b> (nullio is for testing purposes). \nIf Type=fileio set <b>Path</b> to disk device or file.<b>SCSI ID</b> and <b>Sectors</b> are optional."
+ "target-modify" => Ops.add(
+ _("<h1>iSCSI Target</h1>"),
+ _(
+ "It is possible to change the <b>Path</b> to block devices, regular files, LVM, or RAID.\n"
+ )
+ ),
+ "target-add" => Ops.add(
+ Ops.add(
+ _("<h1>iSCSI Target</h1>"),
+ _(
+ "Create a new target. Replace template values with the correct values.\nFor <b>Target</b>, use the format iqn.yyyy-mm.<reversed domain name>.\nFor <b>Path</b>, use block devices, regular files, LVM, or RAID.\n"
+ )
+ ),
+ _(
+ "<b>Add</b> one or more LUNs.\nIf you need additional options, click <b>Expert Settings</b>.\n"
+ )
+ ),
+ "expert" => Ops.add(
+ _("<h1>iSCSI Target</h1>"),
+ _(
+ "It is possible to <b>add</b>, <b>edit</b> or <b>delete</b> all additional configuration options."
+ )
+ ),
+ "lun-details" => Ops.add(
+ _("<h1>iSCSI Target</h1>"),
+ _(
+ "Edit <b>LUN</b> number if needed, set <b>Type</b> (nullio is for testing purposes). \nIf Type=fileio set <b>Path</b> to disk device or file.<b>SCSI ID</b> and <b>Sectors</b> are optional."
+ )
)
}
end
diff -ur result/isns/src/include/isns/helps.rb result-bck/isns/src/include/isns/helps.rb
--- result/isns/src/include/isns/helps.rb 2013-06-28 14:20:33.200000000 +0200
+++ result-bck/isns/src/include/isns/helps.rb 2013-06-28 12:35:57.416000000 +0200
@@ -9,15 +9,19 @@
def initialize_isns_helps(include_target)
textdomain "isns"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing iSNS daemon configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing iSNS daemon configuration</big></b><br>\n</p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
),
- "write" => _(
- "<p><b><big>Saving iSNS Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ "write" => Ops.add(
+ _("<p><b><big>Saving iSNS Configuration</big></b><br>\n</p>\n"),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
),
"summary" => _(
"<p><b><big>iSNS Configuration</big></b><br>\nConfigure an iSNS server.<br></p>\n"
diff -ur result/isns/src/modules/IsnsServer.rb result-bck/isns/src/modules/IsnsServer.rb
--- result/isns/src/modules/IsnsServer.rb 2013-06-28 14:20:25.048000000 +0200
+++ result-bck/isns/src/modules/IsnsServer.rb 2013-06-28 12:35:57.416000000 +0200
@@ -58,10 +58,11 @@
Builtins.y2milestone("Check if isns is installed")
if !Package.InstallMsg(
"isns",
- _(
- "<p>To configure the isns service, the <b>%1</b> package must be installed.</p>"
- ) + _(
- "<p>Install it now?</p>"
+ Ops.add(
+ _(
+ "<p>To configure the isns service, the <b>%1</b> package must be installed.</p>"
+ ),
+ _("<p>Install it now?</p>")
)
)
Popup.Error(Message.CannotContinueWithoutPackagesInstalled)
diff -ur result/kdump/src/include/kdump/helps.rb result-bck/kdump/src/include/kdump/helps.rb
--- result/kdump/src/include/kdump/helps.rb 2013-06-28 14:20:56.032000000 +0200
+++ result-bck/kdump/src/include/kdump/helps.rb 2013-06-28 12:36:11.856000000 +0200
@@ -21,18 +21,33 @@
"DumpFormat" => _(
"<p><b>Dump Format</b><br>\n <i>Compressed Format</i> - Compress dump data by each page.\n <i>ELF Format</i> - Create dumpfile in the ELF format<br></p>"
),
- "TargetKdump" => ((((_(
- "<p><b>Saving Target for Kdump Image</b><br>\n The target for saving kdump images. Select type of target for saving dumps.<br></p>"
- ) + _(
- "<p><b>Local Filestem</b> - Save kdump image in the local filesystem.\n <i>Directory for Saving Dumps</i> - The path for saving kdump images.\n Selecting directory for saving kdump images via dialog by pressing <i>Browse</i>\n <br></p>"
- )) + _(
- "<p><b>FTP</b> - Save kdump image via FTP.\n <i>Server Name</i> - The name of ftp server.\n <i>Port</i> - The port number for connection.\n <i>Directory on Server</i> - The path for saving kdump images.\n <i>Enable Anonymous FTP</i> enables anonymous connection to server.\n <i>User Name</i> for ftp connection. <i>Password</i> for ftp connection.<br></p>"
- )) + _(
- "<p><b>SSH</b> - Save kdump image via SSH.\n <i>Server Name</i> - The name of server.\n <i>Port</i> - The port number for connection.\n <i>Directory on Server</i> - The path for saving kdump images.\n <i>User Name</i> for SSH connection. \n <i>Password</i> for SSH connection.<br></p>\n"
- )) + _(
- "<p><b>NFS</b> - Save kdump image on NFS.\n <i>Server Name</i> - The name of nfs server.\n <i>Directory on Server</i> - The path for saving kdump images.<br></p>"
- )) + _(
- "<p><b>CIFS</b> - Save kdump image via CIFS.\n <i>Server Name</i> - The name of server.\n <i>Exported Share</i> - The windows share name.\n <i>Directory on Server</i> - The path for saving kdump images.\n <i>Use Authentication</i> enables authenticated connection to server.\n <i>User Name</i> for connection. <i>Password</i> for connection.<br></p>"
+ "TargetKdump" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b>Saving Target for Kdump Image</b><br>\n The target for saving kdump images. Select type of target for saving dumps.<br></p>"
+ ),
+ _(
+ "<p><b>Local Filestem</b> - Save kdump image in the local filesystem.\n <i>Directory for Saving Dumps</i> - The path for saving kdump images.\n Selecting directory for saving kdump images via dialog by pressing <i>Browse</i>\n <br></p>"
+ )
+ ),
+ _(
+ "<p><b>FTP</b> - Save kdump image via FTP.\n <i>Server Name</i> - The name of ftp server.\n <i>Port</i> - The port number for connection.\n <i>Directory on Server</i> - The path for saving kdump images.\n <i>Enable Anonymous FTP</i> enables anonymous connection to server.\n <i>User Name</i> for ftp connection. <i>Password</i> for ftp connection.<br></p>"
+ )
+ ),
+ _(
+ "<p><b>SSH</b> - Save kdump image via SSH.\n <i>Server Name</i> - The name of server.\n <i>Port</i> - The port number for connection.\n <i>Directory on Server</i> - The path for saving kdump images.\n <i>User Name</i> for SSH connection. \n <i>Password</i> for SSH connection.<br></p>\n"
+ )
+ ),
+ _(
+ "<p><b>NFS</b> - Save kdump image on NFS.\n <i>Server Name</i> - The name of nfs server.\n <i>Directory on Server</i> - The path for saving kdump images.<br></p>"
+ )
+ ),
+ _(
+ "<p><b>CIFS</b> - Save kdump image via CIFS.\n <i>Server Name</i> - The name of server.\n <i>Exported Share</i> - The windows share name.\n <i>Directory on Server</i> - The path for saving kdump images.\n <i>Use Authentication</i> enables authenticated connection to server.\n <i>User Name</i> for connection. <i>Password</i> for connection.<br></p>"
+ )
),
"InitrdKernel" => _(
"<p><b>Custom Kdump Kernel</b> The user can enter the custom kernel.\n The naming scheme is:<i>/boot/vmlinu[zx]-<kernel_string>[.gz]</i>\n Please enter only <i>kernel_string</i>.<br></p>"
@@ -70,29 +85,47 @@
"NumberDumps" => _(
"<p><b>Number of Old Dumps</b> specifies how many old dumps are kept. If the number of dump files \nexceeds this number, older dumps are removed.</p>"
),
- "read" => _(
- "<p><b><big>Initializing Kdump Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving Kdump Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
- ),
- "summary" => (_(
- "<p><b><big>Kdump Configuration</big></b><br>\nConfigure kdump here.<br></p>\n"
- ) + _(
- "<p><b><big>Adding a Kdump:</big></b><br>\nChoose an kdump from the list of detected kdumps.\nIf your kdump was not detected, select <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting:</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
- ),
- "overview" => (_(
- "<p><b><big>Kdump Configuration Overview</big></b><br>\nObtain an overview of installed kdumps. Additionally\nedit their configurations.<br></p>\n"
- ) + _(
- "<p><b><big>Adding a Kdump:</big></b><br>\nPress <b>Add</b> to configure a kdump.</p>"
- )) + _(
- "<p><b><big>Editing or Deleting:</big></b><br>\nChoose a kdump to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> as desired.</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing Kdump Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving Kdump Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
+ ),
+ "summary" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Kdump Configuration</big></b><br>\nConfigure kdump here.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding a Kdump:</big></b><br>\nChoose an kdump from the list of detected kdumps.\nIf your kdump was not detected, select <b>Other (not detected)</b>.\nThen press <b>Configure</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting:</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which to change\nthe configuration opens.</p>\n"
+ )
+ ),
+ "overview" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Kdump Configuration Overview</big></b><br>\nObtain an overview of installed kdumps. Additionally\nedit their configurations.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding a Kdump:</big></b><br>\nPress <b>Add</b> to configure a kdump.</p>"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting:</big></b><br>\nChoose a kdump to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> as desired.</p>\n"
+ )
)
}
end
diff -ur result/kerberos-client/src/include/kerberos-client/dialogs.rb result-bck/kerberos-client/src/include/kerberos-client/dialogs.rb
--- result/kerberos-client/src/include/kerberos-client/dialogs.rb 2013-06-28 14:21:11.496000000 +0200
+++ result-bck/kerberos-client/src/include/kerberos-client/dialogs.rb 2013-06-28 12:35:41.876000000 +0200
@@ -575,16 +575,26 @@
end
def ConfigureDialog
- help_text = (((_(
- "<p>\n<b><big>Authentication with Kerberos</big></b><br>\nThe Kerberos client configuration updates your PAM settings to enable Kerberos authentication. Your system needs access to a Kerberos server in the network for this to work.\n</p>\n"
- ) + _(
- "<p>\n<b>Basic Client Settings</b>:\nEnter your <b>Default Domain</b>, <b>Default Realm</b>, and the hostname or address of your Key Distribution Center (<b>KDC Server Address</b>). To specify more values for KDC, separate them by spaces.</p>"
- )) + _(
- "<p>\nIt is common practice to use the domain name in uppercase as your default realm name, but you can select freely. If the realm is not available on the server, you cannot log in. Ask your server administrator if you need more information.</p>\n"
- )) + _(
- "Check <b>Use DNS to Acquire the Configuration Data at Runtime</b> to let your client use the Kerberos authentication data provided by DNS. This option cannot be selected if the DNS server does not provide such data.</p>"
- )) + _(
- "<p>To configure more settings, click <b>Advanced Settings</b>.</p>"
+ help_text = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>\n<b><big>Authentication with Kerberos</big></b><br>\nThe Kerberos client configuration updates your PAM settings to enable Kerberos authentication. Your system needs access to a Kerberos server in the network for this to work.\n</p>\n"
+ ),
+ _(
+ "<p>\n<b>Basic Client Settings</b>:\nEnter your <b>Default Domain</b>, <b>Default Realm</b>, and the hostname or address of your Key Distribution Center (<b>KDC Server Address</b>). To specify more values for KDC, separate them by spaces.</p>"
+ )
+ ),
+ _(
+ "<p>\nIt is common practice to use the domain name in uppercase as your default realm name, but you can select freely. If the realm is not available on the server, you cannot log in. Ask your server administrator if you need more information.</p>\n"
+ )
+ ),
+ _(
+ "Check <b>Use DNS to Acquire the Configuration Data at Runtime</b> to let your client use the Kerberos authentication data provided by DNS. This option cannot be selected if the DNS server does not provide such data.</p>"
+ )
+ ),
+ _("<p>To configure more settings, click <b>Advanced Settings</b>.</p>")
)
installation = Stage.cont && !Builtins.contains(WFM.Args, "from_users")
default_realm = Kerberos.default_realm
@@ -720,7 +730,7 @@
if !checked
Report.Error(
Ops.add(
- _("The KDC server address is invalid.") + "\n\n",
+ Ops.add(_("The KDC server address is invalid."), "\n\n"),
Address.Valid4
)
)
diff -ur result/kerberos-server/src/include/kerberos-server/helps.rb result-bck/kerberos-server/src/include/kerberos-server/helps.rb
--- result/kerberos-server/src/include/kerberos-server/helps.rb 2013-06-28 14:21:32.292000000 +0200
+++ result-bck/kerberos-server/src/include/kerberos-server/helps.rb 2013-06-28 12:36:25.428000000 +0200
@@ -9,62 +9,116 @@
def initialize_kerberos_server_helps(include_target)
textdomain "kerberos-server"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing Kerberos Server Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving Kerberos Server Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
- ),
- "AskDBtype" => ((_(
- "<p>Specify where the Kerberos server should store the data.</p>"
- ) + _(
- "<p><big>Local Database</big> will create a local database for storing the credentials.</p>"
- )) + _(
- "<p><big>Set Up New LDAP Server as Database Back-End</big> will set up a new LDAP server\non this machine and use it as database back-end.</p>\n"
- )) + _(
- "<p><big>Use Existing LDAP Server as Database Back-End</big> gives you the\noption to use an external LDAP server as database back-end.</p>\n"
- ),
- "basic" => _(
- "<p>Specify the <big>Realm</big> and the <big>Master Password</big> for your Kerberos server.</p>"
- ) + _(
- "<p>Although your Kerberos realm can be any ASCII string, the convention is to use upper-case letters as in your domain name.</p>\n"
- ),
- "useldap" => ((((_(
- "<p>In this dialog, edit some parameters for the LDAP server.</p>"
- ) + _(
- "<p>With <big>LDAP Server URI</big> specify the location of the LDAP\nserver. For example, <tt>ldaps://host.domain.com</tt>.</p>"
- )) + _(
- "<p>With <big>LDAP Base DN</big> you can change the base DN of the LDAP server.</p>"
- )) + _(
- "<p>The <big>Kerberos Container DN</big> specifies the container where the Kerberos server should create \nthe principals and other informational data by default.</p>"
- )) + _(
- "<p><big>KDC Bind DN</big> is the DN that KDC uses to authenticate to the LDAP server.\nOnly read access is required for this account.</p>\n"
- )) + _(
- "<p><big>Kadmin Bind DN</big> is the DN that Kadmind uses to authenticate to the LDAP server.\nThis account also needs write access.</p>\n"
- ),
- "newldap" => ((((_(
- "<p>In this dialog, edit some parameters to set up an LDAP server.</p>"
- ) + _(
- "<p>With <big>LDAP Base DN</big> you can change the base DN of the LDAP server.</p>"
- )) + _(
- "<p>The <big>Kerberos Container DN</big> specifies the container where the Kerberos server should create \nthe principals and other informational data by default.</p>\n"
- )) + _(
- "<p><big>KDC Bind DN</big> is the DN for the administrator.</p>"
- )) + _(
- "<p>If you select the checkbox <big>Use Previously Entered Password</big>, the password you entered\nas the KDC Master password is also used for the LDAP administrator. \n"
- )) + _(
- "When the checkbox is not set, you can enter a different password for the LDAP administrator.</p>"
- ),
- "summary" => (_(
- "<p>This is a short summary about your Kerberos server configuration.</p>"
- ) + _(
- "<p>With the radio buttons you can enable or disable this service.</p>"
- )) + _(
- "<p>You can change some values of your configuration by clicking the <b>Edit</b> button.</p>"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing Kerberos Server Configuration</big></b><br>\n</p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving Kerberos Server Configuration</big></b><br>\n</p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
+ ),
+ "AskDBtype" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Specify where the Kerberos server should store the data.</p>"
+ ),
+ _(
+ "<p><big>Local Database</big> will create a local database for storing the credentials.</p>"
+ )
+ ),
+ _(
+ "<p><big>Set Up New LDAP Server as Database Back-End</big> will set up a new LDAP server\non this machine and use it as database back-end.</p>\n"
+ )
+ ),
+ _(
+ "<p><big>Use Existing LDAP Server as Database Back-End</big> gives you the\noption to use an external LDAP server as database back-end.</p>\n"
+ )
+ ),
+ "basic" => Ops.add(
+ _(
+ "<p>Specify the <big>Realm</big> and the <big>Master Password</big> for your Kerberos server.</p>"
+ ),
+ _(
+ "<p>Although your Kerberos realm can be any ASCII string, the convention is to use upper-case letters as in your domain name.</p>\n"
+ )
+ ),
+ "useldap" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>In this dialog, edit some parameters for the LDAP server.</p>"
+ ),
+ _(
+ "<p>With <big>LDAP Server URI</big> specify the location of the LDAP\nserver. For example, <tt>ldaps://host.domain.com</tt>.</p>"
+ )
+ ),
+ _(
+ "<p>With <big>LDAP Base DN</big> you can change the base DN of the LDAP server.</p>"
+ )
+ ),
+ _(
+ "<p>The <big>Kerberos Container DN</big> specifies the container where the Kerberos server should create \nthe principals and other informational data by default.</p>"
+ )
+ ),
+ _(
+ "<p><big>KDC Bind DN</big> is the DN that KDC uses to authenticate to the LDAP server.\nOnly read access is required for this account.</p>\n"
+ )
+ ),
+ _(
+ "<p><big>Kadmin Bind DN</big> is the DN that Kadmind uses to authenticate to the LDAP server.\nThis account also needs write access.</p>\n"
+ )
+ ),
+ "newldap" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>In this dialog, edit some parameters to set up an LDAP server.</p>"
+ ),
+ _(
+ "<p>With <big>LDAP Base DN</big> you can change the base DN of the LDAP server.</p>"
+ )
+ ),
+ _(
+ "<p>The <big>Kerberos Container DN</big> specifies the container where the Kerberos server should create \nthe principals and other informational data by default.</p>\n"
+ )
+ ),
+ _(
+ "<p><big>KDC Bind DN</big> is the DN for the administrator.</p>"
+ )
+ ),
+ _(
+ "<p>If you select the checkbox <big>Use Previously Entered Password</big>, the password you entered\nas the KDC Master password is also used for the LDAP administrator. \n"
+ )
+ ),
+ _(
+ "When the checkbox is not set, you can enter a different password for the LDAP administrator.</p>"
+ )
+ ),
+ "summary" => Ops.add(
+ Ops.add(
+ _(
+ "<p>This is a short summary about your Kerberos server configuration.</p>"
+ ),
+ _(
+ "<p>With the radio buttons you can enable or disable this service.</p>"
+ )
+ ),
+ _(
+ "<p>You can change some values of your configuration by clicking the <b>Edit</b> button.</p>"
+ )
),
"adv_database_name" => _(
"<p>This string specifies the location of the Kerberos database for this realm.</p>"
@@ -78,57 +132,227 @@
"adv_default_principal_expiration" => _(
"<p>This absolute time specifies the default expiration date of principals created in this realm.</p>"
),
- "adv_default_principal_flags" => (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((_(
- "<p>These flags specify the default attributes of the principal created in this realm.</p>"
- ) + "<ul><li><b>") + _(
- "Allow postdated"
- )) + "</b> ") + _(
- "Enabling this flag allows the principal to obtain postdateable tickets."
- )) + "</li>") + "<li><b>") + _(
- "Allow forwardable"
- )) + "</b> ") + _(
- "Enabling this flag allows the principal to obtain forwardable tickets."
- )) + "</li>") + "<li><b>") + _(
- "Allow renewable"
- )) + "</b> ") + _(
- "Enabling this flag allows the principal to obtain renewable tickets."
- )) + "</li>") + "<li><b>") + _(
- "Allow proxiable"
- )) + "</b> ") + _(
- "Enabling this flag allows the principal to obtain proxy tickets."
- )) + "</li>") + "<li><b>") + _(
- "Enable user-to-user authentication"
- )) + "</b> ") + _(
- "Enabling this flag allows the principal to obtain a session key for another user, permitting user-to-user authentication for this principal."
- )) + "</li>") + "<li><b>") + _(
- "Requires preauth"
- )) + "</b> ") + _(
- "If this flag is enabled on a client principal, that principal is required to preauthenticate to the KDC before receiving any tickets. If you enable this flag on a service principal, the service tickets for this principal will only be issued to clients with a TGT that has the preauthenticated ticket set."
- )) + "</li>") + "<li><b>") + _(
- "Requires hwauth"
- )) + "</b> ") + _(
- "If this flag is enabled, the principal is required to preauthenticate using a hardware device before receiving any tickets."
- )) + "</li>") + "<li><b>") + _(
- "Allow service"
- )) + "</b> ") + _(
- "Enabling this flag allows the KDC to issue service tickets for this principal."
- )) + "</li>") + "<li><b>") + _(
- "Allow tgs request"
- )) + "</b> ") + _(
- "Enabling this flag allows a principal to obtain tickets based on a ticket-granting-ticket, rather than repeating the authentication process that was used to obtain the TGT."
- )) + "</li>") + "<li><b>") + _(
- "Allow tickets"
- )) + "</b> ") + _(
- "Enabling this flag means that the KDC will issue tickets for this principal. Disabling this flag essentially deactivates the principal within this realm."
- )) + "</li>") + "<li><b>") + _(
- "Need change"
- )) + "</b> ") + _(
- "Enabling this flag forces a password change for this principal."
- )) + "</li>") + "<li><b>") + _(
- "Password changing service"
- )) + "</b> ") + _(
- "If this flag is enabled, it marks this principal as a password change service. This should only be used in special cases, for example, if a user's password has expired, the user has to get tickets for that principal to be able to change it without going through the normal password authentication."
- )) + "</li></ul>",
+ "adv_default_principal_flags" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>These flags specify the default attributes of the principal created in this realm.</p>"
+ ),
+ "<ul><li><b>"
+ ),
+ _(
+ "Allow postdated"
+ )
+ ),
+ "</b> "
+ ),
+ _(
+ "Enabling this flag allows the principal to obtain postdateable tickets."
+ )
+ ),
+ "</li>"
+ ),
+ "<li><b>"
+ ),
+ _(
+ "Allow forwardable"
+ )
+ ),
+ "</b> "
+ ),
+ _(
+ "Enabling this flag allows the principal to obtain forwardable tickets."
+ )
+ ),
+ "</li>"
+ ),
+ "<li><b>"
+ ),
+ _(
+ "Allow renewable"
+ )
+ ),
+ "</b> "
+ ),
+ _(
+ "Enabling this flag allows the principal to obtain renewable tickets."
+ )
+ ),
+ "</li>"
+ ),
+ "<li><b>"
+ ),
+ _(
+ "Allow proxiable"
+ )
+ ),
+ "</b> "
+ ),
+ _(
+ "Enabling this flag allows the principal to obtain proxy tickets."
+ )
+ ),
+ "</li>"
+ ),
+ "<li><b>"
+ ),
+ _(
+ "Enable user-to-user authentication"
+ )
+ ),
+ "</b> "
+ ),
+ _(
+ "Enabling this flag allows the principal to obtain a session key for another user, permitting user-to-user authentication for this principal."
+ )
+ ),
+ "</li>"
+ ),
+ "<li><b>"
+ ),
+ _(
+ "Requires preauth"
+ )
+ ),
+ "</b> "
+ ),
+ _(
+ "If this flag is enabled on a client principal, that principal is required to preauthenticate to the KDC before receiving any tickets. If you enable this flag on a service principal, the service tickets for this principal will only be issued to clients with a TGT that has the preauthenticated ticket set."
+ )
+ ),
+ "</li>"
+ ),
+ "<li><b>"
+ ),
+ _(
+ "Requires hwauth"
+ )
+ ),
+ "</b> "
+ ),
+ _(
+ "If this flag is enabled, the principal is required to preauthenticate using a hardware device before receiving any tickets."
+ )
+ ),
+ "</li>"
+ ),
+ "<li><b>"
+ ),
+ _("Allow service")
+ ),
+ "</b> "
+ ),
+ _(
+ "Enabling this flag allows the KDC to issue service tickets for this principal."
+ )
+ ),
+ "</li>"
+ ),
+ "<li><b>"
+ ),
+ _("Allow tgs request")
+ ),
+ "</b> "
+ ),
+ _(
+ "Enabling this flag allows a principal to obtain tickets based on a ticket-granting-ticket, rather than repeating the authentication process that was used to obtain the TGT."
+ )
+ ),
+ "</li>"
+ ),
+ "<li><b>"
+ ),
+ _("Allow tickets")
+ ),
+ "</b> "
+ ),
+ _(
+ "Enabling this flag means that the KDC will issue tickets for this principal. Disabling this flag essentially deactivates the principal within this realm."
+ )
+ ),
+ "</li>"
+ ),
+ "<li><b>"
+ ),
+ _("Need change")
+ ),
+ "</b> "
+ ),
+ _(
+ "Enabling this flag forces a password change for this principal."
+ )
+ ),
+ "</li>"
+ ),
+ "<li><b>"
+ ),
+ _("Password changing service")
+ ),
+ "</b> "
+ ),
+ _(
+ "If this flag is enabled, it marks this principal as a password change service. This should only be used in special cases, for example, if a user's password has expired, the user has to get tickets for that principal to be able to change it without going through the normal password authentication."
+ )
+ ),
+ "</li></ul>"
+ ),
"adv_dict_file" => _(
"<p>The string location of the dictionary file containing strings that are not allowed as passwords. If this tag is not set or if there is no policy assigned to the principal, no check will be done.</p>"
),
diff -ur result/ldap-client/src/clients/ldap_browser.rb result-bck/ldap-client/src/clients/ldap_browser.rb
--- result/ldap-client/src/clients/ldap_browser.rb 2013-06-28 14:13:48.916000000 +0200
+++ result-bck/ldap-client/src/clients/ldap_browser.rb 2013-06-28 12:36:10.264000000 +0200
@@ -31,10 +31,11 @@
@tree_items = []
@topdns = {}
@open_items = {}
- @help_text = _(
- "<p>Browse the LDAP tree in the left part of the dialog.</p>"
- ) + _(
- "<p>Once the LDAP object is selected in the tree, the table shows the object data. Use <b>Edit</b> to change the value of the selected attribute. Use <b>Save</b> to save your changes to LDAP.</p>"
+ @help_text = Ops.add(
+ _("<p>Browse the LDAP tree in the left part of the dialog.</p>"),
+ _(
+ "<p>Once the LDAP object is selected in the tree, the table shows the object data. Use <b>Edit</b> to change the value of the selected attribute. Use <b>Save</b> to save your changes to LDAP.</p>"
+ )
)
@unsaved = _(
"There are unsaved changes in the current entry.\nDiscard these changes?\n"
@@ -633,7 +634,7 @@
Table(
Id(:table),
Opt(:notify, :immediate),
- Header(_("Attribute") + " ", _("Value")),
+ Header(Ops.add(_("Attribute"), " "), _("Value")),
items
),
HBox(
diff -ur result/ldap-client/src/include/ldap/ui.rb result-bck/ldap-client/src/include/ldap/ui.rb
--- result/ldap-client/src/include/ldap/ui.rb 2013-06-28 14:13:40.952000000 +0200
+++ result-bck/ldap-client/src/include/ldap/ui.rb 2013-06-28 12:36:10.260000000 +0200
@@ -320,22 +320,46 @@
end
def LdapDialog
- help_text = (((((((_("<p>Set up your machine as an LDAP client.</p>\n") + _(
- "<p>To authenticate your users with an OpenLDAP server, select <b>Use LDAP</b>. NSS and PAM will be configured accordingly.</p>"
- )) + _(
- "<p>To deactivate LDAP services, click <b>Do Not Use LDAP</b>.\nIf you deactivate LDAP, the current LDAP entry for passwd in /etc/nsswitch.conf\nwill be removed. The PAM configuration will be modified and the LDAP entry\nremoved.</p>"
- )) + _(
- "<p>To activate LDAP but forbid users from logging in to this machine, select <b>Enable LDAP Users but Disable Logins</b>.</p>"
- )) + _(
- "<p>Check <b>Use System Security Services Daemon</b> if you want the system to use SSSD instead of nss_ldap.</p>"
- )) + _(
- "<p>Enter the LDAP server's address (such as ldap.example.com or 10.20.0.2) in <b>Addresses</b> and the distinguished name of the search base (<b>Base DN</b>, such as dc=example,dc=com). Specify multiple servers\nby separating their addresses with spaces. It must be possible to resolve the\naddresses without using LDAP. You can also specify the port on which the server is running using the syntax \"server:port\", for example, <tt>ldap.example.com:379</tt>.\n</p>\n"
- )) + _(
- "<p>With <b>Find</b>, select the LDAP server from the list provided by the service location protocol (SLP). Using <b>Fetch DN</b>, read the base DN from server.</p>"
- )) + _(
- "<p>Some LDAP servers support StartTLS (RFC2830).\nIf your server supports it and it is configured, activate <b>LDAP TLS/SSL</b>\nto encrypt your communication with the LDAP server. You may download a CA\ncertificate file in PEM format from a given URL.</p>\n"
- )) + _(
- "<p>To configure advanced LDAP settings, click\n<b>Advanced Configuration</b>.</p>\n"
+ help_text = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p>Set up your machine as an LDAP client.</p>\n"),
+ _(
+ "<p>To authenticate your users with an OpenLDAP server, select <b>Use LDAP</b>. NSS and PAM will be configured accordingly.</p>"
+ )
+ ),
+ _(
+ "<p>To deactivate LDAP services, click <b>Do Not Use LDAP</b>.\nIf you deactivate LDAP, the current LDAP entry for passwd in /etc/nsswitch.conf\nwill be removed. The PAM configuration will be modified and the LDAP entry\nremoved.</p>"
+ )
+ ),
+ _(
+ "<p>To activate LDAP but forbid users from logging in to this machine, select <b>Enable LDAP Users but Disable Logins</b>.</p>"
+ )
+ ),
+ _(
+ "<p>Check <b>Use System Security Services Daemon</b> if you want the system to use SSSD instead of nss_ldap.</p>"
+ )
+ ),
+ _(
+ "<p>Enter the LDAP server's address (such as ldap.example.com or 10.20.0.2) in <b>Addresses</b> and the distinguished name of the search base (<b>Base DN</b>, such as dc=example,dc=com). Specify multiple servers\nby separating their addresses with spaces. It must be possible to resolve the\naddresses without using LDAP. You can also specify the port on which the server is running using the syntax \"server:port\", for example, <tt>ldap.example.com:379</tt>.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>With <b>Find</b>, select the LDAP server from the list provided by the service location protocol (SLP). Using <b>Fetch DN</b>, read the base DN from server.</p>"
+ )
+ ),
+ _(
+ "<p>Some LDAP servers support StartTLS (RFC2830).\nIf your server supports it and it is configured, activate <b>LDAP TLS/SSL</b>\nto encrypt your communication with the LDAP server. You may download a CA\ncertificate file in PEM format from a given URL.</p>\n"
+ )
+ ),
+ _(
+ "<p>To configure advanced LDAP settings, click\n<b>Advanced Configuration</b>.</p>\n"
+ )
)
autofs_help_text = _(
"<p><b>Automounter</b> is a daemon that automatically mounts directories, such\nas users' home directories. Its configuration files (auto.*) should already\nexist locally or over LDAP. If the automounter is not installed yet but you\nwant to use it, it will be installed automatically.</p>\n"
@@ -545,7 +569,7 @@
if !check_address(server)
Report.Error(
Ops.add(
- _("The LDAP server address is invalid.") + "\n\n",
+ Ops.add(_("The LDAP server address is invalid."), "\n\n"),
Address.Valid4
)
)
@@ -683,10 +707,16 @@
help_text = {
:client => Ops.add(
Ops.add(
- (_("<p><b>Advanced LDAP Client Settings</b></p>") + _(
- "<p>If Kerberos authentication should be used, specify the <b>realm</b> and <b>KDC Address</b>.\nDetermine if user credentials should be cached locally by checking <b>SSSD Offline Authentication</b>.\nFor more info about SSSD settings, check the man page of <tt>sssd.conf</tt>.</p>\n"
- )) + _(
- "<p><b>Password Change Protocol</b> refers to the pam_password attribute of the\n<tt>/etc/ldap.conf</tt> file. See <tt>man pam_ldap</tt> for an explanation of its values.</p>"
+ Ops.add(
+ Ops.add(
+ _("<p><b>Advanced LDAP Client Settings</b></p>"),
+ _(
+ "<p>If Kerberos authentication should be used, specify the <b>realm</b> and <b>KDC Address</b>.\nDetermine if user credentials should be cached locally by checking <b>SSSD Offline Authentication</b>.\nFor more info about SSSD settings, check the man page of <tt>sssd.conf</tt>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Password Change Protocol</b> refers to the pam_password attribute of the\n<tt>/etc/ldap.conf</tt> file. See <tt>man pam_ldap</tt> for an explanation of its values.</p>"
+ )
),
Builtins.sformat(
_(
@@ -699,14 +729,26 @@
"<p>If secure connection requires certificate checking, specify where your\ncertificate file is located. Enter either a directory containing certificates\nor the explicit path to one certificate file.</p>"
)
),
- :admin => (((_("<p><b>Access to Server</b></p>") + _(
- "<p>First, set <b>Configuration Base DN</b>.\nThis is the base for storing your configuration data on the LDAP\nserver.</p>\n"
- )) + _(
- "<p>To access the data stored on the server, enter the\n<b>Administrator DN</b>.\nYou can enter the full DN (for example, cn=Administrator,dc=mydomain,dc=com) or \nthe relative DN (for example, cn=Administrator). The LDAP base DN is appended automatically if the appropriate option is checked.</p>\n"
- )) + _(
- "<p>To create the default configuration objects for LDAP users and groups,\ncheck <b>Create Default Configuration Objects</b>. The objects are only created when they do not already exist.</p>\n"
- )) + _(
- "<p>Press <b>Configure</b> to configure settings stored on the\nLDAP server. You will be asked for the password if you are not connected yet or\nhave changed your configuration.</p>\n"
+ :admin => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b>Access to Server</b></p>"),
+ _(
+ "<p>First, set <b>Configuration Base DN</b>.\nThis is the base for storing your configuration data on the LDAP\nserver.</p>\n"
+ )
+ ),
+ _(
+ "<p>To access the data stored on the server, enter the\n<b>Administrator DN</b>.\nYou can enter the full DN (for example, cn=Administrator,dc=mydomain,dc=com) or \nthe relative DN (for example, cn=Administrator). The LDAP base DN is appended automatically if the appropriate option is checked.</p>\n"
+ )
+ ),
+ _(
+ "<p>To create the default configuration objects for LDAP users and groups,\ncheck <b>Create Default Configuration Objects</b>. The objects are only created when they do not already exist.</p>\n"
+ )
+ ),
+ _(
+ "<p>Press <b>Configure</b> to configure settings stored on the\nLDAP server. You will be asked for the password if you are not connected yet or\nhave changed your configuration.</p>\n"
+ )
),
:searching => _(
"<p>Specify the search bases to use for specific maps (users or groups) if they are different from the base DN. These values are\nset to the ldap_user_search_base and ldap_group_search_base attributes in /etc/sssd/sssd.conf file.</p>\n"
@@ -1157,12 +1199,18 @@
def TemplateConfigurationDialog(templ)
templ = deep_copy(templ)
- help_text = (_(
- "<p>Configure the template used for creating \nnew objects (like users or groups).</p>\n"
- ) + _(
- "<p>Edit the template attribute values with <b>Edit</b>.\nChanging the <b>cn</b> value renames the template.</p>\n"
- )) + _(
- "<p>The second table contains a list of <b>default values</b> used\nfor new objects. Modify the list by adding new values, editing or\nremoving current ones.</p>\n"
+ help_text = Ops.add(
+ Ops.add(
+ _(
+ "<p>Configure the template used for creating \nnew objects (like users or groups).</p>\n"
+ ),
+ _(
+ "<p>Edit the template attribute values with <b>Edit</b>.\nChanging the <b>cn</b> value renames the template.</p>\n"
+ )
+ ),
+ _(
+ "<p>The second table contains a list of <b>default values</b> used\nfor new objects. Modify the list by adding new values, editing or\nremoving current ones.</p>\n"
+ )
)
template_dn = Ldap.current_template_dn
table_items = []
@@ -1389,14 +1437,21 @@
end
def ModuleConfigurationDialog
- help_text = ((_(
- "<p>Manage the configuration stored in the LDAP directory.</p>"
- ) + _(
- "<p>Each configuration set is called a \"configuration module.\" If there\nis no configuration module in the provided location (base configuration),\ncreate one with <b>New</b>. Delete the current module\nusing <b>Delete</b>.</p>\n"
- )) + _(
- "<p>Edit the values of attributes in the table with <b>Edit</b>.\nSome values have special meanings, for example, changing the <b>cn</b> value renames the\ncurrent module.</p>\n"
- )) + _(
- "<p>To configure the default template of the current module,\nclick <b>Configure Template</b>.\n</p>\n"
+ help_text = Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p>Manage the configuration stored in the LDAP directory.</p>"),
+ _(
+ "<p>Each configuration set is called a \"configuration module.\" If there\nis no configuration module in the provided location (base configuration),\ncreate one with <b>New</b>. Delete the current module\nusing <b>Delete</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p>Edit the values of attributes in the table with <b>Edit</b>.\nSome values have special meanings, for example, changing the <b>cn</b> value renames the\ncurrent module.</p>\n"
+ )
+ ),
+ _(
+ "<p>To configure the default template of the current module,\nclick <b>Configure Template</b>.\n</p>\n"
+ )
)
current_dn = Ldap.current_module_dn
modules_attrs_items = {}
diff -ur result/ldap-client/src/modules/LdapPopup.rb result-bck/ldap-client/src/modules/LdapPopup.rb
--- result/ldap-client/src/modules/LdapPopup.rb 2013-06-28 14:13:32.600000000 +0200
+++ result-bck/ldap-client/src/modules/LdapPopup.rb 2013-06-28 12:36:10.260000000 +0200
@@ -214,8 +214,11 @@
Ops.index(settings, "browse", false),
{ :from => "any", :to => "boolean" }
)
- help_text = _("<p>Set the new value for the current attribute.</p>") + _(
- "<p>If the attribute can have more values, add new entries\nwith <b>Add Value</b>. Sometimes the button contains the list of\npossible values to use for the current attribute.\nIf the value of the edited attribute should be a distinguished name (DN),\nit is possible to choose it from the LDAP tree using <b>Browse</b>.\n</p>\n"
+ help_text = Ops.add(
+ _("<p>Set the new value for the current attribute.</p>"),
+ _(
+ "<p>If the attribute can have more values, add new entries\nwith <b>Add Value</b>. Sometimes the button contains the list of\npossible values to use for the current attribute.\nIf the value of the edited attribute should be a distinguished name (DN),\nit is possible to choose it from the LDAP tree using <b>Browse</b>.\n</p>\n"
+ )
)
desc = Ldap.AttributeDescription(attr)
if desc != ""
@@ -456,10 +459,13 @@
def AddDefaultValue(available, conflicts)
available = deep_copy(available)
conflicts = deep_copy(conflicts)
- help_text = _(
- "<p>Here, set the values of attributes belonging\nto an object using the current template. Such values are used as defaults when\nthe new object is created.</p>\n"
- ) + _(
- "<p>You can use special syntax to create attribute\nvalues from existing ones. The expression <i>%attr_name</i> will be replaced\nwith the value of attribute \"attr_name\" (for example, use \"/home/%uid\"\nas a value of \"homeDirectory\").</p>\n"
+ help_text = Ops.add(
+ _(
+ "<p>Here, set the values of attributes belonging\nto an object using the current template. Such values are used as defaults when\nthe new object is created.</p>\n"
+ ),
+ _(
+ "<p>You can use special syntax to create attribute\nvalues from existing ones. The expression <i>%attr_name</i> will be replaced\nwith the value of attribute \"attr_name\" (for example, use \"/home/%uid\"\nas a value of \"homeDirectory\").</p>\n"
+ )
)
available = Builtins.filter(
Convert.convert(available, { :from => "list", :to => "list <string>" })
diff -ur result/ldap-server/src/clients/ldap-server_proposal.rb result-bck/ldap-server/src/clients/ldap-server_proposal.rb
--- result/ldap-server/src/clients/ldap-server_proposal.rb 2013-06-28 14:22:10.056000000 +0200
+++ result-bck/ldap-server/src/clients/ldap-server_proposal.rb 2013-06-28 12:35:56.304000000 +0200
@@ -170,7 +170,7 @@
}
end
textdomain "base"
- @fw_text = _("Open Port in Firewall") + ": "
+ @fw_text = Ops.add(_("Open Port in Firewall"), ": ")
textdomain "ldap-server"
if @is_ldap_enabled
@fw_text = Ops.add(@fw_text, HTML.Bold(_("YES")))
diff -ur result/ldap-server/src/include/ldap-server/dialogs.rb result-bck/ldap-server/src/include/ldap-server/dialogs.rb
--- result/ldap-server/src/include/ldap-server/dialogs.rb 2013-06-28 14:21:53.148000000 +0200
+++ result-bck/ldap-server/src/include/ldap-server/dialogs.rb 2013-06-28 12:35:56.304000000 +0200
@@ -342,8 +342,11 @@
Left(
RadioButton(
Id(:rb_slave),
- _("Replica (slave) server.\n") + _(
- "All data, including configuration, is replicated from a remote server."
+ Ops.add(
+ _("Replica (slave) server.\n"),
+ _(
+ "All data, including configuration, is replicated from a remote server."
+ )
),
false
)
@@ -374,10 +377,13 @@
if UI.QueryWidget(Id(:rbg_servertype), :CurrentButton) == :rb_master
if Builtins.size(LdapServer.ReadHostnameFQ) == 0
Popup.Notify(
- _(
- "YaST was not able to determine the fully qualified hostname of this\ncomputer. \n"
- ) + _(
- "Setting up a replication master is currently not possible."
+ Ops.add(
+ _(
+ "YaST was not able to determine the fully qualified hostname of this\ncomputer. \n"
+ ),
+ _(
+ "Setting up a replication master is currently not possible."
+ )
)
)
UI.ChangeWidget(:rb_master, :Enabled, false)
@@ -590,8 +596,9 @@
pw = nil
if !Popup.YesNo(
Ops.add(
- _("LDAP Authentication failed. Try again?\n") + _(
- "Error message: "
+ Ops.add(
+ _("LDAP Authentication failed. Try again?\n"),
+ _("Error message: ")
),
err
)
@@ -962,16 +969,22 @@
if !LdapServer.InitRemoteConnection(testparm)
err = LdapServer.ReadError
Popup.ErrorDetails(
- _(
- "Failed to open connection to the \"cn=config\" database on the provider server.\n"
- ) + _(
- "Verify that the provider server allows remote connections to the \n\"cn=config\" database and that you entered the correct password.\n"
+ Ops.add(
+ _(
+ "Failed to open connection to the \"cn=config\" database on the provider server.\n"
+ ),
+ _(
+ "Verify that the provider server allows remote connections to the \n\"cn=config\" database and that you entered the correct password.\n"
+ )
),
Ops.add(
Ops.add(
Ops.add(
Ops.add(
- _("The following error messages were returned:") + "\n\n\"",
+ Ops.add(
+ _("The following error messages were returned:"),
+ "\n\n\""
+ ),
Convert.to_string(Ops.index(err, "msg", ""))
),
"\"\n\""
@@ -1013,10 +1026,11 @@
syncrepl = Ops.index(srl, 0, {})
if Builtins.size(syncrepl) == 0
if Popup.ContinueCancel(
- _(
- "The replication configuration on the provider server is missing.\n"
- ) + _(
- "Click Continue to create it now."
+ Ops.add(
+ _(
+ "The replication configuration on the provider server is missing.\n"
+ ),
+ _("Click Continue to create it now.")
)
)
syncrepl = {
@@ -1088,10 +1102,13 @@
end
if !setupok
Popup.Error(
- _(
- "The replication configuration on the master server indicates that\nit is already acting as a replication consumer.\n"
- ) + _(
- "Setting up cascaded replication of the cn=config is currently not supported."
+ Ops.add(
+ _(
+ "The replication configuration on the master server indicates that\nit is already acting as a replication consumer.\n"
+ ),
+ _(
+ "Setting up cascaded replication of the cn=config is currently not supported."
+ )
)
)
ret = :cancel
@@ -1127,11 +1144,17 @@
Ops.add(
Ops.add(
Ops.add(
- (_(
- "Checking the authentication credentials defined in the replication configuration on the provider server failed.\n"
- ) + _(
- "The test returned the following error messages:"
- )) + "\n\n\"",
+ Ops.add(
+ Ops.add(
+ _(
+ "Checking the authentication credentials defined in the replication configuration on the provider server failed.\n"
+ ),
+ _(
+ "The test returned the following error messages:"
+ )
+ ),
+ "\n\n\""
+ ),
Convert.to_string(Ops.index(err, "summary", ""))
),
"\"\n\""
@@ -1242,10 +1265,13 @@
Heading(_("Replication Master setup")),
VSpacing(0.5),
Label(
- _(
- "To act as a master server for replication, the configuration database needs\nto be remotely accessible. Set a password for the configuration database.\n"
- ) + _(
- "\n(Remote access to the Configuration database will be restricted to encrypted\nLDAP Connections.)\n"
+ Ops.add(
+ _(
+ "To act as a master server for replication, the configuration database needs\nto be remotely accessible. Set a password for the configuration database.\n"
+ ),
+ _(
+ "\n(Remote access to the Configuration database will be restricted to encrypted\nLDAP Connections.)\n"
+ )
)
),
VSpacing(0.5),
diff -ur result/ldap-server/src/include/ldap-server/helps.rb result-bck/ldap-server/src/include/ldap-server/helps.rb
--- result/ldap-server/src/include/ldap-server/helps.rb 2013-06-28 14:21:59.804000000 +0200
+++ result-bck/ldap-server/src/include/ldap-server/helps.rb 2013-06-28 12:35:56.304000000 +0200
@@ -9,183 +9,340 @@
def initialize_ldap_server_helps(include_target)
textdomain "ldap-server"
@HELPS = {
- "startup_config" => ((((((((_(
- "<h3>Startup Configuration</h3>"
- ) + _(
- "<h4>Start LDAP Server</h4>"
- )) + _(
- "<p>Select <b>Yes</b> if the LDAP server should be started automatically as \npart of the boot process. Select <b>No</b> if the LDAP server should not be started. Note:\nAfter selecting <b>No</b>, you cannot change the OpenLDAP configuration.</p>\n"
- )) + _(
- "<h4>Protocol Listeners</h4>"
- )) + _(
- "<p>Enable and disable the various protocol listeners of OpenLDAP.</p>"
- )) + _(
- "<p><b>LDAP</b> is the standard LDAP interface on Port 389. TLS/SSL secured communication\nis possible with the StartTLS operation when you have a server certificate configured.</p>"
- )) + _(
- "<p><b>LDAPS</b> enables the \"LDAP over SSL (ldaps)\" interface for SSL protected\nconnections on port 636. This only works if you have a server certificate configured (see \"Global Settings\"/\"TLS Settings\").\n"
- )) + _(
- "<p><b>LDAPI</b> enables the \"LDAP over IPC\" interface for accessing the\nLDAP server via a Unix Domain Socket. Do not disable the LDAPI interface \nas YaST uses it to communicate with the server.</p>\n"
- )) + _(
- "<h4>Firewall Settings</h4>"
- )) + _(
- "<p>Select whether SuSEFirewall should allow access on the LDAP-related\nnetwork ports or not.</p>\n"
- ),
- "database_basic" => ((((_(
- "<h3>Basic Database Settings</h3>"
- ) + _(
- "<p>Choose the <b>Database</b> from <b>hdb</b> and <b>bdb</b>. <b>Hdb</b> is a\nvariant of the <b>bdb</b> backend that uses a hierarchical database layout and\nsupports subtree renames. Otherwise it is identical to <b>bdb</b>. A\n<b>hdb</b>-Database needs a larger <b>idlcachesize</b> than a\n<b>bdb</b>-Database for a good search performance.</p>\n"
- )) + _(
- "<p>The <b>Base DN</b> option specifies the name of the root entry \nof the database being created.</p>"
- )) + _(
- "<p>The <b>Administrator DN</b> along with a <b>LDAP Administrator Password</b> \nspecifies a superuser identity for the database, surpassing all ACLs and other \nadministrative limit restrictions. Checking <b>Append Base DN</b> appends the \n<b>Base DN</b> entered above, for example, a base DN of <tt>dc=example,dc=com</tt>\nand Administrator DN of <tt>c=Admin</tt> would combine to an effective Administrator DN\nof <tt>c=Admin,dc=example,dc=com</tt>.</p> "
- )) + _(
- "<p>If this wizard was started during installation, the \n<b>LDAP Administrator Password</b> is initially set to the system's root password\nentered earlier in the installation process.</p> "
- )) + _(
- "<p>To use this database as default for the OpenLDAP client tools \n(e.g. ldapsearch), check <b>Use this database as the default for OpenLDAP\nclients</b>. This will result in the hostname \"localhost\" and the above \nentered <b>Base DN</b> being written to the OpenLDAP client configuration \nfile <tt>/etc/openldap/ldap.conf</tt>. This checkbox is selected by default\nwhen creating the first database on a server.</p>\n"
+ "startup_config" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h3>Startup Configuration</h3>"),
+ _("<h4>Start LDAP Server</h4>")
+ ),
+ _(
+ "<p>Select <b>Yes</b> if the LDAP server should be started automatically as \npart of the boot process. Select <b>No</b> if the LDAP server should not be started. Note:\nAfter selecting <b>No</b>, you cannot change the OpenLDAP configuration.</p>\n"
+ )
+ ),
+ _("<h4>Protocol Listeners</h4>")
+ ),
+ _(
+ "<p>Enable and disable the various protocol listeners of OpenLDAP.</p>"
+ )
+ ),
+ _(
+ "<p><b>LDAP</b> is the standard LDAP interface on Port 389. TLS/SSL secured communication\nis possible with the StartTLS operation when you have a server certificate configured.</p>"
+ )
+ ),
+ _(
+ "<p><b>LDAPS</b> enables the \"LDAP over SSL (ldaps)\" interface for SSL protected\nconnections on port 636. This only works if you have a server certificate configured (see \"Global Settings\"/\"TLS Settings\").\n"
+ )
+ ),
+ _(
+ "<p><b>LDAPI</b> enables the \"LDAP over IPC\" interface for accessing the\nLDAP server via a Unix Domain Socket. Do not disable the LDAPI interface \nas YaST uses it to communicate with the server.</p>\n"
+ )
+ ),
+ _("<h4>Firewall Settings</h4>")
+ ),
+ _(
+ "<p>Select whether SuSEFirewall should allow access on the LDAP-related\nnetwork ports or not.</p>\n"
+ )
+ ),
+ "database_basic" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h3>Basic Database Settings</h3>"),
+ _(
+ "<p>Choose the <b>Database</b> from <b>hdb</b> and <b>bdb</b>. <b>Hdb</b> is a\nvariant of the <b>bdb</b> backend that uses a hierarchical database layout and\nsupports subtree renames. Otherwise it is identical to <b>bdb</b>. A\n<b>hdb</b>-Database needs a larger <b>idlcachesize</b> than a\n<b>bdb</b>-Database for a good search performance.</p>\n"
+ )
+ ),
+ _(
+ "<p>The <b>Base DN</b> option specifies the name of the root entry \nof the database being created.</p>"
+ )
+ ),
+ _(
+ "<p>The <b>Administrator DN</b> along with a <b>LDAP Administrator Password</b> \nspecifies a superuser identity for the database, surpassing all ACLs and other \nadministrative limit restrictions. Checking <b>Append Base DN</b> appends the \n<b>Base DN</b> entered above, for example, a base DN of <tt>dc=example,dc=com</tt>\nand Administrator DN of <tt>c=Admin</tt> would combine to an effective Administrator DN\nof <tt>c=Admin,dc=example,dc=com</tt>.</p> "
+ )
+ ),
+ _(
+ "<p>If this wizard was started during installation, the \n<b>LDAP Administrator Password</b> is initially set to the system's root password\nentered earlier in the installation process.</p> "
+ )
+ ),
+ _(
+ "<p>To use this database as default for the OpenLDAP client tools \n(e.g. ldapsearch), check <b>Use this database as the default for OpenLDAP\nclients</b>. This will result in the hostname \"localhost\" and the above \nentered <b>Base DN</b> being written to the OpenLDAP client configuration \nfile <tt>/etc/openldap/ldap.conf</tt>. This checkbox is selected by default\nwhen creating the first database on a server.</p>\n"
+ )
),
"database_detail_unsupported" => _(
"YaST currently does not support this database. You can not \nchange any configuration settings here.\n"
),
- "database_detail_config" => _(
- "<p>To enable or disable plaintext authentication (LDAP Simple Bind)\nfor the configuration database, click the associated checkbox. Plaintext \nauthentication to the configuration database will only be allowed when \nusing sufficiently protected (e.g. SSL/TLS encrypted) connections.</p>\n"
- ) + _(
- "<p>To change the administration password for the configuration database, \nclick <b>Change Password</b>. \nA Popup will prompt you to enter the new password and select the \n<b>Password Encryption</b>. \nThe password fields are initially empty even if a password has already been \nset in the configuration.</p>\n"
- ),
- "database_detail" => (((_("<h3>Edit BDB Database</h3>") + _(
- "<p>Change basic settings of BDB and HDB Databases.</p>"
- )) + _(
- "<p>Enter the complete DN or only the first part and append the base DN automatically\nwith <b>Append Base DN</b>.</p>"
- )) + _(
- "<p>To change the password for the administrator account, click <b>Change Password</b>.\nA Popup will prompt you to enter the new password and select the <b>Password Encryption</b>.\nThe password fields are initially empty even if a password has already been set in the configuration.</p>\n"
- )) + _(
- "<p>With the <b>Entry Cache</b> and <b>Index Cache (IDL cache)</b> you can adjust\nthe sizes of OpenLDAP's internal caches. The <b>Entry Cache</b> defines the number of entries\nthat are kept in OpenLDAP's in-memory entry cache. If it is possible (enough RAM) this number\nshould be large enough to keep the whole database in memory. The <b>Index Cache (IDL cache)</b> \nis used to speed up searches on indexed attributes. In general especially HDB-Databases require a\nlarge IDL cache for good search performance (three times the size of the entry cache as a rule of\nthumbs).</p>"
- ),
- "ppolicy_edit" => ((((_(
- "<h3>Password Policy Settings</h3>"
- ) + _(
- "<p>To make use of password policies for this database, enable \n<b>Enable Password Policies</b>.</p>"
- )) + _(
- "<p>Check <b>Hash Clear Text Passwords</b> to specify that the OpenLDAP server\nshould encrypt clear text passwords present in add and modify requests before storing them\nin the database. Note that this violates the X.500/LDAP information model, but may be\nneeded to compensate for LDAP clients that do not use the password modify extended operation \nto manage passwords.</p> "
- )) + _(
- "<p>If <b>Disclose \"Account Locked\" Status</b> is enabled, users trying to\nauthenticate to a locked account are notified that their account is\nlocked. This notification might provide useful information to an\nattacker. Sites sensitive to security issues should not enable this\noption.</p> \n"
- )) + _(
- "<p>Enter the name of the default policy object in <b>Default Policy Object DN</b>.</p>"
- )) + _(
- "<p>Create or change the default policy by clicking <b>Edit Policy</b>. You may\nbe asked to enter the LDAP administrator password afterwards to allow the\nPolicy Object being read from the server.</p>\n"
- ),
- "index_edit" => (((((((_(
- "<h3>Index Configuration</h3>"
- ) + _(
- "<p>Change the indexing options of a hdb of bdb-Database.</p>"
- )) + _(
- "<p>The table displays a list of attributes which currently have an index defined.</p>"
- )) + _(
- "<p>Indexes are used by OpenLDAP to improve search performance on specific\ntypes of searches. Indexes should be configured corresponding to the most\ncommon searches on a database. YaST allows you to setup three different types\nof indexes.</p>\n"
- )) + _(
- "<p><b>Presence</b>: This index is used for searches with presence filters\n(i.e. <tt>(attributeType=*)</tt>). Presence indexes should only be configured\nfor attributes that occur rarely in the database.</p>\n"
- )) + _(
- "<p><b>Equality</b>: This index is used for searches with equality filters \n(i.e.(<tt>(attributeType=&lt;exact values&gt;)</tt>). An <b>Equality</b> index\nshould always be configured with the <tt>objectclass</tt> attribute.</p>\n"
- )) + _(
- "<p><b>Substring</b>: This index is used for searches with substring filters\n(i.e. <tt>(attributeType=&lt;substring&gt;*)</tt>)</p>\n"
- )) + _(
- "<p>Use <b>Add</b> to define indexing options for a new attribute,\n<b>Delete</b> to delete an existing index and <b>Edit</b> to change the\nindexing options of an already indexed attribute.</p>\n"
- )) + _(
- "<p>Note: Depending on the database size it can take a while until newly added\nindexes will get active on a database. After the configuration has been\nwritten to the server, a background task will start to generate the indexing\ninformation for the database.</p>\n"
- ),
- "acl_edit" => (((_(
- "<h3>Access Control Configuration</h3>"
- ) + _(
- "<p>This table gives you an overview of all Access Control rules that are\ncurrently configured for the selected database</p>\n"
- )) + _(
- "<p>For each rule, you can see which target objects it matches. To see a more\ndetailed view of a rule or to change one, select the rule in the table and\nclick <b>Edit</b>.</p>\n"
- )) + _(
- "<p>Use <b>Add</b> to create new access control rules and <b>Delete</b> to\ndelete an access control rule.</p>\n"
- )) + _(
- "<p>OpenLDAP's access control evaluation stops at the first rule whose target\ndefinition (DN, filter and attributes) matches the entry being\naccessed. Therefore you should order the rules according to your needs, using\nthe <b>Up</b> and <b>Down</b> buttons.</p>\n"
- ),
- "syncprov_edit" => ((((_(
- "<h3>Replication Provider Settings</h3>"
- ) + _(
- "<p>Select the \"<b>Enable ldapsync provider for this database</b>\" checkbox, if you want to \nbe able to replicate the currently selected database to another server.</p>"
- )) + _(
- "<h4>Checkpoint Settings</h4>"
- )) + _(
- "<p>Here you can specify how often the synchronization state indicator (stored\nin the \"<i>contextCSN</i>\"-Attribute) is written to the database. It is synced\nto the database after the number of write \"<i>Operations</i>\" you specify or\nafter more than the specified \"<i>Minutes</i>\" have passed since the indicator\nhas last been written. By default (both values are '0') the state indicator is\nonly written after a clean shutdown. Writing it more often can result in\na faster startup time after an unclean shutdown but might result in a small\nperformance hit in environments with many LDAP write operations.</p>\n"
- )) + _(
- "<h4>Session log</h4>"
- )) + _(
- "<p>Configures an in-memory session log for recording information about write operations\nmade on the database. Specify how many write operation should be recorded in the session log. \nConfiguring a session log is only useful for \"<i>refreshOnly</i>\" replication. In \nsuch a case it can speed up replication and reduce the load on the master server.</p>"
- ),
- "synccons_edit" => ((((((((((_(
- "<h3>Replication Consumer Settings</h3>"
- ) + _(
- "<p>Select \"<b>This database is a Replication Consumer</b>\" if you want the\ndatabase to be a replica of a database on another server.</p>\n"
- )) + _(
- "<h4>Provider</h4>"
- )) + _(
- "Enter the connection details for the replication connection to the master\nserver here. Select the protocol to use (<b>ldap</b> or <b>ldaps</b>) and\nenter the fully qualified hostname of the master server. It is important to\nuse the fully qualified hostname to verify the master server's TLS/SSL\ncertificate. Adjust the port number if the master server is using non-standard\nldap ports.\n"
- )) + _(
- "<h4>Replication Type</h4>"
- )) + _(
- "<p>OpenLDAP supports different modes of replication:</p>"
- )) + _(
- "<p><b>refreshOnly</b>: The slave server will periodically open a new\nconnection, trigger a synchronization and close the connection again. The\ninterval how often this synchronization happens can be configured via the\n<b>Replication Interval</b> setting.</p>\n"
- )) + _(
- "<p><b>refreshAndPersist</b>: The slave server will open a persistent\nconnection to the master server for synchronization. Updated entries on the\nmaster server are immediately sent to the slave via this connection.</p>\n"
- )) + _(
- "<h4>Authentication</h4>"
- )) + _(
- "<p>Specify a DN and password which the slave server should use to authenticate against the master.\nThe specified DN needs to have read access to all entries in the replicated database on the master.</p>\n"
- )) + _(
- "<h4>Update Referral</h4>"
- )) + _(
- "<p>As the slave database is readonly, the slave server will answer write\noperations with an LDAP referral. \nBy default, this referral points the client to the master server. You can configure a different update referral here.\nThis is e.g. useful in a cascaded replication setup where the provider for the\nslave server is as slave server too. </p>\n"
- ),
- "read" => _(
- "<p><b><big>Initializing LDAP Server Configuration</big></b></p>"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>"
- ),
- "write" => _(
- "<p><b><big>Saving LDAP Server Configuration</big></b></p> \n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>. An additional dialog\ninforms you whether it is safe to do so.</p>\n"
- ),
- "summary" => _(
- "<h3>LDAP Server Configuration Summary</h3>"
- ) + _(
- "<p>This dialog provides a short summary about the configuration you have\ncreated. Click <b>Finish</b> to write the configuration and leave the LDAP\nServer module.</p>\n"
- ),
- "service_dialog" => (_(
- "<p>With <b>Start LDAP Server Yes or No</b>, start or stop the LDAP server.</p> "
- ) + _(
- "<p>If you select <b>Yes</b>, click <b>Next</b> to start the configuration wizard.</p>"
- )) + _(
- "<p>If the Firewall is enabled, open the required network ports\nfor OpenLDAP by checking the corresponding checkbox.</p>\n"
- ),
- "server_type" => ((_(
- "<p>Select the type of LDAP server you want to setup. The following scenarios are available:</p>"
- ) + _(
- "<p><b>Stand-alone server</b>: Setup a single stand-alone OpenLDAP server with\nno preparations for replication.</p>\n"
- )) + _(
- "<p><b>Master server in a replication setup</b>: Create an OpenLDAP setup\nprepared to act as a master server (provider) in a replication setup.</p>\n"
- )) + _(
- "<p><b>Replica slave server</b>: Setup an OpenLDAP slave server that replicates all its data,\nincluding configuration, from a master server.</p>"
- ),
- "tls_dialog" => ((((((_("<h3>TLS Settings</h3>") + _(
- "<h4>Basic Settings</h4>"
- )) + _(
- "<p>To enable encryption via TLS/SSL, check the <b>Enabled TLS</b>\ncheckbox. Additionally you need to configure a certificate for the Server \nto use.</p>\n"
- )) + _(
- "<p>Check <b>Enable LDAP over SSL (ldaps) interface</b>, to enable the server\nto accept LDAPS connections on port 636. If not checked, OpenLDAP will only\nsupport TLS encrypted connections through the StartTLS extended operation.</p>\n"
- )) + _(
- "<p>If you already have a common server certificate installed using the\ncorresponding YaST Module, check <b>Use common Server Certificate</b> so that\nthe OpenLDAP server uses this certificate.</p>\n"
- )) + _(
- "<h4>Import Certificate</h4>"
- )) + _(
- "<p>If you have no common server certificate or you want OpenLDAP to use a\ndifferent certificate, enter the file names of the <b>CA Certificate File</b>,\n<b>Certificate File</b> and <b>Certificate Key File</b> into the corresponding\ntextfields.</p>\n"
- )) + _(
- "<p>To create a new CA or certificate, launch the CA management module by\nclicking <b>Launch CA Management Module</b>.</p>\n"
+ "database_detail_config" => Ops.add(
+ _(
+ "<p>To enable or disable plaintext authentication (LDAP Simple Bind)\nfor the configuration database, click the associated checkbox. Plaintext \nauthentication to the configuration database will only be allowed when \nusing sufficiently protected (e.g. SSL/TLS encrypted) connections.</p>\n"
+ ),
+ _(
+ "<p>To change the administration password for the configuration database, \nclick <b>Change Password</b>. \nA Popup will prompt you to enter the new password and select the \n<b>Password Encryption</b>. \nThe password fields are initially empty even if a password has already been \nset in the configuration.</p>\n"
+ )
+ ),
+ "database_detail" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h3>Edit BDB Database</h3>"),
+ _("<p>Change basic settings of BDB and HDB Databases.</p>")
+ ),
+ _(
+ "<p>Enter the complete DN or only the first part and append the base DN automatically\nwith <b>Append Base DN</b>.</p>"
+ )
+ ),
+ _(
+ "<p>To change the password for the administrator account, click <b>Change Password</b>.\nA Popup will prompt you to enter the new password and select the <b>Password Encryption</b>.\nThe password fields are initially empty even if a password has already been set in the configuration.</p>\n"
+ )
+ ),
+ _(
+ "<p>With the <b>Entry Cache</b> and <b>Index Cache (IDL cache)</b> you can adjust\nthe sizes of OpenLDAP's internal caches. The <b>Entry Cache</b> defines the number of entries\nthat are kept in OpenLDAP's in-memory entry cache. If it is possible (enough RAM) this number\nshould be large enough to keep the whole database in memory. The <b>Index Cache (IDL cache)</b> \nis used to speed up searches on indexed attributes. In general especially HDB-Databases require a\nlarge IDL cache for good search performance (three times the size of the entry cache as a rule of\nthumbs).</p>"
+ )
+ ),
+ "ppolicy_edit" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h3>Password Policy Settings</h3>"),
+ _(
+ "<p>To make use of password policies for this database, enable \n<b>Enable Password Policies</b>.</p>"
+ )
+ ),
+ _(
+ "<p>Check <b>Hash Clear Text Passwords</b> to specify that the OpenLDAP server\nshould encrypt clear text passwords present in add and modify requests before storing them\nin the database. Note that this violates the X.500/LDAP information model, but may be\nneeded to compensate for LDAP clients that do not use the password modify extended operation \nto manage passwords.</p> "
+ )
+ ),
+ _(
+ "<p>If <b>Disclose \"Account Locked\" Status</b> is enabled, users trying to\nauthenticate to a locked account are notified that their account is\nlocked. This notification might provide useful information to an\nattacker. Sites sensitive to security issues should not enable this\noption.</p> \n"
+ )
+ ),
+ _(
+ "<p>Enter the name of the default policy object in <b>Default Policy Object DN</b>.</p>"
+ )
+ ),
+ _(
+ "<p>Create or change the default policy by clicking <b>Edit Policy</b>. You may\nbe asked to enter the LDAP administrator password afterwards to allow the\nPolicy Object being read from the server.</p>\n"
+ )
+ ),
+ "index_edit" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h3>Index Configuration</h3>"),
+ _(
+ "<p>Change the indexing options of a hdb of bdb-Database.</p>"
+ )
+ ),
+ _(
+ "<p>The table displays a list of attributes which currently have an index defined.</p>"
+ )
+ ),
+ _(
+ "<p>Indexes are used by OpenLDAP to improve search performance on specific\ntypes of searches. Indexes should be configured corresponding to the most\ncommon searches on a database. YaST allows you to setup three different types\nof indexes.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Presence</b>: This index is used for searches with presence filters\n(i.e. <tt>(attributeType=*)</tt>). Presence indexes should only be configured\nfor attributes that occur rarely in the database.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Equality</b>: This index is used for searches with equality filters \n(i.e.(<tt>(attributeType=&lt;exact values&gt;)</tt>). An <b>Equality</b> index\nshould always be configured with the <tt>objectclass</tt> attribute.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Substring</b>: This index is used for searches with substring filters\n(i.e. <tt>(attributeType=&lt;substring&gt;*)</tt>)</p>\n"
+ )
+ ),
+ _(
+ "<p>Use <b>Add</b> to define indexing options for a new attribute,\n<b>Delete</b> to delete an existing index and <b>Edit</b> to change the\nindexing options of an already indexed attribute.</p>\n"
+ )
+ ),
+ _(
+ "<p>Note: Depending on the database size it can take a while until newly added\nindexes will get active on a database. After the configuration has been\nwritten to the server, a background task will start to generate the indexing\ninformation for the database.</p>\n"
+ )
+ ),
+ "acl_edit" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h3>Access Control Configuration</h3>"),
+ _(
+ "<p>This table gives you an overview of all Access Control rules that are\ncurrently configured for the selected database</p>\n"
+ )
+ ),
+ _(
+ "<p>For each rule, you can see which target objects it matches. To see a more\ndetailed view of a rule or to change one, select the rule in the table and\nclick <b>Edit</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p>Use <b>Add</b> to create new access control rules and <b>Delete</b> to\ndelete an access control rule.</p>\n"
+ )
+ ),
+ _(
+ "<p>OpenLDAP's access control evaluation stops at the first rule whose target\ndefinition (DN, filter and attributes) matches the entry being\naccessed. Therefore you should order the rules according to your needs, using\nthe <b>Up</b> and <b>Down</b> buttons.</p>\n"
+ )
+ ),
+ "syncprov_edit" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h3>Replication Provider Settings</h3>"),
+ _(
+ "<p>Select the \"<b>Enable ldapsync provider for this database</b>\" checkbox, if you want to \nbe able to replicate the currently selected database to another server.</p>"
+ )
+ ),
+ _("<h4>Checkpoint Settings</h4>")
+ ),
+ _(
+ "<p>Here you can specify how often the synchronization state indicator (stored\nin the \"<i>contextCSN</i>\"-Attribute) is written to the database. It is synced\nto the database after the number of write \"<i>Operations</i>\" you specify or\nafter more than the specified \"<i>Minutes</i>\" have passed since the indicator\nhas last been written. By default (both values are '0') the state indicator is\nonly written after a clean shutdown. Writing it more often can result in\na faster startup time after an unclean shutdown but might result in a small\nperformance hit in environments with many LDAP write operations.</p>\n"
+ )
+ ),
+ _("<h4>Session log</h4>")
+ ),
+ _(
+ "<p>Configures an in-memory session log for recording information about write operations\nmade on the database. Specify how many write operation should be recorded in the session log. \nConfiguring a session log is only useful for \"<i>refreshOnly</i>\" replication. In \nsuch a case it can speed up replication and reduce the load on the master server.</p>"
+ )
+ ),
+ "synccons_edit" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h3>Replication Consumer Settings</h3>"),
+ _(
+ "<p>Select \"<b>This database is a Replication Consumer</b>\" if you want the\ndatabase to be a replica of a database on another server.</p>\n"
+ )
+ ),
+ _("<h4>Provider</h4>")
+ ),
+ _(
+ "Enter the connection details for the replication connection to the master\nserver here. Select the protocol to use (<b>ldap</b> or <b>ldaps</b>) and\nenter the fully qualified hostname of the master server. It is important to\nuse the fully qualified hostname to verify the master server's TLS/SSL\ncertificate. Adjust the port number if the master server is using non-standard\nldap ports.\n"
+ )
+ ),
+ _("<h4>Replication Type</h4>")
+ ),
+ _(
+ "<p>OpenLDAP supports different modes of replication:</p>"
+ )
+ ),
+ _(
+ "<p><b>refreshOnly</b>: The slave server will periodically open a new\nconnection, trigger a synchronization and close the connection again. The\ninterval how often this synchronization happens can be configured via the\n<b>Replication Interval</b> setting.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>refreshAndPersist</b>: The slave server will open a persistent\nconnection to the master server for synchronization. Updated entries on the\nmaster server are immediately sent to the slave via this connection.</p>\n"
+ )
+ ),
+ _("<h4>Authentication</h4>")
+ ),
+ _(
+ "<p>Specify a DN and password which the slave server should use to authenticate against the master.\nThe specified DN needs to have read access to all entries in the replicated database on the master.</p>\n"
+ )
+ ),
+ _("<h4>Update Referral</h4>")
+ ),
+ _(
+ "<p>As the slave database is readonly, the slave server will answer write\noperations with an LDAP referral. \nBy default, this referral points the client to the master server. You can configure a different update referral here.\nThis is e.g. useful in a cascaded replication setup where the provider for the\nslave server is as slave server too. </p>\n"
+ )
+ ),
+ "read" => Ops.add(
+ _("<p><b><big>Initializing LDAP Server Configuration</big></b></p>"),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>"
+ )
+ ),
+ "write" => Ops.add(
+ _("<p><b><big>Saving LDAP Server Configuration</big></b></p> \n"),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>. An additional dialog\ninforms you whether it is safe to do so.</p>\n"
+ )
+ ),
+ "summary" => Ops.add(
+ _("<h3>LDAP Server Configuration Summary</h3>"),
+ _(
+ "<p>This dialog provides a short summary about the configuration you have\ncreated. Click <b>Finish</b> to write the configuration and leave the LDAP\nServer module.</p>\n"
+ )
+ ),
+ "service_dialog" => Ops.add(
+ Ops.add(
+ _(
+ "<p>With <b>Start LDAP Server Yes or No</b>, start or stop the LDAP server.</p> "
+ ),
+ _(
+ "<p>If you select <b>Yes</b>, click <b>Next</b> to start the configuration wizard.</p>"
+ )
+ ),
+ _(
+ "<p>If the Firewall is enabled, open the required network ports\nfor OpenLDAP by checking the corresponding checkbox.</p>\n"
+ )
+ ),
+ "server_type" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Select the type of LDAP server you want to setup. The following scenarios are available:</p>"
+ ),
+ _(
+ "<p><b>Stand-alone server</b>: Setup a single stand-alone OpenLDAP server with\nno preparations for replication.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Master server in a replication setup</b>: Create an OpenLDAP setup\nprepared to act as a master server (provider) in a replication setup.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Replica slave server</b>: Setup an OpenLDAP slave server that replicates all its data,\nincluding configuration, from a master server.</p>"
+ )
+ ),
+ "tls_dialog" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<h3>TLS Settings</h3>"),
+ _("<h4>Basic Settings</h4>")
+ ),
+ _(
+ "<p>To enable encryption via TLS/SSL, check the <b>Enabled TLS</b>\ncheckbox. Additionally you need to configure a certificate for the Server \nto use.</p>\n"
+ )
+ ),
+ _(
+ "<p>Check <b>Enable LDAP over SSL (ldaps) interface</b>, to enable the server\nto accept LDAPS connections on port 636. If not checked, OpenLDAP will only\nsupport TLS encrypted connections through the StartTLS extended operation.</p>\n"
+ )
+ ),
+ _(
+ "<p>If you already have a common server certificate installed using the\ncorresponding YaST Module, check <b>Use common Server Certificate</b> so that\nthe OpenLDAP server uses this certificate.</p>\n"
+ )
+ ),
+ _("<h4>Import Certificate</h4>")
+ ),
+ _(
+ "<p>If you have no common server certificate or you want OpenLDAP to use a\ndifferent certificate, enter the file names of the <b>CA Certificate File</b>,\n<b>Certificate File</b> and <b>Certificate Key File</b> into the corresponding\ntextfields.</p>\n"
+ )
+ ),
+ _(
+ "<p>To create a new CA or certificate, launch the CA management module by\nclicking <b>Launch CA Management Module</b>.</p>\n"
+ )
),
"global" => _(
"<p>Below this item, configure some global parameters.</p>"
@@ -196,40 +353,73 @@
"g_loglevel" => _(
"<p>Select the subsystems that should log debugging statements and statistics\nto syslog.</p>"
),
- "g_allow" => (((((((((_(
- "<p>Select which special features the OpenLDAP Server should allow or disallow:</p>"
- ) + _(
- "<h3>Select Allow Flags</h3>"
- )) + _(
- "<p><b>LDAPv2 Bind Requests</b>: To let the server accept LDAPv2 bind requests.\nNote that OpenLDAP does not truly implement LDAPv2.</p>\n"
- )) + _(
- "<p><b>Anonymous Bind when credentials not empty</b>: To allow anonymous bind when \ncredentials are not empty (i.e. password is present but bind DN is not present) </p>"
- )) + _(
- "<p><b>Unauthenticated Bind when DN not empty</b>: To allow unauthenticated \n(anonymous) binds when DN is not empty</p>"
- )) + _(
- "<p><b>Unauthenticated Update Operations to process</b>: To allow unauthenticated\n(anonymous) update operations to be processed. They are still subject to\naccess controls and other administrative limits.</p>\n"
- )) + _(
- "<h3>Select Disallow Flags</h3>"
- )) + _(
- "<p><b>Disable acceptance of anonymous Bind Requests</b>: The Server will\nnot accept anonymous bind requests. Note that this does not generally\nprohibit anonymous directory access.</p>\n"
- )) + _(
- "<p><b>Disable Simple Bind authentication</b>: Completely disable Simple Bind\nauthentication</p>\n"
- )) + _(
- "<p><b>Disable forcing session to anonymous status upon StartTLS operation\nreceipt</b>: The server will no longer force an authenticated connection back\nto the anonymous state when receiving the StartTLS operation.</p>\n"
- )) + _(
- "<p><b>Disallow the StartTLS operation if authenticated</b>:\nThe server will not allow the StartTLS operation on already authenticated\nconnections.</p>\n"
- ),
- "databases" => (_(
- "<p>This lists shows all configured databases. The databases with the type\n\"frontend\" and \"config\" represent special internal databases. The \"Frontend\"\ndatabase is use to configure global access control restrictions and overlays\nthat apply to all databases. The \"Config\" database holds the configuration of\nthe LDAP server itself.</p>\n"
- ) + _(
- "<p>To add a new database, press <b>Add Database...</b>.</p>"
- )) + _(
- "<p>To delete a database, select a database from the list and press <b>Delete Database...</b>.\nYou cannot delete the \"config\" and \"frontend\" databases.</p>\n"
- ),
- "master_setup_dialog" => _(
- "<p>Enter a password for the configuration database (\"<i>cn=config</i>\") here. This is required to make\nthe configuration database accessible remotely.</p>"
- ) + _(
- "<p>If the server is supposed to participate in a MirrorMode setup, select the \"<b>Prepare for MirrorMode replication</b>\"\ncheckbox. This will ensure that the serverId attribute is generated as needed for MirrorMode replication.</p>\n"
+ "g_allow" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Select which special features the OpenLDAP Server should allow or disallow:</p>"
+ ),
+ _("<h3>Select Allow Flags</h3>")
+ ),
+ _(
+ "<p><b>LDAPv2 Bind Requests</b>: To let the server accept LDAPv2 bind requests.\nNote that OpenLDAP does not truly implement LDAPv2.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Anonymous Bind when credentials not empty</b>: To allow anonymous bind when \ncredentials are not empty (i.e. password is present but bind DN is not present) </p>"
+ )
+ ),
+ _(
+ "<p><b>Unauthenticated Bind when DN not empty</b>: To allow unauthenticated \n(anonymous) binds when DN is not empty</p>"
+ )
+ ),
+ _(
+ "<p><b>Unauthenticated Update Operations to process</b>: To allow unauthenticated\n(anonymous) update operations to be processed. They are still subject to\naccess controls and other administrative limits.</p>\n"
+ )
+ ),
+ _("<h3>Select Disallow Flags</h3>")
+ ),
+ _(
+ "<p><b>Disable acceptance of anonymous Bind Requests</b>: The Server will\nnot accept anonymous bind requests. Note that this does not generally\nprohibit anonymous directory access.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Disable Simple Bind authentication</b>: Completely disable Simple Bind\nauthentication</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Disable forcing session to anonymous status upon StartTLS operation\nreceipt</b>: The server will no longer force an authenticated connection back\nto the anonymous state when receiving the StartTLS operation.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Disallow the StartTLS operation if authenticated</b>:\nThe server will not allow the StartTLS operation on already authenticated\nconnections.</p>\n"
+ )
+ ),
+ "databases" => Ops.add(
+ Ops.add(
+ _(
+ "<p>This lists shows all configured databases. The databases with the type\n\"frontend\" and \"config\" represent special internal databases. The \"Frontend\"\ndatabase is use to configure global access control restrictions and overlays\nthat apply to all databases. The \"Config\" database holds the configuration of\nthe LDAP server itself.</p>\n"
+ ),
+ _("<p>To add a new database, press <b>Add Database...</b>.</p>")
+ ),
+ _(
+ "<p>To delete a database, select a database from the list and press <b>Delete Database...</b>.\nYou cannot delete the \"config\" and \"frontend\" databases.</p>\n"
+ )
+ ),
+ "master_setup_dialog" => Ops.add(
+ _(
+ "<p>Enter a password for the configuration database (\"<i>cn=config</i>\") here. This is required to make\nthe configuration database accessible remotely.</p>"
+ ),
+ _(
+ "<p>If the server is supposed to participate in a MirrorMode setup, select the \"<b>Prepare for MirrorMode replication</b>\"\ncheckbox. This will ensure that the serverId attribute is generated as needed for MirrorMode replication.</p>\n"
+ )
),
"slave_dialog" => _(
"<p>To setup a slave server some details need to be queried from the master server. Please enter the master\nserver's hostname, adjust the protocol (either \"<i>ldap</i>\" or \"<i>ldaps</i>\") and port number as needed and enter the password\nfor the master's configuration database (\"<i>cn=config</i>\").</p>"
diff -ur result/ldap-server/src/include/ldap-server/mirrormode-wizard.rb result-bck/ldap-server/src/include/ldap-server/mirrormode-wizard.rb
--- result/ldap-server/src/include/ldap-server/mirrormode-wizard.rb 2013-06-28 14:21:43.952000000 +0200
+++ result-bck/ldap-server/src/include/ldap-server/mirrormode-wizard.rb 2013-06-28 12:35:56.304000000 +0200
@@ -123,10 +123,13 @@
if Convert.to_string(Ops.index(url, "host", "")) == LdapServer.ReadHostnameFQ(
)
Popup.Error(
- _(
- "Deleting the host on which you started this YaST Module is not possible.\n"
- ) + _(
- "Start yast2 openldap-mirrormode on a different MirrorMode server."
+ Ops.add(
+ _(
+ "Deleting the host on which you started this YaST Module is not possible.\n"
+ ),
+ _(
+ "Start yast2 openldap-mirrormode on a different MirrorMode server."
+ )
)
)
next
@@ -136,7 +139,7 @@
Ops.add(
Ops.add(
Ops.add(
- _("Do you really want to remove ") + "\"",
+ Ops.add(_("Do you really want to remove "), "\""),
Convert.to_string(
Ops.index(serverids, [selected, "uri"], "")
)
diff -ur result/ldap-server/src/include/ldap-server/widgets.rb result-bck/ldap-server/src/include/ldap-server/widgets.rb
--- result/ldap-server/src/include/ldap-server/widgets.rb 2013-06-28 14:21:46.248000000 +0200
+++ result-bck/ldap-server/src/include/ldap-server/widgets.rb 2013-06-28 12:35:56.304000000 +0200
@@ -333,10 +333,11 @@
CheckBox(
Id(:cb_conf_ldapsimplebind),
Opt(:notify),
- _(
- "Allow Plaintext Authentication (Simple Bind) for this Database. "
- ) + _(
- "(Remote Connection needs to be encrypted)"
+ Ops.add(
+ _(
+ "Allow Plaintext Authentication (Simple Bind) for this Database. "
+ ),
+ _("(Remote Connection needs to be encrypted)")
),
false
),
diff -ur result/ldap-server/src/modules/LdapDatabase.rb result-bck/ldap-server/src/modules/LdapDatabase.rb
--- result/ldap-server/src/modules/LdapDatabase.rb 2013-06-28 14:21:40.612000000 +0200
+++ result-bck/ldap-server/src/modules/LdapDatabase.rb 2013-06-28 12:35:56.304000000 +0200
@@ -649,10 +649,11 @@
Ops.add(
Ops.add(
Ops.add(
- _(
- "Authentication failed. The password is probably incorrect.\n"
- ) + _(
- "The error message was: '"
+ Ops.add(
+ _(
+ "Authentication failed. The password is probably incorrect.\n"
+ ),
+ _("The error message was: '")
),
bind_res
),
@@ -2118,7 +2119,10 @@
Ops.add(
Ops.add(
Ops.add(
- _("The test returned the following error messages:") + "\n\n\"",
+ Ops.add(
+ _("The test returned the following error messages:"),
+ "\n\n\""
+ ),
Convert.to_string(Ops.index(err, "summary", ""))
),
"\"\n\""
@@ -2142,11 +2146,18 @@
Ops.add(
Ops.add(
Ops.add(
- ((_(
- "Please verify that the target server is enabled to be a LDAPsync provider"
- ) + "\n\n") + _(
- "The test returned the following error messages:"
- )) + "\n\"",
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "Please verify that the target server is enabled to be a LDAPsync provider"
+ ),
+ "\n\n"
+ ),
+ _("The test returned the following error messages:")
+ ),
+ "\n\""
+ ),
Convert.to_string(Ops.index(err, "summary", ""))
),
"\"\n\""
diff -ur result/live-installer/src/clients/inst_live_doit.rb result-bck/live-installer/src/clients/inst_live_doit.rb
--- result/live-installer/src/clients/inst_live_doit.rb 2013-06-28 14:22:29.720000000 +0200
+++ result-bck/live-installer/src/clients/inst_live_doit.rb 2013-06-28 12:36:20.060000000 +0200
@@ -150,7 +150,7 @@
0,
4
) == "/mnt")
- if Ops.less_than(Builtins.tointeger(free), 100 * 1024)
+ if Ops.less_than(Builtins.tointeger(free), Ops.multiply(100, 1024))
error = _(
"Copying the live image to hard disk failed.\n\nYou have run out of disk space. Choose\na bigger disk partition for the installation\nof the live system."
)
diff -ur result/live-installer/src/clients/inst_live_simple_proposal.rb result-bck/live-installer/src/clients/inst_live_simple_proposal.rb
--- result/live-installer/src/clients/inst_live_simple_proposal.rb 2013-06-28 14:22:20.168000000 +0200
+++ result-bck/live-installer/src/clients/inst_live_simple_proposal.rb 2013-06-28 12:36:20.060000000 +0200
@@ -154,12 +154,18 @@
PushButton(Id(:change), _("Change Installation Settings")),
VSpacing(1)
)
- @help = (_(
- "<p>\nUse <b>Accept</b> to perform a new installation with the values displayed.</p>"
- ) + _(
- "<p>\nTo change the values, click the respective headline\nor select <b>Change Installation Settings</b>.</p>\n"
- )) + _(
- "<p>\nYour hard disk has not been modified, you can still safely abort.\n</p>"
+ @help = Ops.add(
+ Ops.add(
+ _(
+ "<p>\nUse <b>Accept</b> to perform a new installation with the values displayed.</p>"
+ ),
+ _(
+ "<p>\nTo change the values, click the respective headline\nor select <b>Change Installation Settings</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p>\nYour hard disk has not been modified, you can still safely abort.\n</p>"
+ )
)
Wizard.SetContents(
_("Installation Settings"),
diff -ur result/live-installer/src/clients/live_copy_files_finish.rb result-bck/live-installer/src/clients/live_copy_files_finish.rb
--- result/live-installer/src/clients/live_copy_files_finish.rb 2013-06-28 14:22:21.540000000 +0200
+++ result-bck/live-installer/src/clients/live_copy_files_finish.rb 2013-06-28 12:36:20.060000000 +0200
@@ -68,7 +68,7 @@
Ops.add(
Ops.add(
Ops.add(
- "/bin/chmod 0644 " + "'",
+ Ops.add("/bin/chmod 0644 ", "'"),
String.Quote(Installation.destdir)
),
Directory.etcdir
diff -ur result/lxc/src/include/lxc/helps.rb result-bck/lxc/src/include/lxc/helps.rb
--- result/lxc/src/include/lxc/helps.rb 2013-06-28 14:22:39.872000000 +0200
+++ result-bck/lxc/src/include/lxc/helps.rb 2013-06-28 12:36:20.888000000 +0200
@@ -12,19 +12,32 @@
"read" => _(
"<p><b><big>Initializing LXC Configuration</big></b><br>\nPlease wait...<br></p>\n"
),
- "overview" => _(
- "<p><b><big>LXC Overview</big></b><br>\nHere, see the list of configured Linux Containers (LXC) with their current status.\n<p>Use <b>Create</b> to create new container. Delete existing one with <b>Destroy</b>.\n</p>"
- ) + _(
- "<p>You can start selected container with <b>Start</b>. The container is started in background. You can connect to it using <b>Connect</b> button or manually using <tt>lxc-console</tt> command. Once in console, you can close it from within or using the <b>Disconnect</b> button.</p>\n<p>Note that <b>Connect</b> option is not available in text mode.</p>"
+ "overview" => Ops.add(
+ _(
+ "<p><b><big>LXC Overview</big></b><br>\nHere, see the list of configured Linux Containers (LXC) with their current status.\n<p>Use <b>Create</b> to create new container. Delete existing one with <b>Destroy</b>.\n</p>"
+ ),
+ _(
+ "<p>You can start selected container with <b>Start</b>. The container is started in background. You can connect to it using <b>Connect</b> button or manually using <tt>lxc-console</tt> command. Once in console, you can close it from within or using the <b>Disconnect</b> button.</p>\n<p>Note that <b>Connect</b> option is not available in text mode.</p>"
+ )
),
- "create" => (((_("<p><b><big>Creating New Container</big></b></p>") + _(
- "<p>Choose a <b>Name</b> for your container, select a base <b>Template</b>, and enter desired network settings.</p>"
- )) + _(
- "<p>Use the value <tt>0.0.0.0</tt> as <b>IP Address</b> to have dynamic address assigned by DHCP. If there's no bridge device configured yet, use the <b>Configure Network</b> button and create one.</p>"
- )) + _(
- "<p>Select a password to use for a system administrator ('root') in the container. If no password is entered, the default value <tt>root</tt> will be used.</p>"
- )) + _(
- "<p>Use <b>Create</b> to start the creation process.</p>"
+ "create" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b><big>Creating New Container</big></b></p>"),
+ _(
+ "<p>Choose a <b>Name</b> for your container, select a base <b>Template</b>, and enter desired network settings.</p>"
+ )
+ ),
+ _(
+ "<p>Use the value <tt>0.0.0.0</tt> as <b>IP Address</b> to have dynamic address assigned by DHCP. If there's no bridge device configured yet, use the <b>Configure Network</b> button and create one.</p>"
+ )
+ ),
+ _(
+ "<p>Select a password to use for a system administrator ('root') in the container. If no password is entered, the default value <tt>root</tt> will be used.</p>"
+ )
+ ),
+ _("<p>Use <b>Create</b> to start the creation process.</p>")
)
}
end
diff -ur result/mail/src/clients/mail.rb result-bck/mail/src/clients/mail.rb
--- result/mail/src/clients/mail.rb 2013-06-28 14:23:19.880000000 +0200
+++ result-bck/mail/src/clients/mail.rb 2013-06-28 12:36:07.044000000 +0200
@@ -37,12 +37,21 @@
end
def StartDialogHelp
- return ((_("<P><B>Mail Server Configuration</B><BR>") + _(
- "<P>This module will configure and start Postfix and, if necessary, the Cyrus IMAP server.</P>"
- )) + _(
- "<P><B>Warning:</B></P>\n<P>Most home users can use the built-in \nfeatures of their email application to send and\nreceive email. They do not need this module.</P>\n"
- )) + _(
- "<P>You need Postfix only to store\nemail on your local system or for some special cases.</P>\n"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<P><B>Mail Server Configuration</B><BR>"),
+ _(
+ "<P>This module will configure and start Postfix and, if necessary, the Cyrus IMAP server.</P>"
+ )
+ ),
+ _(
+ "<P><B>Warning:</B></P>\n<P>Most home users can use the built-in \nfeatures of their email application to send and\nreceive email. They do not need this module.</P>\n"
+ )
+ ),
+ _(
+ "<P>You need Postfix only to store\nemail on your local system or for some special cases.</P>\n"
+ )
)
end
@@ -53,28 +62,53 @@
tskip_ask = Left(
CheckBox(Id(:skip_ask), _("Skip this page in the future"))
)
- status = (((((_("Mail server is not configured.") + "\n") + _(
- "Select configuration type according your needs."
- )) + "\n") + _(
- "If you want to use sendmail as your MTA, you have to use the Standard configuration."
- )) + "\n") + _(
- "The Advanced configuration use LDAP as backend and will configure your system as LDAP-Client and setup an LDAP-Server if necessary."
+ status = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(_("Mail server is not configured."), "\n"),
+ _("Select configuration type according your needs.")
+ ),
+ "\n"
+ ),
+ _(
+ "If you want to use sendmail as your MTA, you have to use the Standard configuration."
+ )
+ ),
+ "\n"
+ ),
+ _(
+ "The Advanced configuration use LDAP as backend and will configure your system as LDAP-Client and setup an LDAP-Server if necessary."
+ )
)
if first
tskip_ask = VSpacing(1)
else
if type == "standard"
- status = (_(
- "The running mail server configuration is based on the \"Standard\" type."
- ) + "\n") + _(
- "It is possible to change to \"Advanced\" settings. This will overwrite all existing settings."
+ status = Ops.add(
+ Ops.add(
+ _(
+ "The running mail server configuration is based on the \"Standard\" type."
+ ),
+ "\n"
+ ),
+ _(
+ "It is possible to change to \"Advanced\" settings. This will overwrite all existing settings."
+ )
)
else
if type == "advanced"
- status = (_(
- "The running mail server configuration is based on the \"Advanced\" type."
- ) + "\n") + _(
- "It is possible to change to \"Standard\" settings. This will overwrite all existing settings."
+ status = Ops.add(
+ Ops.add(
+ _(
+ "The running mail server configuration is based on the \"Advanced\" type."
+ ),
+ "\n"
+ ),
+ _(
+ "It is possible to change to \"Standard\" settings. This will overwrite all existing settings."
+ )
)
end
end
diff -ur result/mail/src/clients/mail-server_ldap-setup.rb result-bck/mail/src/clients/mail-server_ldap-setup.rb
--- result/mail/src/clients/mail-server_ldap-setup.rb 2013-06-28 14:23:21.160000000 +0200
+++ result-bck/mail/src/clients/mail-server_ldap-setup.rb 2013-06-28 12:36:07.044000000 +0200
@@ -42,7 +42,7 @@
"",
Ops.add(
Ops.add(
- _("You have not installed all needed packages.") + "\n",
+ Ops.add(_("You have not installed all needed packages."), "\n"),
@to_install
),
"\n"
diff -ur result/mail/src/clients/mail-server.rb result-bck/mail/src/clients/mail-server.rb
--- result/mail/src/clients/mail-server.rb 2013-06-28 14:23:11.648000000 +0200
+++ result-bck/mail/src/clients/mail-server.rb 2013-06-28 12:36:07.040000000 +0200
@@ -33,10 +33,12 @@
if SCR.Read(path(".sysconfig.mail.MAIL_CREATE_CONFIG")) == "yes"
if !Popup.AnyQuestionRichText(
Label.WarningMsg,
- (_("You have configured your MTA without LDAP support.<br>") + _(
- "This modul will configure your MTA with LDAP support.<br>"
- )) + _(
- "This will corrupt your current configuration."
+ Ops.add(
+ Ops.add(
+ _("You have configured your MTA without LDAP support.<br>"),
+ _("This modul will configure your MTA with LDAP support.<br>")
+ ),
+ _("This will corrupt your current configuration.")
),
80,
10,
diff -ur result/mail/src/include/mail/helps.rb result-bck/mail/src/include/mail/helps.rb
--- result/mail/src/include/mail/helps.rb 2013-06-28 14:23:09.076000000 +0200
+++ result-bck/mail/src/include/mail/helps.rb 2013-06-28 12:36:07.024000000 +0200
@@ -11,18 +11,24 @@
end
def ReadDialogHelp
- return _(
- "<P><B><BIG>Initializing mail</BIG></B><BR>\nPlease wait...\n<BR></P>\n"
- ) + _(
- "<P><B><BIG>Aborting the initialization:</BIG></B><BR>\nSafely abort the configuration utility by pressing <B>Abort</B>\nnow.\n</P>\n"
+ return Ops.add(
+ _(
+ "<P><B><BIG>Initializing mail</BIG></B><BR>\nPlease wait...\n<BR></P>\n"
+ ),
+ _(
+ "<P><B><BIG>Aborting the initialization:</BIG></B><BR>\nSafely abort the configuration utility by pressing <B>Abort</B>\nnow.\n</P>\n"
+ )
)
end
def WriteDialogHelp
- return _(
- "<P><B><BIG>Saving mail configuration</BIG></B><BR>\nPlease wait...\n<BR></P>\n"
- ) + _(
- "<P><B><BIG>Aborting saving:</BIG></B><BR>\nAbort saving by pressing <B>Abort</B>.\nAn additional dialog will inform you whether it is safe to do so.\n</P>\n"
+ return Ops.add(
+ _(
+ "<P><B><BIG>Saving mail configuration</BIG></B><BR>\nPlease wait...\n<BR></P>\n"
+ ),
+ _(
+ "<P><B><BIG>Aborting saving:</BIG></B><BR>\nAbort saving by pressing <B>Abort</B>.\nAn additional dialog will inform you whether it is safe to do so.\n</P>\n"
+ )
)
end
@@ -33,10 +39,13 @@
end
def ConnectionTypeDialogHelp
- s = _(
- "\n<p>How are you connected to the Internet? With a dial-up connection,\nmails will not be sent immediately but rather after invoking\n<b>sendmail&nbsp;-q</b>.</p>\n"
- ) + _(
- "<p>If choosing <b>No Connection</b>, the mail server will be started.\nHowever, only local mail transport is possible. The MTA listens to the localhost.</p>\n"
+ s = Ops.add(
+ _(
+ "\n<p>How are you connected to the Internet? With a dial-up connection,\nmails will not be sent immediately but rather after invoking\n<b>sendmail&nbsp;-q</b>.</p>\n"
+ ),
+ _(
+ "<p>If choosing <b>No Connection</b>, the mail server will be started.\nHowever, only local mail transport is possible. The MTA listens to the localhost.</p>\n"
+ )
)
return s
end
@@ -48,16 +57,26 @@
end
def AuthenticationDialogHelp
- return (((_(
- "\n<p>Some servers require authentication for sending mails. Here you can\nenter information for this option. If you do not want to use authentication,\nsimply leave these fields empty.</p>\n"
- ) + _(
- "\n<p>The outgoing mail server is generally intended for dial-up connections.\nEnter the Internet service provider's SMTP server, such as <b>smtp.provider.com</b>.</p>\n"
- )) + _(
- "\n<p>In the <b>User Name</b> field, enter the user name assigned by from your provider.</p>\n"
- )) + _(
- "\n<p>Enter your password in the <b>Password</b> field.</p>\n"
- )) + _(
- "\n<p>Note: For simplicity, only one server is displayed in this dialog,\nalthough there may be more of them in your configuration file.\nThey will not be lost.</p>\n"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "\n<p>Some servers require authentication for sending mails. Here you can\nenter information for this option. If you do not want to use authentication,\nsimply leave these fields empty.</p>\n"
+ ),
+ _(
+ "\n<p>The outgoing mail server is generally intended for dial-up connections.\nEnter the Internet service provider's SMTP server, such as <b>smtp.provider.com</b>.</p>\n"
+ )
+ ),
+ _(
+ "\n<p>In the <b>User Name</b> field, enter the user name assigned by from your provider.</p>\n"
+ )
+ ),
+ _("\n<p>Enter your password in the <b>Password</b> field.</p>\n")
+ ),
+ _(
+ "\n<p>Note: For simplicity, only one server is displayed in this dialog,\nalthough there may be more of them in your configuration file.\nThey will not be lost.</p>\n"
+ )
)
end
@@ -68,18 +87,24 @@
end
def AliasesDialogHelp
- return _(
- "\n<p>This table redirects mail delivered locally.\nRedirect it to another local user (useful for system accounts,\nespecially for <b>root</b>), to a remote address, or to a list of addresses.</p>\n"
- ) + _(
- "\n<p>See the aliases(5) manual page\nfor a description of advanced features.</p>\n"
+ return Ops.add(
+ _(
+ "\n<p>This table redirects mail delivered locally.\nRedirect it to another local user (useful for system accounts,\nespecially for <b>root</b>), to a remote address, or to a list of addresses.</p>\n"
+ ),
+ _(
+ "\n<p>See the aliases(5) manual page\nfor a description of advanced features.</p>\n"
+ )
)
end
def VirtualDialogHelp
- return _(
- "\n<p>This table redirects incoming mail. Unlike the alias table,\nit also considers the domain\npart of the address.</p>\n"
- ) + _(
- "\n<p>It allows hosting multiple \"virtual domains\"\non a single machine.</p>\n"
+ return Ops.add(
+ _(
+ "\n<p>This table redirects incoming mail. Unlike the alias table,\nit also considers the domain\npart of the address.</p>\n"
+ ),
+ _(
+ "\n<p>It allows hosting multiple \"virtual domains\"\non a single machine.</p>\n"
+ )
)
end
end
diff -ur result/mail/src/include/mail/mail-server_complex.rb result-bck/mail/src/include/mail/mail-server_complex.rb
--- result/mail/src/include/mail/mail-server_complex.rb 2013-06-28 14:23:08.156000000 +0200
+++ result-bck/mail/src/include/mail/mail-server_complex.rb 2013-06-28 12:36:07.024000000 +0200
@@ -67,10 +67,12 @@
) == "yes")
if !Popup.AnyQuestionRichText(
Label.WarningMsg,
- (_("You have configured your MTA without LDAP support.<br>") + _(
- "This modul will configure your MTA with LDAP support.<br>"
- )) + _(
- "This will corrupt your current configuration."
+ Ops.add(
+ Ops.add(
+ _("You have configured your MTA without LDAP support.<br>"),
+ _("This modul will configure your MTA with LDAP support.<br>")
+ ),
+ _("This will corrupt your current configuration.")
),
80,
10,
diff -ur result/mail/src/include/mail/mail-server_dialogs.rb result-bck/mail/src/include/mail/mail-server_dialogs.rb
--- result/mail/src/include/mail/mail-server_dialogs.rb 2013-06-28 14:23:05.616000000 +0200
+++ result-bck/mail/src/include/mail/mail-server_dialogs.rb 2013-06-28 12:36:07.024000000 +0200
@@ -55,24 +55,57 @@
setup_ldap_server = true
conf_ldap_client = true
ldap_server_local = true
- comment = ((((_("Your computer is not configured as an LDAP client.") + "<br>") + _(
- "We suggest you set up a local LDAP server for the mail server."
- )) + "<br>") + _(
- "Create certificates for the LDAP and mail server in order to secure your system."
- )) + "<br>"
+ comment = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("Your computer is not configured as an LDAP client."),
+ "<br>"
+ ),
+ _(
+ "We suggest you set up a local LDAP server for the mail server."
+ )
+ ),
+ "<br>"
+ ),
+ _(
+ "Create certificates for the LDAP and mail server in order to secure your system."
+ )
+ ),
+ "<br>"
+ )
else
if (Convert.to_string(Ops.index(_LDAPSettings, "ldap_server", "")) == "127.0.0.1") || (Convert.to_string(
Ops.index(_LDAPSettings, "ldap_server", "")
) == "localhost")
comment = Ops.add(
Ops.add(
- (((((_(
- "Your computer is configured as an LDAP client and the LDAP server is local."
- ) + "<br>") + _(
- "We suggest you adapt the LDAP server configuration for the mail server."
- )) + "<br>") + _(
- "For this reason you have to know the password of the LDAP administrator account:"
- )) + "<br>") + "<B>",
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "Your computer is configured as an LDAP client and the LDAP server is local."
+ ),
+ "<br>"
+ ),
+ _(
+ "We suggest you adapt the LDAP server configuration for the mail server."
+ )
+ ),
+ "<br>"
+ ),
+ _(
+ "For this reason you have to know the password of the LDAP administrator account:"
+ )
+ ),
+ "<br>"
+ ),
+ "<B>"
+ ),
Convert.to_string(Ops.index(_LDAPSettings, "bind_dn", ""))
),
".</B><BR>"
@@ -82,13 +115,31 @@
comment = Ops.add(
Ops.add(
Ops.add(
- (((((_(
- "Your computer is configured as a LDAP client and the LDAP server is not local."
- ) + "<br>") + _(
- "We suggest you configure the LDAP server for the mail server."
- )) + "<br>") + _(
- "For this reason you have to know the password of the LDAP administrator account:"
- )) + "<br>") + "<B>",
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "Your computer is configured as a LDAP client and the LDAP server is not local."
+ ),
+ "<br>"
+ ),
+ _(
+ "We suggest you configure the LDAP server for the mail server."
+ )
+ ),
+ "<br>"
+ ),
+ _(
+ "For this reason you have to know the password of the LDAP administrator account:"
+ )
+ ),
+ "<br>"
+ ),
+ "<B>"
+ ),
Convert.to_string(Ops.index(_LDAPSettings, "bind_dn", ""))
),
".</B><BR>"
@@ -185,8 +236,9 @@
Ldap.Read
_LDAPSettings = Ldap.Export
if Convert.to_string(Ops.index(_LDAPSettings, "bind_dn", "")) == ""
- _ERROR = (_("You must configure LDAP to use the mail server.") + "\n") + _(
- " The LDAP configuration starts now."
+ _ERROR = Ops.add(
+ Ops.add(_("You must configure LDAP to use the mail server."), "\n"),
+ _(" The LDAP configuration starts now.")
)
if Popup.YesNo(_ERROR)
return :ldapsetup
diff -ur result/mail/src/include/mail/mail-server_helps.rb result-bck/mail/src/include/mail/mail-server_helps.rb
--- result/mail/src/include/mail/mail-server_helps.rb 2013-06-28 14:22:59.396000000 +0200
+++ result-bck/mail/src/include/mail/mail-server_helps.rb 2013-06-28 12:36:07.024000000 +0200
@@ -15,56 +15,92 @@
"setup" => _(
"<p><b><big>Set Up Mail Server Configuration</big></b><br>\n</p>\n"
),
- "read" => _(
- "<p><b><big>Initializing Mail Server Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving Mail Server Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
- ),
- "GlobalSettings" => (_(
- "<p><b><big>Server Identification:</big></b><br>\nThis is the SMTP server's greeting banner.</b>.\n<br></p>\n"
- ) + _(
- "<p><b><big>Mail Size:</big></b><br>\nThis parameter limits the total size in bytes of a mail (sending and getting),\nincluding envelope information.\n</p>"
- )) + _(
- "<p><b><big>Outgoing Mails:</big></b><br>\nSet the transport type for outgoing mails.\n</p>\n"
- ),
- "MailTransports" => _(
- "<p><b><big>Manage Mail Routing</big></b><br>\nAdd or modify mail transport routes.\n<br></p>\n"
- ) + _(
- "<p><b><big>Defined Mail Transport Routes</big></b><br>\nThis is the list of the defined mail transports.\n</p>\n"
- ),
- "MailPrevention" => (_(
- "<p><b><big>SPAM Prevention</big></b><br>\nPostfix offers a variety of parameters that limit the delivery of unsolicited commercial e-mail (UCE).\nIn this dialog, configure this settings. For example, set access lists or RBL\n(real-time blackhole list) name servers. \n<br></p>\n"
- ) + _(
- "<p><b><big>Start Virus Scanner AMAVIS:</big></b><br>\nIf you start the virus scanner AMAVIS, your emails will be scanned for viruses and and for spam.\nThe virus scanner engine <b>Clamavd</b> and the spam finder <b>SpamAssassin</b> will be installed \nand configured as well. You can also install other (commercial) virus scanner engines.\n</p>\n"
- )) + _(
- "<p><b><big>Configure Spam Learning Extension:</big></b><br>\nThe spam learning extension can only be configured if the local delivery method is <b>cyrus imapd</b>.\nIn this case the shared folders <b>NewSpam</b> and <b>NoSpam</b> will be created. Spam email \nwhich was not detected by <b>SpamAssassin</b> should be put into the folder <b>NewSpam</b>.\nIf you want your spam finder to be most effective you should also put non-spam email into\nthe folder <b>NoSpam</b>. The emails in this folder cannot be read by anyone.\n</p>\n"
- ),
- "MailRelaying" => _(
- "<p><b><big>Trusted Local Networks:</big></b><br>\nClients from these networks can use your mail server for mail relaying.\n(Sending non-local mails)\n<br></p>\n"
- ) + _(
- "<p><b><big>Require SASL Authentication:</big></b><br>\nIf set to true, clients must authenticate to use\nthe mail server for mail relaying. \n<br></p>\n"
- ),
- "MailLocalDelivery" => _(
- "<p><b><big>Local Delivery Type</big></b><br>\nIn this frame, choose the local mail delivery method. \nFor clients to be able to connect to your mail server via the POP or IMAP\nprotocol, choose <b>Cyrus IMAP</p>. \n<br></p>\n"
- ) + _(
- "<p>Depending on the local delivery method, you have\ndifferent possibilities of settings.\n</p>\n"
- ),
- "FetchingMail" => _(
- "<p><b><big>Mail Fetching Scheduler</big></b><br>\nIf you have mail boxes on an Internet provider, you can fetch this regularly\nat defined time intervals and by connecting to the Internet.\n<br></p>\n"
- ) + _(
- "<p>Note: If you have not defined any local delivery type, you cannot\ndefine mail fetching jobs.\n</p>\n"
- ),
- "MailLocalDomains" => (_(
- "<p><b><big>Mail Server Domains</big></b><br>\nHere, define the domains for which your mail server considers itself \nthe final destination.\n<br></p>\n"
- ) + _(
- "<p>Note: You can create and set up the domains with the YaST \nDNS server module. In the current module, you only can set the properties\nconcerning the mail server.\n</p>\n"
- )) + _(
- "<p><b><big>Type:</big></b><br>\nYou can define virtual and local domains. In virtual domains, only users\nassigned an email address in the domain can receive emails.\nIn local domains, all users can get emails. Assign virtual email \naddresses in the YaST user module.\n</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing Mail Server Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving Mail Server Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
+ ),
+ "GlobalSettings" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Server Identification:</big></b><br>\nThis is the SMTP server's greeting banner.</b>.\n<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Mail Size:</big></b><br>\nThis parameter limits the total size in bytes of a mail (sending and getting),\nincluding envelope information.\n</p>"
+ )
+ ),
+ _(
+ "<p><b><big>Outgoing Mails:</big></b><br>\nSet the transport type for outgoing mails.\n</p>\n"
+ )
+ ),
+ "MailTransports" => Ops.add(
+ _(
+ "<p><b><big>Manage Mail Routing</big></b><br>\nAdd or modify mail transport routes.\n<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Defined Mail Transport Routes</big></b><br>\nThis is the list of the defined mail transports.\n</p>\n"
+ )
+ ),
+ "MailPrevention" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>SPAM Prevention</big></b><br>\nPostfix offers a variety of parameters that limit the delivery of unsolicited commercial e-mail (UCE).\nIn this dialog, configure this settings. For example, set access lists or RBL\n(real-time blackhole list) name servers. \n<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Start Virus Scanner AMAVIS:</big></b><br>\nIf you start the virus scanner AMAVIS, your emails will be scanned for viruses and and for spam.\nThe virus scanner engine <b>Clamavd</b> and the spam finder <b>SpamAssassin</b> will be installed \nand configured as well. You can also install other (commercial) virus scanner engines.\n</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Configure Spam Learning Extension:</big></b><br>\nThe spam learning extension can only be configured if the local delivery method is <b>cyrus imapd</b>.\nIn this case the shared folders <b>NewSpam</b> and <b>NoSpam</b> will be created. Spam email \nwhich was not detected by <b>SpamAssassin</b> should be put into the folder <b>NewSpam</b>.\nIf you want your spam finder to be most effective you should also put non-spam email into\nthe folder <b>NoSpam</b>. The emails in this folder cannot be read by anyone.\n</p>\n"
+ )
+ ),
+ "MailRelaying" => Ops.add(
+ _(
+ "<p><b><big>Trusted Local Networks:</big></b><br>\nClients from these networks can use your mail server for mail relaying.\n(Sending non-local mails)\n<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Require SASL Authentication:</big></b><br>\nIf set to true, clients must authenticate to use\nthe mail server for mail relaying. \n<br></p>\n"
+ )
+ ),
+ "MailLocalDelivery" => Ops.add(
+ _(
+ "<p><b><big>Local Delivery Type</big></b><br>\nIn this frame, choose the local mail delivery method. \nFor clients to be able to connect to your mail server via the POP or IMAP\nprotocol, choose <b>Cyrus IMAP</p>. \n<br></p>\n"
+ ),
+ _(
+ "<p>Depending on the local delivery method, you have\ndifferent possibilities of settings.\n</p>\n"
+ )
+ ),
+ "FetchingMail" => Ops.add(
+ _(
+ "<p><b><big>Mail Fetching Scheduler</big></b><br>\nIf you have mail boxes on an Internet provider, you can fetch this regularly\nat defined time intervals and by connecting to the Internet.\n<br></p>\n"
+ ),
+ _(
+ "<p>Note: If you have not defined any local delivery type, you cannot\ndefine mail fetching jobs.\n</p>\n"
+ )
+ ),
+ "MailLocalDomains" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Mail Server Domains</big></b><br>\nHere, define the domains for which your mail server considers itself \nthe final destination.\n<br></p>\n"
+ ),
+ _(
+ "<p>Note: You can create and set up the domains with the YaST \nDNS server module. In the current module, you only can set the properties\nconcerning the mail server.\n</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Type:</big></b><br>\nYou can define virtual and local domains. In virtual domains, only users\nassigned an email address in the domain can receive emails.\nIn local domains, all users can get emails. Assign virtual email \naddresses in the YaST user module.\n</p>\n"
+ )
)
}
end
diff -ur result/mail/src/include/mail/widgets.rb result-bck/mail/src/include/mail/widgets.rb
--- result/mail/src/include/mail/widgets.rb 2013-06-28 14:22:55.896000000 +0200
+++ result-bck/mail/src/include/mail/widgets.rb 2013-06-28 12:36:07.024000000 +0200
@@ -89,12 +89,18 @@
"widget" => CheckBox(),
"label" => _("&Enable virus scanning (AMaViS)"),
"opt" => Opt(:notify),
- "help" => (_(
- "\n<p><b>Enabling virus scanning (AMaViS)</b> checks incoming and outgoing mail\nwith AMaViS.</p>\n"
- ) + _(
- "<p>Enabling AMaViS will also enable the following modules: </p>\n<p><b>Spamassassin</b> SPAM scanner</p>\n<p><b>DKIM</b> checks Domain Key signed incomming mails</p>\n<p><b>Clamav</b> open source virus scanner engine</p>"
- )) + _(
- "\n<p>If AMaViS is not installed and you want to use it, it will be installed\nautomatically.</p>\n"
+ "help" => Ops.add(
+ Ops.add(
+ _(
+ "\n<p><b>Enabling virus scanning (AMaViS)</b> checks incoming and outgoing mail\nwith AMaViS.</p>\n"
+ ),
+ _(
+ "<p>Enabling AMaViS will also enable the following modules: </p>\n<p><b>Spamassassin</b> SPAM scanner</p>\n<p><b>DKIM</b> checks Domain Key signed incomming mails</p>\n<p><b>Clamav</b> open source virus scanner engine</p>"
+ )
+ ),
+ _(
+ "\n<p>If AMaViS is not installed and you want to use it, it will be installed\nautomatically.</p>\n"
+ )
),
"get" => fun_ref(method(:Get_use_amavis), "boolean ()"),
"set" => fun_ref(method(:Set_use_amavis), "void (symbol)")
@@ -102,14 +108,21 @@
:use_dkim => {
"widget" => CheckBox(),
"label" => _("&Enable DKIM signing for outgoing mails."),
- "help" => ((_(
- "\n<p><b>Enabling DKIM signig for outgoing mails.</b></p>\n"
- ) + _(
- "\n<p>Enabling DKIM for outgoing emails requires additional actions. A SSL key\nwill be generated for the 'mydomain' value defined in Postfix. A new service\n'submission' will be configured in Postfix. After this is set up you can send\nemail with this service 'submission' from 'mynetworks' with enabled SASL\nauthentication. Only the emails sent by this new service will be signed with\nthe domain key.</p>\n"
- )) + _(
- "\n<p>The public key of the domain key needs to be offered by a Domain Name\nService. The public key will be saved as a DNS TXT record\nin <b>/var/db/dkim/[mydomain].public.txt</b> and needs to be deployed to an\naccording Domain Name Service. If there is a name service\nrunning on this server, which is the authoritative server for that domain, the\npublic key will be added as a TXT record to that domain zone\nautomatically.</p>\n"
- )) + _(
- "If you enable DKIM support, the virus scanning (AMaViS) will be enabled too."
+ "help" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _("\n<p><b>Enabling DKIM signig for outgoing mails.</b></p>\n"),
+ _(
+ "\n<p>Enabling DKIM for outgoing emails requires additional actions. A SSL key\nwill be generated for the 'mydomain' value defined in Postfix. A new service\n'submission' will be configured in Postfix. After this is set up you can send\nemail with this service 'submission' from 'mynetworks' with enabled SASL\nauthentication. Only the emails sent by this new service will be signed with\nthe domain key.</p>\n"
+ )
+ ),
+ _(
+ "\n<p>The public key of the domain key needs to be offered by a Domain Name\nService. The public key will be saved as a DNS TXT record\nin <b>/var/db/dkim/[mydomain].public.txt</b> and needs to be deployed to an\naccording Domain Name Service. If there is a name service\nrunning on this server, which is the authoritative server for that domain, the\npublic key will be added as a TXT record to that domain zone\nautomatically.</p>\n"
+ )
+ ),
+ _(
+ "If you enable DKIM support, the virus scanning (AMaViS) will be enabled too."
+ )
),
"get" => fun_ref(method(:Get_use_dkim), "boolean ()"),
"set" => fun_ref(method(:Set_use_dkim), "void (symbol)")
@@ -210,7 +223,11 @@
)
Users.SetGUI(false)
@local_users = []
- UI.ChangeWidget(Id(:progress), :LastLine, _("Local users") + "\n")
+ UI.ChangeWidget(
+ Id(:progress),
+ :LastLine,
+ Ops.add(_("Local users"), "\n")
+ )
Users.Read
@local_users = Builtins.flatten(
[
@@ -220,7 +237,11 @@
]
)
if Users.LDAPAvailable
- UI.ChangeWidget(Id(:progress), :LastLine, _("LDAP users") + "\n")
+ UI.ChangeWidget(
+ Id(:progress),
+ :LastLine,
+ Ops.add(_("LDAP users"), "\n")
+ )
if Users.LDAPNotRead
Ldap.SetAnonymous(true)
Users.ReadNewSet("ldap")
@@ -230,7 +251,11 @@
)
end
if Users.NISAvailable
- UI.ChangeWidget(Id(:progress), :LastLine, _("NIS users") + "\n")
+ UI.ChangeWidget(
+ Id(:progress),
+ :LastLine,
+ Ops.add(_("NIS users"), "\n")
+ )
Users.ReadNewSet("nis")
@local_users = Builtins.flatten(
[@local_users, UsersCache.GetUsernames("nis")]
diff -ur result/mail/src/modules/MailServer.rb result-bck/mail/src/modules/MailServer.rb
--- result/mail/src/modules/MailServer.rb 2013-06-28 14:22:50.664000000 +0200
+++ result-bck/mail/src/modules/MailServer.rb 2013-06-28 12:36:07.012000000 +0200
@@ -254,7 +254,7 @@
"",
Ops.add(
Ops.add(
- _("You have not installed all needed packages.") + "\n",
+ Ops.add(_("You have not installed all needed packages."), "\n"),
to_install
),
"\n"
@@ -455,7 +455,10 @@
if !@procmail_installed
if Report.AnyQuestion(
"",
- _("You have not installed all needed packages.") + "\n procmail \n",
+ Ops.add(
+ _("You have not installed all needed packages."),
+ "\n procmail \n"
+ ),
Label.InstallButton,
Label.AbortButton,
:focus_yes
@@ -474,7 +477,10 @@
if !@cyrus_installed
if Report.AnyQuestion(
"",
- _("You have not installed all needed packages.") + "\n cyrus-imapd \n",
+ Ops.add(
+ _("You have not installed all needed packages."),
+ "\n cyrus-imapd \n"
+ ),
Label.InstallButton,
Label.AbortButton,
:focus_yes
@@ -624,7 +630,10 @@
if !@fetchmail_installed
if Report.AnyQuestion(
"",
- _("You have not installed all needed packages.") + "\n fetchmail \n",
+ Ops.add(
+ _("You have not installed all needed packages."),
+ "\n fetchmail \n"
+ ),
Label.InstallButton,
Label.AbortButton,
:focus_yes
diff -ur result/mail/users-plugin/clients/users_plugin_mail_groups.rb result-bck/mail/users-plugin/clients/users_plugin_mail_groups.rb
--- result/mail/users-plugin/clients/users_plugin_mail_groups.rb 2013-06-28 14:22:46.188000000 +0200
+++ result-bck/mail/users-plugin/clients/users_plugin_mail_groups.rb 2013-06-28 12:36:07.012000000 +0200
@@ -210,12 +210,18 @@
)
Ops.assign(@tmp_data, "objectClass", @object_class)
end
- @help_text = (_(
- "<p>In this dialog You can configure the mail settings of an user .</p>"
- ) + _(
- "<p>First you can set the mail addresses and aliases for the user.</p>"
- )) + _(
- "<p>If you have selected \"cyrus\" for the local delivery of mails, you can set the size limit for the users mail box.\n If you do not set any value the mail box size is unlimited.</p>"
+ @help_text = Ops.add(
+ Ops.add(
+ _(
+ "<p>In this dialog You can configure the mail settings of an user .</p>"
+ ),
+ _(
+ "<p>First you can set the mail addresses and aliases for the user.</p>"
+ )
+ ),
+ _(
+ "<p>If you have selected \"cyrus\" for the local delivery of mails, you can set the size limit for the users mail box.\n If you do not set any value the mail box size is unlimited.</p>"
+ )
)
@items = nil
@used_attributes = []
@@ -370,7 +376,7 @@
Wizard.SetContentsButtons(
Ops.add(
Ops.add(
- _("Mail Settings for the group:") + " \"",
+ Ops.add(_("Mail Settings for the group:"), " \""),
Convert.to_string(Ops.index(@data, "cn", ""))
),
"\""
diff -ur result/mail/users-plugin/clients/users_plugin_mail.rb result-bck/mail/users-plugin/clients/users_plugin_mail.rb
--- result/mail/users-plugin/clients/users_plugin_mail.rb 2013-06-28 14:22:43.892000000 +0200
+++ result-bck/mail/users-plugin/clients/users_plugin_mail.rb 2013-06-28 12:36:07.012000000 +0200
@@ -212,12 +212,18 @@
)
Ops.assign(@tmp_data, "objectClass", @object_class)
end
- @help_text = (_(
- "<p>In this dialog You can configure the mail settings of an user .</p>"
- ) + _(
- "<p>First you can set the mail addresses and aliases for the user.</p>"
- )) + _(
- "<p>If you have selected \"cyrus\" for the local delivery of mails, you can set the size limit for the users mail box.\n If you do not set any value the mail box size is unlimited.</p>"
+ @help_text = Ops.add(
+ Ops.add(
+ _(
+ "<p>In this dialog You can configure the mail settings of an user .</p>"
+ ),
+ _(
+ "<p>First you can set the mail addresses and aliases for the user.</p>"
+ )
+ ),
+ _(
+ "<p>If you have selected \"cyrus\" for the local delivery of mails, you can set the size limit for the users mail box.\n If you do not set any value the mail box size is unlimited.</p>"
+ )
)
@items = nil
@used_attributes = []
diff -ur result/metapackage/src/clients/OneClickInstallUI.rb result-bck/metapackage/src/clients/OneClickInstallUI.rb
--- result/metapackage/src/clients/OneClickInstallUI.rb 2013-06-28 14:23:43.508000000 +0200
+++ result-bck/metapackage/src/clients/OneClickInstallUI.rb 2013-06-28 12:36:11.700000000 +0200
@@ -46,9 +46,16 @@
Ops.add(
Ops.add(
Ops.add(
- (("<h3>" + _(
- "Select the software components you wish to install:"
- )) + "</h3>") + "<p>",
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ "<h3>",
+ _("Select the software components you wish to install:")
+ ),
+ "</h3>"
+ ),
+ "<p>"
+ ),
@HELP1
),
"</p>"
diff -ur result/metapackage/src/modules/OneClickInstallWidgets.rb result-bck/metapackage/src/modules/OneClickInstallWidgets.rb
--- result/metapackage/src/modules/OneClickInstallWidgets.rb 2013-06-28 14:23:35.324000000 +0200
+++ result-bck/metapackage/src/modules/OneClickInstallWidgets.rb 2013-06-28 12:36:11.700000000 +0200
@@ -476,9 +476,12 @@
statusStr,
HTML.Para(
Ops.add(
- _(
- "The installation has failed. For more information, see the log file at <tt>/var/log/YaST2/y2log</tt>. Failure stage was: "
- ) + " ",
+ Ops.add(
+ _(
+ "The installation has failed. For more information, see the log file at <tt>/var/log/YaST2/y2log</tt>. Failure stage was: "
+ ),
+ " "
+ ),
failureStage
)
)
diff -ur result/metapackage/src/modules/OneClickInstallWorkerFunctions.rb result-bck/metapackage/src/modules/OneClickInstallWorkerFunctions.rb
--- result/metapackage/src/modules/OneClickInstallWorkerFunctions.rb 2013-06-28 14:23:37.724000000 +0200
+++ result-bck/metapackage/src/modules/OneClickInstallWorkerFunctions.rb 2013-06-28 12:36:11.700000000 +0200
@@ -105,11 +105,18 @@
Ops.add(
Ops.add(
Ops.add(
- ((_(
- "An error occurred while initializing the software repository."
- ) + "\n") + _(
- "Details:"
- )) + "\n",
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "An error occurred while initializing the software repository."
+ ),
+ "\n"
+ ),
+ _("Details:")
+ ),
+ "\n"
+ ),
Pkg.LastError
),
"\n"
diff -ur result/multipath/src/include/multipath/complex.rb result-bck/multipath/src/include/multipath/complex.rb
--- result/multipath/src/include/multipath/complex.rb 2013-06-28 14:24:07.800000000 +0200
+++ result-bck/multipath/src/include/multipath/complex.rb 2013-06-28 12:36:05.044000000 +0200
@@ -1526,7 +1526,7 @@
item = deep_copy(item)
ret = {}
result = false
- prop_info = _("Illegal parameter:") + "\n"
+ prop_info = Ops.add(_("Illegal parameter:"), "\n")
name_str = Convert.to_string(Ops.index(item, "name", "NA"))
value_str = Convert.to_string(Ops.index(item, "value", "NA"))
item_name = Builtins.symbolof(Builtins.toterm(name_str))
@@ -2027,7 +2027,7 @@
def check_bl_config(item)
item = deep_copy(item)
- prop_info = _("Illegal parameters:") + "\n"
+ prop_info = Ops.add(_("Illegal parameters:"), "\n")
type_str = ""
result = false
ret = {}
@@ -2764,7 +2764,7 @@
def check_ble_config(item)
item = deep_copy(item)
- prop_info = _("Illegal parameters:") + "\n"
+ prop_info = Ops.add(_("Illegal parameters:"), "\n")
type_str = ""
result = false
ret = {}
@@ -3929,7 +3929,7 @@
def Start_Service
return if @service_status == 1
- prop_info = _("Use multipath failed:") + "\n"
+ prop_info = Ops.add(_("Use multipath failed:"), "\n")
if Mode.normal && Stage.normal
ret = Service.Enable("boot.multipath")
if ret == false
@@ -3972,7 +3972,7 @@
def Stop_Service
return if @service_status == 0
- prop_info = _("Do not use multipath failed:") + "\n"
+ prop_info = Ops.add(_("Do not use multipath failed:"), "\n")
if Mode.normal && Stage.normal
ret = Service.Stop("multipathd")
if ret == false
diff -ur result/multipath/src/include/multipath/options.rb result-bck/multipath/src/include/multipath/options.rb
--- result/multipath/src/include/multipath/options.rb 2013-06-28 14:23:57.600000000 +0200
+++ result-bck/multipath/src/include/multipath/options.rb 2013-06-28 12:36:05.044000000 +0200
@@ -751,7 +751,13 @@
Ops.assign(
ret,
"info",
- ("* \"polling_interval\" " + _("should be a decimal integer")) + "\n"
+ Ops.add(
+ Ops.add(
+ "* \"polling_interval\" ",
+ _("should be a decimal integer")
+ ),
+ "\n"
+ )
)
else
if (Builtins.tointeger(value) == nil) || (value != Builtins.tostring(
@@ -761,7 +767,10 @@
Ops.assign(
ret,
"info",
- ("* \"polling_interval\" " + _("illegal value")) + "\n"
+ Ops.add(
+ Ops.add("* \"polling_interval\" ", _("illegal value")),
+ "\n"
+ )
)
else
if Ops.less_than(Builtins.tointeger(value), 0)
@@ -769,7 +778,13 @@
Ops.assign(
ret,
"info",
- ("* \"polling_interval\" " + _("should be greater than 0")) + "\n"
+ Ops.add(
+ Ops.add(
+ "* \"polling_interval\" ",
+ _("should be greater than 0")
+ ),
+ "\n"
+ )
)
else
if value == Builtins.tostring(Builtins.tointeger(value))
@@ -780,7 +795,10 @@
Ops.assign(
ret,
"info",
- ("* \"polling_interval\" " + _("illegal value")) + "\n"
+ Ops.add(
+ Ops.add("* \"polling_interval\" ", _("illegal value")),
+ "\n"
+ )
)
end
end
@@ -1012,7 +1030,7 @@
Ops.assign(
ret,
"info",
- ("* \"path_selector\" " + _("illegal value")) + "\n"
+ Ops.add(Ops.add("* \"path_selector\" ", _("illegal value")), "\n")
)
end
return deep_copy(ret)
@@ -1107,7 +1125,10 @@
Ops.assign(
ret,
"info",
- ("* \"path_grouping_policy\" " + _("illegal value")) + "\n"
+ Ops.add(
+ Ops.add("* \"path_grouping_policy\" ", _("illegal value")),
+ "\n"
+ )
)
end
return deep_copy(ret)
@@ -1578,7 +1599,7 @@
Ops.assign(
ret,
"info",
- ("* \"path_checker\" " + _("illegal value")) + "\n"
+ Ops.add(Ops.add("* \"path_checker\" ", _("illegal value")), "\n")
)
end
return deep_copy(ret)
@@ -1732,7 +1753,10 @@
Ops.assign(
ret,
"info",
- ("* \"failback\" " + _("should be a decimal integer")) + "\n"
+ Ops.add(
+ Ops.add("* \"failback\" ", _("should be a decimal integer")),
+ "\n"
+ )
)
else
if ((Builtins.tointeger(value) == nil) || (value != Builtins.tostring(
@@ -1742,7 +1766,7 @@
Ops.assign(
ret,
"info",
- ("* \"failback\" " + _("illegal value")) + "\n"
+ Ops.add(Ops.add("* \"failback\" ", _("illegal value")), "\n")
)
else
if Ops.less_or_equal(Builtins.tointeger(value), 0)
@@ -1750,7 +1774,10 @@
Ops.assign(
ret,
"info",
- ("* \"failback\" " + _("should be greater than 0")) + "\n"
+ Ops.add(
+ Ops.add("* \"failback\" ", _("should be greater than 0")),
+ "\n"
+ )
)
else
if value == Builtins.tostring(Builtins.tointeger(value))
@@ -1761,7 +1788,7 @@
Ops.assign(
ret,
"info",
- ("* \"failback\" " + _("illegal value")) + "\n"
+ Ops.add(Ops.add("* \"failback\" ", _("illegal value")), "\n")
)
end
end
@@ -1813,7 +1840,10 @@
Ops.assign(
ret,
"info",
- ("* \"rr_min_io\" " + _("should be a decimal integer")) + "\n"
+ Ops.add(
+ Ops.add("* \"rr_min_io\" ", _("should be a decimal integer")),
+ "\n"
+ )
)
else
if value == ""
@@ -1827,7 +1857,10 @@
Ops.assign(
ret,
"info",
- ("* \"rr_min_io\" " + _("invalid decimal integer")) + "\n"
+ Ops.add(
+ Ops.add("* \"rr_min_io\" ", _("invalid decimal integer")),
+ "\n"
+ )
)
else
if value == Builtins.tostring(Builtins.tointeger(value))
@@ -1838,7 +1871,7 @@
Ops.assign(
ret,
"info",
- ("* \"rr_min_io\" " + _("illegal value")) + "\n"
+ Ops.add(Ops.add("* \"rr_min_io\" ", _("illegal value")), "\n")
)
end
end
@@ -2073,7 +2106,10 @@
Ops.assign(
ret,
"info",
- ("* \"no_path_retry\" " + _("should be a decimal integer")) + "\n"
+ Ops.add(
+ Ops.add("* \"no_path_retry\" ", _("should be a decimal integer")),
+ "\n"
+ )
)
else
if (Builtins.tointeger(value) == nil) || (value != Builtins.tostring(
@@ -2083,7 +2119,7 @@
Ops.assign(
ret,
"info",
- ("* \"no_path_retry\" " + _("illegal value")) + "\n"
+ Ops.add(Ops.add("* \"no_path_retry\" ", _("illegal value")), "\n")
)
else
if value == Builtins.tostring(Builtins.tointeger(value))
@@ -2094,7 +2130,10 @@
Ops.assign(
ret,
"info",
- ("* \"no_path_retry\" " + _("illegal value")) + "\n"
+ Ops.add(
+ Ops.add("* \"no_path_retry\" ", _("illegal value")),
+ "\n"
+ )
)
end
end
@@ -2227,7 +2266,7 @@
Ops.assign(
ret,
"info",
- ("* \"wwid\" " + _("should not be empty")) + "\n"
+ Ops.add(Ops.add("* \"wwid\" ", _("should not be empty")), "\n")
)
else
Ops.assign(ret, "result", true)
@@ -2340,7 +2379,11 @@
Ops.assign(ret, "info", "")
else
Ops.assign(ret, "result", false)
- Ops.assign(ret, "info", ("* \"alias\" " + _("illegal value")) + "\n")
+ Ops.assign(
+ ret,
+ "info",
+ Ops.add(Ops.add("* \"alias\" ", _("illegal value")), "\n")
+ )
end
return deep_copy(ret)
end
diff -ur result/network/src/clients/dns.rb result-bck/network/src/clients/dns.rb
--- result/network/src/clients/dns.rb 2013-06-28 14:06:55.752000000 +0200
+++ result-bck/network/src/clients/dns.rb 2013-06-28 12:36:27.208000000 +0200
@@ -108,7 +108,7 @@
summary = ""
summary = Ops.add(
Ops.add(
- ("\n" + _("DNS Configuration Summary:")) + "\n\n",
+ Ops.add(Ops.add("\n", _("DNS Configuration Summary:")), "\n\n"),
RichText.Rich2Plain(DNS.Summary)
),
"\n"
diff -ur result/network/src/clients/firewall_stage1_proposal.rb result-bck/network/src/clients/firewall_stage1_proposal.rb
--- result/network/src/clients/firewall_stage1_proposal.rb 2013-06-28 14:07:24.464000000 +0200
+++ result-bck/network/src/clients/firewall_stage1_proposal.rb 2013-06-28 12:36:27.212000000 +0200
@@ -68,7 +68,7 @@
Ops.add(
Ops.add(
Ops.add(
- "<ul>\n" + "<li>",
+ Ops.add("<ul>\n", "<li>"),
SuSEFirewall4Network.Enabled1stStage ? Builtins.sformat(
_(
"Firewall will be enabled (<a href=\"%1\">disable</a>)"
@@ -234,16 +234,24 @@
)
)
)
- help = ((_(
- "<p><b><big>Firewall and SSH</big></b><br>\nFirewall is a defensive mechanism that protects your computer from network attacks.\nSSH is a service that allows logging into this computer remotely via dedicated\nSSH client</p>"
- ) + _(
- "<p>Here you can choose whether the firewall will be enabled or disabled after\nthe installation. It is recommended to keep it enabled.</p>"
- )) + _(
- "<p>With enabled firewall, you can decide whether to open firewall port for SSH\nservice and allow remote SSH logins. This will also enable SSH service (i.e. it\nwill be started on computer boot).</p>"
- )) + (Linuxrc.vnc(
- ) ? _(
- "<p>You can also open VNC ports in firewall. It will not enable\nthe remote administration service on a running system but it is\nstarted by the installer automatically if needed.</p>"
- ) : "")
+ help = Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Firewall and SSH</big></b><br>\nFirewall is a defensive mechanism that protects your computer from network attacks.\nSSH is a service that allows logging into this computer remotely via dedicated\nSSH client</p>"
+ ),
+ _(
+ "<p>Here you can choose whether the firewall will be enabled or disabled after\nthe installation. It is recommended to keep it enabled.</p>"
+ )
+ ),
+ _(
+ "<p>With enabled firewall, you can decide whether to open firewall port for SSH\nservice and allow remote SSH logins. This will also enable SSH service (i.e. it\nwill be started on computer boot).</p>"
+ )
+ ),
+ Linuxrc.vnc ? _(
+ "<p>You can also open VNC ports in firewall. It will not enable\nthe remote administration service on a running system but it is\nstarted by the installer automatically if needed.</p>"
+ ) : ""
+ )
Wizard.CreateDialog
Wizard.SetTitleIcon("yast-firewall")
Wizard.SetContentsButtons(
diff -ur result/network/src/clients/host.rb result-bck/network/src/clients/host.rb
--- result/network/src/clients/host.rb 2013-06-28 14:07:34.736000000 +0200
+++ result-bck/network/src/clients/host.rb 2013-06-28 12:36:27.204000000 +0200
@@ -65,7 +65,7 @@
summary = ""
summary = Ops.add(
Ops.add(
- ("\n" + _("Host Configuration Summary:")) + "\n\n",
+ Ops.add(Ops.add("\n", _("Host Configuration Summary:")), "\n\n"),
RichText.Rich2Plain(Host.Summary)
),
"\n"
diff -ur result/network/src/clients/inst_do_net_test.rb result-bck/network/src/clients/inst_do_net_test.rb
--- result/network/src/clients/inst_do_net_test.rb 2013-06-28 14:07:27.576000000 +0200
+++ result-bck/network/src/clients/inst_do_net_test.rb 2013-06-28 12:36:27.204000000 +0200
@@ -116,10 +116,9 @@
def make_dialog
caption = _("Running Internet Connection Test")
- help = _(
- "<p>Here, view the progress of the\nInternet connection test.</p>\n"
- ) + _(
- "<p>The test can be aborted by pressing\n<b>Abort Test</b>.</p>\n"
+ help = Ops.add(
+ _("<p>Here, view the progress of the\nInternet connection test.</p>\n"),
+ _("<p>The test can be aborted by pressing\n<b>Abort Test</b>.</p>\n")
)
if !Mode.update
help = Ops.add(
diff -ur result/network/src/clients/network.rb result-bck/network/src/clients/network.rb
--- result/network/src/clients/network.rb 2013-06-28 14:08:03.368000000 +0200
+++ result-bck/network/src/clients/network.rb 2013-06-28 12:36:27.196000000 +0200
@@ -24,17 +24,33 @@
end
@cmdline_description = {
"id" => "network",
- "help" => (((((((_(
- "Configuration of network.\nThis is only a delegator to network sub-modules.\nYou can run these network modules:\n\nlan\t"
- ) + _(
- "Network Card"
- )) + "\nisdn\t") + _(
- "ISDN Card"
- )) + "\nmodem\t") + _(
- "Modem"
- )) + "\ndsl\t") + _(
- "DSL Connection"
- )) + "\n",
+ "help" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "Configuration of network.\nThis is only a delegator to network sub-modules.\nYou can run these network modules:\n\nlan\t"
+ ),
+ _("Network Card")
+ ),
+ "\nisdn\t"
+ ),
+ _("ISDN Card")
+ ),
+ "\nmodem\t"
+ ),
+ _("Modem")
+ ),
+ "\ndsl\t"
+ ),
+ _("DSL Connection")
+ ),
+ "\n"
+ ),
"guihandler" => fun_ref(method(:startDialog), "any ()"),
"initialize" => fun_ref(method(:initNet), "void ()"),
"finish" => fun_ref(method(:finishNet), "void ()"),
diff -ur result/network/src/clients/remote.rb result-bck/network/src/clients/remote.rb
--- result/network/src/clients/remote.rb 2013-06-28 14:07:12.364000000 +0200
+++ result-bck/network/src/clients/remote.rb 2013-06-28 12:36:27.204000000 +0200
@@ -76,7 +76,10 @@
summary = ""
summary = Ops.add(
Ops.add(
- ("\n" + _("Remote Access Configuration Summary:")) + "\n\n",
+ Ops.add(
+ Ops.add("\n", _("Remote Access Configuration Summary:")),
+ "\n\n"
+ ),
RichText.Rich2Plain(Remote.Summary)
),
"\n"
diff -ur result/network/src/include/network/complex.rb result-bck/network/src/include/network/complex.rb
--- result/network/src/include/network/complex.rb 2013-06-28 14:06:21.672000000 +0200
+++ result-bck/network/src/include/network/complex.rb 2013-06-28 12:36:27.132000000 +0200
@@ -514,7 +514,7 @@
if slaves != ""
bullets = Ops.add(
bullets,
- [Ops.add(_("Bond slaves") + " : ", slaves)]
+ [Ops.add(Ops.add(_("Bond slaves"), " : "), slaves)]
)
end
end
diff -ur result/network/src/include/network/dsl/dialogs.rb result-bck/network/src/include/network/dsl/dialogs.rb
--- result/network/src/include/network/dsl/dialogs.rb 2013-06-28 14:06:28.428000000 +0200
+++ result-bck/network/src/include/network/dsl/dialogs.rb 2013-06-28 12:36:27.152000000 +0200
@@ -40,20 +40,36 @@
helptext = Ops.add(
Ops.add(
Ops.add(
- (((((_(
- "<p>Here, set the most important settings\nfor the DSL connection.</p>\n"
- ) + _(
- "<p>First, choose your <b>PPP mode</b>. This is either\n<i>PPP over Ethernet</i> (PPPoE), <i>PPP over ATM</i> (PPPoATM),\n<i>CAPI for ADSL</i> or <i>Point to Point Tunneling Protocol</i> (PPTP).\nUse <i>PPP over Ethernet</i> if your DSL modem is connected via ethernet to your computer.\nUse <i>Point to Point Tunneling Protocol</i> if you want to connect to a VPN server.\nIf you are not sure which mode to use, ask your provider. </p>"
- )) + _(
- "<p>If you are using <i>PPP over Ethernet</i>, first configure your\nethernet card.</p>"
- )) + _(
- "<p>The <b>PPP Mode-Dependent Settings</b> are settings required to set up\nyour DSL connection. <b>VPI/VCI</b> makes sense only for <i>PPP over ATM</i>\nconnections, <b>Ethernet Card</b> is needed for <i>PPP over Ethernet</i>\nconnections.</p>\n"
- )) + _(
- "<p><b>For PPPoATM, enter your VPI/VCI pair, for example, <i>0.38</i>\nfor British Telecom. If unsure, ask your provider.</p>"
- )) + _(
- "<p>For PPPoE, enter the device of the ethernet card to which your DSL\nmodem is connected. If you did not set up your ethernet card yet, do\nso by pressing <b>Configure Network Cards</b>.</p>"
- )) + _(
- "<p>For PPTP, enter the server name or IP address.</p>"
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Here, set the most important settings\nfor the DSL connection.</p>\n"
+ ),
+ _(
+ "<p>First, choose your <b>PPP mode</b>. This is either\n<i>PPP over Ethernet</i> (PPPoE), <i>PPP over ATM</i> (PPPoATM),\n<i>CAPI for ADSL</i> or <i>Point to Point Tunneling Protocol</i> (PPTP).\nUse <i>PPP over Ethernet</i> if your DSL modem is connected via ethernet to your computer.\nUse <i>Point to Point Tunneling Protocol</i> if you want to connect to a VPN server.\nIf you are not sure which mode to use, ask your provider. </p>"
+ )
+ ),
+ _(
+ "<p>If you are using <i>PPP over Ethernet</i>, first configure your\nethernet card.</p>"
+ )
+ ),
+ _(
+ "<p>The <b>PPP Mode-Dependent Settings</b> are settings required to set up\nyour DSL connection. <b>VPI/VCI</b> makes sense only for <i>PPP over ATM</i>\nconnections, <b>Ethernet Card</b> is needed for <i>PPP over Ethernet</i>\nconnections.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>For PPPoATM, enter your VPI/VCI pair, for example, <i>0.38</i>\nfor British Telecom. If unsure, ask your provider.</p>"
+ )
+ ),
+ _(
+ "<p>For PPPoE, enter the device of the ethernet card to which your DSL\nmodem is connected. If you did not set up your ethernet card yet, do\nso by pressing <b>Configure Network Cards</b>.</p>"
+ )
+ ),
+ _("<p>For PPTP, enter the server name or IP address.</p>")
),
Convert.to_string(
Ops.index(@widget_descr, ["STARTMODE", "help"], "")
diff -ur result/network/src/include/network/lan/address.rb result-bck/network/src/include/network/lan/address.rb
--- result/network/src/include/network/lan/address.rb 2013-06-28 14:06:11.584000000 +0200
+++ result-bck/network/src/include/network/lan/address.rb 2013-06-28 12:36:27.096000000 +0200
@@ -1128,16 +1128,28 @@
),
HSpacing(6)
)
- helptext = (((_(
- "<p>Enter the <b>Port Name</b> for this interface (case-sensitive).</p>"
- ) + _(
- "<p>Enter any additional <b>Options</b> for this interface (separated by spaces).</p>"
- )) + _(
- "<p>Select <b>Enable IPA Takeover</b> if IP address takeover should be enabled for this interface.</p>"
- )) + _(
- "<p>Select <b>Enable Layer 2 Support</b> if this card has been configured with layer 2 support.</p>"
- )) + _(
- "<p>Enter the <b>Layer 2 MAC Address</b> if this card has been configured with layer 2 support.</p>"
+ helptext = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Enter the <b>Port Name</b> for this interface (case-sensitive).</p>"
+ ),
+ _(
+ "<p>Enter any additional <b>Options</b> for this interface (separated by spaces).</p>"
+ )
+ ),
+ _(
+ "<p>Select <b>Enable IPA Takeover</b> if IP address takeover should be enabled for this interface.</p>"
+ )
+ ),
+ _(
+ "<p>Select <b>Enable Layer 2 Support</b> if this card has been configured with layer 2 support.</p>"
+ )
+ ),
+ _(
+ "<p>Enter the <b>Layer 2 MAC Address</b> if this card has been configured with layer 2 support.</p>"
+ )
)
end
if drvtype == "lcs"
@@ -1188,8 +1200,9 @@
),
HSpacing(6)
)
- helptext = _("<p>Choose the <b>Port Number</b> for this interface.</p>") + _(
- "<p>Specify the <b>LANCMD Time-Out</b> for this interface.</p>"
+ helptext = Ops.add(
+ _("<p>Choose the <b>Port Number</b> for this interface.</p>"),
+ _("<p>Specify the <b>LANCMD Time-Out</b> for this interface.</p>")
)
end
ctcitems = [
diff -ur result/network/src/include/network/lan/hardware.rb result-bck/network/src/include/network/lan/hardware.rb
--- result/network/src/include/network/lan/hardware.rb 2013-06-28 14:05:56.944000000 +0200
+++ result-bck/network/src/include/network/lan/hardware.rb 2013-06-28 12:36:27.128000000 +0200
@@ -86,10 +86,13 @@
)
end
if Arch.s390
- hw_help = _(
- "<p>Here, set up your networking device. The values will be\nwritten to <i>/etc/modprobe.conf</i> or <i>/etc/chandev.conf</i>.</p>\n"
- ) + _(
- "<p>Options for the module should be written in the format specified\nin the <b>IBM Device Drivers and Installation Commands</b> manual.</p>"
+ hw_help = Ops.add(
+ _(
+ "<p>Here, set up your networking device. The values will be\nwritten to <i>/etc/modprobe.conf</i> or <i>/etc/chandev.conf</i>.</p>\n"
+ ),
+ _(
+ "<p>Options for the module should be written in the format specified\nin the <b>IBM Device Drivers and Installation Commands</b> manual.</p>"
+ )
)
end
return hw_help
@@ -1466,16 +1469,28 @@
),
HSpacing(6)
)
- helptext = (((_(
- "<p>Enter the <b>Port Name</b> for this interface (case-sensitive).</p>"
- ) + _(
- "<p>Enter any additional <b>Options</b> for this interface (separated by spaces).</p>"
- )) + _(
- "<p>Select <b>Enable IPA Takeover</b> if IP address takeover should be enabled for this interface.</p>"
- )) + _(
- "<p>Select <b>Enable Layer 2 Support</b> if this card has been configured with layer 2 support.</p>"
- )) + _(
- "<p>Enter the <b>Layer 2 MAC Address</b> if this card has been configured with layer 2 support.</p>"
+ helptext = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Enter the <b>Port Name</b> for this interface (case-sensitive).</p>"
+ ),
+ _(
+ "<p>Enter any additional <b>Options</b> for this interface (separated by spaces).</p>"
+ )
+ ),
+ _(
+ "<p>Select <b>Enable IPA Takeover</b> if IP address takeover should be enabled for this interface.</p>"
+ )
+ ),
+ _(
+ "<p>Select <b>Enable Layer 2 Support</b> if this card has been configured with layer 2 support.</p>"
+ )
+ ),
+ _(
+ "<p>Enter the <b>Layer 2 MAC Address</b> if this card has been configured with layer 2 support.</p>"
+ )
)
end
if drvtype == "lcs"
@@ -1526,8 +1541,9 @@
),
HSpacing(6)
)
- helptext = _("<p>Choose the <b>Port Number</b> for this interface.</p>") + _(
- "<p>Specify the <b>LANCMD Time-Out</b> for this interface.</p>"
+ helptext = Ops.add(
+ _("<p>Choose the <b>Port Number</b> for this interface.</p>"),
+ _("<p>Specify the <b>LANCMD Time-Out</b> for this interface.</p>")
)
end
ctcitems = [
diff -ur result/network/src/include/network/lan/help.rb result-bck/network/src/include/network/lan/help.rb
--- result/network/src/include/network/lan/help.rb 2013-06-28 14:06:05.360000000 +0200
+++ result-bck/network/src/include/network/lan/help.rb 2013-06-28 12:36:27.116000000 +0200
@@ -9,39 +9,61 @@
def initialize_network_lan_help(include_target)
textdomain "network"
@help = {
- "read" => _(
- "<p><b><big>Initializing Network Card\nConfiguration</big></b><br>Please wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting the Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <B>Abort</B> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving Network Card\nConfiguration</big></b><br>Please wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort saving by pressing <b>Abort</b>.</p>\n"
- ),
- "managed" => _(
- "<p><b><big>Network Setup Method</big></b></p>\n<p>Use the <b>NetworkManager</b> as a desktop applet\nmanaging connections for all interfaces. It is well suited\nfor switching among wired and wireless networks.</p>\n"
- ) + _(
- "<p>Use the <b>Traditional Method with <tt>ifup</tt></b>\nif you do not run a desktop environment (GNOME or KDE)\nor need to use multiple interfaces at the same time.</p>\n"
- ),
- "overview" => (_(
- "<p><b><big>Network Card Overview</big></b><br>\nObtain an overview of installed network cards. Additionally,\nedit their configuration.<br></p>\n"
- ) + _(
- "<p><b><big>Adding a Network Card:</big></b><br>\nPress <b>Add</b> to configure a new network card manually.</p>\n"
- )) + _(
- "<p><b><big>Configuring or Deleting:</big></b><br>\nChoose a network card to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> respectively.</p>\n"
- ),
- "ipv6" => _(
- "<p><b><big>IPv6 Protocol Settings</big></b></p>\n<p>Check <b>Enable IPv6</b> to enable the ipv6 module in the kernel.\nIt is possible to use IPv6 together with IPv4. This is the default option.\nTo disable IPv6, uncheck this option. This will blacklist the kernel \nmodule for ipv6. If the IPv6 protocol is not used on your network, the response \ntime can be faster.</p>\n"
- ) + _(
- "<p>All changes will be applied after reboot.</p>"
- ),
- "routing" => (_(
- "<p>The routing can be set up in this dialog.\nThe <b>Default Gateway</b> matches every possible destination, but poorly. \nIf any other entry exists that matches the required address, it is\nused instead of the default route. The idea of the default route is simply\nto enable you to say \"and everything else should go here.\"</p>\n"
- ) + _(
- "<p>For each route, enter destination network IP address, gateway address,\nand netmask. To omit any of these values, use a dash sign \"-\". Select\nthe device through which the traffic to the defined network will be routed.\"-\" is an alias for any interface.</p>\n"
- )) + _(
- "<p>Enable <b>IP Forwarding</b> (forwarding packets from external networks\nto the internal one) if this system is a router. Both IPv4 and IPv6 connectivity \nwill be affected by this setting. \n<b>Important:</b> if the firewall is enabled, allowing IP forwarding alone is not enough. \nYou should enable masquerading and/or set at least one redirect rule in the\nfirewall configuration. Use the YaST firewall module.</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing Network Card\nConfiguration</big></b><br>Please wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting the Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <B>Abort</B> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving Network Card\nConfiguration</big></b><br>Please wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort saving by pressing <b>Abort</b>.</p>\n"
+ )
+ ),
+ "managed" => Ops.add(
+ _(
+ "<p><b><big>Network Setup Method</big></b></p>\n<p>Use the <b>NetworkManager</b> as a desktop applet\nmanaging connections for all interfaces. It is well suited\nfor switching among wired and wireless networks.</p>\n"
+ ),
+ _(
+ "<p>Use the <b>Traditional Method with <tt>ifup</tt></b>\nif you do not run a desktop environment (GNOME or KDE)\nor need to use multiple interfaces at the same time.</p>\n"
+ )
+ ),
+ "overview" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Network Card Overview</big></b><br>\nObtain an overview of installed network cards. Additionally,\nedit their configuration.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding a Network Card:</big></b><br>\nPress <b>Add</b> to configure a new network card manually.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Configuring or Deleting:</big></b><br>\nChoose a network card to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> respectively.</p>\n"
+ )
+ ),
+ "ipv6" => Ops.add(
+ _(
+ "<p><b><big>IPv6 Protocol Settings</big></b></p>\n<p>Check <b>Enable IPv6</b> to enable the ipv6 module in the kernel.\nIt is possible to use IPv6 together with IPv4. This is the default option.\nTo disable IPv6, uncheck this option. This will blacklist the kernel \nmodule for ipv6. If the IPv6 protocol is not used on your network, the response \ntime can be faster.</p>\n"
+ ),
+ _("<p>All changes will be applied after reboot.</p>")
+ ),
+ "routing" => Ops.add(
+ Ops.add(
+ _(
+ "<p>The routing can be set up in this dialog.\nThe <b>Default Gateway</b> matches every possible destination, but poorly. \nIf any other entry exists that matches the required address, it is\nused instead of the default route. The idea of the default route is simply\nto enable you to say \"and everything else should go here.\"</p>\n"
+ ),
+ _(
+ "<p>For each route, enter destination network IP address, gateway address,\nand netmask. To omit any of these values, use a dash sign \"-\". Select\nthe device through which the traffic to the defined network will be routed.\"-\" is an alias for any interface.</p>\n"
+ )
+ ),
+ _(
+ "<p>Enable <b>IP Forwarding</b> (forwarding packets from external networks\nto the internal one) if this system is a router. Both IPv4 and IPv6 connectivity \nwill be affected by this setting. \n<b>Important:</b> if the firewall is enabled, allowing IP forwarding alone is not enough. \nYou should enable masquerading and/or set at least one redirect rule in the\nfirewall configuration. Use the YaST firewall module.</p>\n"
+ )
),
"dhcp_hostname" => _(
"<p>If you are using DHCP to get an IP address, check whether you get\nalso a hostname via DHCP. The hostname will be set automatically by the DHCP client.\nHowever, changing the hostname at runtime may confuse the graphical desktop. \nTherefore, disable this option if you connect to different networks that assign \ndifferent hostnames.</p> "
@@ -49,39 +71,63 @@
"write_hostname" => _(
"<p><b>Assign Hostname to Loopback IP</b> associates your hostname with \nthe IP address <tt>127.0.0.2</tt> (loopback) in <tt>/etc/hosts</tt>. This is a \nuseful option if you want to have the hostname resolvable at all times, even \nwithout an active network. In all other cases, use it carefully, especially \nif this computer provides some network services.</p>\n"
),
- "searchlist_s" => (_(
- "<p>Enter the name servers and domain search list for resolving \nhostnames. Usually they can be obtained by DHCP.</p>\n"
- ) + _(
- "<p>A name server is a computer that translates hostnames into\nIP addresses. This value must be entered as an <b>IP address</b>\n(for example, 192.168.0.42), not as a hostname.</p>\n"
- )) + _(
- "<p>Search domain is the domain name where hostname searching starts.\nThe primary search domain is usually the same as the domain name of\nyour computer (for example, suse.de). There may be additional search domains\n(such as suse.com). Separate the domains with commas or white space.</p>\n"
+ "searchlist_s" => Ops.add(
+ Ops.add(
+ _(
+ "<p>Enter the name servers and domain search list for resolving \nhostnames. Usually they can be obtained by DHCP.</p>\n"
+ ),
+ _(
+ "<p>A name server is a computer that translates hostnames into\nIP addresses. This value must be entered as an <b>IP address</b>\n(for example, 192.168.0.42), not as a hostname.</p>\n"
+ )
+ ),
+ _(
+ "<p>Search domain is the domain name where hostname searching starts.\nThe primary search domain is usually the same as the domain name of\nyour computer (for example, suse.de). There may be additional search domains\n(such as suse.com). Separate the domains with commas or white space.</p>\n"
+ )
),
"hostname_global" => _(
"<p>Enter the short name for this computer (e.g. <i>mymachine</i>) and the DNS domain\n(e.g. <i>example.com</i>) that it belongs to. The domain is especially important if this \ncomputer is a mail server. You can view the hostname of you computer using the <i>hostname</i> \ncommand.</p>"
),
- "dns_config_policy" => _(
- "<p>Select the way how the DNS configuration will be modified (name servers,\nsearch list, the content of <i>/etc/resolv.conf</i>). Normally, it is handled\nby the <i>netconfig</i> script, which merges statically defined data with\ndynamically obtained data (e.g. from the DHCP client, NetworkManager,\netc.). This is the default. <b>Use Default Policy</b> is sufficient for most\nconfigurations.</p>\n"
- ) + _(
- "<p>By choosing <b>Only Manually</b>, <i>netconfig</i> will no longer be\nallowed to modify <i>/etc/resolv.conf</i>. You can however edit the file\nmanually. By choosing <b>Use Custom Policy</b>, you may specify a custom\npolicy string, which consists of a comma-separated list of interface names,\nincluding wildcards, with STATIC and STATIC_FALLBACK as predefined special\nvalues. For more information, see the <i>netconfig</i> manual page. Note:\nLeaving the field blank is the same as using the <b> Only Manually</b>\npolicy.</p>\n"
- ),
- "bootproto" => (((_(
- "<p><b><big>Address Setup</big></b></p>\n<p>Select <b>No Address Setup</b> if you do not want to assign an IP address to this device.\nThis is particularly useful for bonding ethernet devices.</p>\n"
- ) + _(
- "<p>Check <b>iBFT</b> if you want to keep the network configured in your BIOS.</p>\n"
- )) + _(
- "<p>Select <b>Dynamic Address</b> if you do not have a static IP address \nassigned by the system administrator or your Internet provider.</p>\n"
- )) + _(
- "<p>Choose one of the dynamic address assignment methods. Select <b>DHCP</b>\nif you have a DHCP server running on your local network. Network addresses \nare then automatically obtained from the server.</p>\n"
- )) + _(
- "<p>To search for an IP address and assign it statically, select \n<b>Zeroconf</b>. To use DHCP and fall back to zeroconf, select <b>DHCP + Zeroconf\n</b>. Otherwise, the network addresses must be assigned <b>Statically</b>.</p>\n"
+ "dns_config_policy" => Ops.add(
+ _(
+ "<p>Select the way how the DNS configuration will be modified (name servers,\nsearch list, the content of <i>/etc/resolv.conf</i>). Normally, it is handled\nby the <i>netconfig</i> script, which merges statically defined data with\ndynamically obtained data (e.g. from the DHCP client, NetworkManager,\netc.). This is the default. <b>Use Default Policy</b> is sufficient for most\nconfigurations.</p>\n"
+ ),
+ _(
+ "<p>By choosing <b>Only Manually</b>, <i>netconfig</i> will no longer be\nallowed to modify <i>/etc/resolv.conf</i>. You can however edit the file\nmanually. By choosing <b>Use Custom Policy</b>, you may specify a custom\npolicy string, which consists of a comma-separated list of interface names,\nincluding wildcards, with STATIC and STATIC_FALLBACK as predefined special\nvalues. For more information, see the <i>netconfig</i> manual page. Note:\nLeaving the field blank is the same as using the <b> Only Manually</b>\npolicy.</p>\n"
+ )
+ ),
+ "bootproto" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Address Setup</big></b></p>\n<p>Select <b>No Address Setup</b> if you do not want to assign an IP address to this device.\nThis is particularly useful for bonding ethernet devices.</p>\n"
+ ),
+ _(
+ "<p>Check <b>iBFT</b> if you want to keep the network configured in your BIOS.</p>\n"
+ )
+ ),
+ _(
+ "<p>Select <b>Dynamic Address</b> if you do not have a static IP address \nassigned by the system administrator or your Internet provider.</p>\n"
+ )
+ ),
+ _(
+ "<p>Choose one of the dynamic address assignment methods. Select <b>DHCP</b>\nif you have a DHCP server running on your local network. Network addresses \nare then automatically obtained from the server.</p>\n"
+ )
+ ),
+ _(
+ "<p>To search for an IP address and assign it statically, select \n<b>Zeroconf</b>. To use DHCP and fall back to zeroconf, select <b>DHCP + Zeroconf\n</b>. Otherwise, the network addresses must be assigned <b>Statically</b>.</p>\n"
+ )
),
"remoteip" => _(
"<p>Enter the <b>IP Address</b> (for example: <tt>192.168.100.99</tt>) for your computer, and the \n <b>Remote IP Address</b> (for example: <tt>192.168.100.254</tt>)\nfor your peer.</p>\n"
),
- "netmask" => _(
- "<p>For <b>Static Address Setup</b> enter the static IP address for your computer (for example: <tt>192.168.100.99</tt>) and\nthe network mask (usually <tt>255.255.255.0</tt> or just length of prefix <tt>/24</tt>).Optionally, you can enter\na fully qualified hostname for this IP address. The hostname will be written to <tt>/etc/hosts</tt>.</p>\n"
- ) + _(
- "<p>Contact your <b>network administrator</b> for more information about\nthe network configuration.</p>"
+ "netmask" => Ops.add(
+ _(
+ "<p>For <b>Static Address Setup</b> enter the static IP address for your computer (for example: <tt>192.168.100.99</tt>) and\nthe network mask (usually <tt>255.255.255.0</tt> or just length of prefix <tt>/24</tt>).Optionally, you can enter\na fully qualified hostname for this IP address. The hostname will be written to <tt>/etc/hosts</tt>.</p>\n"
+ ),
+ _(
+ "<p>Contact your <b>network administrator</b> for more information about\nthe network configuration.</p>"
+ )
),
"force_static_ip" => _(
"<p>DHCP configuration is not recommended for this product.\nComponents of this product might not work with DHCP.</p>"
@@ -98,42 +144,73 @@
"bondslave" => _(
"<p>Select the slave devices for the bond device.\nOnly devices with the device activation set to <b>Never</b> and with <b>No Address Setup</b> are available.</p>"
),
- "dhclient_help" => (_(
- "<p><b><big>DHCP Client Options</big></b></p>"
- ) + _(
- "<p>The <b>DHCP Client Identifier</b>, if left empty, defaults to\nthe hardware address of the network interface. It must be different for each\nDHCP client on a single network. Therefore, specify a unique free-form\nidentifier here if you have several (virtual) machines using the same\nnetwork interface and thus the same hardware address.</p>"
- )) + _(
- "<p>The <b>Hostname to Send</b> specifies a string used for the\nhostname option field when dhcpcd sends messages to the DHCP server. Some \nDHCP servers update name server zones (forward and reverse records) \naccording to this hostname (dynamic DNS).</p>\nSome DHCP servers require the <b>Hostname to Send</b> option field to\ncontain a specific string in the DHCP messages from clients. Leave <b>AUTO</b>\nto send the current hostname (for example, the one defined in <tt>/etc/HOSTNAME</tt>). \nIf you do not want to send a hostname, leave the field empty.</p>\n"
- ),
- "additional" => ((_(
- "<p><b><big>Additional Addresses</big></b></p>\n<p>Configure additional addresses of an interface (its aliases) in this table.</p>\n"
- ) + _(
- "<p>Enter an <b>Alias Name</b>, an <b>IP Address</b>, and\nthe <b>Netmask</b>.</p>"
- )) + _(
- "<p><b>Alias Name</b> is optional and legacy.The total\n length of interface name (inclusive of the colon and label) is\n limited to 15 characters and the obsolete ifconfig utility truncates it after 9 characters.</p>"
- )) + _(
- "<p>Do not include the interface name in the alias name. For example, enter <b>foo</b> instead of <b>eth0:foo</b>.</p>"
+ "dhclient_help" => Ops.add(
+ Ops.add(
+ _("<p><b><big>DHCP Client Options</big></b></p>"),
+ _(
+ "<p>The <b>DHCP Client Identifier</b>, if left empty, defaults to\nthe hardware address of the network interface. It must be different for each\nDHCP client on a single network. Therefore, specify a unique free-form\nidentifier here if you have several (virtual) machines using the same\nnetwork interface and thus the same hardware address.</p>"
+ )
+ ),
+ _(
+ "<p>The <b>Hostname to Send</b> specifies a string used for the\nhostname option field when dhcpcd sends messages to the DHCP server. Some \nDHCP servers update name server zones (forward and reverse records) \naccording to this hostname (dynamic DNS).</p>\nSome DHCP servers require the <b>Hostname to Send</b> option field to\ncontain a specific string in the DHCP messages from clients. Leave <b>AUTO</b>\nto send the current hostname (for example, the one defined in <tt>/etc/HOSTNAME</tt>). \nIf you do not want to send a hostname, leave the field empty.</p>\n"
+ )
+ ),
+ "additional" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Additional Addresses</big></b></p>\n<p>Configure additional addresses of an interface (its aliases) in this table.</p>\n"
+ ),
+ _(
+ "<p>Enter an <b>Alias Name</b>, an <b>IP Address</b>, and\nthe <b>Netmask</b>.</p>"
+ )
+ ),
+ _(
+ "<p><b>Alias Name</b> is optional and legacy.The total\n length of interface name (inclusive of the colon and label) is\n limited to 15 characters and the obsolete ifconfig utility truncates it after 9 characters.</p>"
+ )
+ ),
+ _(
+ "<p>Do not include the interface name in the alias name. For example, enter <b>foo</b> instead of <b>eth0:foo</b>.</p>"
+ )
),
"wep_key" => _(
"<p>Choose between three <b>Key Input Types</b> for your key.\n<br><b>Passphrase</b>: The key is generated from the phrase entered.\n<br><b>ASCII</b>: The ASCII values of the characters entered constitute the\nkey. Enter 5 characters for 64-bit keys, up to 13\ncharacters for 128-bit keys, up to 16 characters for 156-bit keys, and\nup to 29 characters for 256-bit keys.\n<br><b>Hexadecimal</b>: Enter the hex codes of the key directly. Enter\n10 hex digits for 64-bit keys, 26 digits for 128-bit keys, 32 digits\nfor 156-bit keys, and 58 digits for 256-bit keys. You can\nuse hyphens <tt>-</tt> to separate pairs or groups of digits, for example,\n<tt>0a5f-41e6-48</tt>.\n</p> \n"
),
- "wireless" => (((_(
- "<p>Here, set the most important settings\nfor wireless networking.</p>"
- ) + _(
- "<p>The <b>Operating Mode</b> depends on the network topology. The mode\ncan be <b>Ad-Hoc</b> (peer-to-peer network without an access point),\n<b>Managed</b> (network managed by an access point, sometimes also\ncalled <i>Infrastructure Mode</i>), or <b>Master</b> (the network card\nacts as an access point).</p>\n"
- )) + _(
- "<p>Set the <b>Network Name (ESSID)</b> used to identify\ncells that are part of the same virtual network. All stations in a\nwireless LAN need the same ESSID to communicate with each other. If\nyou choose the operation mode <b>Managed</b> and no <b>WPA</b> authentication mode,\nyou can leave this field empty or set it to <tt>any</tt>. In this\ncase, your WLAN card associates with the access point with the best\nsignal strength.</p>\n"
- )) + _(
- "<p>In some networks, you need to set an <b>Authentication Mode</b>.\nIt depends on the protection technology used, WEP or WPA. <b>WEP</b>\n(Wired Equivalent Privacy) is a system to encrypt wireless network\ntraffic with an optional authentication, based on the encryption\nkey used. In most cases where WEP is used, the <b>WEP-Open</b> mode (no\nauthentication at all) is fine. This does not mean that you cannot\nuse WEP encryption (in that case use <b>No Encryption</b>). \nSome networks may require <b>WEP-Shared Key</b> authentication. \nNOTE: Shared key authentication makes it easier for a\npotential attacker to break into your network. Unless you have\nspecific needs for shared key authentication, use the <b>Open</b>\nmode. Because WEP has been proven insecure, <b>WPA</b> (Wi-Fi Protected Access)\nwas defined to close its security holes, but not all hardware supports\nWPA. If you want to use WPA, select <b>WPA-PSK</b> or <b>WPA-EAP</b> as the\nauthentication mode. This is only possible in the operation mode\n<b>Managed</b>.</p>\n"
- )) + _(
- "<p>To use WEP, enter the\nWEP encryption key to use. It can have a key\nlength of 64, 128, 156, or 256 bits, but not all sizes are\nsupported by all devices. Of these keys, 24 bits\nare dynamically generated, so you only need to enter 40 to 232 bits.</p>\n"
- ),
- "wpa" => (_(
- "<p>To use WPA-PSK (sometimes referred to as WPA Home),\nenter the preshared key. This\nkey is used for authentication and encryption keys are generated from\nit. These are not vulnerable to known attacks against WEP keys, but\ndictionary attacks are still possible. Do not use a word that is\neasy to guess as the passphrase.</p>\n"
- ) + _(
- "<p>To use WPA-EAP (sometimes referred to as WPA Enterprise),\nenter some additional parameters in the next dialog.</p>\n"
- )) + _(
- "<p>These values will be written to the interface configuration file\n'ifcfg-*' in '/etc/sysconfig/network'. If you need additional settings,\nadd them manually. Refer to the file 'wireless' in the same directory for all\navailable options.</p>"
+ "wireless" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Here, set the most important settings\nfor wireless networking.</p>"
+ ),
+ _(
+ "<p>The <b>Operating Mode</b> depends on the network topology. The mode\ncan be <b>Ad-Hoc</b> (peer-to-peer network without an access point),\n<b>Managed</b> (network managed by an access point, sometimes also\ncalled <i>Infrastructure Mode</i>), or <b>Master</b> (the network card\nacts as an access point).</p>\n"
+ )
+ ),
+ _(
+ "<p>Set the <b>Network Name (ESSID)</b> used to identify\ncells that are part of the same virtual network. All stations in a\nwireless LAN need the same ESSID to communicate with each other. If\nyou choose the operation mode <b>Managed</b> and no <b>WPA</b> authentication mode,\nyou can leave this field empty or set it to <tt>any</tt>. In this\ncase, your WLAN card associates with the access point with the best\nsignal strength.</p>\n"
+ )
+ ),
+ _(
+ "<p>In some networks, you need to set an <b>Authentication Mode</b>.\nIt depends on the protection technology used, WEP or WPA. <b>WEP</b>\n(Wired Equivalent Privacy) is a system to encrypt wireless network\ntraffic with an optional authentication, based on the encryption\nkey used. In most cases where WEP is used, the <b>WEP-Open</b> mode (no\nauthentication at all) is fine. This does not mean that you cannot\nuse WEP encryption (in that case use <b>No Encryption</b>). \nSome networks may require <b>WEP-Shared Key</b> authentication. \nNOTE: Shared key authentication makes it easier for a\npotential attacker to break into your network. Unless you have\nspecific needs for shared key authentication, use the <b>Open</b>\nmode. Because WEP has been proven insecure, <b>WPA</b> (Wi-Fi Protected Access)\nwas defined to close its security holes, but not all hardware supports\nWPA. If you want to use WPA, select <b>WPA-PSK</b> or <b>WPA-EAP</b> as the\nauthentication mode. This is only possible in the operation mode\n<b>Managed</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p>To use WEP, enter the\nWEP encryption key to use. It can have a key\nlength of 64, 128, 156, or 256 bits, but not all sizes are\nsupported by all devices. Of these keys, 24 bits\nare dynamically generated, so you only need to enter 40 to 232 bits.</p>\n"
+ )
+ ),
+ "wpa" => Ops.add(
+ Ops.add(
+ _(
+ "<p>To use WPA-PSK (sometimes referred to as WPA Home),\nenter the preshared key. This\nkey is used for authentication and encryption keys are generated from\nit. These are not vulnerable to known attacks against WEP keys, but\ndictionary attacks are still possible. Do not use a word that is\neasy to guess as the passphrase.</p>\n"
+ ),
+ _(
+ "<p>To use WPA-EAP (sometimes referred to as WPA Enterprise),\nenter some additional parameters in the next dialog.</p>\n"
+ )
+ ),
+ _(
+ "<p>These values will be written to the interface configuration file\n'ifcfg-*' in '/etc/sysconfig/network'. If you need additional settings,\nadd them manually. Refer to the file 'wireless' in the same directory for all\navailable options.</p>"
+ )
)
}
end
diff -ur result/network/src/include/network/lan/wireless.rb result-bck/network/src/include/network/lan/wireless.rb
--- result/network/src/include/network/lan/wireless.rb 2013-06-28 14:05:46.232000000 +0200
+++ result-bck/network/src/include/network/lan/wireless.rb 2013-06-28 12:36:27.132000000 +0200
@@ -549,16 +549,28 @@
def WirelessExpertDialog
caption = _("Wireless Expert Settings")
- helptext = (((_(
- "<p>Here, set additional configuration parameters\n(rarely needed).</p>"
- ) + _(
- "<p>To use your wireless LAN card in master or ad-hoc mode,\nset the <b>Channel</b> the card should use here. This is not needed\nfor managed mode--the card will hop through the channels searching for access\npoints in that case.</p>\n"
- )) + _(
- "<p>In some rare cases, you may want to set a transmission\n<b>Bit Rate</b> explicitly. The default is to go as fast as possible.</p>"
- )) + _(
- "<p>In an environment with multiple <b>Access Points</b>, you may want to\ndefine the one to which to connect by entering its MAC address.</p>"
- )) + _(
- "<p><b>Use Power Management</b> enables power saving mechanisms.\nThis is generally a good idea, especially if you are a laptop user and may\nbe disconnected from AC power.</p>\n"
+ helptext = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Here, set additional configuration parameters\n(rarely needed).</p>"
+ ),
+ _(
+ "<p>To use your wireless LAN card in master or ad-hoc mode,\nset the <b>Channel</b> the card should use here. This is not needed\nfor managed mode--the card will hop through the channels searching for access\npoints in that case.</p>\n"
+ )
+ ),
+ _(
+ "<p>In some rare cases, you may want to set a transmission\n<b>Bit Rate</b> explicitly. The default is to go as fast as possible.</p>"
+ )
+ ),
+ _(
+ "<p>In an environment with multiple <b>Access Points</b>, you may want to\ndefine the one to which to connect by entering its MAC address.</p>"
+ )
+ ),
+ _(
+ "<p><b>Use Power Management</b> enables power saving mechanisms.\nThis is generally a good idea, especially if you are a laptop user and may\nbe disconnected from AC power.</p>\n"
+ )
)
helpunused = _(
"<p>To specify the <b>Frequency</b> instead of\nthe channel, select the desired value.</p>\n"
@@ -804,11 +816,17 @@
def WirelessKeysDialog
caption = _("Wireless Keys")
- helptext = (_(
- "<p>In this dialog, define your WEP keys used\nto encrypt your data before it is transmitted. You can have up to four keys,\nalthough only one key is used to encrypt the data. This is the default key.\nThe other keys can be used to decrypt data. Usually you have only\none key.</p>"
- ) + _(
- "<p><b>Key Length</b> defines the bit length of your WEP keys.\nPossible are 64 and 128 bit, sometimes also referred to as 40 and 104 bit.\nSome older hardware might not be able to handle 128 bit keys, so if your\nwireless LAN connection does not establish, you may need to set this\nvalue to 64.</p>"
- )) + ""
+ helptext = Ops.add(
+ Ops.add(
+ _(
+ "<p>In this dialog, define your WEP keys used\nto encrypt your data before it is transmitted. You can have up to four keys,\nalthough only one key is used to encrypt the data. This is the default key.\nThe other keys can be used to decrypt data. Usually you have only\none key.</p>"
+ ),
+ _(
+ "<p><b>Key Length</b> defines the bit length of your WEP keys.\nPossible are 64 and 128 bit, sometimes also referred to as 40 and 104 bit.\nSome older hardware might not be able to handle 128 bit keys, so if your\nwireless LAN connection does not establish, you may need to set this\nvalue to 64.</p>"
+ )
+ ),
+ ""
+ )
length = LanItems.wl_key_length
ui_key_lengths = Builtins.maplist(ParseKeyLengths(LanItems.wl_enc_modes)) { |kl|
Builtins.tostring(Ops.add(kl, 24))
diff -ur result/network/src/include/network/lan/wizards.rb result-bck/network/src/include/network/lan/wizards.rb
--- result/network/src/include/network/lan/wizards.rb 2013-06-28 14:05:53.444000000 +0200
+++ result-bck/network/src/include/network/lan/wizards.rb 2013-06-28 12:36:27.132000000 +0200
@@ -327,7 +327,7 @@
"boolean (string, map)"
),
"validate_help" => Ops.add(
- _("The remote IP address is invalid.") + "\n",
+ Ops.add(_("The remote IP address is invalid."), "\n"),
IP.Valid4
)
},
diff -ur result/network/src/include/network/modem/dialogs.rb result-bck/network/src/include/network/modem/dialogs.rb
--- result/network/src/include/network/modem/dialogs.rb 2013-06-28 14:05:01.956000000 +0200
+++ result-bck/network/src/include/network/modem/dialogs.rb 2013-06-28 12:36:27.064000000 +0200
@@ -49,14 +49,26 @@
)
}
caption = _("Modem Parameters")
- helptext = (((_("<p>Enter all modem configuration values.</p>") + _(
- "<p><b>Modem Device</b> specifies to which port your modem is connected. ttyS0,\nttyS1, etc., refer to serial ports and usually correspond to COM1, COM2, etc.,\nin DOS/Windows. ttyACM0 and ttyACM1 refer to USB ports.</p>"
- )) + _(
- "<p>If you are on a PBX, you probably need to enter a <b>Dial Prefix</b>.\nOften, this is <i>9</i> or <i>0</i>.</p>\n"
- )) + _(
- "<p>Choose <b>Dial Mode</b> according to your phone link. Most telephone\ncompanies use <i>Tone Dial</i> as the <b>Dial Mode</b>. Check the additional\ncheck boxes to turn on your modem speaker (<i>Speaker On</i>) or for your\nmodem to wait until it detects a dial tone (<i>Detect Dial Tone</i>).</p>\n"
- )) + _(
- "<p>Press <b>Details</b> to configure the baud rate and the modem \ninitialization strings.</p>"
+ helptext = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p>Enter all modem configuration values.</p>"),
+ _(
+ "<p><b>Modem Device</b> specifies to which port your modem is connected. ttyS0,\nttyS1, etc., refer to serial ports and usually correspond to COM1, COM2, etc.,\nin DOS/Windows. ttyACM0 and ttyACM1 refer to USB ports.</p>"
+ )
+ ),
+ _(
+ "<p>If you are on a PBX, you probably need to enter a <b>Dial Prefix</b>.\nOften, this is <i>9</i> or <i>0</i>.</p>\n"
+ )
+ ),
+ _(
+ "<p>Choose <b>Dial Mode</b> according to your phone link. Most telephone\ncompanies use <i>Tone Dial</i> as the <b>Dial Mode</b>. Check the additional\ncheck boxes to turn on your modem speaker (<i>Speaker On</i>) or for your\nmodem to wait until it detects a dial tone (<i>Detect Dial Tone</i>).</p>\n"
+ )
+ ),
+ _(
+ "<p>Press <b>Details</b> to configure the baud rate and the modem \ninitialization strings.</p>"
+ )
)
_DeviceTerm = nil
if detected == true
@@ -205,10 +217,13 @@
)
caption = _("Modem Parameter Details")
helptext = Ops.add(
- _(
- "<p><b>Baud Rate</b> is a transmission speed that tells\nhow many bits per second your computer communicates with your modem.</p>\n"
- ) + _(
- "<p>All the relevant information about <b>Init Strings</b>\nshould be in your modem manual.</p>\n"
+ Ops.add(
+ _(
+ "<p><b>Baud Rate</b> is a transmission speed that tells\nhow many bits per second your computer communicates with your modem.</p>\n"
+ ),
+ _(
+ "<p>All the relevant information about <b>Init Strings</b>\nshould be in your modem manual.</p>\n"
+ )
),
CWM.MergeHelps(widgets)
)
diff -ur result/network/src/include/network/provider/connection.rb result-bck/network/src/include/network/provider/connection.rb
--- result/network/src/include/network/provider/connection.rb 2013-06-28 14:06:39.744000000 +0200
+++ result-bck/network/src/include/network/provider/connection.rb 2013-06-28 12:36:27.156000000 +0200
@@ -86,14 +86,23 @@
end
Builtins.y2debug("FirewallChecked=%1", _FirewallChecked)
caption = _("Connection Parameters")
- helptext = ((_(
- "<p><b>Dial on Demand</b> means that the Internet\nconnection will be established automatically when data from the Internet is\nrequested. To use this feature, specify at least one <i>name server</i>. Use\nthis feature only if your Internet connection is inexpensive, because there are\nprograms that periodically request data from the Internet.</p>"
- ) + _(
- "<p>When <b>Modify DNS</b> is enabled, the <i>name server</i> will be\nchanged automatically when connected to the Internet.</p>"
- )) + _(
- "<p>If the provider does not transmit its domain name server (DNS)\nafter connecting, disable <b>Automatically Retrieve DNS</b> and\nmanually enter the DNS.</p>"
- )) + _(
- "<p><b>Name Servers</b> are required to convert hostnames\n(such as www.suse.com) to IP addresses (for example, 213.95.15.200). You only\nneed to specify the name servers if you enable dial on demand or\ndisable <b>DNS Modification</b> when connected.</p>\n"
+ helptext = Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b>Dial on Demand</b> means that the Internet\nconnection will be established automatically when data from the Internet is\nrequested. To use this feature, specify at least one <i>name server</i>. Use\nthis feature only if your Internet connection is inexpensive, because there are\nprograms that periodically request data from the Internet.</p>"
+ ),
+ _(
+ "<p>When <b>Modify DNS</b> is enabled, the <i>name server</i> will be\nchanged automatically when connected to the Internet.</p>"
+ )
+ ),
+ _(
+ "<p>If the provider does not transmit its domain name server (DNS)\nafter connecting, disable <b>Automatically Retrieve DNS</b> and\nmanually enter the DNS.</p>"
+ )
+ ),
+ _(
+ "<p><b>Name Servers</b> are required to convert hostnames\n(such as www.suse.com) to IP addresses (for example, 213.95.15.200). You only\nneed to specify the name servers if you enable dial on demand or\ndisable <b>DNS Modification</b> when connected.</p>\n"
+ )
)
if type == "modem"
helptext = Ops.add(
diff -ur result/network/src/include/network/provider/helps.rb result-bck/network/src/include/network/provider/helps.rb
--- result/network/src/include/network/provider/helps.rb 2013-06-28 14:06:48.020000000 +0200
+++ result-bck/network/src/include/network/provider/helps.rb 2013-06-28 12:36:27.156000000 +0200
@@ -9,34 +9,56 @@
def initialize_network_provider_helps(include_target)
textdomain "network"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing Provider\nConfiguration</big></b><br>Please wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting the Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <B>Abort</B> now.</p>\n"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing Provider\nConfiguration</big></b><br>Please wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting the Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <B>Abort</B> now.</p>\n"
+ )
),
- "write" => _(
- "<p><b><big>Saving Provider\nConfiguration</big></b><br>Please wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort saving by pressing <b>Abort</b>.</p>\n"
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving Provider\nConfiguration</big></b><br>Please wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort saving by pressing <b>Abort</b>.</p>\n"
+ )
),
- "summary" => (_(
- "<p><b><big>Provider Setup</big></b><br>\nConfigure your provider here.<br></p>\n"
- ) + _(
- "<p><b><big>Adding a Provider:</big></b><br>\nChoose a provider from the list of available providers\nthen press <b>Edit</b>.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting:</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which\nto change the configuration opens.</p>\n"
+ "summary" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Provider Setup</big></b><br>\nConfigure your provider here.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding a Provider:</big></b><br>\nChoose a provider from the list of available providers\nthen press <b>Edit</b>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting:</big></b><br>\nIf you press <b>Edit</b>, an additional dialog in which\nto change the configuration opens.</p>\n"
+ )
),
- "overview" => (_(
- "<p><b><big>Provider Overview</big></b><br>\nObtain an overview of installed providers. Additionally,\nedit their configurations.<br></p>\n"
- ) + _(
- "<p><b><big>Adding a Provider:</big></b><br>\nPress <b>Add</b> to configure a new provider manually.</p>\n"
- )) + _(
- "<p><b><big>Editing or Deleting:</big></b><br>\nChoose a provider to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> as desired.</p>\n"
+ "overview" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Provider Overview</big></b><br>\nObtain an overview of installed providers. Additionally,\nedit their configurations.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding a Provider:</big></b><br>\nPress <b>Add</b> to configure a new provider manually.</p>\n"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting:</big></b><br>\nChoose a provider to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> as desired.</p>\n"
+ )
),
- "providers" => (_("<p>Select the appropriate <b>provider</b>.</p>") + _(
- "<p>Choose the country or region where you are\nlocated then choose one of the listed providers.</p>"
- )) + _(
- "<p>Use <b>New</b> to add a provider not in the list.</p>"
+ "providers" => Ops.add(
+ Ops.add(
+ _("<p>Select the appropriate <b>provider</b>.</p>"),
+ _(
+ "<p>Choose the country or region where you are\nlocated then choose one of the listed providers.</p>"
+ )
+ ),
+ _("<p>Use <b>New</b> to add a provider not in the list.</p>")
),
"type" => _("<p>Choose one of the available provider types.</p>")
}
diff -ur result/network/src/include/network/provider/provider.rb result-bck/network/src/include/network/provider/provider.rb
--- result/network/src/include/network/provider/provider.rb 2013-06-28 14:06:50.280000000 +0200
+++ result-bck/network/src/include/network/provider/provider.rb 2013-06-28 12:36:27.156000000 +0200
@@ -183,13 +183,16 @@
}
username2tonline.call if Builtins.issubstring(uimode, "T-Online")
caption = _("Provider Parameters")
- helptext = _(
- "<p>Configure access to your Internet provider. If you have\nselected your provider from the list, these values are provided.</p>\n"
- ) + ((type == "dsl") ? _(
- "<p>Enter a <b>Provider Name</b> for the provider.</p>"
- ) : _(
- "<p>Enter a <b>Provider Name</b> for the provider and a <b>Phone Number</b>\nto access your provider.</p>"
- ))
+ helptext = Ops.add(
+ _(
+ "<p>Configure access to your Internet provider. If you have\nselected your provider from the list, these values are provided.</p>\n"
+ ),
+ (type == "dsl") ? _(
+ "<p>Enter a <b>Provider Name</b> for the provider.</p>"
+ ) : _(
+ "<p>Enter a <b>Provider Name</b> for the provider and a <b>Phone Number</b>\nto access your provider.</p>"
+ )
+ )
if type == "isdn"
helptext = Ops.add(
helptext,
diff -ur result/network/src/include/network/provider/texts.rb result-bck/network/src/include/network/provider/texts.rb
--- result/network/src/include/network/provider/texts.rb 2013-06-28 14:06:35.496000000 +0200
+++ result-bck/network/src/include/network/provider/texts.rb 2013-06-28 12:36:27.156000000 +0200
@@ -9,22 +9,35 @@
def initialize_network_provider_texts(include_target)
textdomain "network"
@TEXTS = {
- "kamp-dsl" => _("<p>Access to Kamp DSL.</p>") + _(
- "<p>In the <b>User Name</b> field, replace the blank space\n(after the <b>/</b>) with your Kamp login. Then enter your password\nand click <b>Next</b>. Contact your provider if you have difficulties.</p>\n"
+ "kamp-dsl" => Ops.add(
+ _("<p>Access to Kamp DSL.</p>"),
+ _(
+ "<p>In the <b>User Name</b> field, replace the blank space\n(after the <b>/</b>) with your Kamp login. Then enter your password\nand click <b>Next</b>. Contact your provider if you have difficulties.</p>\n"
+ )
),
- "aol-dsl" => _("<p>Access AOL-DSL.</p>") + _(
- "<p>In the <b>User Name</b> field, replace the blank space (before\nthe <b>@</b>) with your AOL login. Then enter your password and click <b>Next</b>.\nIf you are a new AOL customer and want to dial up for the first time, you need\nto enter your AOL PIN number once. If you have a Windows system, you can enter\nthe PIN in the AOL dial-up software. If not, call the AOL hot line and request\nthe AOL staff to enter the PIN number for you.</p>\n"
+ "aol-dsl" => Ops.add(
+ _("<p>Access AOL-DSL.</p>"),
+ _(
+ "<p>In the <b>User Name</b> field, replace the blank space (before\nthe <b>@</b>) with your AOL login. Then enter your password and click <b>Next</b>.\nIf you are a new AOL customer and want to dial up for the first time, you need\nto enter your AOL PIN number once. If you have a Windows system, you can enter\nthe PIN in the AOL dial-up software. If not, call the AOL hot line and request\nthe AOL staff to enter the PIN number for you.</p>\n"
+ )
),
- "einsundeins-dsl" => _("<p>Access to Kamp 1&1 DSL.</p>") + _(
- "<p>In the <b>User Name</b> field, replace the blank space (after\nthe <b>/</b>) with your 1&1 login. Then enter your password and click <b>Next</b>.\nContact your provider if you have difficulties.</p>\n"
+ "einsundeins-dsl" => Ops.add(
+ _("<p>Access to Kamp 1&1 DSL.</p>"),
+ _(
+ "<p>In the <b>User Name</b> field, replace the blank space (after\nthe <b>/</b>) with your 1&1 login. Then enter your password and click <b>Next</b>.\nContact your provider if you have difficulties.</p>\n"
+ )
),
- "eggenet-dsl" => _("<p>Access to Kamp Eggenet DSL.</p>") + _(
- "<p>Enter your password and click <b>Next</b>.\nContact your provider if you have difficulties.</p>\n"
+ "eggenet-dsl" => Ops.add(
+ _("<p>Access to Kamp Eggenet DSL.</p>"),
+ _(
+ "<p>Enter your password and click <b>Next</b>.\nContact your provider if you have difficulties.</p>\n"
+ )
),
- "tonline-dsl-business" => _(
- "<p>Access to Kamp T-Online Business DSL.</p>"
- ) + _(
- "<p>In the <b>User Name</b> field, replace the blank space (after\nthe <b>/</b>) with your T-Online Business login. Then enter your password and\nclick <b>Next</b>. Contact your provider if you have difficulties.</p>\n"
+ "tonline-dsl-business" => Ops.add(
+ _("<p>Access to Kamp T-Online Business DSL.</p>"),
+ _(
+ "<p>In the <b>User Name</b> field, replace the blank space (after\nthe <b>/</b>) with your T-Online Business login. Then enter your password and\nclick <b>Next</b>. Contact your provider if you have difficulties.</p>\n"
+ )
)
}
end
diff -ur result/network/src/include/network/routines.rb result-bck/network/src/include/network/routines.rb
--- result/network/src/include/network/routines.rb 2013-06-28 14:06:15.804000000 +0200
+++ result-bck/network/src/include/network/routines.rb 2013-06-28 12:36:27.048000000 +0200
@@ -73,7 +73,7 @@
Builtins.y2debug("Checking packages: %1", packages)
Yast.import("Package")
return :next if Package.InstalledAll(packages)
- text = _("These packages need to be installed:") + "<p>"
+ text = Ops.add(_("These packages need to be installed:"), "<p>")
Builtins.foreach(packages) { |l|
text = Ops.add(text, Builtins.sformat("%1<br>", l))
}
@@ -87,9 +87,12 @@
break
end
if !Popup.YesNo(
- _(
- "The required packages are not installed.\nThe configuration will be aborted.\n\nTry again?\n"
- ) + "\n"
+ Ops.add(
+ _(
+ "The required packages are not installed.\nThe configuration will be aborted.\n\nTry again?\n"
+ ),
+ "\n"
+ )
)
break
end
diff -ur result/network/src/include/network/services/dns.rb result-bck/network/src/include/network/services/dns.rb
--- result/network/src/include/network/services/dns.rb 2013-06-28 14:04:54.372000000 +0200
+++ result-bck/network/src/include/network/services/dns.rb 2013-06-28 12:36:27.060000000 +0200
@@ -46,7 +46,7 @@
"boolean (string, map)"
),
"validate_help" => Ops.add(
- _("The hostname is invalid.") + "\n",
+ Ops.add(_("The hostname is invalid."), "\n"),
Hostname.ValidHost
)
},
@@ -69,7 +69,7 @@
"boolean (string, map)"
),
"validate_help" => Ops.add(
- _("The domain name is invalid.") + "\n",
+ Ops.add(_("The domain name is invalid."), "\n"),
Hostname.ValidDomain
)
},
@@ -136,7 +136,7 @@
"boolean (string, map)"
),
"validate_help" => Ops.add(
- _("The IP address of the name server is invalid.") + "\n",
+ Ops.add(_("The IP address of the name server is invalid."), "\n"),
IP.Valid4
)
},
diff -ur result/network/src/include/network/services/host.rb result-bck/network/src/include/network/services/host.rb
--- result/network/src/include/network/services/host.rb 2013-06-28 14:04:59.056000000 +0200
+++ result-bck/network/src/include/network/services/host.rb 2013-06-28 12:36:27.060000000 +0200
@@ -22,7 +22,10 @@
def HostSystemPopup(host, delete)
return true if !Builtins.contains(Host.GetSystemHosts, host)
- text = Builtins.sformat(_("The host %1 is a system host.") + "\n", host)
+ text = Builtins.sformat(
+ Ops.add(_("The host %1 is a system host."), "\n"),
+ host
+ )
if delete
text = Ops.add(text, _("Really delete it?"))
else
@@ -39,8 +42,11 @@
def HostsMainDialog(standalone)
caption = _("Host Configuration")
- help = _("<p>The hosts can be set up in this dialog.</p>") + _(
- "<p>Enter a host <b>IP Address</b>, a <b>Hostname</b>, and optional\n<b>Host Aliases</b>, separated by spaces.</p>\n"
+ help = Ops.add(
+ _("<p>The hosts can be set up in this dialog.</p>"),
+ _(
+ "<p>Enter a host <b>IP Address</b>, a <b>Hostname</b>, and optional\n<b>Host Aliases</b>, separated by spaces.</p>\n"
+ )
)
max = 0
table_items = []
@@ -359,7 +365,10 @@
if !Hostname.CheckFQ(Punycode.EncodeDomainName(val))
UI.SetFocus(Id(:name))
Popup.Error(
- Ops.add(_("The hostname is invalid.") + "\n", Hostname.ValidFQ)
+ Ops.add(
+ Ops.add(_("The hostname is invalid."), "\n"),
+ Hostname.ValidFQ
+ )
)
next
end
@@ -375,7 +384,7 @@
Popup.Error(
Builtins.sformat(
Ops.add(
- _("Alias name \"%1\" is invalid.") + "\n",
+ Ops.add(_("Alias name \"%1\" is invalid."), "\n"),
Hostname.ValidFQ
),
Ops.index(vals, 0, "")
diff -ur result/network/src/modules/DSL.rb result-bck/network/src/modules/DSL.rb
--- result/network/src/modules/DSL.rb 2013-06-28 14:04:26.504000000 +0200
+++ result-bck/network/src/modules/DSL.rb 2013-06-28 12:36:26.984000000 +0200
@@ -316,7 +316,12 @@
sum = BuildSummary("dsl", @Hardware, split, false)
return deep_copy(sum) if @HWDetected != true
hwdet = Summary.DevicesList(
- [("<li>" + _("Unknown (PPPoE-style) DSL Device Detected")) + "</li>"]
+ [
+ Ops.add(
+ Ops.add("<li>", _("Unknown (PPPoE-style) DSL Device Detected")),
+ "</li>"
+ )
+ ]
)
Builtins.y2milestone("hwdet=%1", @HWDetected)
Builtins.y2milestone("sum=%1", sum)
diff -ur result/network/src/modules/Lan.rb result-bck/network/src/modules/Lan.rb
--- result/network/src/modules/Lan.rb 2013-06-28 14:04:40.308000000 +0200
+++ result-bck/network/src/modules/Lan.rb 2013-06-28 12:36:26.984000000 +0200
@@ -520,7 +520,7 @@
)
)
UI.SetFocus(Id(:ok))
- ret = UI.TimeoutUserInput(10 * 1000)
+ ret = UI.TimeoutUserInput(Ops.multiply(10, 1000))
if ret == :ok
Builtins.y2internal(
"Restarting network because of bridged proposal"
diff -ur result/network/src/modules/SuSEFirewall4Network.rb result-bck/network/src/modules/SuSEFirewall4Network.rb
--- result/network/src/modules/SuSEFirewall4Network.rb 2013-06-28 14:04:15.204000000 +0200
+++ result-bck/network/src/modules/SuSEFirewall4Network.rb 2013-06-28 12:36:26.952000000 +0200
@@ -41,9 +41,10 @@
Builtins.foreach(SuSEFirewall.GetKnownFirewallZones) { |zone_shortname|
zone_name = Ops.add(
SuSEFirewall.GetZoneFullName(zone_shortname),
- ((zone_shortname == "INT") && !protected_from_internal) ? (" " + _(
- "(Unprotected)"
- )) : ""
+ ((zone_shortname == "INT") && !protected_from_internal) ? Ops.add(
+ " ",
+ _("(Unprotected)")
+ ) : ""
)
list_items = Builtins.add(list_items, [zone_shortname, zone_name])
}
diff -ur result/network/testsuite/tests/include.rb result-bck/network/testsuite/tests/include.rb
--- result/network/testsuite/tests/include.rb 2013-06-28 14:08:39.452000000 +0200
+++ result-bck/network/testsuite/tests/include.rb 2013-06-28 12:36:29.664000000 +0200
@@ -1105,16 +1105,28 @@
),
HSpacing(6)
)
- helptext = (((_(
- "<p>Enter the <b>Port Name</b> for this interface (case-sensitive).</p>"
- ) + _(
- "<p>Enter any additional <b>Options</b> for this interface (separated by spaces).</p>"
- )) + _(
- "<p>Select <b>Enable IPA Takeover</b> if IP address takeover should be enabled for this interface.</p>"
- )) + _(
- "<p>Select <b>Enable Layer 2 Support</b> if this card has been configured with layer 2 support.</p>"
- )) + _(
- "<p>Enter the <b>Layer 2 MAC Address</b> if this card has been configured with layer 2 support.</p>"
+ helptext = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Enter the <b>Port Name</b> for this interface (case-sensitive).</p>"
+ ),
+ _(
+ "<p>Enter any additional <b>Options</b> for this interface (separated by spaces).</p>"
+ )
+ ),
+ _(
+ "<p>Select <b>Enable IPA Takeover</b> if IP address takeover should be enabled for this interface.</p>"
+ )
+ ),
+ _(
+ "<p>Select <b>Enable Layer 2 Support</b> if this card has been configured with layer 2 support.</p>"
+ )
+ ),
+ _(
+ "<p>Enter the <b>Layer 2 MAC Address</b> if this card has been configured with layer 2 support.</p>"
+ )
)
end
if drvtype == "lcs"
@@ -1165,8 +1177,9 @@
),
HSpacing(6)
)
- helptext = _("<p>Choose the <b>Port Number</b> for this interface.</p>") + _(
- "<p>Specify the <b>LANCMD Time-Out</b> for this interface.</p>"
+ helptext = Ops.add(
+ _("<p>Choose the <b>Port Number</b> for this interface.</p>"),
+ _("<p>Specify the <b>LANCMD Time-Out</b> for this interface.</p>")
)
end
ctcitems = [
diff -ur result/nfs-client/src/clients/nfs.rb result-bck/nfs-client/src/clients/nfs.rb
--- result/nfs-client/src/clients/nfs.rb 2013-06-28 13:56:47.600000000 +0200
+++ result-bck/nfs-client/src/clients/nfs.rb 2013-06-28 12:36:11.192000000 +0200
@@ -95,10 +95,10 @@
CommandLine.Print(
String.TextTable(
[
- _("Server") + " ",
- _("Remote File System") + " ",
- _("Mount Point") + " ",
- _("Options") + " "
+ Ops.add(_("Server"), " "),
+ Ops.add(_("Remote File System"), " "),
+ Ops.add(_("Mount Point"), " "),
+ Ops.add(_("Options"), " ")
],
items,
{}
diff -ur result/nfs-client/src/include/nfs/ui.rb result-bck/nfs-client/src/include/nfs/ui.rb
--- result/nfs-client/src/include/nfs/ui.rb 2013-06-28 13:56:38.488000000 +0200
+++ result-bck/nfs-client/src/include/nfs/ui.rb 2013-06-28 12:36:11.188000000 +0200
@@ -28,12 +28,18 @@
@fw_settings
)
@modify_line = {}
- @help_text1 = (_(
- "<p>The table contains all directories \nexported from remote servers and mounted locally via NFS (NFS shares).</p>"
- ) + _(
- "<p>Each NFS share is identified by remote NFS server address and\nexported directory, local directory where the remote directory is mounted, \nNFS type (either plain nfs or nfsv4) and mount options. For further information \nabout mounting NFS and mount options, refer to <tt>man nfs.</tt></p>"
- )) + _(
- "<p>To mount a new NFS share, click <B>Add</B>. To change the configuration of\na currently mounted share, click <B>Edit</B>. Remove and unmount a selected\nshare with <B>Delete</B>.</p>\n"
+ @help_text1 = Ops.add(
+ Ops.add(
+ _(
+ "<p>The table contains all directories \nexported from remote servers and mounted locally via NFS (NFS shares).</p>"
+ ),
+ _(
+ "<p>Each NFS share is identified by remote NFS server address and\nexported directory, local directory where the remote directory is mounted, \nNFS type (either plain nfs or nfsv4) and mount options. For further information \nabout mounting NFS and mount options, refer to <tt>man nfs.</tt></p>"
+ )
+ ),
+ _(
+ "<p>To mount a new NFS share, click <B>Add</B>. To change the configuration of\na currently mounted share, click <B>Edit</B>. Remove and unmount a selected\nshare with <B>Delete</B>.</p>\n"
+ )
)
@help_text2 = Ops.add(
_(
@@ -399,11 +405,11 @@
Id(:fstable),
Opt(:notify, :immediate),
Header(
- _("Server") + " ",
- _("Remote Directory") + " ",
- _("Mount Point") + " ",
+ Ops.add(_("Server"), " "),
+ Ops.add(_("Remote Directory"), " "),
+ Ops.add(_("Mount Point"), " "),
_("NFS Type"),
- _("Options") + " "
+ Ops.add(_("Options"), " ")
),
FstabTableItems(@nfs_entries)
),
diff -ur result/nfs-server/src/include/nfs_server/ui.rb result-bck/nfs-server/src/include/nfs_server/ui.rb
--- result/nfs-server/src/include/nfs_server/ui.rb 2013-06-28 14:18:01.480000000 +0200
+++ result-bck/nfs-server/src/include/nfs_server/ui.rb 2013-06-28 12:35:57.628000000 +0200
@@ -461,7 +461,10 @@
Table(
Id(:allowedtab),
Opt(:notify, :immediate),
- Header(_("Host Wild Card") + " ", _("Options") + " "),
+ Header(
+ Ops.add(_("Host Wild Card"), " "),
+ Ops.add(_("Options"), " ")
+ ),
[]
)
)
diff -ur result/nis-client/src/include/nis/ui.rb result-bck/nis-client/src/include/nis/ui.rb
--- result/nis-client/src/include/nis/ui.rb 2013-06-28 14:24:15.340000000 +0200
+++ result-bck/nis-client/src/include/nis/ui.rb 2013-06-28 12:35:47.580000000 +0200
@@ -152,10 +152,13 @@
firewall_layout = Convert.to_term(
Ops.index(firewall_widget, "custom_widget", VBox())
)
- help_text = _(
- "<p>Enter your NIS domain, such as example.com,\n and the NIS server's address, such as nis.example.com or 10.20.1.1.</p>\n"
- ) + _(
- "<p>Select the way how the NIS configuration will be modified. Normally, it is\nhandled by the netconfig script, which merges the data statically defined here\nwith dynamically obtained data (e.g. from DHCP client, NetworkManager\netc.). This is the Default Policy and sufficient for most configurations. \nBy choosing Only Manual Changes, netconfig will no longer be allowed to modify\nthe configuration. You can, however, edit the file manually. By choosing\nCustom Policy, you can specify a custom policy string, which consists of a\nspace-separated list of interface names, including wildcards, with\nSTATIC/STATIC_FALLBACK as predefined special values. For more information, see\nthe netconfig manual page.</p>\n"
+ help_text = Ops.add(
+ _(
+ "<p>Enter your NIS domain, such as example.com,\n and the NIS server's address, such as nis.example.com or 10.20.1.1.</p>\n"
+ ),
+ _(
+ "<p>Select the way how the NIS configuration will be modified. Normally, it is\nhandled by the netconfig script, which merges the data statically defined here\nwith dynamically obtained data (e.g. from DHCP client, NetworkManager\netc.). This is the Default Policy and sufficient for most configurations. \nBy choosing Only Manual Changes, netconfig will no longer be allowed to modify\nthe configuration. You can, however, edit the file manually. By choosing\nCustom Policy, you can specify a custom policy string, which consists of a\nspace-separated list of interface names, including wildcards, with\nSTATIC/STATIC_FALLBACK as predefined special values. For more information, see\nthe netconfig manual page.</p>\n"
+ )
)
help_text = Ops.add(
help_text,
diff -ur result/ntp-client/src/include/ntp-client/helps.rb result-bck/ntp-client/src/include/ntp-client/helps.rb
--- result/ntp-client/src/include/ntp-client/helps.rb 2013-06-28 14:12:50.924000000 +0200
+++ result-bck/ntp-client/src/include/ntp-client/helps.rb 2013-06-28 12:36:00.684000000 +0200
@@ -9,15 +9,21 @@
def initialize_ntp_client_helps(include_target)
textdomain "ntp-client"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing NTP Client Configuration</big></b><br>\nPlease wait...<br></p>"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>"
- ),
- "write" => _(
- "<p><b><big>Saving NTP Client Configuration</big></b><br>\nPlease wait...<br></p>"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog will inform you whether it is safe to do so.</p>"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing NTP Client Configuration</big></b><br>\nPlease wait...<br></p>"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving NTP Client Configuration</big></b><br>\nPlease wait...<br></p>"
+ ),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog will inform you whether it is safe to do so.</p>"
+ )
),
"start" => _(
"<p><b><big>Start NTP Daemon</big></b><br>\nSelect whether to start the NTP daemon now and on every system boot. \nThe NTP daemon resolves host names when initializing. Your\nnetwork connection must be started before the NTP daemon starts.</p>\n"
@@ -31,10 +37,13 @@
"config_dhcp" => _(
"<p><b><big>Configuring via DHCP</big></b><br>\nTo retrieve the information about NTP servers via the DHCP protocol from\nyour network server instead of setting them manually, set\n<b>Configure NTP Daemon via DHCP</b>. Ask your network administrator if\nthe information about NTP servers is provided by the DHCP server.</p>"
),
- "overview" => _(
- "<p><b><big>Configured Servers</big></b><br>\nTo adjust NTP servers, peers, local clocks, and NTP broadcasting,\nselect the appropriate line and click <b>Edit</b>. To add a new synchronization\npeer, click <b>Add</b>. To delete an existing synchronization peer,\nselect it and click <b>Delete</b>.</p>"
- ) + _(
- "<p><b><big>Display Log</big></b></p>\n<p>To view the logs of the NTP daemon, click <b>Display Log</b>.</p>\n"
+ "overview" => Ops.add(
+ _(
+ "<p><b><big>Configured Servers</big></b><br>\nTo adjust NTP servers, peers, local clocks, and NTP broadcasting,\nselect the appropriate line and click <b>Edit</b>. To add a new synchronization\npeer, click <b>Add</b>. To delete an existing synchronization peer,\nselect it and click <b>Delete</b>.</p>"
+ ),
+ _(
+ "<p><b><big>Display Log</big></b></p>\n<p>To view the logs of the NTP daemon, click <b>Display Log</b>.</p>\n"
+ )
),
"complex_button" => _(
"<p><b><big>Advanced configuration</big></b><br>\nTo configure this host to synchronize against multiple remote hosts or against\na locally connected clock, use <b>Advanced Configuration</b>."
@@ -51,12 +60,18 @@
"fudge_button" => _(
"<p><b><big>Driver Calibration</big></b><br>\nTo calibrate the clock driver, click <b>Driver Calibration</b>.</p>"
),
- "server_address" => (_(
- "<p><b><big>Address of the NTP Server</big></b><br>\nTo set the address of the NTP server, use the <b>Address</b> entry.\nTo find an NTP server, ask your network administrator or Internet service\nprovider.</p>"
- ) + _(
- "<p><b><big>Selecting a Server</big></b><br>\nTo select an NTP server from those found in the local network\nor from the list of known NTP servers, click <b>Select</b> and\nchoose between <b>Local NTP Server</b> and <b>Public NTP Server</b>.</p>"
- )) + _(
- "<p><b><big>Testing Server Accessibility</big></b><br>\nTo test if the selected server is up and responds properly,\nclick <b>Test</b>.</p>"
+ "server_address" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Address of the NTP Server</big></b><br>\nTo set the address of the NTP server, use the <b>Address</b> entry.\nTo find an NTP server, ask your network administrator or Internet service\nprovider.</p>"
+ ),
+ _(
+ "<p><b><big>Selecting a Server</big></b><br>\nTo select an NTP server from those found in the local network\nor from the list of known NTP servers, click <b>Select</b> and\nchoose between <b>Local NTP Server</b> and <b>Public NTP Server</b>.</p>"
+ )
+ ),
+ _(
+ "<p><b><big>Testing Server Accessibility</big></b><br>\nTo test if the selected server is up and responds properly,\nclick <b>Test</b>.</p>"
+ )
),
"paddress" => _(
"<p><b><big>Address</big></b><br>\nTo set the address of the host with which to synchronize mutually,\nuse <b>Address</b>.</p>"
@@ -73,18 +88,33 @@
"restrict" => _(
"<p><b><big>Access Control Options</big></b><br>\nDefine the access control flags (<b><tt>restrict</tt></b> directive in\n<i>/etc/ntp.conf</i>) for this server, indicating which types of actions the remote\nhost can perform on your NTP daemon. By default, it is set to <i>notrap\nnomodify noquery</i>. This option is only available if you have checked the\n<b>Restrict NTP Service to Configured Servers Only</b> option in\n<b>Security Settings</b>.</p>\n"
),
- "peer_types" => ((((_(
- "<p><b><big>Synchronization Peer Type</big></b><br>\nSelect the kind of synchronization peer to add here.</p>"
- ) + _(
- "<p>To add an NTP server to which to synchronize,\nselect <b>Server</b>.</p>"
- )) + _(
- "<p>To add an NTP peer to synchronize mutually, select\n<b>Peer</b>.</p>"
- )) + _(
- "<p>To configure a local clock connected directly to your computer,\nselect <b>Radio Clock</b>.</p>"
- )) + _(
- "<p>To broadcast time information through your network, select\n<b>Outgoing Broadcast</b>.</p>"
- )) + _(
- "<p>To accept NTP packets broadcasted by other hosts on the network\nand use them for setting local time, select <b>Incoming Broadcast<b>.</p>"
+ "peer_types" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Synchronization Peer Type</big></b><br>\nSelect the kind of synchronization peer to add here.</p>"
+ ),
+ _(
+ "<p>To add an NTP server to which to synchronize,\nselect <b>Server</b>.</p>"
+ )
+ ),
+ _(
+ "<p>To add an NTP peer to synchronize mutually, select\n<b>Peer</b>.</p>"
+ )
+ ),
+ _(
+ "<p>To configure a local clock connected directly to your computer,\nselect <b>Radio Clock</b>.</p>"
+ )
+ ),
+ _(
+ "<p>To broadcast time information through your network, select\n<b>Outgoing Broadcast</b>.</p>"
+ )
+ ),
+ _(
+ "<p>To accept NTP packets broadcasted by other hosts on the network\nand use them for setting local time, select <b>Incoming Broadcast<b>.</p>"
+ )
),
"servers_source" => _(
"<p><big><b>Server Location</b></big>\nSelect if you want to find the NTP server in the local network or select\nthe NTP server from the list of known NTP servers.</p>"
@@ -92,10 +122,13 @@
"found_servers" => _(
"<p><big><b>Finding Server in the Local\nNetwork</b></big><br>\nTo find NTP servers in the local network using the\nService Location Protocol (SLP), click <b>Lookup</b>.\nThen select a server from the list of found servers.</p>"
),
- "servers_list" => _(
- "<p><big><b>Selecting a Public NTP Server</b></big><br>\nSelect the NTP server to use from the <b>Public NTP Servers</b> list. To display\nNTP servers only for a particular country, select it in <b>Country</b>.</p>"
- ) + _(
- "<p><big><b>Note</b></big><br>\nThe listed NTP servers may not be available from any country, but only\nfor a particular country or region.\nBefore using any NTP server from the list, ask your system administrator\nor Internet service provider if there is an NTP server closer to you and\nprefer this recommended server to any server from this list.\nYou may also see <i>http://www.eecis.udel.edu/~mills/ntp/servers.html</i>\nto find an NTP server near you.</p>"
+ "servers_list" => Ops.add(
+ _(
+ "<p><big><b>Selecting a Public NTP Server</b></big><br>\nSelect the NTP server to use from the <b>Public NTP Servers</b> list. To display\nNTP servers only for a particular country, select it in <b>Country</b>.</p>"
+ ),
+ _(
+ "<p><big><b>Note</b></big><br>\nThe listed NTP servers may not be available from any country, but only\nfor a particular country or region.\nBefore using any NTP server from the list, ask your system administrator\nor Internet service provider if there is an NTP server closer to you and\nprefer this recommended server to any server from this list.\nYou may also see <i>http://www.eecis.udel.edu/~mills/ntp/servers.html</i>\nto find an NTP server near you.</p>"
+ )
),
"selected_test" => _(
"<p><big><b>Testing Server Accessibility</b></big><br>\nTo test if the selected server responds properly, click <b>Test</b>.</p>"
@@ -107,10 +140,13 @@
end
def fudgeHelp
- return _(
- "<p><big><b>Clock Driver Calibration</b></big><br>\nThe clock driver may need to be calibrated. In this dialog, various calibration\noptions can be set. The meaning of particular options depends on the particular\ndriver. Some drivers do not use all the options.</p>"
- ) + _(
- "To learn more about available options, install the package\n<i>ntp-doc</i> and see <i>/usr/share/doc/packages/ntp-doc/html/refclock.htm</i>.</p>\n"
+ return Ops.add(
+ _(
+ "<p><big><b>Clock Driver Calibration</b></big><br>\nThe clock driver may need to be calibrated. In this dialog, various calibration\noptions can be set. The meaning of particular options depends on the particular\ndriver. Some drivers do not use all the options.</p>"
+ ),
+ _(
+ "To learn more about available options, install the package\n<i>ntp-doc</i> and see <i>/usr/share/doc/packages/ntp-doc/html/refclock.htm</i>.</p>\n"
+ )
)
end
end
diff -ur result/online-update/src/modules/OnlineUpdateCallbacks.rb result-bck/online-update/src/modules/OnlineUpdateCallbacks.rb
--- result/online-update/src/modules/OnlineUpdateCallbacks.rb 2013-06-28 14:24:57.784000000 +0200
+++ result-bck/online-update/src/modules/OnlineUpdateCallbacks.rb 2013-06-28 12:35:51.804000000 +0200
@@ -436,7 +436,10 @@
if !mgr_ok
Report.LongWarning(
Ops.add(
- _("There was an error in the repository initialization.") + "\n",
+ Ops.add(
+ _("There was an error in the repository initialization."),
+ "\n"
+ ),
Pkg.LastError
)
)
diff -ur result/online-update-configuration/src/clients/online_update_configuration.rb result-bck/online-update-configuration/src/clients/online_update_configuration.rb
--- result/online-update-configuration/src/clients/online_update_configuration.rb 2013-06-28 14:24:54.952000000 +0200
+++ result-bck/online-update-configuration/src/clients/online_update_configuration.rb 2013-06-28 12:36:24.872000000 +0200
@@ -187,8 +187,9 @@
WFM.call("inst_suse_register")
else
Popup.Error(
- (_("The registration module is not available.") + "\n") + _(
- "Please install yast2-registration and try again."
+ Ops.add(
+ Ops.add(_("The registration module is not available."), "\n"),
+ _("Please install yast2-registration and try again.")
)
)
end
diff -ur result/openvas-security-scanner/src/include/openvas-security-scanner/helps.rb result-bck/openvas-security-scanner/src/include/openvas-security-scanner/helps.rb
--- result/openvas-security-scanner/src/include/openvas-security-scanner/helps.rb 2013-06-28 14:25:16.928000000 +0200
+++ result-bck/openvas-security-scanner/src/include/openvas-security-scanner/helps.rb 2013-06-28 12:36:00.444000000 +0200
@@ -9,103 +9,304 @@
def initialize_openvas_security_scanner_helps(include_target)
textdomain "openvas-security-scanner"
@HELPS = {
- "configuration" => (((((((((((((((((((((((((((((((((((((((((((("<p><b><big>" + _(
- "OpenVAS Security Scanner Configuration"
- )) + "</big></b>") + "<p><b>") + _(
- "Disable OpenVAS Security Scanner"
- )) + "</b>: ") + _(
- "Select \"Disable OpenVAS Security Scanner\" to switch off the OpenVAS Security Scanner Service. "
- )) + _(
- "The datastores for Network Vulnerabilities (NVTs) will be deleted. This might take some time."
- )) + "</p><p><b>") + _(
- "Enable and use OpenVAS NVT Feed"
- )) + "</b>: ") + _(
- "Select \"Enable and use OpenVAS NVT Feed\" to switch on the OpenVAS Security Scanner with the OpenVAS NVT Feed. "
- )) + _(
- "The free-of-charge OpenVAS NVT Feed delivers the latest Network Vulnerability Tests (NVTs) with volunteer-based Quality Assurance. The NVT synchronisation uses RSYNC protocol. Please visit <tt>http://www.openvas.org/</tt> for more information."
- )) + _(
- "Previous NVT datastores will be deleted before the initial synchronization is executed. This might take some time. "
- )) + "</p><p><b>") + _(
- "Enable and use Greenbone Security Feed"
- )) + "</b>: ") + _(
- "Select \"Enable and use Greenbone Security Feed\" to switch on the OpenVAS Security Scanner with the Greenbone Security Feed.<br>"
- )) + _(
- "Note that this option is only available if you obtained and activated an access key for the Greenbone Security Feed. "
- )) + _(
- "The subscription-based Greenbone Security Feed assures Network Vulnerability Tests (NVTs) of consistent quality, high availability and professional support. "
- )) + _(
- "The NVT synchronisation uses SSH-secured RSYNC protocol. "
- )) + _(
- "Previous NVT datastores will be deleted. This might take some time."
- )) + "</p><p><b>") + _(
- "Activate Greenbone Security Feed Subscription"
- )) + "</b>: ") + _(
- "To obtain a access key for the Greenbone Security Feed, please visit <tt>http://greenbone.net/order/</tt>. "
- )) + _(
- "Click on \"Activate Greenbone Security Feed\" and enter the path to the obtained access key files. "
- )) + _(
- "The access key and synchronization script will then be installed and you can choose the <b>\"Use Greenbone Security Feed\"</b> option to use the OpenVAS Security Scanner with this feed."
- )) + "</p><p><b>") + _(
- "Deactivate Greenbone Security Feed Subscription"
- )) + "</b>: ") + _(
- "This option is only available if you have previously activated your Greenbone Security Feed Subscription. "
- )) + _(
- "If you select this option, previous NVT datastores, NVT selections and other feed related files will be deleted. This might take some time."
- )) + "</p><p><b>") + _(
- "Synchronize with Feed now"
- )) + "</b>: ") + _(
- "Will immediately start a synchronize with the selected feed. Note that this option is not available if you just changed the feed. "
- )) + "</p><p><b>") + _(
- "Do a daily feed synchronization"
- )) + "</b>: ") + _(
- "Will enable the daily feed synchronization with a cron job, if a feed was chosen and the service is enabled. Note that the openvas scanner service has to be restarted to be able to use the newly fetched NVTs."
- )) + "</p><p><b>") + _(
- "Next"
- )) + "</b>: ") + _(
- "Click on \"Next\" to synchronize with a newly chosen feed."
- )) + "</p>",
- "activategsf" => (((((((("<p><b><big>" + _(
- "Activate Greenbone Security Feed"
- )) + "</big></b>") + "<p>") + _(
- "If you already have obtained an access key, provide it in full text in the text field or click on \"Import from file\" and chose the path to it."
- )) + "</p><p>") + _(
- "If you do not have an access key to the Greenbone Security Feed, please visit <tt>http://greenbone.net/order/</tt> to obtain one. "
- )) + _(
- "If you chose to provide the key in full text, the key might be base64 encoded. "
- )) + _(
- "The access key and synchronization script will then be installed and you can choose the <b>\"Use Greenbone Security Feed\"</b> option."
- )) + "</p>",
- "deactivategsf" => (((("<p><b><big>" + _(
- "Deactivate Greenbone Security Feed"
- )) + "</big></b>") + "<p>") + _(
- "The access key, the Feed synchronization script and the NVT datastores will be deleted."
- )) + "</p></p>",
- "read" => _(
- "<p><b><big>Initializing openvas-security-scanner Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _(
- "<p><b><big>Saving openvas-security-scanner Configuration</big></b><br>\nPlease wait...<br></p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
- ),
- "disableopenvas" => ((((("<p><b><big>" + _(
- "Disabling the OpenVAS Security Scanner Service"
- )) + "</big></b><br>") + "<p>") + _(
- "The service will be stopped and not start automatically after a reboot. "
- )) + _(
- "The NVT datastores will be deleted, which might take some time. Click abort to abort this action."
- )) + "</p></p>",
- "fetchfeed" => ((((((("<p><b><big>" + _("Fetching a NVT Feed")) + "</big></b><br>") + "<p>") + _(
- "Before fetching the chosen feed, "
- )) + _(
- "previous NVT datastores will be deleted, which might take some time. "
- )) + _(
- "Note that in order to synchronize with a feed, the scanner service has to be stopped. It will be restarted once the synchronization is finished. "
- )) + _(
- "Click <b>abort</b> to abort this action."
- )) + "</p></p>",
+ "configuration" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ "<p><b><big>",
+ _(
+ "OpenVAS Security Scanner Configuration"
+ )
+ ),
+ "</big></b>"
+ ),
+ "<p><b>"
+ ),
+ _(
+ "Disable OpenVAS Security Scanner"
+ )
+ ),
+ "</b>: "
+ ),
+ _(
+ "Select \"Disable OpenVAS Security Scanner\" to switch off the OpenVAS Security Scanner Service. "
+ )
+ ),
+ _(
+ "The datastores for Network Vulnerabilities (NVTs) will be deleted. This might take some time."
+ )
+ ),
+ "</p><p><b>"
+ ),
+ _(
+ "Enable and use OpenVAS NVT Feed"
+ )
+ ),
+ "</b>: "
+ ),
+ _(
+ "Select \"Enable and use OpenVAS NVT Feed\" to switch on the OpenVAS Security Scanner with the OpenVAS NVT Feed. "
+ )
+ ),
+ _(
+ "The free-of-charge OpenVAS NVT Feed delivers the latest Network Vulnerability Tests (NVTs) with volunteer-based Quality Assurance. The NVT synchronisation uses RSYNC protocol. Please visit <tt>http://www.openvas.org/</tt> for more information."
+ )
+ ),
+ _(
+ "Previous NVT datastores will be deleted before the initial synchronization is executed. This might take some time. "
+ )
+ ),
+ "</p><p><b>"
+ ),
+ _(
+ "Enable and use Greenbone Security Feed"
+ )
+ ),
+ "</b>: "
+ ),
+ _(
+ "Select \"Enable and use Greenbone Security Feed\" to switch on the OpenVAS Security Scanner with the Greenbone Security Feed.<br>"
+ )
+ ),
+ _(
+ "Note that this option is only available if you obtained and activated an access key for the Greenbone Security Feed. "
+ )
+ ),
+ _(
+ "The subscription-based Greenbone Security Feed assures Network Vulnerability Tests (NVTs) of consistent quality, high availability and professional support. "
+ )
+ ),
+ _(
+ "The NVT synchronisation uses SSH-secured RSYNC protocol. "
+ )
+ ),
+ _(
+ "Previous NVT datastores will be deleted. This might take some time."
+ )
+ ),
+ "</p><p><b>"
+ ),
+ _(
+ "Activate Greenbone Security Feed Subscription"
+ )
+ ),
+ "</b>: "
+ ),
+ _(
+ "To obtain a access key for the Greenbone Security Feed, please visit <tt>http://greenbone.net/order/</tt>. "
+ )
+ ),
+ _(
+ "Click on \"Activate Greenbone Security Feed\" and enter the path to the obtained access key files. "
+ )
+ ),
+ _(
+ "The access key and synchronization script will then be installed and you can choose the <b>\"Use Greenbone Security Feed\"</b> option to use the OpenVAS Security Scanner with this feed."
+ )
+ ),
+ "</p><p><b>"
+ ),
+ _(
+ "Deactivate Greenbone Security Feed Subscription"
+ )
+ ),
+ "</b>: "
+ ),
+ _(
+ "This option is only available if you have previously activated your Greenbone Security Feed Subscription. "
+ )
+ ),
+ _(
+ "If you select this option, previous NVT datastores, NVT selections and other feed related files will be deleted. This might take some time."
+ )
+ ),
+ "</p><p><b>"
+ ),
+ _("Synchronize with Feed now")
+ ),
+ "</b>: "
+ ),
+ _(
+ "Will immediately start a synchronize with the selected feed. Note that this option is not available if you just changed the feed. "
+ )
+ ),
+ "</p><p><b>"
+ ),
+ _("Do a daily feed synchronization")
+ ),
+ "</b>: "
+ ),
+ _(
+ "Will enable the daily feed synchronization with a cron job, if a feed was chosen and the service is enabled. Note that the openvas scanner service has to be restarted to be able to use the newly fetched NVTs."
+ )
+ ),
+ "</p><p><b>"
+ ),
+ _("Next")
+ ),
+ "</b>: "
+ ),
+ _("Click on \"Next\" to synchronize with a newly chosen feed.")
+ ),
+ "</p>"
+ ),
+ "activategsf" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ "<p><b><big>",
+ _("Activate Greenbone Security Feed")
+ ),
+ "</big></b>"
+ ),
+ "<p>"
+ ),
+ _(
+ "If you already have obtained an access key, provide it in full text in the text field or click on \"Import from file\" and chose the path to it."
+ )
+ ),
+ "</p><p>"
+ ),
+ _(
+ "If you do not have an access key to the Greenbone Security Feed, please visit <tt>http://greenbone.net/order/</tt> to obtain one. "
+ )
+ ),
+ _(
+ "If you chose to provide the key in full text, the key might be base64 encoded. "
+ )
+ ),
+ _(
+ "The access key and synchronization script will then be installed and you can choose the <b>\"Use Greenbone Security Feed\"</b> option."
+ )
+ ),
+ "</p>"
+ ),
+ "deactivategsf" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add("<p><b><big>", _("Deactivate Greenbone Security Feed")),
+ "</big></b>"
+ ),
+ "<p>"
+ ),
+ _(
+ "The access key, the Feed synchronization script and the NVT datastores will be deleted."
+ )
+ ),
+ "</p></p>"
+ ),
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing openvas-security-scanner Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving openvas-security-scanner Configuration</big></b><br>\nPlease wait...<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
+ ),
+ "disableopenvas" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ "<p><b><big>",
+ _("Disabling the OpenVAS Security Scanner Service")
+ ),
+ "</big></b><br>"
+ ),
+ "<p>"
+ ),
+ _(
+ "The service will be stopped and not start automatically after a reboot. "
+ )
+ ),
+ _(
+ "The NVT datastores will be deleted, which might take some time. Click abort to abort this action."
+ )
+ ),
+ "</p></p>"
+ ),
+ "fetchfeed" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add("<p><b><big>", _("Fetching a NVT Feed")),
+ "</big></b><br>"
+ ),
+ "<p>"
+ ),
+ _("Before fetching the chosen feed, ")
+ ),
+ _(
+ "previous NVT datastores will be deleted, which might take some time. "
+ )
+ ),
+ _(
+ "Note that in order to synchronize with a feed, the scanner service has to be stopped. It will be restarted once the synchronization is finished. "
+ )
+ ),
+ _("Click <b>abort</b> to abort this action.")
+ ),
+ "</p></p>"
+ ),
"adduser" => _(
"<p><b><big>Add User to OpenVAS Security Scanner</big></b></br>\n<p>A working installation of the OpenVAS Security Scanner has at least one openvas login registered.\nThis needs to be done just once. The login and password might not contain spaces or double dots (..).</p>\n<p><b>Login of the user</b>: Type the user login name here.</p>\n<p><b>Password for user</b>: Type the password for the user here.</p>\n<p><b>Password for user (again)</b>: Type the password for the user here, again.</p>\n</p>"
)
diff -ur result/packager/src/clients/inst_desktop.rb result-bck/packager/src/clients/inst_desktop.rb
--- result/packager/src/clients/inst_desktop.rb 2013-06-28 13:43:50.808000000 +0200
+++ result-bck/packager/src/clients/inst_desktop.rb 2013-06-28 12:36:01.080000000 +0200
@@ -44,12 +44,18 @@
@kde_blurb = _(
"KDE is a powerful and intuitive desktop\nenvironment that uses Kontact as mailer,\nDolphin as file manager, and offers\nboth Firefox and Konqueror as Web browsers.\n"
)
- @help = (_(
- "<p>Both <b>KDE</b> and <b>GNOME</b> are powerful and intuitive\ndesktop environments. They combine ease of use\nand attractive graphical interfaces with their\nown sets of perfectly integrated applications.</p>"
- ) + _(
- "<p>Choosing the default <b>GNOME</b> or <b>KDE</b> desktop\nenvironment installs a broad set of the\nmost important desktop applications on your\nsystem.</p>"
- )) + _(
- "<p>Choose <b>Other</b> then select from\nan alternative, such as a text-only system or a minimal graphical\nsystem with a basic window manager.</p>"
+ @help = Ops.add(
+ Ops.add(
+ _(
+ "<p>Both <b>KDE</b> and <b>GNOME</b> are powerful and intuitive\ndesktop environments. They combine ease of use\nand attractive graphical interfaces with their\nown sets of perfectly integrated applications.</p>"
+ ),
+ _(
+ "<p>Choosing the default <b>GNOME</b> or <b>KDE</b> desktop\nenvironment installs a broad set of the\nmost important desktop applications on your\nsystem.</p>"
+ )
+ ),
+ _(
+ "<p>Choose <b>Other</b> then select from\nan alternative, such as a text-only system or a minimal graphical\nsystem with a basic window manager.</p>"
+ )
)
@kde = VBox(
Left(
diff -ur result/packager/src/clients/inst_kickoff.rb result-bck/packager/src/clients/inst_kickoff.rb
--- result/packager/src/clients/inst_kickoff.rb 2013-06-28 13:44:23.812000000 +0200
+++ result-bck/packager/src/clients/inst_kickoff.rb 2013-06-28 12:36:01.080000000 +0200
@@ -157,7 +157,7 @@
path(".target.bash"),
Ops.add(
Ops.add(
- "/usr/lib/YaST2/bin/update_users_groups " + "'",
+ Ops.add("/usr/lib/YaST2/bin/update_users_groups ", "'"),
String.Quote(Installation.destdir)
),
"'"
@@ -243,7 +243,7 @@
Ops.add(
Ops.add(
Ops.add(
- "/bin/cat " + "'",
+ Ops.add("/bin/cat ", "'"),
String.Quote(Ops.add(tmpdir, "/mtab"))
),
"'"
diff -ur result/packager/src/clients/inst_productsources.rb result-bck/packager/src/clients/inst_productsources.rb
--- result/packager/src/clients/inst_productsources.rb 2013-06-28 13:44:15.112000000 +0200
+++ result-bck/packager/src/clients/inst_productsources.rb 2013-06-28 12:36:01.072000000 +0200
@@ -874,16 +874,21 @@
Left(Label(_("Repository Description"))),
VWeight(1, RichText(Id("addon_description"), ""))
),
- (_(
- "<p>List of default online repositories.\nClick on a repository for details.</p>\n"
- ) + (Stage.initial(
- ) ? _(
- "<p>Select the online repositories you want to use then click <b>Next</b>.</p>\n"
- ) : _(
- "<p>Select the online repositories you want to use then click <b>Finish</b>.</p>\n"
- ))) + ((@skip_already_used_repos != true) ? _(
- "<p>To remove a used repository, simply deselect it.</p>"
- ) : ""),
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>List of default online repositories.\nClick on a repository for details.</p>\n"
+ ),
+ Stage.initial ? _(
+ "<p>Select the online repositories you want to use then click <b>Next</b>.</p>\n"
+ ) : _(
+ "<p>Select the online repositories you want to use then click <b>Finish</b>.</p>\n"
+ )
+ ),
+ (@skip_already_used_repos != true) ? _(
+ "<p>To remove a used repository, simply deselect it.</p>"
+ ) : ""
+ ),
Mode.installation ? GetInstArgs.enable_back : false,
Mode.installation ? GetInstArgs.enable_next : true
)
diff -ur result/packager/src/clients/repositories.rb result-bck/packager/src/clients/repositories.rb
--- result/packager/src/clients/repositories.rb 2013-06-28 13:43:55.080000000 +0200
+++ result-bck/packager/src/clients/repositories.rb 2013-06-28 12:36:01.080000000 +0200
@@ -832,7 +832,10 @@
)
details = Pkg.LastError
Builtins.y2milestone("LastError: %1", details)
- __msg2 = (details != "") ? Ops.add(_("Details:") + "\n", details) : ""
+ __msg2 = (details != "") ? Ops.add(
+ Ops.add(_("Details:"), "\n"),
+ details
+ ) : ""
__msg2 = Ops.add(Ops.add(__msg2, "\n"), _("Try again?"))
tryagain = Popup.YesNo(Ops.add(Ops.add(__msg1, "\n"), __msg2))
exit = true if !tryagain
@@ -1692,9 +1695,12 @@
Label.ErrorMsg,
Ops.add(
Ops.add(
- _(
- "<p>Errors occurred while restoring the repository configuration.</p>\n"
- ) + "<p>",
+ Ops.add(
+ _(
+ "<p>Errors occurred while restoring the repository configuration.</p>\n"
+ ),
+ "<p>"
+ ),
Pkg.LastError
),
"</p>"
diff -ur result/packager/src/clients/sw_single.rb result-bck/packager/src/clients/sw_single.rb
--- result/packager/src/clients/sw_single.rb 2013-06-28 13:44:18.460000000 +0200
+++ result-bck/packager/src/clients/sw_single.rb 2013-06-28 12:36:01.072000000 +0200
@@ -278,7 +278,10 @@
if !mgr_ok
Report.LongWarning(
Ops.add(
- _("An error occurred during repository initialization.") + "\n",
+ Ops.add(
+ _("An error occurred during repository initialization."),
+ "\n"
+ ),
Pkg.LastError
)
)
diff -ur result/packager/src/clients/webpin_package_search.rb result-bck/packager/src/clients/webpin_package_search.rb
--- result/packager/src/clients/webpin_package_search.rb 2013-06-28 13:44:21.068000000 +0200
+++ result-bck/packager/src/clients/webpin_package_search.rb 2013-06-28 12:36:01.080000000 +0200
@@ -299,10 +299,13 @@
Left(Label(_("Package Description"))),
VWeight(1, RichText(Id("description"), ""))
),
- _(
- "<p><big><b>Package Search</b></big><br>\nUse the functionality of <i>Webpin package search</i> to search in all known openSUSE build-service and openSUSE community repositories.</p>\n"
- ) + _(
- "<p><big><b>Security</b></big><br> The software found is often not part of the\ndistribution itself. You need to decide whether to trust the source of a\npackage. We do not take any responsibility for installing such software.</p>\n"
+ Ops.add(
+ _(
+ "<p><big><b>Package Search</b></big><br>\nUse the functionality of <i>Webpin package search</i> to search in all known openSUSE build-service and openSUSE community repositories.</p>\n"
+ ),
+ _(
+ "<p><big><b>Security</b></big><br> The software found is often not part of the\ndistribution itself. You need to decide whether to trust the source of a\npackage. We do not take any responsibility for installing such software.</p>\n"
+ )
),
false,
true
diff -ur result/packager/src/include/checkmedia/ui.rb result-bck/packager/src/include/checkmedia/ui.rb
--- result/packager/src/include/checkmedia/ui.rb 2013-06-28 13:43:40.132000000 +0200
+++ result-bck/packager/src/include/checkmedia/ui.rb 2013-06-28 12:36:01.072000000 +0200
@@ -75,20 +75,36 @@
"media" => _("<UL><LI>Medium: %1</LI></UL>"),
"size" => _("<UL><LI>Size: %1</LI></UL>"),
"check" => _("<UL><LI>Result: %1</LI></UL>"),
- "not an iso" => ("<FONT COLOR=red>" + _(
- "The drive does not contain a medium or the ISO file system is broken."
- )) + "</FONT>"
+ "not an iso" => Ops.add(
+ Ops.add(
+ "<FONT COLOR=red>",
+ _(
+ "The drive does not contain a medium or the ISO file system is broken."
+ )
+ ),
+ "</FONT>"
+ )
}
if key == "check"
if val == "md5sum ok"
- val = ("<FONT COLOR=\"darkGreen\">" + _(
- "<B>OK</B> -- The medium has been successfully verified."
- )) + "</FONT>"
+ val = Ops.add(
+ Ops.add(
+ "<FONT COLOR=\"darkGreen\">",
+ _("<B>OK</B> -- The medium has been successfully verified.")
+ ),
+ "</FONT>"
+ )
else
if val == "md5sum wrong"
- val = ("<FONT COLOR=red>" + _(
- "<B>Error</B> -- MD5 sum does not match<BR>This medium should not be used."
- )) + "</FONT>"
+ val = Ops.add(
+ Ops.add(
+ "<FONT COLOR=red>",
+ _(
+ "<B>Error</B> -- MD5 sum does not match<BR>This medium should not be used."
+ )
+ ),
+ "</FONT>"
+ )
else
if val == "md5sum not checked"
val = _(
@@ -226,20 +242,41 @@
end
Pkg.SourceReleaseAll if Stage.initial
caption = _("Media Check")
- help = ((((((_("<P><B>Media Check</B></P>") + _(
- "<P>When you have a problem with\nthe installation and you are using a CD or DVD installation medium, you should check\nwhether the medium is broken.</P>\n"
- )) + _(
- "<P>Select a drive, insert a medium into the drive and press <B>Start Check</B>\nor use <B>Check ISO File</B> and select an ISO file.\nThe check can take several minutes depending on speed of the\ndrive and size of the medium. The check verifies the MD5 checksum.</P> "
- )) + _(
- "<P>If the check of the medium fails, you should not continue the installation.\nIt may fail or you may lose your data. Better replace the broken medium.</P>\n"
- )) + _(
- "After the check, insert the next medium and start the procedure again. \nThe order of the media is irrelevant.\n"
- )) + _(
- "<P><B>Note:</B> You cannot change the medium while it is used by the system.</P>"
- )) + _(
- "<P>To check media before the installation, use the media check item in the boot menu.</P>"
- )) + _(
- "<P>If you burn the media yourself, use the <B>pad</B> option in your recording\nsoftware. It avoids read errors at the end of the media during the check.</P>\n"
+ help = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<P><B>Media Check</B></P>"),
+ _(
+ "<P>When you have a problem with\nthe installation and you are using a CD or DVD installation medium, you should check\nwhether the medium is broken.</P>\n"
+ )
+ ),
+ _(
+ "<P>Select a drive, insert a medium into the drive and press <B>Start Check</B>\nor use <B>Check ISO File</B> and select an ISO file.\nThe check can take several minutes depending on speed of the\ndrive and size of the medium. The check verifies the MD5 checksum.</P> "
+ )
+ ),
+ _(
+ "<P>If the check of the medium fails, you should not continue the installation.\nIt may fail or you may lose your data. Better replace the broken medium.</P>\n"
+ )
+ ),
+ _(
+ "After the check, insert the next medium and start the procedure again. \nThe order of the media is irrelevant.\n"
+ )
+ ),
+ _(
+ "<P><B>Note:</B> You cannot change the medium while it is used by the system.</P>"
+ )
+ ),
+ _(
+ "<P>To check media before the installation, use the media check item in the boot menu.</P>"
+ )
+ ),
+ _(
+ "<P>If you burn the media yourself, use the <B>pad</B> option in your recording\nsoftware. It avoids read errors at the end of the media during the check.</P>\n"
+ )
)
label = _(
"It is recommended to check all installation media\nto avoid installation problems. To skip this step press 'Next'"
diff -ur result/packager/src/modules/PackageInstallation.rb result-bck/packager/src/modules/PackageInstallation.rb
--- result/packager/src/modules/PackageInstallation.rb 2013-06-28 13:43:27.656000000 +0200
+++ result-bck/packager/src/modules/PackageInstallation.rb 2013-06-28 12:36:01.072000000 +0200
@@ -186,13 +186,13 @@
)
Builtins.foreach(packages) { |pac|
pkg_name = Convert.to_string(Ops.index(pac, 0, ""))
- pkg_size = 42 * 1024
+ pkg_size = Ops.multiply(42, 1024)
bytes_installed = 0
- bytes_installed = -857 * 1024 if Ops.less_than(pkg_size, 0)
+ bytes_installed = Ops.multiply(-857, 1024) if Ops.less_than(pkg_size, 0)
while (Ops.less_than(bytes_installed, pkg_size) && (ret != :cancel)) && (ret != :diskfull)
percent = Ops.divide(Ops.multiply(100, bytes_installed), pkg_size)
Builtins.sleep(300)
- bytes_installed = Ops.add(bytes_installed, 300 * 1024)
+ bytes_installed = Ops.add(bytes_installed, Ops.multiply(300, 1024))
end
disk_usage = Ops.add(disk_usage, 1)
number = Ops.add(number, 1)
diff -ur result/packager/src/modules/PackageSlideShow.rb result-bck/packager/src/modules/PackageSlideShow.rb
--- result/packager/src/modules/PackageSlideShow.rb 2013-06-28 13:43:26.088000000 +0200
+++ result-bck/packager/src/modules/PackageSlideShow.rb 2013-06-28 12:36:01.072000000 +0200
@@ -220,7 +220,10 @@
if !@init_pkg_data_complete
if !silent
Builtins.y2error(
- "PackageSlideShow::SanityCheck(): Slide show not correctly initialized: " + "PackageSlideShow::InitPkgData() never called!"
+ Ops.add(
+ "PackageSlideShow::SanityCheck(): Slide show not correctly initialized: ",
+ "PackageSlideShow::InitPkgData() never called!"
+ )
)
end
return false
diff -ur result/packager/src/modules/Packages.rb result-bck/packager/src/modules/Packages.rb
--- result/packager/src/modules/Packages.rb 2013-06-28 13:43:20.632000000 +0200
+++ result-bck/packager/src/modules/Packages.rb 2013-06-28 12:36:01.072000000 +0200
@@ -473,7 +473,10 @@
"warning_level" => Mode.update ? :warning : :blocker
}
else
- free_space = SpaceCalculation.CheckDiskFreeSpace(25, 750 * 1024)
+ free_space = SpaceCalculation.CheckDiskFreeSpace(
+ 25,
+ Ops.multiply(750, 1024)
+ )
if Ops.greater_than(Builtins.size(free_space), 0)
warning = ""
Builtins.foreach(free_space) { |df|
diff -ur result/packager/src/modules/SourceDialogs.rb result-bck/packager/src/modules/SourceDialogs.rb
--- result/packager/src/modules/SourceDialogs.rb 2013-06-28 13:43:34.464000000 +0200
+++ result-bck/packager/src/modules/SourceDialogs.rb 2013-06-28 12:36:01.072000000 +0200
@@ -918,7 +918,10 @@
Left(
ComboBox(
Id(:disk),
- _("&USB Mass Storage Device") + " "
+ Ops.add(
+ _("&USB Mass Storage Device"),
+ " "
+ )
)
),
Left(ComboBox(Id(:fs), Opt(:editable), _("&File System"))),
@@ -927,10 +930,13 @@
),
"init" => fun_ref(method(:USBInit), "void (string)"),
"store" => fun_ref(method(:USBStore), "void (string, map)"),
- "help" => _(
- "<p><big><b>USB Stick or Disk</b></big><br>\nSelect the USB device on which the repository is located.\nUse <b>Path to Directory</b> to specify the directory of the repository.\nIf the path is omitted, the system will use the root directory of the disk.\nIf the directory contains only RPM packages without\nany metadata (i.e. there is no product information), then check option\n<b>Plain RPM Directory</b>.</p>\n"
- ) + _(
- "<p>The file system used on the device will be detected automatically\nif you select file system 'auto'. If the detection fails or you\nwant to use a certain file system, select it from the list.</p>\n"
+ "help" => Ops.add(
+ _(
+ "<p><big><b>USB Stick or Disk</b></big><br>\nSelect the USB device on which the repository is located.\nUse <b>Path to Directory</b> to specify the directory of the repository.\nIf the path is omitted, the system will use the root directory of the disk.\nIf the directory contains only RPM packages without\nany metadata (i.e. there is no product information), then check option\n<b>Plain RPM Directory</b>.</p>\n"
+ ),
+ _(
+ "<p>The file system used on the device will be detected automatically\nif you select file system 'auto'. If the detection fails or you\nwant to use a certain file system, select it from the list.</p>\n"
+ )
)
}
end
@@ -967,10 +973,13 @@
),
"init" => fun_ref(method(:DiskInit), "void (string)"),
"store" => fun_ref(method(:DiskStore), "void (string, map)"),
- "help" => _(
- "<p><big><b>Disk</b></big><br>\nSelect the disk on which the repository is located.\nUse <b>Path to Directory</b> to specify the directory of the repository.\nIf the path is omitted, the system will use the root directory of the disk.\nIf the directory contains only RPM packages without\nany metadata (i.e. there is no product information), then check option\n<b>Plain RPM Directory</b>.</p>\n"
- ) + _(
- "<p>The file system used on the device will be detected automatically\nif you select file system 'auto'. If the detection fails or you\nwant to use a certain file system, select it from the list.</p>\n"
+ "help" => Ops.add(
+ _(
+ "<p><big><b>Disk</b></big><br>\nSelect the disk on which the repository is located.\nUse <b>Path to Directory</b> to specify the directory of the repository.\nIf the path is omitted, the system will use the root directory of the disk.\nIf the directory contains only RPM packages without\nany metadata (i.e. there is no product information), then check option\n<b>Plain RPM Directory</b>.</p>\n"
+ ),
+ _(
+ "<p>The file system used on the device will be detected automatically\nif you select file system 'auto'. If the detection fails or you\nwant to use a certain file system, select it from the list.</p>\n"
+ )
)
}
end
@@ -1433,10 +1442,13 @@
"symbol (string, map)"
),
"help" => Ops.add(
- _(
- "<p><big><b>Server and Directory</b></big><br>\nUse <b>Server Name</b> and <b>Path to Directory or ISO Image</b>\nto specify the NFS server host name and path on the server.\nTo enable authentication, uncheck <b>Anonymous</b> and specify the\n<b>User Name</b> and the <b>Password</b>.</p>\n<p>\nFor the SMB/CIFS repository, specify <b>Share</b> name and <b>Path to Directory\nor ISO Image</b>. \nIf the location is a file holding an ISO image\nof the media, set <b>ISO Image</b>.</p>\n"
- ) + _(
- "<p>It is possible to set the <b>Port</b> number for a HTTP/HTTPS repository.\nLeave it empty to use the default port.</p>\n"
+ Ops.add(
+ _(
+ "<p><big><b>Server and Directory</b></big><br>\nUse <b>Server Name</b> and <b>Path to Directory or ISO Image</b>\nto specify the NFS server host name and path on the server.\nTo enable authentication, uncheck <b>Anonymous</b> and specify the\n<b>User Name</b> and the <b>Password</b>.</p>\n<p>\nFor the SMB/CIFS repository, specify <b>Share</b> name and <b>Path to Directory\nor ISO Image</b>. \nIf the location is a file holding an ISO image\nof the media, set <b>ISO Image</b>.</p>\n"
+ ),
+ _(
+ "<p>It is possible to set the <b>Port</b> number for a HTTP/HTTPS repository.\nLeave it empty to use the default port.</p>\n"
+ )
),
@multi_cd_help
)
diff -ur result/packager/src/modules/SourceManager.rb result-bck/packager/src/modules/SourceManager.rb
--- result/packager/src/modules/SourceManager.rb 2013-06-28 13:43:07.016000000 +0200
+++ result-bck/packager/src/modules/SourceManager.rb 2013-06-28 12:36:01.072000000 +0200
@@ -97,7 +97,7 @@
success = Pkg.SourceEditSet(@sourceStatesOut)
if !success
__msg1 = _("Unable to save changes to the repository.\n")
- __msg2 = Ops.add(_("Details:") + "\n", Pkg.LastError)
+ __msg2 = Ops.add(Ops.add(_("Details:"), "\n"), Pkg.LastError)
__msg2 = Ops.add(Ops.add(__msg2, "\n"), _("Try again?"))
tryagain = Popup.YesNo(Ops.add(Ops.add(__msg1, "\n"), __msg2))
if tryagain
@@ -198,7 +198,7 @@
_("Unable to create repository\nfrom URL '%1'."),
URL.HidePassword(url)
)
- __msg2 = Ops.add(_("Details:") + "\n", Pkg.LastError)
+ __msg2 = Ops.add(Ops.add(_("Details:"), "\n"), Pkg.LastError)
__msg2 = Ops.add(Ops.add(__msg2, "\n"), _("Try again?"))
tryagain = Popup.YesNo(Ops.add(Ops.add(__msg1, "\n"), __msg2))
if tryagain
diff -ur result/packager/src/modules/SpaceCalculation.rb result-bck/packager/src/modules/SpaceCalculation.rb
--- result/packager/src/modules/SpaceCalculation.rb 2013-06-28 13:43:24.124000000 +0200
+++ result-bck/packager/src/modules/SpaceCalculation.rb 2013-06-28 12:36:01.072000000 +0200
@@ -49,8 +49,8 @@
def EvaluateFreeSpace(spare_percentage)
partition = []
- min_spare = 10 * 1024
- max_spare = 1024 * 1024
+ min_spare = Ops.multiply(10, 1024)
+ max_spare = Ops.multiply(1024, 1024)
target = Installation.destdir
partition = Convert.convert(
SCR.Read(path(".run.df")),
@@ -212,13 +212,13 @@
if Ops.less_than(blocks, 32768)
ret = 1024
else
- if Ops.less_than(blocks, 256 * 1024)
+ if Ops.less_than(blocks, Ops.multiply(256, 1024))
ret = 4096
else
- if Ops.less_than(blocks, 512 * 1024)
+ if Ops.less_than(blocks, Ops.multiply(512, 1024))
ret = 8192
else
- if Ops.less_than(blocks, 1024 * 1024)
+ if Ops.less_than(blocks, Ops.multiply(1024, 1024))
ret = 16384
else
ret = 32768
@@ -274,8 +274,8 @@
{ :from => "any", :to => "integer" }
)
)
- mb = 1 << 20
- gb = 1 << 30
+ mb = Ops.shift_left(1, 20)
+ gb = Ops.shift_left(1, 30)
ret = Ops.divide(part_size, 2048)
min_log_size = Ops.multiply(10, mb)
max_log_size = Ops.multiply(2, gb)
@@ -294,7 +294,7 @@
def ReiserJournalSize(part)
part = deep_copy(part)
- ret = 8193 * 4096
+ ret = Ops.multiply(8193, 4096)
Builtins.y2milestone(
"Default Reiser journal size: %1kB",
Ops.divide(ret, 1024)
@@ -304,9 +304,12 @@
def DefaultJfsJournalSize(part_size)
ret = Ops.shift_right(part_size, 8)
- max = 128 * (1 << 20)
+ max = Ops.multiply(128, Ops.shift_left(1, 20))
ret = Ops.shift_left(
- Ops.shift_right(Ops.subtract(Ops.add(ret, 1 << 20), 1), 20),
+ Ops.shift_right(
+ Ops.subtract(Ops.add(ret, Ops.shift_left(1, 20)), 1),
+ 20
+ ),
20
)
ret = max if Ops.greater_than(ret, max)
@@ -325,7 +328,7 @@
)
)
if Ops.greater_than(log_size, 0)
- log_size = Ops.multiply(log_size, 1 << 20)
+ log_size = Ops.multiply(log_size, Ops.shift_left(1, 20))
else
log_size = DefaultJfsJournalSize(
Ops.multiply(
@@ -347,7 +350,7 @@
def EstimateTargetUsage(parts)
parts = deep_copy(parts)
Builtins.y2milestone("EstimateTargetUsage(%1)", parts)
- mb = 1 << 10
+ mb = Ops.shift_left(1, 10)
if (parts == nil) || (Builtins.size(parts) == 0)
Builtins.y2error("Invalid input: %1", parts)
return []
@@ -535,7 +538,7 @@
)
end
target_partitions = []
- min_spare = (20 * 1024) * 1024
+ min_spare = Ops.multiply(Ops.multiply(20, 1024), 1024)
Builtins.foreach(targets) { |disk, diskinfo|
part_info = Convert.to_list(Ops.index(diskinfo, "partitions", []))
Builtins.foreach(part_info) { |part|
@@ -858,12 +861,18 @@
if Mode.update
message = Builtins.add(
message,
- "\n" + _(
- "Deselect packages or delete data or temporary files\nbefore updating the system.\n"
+ Ops.add(
+ "\n",
+ _(
+ "Deselect packages or delete data or temporary files\nbefore updating the system.\n"
+ )
)
)
else
- message = Builtins.add(message, "\n" + _("Deselect some packages."))
+ message = Builtins.add(
+ message,
+ Ops.add("\n", _("Deselect some packages."))
+ )
end
end
end
diff -ur result/packager/testsuite/tests/SpaceCalculation.rb result-bck/packager/testsuite/tests/SpaceCalculation.rb
--- result/packager/testsuite/tests/SpaceCalculation.rb 2013-06-28 13:44:35.952000000 +0200
+++ result-bck/packager/testsuite/tests/SpaceCalculation.rb 2013-06-28 12:36:04.860000000 +0200
@@ -11,9 +11,9 @@
@READ = { "target" => { "tmpdir" => "/tmp" } }
TESTSUITE_INIT([@READ], nil)
Yast.import("SpaceCalculation")
- @mb = 1 << 10
- @gb = 1 << 20
- @tb = 1 << 30
+ @mb = Ops.shift_left(1, 10)
+ @gb = Ops.shift_left(1, 20)
+ @tb = Ops.shift_left(1, 30)
@part = {
"size_k" => Ops.multiply(5, @gb),
"used_fs" => :ext2,
diff -ur result/perl-bindings/testsuite/tests/Long.rb result-bck/perl-bindings/testsuite/tests/Long.rb
--- result/perl-bindings/testsuite/tests/Long.rb 2013-06-28 14:25:22.844000000 +0200
+++ result-bck/perl-bindings/testsuite/tests/Long.rb 2013-06-28 12:35:59.312000000 +0200
@@ -17,7 +17,7 @@
Builtins.y2milestone("%1 * 2**30: %2", m, Long.big_num(m, 3))
Builtins.y2milestone("%1 * 2**30: %2 class", m, Long.big_num_c(m, 3))
}
- @g = (1024 * 1024) * 1024
+ @g = Ops.multiply(Ops.multiply(1024, 1024), 1024)
Builtins.foreach(@lm) { |m|
Builtins.y2milestone(
"loop %1 * 2**30: %2",
diff -ur result/phone-services/src/include/phone-services/answering_machine.rb result-bck/phone-services/src/include/phone-services/answering_machine.rb
--- result/phone-services/src/include/phone-services/answering_machine.rb 2013-06-28 14:25:31.920000000 +0200
+++ result-bck/phone-services/src/include/phone-services/answering_machine.rb 2013-06-28 12:36:05.280000000 +0200
@@ -28,22 +28,41 @@
_("Duration"),
_("Action")
)
- help = ((((((_(
- "<p>An answering machine for one or more users can be\nset up in this dialog. Each user must have at least one unique phone\nnumber configured. Refer to the telecommunication chapter in the manuals\nfor further details.</p>\n"
- ) + _(
- "<p>When adding or editing a user, a dialog will be shown with\nthe following details:</p>"
- )) + _(
- "<p><b>User</b>: The system user who wants to receive calls with the\nanswering machine.</p>"
- )) + _(
- "<p><b>Phone Numbers</b>: One or more phone numbers (separated by\ncommas) that belong (only) to this user. You can also enter <tt>*</tt>,\nwhich means the user will get <b>any</b> call.</p>\n"
- )) + _(
- "<p><b>Delay</b>: Delay in seconds before the answering machine responds\nto the call.</p>"
- )) + _(
- "<p><b>Duration</b>: Maximum record length for one call.</p>"
- )) + _(
- "<p><b>Action</b>: By using the default <tt>MailAndSave</tt>, recorded\ncalls are sent to the user as mail and saved to disk. To\ndisable the mails, set this to <tt>SaveOnly</tt>. <tt>None</tt> forbids\nrecording -- the answering machine only plays the announcement.</p>\n"
- )) + _(
- "<p><b>Pin</b>: Identification code for the remote inquiry function.</p>"
+ help = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>An answering machine for one or more users can be\nset up in this dialog. Each user must have at least one unique phone\nnumber configured. Refer to the telecommunication chapter in the manuals\nfor further details.</p>\n"
+ ),
+ _(
+ "<p>When adding or editing a user, a dialog will be shown with\nthe following details:</p>"
+ )
+ ),
+ _(
+ "<p><b>User</b>: The system user who wants to receive calls with the\nanswering machine.</p>"
+ )
+ ),
+ _(
+ "<p><b>Phone Numbers</b>: One or more phone numbers (separated by\ncommas) that belong (only) to this user. You can also enter <tt>*</tt>,\nwhich means the user will get <b>any</b> call.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Delay</b>: Delay in seconds before the answering machine responds\nto the call.</p>"
+ )
+ ),
+ _("<p><b>Duration</b>: Maximum record length for one call.</p>")
+ ),
+ _(
+ "<p><b>Action</b>: By using the default <tt>MailAndSave</tt>, recorded\ncalls are sent to the user as mail and saved to disk. To\ndisable the mails, set this to <tt>SaveOnly</tt>. <tt>None</tt> forbids\nrecording -- the answering machine only plays the announcement.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Pin</b>: Identification code for the remote inquiry function.</p>"
+ )
)
max = 0
items = 0
diff -ur result/phone-services/src/include/phone-services/fax.rb result-bck/phone-services/src/include/phone-services/fax.rb
--- result/phone-services/src/include/phone-services/fax.rb 2013-06-28 14:25:33.672000000 +0200
+++ result-bck/phone-services/src/include/phone-services/fax.rb 2013-06-28 12:36:05.280000000 +0200
@@ -29,24 +29,48 @@
_("StationID"),
_("Headline")
)
- help = (((((((_(
- "<p>The fax system for one or more users can be\nset up in this dialog. Each user must have at least one unique fax\nnumber configured. Refer to the telecommunication chapter in the\nmanuals for further details.</p>\n"
- ) + _(
- "<p><b>Prefix</b>: Only for users behind a PBX. Enter the\nprefix number for getting a public line. This number will be dialed\nbefore any destination number.</p>\n"
- )) + _(
- "<p>When adding or editing a user, a dialog will be shown with\nthe following fields:</p>"
- )) + _(
- "<p><b>User</b>: The system user to which this fax account belongs.</p> \n"
- )) + _(
- "<p><b>Fax Numbers</b>: The numbers (separated by commas)\non which faxes should be received for this user. If you enter\n<tt>*</tt>, the user gets <b>any</b> call. Leave\nthis empty for a send-only account.</p>\n"
- )) + _(
- "<p><b>Outgoing MSN</b>: The number to use for outgoing calls. If\nempty, the first number of <b>Fax Numbers</b> is used.</p>\n"
- )) + _(
- "<p><b>StationID</b>: The fax station ID. Set it to the external\nnumber in international format, such as <tt>+49 89 12345</tt>.</p>\n"
- )) + _(
- "<p><b>Headline</b>: The headline used for sending faxes -- normally\na string containing some name.</p>\n"
- )) + _(
- "<p><b>Action</b>: By using the default <tt>MailAndSave</tt>,\nreceived faxes are sent to the user as mail and saved to disk.\nTo disable the mails, set this to <tt>SaveOnly</tt>.</p>\n"
+ help = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>The fax system for one or more users can be\nset up in this dialog. Each user must have at least one unique fax\nnumber configured. Refer to the telecommunication chapter in the\nmanuals for further details.</p>\n"
+ ),
+ _(
+ "<p><b>Prefix</b>: Only for users behind a PBX. Enter the\nprefix number for getting a public line. This number will be dialed\nbefore any destination number.</p>\n"
+ )
+ ),
+ _(
+ "<p>When adding or editing a user, a dialog will be shown with\nthe following fields:</p>"
+ )
+ ),
+ _(
+ "<p><b>User</b>: The system user to which this fax account belongs.</p> \n"
+ )
+ ),
+ _(
+ "<p><b>Fax Numbers</b>: The numbers (separated by commas)\non which faxes should be received for this user. If you enter\n<tt>*</tt>, the user gets <b>any</b> call. Leave\nthis empty for a send-only account.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Outgoing MSN</b>: The number to use for outgoing calls. If\nempty, the first number of <b>Fax Numbers</b> is used.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>StationID</b>: The fax station ID. Set it to the external\nnumber in international format, such as <tt>+49 89 12345</tt>.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Headline</b>: The headline used for sending faxes -- normally\na string containing some name.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Action</b>: By using the default <tt>MailAndSave</tt>,\nreceived faxes are sent to the user as mail and saved to disk.\nTo disable the mails, set this to <tt>SaveOnly</tt>.</p>\n"
+ )
)
max = 0
items = 0
diff -ur result/phone-services/src/modules/Fax.rb result-bck/phone-services/src/modules/Fax.rb
--- result/phone-services/src/modules/Fax.rb 2013-06-28 14:25:28.596000000 +0200
+++ result-bck/phone-services/src/modules/Fax.rb 2013-06-28 12:36:05.280000000 +0200
@@ -131,7 +131,19 @@
SCR.Execute(path(".target.bash"), "/sbin/insserv -d capisuite")
SCR.Execute(path(".target.bash"), "/etc/init.d/capisuite start")
end
- command = ((("if [ -e /opt/kde3/share/config -a ! -e /opt/kde3/share/config/kdeprintfaxrc ]; then " + "echo \"[System]\" > /opt/kde3/share/config/kdeprintfaxrc; ") + "echo \"HylaFax=/usr/bin/capisuitefax -d %number %files\" >> /opt/kde3/share/config/kdeprintfaxrc; ") + "echo \"System=hylafax\" >> /opt/kde3/share/config/kdeprintfaxrc; ") + "fi"
+ command = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ "if [ -e /opt/kde3/share/config -a ! -e /opt/kde3/share/config/kdeprintfaxrc ]; then ",
+ "echo \"[System]\" > /opt/kde3/share/config/kdeprintfaxrc; "
+ ),
+ "echo \"HylaFax=/usr/bin/capisuitefax -d %number %files\" >> /opt/kde3/share/config/kdeprintfaxrc; "
+ ),
+ "echo \"System=hylafax\" >> /opt/kde3/share/config/kdeprintfaxrc; "
+ ),
+ "fi"
+ )
SCR.Execute(path(".target.bash"), command)
end
return ret == true
diff -ur result/pos-installation/src/clients/inst_slepos_detection.rb result-bck/pos-installation/src/clients/inst_slepos_detection.rb
--- result/pos-installation/src/clients/inst_slepos_detection.rb 2013-06-28 14:25:46.700000000 +0200
+++ result-bck/pos-installation/src/clients/inst_slepos_detection.rb 2013-06-28 12:36:20.420000000 +0200
@@ -72,10 +72,13 @@
)
)
@cont = HBox(HSpacing(3), @cont, HSpacing(3))
- @help = _(
- "<p>In case you are not migrating from NLPOS9 and this is a new SLEPOS 11 \ninstallation continue by clicking <b>Next</b>.</p>"
- ) + _(
- "<p>To migrate from NLPOS9 insert the backed up archive file or backup directory \ninto the corresponding input box and continue by clicking <b>Next</b>.\nThe backup file or directory is prepared beforehand using the script <tt>nlpos9_backup_data.sh</tt>\nwhich can be found on the SLEPOS CD in the directory <tt>/migration/</tt> or in the directory\n<tt>/usr/lib/SLEPOS/migration</tt> of <tt>POS_Migration.rpm</tt> package.</p>"
+ @help = Ops.add(
+ _(
+ "<p>In case you are not migrating from NLPOS9 and this is a new SLEPOS 11 \ninstallation continue by clicking <b>Next</b>.</p>"
+ ),
+ _(
+ "<p>To migrate from NLPOS9 insert the backed up archive file or backup directory \ninto the corresponding input box and continue by clicking <b>Next</b>.\nThe backup file or directory is prepared beforehand using the script <tt>nlpos9_backup_data.sh</tt>\nwhich can be found on the SLEPOS CD in the directory <tt>/migration/</tt> or in the directory\n<tt>/usr/lib/SLEPOS/migration</tt> of <tt>POS_Migration.rpm</tt> package.</p>"
+ )
)
Wizard.SetContentsButtons(
_("Entering Migration Data"),
diff -ur result/pos-installation/src/clients/inst_slepos_server_selection.rb result-bck/pos-installation/src/clients/inst_slepos_server_selection.rb
--- result/pos-installation/src/clients/inst_slepos_server_selection.rb 2013-06-28 14:25:43.552000000 +0200
+++ result-bck/pos-installation/src/clients/inst_slepos_server_selection.rb 2013-06-28 12:36:20.420000000 +0200
@@ -100,10 +100,11 @@
Wizard.SetContentsButtons(
_("Server Pattern Selection"),
@cont,
- _(
- "<p>Choose the pattern which you want to install. You may disable the migration\nof the relevant deployment (Admin Server, Branch Server or Image Server).</p>"
- ) + _(
- "<p>The installation will start upon pressing <b>Next</b>.</p>"
+ Ops.add(
+ _(
+ "<p>Choose the pattern which you want to install. You may disable the migration\nof the relevant deployment (Admin Server, Branch Server or Image Server).</p>"
+ ),
+ _("<p>The installation will start upon pressing <b>Next</b>.</p>")
),
Label.BackButton,
Label.NextButton
diff -ur result/power-management/src/include/power-management/helps.rb result-bck/power-management/src/include/power-management/helps.rb
--- result/power-management/src/include/power-management/helps.rb 2013-06-28 14:25:55.856000000 +0200
+++ result-bck/power-management/src/include/power-management/helps.rb 2013-06-28 12:36:17.860000000 +0200
@@ -9,29 +9,47 @@
def initialize_power_management_helps(include_target)
textdomain "power-management"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing Power Management Configuration</big></b><br>\nPlease wait...<br></p>"
- ) + _(
- "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing Power Management Configuration</big></b><br>\nPlease wait...<br></p>"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>"
+ )
),
- "write" => _(
- "<p><b><big>Saving Power Management Configuration</big></b><br>\nPlease wait...<br></p>"
- ) + _(
- "<p><b><big>Aborting Saving</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.</p>"
+ "write" => Ops.add(
+ _(
+ "<p><b><big>Saving Power Management Configuration</big></b><br>\nPlease wait...<br></p>"
+ ),
+ _(
+ "<p><b><big>Aborting Saving</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.</p>"
+ )
),
- "scheme_selection" => (_(
- "<p><b><big>Energy Saving Profiles</big></b><br>\nUse <b>Selected Profile</b> to adjust the energy saving profile to use.</p>"
- ) + _(
- "<p>Below the selected profile, its description is displayed.</p>"
- )) + _(
- "<p>To read more about pm-profiler and to learn how to create or modify\nthe power saving profiles, refer to the\n<i>/usr/share/doc/packages/pm-profiler/README</i> file.</p>"
+ "scheme_selection" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Energy Saving Profiles</big></b><br>\nUse <b>Selected Profile</b> to adjust the energy saving profile to use.</p>"
+ ),
+ _(
+ "<p>Below the selected profile, its description is displayed.</p>"
+ )
+ ),
+ _(
+ "<p>To read more about pm-profiler and to learn how to create or modify\nthe power saving profiles, refer to the\n<i>/usr/share/doc/packages/pm-profiler/README</i> file.</p>"
+ )
),
- "profiles_list" => (_(
- "<p><b><big>Profile Setup</big></b><br>\nAdjust the energy saving profiles. To modify a profile, select\nit and click <b>Edit</b>.</p>\n"
- ) + _(
- "<p>To add a new profile, select a profile to clone then click\n<b>Add</b>. To delete an existing profile, select it and click \n<b>Delete</b>.</p>"
- )) + _(
- "<p>In the main dialog, assign profiles to use when you \nwork on battery or AC power.</p>"
+ "profiles_list" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Profile Setup</big></b><br>\nAdjust the energy saving profiles. To modify a profile, select\nit and click <b>Edit</b>.</p>\n"
+ ),
+ _(
+ "<p>To add a new profile, select a profile to clone then click\n<b>Add</b>. To delete an existing profile, select it and click \n<b>Delete</b>.</p>"
+ )
+ ),
+ _(
+ "<p>In the main dialog, assign profiles to use when you \nwork on battery or AC power.</p>"
+ )
),
"profile_name" => _(
"<p><big><b>Profile Setup</b></big>\nConfigure the settings of the profile. Enter its name in <b>Profile Name</b>\nand optionally a description in <b>Profile Description</b>.</p>"
diff -ur result/printer/src/clients/printer_proposal.rb result-bck/printer/src/clients/printer_proposal.rb
--- result/printer/src/clients/printer_proposal.rb 2013-06-28 14:26:42.756000000 +0200
+++ result-bck/printer/src/clients/printer_proposal.rb 2013-06-28 12:35:37.988000000 +0200
@@ -281,7 +281,7 @@
@proposal = Builtins.add(
@proposal,
Ops.add(
- _("Found existing configuration") + " : ",
+ Ops.add(_("Found existing configuration"), " : "),
configuration
)
)
@@ -289,7 +289,7 @@
@proposal = Builtins.add(
@proposal,
Ops.add(
- _("Created configuration") + " : ",
+ Ops.add(_("Created configuration"), " : "),
configuration
)
)
diff -ur result/printer/src/include/printer/basicmodify.rb result-bck/printer/src/include/printer/basicmodify.rb
--- result/printer/src/include/printer/basicmodify.rb 2013-06-28 14:26:21.016000000 +0200
+++ result-bck/printer/src/include/printer/basicmodify.rb 2013-06-28 12:35:37.988000000 +0200
@@ -236,7 +236,7 @@
)
current_connection = Item(
Id(-1),
- _("Current Connection") + ": ",
+ Ops.add(_("Current Connection"), ": "),
Ops.add(uri, " "),
description
)
@@ -250,7 +250,7 @@
if "" != nick_name
current_driver = Item(
Id(-1),
- Ops.add(_("Current Driver") + ": ", nick_name),
+ Ops.add(Ops.add(_("Current Driver"), ": "), nick_name),
true
)
end
diff -ur result/printer/src/include/printer/connectionwizard.rb result-bck/printer/src/include/printer/connectionwizard.rb
--- result/printer/src/include/printer/connectionwizard.rb 2013-06-28 14:26:15.496000000 +0200
+++ result-bck/printer/src/include/printer/connectionwizard.rb 2013-06-28 12:35:37.988000000 +0200
@@ -349,7 +349,7 @@
connection_items,
Item(
Id(-1),
- "Unknown" + " ",
+ Ops.add("Unknown", " "),
Ops.add(current_device_uri, " "),
"No longer valid (printer not connected?)"
)
@@ -785,7 +785,7 @@
Popup.ErrorDetails(
_("Failed to get a list of bluetooth device IDs."),
Ops.add(
- "hcitool scan" + "\n",
+ Ops.add("hcitool scan", "\n"),
Convert.to_string(Ops.index(Printerlib.result, "stderr", ""))
)
)
diff -ur result/printer/src/include/printer/driveradd.rb result-bck/printer/src/include/printer/driveradd.rb
--- result/printer/src/include/printer/driveradd.rb 2013-06-28 14:26:31.140000000 +0200
+++ result-bck/printer/src/include/printer/driveradd.rb 2013-06-28 12:35:37.988000000 +0200
@@ -78,8 +78,9 @@
Left(
CheckBox(
Id("OpenPrintingPPDs-ghostscript"),
- "&OpenPrintingPPDs-ghostscript : " + _(
- "Printer Description Files for Ghostscript Drivers"
+ Ops.add(
+ "&OpenPrintingPPDs-ghostscript : ",
+ _("Printer Description Files for Ghostscript Drivers")
),
_OpenPrintingPPDs_ghostscript_installed
)
@@ -87,8 +88,9 @@
Left(
CheckBox(
Id("OpenPrintingPPDs-hpijs"),
- "OpenPrintingPPDs-hp&ijs : " + _(
- "Printer Description Files for some PCL Printers"
+ Ops.add(
+ "OpenPrintingPPDs-hp&ijs : ",
+ _("Printer Description Files for some PCL Printers")
),
_OpenPrintingPPDs_hpijs_installed
)
@@ -96,8 +98,9 @@
Left(
CheckBox(
Id("OpenPrintingPPDs-postscript"),
- "OpenPrintingPPDs-&postscript : " + _(
- "Printer Description Files for PostScript Printers"
+ Ops.add(
+ "OpenPrintingPPDs-&postscript : ",
+ _("Printer Description Files for PostScript Printers")
),
_OpenPrintingPPDs_postscript_installed
)
@@ -105,15 +108,16 @@
Left(
CheckBox(
Id("gutenprint"),
- "&gutenprint : " + _("Gutenprint/Gimp-Print Driver"),
+ Ops.add("&gutenprint : ", _("Gutenprint/Gimp-Print Driver")),
gutenprint_installed
)
),
Left(
CheckBox(
Id("hplip"),
- "&hplip + hplip-hpijs : " + _(
- "Driver for HP Printers and HP All-in-One Devices"
+ Ops.add(
+ "&hplip + hplip-hpijs : ",
+ _("Driver for HP Printers and HP All-in-One Devices")
),
hplip_installed
)
@@ -121,8 +125,9 @@
Left(
CheckBox(
Id("manufacturer-PPDs"),
- "&manufacturer-PPDs : " + _(
- "Manufacturer's PostScript Printer Description Files"
+ Ops.add(
+ "&manufacturer-PPDs : ",
+ _("Manufacturer's PostScript Printer Description Files")
),
manufacturer_PPDs_installed
)
@@ -130,15 +135,19 @@
Left(
CheckBox(
Id("splix"),
- "&splix : " + _("SpliX Driver for SPL Printers without JBIG"),
+ Ops.add(
+ "&splix : ",
+ _("SpliX Driver for SPL Printers without JBIG")
+ ),
splix_installed
)
),
Left(
CheckBox(
Id("m2300w"),
- "m2300&w : " + _(
- "Driver for Konica Minolta 2300W and 2400W (unmaintained)"
+ Ops.add(
+ "m2300&w : ",
+ _("Driver for Konica Minolta 2300W and 2400W (unmaintained)")
),
m2300w_installed
)
@@ -146,8 +155,9 @@
Left(
CheckBox(
Id("epson-inkjet-printer-escpr"),
- "&epson-inkjet-printer-escpr : " + _(
- "Epson ESC/P-R Inkjet Printer Driver"
+ Ops.add(
+ "&epson-inkjet-printer-escpr : ",
+ _("Epson ESC/P-R Inkjet Printer Driver")
),
epson_inkjet_printer_escpr_installed
)
diff -ur result/printer/src/include/printer/helps.rb result-bck/printer/src/include/printer/helps.rb
--- result/printer/src/include/printer/helps.rb 2013-06-28 14:26:28.016000000 +0200
+++ result-bck/printer/src/include/printer/helps.rb 2013-06-28 12:35:37.988000000 +0200
@@ -15,102 +15,198 @@
"write" => _(
"<p>\n<b><big>Finishing printer Configuration</big></b><br>\n</p>\n"
),
- "overview" => (((((_(
- "<p>\n<b><big>Print Queue Overview</big></b><br>\nA printer device is not used directly but via a print queue.<br>\nWhen various applications submit print jobs simultaneously,\nthese jobs are put in a queue and are sent one after the other to the printer\ndevice.<br>\nIt is possible to have several different print queues for the same printer\ndevice.\nFor example a second queue with a monochrome-only driver for a color device\nor a PostScript queue and a queue with a PCL driver for a PostScript+PCL printer.\n</p>\n"
- ) + _(
- "<p>\n<b><big>Using Remote Queues:</big></b><br>\nRemote queues exist on other hosts in the network,\ntherefore they cannot be changed on this host.<br>\nThe remote queues listed here are known on this host.\nUsually they can be used directly by applications\nso there is no need to set up a local queue for a printer\nthat is already available via a remote queue.<br>\n</p>\n"
- )) + _(
- "<p>\n<b><big>Configure a printer:</big></b><br>\nPress <b>Add</b> to set up a new queue for a printer device.\n</p>"
- )) + _(
- "<p>\n<b><big>Change the settings for a queue:</big></b><br>\nSelect a local queue and press <b>Edit</b>.\n</p>"
- )) + _(
- "<p>\n<b><big>Remove a queue:</big></b><br>\nSelect a local queue and press <b>Delete</b>.\n</p>"
- )) + _(
- "<p>\n<b><big>Print a test page:</big></b><br>\nSelect the queue and press <b>Print Test Page</b>.\n</p>"
- )) + _(
- "<p>\n<b><big>Refresh the list of queues:</big></b><br>\nAfter changes to the network printing settings,\nthe available remote queues may have changed.\nUsually it takes some time (up to several minutes)\nuntil such changes become known to the local host.\nPress <b>Refresh List</b> after some time to get an \nup-to-date list of available remote queues.\n</p>\n"
+ "overview" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>\n<b><big>Print Queue Overview</big></b><br>\nA printer device is not used directly but via a print queue.<br>\nWhen various applications submit print jobs simultaneously,\nthese jobs are put in a queue and are sent one after the other to the printer\ndevice.<br>\nIt is possible to have several different print queues for the same printer\ndevice.\nFor example a second queue with a monochrome-only driver for a color device\nor a PostScript queue and a queue with a PCL driver for a PostScript+PCL printer.\n</p>\n"
+ ),
+ _(
+ "<p>\n<b><big>Using Remote Queues:</big></b><br>\nRemote queues exist on other hosts in the network,\ntherefore they cannot be changed on this host.<br>\nThe remote queues listed here are known on this host.\nUsually they can be used directly by applications\nso there is no need to set up a local queue for a printer\nthat is already available via a remote queue.<br>\n</p>\n"
+ )
+ ),
+ _(
+ "<p>\n<b><big>Configure a printer:</big></b><br>\nPress <b>Add</b> to set up a new queue for a printer device.\n</p>"
+ )
+ ),
+ _(
+ "<p>\n<b><big>Change the settings for a queue:</big></b><br>\nSelect a local queue and press <b>Edit</b>.\n</p>"
+ )
+ ),
+ _(
+ "<p>\n<b><big>Remove a queue:</big></b><br>\nSelect a local queue and press <b>Delete</b>.\n</p>"
+ )
+ ),
+ _(
+ "<p>\n<b><big>Print a test page:</big></b><br>\nSelect the queue and press <b>Print Test Page</b>.\n</p>"
+ )
+ ),
+ _(
+ "<p>\n<b><big>Refresh the list of queues:</big></b><br>\nAfter changes to the network printing settings,\nthe available remote queues may have changed.\nUsually it takes some time (up to several minutes)\nuntil such changes become known to the local host.\nPress <b>Refresh List</b> after some time to get an \nup-to-date list of available remote queues.\n</p>\n"
+ )
),
"AutoYaSToverview" => _(
"<p>\n<b><big>AutoYaST Print Queue Overview</big></b><br>\nAutoYaST supports only settings for printing with CUPS via network.<br>\nThere is no AutoYaST support to set up local print queues.\n</p>"
),
- "basic_add_dialog" => (((((_(
- "<p>\n<b><big>Set Up a New Queue for a Printer Device</big></b><br>\nA printer device is not used directly but via a print queue.<br>\nWhen various application programs submit print jobs simultaneously,\nthe jobs queue up and are sent one after the other to the printer device.<br>\nIt is possible to have several different print queues for the same printer device.\nUsually several print queues are needed when several different printer drivers\nshould be used for the same printer device.\nFor example a second queue with a monochrome-only driver\nto enforce black-only printout on a color device\nor a PostScript queue and a queue with a PCL driver for a PostScript+PCL printer\nbecause printing via the PCL driver is usually faster (but with less quality).\n</p>"
- ) + _(
- "<p>\nTo set up a new queue:<br>\nSelect the connection of the matching printer device,<br>\nfind and assign a suitable printer driver, and<br>\nset a unique queue name.\n</p>"
- )) + _(
- "<p>\nThe <b>connection</b> determines which way data is sent to the printer device.<br>\nIf a wrong connection is selected, no data can be sent to the device\nso that there cannot be any printout.<br>\nIf a printer device is accessible via more than one connection type,\nit is shown for each connection type.<br>\nIn particular HP devices are often accessible both via the 'usb:/...'\nand the 'hp:/...' connection.\nThe latter is provided by the HP driver package 'hplip'.\nFor plain printing, both kinds of connections should work, but for anything else\n(e.g. device status via 'hp-toolbox' or scanning with a HP all-in-one device)\nthe 'hp:/...' connection must be used.\n</p>\n"
- )) + _(
- "<p>\nThe <b>driver</b> determines that the right data is produced for the\nspecific printer model.<br>\nIf a wrong driver is assigned, wrong data is sent to the printer\nwhich results bad looking printout, chaotic printout, or no printout at all.<br>\nInitially the input field for the driver search string is preset\nwith the autodetected model name of the currently selected connection\nand those drivers where the driver description matches to the model name\nare shown by default.<br>\nIf driver descriptions match to the autodetected model name\nand if all matching driver descriptions seem to belong to the same model,\nthe driver descriptions are sorted so that the most reasonable driver\nshould be listed topmost and this one is automatically preselected.\nIf no driver is automatically preselected, you must manually\nfind and select an appropriate driver.<br>\nOn the other hand if a driver was automatically preselected,\nit does not necessarily mean that this driver is\na reasonable driver for your particular needs.\nStrictly speaking an automatically preselected driver\nmay not work at all for your particular printer model.\nThe reason is that the automated driver selection\ncan only work based upon comparison of strings\n(the autodetected model name and the driver descriptions)\nso that the result can be only a best-guess proposal\nhow to set up your particular printer model.<br>\nTherefore check if the currently preselected values make sense\nand feel free to play around and modify the settings\nto what you know what works best for your printer.<br>\nIf no driver description matches to the autodetected model name,\nit does not necessarily mean that there is no driver available for the model.\nOften only the model name in the driver descriptions\nis different from the autodetected model name.\nTherefore you can enter whatever you like as driver search string\nand search through all available driver descriptions.<br>\nUsually the default driver option settings should be reasonable\nso that the driver works for your particular printer model.\nSome driver option settings must match to your particular printer.\nIn particular the default paper size setting of the driver\nmust match to the paper which is actually loaded in your printer.\nYou can either explicitly select A4 or Letter as default paper size\nor select nothing to use the built-in default paper size of the driver\nwhich is also the fallback if the driver neither supports A4 nor Letter\n(for example a driver for a small-format photo printer).\nIf you like to adjust other driver options except A4 or Letter,\nyou must first set up the queue and then in a second step\nyou can adjust all driver options in the 'Edit/Modify' dialog.\n</p>"
- )) + _(
- "<p>\nApplication programs do not show the actual printer device\nbut its associated <b>queue name</b>.<br>\nOnly letters (a-z and A-Z), numbers (0-9), and the underscore '_'\nare allowed for the queue name and it must start with a letter.\n</p>"
- )) + _(
- "<p>\nOne of the print queues may be set to be <b>used by default</b>.<br>\nApplication programs should use such a system default print queue\nif no other print queue was specified by the user.\nBut there is no such thing as the 'one and only' default queue.\nBeside a system default queue any user can maintain his own\ndefault queue setting and furthermore any application program\nmay implement its own particular way of default queue setting\n(e.g. the application may remember the previously used queue).<br>\nFor details see the openSUSE support database\narticle 'Print Settings with CUPS' at<br>\nhttp://en.opensuse.org/SDB:Print_Settings_with_CUPS\n</p>"
- )) + _(
- "<p>\nAn alternative way to set up HP devices is to <b>run hp-setup</b>.<br>\nHP's own tool 'hp-setup' provides setup support in particular\nfor HP printers and HP all-in-one devices which require\na proprietary driver plugin to be downloaded from HP and\ninstalled in the right way on a particular end-user's system.\nFurthermore 'hp-setup' can provide better setup support\nfor HP network printers and HP all-in-one network devices\nbecause HP's own tool can implement special handling\nfor special HP network devices.<br>\nFor details see the openSUSE support database\narticle 'How to set-up a HP printer' at<br>\nhttp://en.opensuse.org/SDB:How_to_set-up_a_HP_printer\n</p>"
- ),
- "basic_modify_dialog" => ((_(
- "<p>\n<b><big>Modify a Print Queue</big></b><br>\nTo modify a queue, select only what you really want to be changed.<br>\n</p>"
- ) + _(
- "<p>\nThe <b>connection</b> determines how data is sent to the printer device.<br>\nIf a wrong connection is selected, no data can be sent to the device\nso that there cannot be any printout.<br>\nIf a printer device is accessible via more than one connection type,\nit is shown for each connection type.<br>\nIn particular HP devices are often accessible both via the 'usb:/...'\nand the 'hp:/...' connection.\nThe latter is provided by the HP driver package 'hplip'.\nFor plain printing, both kinds of connections should work, but for anything else\n(e.g. device status via 'hp-toolbox' or scanning with a HP all-in-one device)\nthe 'hp:/...' connection must be used.<br>\nWhen you exchange the currently used connection with another one,\nthe input field for the driver search string is preset\nwith the autodetected model name of the new selected connection.\nThe drivers for which the driver description matches the model name\nare shown by default.<br>\nIf driver descriptions match the autodetected model name\nand if all matching driver descriptions seem to belong to the same model,\nthe driver descriptions are sorted so that the most reasonable driver\nshould be listed topmost (but still below the currently used driver).\nOn the other hand, it does not necessarily mean that this driver is\na reasonable driver for your particular needs.\nThe topmost listed driver may not work at all for your particular \nprinter model. The automated driver selection\ncompares strings (the autodetected model name and the driver \ndescriptions) so the result can only be a best-guess proposal\nhow to set up your particular printer model.<br>\nTherefore check if the currently preselected values make sense.\nFeel free to play around and modify the settings\nto what you know works best for your printer.<br>\nIf no driver description matches the autodetected model name, it does \nnot necessarily mean that there is no driver available for the model.\nOften the model name in the driver descriptions\nis different from the autodetected model name.\nTherefore you can enter whatever you like as driver search string\nand search through all available driver descriptions.\n</p>\n"
- )) + _(
- "<p>\nThe <b>driver</b> determines that the right data is produced for the\nspecific printer model.<br>\nIf a wrong driver is assigned, wrong data is sent to the printer\nwhich results bad looking printout, chaotic printout, or no printout at all.<br>\nYou can either select another driver and modify its driver option settings later\nor keep the currently used driver and modify its driver option settings now.<br>\nSome driver option settings must match to your particular printer.\nFor example the default paper size setting of the driver\nmust match to the paper which is actually loaded in your printer.<br>\nFor other driver option settings you can choose what you like.\nFor example any choice of the available printing resolutions\nshould work for the particular driver.\nNevertheless it may happen that your particular printer fails to print\nwith high resolution. For example when you have a laser printer\nwhich has insufficient built-in memory to process high resolution pages.<br>\nWhen you exchange the currently used driver by another one,\nyou must first apply this change to the print queue\nso that the new driver is used for the queue\n(i.e. you must finish this dialog as a first step)\nand then in a second step you can adjust all driver options\nby using this dialog again.<br>\nInitially the input field for the driver search string is preset\nwith the description of the currently used driver when the connection was not changed.\nThis results usually only one single driver which matches\nso that you would have to enter a less specific driver search string\nto get also other drivers or you use the 'Find More' button.\nIf no driver matches, it does not mean that there is no driver available.\nTherefore you can enter whatever you like as driver search string\nand search through all available driver descriptions.\n</p>"
- )) + _(
- "<p>\nIn contrast to connection and driver where you must select the right one,\nyou are free to enter arbitrary strings for <b>description</b> and <b>location</b>.\nApplication programs often show description and location in the print dialog.\nTo make sure that those strings look correct in any language\nwhich a particular user of a particular application program may use,\nit is safe when you use only plain ASCII text without\nspecial characters e.g. only ASCII letters (a-z and A-Z),\nASCII numbers (0-9), and the ASCII space character (20 hex).\nUsually the description describes the model and optionally the driver\n(e.g. 'ACME FunPrinter 1000 using generic PCL driver')\nand the location describes where the printer is located\n(e.g. 'Room 123' or 'Front Desk').\n</p>"
- ),
- "driver_options_dialog" => (_(
- "<p>\n<b><big>Set Driver Options</big></b><br>\nUsually it is best to leave the driver defaults because\nthe defaults should be reasonable for most cases.<br>\nAdditionally, the print dialogs in most applications\nshow the driver options too so that each user can specify\ndriver options for each individual printout.<br>\nThe only setting which should be checked in any case is the paper size,\nwhich must be set to what is actually used by default in the printer.\n</p>\n"
- ) + _(
- "<p>\nNon-default settings may not work in all cases or have unexpected\nconsequences.<br> \nFor example, a high resolution setting may not work for a laser printer\nwhen its default built-in memory is insufficient to process high resolution\npages.<br> \nOr a high quality setting may print intolerably slow on an inkjet printer.\n</p>\n"
- )) + _(
- "<p>\nIn certain cases printer-specific driver settings\nmust be adjusted to get the full functionality of a printer.<br>\nIn particular, when the printer has optional units installed like\na duplex unit or optional paper feeders, the respective driver settings\nshould be checked and adjusted.<br>\nFor example, a duplex unit option must be set to 'installed' or 'true'\notherwise the driver may ignore duplex printing option settings.\n</p>\n"
- ),
- "add_driver_dialog" => _(
- "<p>\n<b><big>Add or Remove Printer Driver Packages</big></b><br>\nIf a printer driver package is not marked, it is not installed.\nSelect the package if you want to install it.<br>\nIf a printer driver package is marked, it is installed.\nDeselect the package if you want to remove it.\nIn the latter case, make sure that there is no printer configuration \nwhich needs the driver.<br>\n</p>\n"
- ) + _(
- "<p>\n<b><big>Add a Printer Description File</big></b><br>\nTo set up a printer configuration, a printer description file\n(PPD file) is required.<br>\nIf a PPD file is not located in the /usr/share/cups/model/ directory,\nit is not available to set up a printer configuration with it.\nTherefore you can specify the full path of a PPD file,\nwhich is located elsewhere on your system, to get it installed\nin the /usr/share/cups/model/ directory.<br>\nNote that a printer description file is not a driver.<br>\nFor non-PostScript printers the PPD file alone is\nnot sufficient to set up a working printer configuration.\nIn particular, it does not work for non-PostScript printers\nto download a PPD file from the Internet and then set up\nthe printer with such a PPD file.\nThe plain printer setup would work but actual printing\nwould not work because the driver would be missing.\nFor non-PostScript printers, you need a printer driver\nand a PPD file which matches exactly the particular driver.\nMatching PPD files are automatically installed at the right place\nwhen you install the above mentioned printer driver packages.<br>\nOnly for PostScript printers, a PPD file alone is usually\nsufficient to set up a working PostScript printer configuration.\nIn particular, it is sufficient when the PPD file does not\ncontain a 'cupsFilter' entry because such an entry would\nreference a printer driver.<br>\n</p>\n"
- ),
- "connection_wizard_dialog" => (((((_(
- "<p>\n<b><big>Specify the Connection</big></b><br>\nThe <b>connection</b> determines how data is sent to the printer device.<br>\nIf a wrong connection is used, no data can be sent to the device\nso that there cannot be any printout.\n</p>\n"
- ) + _(
- "<p>\n<b><big>Printer Device URI</big></b><br>\nA connection is specified as so called <b>device URI</b>.<br>\nIts first word (the so called URI scheme) specifies the kind of data-transfer,\nfor example 'parallel', 'usb', 'socket', 'lpd', or 'ipp'.<br>\nAfter the scheme there are more or less additional components\nwhich specify the details for this kind of data-transfer.<br>\nSpace characters are not allowed in an URI.\nTherefore a space character in a value of an URI component\nis encoded as '%20' (20 is the hexadecimal value of the space character).<br>\nThe components of an URI are separated by special reserved characters like\ncolon ':', slash '/', question mark '?', ampersand '&amp;', or equals sign '='.<br>\nFinally there could be optional parameters (separated by a question mark '?')\nof the form 'option1=value1&amp;option2=value2&amp;option3=value3' so that\na full device URI could be for example:<br>\nipp://server.domain:631/printers/queuename?waitjob=false&amp;waitprinter=false<br>\nSome examples:<br>\nA USB printer model 'Fun Printer 1000+' made by 'ACME'\nwith serial number 'A1B2C3' may have a device URI like:<br>\nusb://ACME/Fun%20Printer%201000%2B?serial=A1B2C3<br>\nA network printer with IP 192.168.100.1 which is accessible\nvia port 9100 may have a device URI like:<br>\nsocket://192.168.100.1:9100<br>\nA network printer with IP 192.168.100.2 which is accessible\nvia LPD protocol with a remote LPD queue name 'LPT1'\nmay have a device URI like:<br>\nlpd://192.168.100.2/LPT1\n</p>"
- )) + _(
- "<p>\n<b><big>Percent Encoding</big></b><br>\nThe issue is complicated.\nIt is recommended to avoid reserved characters and spaces\nfor component values in URIs if the values are under your control\n(e.g. you cannot avoid it when you must specify such characters\nin values for an URI to access a remote print queue\nbut the remote print queue is not under your control).\nWhenever possible use only so called 'unreserved characters'.\nUnreserved characters are uppercase and lowercase letters,\ndecimal digits, hyphen, period, underscore, and tilde.\nEven hyphen, period, tilde, and case sensitivity\ncould cause special issues in special cases\n(e.g. only letters, digits, and underscore are known to work\nfor a CUPS print queue name and case is not significant there).\nTherefore it is best to use only lowercase letters, digits,\nand underscore for all values in all URIs if possible.<br>\nReserved characters and space characters in the value of a component\nmust be percent-encoded (also known as URL encoding).<br>\nWhen an input field in the dialog is intended to enter\nonly a single value for a single component of the URI\n(e.g. separated input fields for username and password),\nyou must enter spaces and reserved characters literally\n(i.e. non-percent-encoded).\nFor such input fields all spaces and reserved characters\nwill be automatically percent-encoded.\nFor example if a password is actually 'Foo%20Bar' (non-percent-encoded),\nit must be entered literally in the password input field in the dialog.\nThe automated percent-encoding results 'Foo%2520Bar' which is how\nthe value of the password component is actually stored in the URI.<br>\nIn contrast when an input field in the dialog is intended to enter\nmore that a single value for a single component of the URI\n(e.g. a single input field for all optional parameters\nlike 'option1=value1&amp;option2=value2&amp;option3=value3'\nor a single input field to enter the whole URI),\nyou must enter spaces and reserved characters percent-encoded\nbecause an automated percent-encoding is no longer possible.\nAssume in an optional parameter 'option=value'\nthe value would be 'this&amp;that' so that the whole\noptional parameter would be 'option=this&amp;that' (literally).\nBut a literal '&amp;' character denotes\nthe separation of different optional parameters\nso that 'option=this&amp;that' in an URI means\na first optional parameter 'option=this' and\na second optional parameter which is only 'that'.\nTherefore a single optional parameter 'option=this&amp;that'\nmust be entered percent-encoded as 'option=this%26that'<br>\nInput fields which require percent-encoded input\nare denoted by a '[percent-encoded]' hint.<br>\nListing of characters and their percent encoding:<br>\nspace ' ' is percent encoded as %20<br>\nexclamation mark ! is percent encoded as %21<br>\nnumber sign # is percent encoded as %23<br>\nDollar sign $ is percent encoded as %24<br>\npercentage % is percent encoded as %25<br>\nampersand &amp; is percent encoded as %26<br>\napostrophe / single quotation mark ' is percent encoded as %27<br>\nleft parenthesis ( is percent encoded as %28<br>\nright parenthesis ) is percent encoded as %29<br>\nasterisk * is percent encoded as %2A<br>\nplus sign + is percent encoded as %2B<br>\ncomma , is percent encoded as %2C<br>\nslash / is percent encoded as %2F<br>\ncolon : is percent encoded as %3A<br>\nsemicolon ; is percent encoded as %3B<br>\nequals sign = is percent encoded as %3D<br>\nquestion mark ? is percent encoded as %3F<br>\nat sign @ is percent encoded as %40<br>\nleft bracket [ is percent encoded as %5B<br>\nright bracket ] is percent encoded as %5D<br>\nFor details see 'Uniform Resource Identifier (URI): Generic Syntax' at<br>\nhttp://tools.ietf.org/html/rfc3986\n</p>"
- )) + _(
- "<p>\n<b><big>Device URIs for Directly Connected Devices</big></b><br>\nDevices which are connected via the parallel port or via USB\nare autodetected and the appropriate device URI is autogenerated.\nFor example:<br>\nparallel:/dev/lp0<br>\nusb://ACME/Fun%20Printer?serial=A1B2C3<br>\nhp:/usb/HP_LaserJet?serial=1234<br>\nUsually only the autogenerated device URIs work.\nWhen the device is not autodetected, there is usually no communication\nwith the device possible and no data can be sent to the device.<br>\nTo access a HP printer or all-in-one device via the backend 'hp',\nthe RPM package hplip must be installed.\nThe package provides HP's printing and scanning software HPLIP.<br>\nIn contrast devices which are connected via serial port or bluetooth\nare not autodetected so that the device URI must be manually specified.\nThe serial device URI parameters must comply with\nwhat the serial port in the printer requires,\nsee the manual of your serial printer.\nExample device URIs:<br>\nserial:/dev/ttyS9?baud=9600+bits=8+parity=none+flow=soft+stop=1<br>\nbluetooth://1A2B3C4D5E6F<br>\nTo access a device via bluetooth, the RPM package bluez-cups must be installed.\nThe package provides the CUPS backend 'bluetooth' which actually sends the data\nto a bluetooth printer.\n</p>"
- )) + _(
- "<p>\n<b><big>Device URIs to Access a Network Printer or a Printserver Box</big></b><br>\nA printserver box is a small device with a network connection\nand a USB or parallel port connection to connect the actual printer.\nA network printer has such a device built-in.\nAccess happens via three different network protocols.\nSee the manual of your network printer or printserver box\nto find out what your particular device supports:<br>\n<b>TCP Port (AppSocket/JetDirect)</b><br>\nThe IP address and a port number is needed to access it.\nOften the port number 9100 is the right one.\nIt is the simplest, fastest, and generally the most reliable protocol.\nThe matching device URI is:<br>\nsocket://ip-address:port-number<br>.\n<b>Line Printer Daemon (LPD) Protocol</b><br>\nA LPD runs on the device and provides one or more LPD queues.\nThe IP address and a LPD queue name is needed to access it.\nAlmost all network printers and printserver boxes support it.\nOften an arbitrary queue name or 'LPT1' works.\nBut using a correct LPD queue which does not change\nthe data or add additional formfeeds or banner pages\ncould be essential for reliable printing.\nThe matching device URI is:<br>\nlpd://ip-address/queue<br>.\n<b>Internet Printing Protocol (IPP)</b><br>\nIPP is the native protocol for CUPS running on a real computer,\nbut if IPP is implemented in a small printserver box,\nit is often not implemented properly. Only use IPP if the vendor\nactually documents official support for it. \nThe matching device URI is:<br>\nipp://ip-address:port-number/resource<br>.\nWhat 'port-number' and 'resource' exactly is depends\non the particular network printer or printserver box model.<br>\nFor <b>more information</b> have a look at<br>\nhttp://www.cups.org/documentation.php/network.html\n</p>\n"
- )) + _(
- "<p>\n<b><big>Device URIs to Print Via a Print Server Machine</big></b><br>\nIn contrast to a printserver box a print server machine\nmeans a real computer which offers a print service.<br>\nAccess happens via various different network protocols.\nAsk your network administrator what which print server machine\nprovides in your particular network:<br>\n<b>Windows (R) or Samba (SMB/CIFS)</b><br>\nTo access a SMB printer share, the RPM package samba-client must be installed.\nThe package provides the CUPS backend 'smb' which is a link to\nthe <tt>/usr/bin/smbspool</tt> program which actually sends the data\nto a SMB printer share.<br>\nA server name and a printer share name and optionally a workgroup name\nis needed to access it.\nFurthermore a user name and a password may be required to get access.\nHave in mind that spaces and special characters in those values\nmust be percent-encoded (see above).<br>\nBy default CUPS runs backends (here smbspool) as user 'lp'.\nWhen printing in an Active Directory (R) environment (AD)\nthe user 'lp' is not allowed to print in this environment\nso that the traditional way to print via smbspool as user 'lp'\nwould not work.<br>\nFor printing in an AD environment additionally\nthe RPM package samba-krb-printing must be installed.\nIn this case the CUPS backend 'smb' link\nis changed to <tt>/usr/bin/get_printing_ticket</tt>\nwhich is a wrapper to run smbspool as the original user\nwho submitted a particular print job.\nWhen the Kerberos protocol is used for authentication\nin an AD environment, a user gets a ticket granting ticket (TGT)\nvia the display manager during login at the Gnome or KDE desktop.\nWhen smbspool is run as the original user who submitted\na particular print job, it can access the TGT of this user\nand use it to pass the printing data to the SMB printer share\neven in an AD environment with Kerberos authentication.\nIn this case neither a fixed user name nor a fixed password\nhas to be specified for authentication.\nA precondition is that get_printing_ticket runs on the same host\nwhere the user who submitted a particular print job is logged in.\nThis means that it must be set up on the workstation\nfor the particular user who will submit such print jobs\nand the user's workstation must send its printing data\ndirectly to the SMB printer share in the AD environment.\nIn particular it does not work on a separated CUPS server machine\nwhere users who submit print jobs are not logged in.<br>\nFor the traditional way a matching full device URI is:<br>\nsmb://username:password@workgroup/server/printer<br>\nFor example 'John Doe' with password '@home!' may use something like\nthe following device URI to access a 'Fun Printer 1000+' share:<br>\nsmb://John%20Doe:%40home%21@MYGROUP/homeserver/Fun%20Printer%201000%2B<br>\nFor <b>more information</b> have a look at <tt>man smbspool</tt> and<br>\nhttp://en.opensuse.org/SDB:Printing_via_SMB_(Samba)_Share_or_Windows_Share<br>\n'Windows' and 'Active Directory' are registered trademarks\nof Microsoft Corporation in the United States and/or other countries.<br>\n<b>Traditional UNIX Server (LPR)</b><br>\nA Line Printer Daemon (LPD) runs on a traditional UNIX server\nand provides one or more LPD queues.\nThe IP address and a LPD queue name is needed to access it.\nThe matching device URI is:<br>\nlpd://ip-address/queue<br>\n<b>CUPS Server</b><br>\nUsually you should not set up a local print queue to access\na remote queue on a CUPS server. Instead do the setup\nin the <b>Print Via Network</b> dialog.\nOnly if you really know that you must set up a local print queue\nto access a remote queue on a CUPS server proceed here.<br>\nIPP is the native protocol for CUPS which runs on a server.\nThe official IANA port for IPP is 631.\nThe matching device URI is:<br>\nipp://ip-address:631/printers/queue<br>\n<b>Novell Netware Print Server (IPX)</b><br>\nTo access print queues on a Novell Netware print server,\nthe RPM package ncpfs must be installed.\nThe package provides the CUPS backend 'novell' which runs\nthe <tt>nprint</tt> program which actually sends the data\nto a Novell Netware print queue.\nA server name and a printer queue name is needed to access it.\nFurthermore a user name and a password may be required to get access.\nThe matching device URI is:<br>\nnovell://username:password@server/queue<br>\nFor <b>more information</b> have a look at <tt>man nprint</tt> and\nthe other documentation in the RPM package ncpfs.\n</p>"
- )) + _(
- "<p>\n<b><big>Special Device URIs</big></b><br>\n<b>Specify an Arbitrary Device URI</b>\nif you know the exact right device URI for your particular case\nor to modify an existing device URI in a special way.<br>\n<b>Send Print Data to Other Program (pipe)</b><br>\nTo do this, the RPM package cups-backends must be installed.\nThe package provides the CUPS backend 'pipe' which runs\nthe program that you specified here.\nThe matching device URI is:<br>\npipe:/path/to/targetcommand<br>\n<b>Daisy-chain Backend Error Handler (beh)</b><br>\nTo do this, the RPM package foomatic-filters must be installed.\nThe package provides the CUPS backend 'beh'.<br>\nThe backend 'beh' is a wrapper for the usual backend,\nwhich is then called by beh.\nThis way beh can, depending on its configuration,\nrepeat the call of the backend or simply hide the error status\nof the backend from being seen by the CUPS daemon.\nThe matching device URI is:<br>\nbeh:/nodisable/attempts/delay/originalDeviceURI<br>\nIf nodisable is '1' beh always exits successfully\nso that the queue gets never disabled but on the other hand\nprint jobs are lost if there is an error.<br>\nAttempts is the number of attempts to recall the backend\nin case of an error. '0' means infinite retries.<br>\nDelay is the number of seconds between two attempts\nto call the backend.<br>\nThe last parameter is the original URI, which the queue had before.<br>\nExample:<br>\nbeh:/1/3/5/socket://ip-address:port-number<br>\nThe beh backend tries to access a network printer 3 times with 5 second delay\nbetween the attempts. If access still fails, the queue is not disabled\nand the print job is lost.<br>\nFor <b>more information</b> have a look at <tt>/usr/lib[64]/cups/backend/beh</tt> and<br>\nhttp://www.linuxfoundation.org/en/OpenPrinting/Database/BackendErrorHandler\n</p>"
- ),
- "printing_via_network_dialog" => ((_(
- "<p>\n<b><big>Printing Via Network</big></b><br>\nUsually CUPS (Common Unix Printing System) is used to print via network.<br>\nBy default CUPS uses its so called 'Browsing' mode\nto make printers available via network.<br>\nIn this case remote CUPS servers must publish their printers via network\nand accordingly on your host the CUPS daemon process (cupsd) must run\nwhich is listening for incoming information about published printers.<br>\nCUPS Browsing information is received via UDP port 631.<br>\nRegarding firewall:<br>\nCheck if a firewall is active for a network zone\nin which printers are published via network.\nBy default the SuSEfirewall allows any incoming information\nvia a network interface which belongs to the 'internal zone'\nbecause this zone is trusted by default.<br>\nIt does not make sense to do printing in a trusted internal network\nwith a network interface which belongs to the untrusted 'external zone'\n(the latter is the default setting for network interfaces to be safe).\nIn particular do not disable firewall protection for CUPS\n(i.e. for IPP which uses TCP port 631 and UDP port 631)\nfor the untrusted 'external zone'.<br>\nTo use remote printers in a trusted internal network\nand be protected by the firewall against unwanted access\nfrom any external network (in particular from the Internet),\nassign the network interface which belongs to the internal network\nto the internal zone of the firewall.\nUse the YaST Firewall setup module to do this fundamental setup\nto gain security plus usefulness in your network\nand using remote printers in a trusted internal network\nwill work without any further firewall setup.<br>\nFor details see the openSUSE support database\narticle 'CUPS and SANE Firewall settings' at<br>\nhttp://en.opensuse.org/SDB:CUPS_and_SANE_Firewall_settings\n</p>"
- ) + _(
- "<p>\nIf you can access remote CUPS servers for printing\nbut those servers do not publish their printer information via network\nor when you cannot accept incoming information about published printers\n(e.g. because you must have firewall protection for the network zone\nin which printers are published), you can request printer information\nfrom CUPS servers (provided the CUPS servers allow your access).<br>\nFor each CUPS server which is requested, a cups-polld process\nis launched by the CUPS daemon process (cupsd) on your host.\nBy default each cups-polld polls a remote CUPS server\nevery 30 seconds for printer information.\n</p>"
- )) + _(
- "<p>\nIf you print only via network and if you use only one single CUPS server,\nthere is no need to use CUPS Browsing and have a CUPS daemon running on your host.\nInstead it is simpler to specify the CUPS server and access it directly.<br>\nA possible drawback is that application programs may be delayed\nfor some time (until a timeout happens) when they try\nto access the CUPS server but it is actually not available\n(e.g. while traveling with a laptop). Usually it is a host name\nresolution (DNS) timeout which causes the delay so that it may help\nto have a hardcoded entry for the CUPS server in the /etc/hosts file.\n</p>"
- )) + _(
- "<p>\nYou have to set up an appropriate print queue on your host\nif there is no CUPS server in your network,\nor when you must access a network printer directly,\nor when you use another kind of print server\ne.g. when printing via a Windows (R) or Samba server\nor when printing via a traditional Unix server.<br>\n'Windows' is a registered trademark\nof Microsoft Corporation in the United States and/or other countries.\n</p>"
- ),
- "sharing_dialog" => ((_(
- "<p>\n<b><big>Sharing Print Queues and Publish Them Via Network</big></b><br>\nUsually CUPS (Common Unix Printing System) should be set up to use\nits so called 'Browsing' mode to make printers available via network.<br>\nIn this case CUPS servers publish their local print queues via network\nand accordingly on CUPS client systems the CUPS daemon process (cupsd) must run\nwhich is listening for incoming information about published printers.<br>\nCUPS Browsing information is received via UDP port 631.\n</p>"
- ) + _(
- "<p>\nFirst of all CUPS client systems must be allowed to access the CUPS server.\nThen specify whether or not printers should be published to the clients.<br>\nIn a local network the usual way to set up CUPS Browsing is\nto allow remote access for all hosts in the local network\nand to publish printers to all those hosts.<br>\nIt is not required to publish printers in any case.<br>\nIf you have only one single CUPS server, there is no need to use CUPS Browsing.\nInstead it is simpler to specify the CUPS server on the client systems\n(via 'Printing Via Network') so that the clients access the server directly.\n</p>"
- )) + _(
- "<p>\nThere are various ways which can coexist how to specify\nwhich remote hosts are allowed to access the CUPS server.<br>\nAllow remote access for computers within the local network\nwill allow access from all hosts in the local network.\nA remote host is in the local network when it has an IP address\nthat belongs to the same network as the CUPS server\nand when the network connection of the host\nuses a non-PPP interface on the CUPS server\n(an interface whose IFF_POINTOPOINT flag is not set).<br>\nAlternatively or additionally an explicite list of network interfaces\nfrom which remote access is allowed can be specified.<br>\nAlternatively or additionally an explicite list of\nallowed IP addresses and/or networks can be specified.\n</p>"
- )) + _(
- "<p>\nRegarding firewall:<br>\nA firewall is used to protect running server processes\n(in this case the CUPS server process 'cupsd')\non your host against unwanted access via network.<br>\nPrinting via network happens in a trusted internal network\n(nobody lets arbitrary users from whatever external network\nprint on his printer) and usually the users need\nphysical printer access to get their paper output.<br>\nBy default the SuSEfirewall lets any network traffic pass\nvia a network interface which belongs to the 'internal zone'\nbecause this zone is trusted by default.<br>\nIt does not make sense to do printing in a trusted internal network\nwith a network interface which belongs to the untrusted 'external zone'\n(the latter is the default setting for network interfaces to be safe).\nDo not disable firewall protection for CUPS\n(i.e. for IPP which uses TCP port 631 and UDP port 631)\nfor the untrusted 'external zone'.<br>\nTo make printers accessible in a trusted internal network\nand be protected by the firewall against unwanted access\nfrom any external network (in particular from the Internet),\nassign the network interface which belongs to the internal network\nto the internal zone of the firewall.\nUse the YaST Firewall setup module to do this fundamental setup\nto gain security plus usefulness in your network and\nsharing printers in a trusted internal network\nwill work without any further firewall setup.<br>\nFor details see the openSUSE support database\narticle 'CUPS and SANE Firewall settings' at<br>\nhttp://en.opensuse.org/SDB:CUPS_and_SANE_Firewall_settings\n</p>"
- ),
- "policies" => _(
- "<p>\n<b><big>CUPS Operation Policy</big></b><br>\nOperation policies are the rules used for each operation in CUPS.\nSuch operations are for example 'print something', 'cancel a printout',\n'configure a printer', 'modify or remove a printer configuration',\nand 'enable or disable printing'.\n</p>"
- ) + _(
- "<p>\n<b><big>CUPS Error Policy</big></b><br>\nThe error policy defines the default policy that is used when\nCUPS fails to send a print job to the printer device.<br>\nDepending on the particular way how the printer is connected\n(for example 'parallel', 'usb', 'socket', 'lpd', or 'ipp'),\nand depending on the actual kind of failure,\nthe CUPS backend which actually sends the data to the printer\ncan overwrite the default error policy\nand enforce another error policy (see <tt>man backend</tt>).\nFor example it can stop any further printing attempt\neven when the default error policy is to retry the job.\nThis could happen when any attempt to establish\nthe communication with the printer is useless\nso that it does no make sense to retry the job.\n<br>\nThe following error policies exist:<br>\nStop the printer and keep the job for future printing.<br>\nRe-send the job from the beginning after waiting some time (30 seconds by default).<br>\nAbort and delete the job and proceed with the next job.\n</p>"
- ),
- "autoconfig" => _(
- "<p>\n<b><big>Automatic Configuration for Local Connected Printers</big></b><br>\nCheck the check box to run YaST's automatic configuration\nfor printers which are connected to the local host.<br>\nFor each autodetected local connected printer,\nYaST tests if there exists already a configuration.\nIf there is not yet a configuration,\nYaST tries to find a matching driver for the printer\nand if one is found, the printer is configured.<br>\nThe resulting configuration is basically the same\nas if one would have selected an autodetected printer\nin the 'Add New Printer Configuration' dialog\nand accepted whatever preselected values there.\n</p>"
- ) + _(
- "<p>\n<b><big>Automatic Configuration for USB Printers</big></b><br>\nThe RPM package 'udev-configure-printer' provides\nautomatic configuration when USB printers are plugged in.<br>\nWhen its check box is initially not checked, it is not installed\nand then you can select it so that it will be installed.<br>\nWhen its check box is initially checked, it is already installed\nand then you can un-select it so that it will be removed.<br>\nWhen udev-configure-printer is installed,\nautomatic USB printer configuration happens via the entries\nin its udev config file /lib/udev/rules.d/70-printers.rules\nwhich triggers to run 'udev-configure-printer add'\nwhen a USB printer is plugged in\nand 'udev-configure-printer remove' when it is unplugged.\nThere are no adjustable settings for udev-configure-printer\nexcept one changes the 70-printers.rules file manually.\n</p>"
+ "basic_add_dialog" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>\n<b><big>Set Up a New Queue for a Printer Device</big></b><br>\nA printer device is not used directly but via a print queue.<br>\nWhen various application programs submit print jobs simultaneously,\nthe jobs queue up and are sent one after the other to the printer device.<br>\nIt is possible to have several different print queues for the same printer device.\nUsually several print queues are needed when several different printer drivers\nshould be used for the same printer device.\nFor example a second queue with a monochrome-only driver\nto enforce black-only printout on a color device\nor a PostScript queue and a queue with a PCL driver for a PostScript+PCL printer\nbecause printing via the PCL driver is usually faster (but with less quality).\n</p>"
+ ),
+ _(
+ "<p>\nTo set up a new queue:<br>\nSelect the connection of the matching printer device,<br>\nfind and assign a suitable printer driver, and<br>\nset a unique queue name.\n</p>"
+ )
+ ),
+ _(
+ "<p>\nThe <b>connection</b> determines which way data is sent to the printer device.<br>\nIf a wrong connection is selected, no data can be sent to the device\nso that there cannot be any printout.<br>\nIf a printer device is accessible via more than one connection type,\nit is shown for each connection type.<br>\nIn particular HP devices are often accessible both via the 'usb:/...'\nand the 'hp:/...' connection.\nThe latter is provided by the HP driver package 'hplip'.\nFor plain printing, both kinds of connections should work, but for anything else\n(e.g. device status via 'hp-toolbox' or scanning with a HP all-in-one device)\nthe 'hp:/...' connection must be used.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>\nThe <b>driver</b> determines that the right data is produced for the\nspecific printer model.<br>\nIf a wrong driver is assigned, wrong data is sent to the printer\nwhich results bad looking printout, chaotic printout, or no printout at all.<br>\nInitially the input field for the driver search string is preset\nwith the autodetected model name of the currently selected connection\nand those drivers where the driver description matches to the model name\nare shown by default.<br>\nIf driver descriptions match to the autodetected model name\nand if all matching driver descriptions seem to belong to the same model,\nthe driver descriptions are sorted so that the most reasonable driver\nshould be listed topmost and this one is automatically preselected.\nIf no driver is automatically preselected, you must manually\nfind and select an appropriate driver.<br>\nOn the other hand if a driver was automatically preselected,\nit does not necessarily mean that this driver is\na reasonable driver for your particular needs.\nStrictly speaking an automatically preselected driver\nmay not work at all for your particular printer model.\nThe reason is that the automated driver selection\ncan only work based upon comparison of strings\n(the autodetected model name and the driver descriptions)\nso that the result can be only a best-guess proposal\nhow to set up your particular printer model.<br>\nTherefore check if the currently preselected values make sense\nand feel free to play around and modify the settings\nto what you know what works best for your printer.<br>\nIf no driver description matches to the autodetected model name,\nit does not necessarily mean that there is no driver available for the model.\nOften only the model name in the driver descriptions\nis different from the autodetected model name.\nTherefore you can enter whatever you like as driver search string\nand search through all available driver descriptions.<br>\nUsually the default driver option settings should be reasonable\nso that the driver works for your particular printer model.\nSome driver option settings must match to your particular printer.\nIn particular the default paper size setting of the driver\nmust match to the paper which is actually loaded in your printer.\nYou can either explicitly select A4 or Letter as default paper size\nor select nothing to use the built-in default paper size of the driver\nwhich is also the fallback if the driver neither supports A4 nor Letter\n(for example a driver for a small-format photo printer).\nIf you like to adjust other driver options except A4 or Letter,\nyou must first set up the queue and then in a second step\nyou can adjust all driver options in the 'Edit/Modify' dialog.\n</p>"
+ )
+ ),
+ _(
+ "<p>\nApplication programs do not show the actual printer device\nbut its associated <b>queue name</b>.<br>\nOnly letters (a-z and A-Z), numbers (0-9), and the underscore '_'\nare allowed for the queue name and it must start with a letter.\n</p>"
+ )
+ ),
+ _(
+ "<p>\nOne of the print queues may be set to be <b>used by default</b>.<br>\nApplication programs should use such a system default print queue\nif no other print queue was specified by the user.\nBut there is no such thing as the 'one and only' default queue.\nBeside a system default queue any user can maintain his own\ndefault queue setting and furthermore any application program\nmay implement its own particular way of default queue setting\n(e.g. the application may remember the previously used queue).<br>\nFor details see the openSUSE support database\narticle 'Print Settings with CUPS' at<br>\nhttp://en.opensuse.org/SDB:Print_Settings_with_CUPS\n</p>"
+ )
+ ),
+ _(
+ "<p>\nAn alternative way to set up HP devices is to <b>run hp-setup</b>.<br>\nHP's own tool 'hp-setup' provides setup support in particular\nfor HP printers and HP all-in-one devices which require\na proprietary driver plugin to be downloaded from HP and\ninstalled in the right way on a particular end-user's system.\nFurthermore 'hp-setup' can provide better setup support\nfor HP network printers and HP all-in-one network devices\nbecause HP's own tool can implement special handling\nfor special HP network devices.<br>\nFor details see the openSUSE support database\narticle 'How to set-up a HP printer' at<br>\nhttp://en.opensuse.org/SDB:How_to_set-up_a_HP_printer\n</p>"
+ )
+ ),
+ "basic_modify_dialog" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>\n<b><big>Modify a Print Queue</big></b><br>\nTo modify a queue, select only what you really want to be changed.<br>\n</p>"
+ ),
+ _(
+ "<p>\nThe <b>connection</b> determines how data is sent to the printer device.<br>\nIf a wrong connection is selected, no data can be sent to the device\nso that there cannot be any printout.<br>\nIf a printer device is accessible via more than one connection type,\nit is shown for each connection type.<br>\nIn particular HP devices are often accessible both via the 'usb:/...'\nand the 'hp:/...' connection.\nThe latter is provided by the HP driver package 'hplip'.\nFor plain printing, both kinds of connections should work, but for anything else\n(e.g. device status via 'hp-toolbox' or scanning with a HP all-in-one device)\nthe 'hp:/...' connection must be used.<br>\nWhen you exchange the currently used connection with another one,\nthe input field for the driver search string is preset\nwith the autodetected model name of the new selected connection.\nThe drivers for which the driver description matches the model name\nare shown by default.<br>\nIf driver descriptions match the autodetected model name\nand if all matching driver descriptions seem to belong to the same model,\nthe driver descriptions are sorted so that the most reasonable driver\nshould be listed topmost (but still below the currently used driver).\nOn the other hand, it does not necessarily mean that this driver is\na reasonable driver for your particular needs.\nThe topmost listed driver may not work at all for your particular \nprinter model. The automated driver selection\ncompares strings (the autodetected model name and the driver \ndescriptions) so the result can only be a best-guess proposal\nhow to set up your particular printer model.<br>\nTherefore check if the currently preselected values make sense.\nFeel free to play around and modify the settings\nto what you know works best for your printer.<br>\nIf no driver description matches the autodetected model name, it does \nnot necessarily mean that there is no driver available for the model.\nOften the model name in the driver descriptions\nis different from the autodetected model name.\nTherefore you can enter whatever you like as driver search string\nand search through all available driver descriptions.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>\nThe <b>driver</b> determines that the right data is produced for the\nspecific printer model.<br>\nIf a wrong driver is assigned, wrong data is sent to the printer\nwhich results bad looking printout, chaotic printout, or no printout at all.<br>\nYou can either select another driver and modify its driver option settings later\nor keep the currently used driver and modify its driver option settings now.<br>\nSome driver option settings must match to your particular printer.\nFor example the default paper size setting of the driver\nmust match to the paper which is actually loaded in your printer.<br>\nFor other driver option settings you can choose what you like.\nFor example any choice of the available printing resolutions\nshould work for the particular driver.\nNevertheless it may happen that your particular printer fails to print\nwith high resolution. For example when you have a laser printer\nwhich has insufficient built-in memory to process high resolution pages.<br>\nWhen you exchange the currently used driver by another one,\nyou must first apply this change to the print queue\nso that the new driver is used for the queue\n(i.e. you must finish this dialog as a first step)\nand then in a second step you can adjust all driver options\nby using this dialog again.<br>\nInitially the input field for the driver search string is preset\nwith the description of the currently used driver when the connection was not changed.\nThis results usually only one single driver which matches\nso that you would have to enter a less specific driver search string\nto get also other drivers or you use the 'Find More' button.\nIf no driver matches, it does not mean that there is no driver available.\nTherefore you can enter whatever you like as driver search string\nand search through all available driver descriptions.\n</p>"
+ )
+ ),
+ _(
+ "<p>\nIn contrast to connection and driver where you must select the right one,\nyou are free to enter arbitrary strings for <b>description</b> and <b>location</b>.\nApplication programs often show description and location in the print dialog.\nTo make sure that those strings look correct in any language\nwhich a particular user of a particular application program may use,\nit is safe when you use only plain ASCII text without\nspecial characters e.g. only ASCII letters (a-z and A-Z),\nASCII numbers (0-9), and the ASCII space character (20 hex).\nUsually the description describes the model and optionally the driver\n(e.g. 'ACME FunPrinter 1000 using generic PCL driver')\nand the location describes where the printer is located\n(e.g. 'Room 123' or 'Front Desk').\n</p>"
+ )
+ ),
+ "driver_options_dialog" => Ops.add(
+ Ops.add(
+ _(
+ "<p>\n<b><big>Set Driver Options</big></b><br>\nUsually it is best to leave the driver defaults because\nthe defaults should be reasonable for most cases.<br>\nAdditionally, the print dialogs in most applications\nshow the driver options too so that each user can specify\ndriver options for each individual printout.<br>\nThe only setting which should be checked in any case is the paper size,\nwhich must be set to what is actually used by default in the printer.\n</p>\n"
+ ),
+ _(
+ "<p>\nNon-default settings may not work in all cases or have unexpected\nconsequences.<br> \nFor example, a high resolution setting may not work for a laser printer\nwhen its default built-in memory is insufficient to process high resolution\npages.<br> \nOr a high quality setting may print intolerably slow on an inkjet printer.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>\nIn certain cases printer-specific driver settings\nmust be adjusted to get the full functionality of a printer.<br>\nIn particular, when the printer has optional units installed like\na duplex unit or optional paper feeders, the respective driver settings\nshould be checked and adjusted.<br>\nFor example, a duplex unit option must be set to 'installed' or 'true'\notherwise the driver may ignore duplex printing option settings.\n</p>\n"
+ )
+ ),
+ "add_driver_dialog" => Ops.add(
+ _(
+ "<p>\n<b><big>Add or Remove Printer Driver Packages</big></b><br>\nIf a printer driver package is not marked, it is not installed.\nSelect the package if you want to install it.<br>\nIf a printer driver package is marked, it is installed.\nDeselect the package if you want to remove it.\nIn the latter case, make sure that there is no printer configuration \nwhich needs the driver.<br>\n</p>\n"
+ ),
+ _(
+ "<p>\n<b><big>Add a Printer Description File</big></b><br>\nTo set up a printer configuration, a printer description file\n(PPD file) is required.<br>\nIf a PPD file is not located in the /usr/share/cups/model/ directory,\nit is not available to set up a printer configuration with it.\nTherefore you can specify the full path of a PPD file,\nwhich is located elsewhere on your system, to get it installed\nin the /usr/share/cups/model/ directory.<br>\nNote that a printer description file is not a driver.<br>\nFor non-PostScript printers the PPD file alone is\nnot sufficient to set up a working printer configuration.\nIn particular, it does not work for non-PostScript printers\nto download a PPD file from the Internet and then set up\nthe printer with such a PPD file.\nThe plain printer setup would work but actual printing\nwould not work because the driver would be missing.\nFor non-PostScript printers, you need a printer driver\nand a PPD file which matches exactly the particular driver.\nMatching PPD files are automatically installed at the right place\nwhen you install the above mentioned printer driver packages.<br>\nOnly for PostScript printers, a PPD file alone is usually\nsufficient to set up a working PostScript printer configuration.\nIn particular, it is sufficient when the PPD file does not\ncontain a 'cupsFilter' entry because such an entry would\nreference a printer driver.<br>\n</p>\n"
+ )
+ ),
+ "connection_wizard_dialog" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>\n<b><big>Specify the Connection</big></b><br>\nThe <b>connection</b> determines how data is sent to the printer device.<br>\nIf a wrong connection is used, no data can be sent to the device\nso that there cannot be any printout.\n</p>\n"
+ ),
+ _(
+ "<p>\n<b><big>Printer Device URI</big></b><br>\nA connection is specified as so called <b>device URI</b>.<br>\nIts first word (the so called URI scheme) specifies the kind of data-transfer,\nfor example 'parallel', 'usb', 'socket', 'lpd', or 'ipp'.<br>\nAfter the scheme there are more or less additional components\nwhich specify the details for this kind of data-transfer.<br>\nSpace characters are not allowed in an URI.\nTherefore a space character in a value of an URI component\nis encoded as '%20' (20 is the hexadecimal value of the space character).<br>\nThe components of an URI are separated by special reserved characters like\ncolon ':', slash '/', question mark '?', ampersand '&amp;', or equals sign '='.<br>\nFinally there could be optional parameters (separated by a question mark '?')\nof the form 'option1=value1&amp;option2=value2&amp;option3=value3' so that\na full device URI could be for example:<br>\nipp://server.domain:631/printers/queuename?waitjob=false&amp;waitprinter=false<br>\nSome examples:<br>\nA USB printer model 'Fun Printer 1000+' made by 'ACME'\nwith serial number 'A1B2C3' may have a device URI like:<br>\nusb://ACME/Fun%20Printer%201000%2B?serial=A1B2C3<br>\nA network printer with IP 192.168.100.1 which is accessible\nvia port 9100 may have a device URI like:<br>\nsocket://192.168.100.1:9100<br>\nA network printer with IP 192.168.100.2 which is accessible\nvia LPD protocol with a remote LPD queue name 'LPT1'\nmay have a device URI like:<br>\nlpd://192.168.100.2/LPT1\n</p>"
+ )
+ ),
+ _(
+ "<p>\n<b><big>Percent Encoding</big></b><br>\nThe issue is complicated.\nIt is recommended to avoid reserved characters and spaces\nfor component values in URIs if the values are under your control\n(e.g. you cannot avoid it when you must specify such characters\nin values for an URI to access a remote print queue\nbut the remote print queue is not under your control).\nWhenever possible use only so called 'unreserved characters'.\nUnreserved characters are uppercase and lowercase letters,\ndecimal digits, hyphen, period, underscore, and tilde.\nEven hyphen, period, tilde, and case sensitivity\ncould cause special issues in special cases\n(e.g. only letters, digits, and underscore are known to work\nfor a CUPS print queue name and case is not significant there).\nTherefore it is best to use only lowercase letters, digits,\nand underscore for all values in all URIs if possible.<br>\nReserved characters and space characters in the value of a component\nmust be percent-encoded (also known as URL encoding).<br>\nWhen an input field in the dialog is intended to enter\nonly a single value for a single component of the URI\n(e.g. separated input fields for username and password),\nyou must enter spaces and reserved characters literally\n(i.e. non-percent-encoded).\nFor such input fields all spaces and reserved characters\nwill be automatically percent-encoded.\nFor example if a password is actually 'Foo%20Bar' (non-percent-encoded),\nit must be entered literally in the password input field in the dialog.\nThe automated percent-encoding results 'Foo%2520Bar' which is how\nthe value of the password component is actually stored in the URI.<br>\nIn contrast when an input field in the dialog is intended to enter\nmore that a single value for a single component of the URI\n(e.g. a single input field for all optional parameters\nlike 'option1=value1&amp;option2=value2&amp;option3=value3'\nor a single input field to enter the whole URI),\nyou must enter spaces and reserved characters percent-encoded\nbecause an automated percent-encoding is no longer possible.\nAssume in an optional parameter 'option=value'\nthe value would be 'this&amp;that' so that the whole\noptional parameter would be 'option=this&amp;that' (literally).\nBut a literal '&amp;' character denotes\nthe separation of different optional parameters\nso that 'option=this&amp;that' in an URI means\na first optional parameter 'option=this' and\na second optional parameter which is only 'that'.\nTherefore a single optional parameter 'option=this&amp;that'\nmust be entered percent-encoded as 'option=this%26that'<br>\nInput fields which require percent-encoded input\nare denoted by a '[percent-encoded]' hint.<br>\nListing of characters and their percent encoding:<br>\nspace ' ' is percent encoded as %20<br>\nexclamation mark ! is percent encoded as %21<br>\nnumber sign # is percent encoded as %23<br>\nDollar sign $ is percent encoded as %24<br>\npercentage % is percent encoded as %25<br>\nampersand &amp; is percent encoded as %26<br>\napostrophe / single quotation mark ' is percent encoded as %27<br>\nleft parenthesis ( is percent encoded as %28<br>\nright parenthesis ) is percent encoded as %29<br>\nasterisk * is percent encoded as %2A<br>\nplus sign + is percent encoded as %2B<br>\ncomma , is percent encoded as %2C<br>\nslash / is percent encoded as %2F<br>\ncolon : is percent encoded as %3A<br>\nsemicolon ; is percent encoded as %3B<br>\nequals sign = is percent encoded as %3D<br>\nquestion mark ? is percent encoded as %3F<br>\nat sign @ is percent encoded as %40<br>\nleft bracket [ is percent encoded as %5B<br>\nright bracket ] is percent encoded as %5D<br>\nFor details see 'Uniform Resource Identifier (URI): Generic Syntax' at<br>\nhttp://tools.ietf.org/html/rfc3986\n</p>"
+ )
+ ),
+ _(
+ "<p>\n<b><big>Device URIs for Directly Connected Devices</big></b><br>\nDevices which are connected via the parallel port or via USB\nare autodetected and the appropriate device URI is autogenerated.\nFor example:<br>\nparallel:/dev/lp0<br>\nusb://ACME/Fun%20Printer?serial=A1B2C3<br>\nhp:/usb/HP_LaserJet?serial=1234<br>\nUsually only the autogenerated device URIs work.\nWhen the device is not autodetected, there is usually no communication\nwith the device possible and no data can be sent to the device.<br>\nTo access a HP printer or all-in-one device via the backend 'hp',\nthe RPM package hplip must be installed.\nThe package provides HP's printing and scanning software HPLIP.<br>\nIn contrast devices which are connected via serial port or bluetooth\nare not autodetected so that the device URI must be manually specified.\nThe serial device URI parameters must comply with\nwhat the serial port in the printer requires,\nsee the manual of your serial printer.\nExample device URIs:<br>\nserial:/dev/ttyS9?baud=9600+bits=8+parity=none+flow=soft+stop=1<br>\nbluetooth://1A2B3C4D5E6F<br>\nTo access a device via bluetooth, the RPM package bluez-cups must be installed.\nThe package provides the CUPS backend 'bluetooth' which actually sends the data\nto a bluetooth printer.\n</p>"
+ )
+ ),
+ _(
+ "<p>\n<b><big>Device URIs to Access a Network Printer or a Printserver Box</big></b><br>\nA printserver box is a small device with a network connection\nand a USB or parallel port connection to connect the actual printer.\nA network printer has such a device built-in.\nAccess happens via three different network protocols.\nSee the manual of your network printer or printserver box\nto find out what your particular device supports:<br>\n<b>TCP Port (AppSocket/JetDirect)</b><br>\nThe IP address and a port number is needed to access it.\nOften the port number 9100 is the right one.\nIt is the simplest, fastest, and generally the most reliable protocol.\nThe matching device URI is:<br>\nsocket://ip-address:port-number<br>.\n<b>Line Printer Daemon (LPD) Protocol</b><br>\nA LPD runs on the device and provides one or more LPD queues.\nThe IP address and a LPD queue name is needed to access it.\nAlmost all network printers and printserver boxes support it.\nOften an arbitrary queue name or 'LPT1' works.\nBut using a correct LPD queue which does not change\nthe data or add additional formfeeds or banner pages\ncould be essential for reliable printing.\nThe matching device URI is:<br>\nlpd://ip-address/queue<br>.\n<b>Internet Printing Protocol (IPP)</b><br>\nIPP is the native protocol for CUPS running on a real computer,\nbut if IPP is implemented in a small printserver box,\nit is often not implemented properly. Only use IPP if the vendor\nactually documents official support for it. \nThe matching device URI is:<br>\nipp://ip-address:port-number/resource<br>.\nWhat 'port-number' and 'resource' exactly is depends\non the particular network printer or printserver box model.<br>\nFor <b>more information</b> have a look at<br>\nhttp://www.cups.org/documentation.php/network.html\n</p>\n"
+ )
+ ),
+ _(
+ "<p>\n<b><big>Device URIs to Print Via a Print Server Machine</big></b><br>\nIn contrast to a printserver box a print server machine\nmeans a real computer which offers a print service.<br>\nAccess happens via various different network protocols.\nAsk your network administrator what which print server machine\nprovides in your particular network:<br>\n<b>Windows (R) or Samba (SMB/CIFS)</b><br>\nTo access a SMB printer share, the RPM package samba-client must be installed.\nThe package provides the CUPS backend 'smb' which is a link to\nthe <tt>/usr/bin/smbspool</tt> program which actually sends the data\nto a SMB printer share.<br>\nA server name and a printer share name and optionally a workgroup name\nis needed to access it.\nFurthermore a user name and a password may be required to get access.\nHave in mind that spaces and special characters in those values\nmust be percent-encoded (see above).<br>\nBy default CUPS runs backends (here smbspool) as user 'lp'.\nWhen printing in an Active Directory (R) environment (AD)\nthe user 'lp' is not allowed to print in this environment\nso that the traditional way to print via smbspool as user 'lp'\nwould not work.<br>\nFor printing in an AD environment additionally\nthe RPM package samba-krb-printing must be installed.\nIn this case the CUPS backend 'smb' link\nis changed to <tt>/usr/bin/get_printing_ticket</tt>\nwhich is a wrapper to run smbspool as the original user\nwho submitted a particular print job.\nWhen the Kerberos protocol is used for authentication\nin an AD environment, a user gets a ticket granting ticket (TGT)\nvia the display manager during login at the Gnome or KDE desktop.\nWhen smbspool is run as the original user who submitted\na particular print job, it can access the TGT of this user\nand use it to pass the printing data to the SMB printer share\neven in an AD environment with Kerberos authentication.\nIn this case neither a fixed user name nor a fixed password\nhas to be specified for authentication.\nA precondition is that get_printing_ticket runs on the same host\nwhere the user who submitted a particular print job is logged in.\nThis means that it must be set up on the workstation\nfor the particular user who will submit such print jobs\nand the user's workstation must send its printing data\ndirectly to the SMB printer share in the AD environment.\nIn particular it does not work on a separated CUPS server machine\nwhere users who submit print jobs are not logged in.<br>\nFor the traditional way a matching full device URI is:<br>\nsmb://username:password@workgroup/server/printer<br>\nFor example 'John Doe' with password '@home!' may use something like\nthe following device URI to access a 'Fun Printer 1000+' share:<br>\nsmb://John%20Doe:%40home%21@MYGROUP/homeserver/Fun%20Printer%201000%2B<br>\nFor <b>more information</b> have a look at <tt>man smbspool</tt> and<br>\nhttp://en.opensuse.org/SDB:Printing_via_SMB_(Samba)_Share_or_Windows_Share<br>\n'Windows' and 'Active Directory' are registered trademarks\nof Microsoft Corporation in the United States and/or other countries.<br>\n<b>Traditional UNIX Server (LPR)</b><br>\nA Line Printer Daemon (LPD) runs on a traditional UNIX server\nand provides one or more LPD queues.\nThe IP address and a LPD queue name is needed to access it.\nThe matching device URI is:<br>\nlpd://ip-address/queue<br>\n<b>CUPS Server</b><br>\nUsually you should not set up a local print queue to access\na remote queue on a CUPS server. Instead do the setup\nin the <b>Print Via Network</b> dialog.\nOnly if you really know that you must set up a local print queue\nto access a remote queue on a CUPS server proceed here.<br>\nIPP is the native protocol for CUPS which runs on a server.\nThe official IANA port for IPP is 631.\nThe matching device URI is:<br>\nipp://ip-address:631/printers/queue<br>\n<b>Novell Netware Print Server (IPX)</b><br>\nTo access print queues on a Novell Netware print server,\nthe RPM package ncpfs must be installed.\nThe package provides the CUPS backend 'novell' which runs\nthe <tt>nprint</tt> program which actually sends the data\nto a Novell Netware print queue.\nA server name and a printer queue name is needed to access it.\nFurthermore a user name and a password may be required to get access.\nThe matching device URI is:<br>\nnovell://username:password@server/queue<br>\nFor <b>more information</b> have a look at <tt>man nprint</tt> and\nthe other documentation in the RPM package ncpfs.\n</p>"
+ )
+ ),
+ _(
+ "<p>\n<b><big>Special Device URIs</big></b><br>\n<b>Specify an Arbitrary Device URI</b>\nif you know the exact right device URI for your particular case\nor to modify an existing device URI in a special way.<br>\n<b>Send Print Data to Other Program (pipe)</b><br>\nTo do this, the RPM package cups-backends must be installed.\nThe package provides the CUPS backend 'pipe' which runs\nthe program that you specified here.\nThe matching device URI is:<br>\npipe:/path/to/targetcommand<br>\n<b>Daisy-chain Backend Error Handler (beh)</b><br>\nTo do this, the RPM package foomatic-filters must be installed.\nThe package provides the CUPS backend 'beh'.<br>\nThe backend 'beh' is a wrapper for the usual backend,\nwhich is then called by beh.\nThis way beh can, depending on its configuration,\nrepeat the call of the backend or simply hide the error status\nof the backend from being seen by the CUPS daemon.\nThe matching device URI is:<br>\nbeh:/nodisable/attempts/delay/originalDeviceURI<br>\nIf nodisable is '1' beh always exits successfully\nso that the queue gets never disabled but on the other hand\nprint jobs are lost if there is an error.<br>\nAttempts is the number of attempts to recall the backend\nin case of an error. '0' means infinite retries.<br>\nDelay is the number of seconds between two attempts\nto call the backend.<br>\nThe last parameter is the original URI, which the queue had before.<br>\nExample:<br>\nbeh:/1/3/5/socket://ip-address:port-number<br>\nThe beh backend tries to access a network printer 3 times with 5 second delay\nbetween the attempts. If access still fails, the queue is not disabled\nand the print job is lost.<br>\nFor <b>more information</b> have a look at <tt>/usr/lib[64]/cups/backend/beh</tt> and<br>\nhttp://www.linuxfoundation.org/en/OpenPrinting/Database/BackendErrorHandler\n</p>"
+ )
+ ),
+ "printing_via_network_dialog" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>\n<b><big>Printing Via Network</big></b><br>\nUsually CUPS (Common Unix Printing System) is used to print via network.<br>\nBy default CUPS uses its so called 'Browsing' mode\nto make printers available via network.<br>\nIn this case remote CUPS servers must publish their printers via network\nand accordingly on your host the CUPS daemon process (cupsd) must run\nwhich is listening for incoming information about published printers.<br>\nCUPS Browsing information is received via UDP port 631.<br>\nRegarding firewall:<br>\nCheck if a firewall is active for a network zone\nin which printers are published via network.\nBy default the SuSEfirewall allows any incoming information\nvia a network interface which belongs to the 'internal zone'\nbecause this zone is trusted by default.<br>\nIt does not make sense to do printing in a trusted internal network\nwith a network interface which belongs to the untrusted 'external zone'\n(the latter is the default setting for network interfaces to be safe).\nIn particular do not disable firewall protection for CUPS\n(i.e. for IPP which uses TCP port 631 and UDP port 631)\nfor the untrusted 'external zone'.<br>\nTo use remote printers in a trusted internal network\nand be protected by the firewall against unwanted access\nfrom any external network (in particular from the Internet),\nassign the network interface which belongs to the internal network\nto the internal zone of the firewall.\nUse the YaST Firewall setup module to do this fundamental setup\nto gain security plus usefulness in your network\nand using remote printers in a trusted internal network\nwill work without any further firewall setup.<br>\nFor details see the openSUSE support database\narticle 'CUPS and SANE Firewall settings' at<br>\nhttp://en.opensuse.org/SDB:CUPS_and_SANE_Firewall_settings\n</p>"
+ ),
+ _(
+ "<p>\nIf you can access remote CUPS servers for printing\nbut those servers do not publish their printer information via network\nor when you cannot accept incoming information about published printers\n(e.g. because you must have firewall protection for the network zone\nin which printers are published), you can request printer information\nfrom CUPS servers (provided the CUPS servers allow your access).<br>\nFor each CUPS server which is requested, a cups-polld process\nis launched by the CUPS daemon process (cupsd) on your host.\nBy default each cups-polld polls a remote CUPS server\nevery 30 seconds for printer information.\n</p>"
+ )
+ ),
+ _(
+ "<p>\nIf you print only via network and if you use only one single CUPS server,\nthere is no need to use CUPS Browsing and have a CUPS daemon running on your host.\nInstead it is simpler to specify the CUPS server and access it directly.<br>\nA possible drawback is that application programs may be delayed\nfor some time (until a timeout happens) when they try\nto access the CUPS server but it is actually not available\n(e.g. while traveling with a laptop). Usually it is a host name\nresolution (DNS) timeout which causes the delay so that it may help\nto have a hardcoded entry for the CUPS server in the /etc/hosts file.\n</p>"
+ )
+ ),
+ _(
+ "<p>\nYou have to set up an appropriate print queue on your host\nif there is no CUPS server in your network,\nor when you must access a network printer directly,\nor when you use another kind of print server\ne.g. when printing via a Windows (R) or Samba server\nor when printing via a traditional Unix server.<br>\n'Windows' is a registered trademark\nof Microsoft Corporation in the United States and/or other countries.\n</p>"
+ )
+ ),
+ "sharing_dialog" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>\n<b><big>Sharing Print Queues and Publish Them Via Network</big></b><br>\nUsually CUPS (Common Unix Printing System) should be set up to use\nits so called 'Browsing' mode to make printers available via network.<br>\nIn this case CUPS servers publish their local print queues via network\nand accordingly on CUPS client systems the CUPS daemon process (cupsd) must run\nwhich is listening for incoming information about published printers.<br>\nCUPS Browsing information is received via UDP port 631.\n</p>"
+ ),
+ _(
+ "<p>\nFirst of all CUPS client systems must be allowed to access the CUPS server.\nThen specify whether or not printers should be published to the clients.<br>\nIn a local network the usual way to set up CUPS Browsing is\nto allow remote access for all hosts in the local network\nand to publish printers to all those hosts.<br>\nIt is not required to publish printers in any case.<br>\nIf you have only one single CUPS server, there is no need to use CUPS Browsing.\nInstead it is simpler to specify the CUPS server on the client systems\n(via 'Printing Via Network') so that the clients access the server directly.\n</p>"
+ )
+ ),
+ _(
+ "<p>\nThere are various ways which can coexist how to specify\nwhich remote hosts are allowed to access the CUPS server.<br>\nAllow remote access for computers within the local network\nwill allow access from all hosts in the local network.\nA remote host is in the local network when it has an IP address\nthat belongs to the same network as the CUPS server\nand when the network connection of the host\nuses a non-PPP interface on the CUPS server\n(an interface whose IFF_POINTOPOINT flag is not set).<br>\nAlternatively or additionally an explicite list of network interfaces\nfrom which remote access is allowed can be specified.<br>\nAlternatively or additionally an explicite list of\nallowed IP addresses and/or networks can be specified.\n</p>"
+ )
+ ),
+ _(
+ "<p>\nRegarding firewall:<br>\nA firewall is used to protect running server processes\n(in this case the CUPS server process 'cupsd')\non your host against unwanted access via network.<br>\nPrinting via network happens in a trusted internal network\n(nobody lets arbitrary users from whatever external network\nprint on his printer) and usually the users need\nphysical printer access to get their paper output.<br>\nBy default the SuSEfirewall lets any network traffic pass\nvia a network interface which belongs to the 'internal zone'\nbecause this zone is trusted by default.<br>\nIt does not make sense to do printing in a trusted internal network\nwith a network interface which belongs to the untrusted 'external zone'\n(the latter is the default setting for network interfaces to be safe).\nDo not disable firewall protection for CUPS\n(i.e. for IPP which uses TCP port 631 and UDP port 631)\nfor the untrusted 'external zone'.<br>\nTo make printers accessible in a trusted internal network\nand be protected by the firewall against unwanted access\nfrom any external network (in particular from the Internet),\nassign the network interface which belongs to the internal network\nto the internal zone of the firewall.\nUse the YaST Firewall setup module to do this fundamental setup\nto gain security plus usefulness in your network and\nsharing printers in a trusted internal network\nwill work without any further firewall setup.<br>\nFor details see the openSUSE support database\narticle 'CUPS and SANE Firewall settings' at<br>\nhttp://en.opensuse.org/SDB:CUPS_and_SANE_Firewall_settings\n</p>"
+ )
+ ),
+ "policies" => Ops.add(
+ _(
+ "<p>\n<b><big>CUPS Operation Policy</big></b><br>\nOperation policies are the rules used for each operation in CUPS.\nSuch operations are for example 'print something', 'cancel a printout',\n'configure a printer', 'modify or remove a printer configuration',\nand 'enable or disable printing'.\n</p>"
+ ),
+ _(
+ "<p>\n<b><big>CUPS Error Policy</big></b><br>\nThe error policy defines the default policy that is used when\nCUPS fails to send a print job to the printer device.<br>\nDepending on the particular way how the printer is connected\n(for example 'parallel', 'usb', 'socket', 'lpd', or 'ipp'),\nand depending on the actual kind of failure,\nthe CUPS backend which actually sends the data to the printer\ncan overwrite the default error policy\nand enforce another error policy (see <tt>man backend</tt>).\nFor example it can stop any further printing attempt\neven when the default error policy is to retry the job.\nThis could happen when any attempt to establish\nthe communication with the printer is useless\nso that it does no make sense to retry the job.\n<br>\nThe following error policies exist:<br>\nStop the printer and keep the job for future printing.<br>\nRe-send the job from the beginning after waiting some time (30 seconds by default).<br>\nAbort and delete the job and proceed with the next job.\n</p>"
+ )
+ ),
+ "autoconfig" => Ops.add(
+ _(
+ "<p>\n<b><big>Automatic Configuration for Local Connected Printers</big></b><br>\nCheck the check box to run YaST's automatic configuration\nfor printers which are connected to the local host.<br>\nFor each autodetected local connected printer,\nYaST tests if there exists already a configuration.\nIf there is not yet a configuration,\nYaST tries to find a matching driver for the printer\nand if one is found, the printer is configured.<br>\nThe resulting configuration is basically the same\nas if one would have selected an autodetected printer\nin the 'Add New Printer Configuration' dialog\nand accepted whatever preselected values there.\n</p>"
+ ),
+ _(
+ "<p>\n<b><big>Automatic Configuration for USB Printers</big></b><br>\nThe RPM package 'udev-configure-printer' provides\nautomatic configuration when USB printers are plugged in.<br>\nWhen its check box is initially not checked, it is not installed\nand then you can select it so that it will be installed.<br>\nWhen its check box is initially checked, it is already installed\nand then you can un-select it so that it will be removed.<br>\nWhen udev-configure-printer is installed,\nautomatic USB printer configuration happens via the entries\nin its udev config file /lib/udev/rules.d/70-printers.rules\nwhich triggers to run 'udev-configure-printer add'\nwhen a USB printer is plugged in\nand 'udev-configure-printer remove' when it is unplugged.\nThere are no adjustable settings for udev-configure-printer\nexcept one changes the 70-printers.rules file manually.\n</p>"
+ )
)
}
end
diff -ur result/printer/src/modules/Printer.rb result-bck/printer/src/modules/Printer.rb
--- result/printer/src/modules/Printer.rb 2013-06-28 14:26:05.900000000 +0200
+++ result-bck/printer/src/modules/Printer.rb 2013-06-28 12:35:37.988000000 +0200
@@ -1486,9 +1486,12 @@
Ops.add(
Ops.add(
Ops.add(
- _(
- "The RPM package 'netcat' is required for a meaningful test."
- ) + "\n",
+ Ops.add(
+ _(
+ "The RPM package 'netcat' is required for a meaningful test."
+ ),
+ "\n"
+ ),
Convert.to_string(Ops.index(Printerlib.result, "stderr", ""))
),
"\n"
@@ -1525,9 +1528,12 @@
Ops.add(
Ops.add(
Ops.add(
- _(
- "The RPM package 'iputils' is required for a meaningful test."
- ) + "\n",
+ Ops.add(
+ _(
+ "The RPM package 'iputils' is required for a meaningful test."
+ ),
+ "\n"
+ ),
Convert.to_string(
Ops.index(Printerlib.result, "stderr", "")
)
@@ -1615,9 +1621,12 @@
Ops.add(
Ops.add(
Ops.add(
- _(
- "The RPM package 'bind-utils' is required for a meaningful test."
- ) + "\n",
+ Ops.add(
+ _(
+ "The RPM package 'bind-utils' is required for a meaningful test."
+ ),
+ "\n"
+ ),
Convert.to_string(
Ops.index(Printerlib.result, "stderr", "")
)
diff -ur result/product-creator/src/include/product-creator/complex.rb result-bck/product-creator/src/include/product-creator/complex.rb
--- result/product-creator/src/include/product-creator/complex.rb 2013-06-28 14:27:16.720000000 +0200
+++ result-bck/product-creator/src/include/product-creator/complex.rb 2013-06-28 12:35:52.144000000 +0200
@@ -568,7 +568,7 @@
[
{
"name" => "/",
- "free" => (999 * 1024) * 1024,
+ "free" => Ops.multiply(Ops.multiply(999, 1024), 1024),
"used" => 0,
"readonly" => false
}
@@ -681,10 +681,18 @@
}
end
help_text = Ops.add(
- (_("<p>Start creating a new image configuration with <b>Add</b>.</p>") + _(
- "<p>Use <b>Edit</b> to change selected image configuration or create the image.</p>"
- )) + _(
- "<p>Delete the directory with the selected configuration by selecting <b>Delete</b>.</p>"
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Start creating a new image configuration with <b>Add</b>.</p>"
+ ),
+ _(
+ "<p>Use <b>Edit</b> to change selected image configuration or create the image.</p>"
+ )
+ ),
+ _(
+ "<p>Delete the directory with the selected configuration by selecting <b>Delete</b>.</p>"
+ )
),
Builtins.sformat(
_(
diff -ur result/product-creator/src/include/product-creator/dialogs.rb result-bck/product-creator/src/include/product-creator/dialogs.rb
--- result/product-creator/src/include/product-creator/dialogs.rb 2013-06-28 14:27:03.808000000 +0200
+++ result-bck/product-creator/src/include/product-creator/dialogs.rb 2013-06-28 12:35:52.144000000 +0200
@@ -1580,10 +1580,13 @@
method(:SignContent),
"symbol (string, map)"
),
- "help" => _(
- "<p><big><b>Sign</b></big><br>\nTo make it possible for users to verify your product, sign it with a GPG key. \nThis key is checked when the product is added as a repository.</p>"
- ) + _(
- "<P>If the product is not signed, Yast automatically adds the option 'Insecure:\n1' to the linuxrc configuration file, otherwise linuxrc would deny loading an unsigned installation system at boot. See http://en.opensuse.org/Linuxrc for more information.</P>"
+ "help" => Ops.add(
+ _(
+ "<p><big><b>Sign</b></big><br>\nTo make it possible for users to verify your product, sign it with a GPG key. \nThis key is checked when the product is added as a repository.</p>"
+ ),
+ _(
+ "<P>If the product is not signed, Yast automatically adds the option 'Insecure:\n1' to the linuxrc configuration file, otherwise linuxrc would deny loading an unsigned installation system at boot. See http://en.opensuse.org/Linuxrc for more information.</P>"
+ )
)
}
}
diff -ur result/product-creator/src/include/product-creator/helps.rb result-bck/product-creator/src/include/product-creator/helps.rb
--- result/product-creator/src/include/product-creator/helps.rb 2013-06-28 14:27:17.612000000 +0200
+++ result-bck/product-creator/src/include/product-creator/helps.rb 2013-06-28 12:35:52.144000000 +0200
@@ -9,55 +9,98 @@
def initialize_product_creator_helps(include_target)
textdomain "product-creator"
@HELPS = {
- "bootconfig" => _(
- "<p><b><big>Boot Options</big></b><br>\nAdd additional boot menu entries with boot options.\n</p>\n"
- ) + _(
- "<p>For example, \nconfigure the CD for automatic installations and specify the installation\nsource location. If you are not sure, leave the file untouched and the original is used.</p>\n"
- ),
- "read" => _(
- "<p><b><big>Initializing Configuration</big></b></p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
- ),
- "write" => _("<p><b><big>Saving Configuration</big></b></p>\n") + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog will inform you whether it is safe to do so.\n</p>\n"
- ),
- "overview" => (((_(
- "<p><b><big>Product Creator Configuration Overview</big></b><br>\nObtain an overview of available configurations. Additionally\nedit those configurations.<br></p>\n"
- ) + _(
- "<p><b><big>Adding a Configuration:</big></b><br>\nPress <b>Add</b> to create a new configuration.</p>"
- )) + _(
- "<p><b><big>Editing or Deleting:</big></b><br>\nChoose a configuration to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> respectively.</p>\n"
- )) + _(
- "<p>Use <b>Create Product</b> to create the ISO image or installation\nrepository directory with the selected product.</p>"
- )) + _(
- "<p>Press <b>Create Image with KIWI</b> for additional configuration of various\ntypes of images, such as Live media or Xen images, with the KIWI image system.</p>"
- ),
- "initial" => (_(
- "<p><b><big>Configuration Name and Packages</big></b><br>\nChoose a configuration name and the method with which to select \nthe packages to add to the ISO image.<br></p>\n"
- ) + _(
- "<b>AutoYaST Profile</b><p>\nSelect an AutoYaST profile with the software configuration.\n</p>\n"
- )) + _(
- "<b>Software Manager</b><p>\nUse the software manager without any preselected packages. All\npackages that would be automatically selected during installation must be\nselected manually based on the hardware and architecture for which you are\ncreating this CD.\n</p>\n"
- ),
- "sourceDialog" => _(
- "<p><b><big>Select Package Sources</big></b><br>\nSelect at least one package source.<br></p>\n"
- ) + _(
- "<p><b><big>Target Architecture</big></b><br>\nIt is possible to create a product for a different architecture than that of\nthe machine you are currently working on.\nAll selected repositories must support the target architecture.<br>\n<b>Note:</b> KIWI does not support different architectures yet, do not change\nthe architecture if you intend to create a KIWI image from the current configuration.</p>\n"
- ),
- "dest" => (_(
- "<p><b><big>ISO Directory and Image</big></b><br>\nEnter the location in which to create the skeleton directory. All needed\nfiles will be copied to this directory. Select a location with enough disk\nspace.\n<br></p>\n"
- ) + _(
- "<p>Create an ISO image or a directory that is suitable for \ncreating an ISO image at a later time.\n</p>\n"
- )) + _(
- "<p>To save space, select the check box to copy only needed files \nto the skeleton. \n</p>\n"
- ),
- "baseSelection" => ((_("<p><b>The Base Product</b></p>") + _(
- "<p>One of the used repositories must be marked as the base product. The base\nproduct repository should be bootable to ensure the newly created product is also\nbootable.</p>\n"
- )) + _(
- "<p>The other repositories will be used as add-ons for the base repository.</p>"
- )) + _(
- "<p>The product creator solves dependencies of the selected products and proposes\nthe base product. If the proposed value is wrong, select the right base\nrepository from the list.</p>\n"
+ "bootconfig" => Ops.add(
+ _(
+ "<p><b><big>Boot Options</big></b><br>\nAdd additional boot menu entries with boot options.\n</p>\n"
+ ),
+ _(
+ "<p>For example, \nconfigure the CD for automatic installations and specify the installation\nsource location. If you are not sure, leave the file untouched and the original is used.</p>\n"
+ )
+ ),
+ "read" => Ops.add(
+ _("<p><b><big>Initializing Configuration</big></b></p>\n"),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
+ ),
+ "write" => Ops.add(
+ _("<p><b><big>Saving Configuration</big></b></p>\n"),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog will inform you whether it is safe to do so.\n</p>\n"
+ )
+ ),
+ "overview" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Product Creator Configuration Overview</big></b><br>\nObtain an overview of available configurations. Additionally\nedit those configurations.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Adding a Configuration:</big></b><br>\nPress <b>Add</b> to create a new configuration.</p>"
+ )
+ ),
+ _(
+ "<p><b><big>Editing or Deleting:</big></b><br>\nChoose a configuration to change or remove.\nThen press <b>Edit</b> or <b>Delete</b> respectively.</p>\n"
+ )
+ ),
+ _(
+ "<p>Use <b>Create Product</b> to create the ISO image or installation\nrepository directory with the selected product.</p>"
+ )
+ ),
+ _(
+ "<p>Press <b>Create Image with KIWI</b> for additional configuration of various\ntypes of images, such as Live media or Xen images, with the KIWI image system.</p>"
+ )
+ ),
+ "initial" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>Configuration Name and Packages</big></b><br>\nChoose a configuration name and the method with which to select \nthe packages to add to the ISO image.<br></p>\n"
+ ),
+ _(
+ "<b>AutoYaST Profile</b><p>\nSelect an AutoYaST profile with the software configuration.\n</p>\n"
+ )
+ ),
+ _(
+ "<b>Software Manager</b><p>\nUse the software manager without any preselected packages. All\npackages that would be automatically selected during installation must be\nselected manually based on the hardware and architecture for which you are\ncreating this CD.\n</p>\n"
+ )
+ ),
+ "sourceDialog" => Ops.add(
+ _(
+ "<p><b><big>Select Package Sources</big></b><br>\nSelect at least one package source.<br></p>\n"
+ ),
+ _(
+ "<p><b><big>Target Architecture</big></b><br>\nIt is possible to create a product for a different architecture than that of\nthe machine you are currently working on.\nAll selected repositories must support the target architecture.<br>\n<b>Note:</b> KIWI does not support different architectures yet, do not change\nthe architecture if you intend to create a KIWI image from the current configuration.</p>\n"
+ )
+ ),
+ "dest" => Ops.add(
+ Ops.add(
+ _(
+ "<p><b><big>ISO Directory and Image</big></b><br>\nEnter the location in which to create the skeleton directory. All needed\nfiles will be copied to this directory. Select a location with enough disk\nspace.\n<br></p>\n"
+ ),
+ _(
+ "<p>Create an ISO image or a directory that is suitable for \ncreating an ISO image at a later time.\n</p>\n"
+ )
+ ),
+ _(
+ "<p>To save space, select the check box to copy only needed files \nto the skeleton. \n</p>\n"
+ )
+ ),
+ "baseSelection" => Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b>The Base Product</b></p>"),
+ _(
+ "<p>One of the used repositories must be marked as the base product. The base\nproduct repository should be bootable to ensure the newly created product is also\nbootable.</p>\n"
+ )
+ ),
+ _(
+ "<p>The other repositories will be used as add-ons for the base repository.</p>"
+ )
+ ),
+ _(
+ "<p>The product creator solves dependencies of the selected products and proposes\nthe base product. If the proposed value is wrong, select the right base\nrepository from the list.</p>\n"
+ )
)
}
end
diff -ur result/product-creator/src/include/product-creator/kiwi_dialogs.rb result-bck/product-creator/src/include/product-creator/kiwi_dialogs.rb
--- result/product-creator/src/include/product-creator/kiwi_dialogs.rb 2013-06-28 14:26:59.716000000 +0200
+++ result-bck/product-creator/src/include/product-creator/kiwi_dialogs.rb 2013-06-28 12:35:52.144000000 +0200
@@ -408,7 +408,7 @@
end
ProductCreator.max_size_mb = mbytes
if UI.QueryWidget(Id("additive"), :Value) == true
- ProductCreator.max_size_mb = (999 * 1024) * 1024
+ ProductCreator.max_size_mb = Ops.multiply(Ops.multiply(999, 1024), 1024)
end
ret_map = runPackageSelector(
"",
@@ -2620,8 +2620,11 @@
method(:HandlePreferences),
"symbol (string, map)"
),
- "help" => _("<p><b>Locale Settings</b></p>") + _(
- "<p>The value of <b>Locale</b> (e.g. <tt>en_US</tt>) defines the contents of the RC_LANG variable in <t>/etc/sysconfig/language</tt>.</p>"
+ "help" => Ops.add(
+ _("<p><b>Locale Settings</b></p>"),
+ _(
+ "<p>The value of <b>Locale</b> (e.g. <tt>en_US</tt>) defines the contents of the RC_LANG variable in <t>/etc/sysconfig/language</tt>.</p>"
+ )
)
},
"keytable" => {
diff -ur result/product-creator/src/modules/Kiwi.rb result-bck/product-creator/src/modules/Kiwi.rb
--- result/product-creator/src/modules/Kiwi.rb 2013-06-28 14:26:53.044000000 +0200
+++ result-bck/product-creator/src/modules/Kiwi.rb 2013-06-28 12:35:52.144000000 +0200
@@ -777,7 +777,7 @@
Builtins.y2warning("cmd output: %1", out)
Report.Error(
Ops.add(
- _("Removing old chroot directory failed.") + "\n\n",
+ Ops.add(_("Removing old chroot directory failed."), "\n\n"),
Convert.to_string(Ops.index(out, "stderr", ""))
)
)
diff -ur result/product-creator/src/modules/ProductCreator.rb result-bck/product-creator/src/modules/ProductCreator.rb
--- result/product-creator/src/modules/ProductCreator.rb 2013-06-28 14:26:49.976000000 +0200
+++ result-bck/product-creator/src/modules/ProductCreator.rb 2013-06-28 12:35:52.144000000 +0200
@@ -42,7 +42,7 @@
@toCopy = {}
@skel_root = ""
@profile_parsed = false
- @max_size_mb = 999 * 1024
+ @max_size_mb = Ops.multiply(999, 1024)
@Config = {}
@Configs = {}
@Rep = "/var/lib/YaST2/cd-creator"
diff -ur result/profile-manager/src/include/profile-manager/helps.rb result-bck/profile-manager/src/include/profile-manager/helps.rb
--- result/profile-manager/src/include/profile-manager/helps.rb 2013-06-28 14:27:41.688000000 +0200
+++ result-bck/profile-manager/src/include/profile-manager/helps.rb 2013-06-28 12:36:10.700000000 +0200
@@ -12,42 +12,81 @@
"read" => _(
"<p><b><big>Initializing Profile Manager Configuration</big></b><br>\nPlease wait...<br></p>\n"
),
- "main" => ((((((((((_(
- "<p><big><b>SCPM Configuration</b></big></p>\n<p>SCPM (System Configuration Profile Management) enables your system to save different configuration profiles and switch between them.</p>"
- ) + _(
- "<p>Activate and configure SCPM here. Configure and switch SCPM profiles with the SUMF graphical interface or the <tt>scpm</tt> command.</p>"
- )) + _(
- "<p><b>Status</b></p>"
- )) + _(
- "First, set the SCPM status to <b>Enabled</b>. If disabled later, none of the configuration data in the profiles will be lost. It just continues in the current configuration of your system and you cannot switch to any other profile until you enable it again.</p>"
- )) + _(
- "<p><b>Settings</b></p>"
- )) + _(
- "<p>The settings apply to the command line interface as well as to the graphical SCPM front-end named SUMF.</p>"
- )) + _(
- "<p><b>Switch Mode</b> defines the behavior of SCPM when switching\nprofiles. If set to <b>Normal</b> or <b>Save Changes</b>,\nmodified resources are preset for saving before the switch.\nSetting it to <b>Drop Changes</b> results in presets for ignoring. The effect in the command line SCPM tool is more limited than in SUMF, so check the info page if you intend to use the SCPM tool.</p>\n"
- )) + _(
- "<p><b>Boot Mode</b> defines the behavior of SCPM at system boot time.\n<b>Save Changes</b> applies all changes to the previous profile.\n<b>Drop Changes</b> discards them.</p>\n"
- )) + _(
- "<p><b>Verbose Messages</b> affects the detail level of progress messages\nin the progress pop-up. If <b>Log Debug Messages</b> is set, SCPM writes debug messages to its log file (/var/log/scpm by default).</p>"
- )) + _(
- "<p>SCPM needs root privileges for operation. Check <b>Allow Profile Management for Non-root Users</b> and use <b>Configure</b> to set up users to authorize to use SCPM.</p>"
- )) + _(
- "<p><b>Resource Groups</b></p>"
- )) + _(
- "<p>A configuration profile covers only the files and services to change\nwhen switching to another profile. In SCPM terminology, these files and\nservices are called resources. Those resources are grouped into logical units,\ncalled <i>resource groups</i>. SCPM comes with a predefined set of\ngroups handled by default. This is sufficient for most systems. \nFor a more detailed resource setup, click <b>Configure Resources</b>.</p>\n"
+ "main" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p><big><b>SCPM Configuration</b></big></p>\n<p>SCPM (System Configuration Profile Management) enables your system to save different configuration profiles and switch between them.</p>"
+ ),
+ _(
+ "<p>Activate and configure SCPM here. Configure and switch SCPM profiles with the SUMF graphical interface or the <tt>scpm</tt> command.</p>"
+ )
+ ),
+ _("<p><b>Status</b></p>")
+ ),
+ _(
+ "First, set the SCPM status to <b>Enabled</b>. If disabled later, none of the configuration data in the profiles will be lost. It just continues in the current configuration of your system and you cannot switch to any other profile until you enable it again.</p>"
+ )
+ ),
+ _("<p><b>Settings</b></p>")
+ ),
+ _(
+ "<p>The settings apply to the command line interface as well as to the graphical SCPM front-end named SUMF.</p>"
+ )
+ ),
+ _(
+ "<p><b>Switch Mode</b> defines the behavior of SCPM when switching\nprofiles. If set to <b>Normal</b> or <b>Save Changes</b>,\nmodified resources are preset for saving before the switch.\nSetting it to <b>Drop Changes</b> results in presets for ignoring. The effect in the command line SCPM tool is more limited than in SUMF, so check the info page if you intend to use the SCPM tool.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Boot Mode</b> defines the behavior of SCPM at system boot time.\n<b>Save Changes</b> applies all changes to the previous profile.\n<b>Drop Changes</b> discards them.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Verbose Messages</b> affects the detail level of progress messages\nin the progress pop-up. If <b>Log Debug Messages</b> is set, SCPM writes debug messages to its log file (/var/log/scpm by default).</p>"
+ )
+ ),
+ _(
+ "<p>SCPM needs root privileges for operation. Check <b>Allow Profile Management for Non-root Users</b> and use <b>Configure</b> to set up users to authorize to use SCPM.</p>"
+ )
+ ),
+ _("<p><b>Resource Groups</b></p>")
+ ),
+ _(
+ "<p>A configuration profile covers only the files and services to change\nwhen switching to another profile. In SCPM terminology, these files and\nservices are called resources. Those resources are grouped into logical units,\ncalled <i>resource groups</i>. SCPM comes with a predefined set of\ngroups handled by default. This is sufficient for most systems. \nFor a more detailed resource setup, click <b>Configure Resources</b>.</p>\n"
+ )
),
- "resources" => (_(
- "<p><big><b>Configuring Resources</b></big></p>\n<p>This list contains all installed resource groups.\nA resource group usually represents a system service with all needed\nconfiguration files. Select which services should be handled by the \nprofile management. Activate or deactivate the groups by\ndouble-clicking them.</p>\n"
- ) + _(
- "<p>To achive an even more customized setup, create your own\nresource groups or modify existing ones. With <b>Add</b> or <b>Edit</b>,\nenter the resource group editor. It allows activation and\ndeactivation of resources and gives the possibility to create additional\nresources and add them to your groups.</p>\n"
- )) + _(
- "<p>Return all resource groups to their initial states by pressing\n<b>Reset All</b>.</p>"
+ "resources" => Ops.add(
+ Ops.add(
+ _(
+ "<p><big><b>Configuring Resources</b></big></p>\n<p>This list contains all installed resource groups.\nA resource group usually represents a system service with all needed\nconfiguration files. Select which services should be handled by the \nprofile management. Activate or deactivate the groups by\ndouble-clicking them.</p>\n"
+ ),
+ _(
+ "<p>To achive an even more customized setup, create your own\nresource groups or modify existing ones. With <b>Add</b> or <b>Edit</b>,\nenter the resource group editor. It allows activation and\ndeactivation of resources and gives the possibility to create additional\nresources and add them to your groups.</p>\n"
+ )
+ ),
+ _(
+ "<p>Return all resource groups to their initial states by pressing\n<b>Reset All</b>.</p>"
+ )
),
- "users" => (_("<p><b><big>Users</big></b></p>") + _(
- "<p>To allow users of your system to perform profile\nmanagement operations, add them here. There are two levels of permission:\n<b>Switch Only</b> means the specified user may switch profiles, but nothing else. <b>Everything</b> means the user may perform any operation,\nincluding adding and removing profiles.</p>"
- )) + _(
- "<p>Use <b>Add</b>, <b>Edit</b>, and <b>Delete</b> to modify the list of users with special permissions.</p>"
+ "users" => Ops.add(
+ Ops.add(
+ _("<p><b><big>Users</big></b></p>"),
+ _(
+ "<p>To allow users of your system to perform profile\nmanagement operations, add them here. There are two levels of permission:\n<b>Switch Only</b> means the specified user may switch profiles, but nothing else. <b>Everything</b> means the user may perform any operation,\nincluding adding and removing profiles.</p>"
+ )
+ ),
+ _(
+ "<p>Use <b>Add</b>, <b>Edit</b>, and <b>Delete</b> to modify the list of users with special permissions.</p>"
+ )
),
"write" => _(
"<p><b><big>Writing Profile Manager Configuration</big></b><br>\nPlease wait...<br></p>\n"
diff -ur result/proxy/src/clients/proxy_proposal.rb result-bck/proxy/src/clients/proxy_proposal.rb
--- result/proxy/src/clients/proxy_proposal.rb 2013-06-28 14:04:10.260000000 +0200
+++ result-bck/proxy/src/clients/proxy_proposal.rb 2013-06-28 12:35:51.776000000 +0200
@@ -370,18 +370,33 @@
help = Ops.add(
Ops.add(
Ops.add(
- ((((_(
- "<p>Configure your Internet proxy (caching) settings here.</p>\n<p><b>Note:</b> It is generally recommended to relogin for the settings to take effect, \nhowever in some cases the application may pick up new settings immediately. Please check \nwhat your application (web browser, ftp client,...) supports. </p>"
- ) + _(
- "<p><b>HTTP Proxy URL</b> is the name of the proxy server for your access\nto the World Wide Web (WWW).</p>\n"
- )) + _(
- "<p><b>HTTPS Proxy URL</b> is the name of the proxy server for your secured access\nto the World Wide Web (WWW).</p>\n"
- )) + _(
- "<p>Example: <i>http://proxy.example.com:3128/</i></p>"
- )) + _(
- "<p><b>FTP Proxy URL</b> is the name of the proxy server for your access\nto the file transfer services (FTP).</p>"
- )) + _(
- "<p>If you check <b>Use the Same Proxy for All Protocols</b>, it is\nenough to fill in the HTTP proxy URL. It will be used for all protocols\n(HTTP, HTTPS and FTP).\n"
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Configure your Internet proxy (caching) settings here.</p>\n<p><b>Note:</b> It is generally recommended to relogin for the settings to take effect, \nhowever in some cases the application may pick up new settings immediately. Please check \nwhat your application (web browser, ftp client,...) supports. </p>"
+ ),
+ _(
+ "<p><b>HTTP Proxy URL</b> is the name of the proxy server for your access\nto the World Wide Web (WWW).</p>\n"
+ )
+ ),
+ _(
+ "<p><b>HTTPS Proxy URL</b> is the name of the proxy server for your secured access\nto the World Wide Web (WWW).</p>\n"
+ )
+ ),
+ _(
+ "<p>Example: <i>http://proxy.example.com:3128/</i></p>"
+ )
+ ),
+ _(
+ "<p><b>FTP Proxy URL</b> is the name of the proxy server for your access\nto the file transfer services (FTP).</p>"
+ )
+ ),
+ _(
+ "<p>If you check <b>Use the Same Proxy for All Protocols</b>, it is\nenough to fill in the HTTP proxy URL. It will be used for all protocols\n(HTTP, HTTPS and FTP).\n"
+ )
),
Builtins.sformat(
_(
diff -ur result/proxy/src/include/proxy/dialogs.rb result-bck/proxy/src/include/proxy/dialogs.rb
--- result/proxy/src/include/proxy/dialogs.rb 2013-06-28 14:04:05.420000000 +0200
+++ result-bck/proxy/src/include/proxy/dialogs.rb 2013-06-28 12:35:51.776000000 +0200
@@ -331,18 +331,31 @@
help = Ops.add(
Ops.add(
Ops.add(
- ((((_(
- "<p>Configure your Internet proxy (caching) settings here.</p>\n<p><b>Note:</b> It is generally recommended to relogin for the settings to take effect, \nhowever in some cases the application may pick up new settings immediately. Please check \nwhat your application (web browser, ftp client,...) supports. </p>"
- ) + _(
- "<p><b>HTTP Proxy URL</b> is the name of the proxy server for your access\nto the World Wide Web (WWW).</p>\n"
- )) + _(
- "<p><b>HTTPS Proxy URL</b> is the name of the proxy server for your secured access\nto the World Wide Web (WWW).</p>\n"
- )) + _(
- "<p>Example: <i>http://proxy.example.com:3128/</i></p>"
- )) + _(
- "<p><b>FTP Proxy URL</b> is the name of the proxy server for your access\nto the file transfer services (FTP).</p>"
- )) + _(
- "<p>If you check <b>Use the Same Proxy for All Protocols</b>, it is\nenough to fill in the HTTP proxy URL. It will be used for all protocols\n(HTTP, HTTPS and FTP).\n"
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Configure your Internet proxy (caching) settings here.</p>\n<p><b>Note:</b> It is generally recommended to relogin for the settings to take effect, \nhowever in some cases the application may pick up new settings immediately. Please check \nwhat your application (web browser, ftp client,...) supports. </p>"
+ ),
+ _(
+ "<p><b>HTTP Proxy URL</b> is the name of the proxy server for your access\nto the World Wide Web (WWW).</p>\n"
+ )
+ ),
+ _(
+ "<p><b>HTTPS Proxy URL</b> is the name of the proxy server for your secured access\nto the World Wide Web (WWW).</p>\n"
+ )
+ ),
+ _("<p>Example: <i>http://proxy.example.com:3128/</i></p>")
+ ),
+ _(
+ "<p><b>FTP Proxy URL</b> is the name of the proxy server for your access\nto the file transfer services (FTP).</p>"
+ )
+ ),
+ _(
+ "<p>If you check <b>Use the Same Proxy for All Protocols</b>, it is\nenough to fill in the HTTP proxy URL. It will be used for all protocols\n(HTTP, HTTPS and FTP).\n"
+ )
),
Builtins.sformat(
_(
diff -ur result/rdp/src/clients/rdp.rb result-bck/rdp/src/clients/rdp.rb
--- result/rdp/src/clients/rdp.rb 2013-06-28 14:27:54.192000000 +0200
+++ result-bck/rdp/src/clients/rdp.rb 2013-06-28 12:36:26.008000000 +0200
@@ -77,7 +77,10 @@
summary = ""
summary = Ops.add(
Ops.add(
- ("\n" + _("Remote Access Configuration Summary:")) + "\n\n",
+ Ops.add(
+ Ops.add("\n", _("Remote Access Configuration Summary:")),
+ "\n\n"
+ ),
RichText.Rich2Plain(RDP.Summary)
),
"\n"
diff -ur result/rear/src/include/rear/ui.rb result-bck/rear/src/include/rear/ui.rb
--- result/rear/src/include/rear/ui.rb 2013-06-28 14:28:01.384000000 +0200
+++ result-bck/rear/src/include/rear/ui.rb 2013-06-28 12:36:00.632000000 +0200
@@ -56,7 +56,10 @@
Ops.add(
Ops.add(
Ops.add(
- _("This system is not supported by rear, because:") + "<ul><li>",
+ Ops.add(
+ _("This system is not supported by rear, because:"),
+ "<ul><li>"
+ ),
Builtins.mergestring(messages, "</li><li>")
),
"</li></ul><strong>"
@@ -349,22 +352,43 @@
def RearConfigDialog
caption = _("Rear Configuration")
- help = ((((((_(
- "<p>Configure Rear Relax and Recover (<b>ReaR</b>) backup for your computer.</p>"
- ) + _(
- "<p>Decide how to start your <b>Recovery System</b>. Choose USB if you want to boot from an USB stick, or ISO for CD-ROM respectively.</p>"
- )) + _(
- "<p>Choose where the <b>Backup</b> should be stored. Select NFS if you have to use a server that offers Network File System. Please specify the location as follows: <tt>nfs://hostname/directory</tt>. You can also choose USB to store your backup on an USB stick or USB disk.</p>"
- )) + _(
- "<p>If no USB devices are shown, attach an USB stick or an USB disk and click <b>Rescan USB Devices</b>.</p>"
- )) + _(
- "<p>Select <b>Keep old backup</b> if you don't want the previous backup copy to be overwritten.</p>"
- )) + _(
- "<p>The <b>Advanced</b> menu offers to add <b>additional directories to the backup</b> and <b>additional kernel modules to the rescue system</b>. That's only useful if your backup doesn't contain all the needed directories or the rescue system doesn't boot due to missing kernel modules.</p>"
- )) + _(
- "<p>The <b>Save and run rear now</b> button runs rear and shows rear's output. <strong>Make sure to test if the created backup works as expected on your system!</strong></p>"
- )) + _(
- "<p><b>OK</b> saves the configuration and quits while <b>Cancel</b> closes the configuration dialog without saving.<p>"
+ help = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Configure Rear Relax and Recover (<b>ReaR</b>) backup for your computer.</p>"
+ ),
+ _(
+ "<p>Decide how to start your <b>Recovery System</b>. Choose USB if you want to boot from an USB stick, or ISO for CD-ROM respectively.</p>"
+ )
+ ),
+ _(
+ "<p>Choose where the <b>Backup</b> should be stored. Select NFS if you have to use a server that offers Network File System. Please specify the location as follows: <tt>nfs://hostname/directory</tt>. You can also choose USB to store your backup on an USB stick or USB disk.</p>"
+ )
+ ),
+ _(
+ "<p>If no USB devices are shown, attach an USB stick or an USB disk and click <b>Rescan USB Devices</b>.</p>"
+ )
+ ),
+ _(
+ "<p>Select <b>Keep old backup</b> if you don't want the previous backup copy to be overwritten.</p>"
+ )
+ ),
+ _(
+ "<p>The <b>Advanced</b> menu offers to add <b>additional directories to the backup</b> and <b>additional kernel modules to the rescue system</b>. That's only useful if your backup doesn't contain all the needed directories or the rescue system doesn't boot due to missing kernel modules.</p>"
+ )
+ ),
+ _(
+ "<p>The <b>Save and run rear now</b> button runs rear and shows rear's output. <strong>Make sure to test if the created backup works as expected on your system!</strong></p>"
+ )
+ ),
+ _(
+ "<p><b>OK</b> saves the configuration and quits while <b>Cancel</b> closes the configuration dialog without saving.<p>"
+ )
)
netfs_url = [Rear.netfs_url]
netfs_keep_old_backup = Rear.netfs_keep_old_backup
diff -ur result/registration/src/clients/inst_suse_register.rb result-bck/registration/src/clients/inst_suse_register.rb
--- result/registration/src/clients/inst_suse_register.rb 2013-06-28 14:28:12.560000000 +0200
+++ result-bck/registration/src/clients/inst_suse_register.rb 2013-06-28 12:36:24.988000000 +0200
@@ -242,14 +242,21 @@
"Registration code does not match mail address."
)
}
- @reg_stat_heading = ("<p>" + _("Registration Status at: <b>%1</b>")) + "</p>"
+ @reg_stat_heading = Ops.add(
+ Ops.add("<p>", _("Registration Status at: <b>%1</b>")),
+ "</p>"
+ )
@reg_stat_product = _("Product: <b>%1</b> (%2, %3)")
@reg_stat_subscription = _("Subscription: <b>%1</b> (%2)")
@reg_stat_message = _("Message: %1")
@reg_stat_expiry = _("Expiry: %1")
- @reg_stat_missing = ("<p><b>" + _(
- "No status information about registered products available."
- )) + "</b></p>"
+ @reg_stat_missing = Ops.add(
+ Ops.add(
+ "<p><b>",
+ _("No status information about registered products available.")
+ ),
+ "</b></p>"
+ )
@registration_status_missing_dialog = VBox(
Label(Opt(:boldFont), _("Registration status is not available.")),
ButtonBox(PushButton(Id(:close), Label.CloseButton))
diff -ur result/reipl/src/include/reipl/helps.rb result-bck/reipl/src/include/reipl/helps.rb
--- result/reipl/src/include/reipl/helps.rb 2013-06-28 14:28:20.752000000 +0200
+++ result-bck/reipl/src/include/reipl/helps.rb 2013-06-28 12:35:41.988000000 +0200
@@ -9,34 +9,58 @@
def initialize_reipl_helps(include_target)
textdomain "reipl"
@HELPS = {
- "read" => _(
- "<p><b><big>Initializing reipl Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ "read" => Ops.add(
+ _("<p><b><big>Initializing reipl Configuration</big></b><br>\n</p>\n"),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>\n"
+ )
),
- "write" => _(
- "<p><b><big>Saving reipl Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ "write" => Ops.add(
+ _("<p><b><big>Saving reipl Configuration</big></b><br>\n</p>\n"),
+ _(
+ "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog informs whether it is safe to do so.\n</p>\n"
+ )
),
- "configure" => (((((((_(
- "<p><b><big>s390 reIPL Configuration</big></b></p>"
- ) + _(
- "<p>Choose one of the methods for rebooting your machine with the radio buttons\nlisted inside <b>reipl methods</b>. Depending on what your machine supports,\nchoose between CCW (channel command word) devices and SCSI devices,\nwhich are attached through zFCP (fibre channel protocol). Then fill out the\nnecessary parameter entry fields for the respective method.</p>\n"
- )) + _(
- "<p>The <b>device</b> must be a valid device bus ID with lower case letters\nin a sysfs compatible format 0.<i>&lt;subchannel set ID&gt;</i>.<i>&lt;device ID&gt;</i>,\nsuch as 0.0.5c51. Depending on the chosen method, this can either refer to a DASD or to\nan FCP adapter.</p>"
- )) + _(
- "<p>The <b>loadparm</b> must be a maximum of 8 characters and selects a boot\nconfiguration from the menu of the zipl bootloader. Use one blank character\nto select the default configuration.</p>"
- )) + _(
- "<p>The <b>worldwide port number</b> (WWPN) must be entered with lowercase\nletters as a 16-digit hex value, such as 0x5005076300c40e5a.</p>\n"
- )) + _(
- "<p>The <b>logical unit number</b> (LUN) must be entered with lowercase letters\nas a 16-digit hex value with all trailing zeros, such as 0x52ca000000000000.</p>"
- )) + _(
- "<p>The <b>boot program selector</b> must be a non-negative integer choosing\na boot configuration from the menu of the zipl bootloader. Use 0 to select\nthe default configuration.</p>"
- )) + _(
- "<p>The <b>boot record logical block address</b> (LBA) specifies the master\nboot record and is currently always 0.</p>"
- )) + _(
- "<p>After confirmation of this dialog, you may trigger a reboot, e.g. by shutdown,\nand the system will automatically restart from your specified device.</p>"
+ "configure" => Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b><big>s390 reIPL Configuration</big></b></p>"),
+ _(
+ "<p>Choose one of the methods for rebooting your machine with the radio buttons\nlisted inside <b>reipl methods</b>. Depending on what your machine supports,\nchoose between CCW (channel command word) devices and SCSI devices,\nwhich are attached through zFCP (fibre channel protocol). Then fill out the\nnecessary parameter entry fields for the respective method.</p>\n"
+ )
+ ),
+ _(
+ "<p>The <b>device</b> must be a valid device bus ID with lower case letters\nin a sysfs compatible format 0.<i>&lt;subchannel set ID&gt;</i>.<i>&lt;device ID&gt;</i>,\nsuch as 0.0.5c51. Depending on the chosen method, this can either refer to a DASD or to\nan FCP adapter.</p>"
+ )
+ ),
+ _(
+ "<p>The <b>loadparm</b> must be a maximum of 8 characters and selects a boot\nconfiguration from the menu of the zipl bootloader. Use one blank character\nto select the default configuration.</p>"
+ )
+ ),
+ _(
+ "<p>The <b>worldwide port number</b> (WWPN) must be entered with lowercase\nletters as a 16-digit hex value, such as 0x5005076300c40e5a.</p>\n"
+ )
+ ),
+ _(
+ "<p>The <b>logical unit number</b> (LUN) must be entered with lowercase letters\nas a 16-digit hex value with all trailing zeros, such as 0x52ca000000000000.</p>"
+ )
+ ),
+ _(
+ "<p>The <b>boot program selector</b> must be a non-negative integer choosing\na boot configuration from the menu of the zipl bootloader. Use 0 to select\nthe default configuration.</p>"
+ )
+ ),
+ _(
+ "<p>The <b>boot record logical block address</b> (LBA) specifies the master\nboot record and is currently always 0.</p>"
+ )
+ ),
+ _(
+ "<p>After confirmation of this dialog, you may trigger a reboot, e.g. by shutdown,\nand the system will automatically restart from your specified device.</p>"
+ )
)
}
end
diff -ur result/restore/src/clients/restore_auto.rb result-bck/restore/src/clients/restore_auto.rb
--- result/restore/src/clients/restore_auto.rb 2013-06-28 14:28:44.728000000 +0200
+++ result-bck/restore/src/clients/restore_auto.rb 2013-06-28 12:36:16.232000000 +0200
@@ -115,10 +115,11 @@
if @read == false
input = ""
if Popup.YesNo(
- ((@index == 0) ? _("Archive file cannot be read.") : _(
- "Archive volume cannot be read."
- )) + _(
- "\nSelect it manually?\n"
+ Ops.add(
+ (@index == 0) ? _("Archive file cannot be read.") : _(
+ "Archive volume cannot be read."
+ ),
+ _("\nSelect it manually?\n")
)
) == true
if @index == 0
diff -ur result/restore/src/include/restore/helps.rb result-bck/restore/src/include/restore/helps.rb
--- result/restore/src/include/restore/helps.rb 2013-06-28 14:28:42.548000000 +0200
+++ result-bck/restore/src/include/restore/helps.rb 2013-06-28 12:36:16.232000000 +0200
@@ -11,28 +11,47 @@
end
def ArchiveSelectionHelp
- return (((((_(
- "<P><B><BIG>Restore Module</BIG></B><BR>The restore module can restore your system from a backup archive.</P>"
- ) + _(
- "<P>Archive can be read from:</P>"
- )) + _(
- "<P><B>Local File</B>: The archive is already available in the system. It is on a mounted file system.</P>"
- )) + _(
- "<P><B>Network</B>: The backup archive can be read from network using NFS.</P>"
- )) + _(
- "<P><B>Removable Device</B>: The archive is on a removable device or\non an unmounted file system. The device can be selected from a list or you can enter the device filename\n(for example, /dev/hdc) if not listed.</P>\n"
- )) + _(
- "<P>If you press <B>Select</B>, the device is mounted\nand you can select the file from a dialog.</P>\n"
- )) + _(
- "<P>Note: If you have a multivolume archive, select the first volume.</P>"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<P><B><BIG>Restore Module</BIG></B><BR>The restore module can restore your system from a backup archive.</P>"
+ ),
+ _("<P>Archive can be read from:</P>")
+ ),
+ _(
+ "<P><B>Local File</B>: The archive is already available in the system. It is on a mounted file system.</P>"
+ )
+ ),
+ _(
+ "<P><B>Network</B>: The backup archive can be read from network using NFS.</P>"
+ )
+ ),
+ _(
+ "<P><B>Removable Device</B>: The archive is on a removable device or\non an unmounted file system. The device can be selected from a list or you can enter the device filename\n(for example, /dev/hdc) if not listed.</P>\n"
+ )
+ ),
+ _(
+ "<P>If you press <B>Select</B>, the device is mounted\nand you can select the file from a dialog.</P>\n"
+ )
+ ),
+ _(
+ "<P>Note: If you have a multivolume archive, select the first volume.</P>"
+ )
)
end
def ArchiveMultiSelectionHelp
- return _(
- "<P><B><BIG>Multivolume Archive</BIG></B><BR>The backup archive has more than\none volume. In this dialog, enter volumes that belong to the backup archive.</P>\n"
- ) + _(
- "<P>After the volume is read, the filename is automatically changed to the\nnext volume name. Press <B>Next</B> to\ncontinue to the next volume.</P>\n"
+ return Ops.add(
+ _(
+ "<P><B><BIG>Multivolume Archive</BIG></B><BR>The backup archive has more than\none volume. In this dialog, enter volumes that belong to the backup archive.</P>\n"
+ ),
+ _(
+ "<P>After the volume is read, the filename is automatically changed to the\nnext volume name. Press <B>Next</B> to\ncontinue to the next volume.</P>\n"
+ )
)
end
@@ -49,10 +68,13 @@
end
def RestoreOptionsHelp
- return _(
- "<P><B><BIG>Restore Options</BIG></B><BR>These options are intended for\nexpert users. The default values are usually appropriate.</P>\n"
- ) + _(
- "<p>Select <B>Activate Boot Loader Configuration</B> to reinstall the boot loader.\nSome boot loaders, such as LILO, must be reinstalled if configuration files or files needed at system boot are changed.</p>\n"
+ return Ops.add(
+ _(
+ "<P><B><BIG>Restore Options</BIG></B><BR>These options are intended for\nexpert users. The default values are usually appropriate.</P>\n"
+ ),
+ _(
+ "<p>Select <B>Activate Boot Loader Configuration</B> to reinstall the boot loader.\nSome boot loaders, such as LILO, must be reinstalled if configuration files or files needed at system boot are changed.</p>\n"
+ )
)
end
@@ -86,16 +108,28 @@
end
def RestoreSelectionHelp(personal)
- return (((_(
- "<P><B><BIG>Selection</BIG></B><BR>\nSelect which packages to restore from the backup archive.</P>\n"
- ) + _(
- "<P>The first column displays the restoration status of the package. It can be <b>X</b> (package will be restored) or empty (package will not be restored).</P>"
- )) + ((personal == false) ? _(
- "<P><b>P</b> means that a package will be restored only partially. Press <B>Select Files</B> to restore a package partially.</P>"
- ) : "")) + _(
- "<P>The number of selected files to restore from the archive is in the second column.</P>"
- )) + _(
- "<p>If you deleted the RPM database by mistake or if it is badly\ncorrupted, select <b>Restore RPM Database</b>.\nThe database is then restored if it is available in the backup archive.\nIn other cases, leave this option unchecked.</p>"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<P><B><BIG>Selection</BIG></B><BR>\nSelect which packages to restore from the backup archive.</P>\n"
+ ),
+ _(
+ "<P>The first column displays the restoration status of the package. It can be <b>X</b> (package will be restored) or empty (package will not be restored).</P>"
+ )
+ ),
+ (personal == false) ? _(
+ "<P><b>P</b> means that a package will be restored only partially. Press <B>Select Files</B> to restore a package partially.</P>"
+ ) : ""
+ ),
+ _(
+ "<P>The number of selected files to restore from the archive is in the second column.</P>"
+ )
+ ),
+ _(
+ "<p>If you deleted the RPM database by mistake or if it is badly\ncorrupted, select <b>Restore RPM Database</b>.\nThe database is then restored if it is available in the backup archive.\nIn other cases, leave this option unchecked.</p>"
+ )
)
end
@@ -112,12 +146,18 @@
end
def SummaryHelp
- return (_(
- "<P><B><BIG>Summary</BIG></B><BR>\nThis is a summary of the restoration process. To see more details, select\n<B>Show Details</B>. To save the summary to a file, select <B>Save to File</B>.\n</P>\n\n"
- ) + _(
- "<P><B>Note:</B> Displaying the detailed summary can \ntake a long time depending on the number\nof restored files.\n</P>\n"
- )) + _(
- "<P>Some changes, such as a kernel update, made by the restore \nmodule can be activated only after a system\nreboot. It is recommended to reboot the system after\nrestoration.</P>\n"
+ return Ops.add(
+ Ops.add(
+ _(
+ "<P><B><BIG>Summary</BIG></B><BR>\nThis is a summary of the restoration process. To see more details, select\n<B>Show Details</B>. To save the summary to a file, select <B>Save to File</B>.\n</P>\n\n"
+ ),
+ _(
+ "<P><B>Note:</B> Displaying the detailed summary can \ntake a long time depending on the number\nof restored files.\n</P>\n"
+ )
+ ),
+ _(
+ "<P>Some changes, such as a kernel update, made by the restore \nmodule can be activated only after a system\nreboot. It is recommended to reboot the system after\nrestoration.</P>\n"
+ )
)
end
end
diff -ur result/restore/src/include/restore/ui.rb result-bck/restore/src/include/restore/ui.rb
--- result/restore/src/include/restore/ui.rb 2013-06-28 14:28:40.524000000 +0200
+++ result-bck/restore/src/include/restore/ui.rb 2013-06-28 12:36:16.232000000 +0200
@@ -1643,11 +1643,11 @@
end
def StatusToString(status)
- ret = ("<I>" + _("Not started")) + "</I>"
+ ret = Ops.add(Ops.add("<I>", _("Not started")), "</I>")
if status == true
ret = _("OK")
else
- ret = ("<B>" + _("Failed")) + "</B>" if status == false
+ ret = Ops.add(Ops.add("<B>", _("Failed")), "</B>") if status == false
end
return ret
end
@@ -1664,7 +1664,7 @@
Ops.add(
Ops.add(
Ops.add(
- "<P>" + _("Number of Installed Packages: "),
+ Ops.add("<P>", _("Number of Installed Packages: ")),
Builtins.size(@packagestoinstall)
),
"<BR>"
@@ -1720,8 +1720,9 @@
Ops.add(
Ops.add(
Ops.add(
- (("<P><BR><B>" + _("Details:")) + "</B></P><P>") + _(
- "Boot Loader Configuration: "
+ Ops.add(
+ Ops.add(Ops.add("<P><BR><B>", _("Details:")), "</B></P><P>"),
+ _("Boot Loader Configuration: ")
),
lilostr
),
diff -ur result/restore/src/modules/Restore.rb result-bck/restore/src/modules/Restore.rb
--- result/restore/src/modules/Restore.rb 2013-06-28 14:28:36.912000000 +0200
+++ result-bck/restore/src/modules/Restore.rb 2013-06-28 12:36:16.232000000 +0200
@@ -1621,13 +1621,19 @@
if @inputname == ""
return Summary.NotConfigured
else
- archives_info = ("<P><B>" + _("Backup Archive")) + "<B></P>"
+ archives_info = Ops.add(
+ Ops.add("<P><B>", _("Backup Archive")),
+ "<B></P>"
+ )
archives_info = Ops.add(Ops.add(archives_info, "<P>"), @inputname)
Builtins.foreach(@inputvolumes) { |vol|
archives_info = Ops.add(Ops.add(archives_info, vol), "<BR>")
}
archives_info = Ops.add(archives_info, "</P>")
- options_info = ("<P><B>" + _("Restore Options")) + "<B></P>"
+ options_info = Ops.add(
+ Ops.add("<P><B>", _("Restore Options")),
+ "<B></P>"
+ )
options_info = Ops.add(
Ops.add(
Ops.add(
@@ -1659,7 +1665,10 @@
),
"<BR></P>"
)
- selection_info = ("<P><B>" + _("Packages to Restore")) + "</B></P><P>"
+ selection_info = Ops.add(
+ Ops.add("<P><B>", _("Packages to Restore")),
+ "</B></P><P>"
+ )
if @completerestoration
selection_info = Ops.add(
selection_info,
diff -ur result/runlevel/src/clients/runlevel_proposal.rb result-bck/runlevel/src/clients/runlevel_proposal.rb
--- result/runlevel/src/clients/runlevel_proposal.rb 2013-06-28 14:10:47.652000000 +0200
+++ result-bck/runlevel/src/clients/runlevel_proposal.rb 2013-06-28 12:35:54.752000000 +0200
@@ -221,18 +221,36 @@
)
)
)
- help = (((((_("<p><b><big>Selecting the Default Runlevel</big</b></p>") + _(
- "<p>The runlevel is the setting that helps determine which services are\navailable by default. Select the level that includes the services this system\nshould allow when the system starts.</p>"
- )) + _(
- "<p>Runlevel <b>2</b> allows multiple users to log in to the system locally, but\nno network or network services are available. This setting is rarely used as\nthe default.</p>"
- )) + _(
- "<p>Runlevel <b>4</b> is an expert user mode. Don't use it unless you really\nneed it.</p>"
- )) + _(
- "<p>Runlevel <b>3</b> allows both local and remote logins and enables the\nnetwork and any configured network services. This setting does not start the\ngraphical login manager, so graphical user interfaces cannot be used\nimmediately.</p>"
- )) + _(
- "<p>Runlevel <b>5</b> is the most common default runlevel for workstations. In\naddition to the network, it starts the X display manager, which allows\ngraphical logins. It also starts any other configured services.</p>"
- )) + _(
- "<p>If you are not sure what to select, runlevel <b>5</b> is generally a good\nchoice for workstations. Runlevel <b>3</b> is often used on servers that do\nnot have a monitor and should not use graphical interfaces.</p>"
+ help = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p><b><big>Selecting the Default Runlevel</big</b></p>"),
+ _(
+ "<p>The runlevel is the setting that helps determine which services are\navailable by default. Select the level that includes the services this system\nshould allow when the system starts.</p>"
+ )
+ ),
+ _(
+ "<p>Runlevel <b>2</b> allows multiple users to log in to the system locally, but\nno network or network services are available. This setting is rarely used as\nthe default.</p>"
+ )
+ ),
+ _(
+ "<p>Runlevel <b>4</b> is an expert user mode. Don't use it unless you really\nneed it.</p>"
+ )
+ ),
+ _(
+ "<p>Runlevel <b>3</b> allows both local and remote logins and enables the\nnetwork and any configured network services. This setting does not start the\ngraphical login manager, so graphical user interfaces cannot be used\nimmediately.</p>"
+ )
+ ),
+ _(
+ "<p>Runlevel <b>5</b> is the most common default runlevel for workstations. In\naddition to the network, it starts the X display manager, which allows\ngraphical logins. It also starts any other configured services.</p>"
+ )
+ ),
+ _(
+ "<p>If you are not sure what to select, runlevel <b>5</b> is generally a good\nchoice for workstations. Runlevel <b>3</b> is often used on servers that do\nnot have a monitor and should not use graphical interfaces.</p>"
+ )
)
Wizard.CreateDialog
Wizard.SetTitleIcon("yast-runlevel")
diff -ur result/runlevel/src/clients/services_proposal.rb result-bck/runlevel/src/clients/services_proposal.rb
--- result/runlevel/src/clients/services_proposal.rb 2013-06-28 14:10:49.296000000 +0200
+++ result-bck/runlevel/src/clients/services_proposal.rb 2013-06-28 12:35:54.752000000 +0200
@@ -517,10 +517,13 @@
"<p><big><b>Services</b></big><br>\nThe current setup does not provide any functionality now.</p>"
)
end
- return _(
- "<p><big><b>Services</b></big><br>\nThis installation proposal allows you to start and enable a service from the \nlist of services.</p>\n"
- ) + _(
- "<p>It may also open ports in the firewall for a service if firewall is enabled\nand a particular service requires opening them.</p>\n"
+ return Ops.add(
+ _(
+ "<p><big><b>Services</b></big><br>\nThis installation proposal allows you to start and enable a service from the \nlist of services.</p>\n"
+ ),
+ _(
+ "<p>It may also open ports in the firewall for a service if firewall is enabled\nand a particular service requires opening them.</p>\n"
+ )
)
end
end
diff -ur result/runlevel/src/include/runlevel/ui.rb result-bck/runlevel/src/include/runlevel/ui.rb
--- result/runlevel/src/include/runlevel/ui.rb 2013-06-28 14:10:40.296000000 +0200
+++ result-bck/runlevel/src/include/runlevel/ui.rb 2013-06-28 12:35:54.752000000 +0200
@@ -360,10 +360,13 @@
end
def getHelpProgress
- return _(
- "<P><BIG><B>System Service (Runlevel) Initialization</B></BIG><BR>\nPlease wait...</P>\n"
- ) + _(
- "<p><b>Note:</b> The system services (runlevel editor) is an expert tool. Only change settings if\n you know what you are doing. Otherwise your system might not function properly afterwards.</p>\n"
+ return Ops.add(
+ _(
+ "<P><BIG><B>System Service (Runlevel) Initialization</B></BIG><BR>\nPlease wait...</P>\n"
+ ),
+ _(
+ "<p><b>Note:</b> The system services (runlevel editor) is an expert tool. Only change settings if\n you know what you are doing. Otherwise your system might not function properly afterwards.</p>\n"
+ )
)
end
@@ -448,7 +451,16 @@
Builtins.y2debug("DEP filtered: %1", dep_s)
doit = Builtins.size(dep_s) == 0
if !doit
- key = ((((run_time ? "+run" : "-run") + ",") + (init_time ? "+init" : "-init")) + ",") + (enable ? "on" : "off")
+ key = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(run_time ? "+run" : "-run", ","),
+ init_time ? "+init" : "-init"
+ ),
+ ","
+ ),
+ enable ? "on" : "off"
+ )
texts = {
"-run,+init,off" => _(
"To disable service %1 %2,\nthese services must be additionally disabled,\nbecause they depend on it:\n%3."
@@ -706,14 +718,23 @@
end
def getHelpComplex
- return ((_(
- "<p>Assign system services to runlevels by selecting the list entry of the respective service then\nchecking or unchecking the <b>check boxes B-S</b> for the runlevel.</p>\n"
- ) + _(
- "<p><b>Start/Stop/Refresh:</b> Use this to start or stop services individually.</p>"
- )) + _(
- "<P><B>Set and Reset:</B>\nSelect runlevels in which to run the currently selected service.<ul>\n<li><b>Enable the service:</b> Activates the service in the standard runlevels.</li>\n<li><b>Disable the service:</b> Deactivates service.</li>\n<li><b>Enable all services:</b> Activates all services in their standard runlevels.</li>\n</ul></p>\n"
- )) + _(
- "<p>Changes to the <b>default runlevel</b> will take effect next time you boot your computer.</p>"
+ return Ops.add(
+ Ops.add(
+ Ops.add(
+ _(
+ "<p>Assign system services to runlevels by selecting the list entry of the respective service then\nchecking or unchecking the <b>check boxes B-S</b> for the runlevel.</p>\n"
+ ),
+ _(
+ "<p><b>Start/Stop/Refresh:</b> Use this to start or stop services individually.</p>"
+ )
+ ),
+ _(
+ "<P><B>Set and Reset:</B>\nSelect runlevels in which to run the currently selected service.<ul>\n<li><b>Enable the service:</b> Activates the service in the standard runlevels.</li>\n<li><b>Disable the service:</b> Deactivates service.</li>\n<li><b>Enable all services:</b> Activates all services in their standard runlevels.</li>\n</ul></p>\n"
+ )
+ ),
+ _(
+ "<p>Changes to the <b>default runlevel</b> will take effect next time you boot your computer.</p>"
+ )
)
end
@@ -985,16 +1006,26 @@
def SimpleDialog
Wizard.SetScreenShotName("runlevel-2-simple")
service = {}
- help_text = (((_(
- "<p>Here, specify which system services should be started.</p>"
- ) + _(
- "<p><b>Warning:</b> The system services (runlevel editor) is an expert tool. Only change settings if you know\n what you are doing. Otherwise your system might not function properly afterwards.</p>\n"
- )) + _(
- "<p><b>Enable</b> starts the selected service and services\nthat it depends on and enables them to start at system boot time.\nLikewise, <b>Disable</b> stops a service and all depending services\nand disables their start at system boot time.</p>\n"
- )) + _(
- "<p>An asterisk (*) after a service status means that the service is enabled but not running or is disabled but running now.</p>"
- )) + _(
- "<p>To change the behavior of runlevels and system services in detail, click <b>Expert Mode</b>.</p>\n"
+ help_text = Ops.add(
+ Ops.add(
+ Ops.add(
+ Ops.add(
+ _("<p>Here, specify which system services should be started.</p>"),
+ _(
+ "<p><b>Warning:</b> The system services (runlevel editor) is an expert tool. Only change settings if you know\n what you are doing. Otherwise your system might not function properly afterwards.</p>\n"
+ )
+ ),
+ _(
+ "<p><b>Enable</b> starts the selected service and services\nthat it depends on and enables them to start at system boot time.\nLikewise, <b>Disable</b> stops a service and all depending services\nand disables their start at system boot time.</p>\n"
+ )
+ ),
+ _(
+ "<p>An asterisk (*) after a service status means that the service is enabled but not running or is disabled but running now.</p>"
+ )
+ ),
+ _(
+ "<p>To change the behavior of runlevels and system services in detail, click <b>Expert Mode</b>.</p>\n"
+ )
)
contents = VBox(
VSpacing(0.4),
@@ -1113,10 +1144,16 @@
end
def getHelpAuto
- return (_("<p><b>Prepare data for autoinstallation.</b></p>") + _(
- "<p>Change the services to requested state. Only services marked as changed will really be changed in the target system.</p>"
- )) + _(
- "<p>If you made a mistake and want to undo the change, press <b>Clear</b> or <b>Clear all</b>.</p>"
+ return Ops.add(
+ Ops.add(
+ _("<p><b>Prepare data for autoinstallation.</b></p>"),
+ _(
+ "<p>Change the services to requested state. Only services marked as changed will really be changed in the target system.</p>"
+ )
+ ),
+ _(
+ "<p>If you made a mistake and want to undo the change, press <b>Clear</b> or <b>Clear all</b>.</p>"
+ )
)
end
diff -ur result/s390/src/include/s390/dasd/helps.rb result-bck/s390/src/include/s390/dasd/helps.rb
--- result/s390/src/include/s390/dasd/helps.rb 2013-06-28 14:29:09.136000000 +0200
+++ result-bck/s390/src/include/s390/dasd/helps.rb 2013-06-28 12:36:20.624000000 +0200
@@ -9,40 +9,64 @@
def initialize_s390_dasd_helps(include_target)
textdomain "s390"
@DASD_HELPS = {
- "read" => _(
- "<p><b><big>Initializing Controller Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>"
+ "read" => Ops.add(
+ _(
+ "<p><b><big>Initializing Controller Configuration</big></b><br>\n</p>\n"
+ ),
+ _(
+ "<p><b><big>Aborting Initialization:</big></b><br>\nSafely abort the configuration utility by pressing <b>Abort</b> now.</p>"
+ )
),
- "write" => _(
- "<p><b><big>Saving Controller Configuration</big></b><br>\n</p>\n"
- ) + _(
- "<p><b><big>Aborting Saving:</big></b><br>\nAbort the save procedure by pressing <b>Abort</b>.\nAn additional dialog will inform you whether it
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment