forked from Wavyzz/dolibarr
Merge remote-tracking branch 'origin/3.6' into 3.7
Conflicts: ChangeLog htdocs/comm/fiche.php htdocs/core/lib/functions2.lib.php htdocs/fourn/fiche.php htdocs/langs/fr_FR/compta.lang htdocs/projet/element.php htdocs/projet/tasks/contact.php htdocs/projet/tasks/time.php
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -18,6 +18,3 @@ doxygen_warnings.log
|
|||||||
Thumbs.db
|
Thumbs.db
|
||||||
# Vagrant generated files
|
# Vagrant generated files
|
||||||
.vagrant
|
.vagrant
|
||||||
/index.html
|
|
||||||
/phpmyadmin
|
|
||||||
/xhprof
|
|
||||||
|
|||||||
@@ -180,8 +180,38 @@ tools:
|
|||||||
- 'htdocs/includes/*'
|
- 'htdocs/includes/*'
|
||||||
paths: { }
|
paths: { }
|
||||||
|
|
||||||
|
php_changetracking:
|
||||||
|
enabled: false
|
||||||
|
bug_patterns:
|
||||||
|
- '\bfix(?:es|ed)?\b'
|
||||||
|
feature_patterns:
|
||||||
|
- '\badd(?:s|ed)?\b'
|
||||||
|
- '\bimplement(?:s|ed)?\b'
|
||||||
|
filter:
|
||||||
|
excluded_paths:
|
||||||
|
- 'build/*'
|
||||||
|
- 'dev/*'
|
||||||
|
- 'doc/*'
|
||||||
|
- 'test/*'
|
||||||
|
- 'htdocs/includes/*'
|
||||||
|
paths: { }
|
||||||
|
|
||||||
# Coding-Style / Bug Detection
|
# Coding-Style / Bug Detection
|
||||||
js_hint: false
|
js_hint:
|
||||||
|
enabled: false
|
||||||
|
use_native_config: true
|
||||||
|
extensions:
|
||||||
|
- js
|
||||||
|
filter:
|
||||||
|
excluded_paths:
|
||||||
|
- 'build/*'
|
||||||
|
- 'dev/*'
|
||||||
|
- 'doc/*'
|
||||||
|
- 'test/*'
|
||||||
|
- 'htdocs/includes/*'
|
||||||
|
paths: { }
|
||||||
|
config: { }
|
||||||
|
path_configs: { }
|
||||||
|
|
||||||
|
|
||||||
before_commands: { }
|
before_commands: { }
|
||||||
|
|||||||
21
.travis.yml
21
.travis.yml
@@ -36,6 +36,7 @@ before_script:
|
|||||||
- echo Install phpcs then show installed rules
|
- echo Install phpcs then show installed rules
|
||||||
- pyrus install pear/PHP_CodeSniffer
|
- pyrus install pear/PHP_CodeSniffer
|
||||||
- phpenv rehash
|
- phpenv rehash
|
||||||
|
- phpcs --version
|
||||||
- phpcs -i
|
- phpcs -i
|
||||||
- echo Create dir $(pwd)/htdocs/documents
|
- echo Create dir $(pwd)/htdocs/documents
|
||||||
- sudo mkdir -p $(pwd)/htdocs/documents/admin/temp;
|
- sudo mkdir -p $(pwd)/htdocs/documents/admin/temp;
|
||||||
@@ -53,12 +54,14 @@ before_script:
|
|||||||
- sh -c "if [ '$PHPV' = '5.3' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi"
|
- sh -c "if [ '$PHPV' = '5.3' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi"
|
||||||
- sh -c "if [ '$PHPV' = '5.4' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi"
|
- sh -c "if [ '$PHPV' = '5.4' ]; then echo 'zend_extension_ts = xdebug.so' >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi"
|
||||||
- cat ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
|
- cat ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
|
||||||
|
- echo Mysql version
|
||||||
|
- mysql --version
|
||||||
- echo Init database
|
- echo Init database
|
||||||
- sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'DROP DATABASE IF EXISTS myapp_test;' -U postgres; fi"
|
- sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'DROP DATABASE IF EXISTS myapp_test;' -U postgres; fi"
|
||||||
- sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE DATABASE myapp_test;' -U postgres; fi"
|
- sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'CREATE DATABASE myapp_test;' -U postgres; fi"
|
||||||
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'DROP DATABASE IF EXISTS myapp_test;'; fi"
|
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'DROP DATABASE IF EXISTS myapp_test;'; fi"
|
||||||
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE IF NOT EXISTS myapp_test;'; fi"
|
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'CREATE DATABASE IF NOT EXISTS myapp_test;'; fi"
|
||||||
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -D myapp_test < $(pwd)/dev/initdata/mysqldump_dolibarr_3.4.0.sql; fi"
|
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -D myapp_test < $(pwd)/dev/initdata/mysqldump_dolibarr_3.5.0.sql; fi"
|
||||||
- echo Create config file htdocs/conf/conf.php
|
- echo Create config file htdocs/conf/conf.php
|
||||||
- echo '<?php ' > htdocs/conf/conf.php
|
- echo '<?php ' > htdocs/conf/conf.php
|
||||||
- sh -c "if [ '$DB' = 'pgsql' ]; then echo '$'dolibarr_main_db_type=\'pgsql\'';' >> htdocs/conf/conf.php; fi"
|
- sh -c "if [ '$DB' = 'pgsql' ]; then echo '$'dolibarr_main_db_type=\'pgsql\'';' >> htdocs/conf/conf.php; fi"
|
||||||
@@ -87,18 +90,22 @@ before_script:
|
|||||||
|
|
||||||
script:
|
script:
|
||||||
- cd htdocs/install
|
- cd htdocs/install
|
||||||
- php upgrade.php 3.4.0 3.5.0 > upgrade.log
|
- date
|
||||||
- php upgrade2.php 3.4.0 3.5.0 > upgrade2.log
|
# - php upgrade.php 3.4.0 3.5.0 > upgrade.log
|
||||||
|
# - php upgrade2.php 3.4.0 3.5.0 > upgrade2.log
|
||||||
- php upgrade.php 3.5.0 3.6.0 >> upgrade.log
|
- php upgrade.php 3.5.0 3.6.0 >> upgrade.log
|
||||||
- php upgrade2.php 3.5.0 3.6.0 >> upgrade2.log
|
- php upgrade2.php 3.5.0 3.6.0 >> upgrade2.log
|
||||||
# - cat upgrade.log
|
- php upgrade.php 3.6.0 3.7.0 >> upgrade.log
|
||||||
|
# - cat upgrade360370.log
|
||||||
|
- php upgrade2.php 3.6.0 3.7.0 >> upgrade2.log
|
||||||
# - cat upgrade2.log
|
# - cat upgrade2.log
|
||||||
- cd ../..
|
- cd ../..
|
||||||
- date
|
- date
|
||||||
# - phpcs -p --warning-severity=0 -s --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ htdocs/core/class/dolgraph.class.php 2>&1
|
|
||||||
- phpcs -p --warning-severity=0 -s --report-checkstyle --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ . 2>&1
|
|
||||||
- date
|
|
||||||
- phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/AllTests.php
|
- phpunit -d memory_limit=-1 --configuration test/phpunit/phpunittest.xml test/phpunit/AllTests.php
|
||||||
|
- date
|
||||||
|
# - phpcs -p --warning-severity=0 -s --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ htdocs/core/class/dolgraph.class.php 2>&1
|
||||||
|
- phpcs -p --warning-severity=0 -s --report-checkstyle --report-summary --standard=dev/codesniffer/ruleset.xml --tab-width=4 --ignore=/htdocs/conf/conf.php,/build/html/,/dev/vagrant/,/documents/,/includes/,/test/report/ . 2>&1
|
||||||
|
- date
|
||||||
|
|
||||||
after_script:
|
after_script:
|
||||||
# - echo Output dolibarr log file; cat $(pwd)/htdocs/documents/dolibarr.log
|
# - echo Output dolibarr log file; cat $(pwd)/htdocs/documents/dolibarr.log
|
||||||
|
|||||||
37
.tx/config
37
.tx/config
@@ -2,6 +2,12 @@
|
|||||||
host = https://www.transifex.com
|
host = https://www.transifex.com
|
||||||
lang_map = uz: uz_UZ
|
lang_map = uz: uz_UZ
|
||||||
|
|
||||||
|
[dolibarr.accountancy]
|
||||||
|
file_filter = htdocs/langs/<lang>/accountancy.lang
|
||||||
|
source_file = htdocs/langs/en_US/accountancy.lang
|
||||||
|
source_lang = en_US
|
||||||
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[dolibarr.admin]
|
[dolibarr.admin]
|
||||||
file_filter = htdocs/langs/<lang>/admin.lang
|
file_filter = htdocs/langs/<lang>/admin.lang
|
||||||
source_file = htdocs/langs/en_US/admin.lang
|
source_file = htdocs/langs/en_US/admin.lang
|
||||||
@@ -212,12 +218,6 @@ source_file = htdocs/langs/en_US/orders.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[dolibarr.oscommerce]
|
|
||||||
file_filter = htdocs/langs/<lang>/oscommerce.lang
|
|
||||||
source_file = htdocs/langs/en_US/oscommerce.lang
|
|
||||||
source_lang = en_US
|
|
||||||
type = MOZILLAPROPERTIES
|
|
||||||
|
|
||||||
[dolibarr.other]
|
[dolibarr.other]
|
||||||
file_filter = htdocs/langs/<lang>/other.lang
|
file_filter = htdocs/langs/<lang>/other.lang
|
||||||
source_file = htdocs/langs/en_US/other.lang
|
source_file = htdocs/langs/en_US/other.lang
|
||||||
@@ -236,6 +236,18 @@ source_file = htdocs/langs/en_US/paypal.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
|
[dolibarr.printipp]
|
||||||
|
file_filter = htdocs/langs/<lang>/printipp.lang
|
||||||
|
source_file = htdocs/langs/en_US/printipp.lang
|
||||||
|
source_lang = en_US
|
||||||
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
|
[dolibarr.productbatch]
|
||||||
|
file_filter = htdocs/langs/<lang>/productbatch.lang
|
||||||
|
source_file = htdocs/langs/en_US/productbatch.lang
|
||||||
|
source_lang = en_US
|
||||||
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[dolibarr.products]
|
[dolibarr.products]
|
||||||
file_filter = htdocs/langs/<lang>/products.lang
|
file_filter = htdocs/langs/<lang>/products.lang
|
||||||
source_file = htdocs/langs/en_US/products.lang
|
source_file = htdocs/langs/en_US/products.lang
|
||||||
@@ -254,6 +266,12 @@ source_file = htdocs/langs/en_US/propal.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
|
[dolibarr.resource]
|
||||||
|
file_filter = htdocs/langs/<lang>/resource.lang
|
||||||
|
source_file = htdocs/langs/en_US/resource.lang
|
||||||
|
source_lang = en_US
|
||||||
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[dolibarr.salaries]
|
[dolibarr.salaries]
|
||||||
file_filter = htdocs/langs/<lang>/salaries.lang
|
file_filter = htdocs/langs/<lang>/salaries.lang
|
||||||
source_file = htdocs/langs/en_US/salaries.lang
|
source_file = htdocs/langs/en_US/salaries.lang
|
||||||
@@ -266,12 +284,6 @@ source_file = htdocs/langs/en_US/sendings.lang
|
|||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
[dolibarr.shop]
|
|
||||||
file_filter = htdocs/langs/<lang>/shop.lang
|
|
||||||
source_file = htdocs/langs/en_US/shop.lang
|
|
||||||
source_lang = en_US
|
|
||||||
type = MOZILLAPROPERTIES
|
|
||||||
|
|
||||||
[dolibarr.sms]
|
[dolibarr.sms]
|
||||||
file_filter = htdocs/langs/<lang>/sms.lang
|
file_filter = htdocs/langs/<lang>/sms.lang
|
||||||
source_file = htdocs/langs/en_US/sms.lang
|
source_file = htdocs/langs/en_US/sms.lang
|
||||||
@@ -313,4 +325,3 @@ file_filter = htdocs/langs/<lang>/workflow.lang
|
|||||||
source_file = htdocs/langs/en_US/workflow.lang
|
source_file = htdocs/langs/en_US/workflow.lang
|
||||||
source_lang = en_US
|
source_lang = en_US
|
||||||
type = MOZILLAPROPERTIES
|
type = MOZILLAPROPERTIES
|
||||||
|
|
||||||
|
|||||||
62
COPYRIGHT
62
COPYRIGHT
@@ -9,41 +9,41 @@ More information: http://www.gnu.org/licenses/gpl-3.0.txt
|
|||||||
|
|
||||||
Dolibarr uses some external libraries released under different licenses. This is compatibility summary:
|
Dolibarr uses some external libraries released under different licenses. This is compatibility summary:
|
||||||
|
|
||||||
Component Version License GPL Compatible Usage
|
Component Version License GPL Compatible Usage
|
||||||
-------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------
|
||||||
PHP libraries:
|
PHP libraries:
|
||||||
AdoDb-Date 0.32 Modified BSD License Yes Date convertion (not into rpm package)
|
AdoDb-Date 0.32 Modified BSD License Yes Date convertion (not into rpm package)
|
||||||
CKEditor 4.3.3 LGPL-2.1+ Yes Editor WYSIWYG
|
CKEditor 4.3.3 LGPL-2.1+ Yes Editor WYSIWYG
|
||||||
FPDI 1.4.2 Apache Software License 2.0 Yes PDF templates management
|
FPDI 1.4.2 Apache Software License 2.0 Yes PDF templates management
|
||||||
FPDF_TPL 1.2 Apache Software License 2.0 Yes PDF templates management
|
FPDF_TPL 1.2 Apache Software License 2.0 Yes PDF templates management
|
||||||
GeoIP 1.4 LGPL-2.1+ Yes Sample code to make geoip convert (not into deb package)
|
GeoIP 1.4 LGPL-2.1+ Yes Sample code to make geoip convert (not into deb package)
|
||||||
NuSoap 0.9.5 LGPL 2.1+ Yes Library to develop SOAP Web services (not into rpm and deb package)
|
NuSoap 0.9.5 LGPL 2.1+ Yes Library to develop SOAP Web services (not into rpm and deb package)
|
||||||
odtPHP 1.0.1 GPL-2+ b Yes Library to build/edit ODT files
|
odtPHP 1.0.1 GPL-2+ b Yes Library to build/edit ODT files
|
||||||
PHPExcel 1.7.6 LGPL-2.1+ Yes Read/Write XLS files, read ODS files
|
PHPExcel 1.7.8 LGPL-2.1+ Yes Read/Write XLS files, read ODS files
|
||||||
PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests
|
PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests
|
||||||
TCPDF 6.0.093 LGPL-3+ Yes PDF generation
|
TCPDF 6.0.093 LGPL-3+ Yes PDF generation
|
||||||
|
|
||||||
JS libraries:
|
JS libraries:
|
||||||
jQuery 1.8.2 MIT License Yes JS library
|
jQuery 1.8.2 MIT License Yes JS library
|
||||||
jQuery UI 1.9.1 GPL and MIT License Yes JS library plugin UI
|
jQuery UI 1.9.1 GPL and MIT License Yes JS library plugin UI
|
||||||
jQuery UI Multiselect ? GPL and MIT License Yes JS library plugin for sexier multiselect
|
jQuery select2 3.5.2 GPL and Apache License Yes JS library plugin for sexier multiselect
|
||||||
jQuery blockUI 2.43 GPL and MIT License Yes JS library plugin blockUI (to use ajax popups)
|
jQuery blockUI 2.43 GPL and MIT License Yes JS library plugin blockUI (to use ajax popups)
|
||||||
jQuery Colorpicker 1.1 MIT License Yes JS library for color picker for a defined list of colors
|
jQuery Colorpicker 1.1 MIT License Yes JS library for color picker for a defined list of colors
|
||||||
jQuery DataTables 1.9.4 BSD Yes JS library for tables output
|
jQuery DataTables 1.9.4 BSD Yes JS library for tables output
|
||||||
jQuery FileUpload 5.0.3 GPL and MIT License Yes JS library to upload files
|
jQuery FileUpload 5.0.3 GPL and MIT License Yes JS library to upload files
|
||||||
jQuery Flot 0.7 MIT License Yes JS library to build graph
|
jQuery Flot 0.7 MIT License Yes JS library to build graph
|
||||||
jQuery JCrop 0.9.8 GPL and MIT License Yes JS library plugin Crop (to crop images)
|
jQuery JCrop 0.9.8 GPL and MIT License Yes JS library plugin Crop (to crop images)
|
||||||
jQuery Jeditable 1.7.1 GPL and MIT License Yes JS library plugin jeditable (to edit in place)
|
jQuery Jeditable 1.7.1 GPL and MIT License Yes JS library plugin jeditable (to edit in place)
|
||||||
jQuery jNotify 1.1.00 Apache Software License 2.0 Yes JS library plugin jNotify (to use ajax popups)
|
jQuery jNotify 1.1.00 Apache Software License 2.0 Yes JS library plugin jNotify (to use ajax popups)
|
||||||
jQuery jPicker 1.1.6 GPL and MIT License Yes JS library for color picker with not defined list of colors
|
jQuery jPicker 1.1.6 GPL and MIT License Yes JS library for color picker with not defined list of colors
|
||||||
jQuery jqueryFileTree 1.0.1 GPL and MIT License Yes JS library for color picker with not defined list of colors
|
jQuery jqueryFileTree 1.0.1 GPL and MIT License Yes JS library for color picker with not defined list of colors
|
||||||
jQuery jquerytreeview 1.4.1 MIT License Yes JS library for color picker with not defined list of colors
|
jQuery jquerytreeview 1.4.1 MIT License Yes JS library for color picker with not defined list of colors
|
||||||
jQuery Layout 1.3.0rc30.74 GPL and MIT License Yes JS library plugin Layout (RC-29.15)
|
jQuery Layout 1.3.0rc30.74 GPL and MIT License Yes JS library plugin Layout (RC-29.15)
|
||||||
jQuery Mobile 1.3.0 GPL and MIT License Yes JS library for smartphone (not used)
|
jQuery Mobile 1.3.0 GPL and MIT License Yes JS library for smartphone (not used)
|
||||||
jQuery TableDnD 0.6 GPL and MIT License Yes JS library plugin TableDnD (to reorder table rows)
|
jQuery TableDnD 0.6 GPL and MIT License Yes JS library plugin TableDnD (to reorder table rows)
|
||||||
jQuery Timepicker 1.1.0 GPL and MIT License Yes JS library Timepicker addon for Datepicker
|
jQuery Timepicker 1.1.0 GPL and MIT License Yes JS library Timepicker addon for Datepicker
|
||||||
jQuery Tiptip 1.3 GPL and MIT License Yes JS library for tooltips
|
jQuery Tiptip 1.3 GPL and MIT License Yes JS library for tooltips
|
||||||
jsGantt 1.2 BSD License Yes JS library (to build Gantt reports)
|
jsGantt 1.2 BSD License Yes JS library (to build Gantt reports)
|
||||||
|
|
||||||
For licenses compatibility informations:
|
For licenses compatibility informations:
|
||||||
http://www.fsf.org/licensing/licenses/index_html
|
http://www.fsf.org/licensing/licenses/index_html
|
||||||
|
|||||||
179
ChangeLog
179
ChangeLog
@@ -2,6 +2,175 @@
|
|||||||
English Dolibarr ChangeLog
|
English Dolibarr ChangeLog
|
||||||
--------------------------------------------------------------
|
--------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
***** ChangeLog for 3.7 compared to 3.6.* *****
|
||||||
|
For users:
|
||||||
|
- New: Match other auth system: Login can be done entering login or user
|
||||||
|
email (this open the road for SSO).
|
||||||
|
- New: Agenda export by project #1967.
|
||||||
|
- New: Increase length of thirdparty to 128 chars.
|
||||||
|
- New: "Is Order shippable" icon #1975.
|
||||||
|
- New: statistics on supplier orders and invoices on home page.
|
||||||
|
- New: Add permissions to read all trips and expenses.
|
||||||
|
- New: Can filter on date into tab "Referring object" of a project.
|
||||||
|
- New: Module notification has been enhanced:
|
||||||
|
EMail use now language of target contact.
|
||||||
|
Can also define a fixed email for notifications.
|
||||||
|
- New: Feature to link manually an order to an invoice does not disappear once
|
||||||
|
link has been done.
|
||||||
|
- New: Can set a color on user card (visible into agenda view).
|
||||||
|
- New: extrafields for projects and tasks are exported to ODT documents.
|
||||||
|
- New: Add number of active notification into tab title (like we do for notes and documents)
|
||||||
|
- New: Can add product into category from category card.
|
||||||
|
- New: PDF event report show project and status of event.
|
||||||
|
- New: Can filter on status on interventions.
|
||||||
|
- New: Add help info of field type into dictionary of payment types.
|
||||||
|
- New: Add proposals into referer page of thirdparty.
|
||||||
|
- New: On contact list can set filter on both active and not active (no more exclusive select).
|
||||||
|
- New: Intervention documents are now available in ECM module.
|
||||||
|
- New: Can attach supplier order to a customer order.
|
||||||
|
- New: Supervisor is now visible into user list.
|
||||||
|
- New: Add user of creation and validation on invoice export.
|
||||||
|
- New: Add info page about browser.
|
||||||
|
- New: Enable feature developed for 3.6 we forgot to enabled: Adding prefix
|
||||||
|
on uploaded file names.
|
||||||
|
- New: No more dependency between contract and service module.
|
||||||
|
- New: [ task #867 ] Remove ESAEB external module code from core.
|
||||||
|
- New: Can create proposal from an intervention.
|
||||||
|
- New: An event can be assigned to several users.
|
||||||
|
- New: Can filter events on a group of users.
|
||||||
|
- New: Can filter events of a thirdparty.
|
||||||
|
- New: Onto event summary of elements, end date and status are visible.
|
||||||
|
- New: Split Agenda view (month, week, day) into different tabs.
|
||||||
|
- New: Add a view "per user" of agenda events (with different colors according to type of event).
|
||||||
|
- New: Each user can include its own external ics calendar into dolibarr agenda view.
|
||||||
|
- New: Add event FICHINTER_CLASSIFY_BILLED into list of possible events to
|
||||||
|
create an automatic event into agenda.
|
||||||
|
- New: Add new type of event (when type of events are used, not by default).
|
||||||
|
- New: Can disable predefined type of events.
|
||||||
|
- New: Form to add a photo is immediatly available on photo page if
|
||||||
|
permissions are ok (save one click per photo to add).
|
||||||
|
- New: Add option PRODUCT_MAX_VISIBLE_PHOTO to limit number of photos
|
||||||
|
shown on main product card.
|
||||||
|
- New: Add country into table of thirdparties type. This will allow to provide
|
||||||
|
a list of thirdparty types specific to a country (like argentina that
|
||||||
|
need type A or B).
|
||||||
|
- New: Can force a specific bank account onto an invoice/order.
|
||||||
|
- New: Home page of project area shows list of draft project (like other main page).
|
||||||
|
- New: Can search on project ref or string from project main page (like other main page).
|
||||||
|
- New: First change to match accessibility rules: http://www.w3.org/TR/WCAG10-HTML-TECHS/
|
||||||
|
Differentiate text and img.
|
||||||
|
Use label into quick search form.
|
||||||
|
Use accesskey on form search.
|
||||||
|
- New: Intervention documents are now available in ECM module.
|
||||||
|
- New: Add attachments on user card + in ECM module.
|
||||||
|
- New: Can add __PROJECT_REF__ and __TIHRPARTY_NAME__ into email topic or content template.
|
||||||
|
- New: [ task #1204 ] add Numering contrat module free (like leopard in product module).
|
||||||
|
- New: [ task #712 ] Add warning when creating invoice from proposal or order, when there is already one invoice.
|
||||||
|
- New: Enable supplier price log table.
|
||||||
|
- New: [ task #1204 ] add a supplier reference to contract.
|
||||||
|
- New: [ task #1218 ] Can drag and drop an event from calendar to change its day.
|
||||||
|
- New: Optimize size of image static resources.
|
||||||
|
- New: Add hourly and daily amount on user card. Add weekly working hours and salary on user card.
|
||||||
|
- New: Content of predefined email come firstly from table llx_c_email_template, then translation key.
|
||||||
|
- New: Add option MAIN_GENERATE_INVOICES_WITH_PICTURE to show picture
|
||||||
|
onto PDF like MAIN_GENERATE_PROPOSALS_WITH_PICTURE dir for proposals.
|
||||||
|
- New: Add more search field in list of cheque deposits.
|
||||||
|
- New: Add feature to order to invoice on supplier part.
|
||||||
|
- New : Use of MAIN_USE_FILECACHE_EXPORT_EXCEL_DIR to use disk cache for big excel export.
|
||||||
|
- New: Direct invoice creation from predefined invoice.
|
||||||
|
- New: Add dunning into accountancy report.
|
||||||
|
- New: Add favorite button into country dictionary to put value on top select list
|
||||||
|
- Upgrade phpexcel lib to 1.7.8
|
||||||
|
- New : Use of MAIN_USE_FILECACHE_EXPORT_EXCEL_DIR to use disk cache for big excel export.
|
||||||
|
- New : Option on extrafields to have them always editable regardless of the document status.
|
||||||
|
- New : New module PrintIPP to print without opening document is available as stable.
|
||||||
|
- Fix: [ bug #1487 ] PAYMENT_DELETE trigger does not intercept trigger action
|
||||||
|
- Fix: [ bug #1470, #1472, #1473] User trigger problem
|
||||||
|
- Fix: [ bug #1489, #1491 ] Intervention trigger problem
|
||||||
|
- Fix: [ bug #1492, #1493 ] Member trigger problem
|
||||||
|
- Fix: [ bug #1474, #1475 ] Contract trigger problem
|
||||||
|
- Fix: [ bug #1496 ] ACTION_DELETE trigger does not show trigger error
|
||||||
|
- Fix: [ bug #1494 ] CATEGORY_CREATE and CATEGORY_MODIFY triggers do not intercept trigger action
|
||||||
|
- Fix: [ bug #1502 ] DON_CREATE trigger does not intercept trigger action
|
||||||
|
- Fix: [ bug #1505, #1504] Project trigger problem
|
||||||
|
- Fix: [ bug #1463, #1464 ] Proposal triggers problem
|
||||||
|
- Fix: [ bug #1498, #1499 ] Shipment/Delivery triggers problem
|
||||||
|
- Fix: [ bug #1465, #1466 ] Product triggers problem
|
||||||
|
- Fix: [ bug #1508 ] STOCK_MOVEMENT does not show trigger error message
|
||||||
|
- Fix: [ bug #1501 ] DEPLACEMENT_CREATE trigger do not intercept trigger action
|
||||||
|
- Fix: [ bug #1506, #1507 ] ECM trigger error problem
|
||||||
|
- Fix: [ bug #1469 ] Triggers CONTACT_MODIFY and CONTACT_DELETE duplicates error message
|
||||||
|
- Fix: [ bug #1533 ] Links triggers do not show trigger error message
|
||||||
|
- Fix: [ bug #1537 ] Difference between societe.nom and adherent.societe.
|
||||||
|
- Fix: [ bug #1535 ] Supplier invoice Extrafields are not shown
|
||||||
|
- Fix: datepicker first day of week can be monday by setting into display setup
|
||||||
|
- Fix: [ bug #575 ] GED doesn't works if there is "/" in a mask
|
||||||
|
|
||||||
|
For users, new experimental module (need to set feature level of instance to experimental to see them):
|
||||||
|
- New: Module Accounting Expert to manage accountancy
|
||||||
|
Special Thanks to developpers :
|
||||||
|
Olivier Geffroy
|
||||||
|
Alexandre Spangaro
|
||||||
|
Ari Elbaz
|
||||||
|
Florian Henry
|
||||||
|
Juanjo Menent
|
||||||
|
And to the contributors :
|
||||||
|
Jeff Info 2000 euros
|
||||||
|
Nord Anim 120 euros
|
||||||
|
Hydroflex 120 euros
|
||||||
|
Asysteo 120 euros
|
||||||
|
Fournisseur médical 120 euros
|
||||||
|
- Removed: unmaintained OScommerce module
|
||||||
|
|
||||||
|
For translators:
|
||||||
|
- Update language files.
|
||||||
|
- New: When a translation is not available we always jump to en_US and only en_US.
|
||||||
|
|
||||||
|
For developers:
|
||||||
|
- New: Add a css style "cursorpointer".
|
||||||
|
- New: Select list of users can return user into hierarchy.
|
||||||
|
- New: getBrowserInfo can return type of layout of browser (classic/phone/tablet)
|
||||||
|
- New: Add hook "searchAgendaFrom" and "beforePDFCreation".
|
||||||
|
- New: Add trigger DON_UPDATE, DON_DELETE
|
||||||
|
- New: Add country iso code on 3 chars into table of countries.
|
||||||
|
- Qual: Removed hard coded rowid into data init of table llx_c_action_trigger.
|
||||||
|
- LINEBILL_DELETE, LINK_DELETE, ORDER_SUPPLIER_DELETE, RESOURCE_DELETE trigger called before SQL delete
|
||||||
|
- New: [ Task #1481 ] Add trigger BILL_SUPPLIER_UPDATE.
|
||||||
|
- New: [ Task #1495 ] Add trigger LINECONTRACT_CREATE.
|
||||||
|
- New: Added hook "formConfirm" and "doActions" for supplier invoice card.
|
||||||
|
- New: [ task #1511, #1426 ] Added hook "doActions" for supplier card and supplier order card.
|
||||||
|
- New: renamed table llx_c_pays to llx_c_country & libelle field to label.
|
||||||
|
- New: Added hook "formConfirm" and "doActions" for fichinter card
|
||||||
|
- New: Can search list of thirdparties from web service on part of name.
|
||||||
|
- New: Function getCurrencyAmount is marked as deprecated. Use function price to output a price
|
||||||
|
including currency symbol.
|
||||||
|
- Qual: Renamed table llx_c_civilite into llx_c_civility,
|
||||||
|
field civilite into label in the same table,
|
||||||
|
and field civilite into civility in other table.
|
||||||
|
- Qual: Renamed all files & links "liste.php" into "list.php".
|
||||||
|
- Qual: Renamed all files & links "fiche.php" into "card.php".
|
||||||
|
- Qual: Replace all constants COMPTA_* by ACCOUNTING_*.
|
||||||
|
- Qual: Replace all constants ACCOUNTINGEX_* by ACCOUNTING_* to simplify migration of the module
|
||||||
|
- Fix: [ bug #1724 ] Can't add a submenu to projects
|
||||||
|
|
||||||
|
WARNING: Following changes may create regression for some external modules, but was necessary to make
|
||||||
|
Dolibarr better:
|
||||||
|
|
||||||
|
- If you can't see trips and expenses records, check that you have the new permission "read all
|
||||||
|
trips and expenses".
|
||||||
|
- Deprecated module "oscommerce" were removed.
|
||||||
|
- Changed the way parameters are provided to scripts sync_xxx_ldap2dolibarr.php
|
||||||
|
- Some field into database were renamed from "libelle" to "label".
|
||||||
|
- Table llx_c_pays were renamed into llx_c_country.
|
||||||
|
- Triggers *_BUILDDOC are removed. Building a doc is not a business event. For action after
|
||||||
|
creation of a pdf or odt, hook "afterPDFCreation" or "afterODTCreation" must be used instead.
|
||||||
|
- A lot of pages called fiche.php were renamed into card.php
|
||||||
|
- A lot of pages called liste.php were renamed into list.php
|
||||||
|
- If you used warehouse/stock module, recheck setup of stock increase/decrease rules of the
|
||||||
|
warehouse module and your Point Of Sale module if you use one.
|
||||||
|
|
||||||
|
|
||||||
***** ChangeLog for 3.6.2 compared to 3.6.1 *****
|
***** ChangeLog for 3.6.2 compared to 3.6.1 *****
|
||||||
- Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice.
|
- Fix: fix ErrorBadValueForParamNotAString error message in price customer multiprice.
|
||||||
- Fix: bug 1588 : relative discount.
|
- Fix: bug 1588 : relative discount.
|
||||||
@@ -16,6 +185,7 @@ English Dolibarr ChangeLog
|
|||||||
- Fix: Show sender Country on PDF docs when sender Country <> receiver Country
|
- Fix: Show sender Country on PDF docs when sender Country <> receiver Country
|
||||||
- Fix: [ bug #1624 ] Use lowest buying price for margin when selling with POS
|
- Fix: [ bug #1624 ] Use lowest buying price for margin when selling with POS
|
||||||
- Fix: [ bug #1749 ] Undefined $mailchimp
|
- Fix: [ bug #1749 ] Undefined $mailchimp
|
||||||
|
- Fix: [ bug #1736 ] Failing supplier Elephant numeration module with some masks
|
||||||
- Fix: [ bug #1649 ] Cancel button of several thirdparty actions, does the same thing as modify
|
- Fix: [ bug #1649 ] Cancel button of several thirdparty actions, does the same thing as modify
|
||||||
- Fix: [ bug #1736 ] Failing supplier Elephant numeration module with some masks
|
- Fix: [ bug #1736 ] Failing supplier Elephant numeration module with some masks
|
||||||
- Fix: [ bug #1731 ] Can't use quick navigation on project tasks secondary tabs
|
- Fix: [ bug #1731 ] Can't use quick navigation on project tasks secondary tabs
|
||||||
@@ -110,6 +280,9 @@ For users:
|
|||||||
- Fix: Add actions events not implemented.
|
- Fix: Add actions events not implemented.
|
||||||
- Fix: Price min of composition is not supplier price min by quantity.
|
- Fix: Price min of composition is not supplier price min by quantity.
|
||||||
- Fix: [ bug #1356 ] Bank accountancy number is limited to 8 numbers.
|
- Fix: [ bug #1356 ] Bank accountancy number is limited to 8 numbers.
|
||||||
|
- Fix: [ bug #1439 ] impossible to remove a a translation (multilanguage-feature)
|
||||||
|
- New: If multilangue is enabled, mail (from propal, invoice, etc...) message is pre-defaulted in Customer language
|
||||||
|
- Fix: [ bug #1459 ] _ADD_CONTACT and _DEL_CONTACT triggers do not intercept insertion when reported an error
|
||||||
- Fix: [ bug #1478 ] BILL_PAYED trigger action does not intercept failure under some circumstances
|
- Fix: [ bug #1478 ] BILL_PAYED trigger action does not intercept failure under some circumstances
|
||||||
- Fix: [ bug #1479 ] Several customer invoice triggers do not intercept trigger action
|
- Fix: [ bug #1479 ] Several customer invoice triggers do not intercept trigger action
|
||||||
- Fix: [ bug #1477 ] Several customer invoice triggers do not show trigger error messages
|
- Fix: [ bug #1477 ] Several customer invoice triggers do not show trigger error messages
|
||||||
@@ -137,6 +310,8 @@ For developers:
|
|||||||
- New: A module can disable a standard ECM view.
|
- New: A module can disable a standard ECM view.
|
||||||
- New: Add multilang support into product webservice.
|
- New: Add multilang support into product webservice.
|
||||||
- New: Add hooks on project card page.
|
- New: Add hooks on project card page.
|
||||||
|
- New: Add call_trigger method on CommonObject class. So new trigger call within object is just :
|
||||||
|
$result = $this->call_trigger($trigger_name, $user)
|
||||||
|
|
||||||
WARNING: Following change may create regression for some external modules, but was necessary to make
|
WARNING: Following change may create regression for some external modules, but was necessary to make
|
||||||
Dolibarr better:
|
Dolibarr better:
|
||||||
@@ -144,11 +319,11 @@ Dolibarr better:
|
|||||||
- The deprecated way (with 4 parameters) to declare a new tab into a module descriptor file has been
|
- The deprecated way (with 4 parameters) to declare a new tab into a module descriptor file has been
|
||||||
removed. You must now use the 6 parameters way. See file modMyModule.class.php for example.
|
removed. You must now use the 6 parameters way. See file modMyModule.class.php for example.
|
||||||
- Remove the javascript function ac_delay() that is not used anymore by core code.
|
- Remove the javascript function ac_delay() that is not used anymore by core code.
|
||||||
- Properties "dictionnaries" into module descriptor files has been renamed into "dictionaries".
|
- Properties "dictionnaries" into module descriptor files have been renamed into "dictionaries".
|
||||||
- Method form->select_currency() has been removed. Use instead print form->selectCurrency().
|
- Method form->select_currency() has been removed. Use instead print form->selectCurrency().
|
||||||
- Method form->select_methodes_commande() has been renamed into english name selectInputMethod().
|
- Method form->select_methodes_commande() has been renamed into english name selectInputMethod().
|
||||||
- The following hooks are now 'addreplace' hooks: "formCreateThirdpartyOptions"
|
- The following hooks are now 'addreplace' hooks: "formCreateThirdpartyOptions"
|
||||||
So check that return value is 0 to keep default standard behaviour after hook or 1 to disable
|
So check that return value is 0 to keep default standard behaviour after hook, or 1 to disable
|
||||||
default standard behaviour.
|
default standard behaviour.
|
||||||
- Properties "civilite_id" were renamed into "civility_id".
|
- Properties "civilite_id" were renamed into "civility_id".
|
||||||
- Remove add_photo_web() that is ot used anymore by core code.
|
- Remove add_photo_web() that is ot used anymore by core code.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project name="dolibarr" default="hudson" basedir=".">
|
<project name="dolibarr" default="hudson" basedir=".">
|
||||||
|
fdfds
|
||||||
<!-- Exclude/ignore paths -->
|
<!-- Exclude/ignore paths -->
|
||||||
<property name="ignorepaths" value="${basedir}/htdocs/conf,${basedir}/htdocs/core/filemanagerdol,${basedir}/htdocs/includes" />
|
<property name="ignorepaths" value="${basedir}/htdocs/conf,${basedir}/htdocs/core/filemanagerdol,${basedir}/htdocs/includes" />
|
||||||
<property name="ignoreregexp" value="**/PEAR/*,**/NET/*,**/HTTP/*,**/zendgdata/*,**/reportico/*" />
|
<property name="ignoreregexp" value="**/PEAR/*,**/NET/*,**/HTTP/*,**/zendgdata/*,**/reportico/*" />
|
||||||
|
|||||||
@@ -153,6 +153,9 @@ from origin/upstream and origin/pristine.
|
|||||||
|
|
||||||
* Into root dir, launch:
|
* Into root dir, launch:
|
||||||
> debian/get-orig-source.sh
|
> debian/get-orig-source.sh
|
||||||
|
If script fails with error Bad certificate, you can set "export PERL_LWP_SSL_VERIFY_HOSTNAME=0" to solve this.
|
||||||
|
|
||||||
|
* Some files are removed from archive by the get-orig-source.sh
|
||||||
|
|
||||||
* Staying into git root directory, run
|
* Staying into git root directory, run
|
||||||
> git-import-orig -vv ../tcpdf_x.y.z+dfsg.orig.tar.xz
|
> git-import-orig -vv ../tcpdf_x.y.z+dfsg.orig.tar.xz
|
||||||
@@ -160,9 +163,9 @@ from origin/upstream and origin/pristine.
|
|||||||
Note: If there was errors solved manually, you may need to make a git commit
|
Note: If there was errors solved manually, you may need to make a git commit
|
||||||
|
|
||||||
* Add an entry into debian/changelog
|
* Add an entry into debian/changelog
|
||||||
> dch -v x.y.z-dsfg-1 "My comment" will add entry.
|
> dch -v x.y.z+dfsg-1 "My comment" will add entry.
|
||||||
For example: dch -v x.y.z-dsfg-1 "New upstream release." for a new version
|
For example: dch -v x.y.z+dfsg-1 "New upstream release." for a new version
|
||||||
Then modify changelog to replace "unstable" with "UNRELEASED".
|
Then modify changelog to replace "version" or "unstable" with "UNRELEASED".
|
||||||
|
|
||||||
Warning: Date must have format reported by "date -R"
|
Warning: Date must have format reported by "date -R"
|
||||||
Warning: Name and email must match value into debian/control file (Entry added here is used by next step).
|
Warning: Name and email must match value into debian/control file (Entry added here is used by next step).
|
||||||
@@ -228,23 +231,29 @@ from origin/upstream and origin/pristine.
|
|||||||
|
|
||||||
* If new upstream is available onto sourceforge, launch:
|
* If new upstream is available onto sourceforge, launch:
|
||||||
> debian/get-orig-source.sh
|
> debian/get-orig-source.sh
|
||||||
|
If script fails with error Bad certificate, you can set "export PERL_LWP_SSL_VERIFY_HOSTNAME=0" to solve this.
|
||||||
|
|
||||||
* Edit tgz file to remove ckeditor and phpexcel and rename file into
|
* Edit tgz file to remove
|
||||||
dolibarr-x.y.z+dsfgw.tgz
|
- htdocs/includes/ckeditor
|
||||||
(x.y.z = version, w start from 1 and is increased for each new import)
|
- htdocs/includes/jquery/plugins/datatables/extras/TableTools/swf
|
||||||
|
- htdocs/includes/phpexcel
|
||||||
|
- htdocs/includes/tcpdf
|
||||||
|
And rename file into
|
||||||
|
dolibarr-x.y.z+dfsgw.tgz
|
||||||
|
(x.y.z = version, w start from 1 and is increased for each new git-import-orig already done)
|
||||||
|
|
||||||
* Staying into git root directory, run
|
* Staying into git root directory, run
|
||||||
> git-import-orig -vv ../dolibarr-x.y.z+dsfgw.tgz
|
> git-import-orig -vv ../dolibarr-x.y.z+dfsgw.tgz
|
||||||
and enter version when requested with format
|
and enter version when requested with format
|
||||||
x.y.z+dsfgw
|
x.y.z+dfsgw
|
||||||
(x.y.z = version, w start from 1 and is increased for each new import)
|
(x.y.z = version, w start from 1 and is increased for each new import)
|
||||||
|
|
||||||
Note: If there was errors solved manually after get-orig-sources.sh, you may need to make a git commit
|
Note: If there was errors solved manually after get-orig-sources.sh, you may need to make a git commit
|
||||||
|
|
||||||
* Add an entry into debian/changelog
|
* Add an entry into debian/changelog
|
||||||
> dch -v x.y.z-w "My comment" will add entry.
|
> dch -v x.y.z+dfsg-w "My comment" will add entry.
|
||||||
For example: dch -v x.y.z-w "New upstream release." for a new version (x.y.z = version, w start from 1 and increaed for each new import)
|
For example: dch -v x.y.z+dfsgw-1 "New upstream release." for a new version (x.y.z = version, w start from 1 and increaed for each new import)
|
||||||
Then modify changelog to replace "unstable" with "UNRELEASED".
|
Then modify changelog to replace "version" or "unstable" with "UNRELEASED".
|
||||||
Then check/modify also the user/date signature:
|
Then check/modify also the user/date signature:
|
||||||
- Date must have format reported by "date -R"
|
- Date must have format reported by "date -R"
|
||||||
- Name and email must match value into debian/control file (Entry added here is used by next step).
|
- Name and email must match value into debian/control file (Entry added here is used by next step).
|
||||||
|
|||||||
@@ -1,13 +1,6 @@
|
|||||||
dolibarr (3.6.1-3) unstable; urgency=low
|
dolibarr (3.7.0-3) UNRELEASED; urgency=low
|
||||||
|
|
||||||
[ Laurent Destailleur (eldy) ]
|
[ Laurent Destailleur (eldy) ]
|
||||||
* New upstream release.
|
* New upstream release.
|
||||||
|
|
||||||
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 23 Sep 2014 12:00:00 +0100
|
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 21 Oct 2014 12:00:00 +0100
|
||||||
|
|
||||||
dolibarr (3.6.0-3) unstable; urgency=low
|
|
||||||
|
|
||||||
[ Laurent Destailleur (eldy) ]
|
|
||||||
* New upstream release.
|
|
||||||
|
|
||||||
-- Laurent Destailleur (eldy) <eldy@users.sourceforge.net> Tue, 15 July 2014 12:00:00 +0100
|
|
||||||
@@ -1,10 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Scan for new official sources and download file
|
|
||||||
# run with debian/get-orig-source.sh [x.y.z]
|
|
||||||
|
|
||||||
tmpdir=$(mktemp -d)
|
tmpdir=$(mktemp -d)
|
||||||
echo "tmpdir = $tmpdir"
|
|
||||||
|
|
||||||
|
|
||||||
|
# Download source file
|
||||||
if [ -n "$1" ]; then
|
if [ -n "$1" ]; then
|
||||||
uscan_opts="--download-version=$1"
|
uscan_opts="--download-version=$1"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -17,9 +17,9 @@
|
|||||||
; ----- Change this -----
|
; ----- Change this -----
|
||||||
AppName=DoliWamp
|
AppName=DoliWamp
|
||||||
; DoliWamp-x.x.x or DoliWamp-x.x.x-alpha or DoliWamp-x.x.x-beta or DoliWamp-x.x.x-rc or DoliWamp-x.x.x
|
; DoliWamp-x.x.x or DoliWamp-x.x.x-alpha or DoliWamp-x.x.x-beta or DoliWamp-x.x.x-rc or DoliWamp-x.x.x
|
||||||
AppVerName=DoliWamp-3.6.1
|
AppVerName=DoliWamp-3.7.0-beta
|
||||||
; DoliWamp-x.x x or DoliWamp-x.x.x-alpha or DoliWamp-x.x.x-beta or DoliWamp-x.x.x-rc or DoliWamp-x.x.x
|
; DoliWamp-x.x x or DoliWamp-x.x.x-alpha or DoliWamp-x.x.x-beta or DoliWamp-x.x.x-rc or DoliWamp-x.x.x
|
||||||
OutputBaseFilename=DoliWamp-3.6.1
|
OutputBaseFilename=DoliWamp-3.7.0-beta
|
||||||
; ----- End of change
|
; ----- End of change
|
||||||
;OutputManifestFile=build\doliwampbuild.log
|
;OutputManifestFile=build\doliwampbuild.log
|
||||||
; Define full path from which all relative path are defined
|
; Define full path from which all relative path are defined
|
||||||
|
|||||||
@@ -61,13 +61,17 @@ If you want to build/test package locally:
|
|||||||
|
|
||||||
- List of series are visible here: https://launchpad.net/dolibarr/+series
|
- List of series are visible here: https://launchpad.net/dolibarr/+series
|
||||||
|
|
||||||
# To update Dolibarr into launchpad (when repository for sources already exists)
|
# To update Dolibarr into launchpad (when remote repository for sources already exists)
|
||||||
#----------------------------------
|
#----------------------------------
|
||||||
|
# create local repository
|
||||||
cd bzr
|
cd bzr
|
||||||
bzr branch lp:~yourlogin/dolibarr/[dev|beta|stable]
|
bzr branch lp:~yourlogin/dolibarr/[develop|beta|stable] dolibarr-[dev|beta|stable]
|
||||||
cd dolibarr-[dev|beta|stable]
|
cd dolibarr-[dev|beta|stable]
|
||||||
|
# Update
|
||||||
|
bzr update
|
||||||
|
-- Update files here. Remove all and overwrite --
|
||||||
bzr status
|
bzr status
|
||||||
-- Update files here --
|
bzr add *
|
||||||
bzr commit -m "Description of change"
|
bzr commit -m "Description of change"
|
||||||
bzr push
|
bzr push
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,300 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
# \file build/makepack-dolibarrlang.pl
|
|
||||||
# \brief Package builder (tgz, zip, rpm, deb, exe)
|
|
||||||
# \author (c)2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
use Cwd;
|
|
||||||
|
|
||||||
$PROJECT = "dolibarr";
|
|
||||||
|
|
||||||
@LISTETARGET = ("TGZ"); # Possible packages
|
|
||||||
%REQUIREMENTTARGET = ( # Tool requirement for each package
|
|
||||||
"TGZ" => "tar",
|
|
||||||
"ZIP" => "7z",
|
|
||||||
"EXE" => "makensis.exe"
|
|
||||||
);
|
|
||||||
%ALTERNATEPATH = (
|
|
||||||
"7z" => "7-ZIP",
|
|
||||||
"makensis.exe" => "NSIS"
|
|
||||||
);
|
|
||||||
|
|
||||||
use vars qw/ $REVISION $VERSION /;
|
|
||||||
$REVISION = '1.10';
|
|
||||||
$VERSION = "1.0 (build $REVISION)";
|
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
# MAIN
|
|
||||||
#------------------------------------------------------------------------------
|
|
||||||
( $DIR = $0 ) =~ s/([^\/\\]+)$//;
|
|
||||||
( $PROG = $1 ) =~ s/\.([^\.]*)$//;
|
|
||||||
$Extension = $1;
|
|
||||||
$DIR ||= '.';
|
|
||||||
$DIR =~ s/([^\/\\])[\\\/]+$/$1/;
|
|
||||||
|
|
||||||
# Detect OS type
|
|
||||||
# --------------
|
|
||||||
if ( "$^O" =~ /linux/i || ( -d "/etc" && -d "/var" && "$^O" !~ /cygwin/i ) ) {
|
|
||||||
$OS = 'linux';
|
|
||||||
$CR = '';
|
|
||||||
}
|
|
||||||
elsif ( -d "/etc" && -d "/Users" ) { $OS = 'macosx'; $CR = ''; }
|
|
||||||
elsif ( "$^O" =~ /cygwin/i || "$^O" =~ /win32/i ) {
|
|
||||||
$OS = 'windows';
|
|
||||||
$CR = "\r";
|
|
||||||
}
|
|
||||||
if ( !$OS ) {
|
|
||||||
print "$PROG.$Extension was not able to detect your OS.\n";
|
|
||||||
print "Can't continue.\n";
|
|
||||||
print "$PROG.$Extension aborted.\n";
|
|
||||||
sleep 2;
|
|
||||||
exit 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Define buildroot
|
|
||||||
# ----------------
|
|
||||||
if ( $OS =~ /linux/ ) {
|
|
||||||
$TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "/tmp";
|
|
||||||
}
|
|
||||||
if ( $OS =~ /macos/ ) {
|
|
||||||
$TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "/tmp";
|
|
||||||
}
|
|
||||||
if ( $OS =~ /windows/ ) {
|
|
||||||
$TEMP = $ENV{"TEMP"} || $ENV{"TMP"} || "c:/temp";
|
|
||||||
$PROGPATH = $ENV{"ProgramFiles"};
|
|
||||||
}
|
|
||||||
if ( !$TEMP || !-d $TEMP ) {
|
|
||||||
print "Error: A temporary directory can not be find.\n";
|
|
||||||
print "Check that TEMP or TMP environment variable is set correctly.\n";
|
|
||||||
print "makepack-dolibarrlang.pl aborted.\n";
|
|
||||||
sleep 2;
|
|
||||||
exit 2;
|
|
||||||
}
|
|
||||||
$BUILDROOT = "$TEMP/dolibarr-buildroot";
|
|
||||||
|
|
||||||
my $copyalreadydone = 0;
|
|
||||||
my $batch = 0;
|
|
||||||
|
|
||||||
print "Makepack langs version $VERSION\n";
|
|
||||||
print "Enter language code to package (en_US, fr_FR, ...) : ";
|
|
||||||
$PROJECT = <STDIN>;
|
|
||||||
chomp($PROJECT);
|
|
||||||
|
|
||||||
# Ask and set version $MAJOR and $MINOR
|
|
||||||
print "Enter value for version: ";
|
|
||||||
$PROJVERSION = <STDIN>;
|
|
||||||
chomp($PROJVERSION);
|
|
||||||
( $MAJOR, $MINOR ) = split( /\./, $PROJVERSION, 2 );
|
|
||||||
if ( $MINOR eq '' ) {
|
|
||||||
print "Enter value for minor version: ";
|
|
||||||
$MINOR = <STDIN>;
|
|
||||||
chomp($MINOR);
|
|
||||||
}
|
|
||||||
|
|
||||||
$FILENAME = "$PROJECT";
|
|
||||||
$FILENAMETGZ = "lang_$PROJECT-$MAJOR.$MINOR";
|
|
||||||
if ( -d "/usr/src/redhat" ) {
|
|
||||||
|
|
||||||
# redhat
|
|
||||||
$RPMDIR = "/usr/src/redhat";
|
|
||||||
}
|
|
||||||
if ( -d "/usr/src/RPM" ) {
|
|
||||||
|
|
||||||
# mandrake
|
|
||||||
$RPMDIR = "/usr/src/RPM";
|
|
||||||
}
|
|
||||||
|
|
||||||
$SOURCE = "$DIR/../../dolibarr";
|
|
||||||
$DESTI = "$SOURCE/build";
|
|
||||||
|
|
||||||
# Choose package targets
|
|
||||||
#-----------------------
|
|
||||||
$target = "ZIP"; # Les langs sont au format zip
|
|
||||||
if ($target) {
|
|
||||||
$CHOOSEDTARGET{ uc($target) } = 1;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
my $found = 0;
|
|
||||||
my $NUM_SCRIPT;
|
|
||||||
while ( !$found ) {
|
|
||||||
my $cpt = 0;
|
|
||||||
printf( " %d - %3s (%s)\n",
|
|
||||||
$cpt, "All", "Need " . join( ",", values %REQUIREMENTTARGET ) );
|
|
||||||
foreach my $target (@LISTETARGET) {
|
|
||||||
$cpt++;
|
|
||||||
printf( " %d - %3s (%s)\n",
|
|
||||||
$cpt, $target, "Need " . $REQUIREMENTTARGET{$target} );
|
|
||||||
}
|
|
||||||
|
|
||||||
# Are asked to select the file to move
|
|
||||||
print "Choose one package number or several separated with space: ";
|
|
||||||
$NUM_SCRIPT = <STDIN>;
|
|
||||||
chomp($NUM_SCRIPT);
|
|
||||||
if ( $NUM_SCRIPT =~ s/-//g ) {
|
|
||||||
|
|
||||||
# Do not do copy
|
|
||||||
$copyalreadydone = 1;
|
|
||||||
}
|
|
||||||
if ( $NUM_SCRIPT !~ /^[0-$cpt\s]+$/ ) {
|
|
||||||
print "This is not a valid package number list.\n";
|
|
||||||
$found = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$found = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
print "\n";
|
|
||||||
if ($NUM_SCRIPT) {
|
|
||||||
foreach my $num ( split( /\s+/, $NUM_SCRIPT ) ) {
|
|
||||||
$CHOOSEDTARGET{ $LISTETARGET[ $num - 1 ] } = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
foreach my $key (@LISTETARGET) {
|
|
||||||
$CHOOSEDTARGET{$key} = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Test if requirement is ok
|
|
||||||
#--------------------------
|
|
||||||
foreach my $target ( keys %CHOOSEDTARGET ) {
|
|
||||||
foreach my $req ( split( /[,\s]/, $REQUIREMENTTARGET{$target} ) ) {
|
|
||||||
|
|
||||||
# Test
|
|
||||||
print "Test requirement for target $target: Search '$req'... ";
|
|
||||||
$ret = `"$req" 2>&1`;
|
|
||||||
$coderetour = $?;
|
|
||||||
$coderetour2 = $coderetour >> 8;
|
|
||||||
if (
|
|
||||||
$coderetour != 0
|
|
||||||
&& ( ( $coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i )
|
|
||||||
|| ( $coderetour2 == 127 && $OS !~ /windows/ ) )
|
|
||||||
&& $PROGPATH
|
|
||||||
)
|
|
||||||
{
|
|
||||||
|
|
||||||
# Not found error, we try in PROGPATH
|
|
||||||
$ret = `"$PROGPATH/$ALTERNATEPATH{$req}/$req\" 2>&1`;
|
|
||||||
$coderetour = $?;
|
|
||||||
$coderetour2 = $coderetour >> 8;
|
|
||||||
$REQUIREMENTTARGET{$target} = "$PROGPATH/$ALTERNATEPATH{$req}/$req";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
$coderetour != 0
|
|
||||||
&& ( ( $coderetour2 == 1 && $OS =~ /windows/ && $ret !~ /Usage/i )
|
|
||||||
|| ( $coderetour2 == 127 && $OS !~ /windows/ ) )
|
|
||||||
)
|
|
||||||
{
|
|
||||||
|
|
||||||
# Not found error
|
|
||||||
print
|
|
||||||
"Not found\nCan't build target $target. Requirement '$req' not found in PATH\n";
|
|
||||||
$CHOOSEDTARGET{$target} = -1;
|
|
||||||
last;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
|
|
||||||
# Pas erreur ou erreur autre que programme absent
|
|
||||||
print " Found " . $REQUIREMENTTARGET{$target} . "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print "\n";
|
|
||||||
|
|
||||||
# Check if there is at least on target to build
|
|
||||||
#----------------------------------------------
|
|
||||||
$nboftargetok = 0;
|
|
||||||
foreach my $target ( keys %CHOOSEDTARGET ) {
|
|
||||||
if ( $CHOOSEDTARGET{$target} < 0 ) { next; }
|
|
||||||
$nboftargetok++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($nboftargetok) {
|
|
||||||
|
|
||||||
# Update buildroot
|
|
||||||
#-----------------
|
|
||||||
if ( !$copyalreadydone ) {
|
|
||||||
print "Delete directory $BUILDROOT\n";
|
|
||||||
$ret = `rm -fr "$BUILDROOT"`;
|
|
||||||
mkdir "$BUILDROOT";
|
|
||||||
mkdir "$BUILDROOT/htdocs";
|
|
||||||
mkdir "$BUILDROOT/htdocs/langs";
|
|
||||||
mkdir "$BUILDROOT/htdocs/langs/$PROJECT";
|
|
||||||
|
|
||||||
print "Copy $SOURCE into $BUILDROOT\n";
|
|
||||||
mkdir "$BUILDROOT";
|
|
||||||
$ret =
|
|
||||||
`cp -pr "$SOURCE/htdocs/langs/$PROJECT" "$BUILDROOT/htdocs/langs"`;
|
|
||||||
}
|
|
||||||
print "Clean $BUILDROOT\n";
|
|
||||||
$ret =
|
|
||||||
`rm -fr $BUILDROOT/htdocs/langs/$PROJECT/Thumbs.db $BUILDROOT/htdocs/langs/$PROJECT/*/Thumbs.db $BUILDROOT/htdocs/langs/$PROJECT/*/*/Thumbs.db $BUILDROOT/htdocs/langs/$PROJECT/*/*/*/Thumbs.db`;
|
|
||||||
$ret =
|
|
||||||
`rm -fr $BUILDROOT/htdocs/langs/$PROJECT/CVS* $BUILDROOT/htdocs/langs/$PROJECT/*/CVS* $BUILDROOT/htdocs/langs/$PROJECT/*/*/CVS* $BUILDROOT/htdocs/langs/$PROJECT/*/*/*/CVS* $BUILDROOT/htdocs/langs/$PROJECT/*/*/*/*/CVS* $BUILDROOT/htdocs/langs/$PROJECT/*/*/*/*/*/CVS*`;
|
|
||||||
|
|
||||||
# Build package for each target
|
|
||||||
#------------------------------
|
|
||||||
foreach my $target ( keys %CHOOSEDTARGET )
|
|
||||||
{
|
|
||||||
if ( $CHOOSEDTARGET{$target} < 0 ) { next; }
|
|
||||||
|
|
||||||
print "\nBuild package for target $target\n";
|
|
||||||
|
|
||||||
if ( $target eq 'TGZ' )
|
|
||||||
{
|
|
||||||
unlink $FILENAMETGZ . tgz;
|
|
||||||
|
|
||||||
# unlink $BUILDROOT/$FILENAMETGZ.tgz;
|
|
||||||
print "Compress $BUILDROOT/htdocs into $FILENAMETGZ.tgz...\n";
|
|
||||||
$cmd =
|
|
||||||
"tar --exclude-vcs --exclude-from \"$DESTI/tgz/tar.exclude\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$FILENAMETGZ.tgz\" htdocs";
|
|
||||||
$ret = `$cmd`;
|
|
||||||
|
|
||||||
# $cmd="tar --exclude-vcs --exclude-from \"$DESTI/tgz/tar.exclude\" --directory \"$BUILDROOT\" --mode=go-w --group=500 --owner=500 -czvf \"$BUILDROOT/$FILENAMETGZ.tgz\" htdocs\n";
|
|
||||||
# $ret=`$cmd`;
|
|
||||||
if ( $OS =~ /windows/i ) {
|
|
||||||
print "Move $FILENAMETGZ.tgz to $DESTI/$FILENAMETGZ.tgz\n";
|
|
||||||
$ret = `mv "$FILENAMETGZ.tgz" "$DESTI/$FILENAMETGZ.tgz"`;
|
|
||||||
|
|
||||||
# $ret=`mv "$BUILDROOT/$FILENAMETGZ.tgz" "$DESTI/$FILENAMETGZ.tgz"`;
|
|
||||||
}
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $target eq 'ZIP' )
|
|
||||||
{
|
|
||||||
unlink $FILENAMEZIP . zip;
|
|
||||||
print "Compress $FILENAMETGZ into $FILENAMEZIP.zip...\n";
|
|
||||||
chdir("$BUILDROOT");
|
|
||||||
|
|
||||||
#print "cd $BUILDROOTNT & 7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip $FILENAMETGZ\\*.*\n";
|
|
||||||
#$ret=`cd $BUILDROOTNT & 7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip $FILENAMETGZ\\*.*`;
|
|
||||||
$ret =
|
|
||||||
`7z a -r -tzip -mx $BUILDROOT/$FILENAMEZIP.zip $FILENAMETGZ\\*.*`;
|
|
||||||
print "Move $FILENAMEZIP.zip to $DESTI\n";
|
|
||||||
rename( "$BUILDROOT/$FILENAMEZIP.zip", "$DESTI/$FILENAMEZIP.zip" );
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
print "\n----- Summary -----\n";
|
|
||||||
foreach my $target ( keys %CHOOSEDTARGET ) {
|
|
||||||
if ( $CHOOSEDTARGET{$target} < 0 ) {
|
|
||||||
print "Package $target not built (bad requirement).\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
print "Package $target built succeessfully in $DESTI\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !$btach ) {
|
|
||||||
print "\nPress key to finish...";
|
|
||||||
my $WAITKEY = <STDIN>;
|
|
||||||
}
|
|
||||||
|
|
||||||
0;
|
|
||||||
@@ -29,12 +29,18 @@ To submit a snapshot for building, we should have a service file with content
|
|||||||
</services>
|
</services>
|
||||||
|
|
||||||
How to have such a service file created automatically ?
|
How to have such a service file created automatically ?
|
||||||
Click on "Add file", then select mode "Upload From: Remote URL"
|
|
||||||
Enter the Remote URL that should looks like this: http://www.dolibarr.org/files/stable/package_rpm_generic/dolibarr-x.y.v-3.src.rpm
|
|
||||||
|
|
||||||
Then add into advanded - attributes
|
Go into project you want to update. It mught be:
|
||||||
|
- openSUSE Build Service > Projects > Application:ERP:Dolibarr > dolibarr
|
||||||
|
- or your private project
|
||||||
|
|
||||||
|
Once logged, click on "Add file" in section "Source Files", then select mode "Upload From: Remote URL"
|
||||||
|
Keep empty for "Filename", choose "Remote URL" and enter into last field, URL that should looks like this:
|
||||||
|
http://www.dolibarr.org/files/stable/package_rpm_generic/dolibarr-x.y.v-0.3.src.rpm
|
||||||
|
|
||||||
|
Then add into Advanded - Attributes
|
||||||
OBS:Screenshots http://www.dolibarr.org/images/dolibarr_screenshot1.png
|
OBS:Screenshots http://www.dolibarr.org/images/dolibarr_screenshot1.png
|
||||||
OBS:QualityCategory Testing
|
OBS:QualityCategory Stable|Testing|Development|Private
|
||||||
|
|
||||||
|
|
||||||
# Move project into official directory
|
# Move project into official directory
|
||||||
|
|||||||
@@ -5,4 +5,3 @@
|
|||||||
//
|
//
|
||||||
// This file will be filled by installer
|
// This file will be filled by installer
|
||||||
//
|
//
|
||||||
?>
|
|
||||||
@@ -162,7 +162,6 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/asterisk
|
%_datadir/dolibarr/htdocs/asterisk
|
||||||
%_datadir/dolibarr/htdocs/barcode
|
%_datadir/dolibarr/htdocs/barcode
|
||||||
%_datadir/dolibarr/htdocs/bookmarks
|
%_datadir/dolibarr/htdocs/bookmarks
|
||||||
%_datadir/dolibarr/htdocs/boutique
|
|
||||||
%_datadir/dolibarr/htdocs/cashdesk
|
%_datadir/dolibarr/htdocs/cashdesk
|
||||||
%_datadir/dolibarr/htdocs/categories
|
%_datadir/dolibarr/htdocs/categories
|
||||||
%_datadir/dolibarr/htdocs/comm
|
%_datadir/dolibarr/htdocs/comm
|
||||||
@@ -333,6 +332,9 @@ fi
|
|||||||
|
|
||||||
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
|
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Oct 29 2014 Laurent Destailleur 3.7.0-0.3
|
||||||
|
- Upstream release
|
||||||
|
|
||||||
* Wed Sep 24 2014 Laurent Destailleur 3.6.1-0.3
|
* Wed Sep 24 2014 Laurent Destailleur 3.6.1-0.3
|
||||||
- Upstream release
|
- Upstream release
|
||||||
|
|
||||||
|
|||||||
@@ -242,7 +242,6 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/asterisk
|
%_datadir/dolibarr/htdocs/asterisk
|
||||||
%_datadir/dolibarr/htdocs/barcode
|
%_datadir/dolibarr/htdocs/barcode
|
||||||
%_datadir/dolibarr/htdocs/bookmarks
|
%_datadir/dolibarr/htdocs/bookmarks
|
||||||
%_datadir/dolibarr/htdocs/boutique
|
|
||||||
%_datadir/dolibarr/htdocs/cashdesk
|
%_datadir/dolibarr/htdocs/cashdesk
|
||||||
%_datadir/dolibarr/htdocs/categories
|
%_datadir/dolibarr/htdocs/categories
|
||||||
%_datadir/dolibarr/htdocs/comm
|
%_datadir/dolibarr/htdocs/comm
|
||||||
@@ -569,6 +568,9 @@ fi
|
|||||||
|
|
||||||
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
|
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Oct 29 2014 Laurent Destailleur 3.7.0-0.3
|
||||||
|
- Upstream release
|
||||||
|
|
||||||
* Wed Sep 24 2014 Laurent Destailleur 3.6.1-0.3
|
* Wed Sep 24 2014 Laurent Destailleur 3.6.1-0.3
|
||||||
- Upstream release
|
- Upstream release
|
||||||
|
|
||||||
|
|||||||
@@ -159,7 +159,6 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/asterisk
|
%_datadir/dolibarr/htdocs/asterisk
|
||||||
%_datadir/dolibarr/htdocs/barcode
|
%_datadir/dolibarr/htdocs/barcode
|
||||||
%_datadir/dolibarr/htdocs/bookmarks
|
%_datadir/dolibarr/htdocs/bookmarks
|
||||||
%_datadir/dolibarr/htdocs/boutique
|
|
||||||
%_datadir/dolibarr/htdocs/cashdesk
|
%_datadir/dolibarr/htdocs/cashdesk
|
||||||
%_datadir/dolibarr/htdocs/categories
|
%_datadir/dolibarr/htdocs/categories
|
||||||
%_datadir/dolibarr/htdocs/comm
|
%_datadir/dolibarr/htdocs/comm
|
||||||
@@ -338,6 +337,9 @@ fi
|
|||||||
|
|
||||||
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
|
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Oct 29 2014 Laurent Destailleur 3.7.0-0.3
|
||||||
|
- Upstream release
|
||||||
|
|
||||||
* Wed Sep 24 2014 Laurent Destailleur 3.6.1-0.3
|
* Wed Sep 24 2014 Laurent Destailleur 3.6.1-0.3
|
||||||
- Upstream release
|
- Upstream release
|
||||||
|
|
||||||
|
|||||||
@@ -170,7 +170,6 @@ done >>%{name}.lang
|
|||||||
%_datadir/dolibarr/htdocs/asterisk
|
%_datadir/dolibarr/htdocs/asterisk
|
||||||
%_datadir/dolibarr/htdocs/barcode
|
%_datadir/dolibarr/htdocs/barcode
|
||||||
%_datadir/dolibarr/htdocs/bookmarks
|
%_datadir/dolibarr/htdocs/bookmarks
|
||||||
%_datadir/dolibarr/htdocs/boutique
|
|
||||||
%_datadir/dolibarr/htdocs/cashdesk
|
%_datadir/dolibarr/htdocs/cashdesk
|
||||||
%_datadir/dolibarr/htdocs/categories
|
%_datadir/dolibarr/htdocs/categories
|
||||||
%_datadir/dolibarr/htdocs/comm
|
%_datadir/dolibarr/htdocs/comm
|
||||||
@@ -349,6 +348,9 @@ fi
|
|||||||
|
|
||||||
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
|
# version x.y.z-0.1.a for alpha, x.y.z-0.2.b for beta, x.y.z-0.3 for release
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Oct 29 2014 Laurent Destailleur 3.7.0-0.3
|
||||||
|
- Upstream release
|
||||||
|
|
||||||
* Wed Sep 24 2014 Laurent Destailleur 3.6.1-0.3
|
* Wed Sep 24 2014 Laurent Destailleur 3.6.1-0.3
|
||||||
- Upstream release
|
- Upstream release
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
"ext-mcrypt": "*",
|
"ext-mcrypt": "*",
|
||||||
"ext-openssl": "*",
|
"ext-openssl": "*",
|
||||||
"ext-mbstring": "*",
|
"ext-mbstring": "*",
|
||||||
"ext-soap": "*"
|
"ext-soap": "*",
|
||||||
|
"ext-zip": "*",
|
||||||
|
"ext-xml": "*"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,10 +12,16 @@
|
|||||||
|
|
||||||
<!-- List of all tests -->
|
<!-- List of all tests -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Rules from Internal Standard -->
|
||||||
|
|
||||||
<rule ref="Internal.NoCodeFound">
|
<rule ref="Internal.NoCodeFound">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Rules from Generic Standard -->
|
||||||
|
|
||||||
<rule ref="Generic.CodeAnalysis.EmptyStatement" />
|
<rule ref="Generic.CodeAnalysis.EmptyStatement" />
|
||||||
|
|
||||||
<rule ref="Generic.CodeAnalysis.EmptyStatement.DetectedCATCH">
|
<rule ref="Generic.CodeAnalysis.EmptyStatement.DetectedCATCH">
|
||||||
@@ -41,9 +47,6 @@
|
|||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<!-- The closing ?> tag MUST be omitted from files containing only PHP. -->
|
|
||||||
<!-- <rule ref="Zend.Files.ClosingTag"/> -->
|
|
||||||
|
|
||||||
<!-- <rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" /> -->
|
<!-- <rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" /> -->
|
||||||
|
|
||||||
<rule ref="Generic.CodeAnalysis.ForLoopWithTestFunctionCall" />
|
<rule ref="Generic.CodeAnalysis.ForLoopWithTestFunctionCall" />
|
||||||
@@ -170,6 +173,10 @@
|
|||||||
<!-- Disabled as this does not support tab -->
|
<!-- Disabled as this does not support tab -->
|
||||||
<!-- <rule ref="Generic.WhiteSpace.ScopeIndent" /> -->
|
<!-- <rule ref="Generic.WhiteSpace.ScopeIndent" /> -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Rules from PEAR Standard -->
|
||||||
|
|
||||||
<rule ref="PEAR.Classes.ClassDeclaration" />
|
<rule ref="PEAR.Classes.ClassDeclaration" />
|
||||||
|
|
||||||
<!-- Check for duplicate class names -->
|
<!-- Check for duplicate class names -->
|
||||||
@@ -247,6 +254,40 @@
|
|||||||
<rule ref="PEAR.Commenting.FunctionComment.Missing">
|
<rule ref="PEAR.Commenting.FunctionComment.Missing">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
|
<rule ref="PEAR.Commenting.ClassComment.Missing@authorTag">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
<rule ref="PEAR.Commenting.ClassComment.Missing@categoryTag">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
<rule ref="PEAR.Commenting.ClassComment.Missing@licenseTag">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
<rule ref="PEAR.Commenting.ClassComment.Missing@linkTag">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
<rule ref="PEAR.Commenting.ClassComment.Missing@packageTag">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamType">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParamName">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
<!-- TODO Remove this and fix reported errors -->
|
||||||
|
<rule ref="PEAR.Commenting.ClassComment.Missing">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
<rule ref="PEAR.Commenting.FunctionComment.MissingReturn">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
<rule ref="PEAR.Commenting.FunctionComment.ReturnNotRequired">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
<rule ref="PEAR.Commenting.FunctionComment.Missing">
|
||||||
|
<severity>0</severity>
|
||||||
|
</rule>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<rule ref="PEAR.Commenting.FileComment" />
|
<rule ref="PEAR.Commenting.FileComment" />
|
||||||
@@ -353,13 +394,13 @@
|
|||||||
<rule ref="PEAR.NamingConventions.ValidFunctionName.FunctionNoCaptial">
|
<rule ref="PEAR.NamingConventions.ValidFunctionName.FunctionNoCaptial">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<rule ref="PEAR.NamingConventions.ValidFunctionName.NotCamelCaps">
|
<rule ref="PEAR.NamingConventions.ValidFunctionName.NotCamelCaps">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
<rule ref="PEAR.NamingConventions.ValidFunctionName.PrivateNoUnderscore">
|
<rule ref="PEAR.NamingConventions.ValidFunctionName.PrivateNoUnderscore">
|
||||||
<severity>0</severity>
|
<severity>0</severity>
|
||||||
</rule>
|
</rule>
|
||||||
|
|
||||||
<rule ref="PEAR.NamingConventions.ValidVariableName" />
|
<rule ref="PEAR.NamingConventions.ValidVariableName" />
|
||||||
|
|
||||||
<rule ref="PEAR.WhiteSpace.ObjectOperatorIndent" />
|
<rule ref="PEAR.WhiteSpace.ObjectOperatorIndent" />
|
||||||
@@ -377,4 +418,10 @@
|
|||||||
<!-- Already found as a Generic rule -->
|
<!-- Already found as a Generic rule -->
|
||||||
<!-- <rule ref="PEAR.WhiteSpace.ScopeIndent" /> -->
|
<!-- <rule ref="PEAR.WhiteSpace.ScopeIndent" /> -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Rules from Zend Standard-->
|
||||||
|
|
||||||
|
<!-- The closing ?> tag MUST be omitted from files containing only PHP. -->
|
||||||
|
<rule ref="Zend.Files.ClosingTag"/>
|
||||||
|
|
||||||
</ruleset>
|
</ruleset>
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
-- ===================================================================
|
|
||||||
-- Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
--
|
|
||||||
-- This program is free software; you can redistribute it and/or modify
|
|
||||||
-- it under the terms of the GNU General Public License as published by
|
|
||||||
-- the Free Software Foundation; either version 3 of the License, or
|
|
||||||
-- (at your option) any later version.
|
|
||||||
--
|
|
||||||
-- This program is distributed in the hope that it will be useful,
|
|
||||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
-- GNU General Public License for more details.
|
|
||||||
--
|
|
||||||
-- You should have received a copy of the GNU General Public License
|
|
||||||
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
--
|
|
||||||
-- ===================================================================
|
|
||||||
|
|
||||||
CREATE TABLE llx_osc_categories (
|
|
||||||
rowid integer unsigned NOT NULL auto_increment,
|
|
||||||
dolicatid integer NOT NULL default '0',
|
|
||||||
osccatid integer NOT NULL default '0',
|
|
||||||
PRIMARY KEY (rowid),
|
|
||||||
UNIQUE KEY dolicatid (dolicatid),
|
|
||||||
UNIQUE KEY osccatid (osccatid)
|
|
||||||
) ENGINE=InnoDB;
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
-- ===================================================================
|
|
||||||
-- Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
--
|
|
||||||
-- This program is free software; you can redistribute it and/or modify
|
|
||||||
-- it under the terms of the GNU General Public License as published by
|
|
||||||
-- the Free Software Foundation; either version 3 of the License, or
|
|
||||||
-- (at your option) any later version.
|
|
||||||
--
|
|
||||||
-- This program is distributed in the hope that it will be useful,
|
|
||||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
-- GNU General Public License for more details.
|
|
||||||
--
|
|
||||||
-- You should have received a copy of the GNU General Public License
|
|
||||||
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
--
|
|
||||||
-- ===================================================================
|
|
||||||
|
|
||||||
|
|
||||||
ALTER TABLE llx_osc_customer ADD CONSTRAINT fk_osc_customer_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid);
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
-- ===================================================================
|
|
||||||
-- Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
--
|
|
||||||
-- This program is free software; you can redistribute it and/or modify
|
|
||||||
-- it under the terms of the GNU General Public License as published by
|
|
||||||
-- the Free Software Foundation; either version 3 of the License, or
|
|
||||||
-- (at your option) any later version.
|
|
||||||
--
|
|
||||||
-- This program is distributed in the hope that it will be useful,
|
|
||||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
-- GNU General Public License for more details.
|
|
||||||
--
|
|
||||||
-- You should have received a copy of the GNU General Public License
|
|
||||||
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
--
|
|
||||||
-- ===================================================================
|
|
||||||
|
|
||||||
CREATE TABLE llx_osc_customer (
|
|
||||||
rowid integer NOT NULL default '0',
|
|
||||||
datem datetime default NULL,
|
|
||||||
fk_soc integer NOT NULL default '0',
|
|
||||||
PRIMARY KEY (rowid),
|
|
||||||
UNIQUE KEY fk_soc (fk_soc)
|
|
||||||
) ENGINE=InnoDB;
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
-- ===================================================================
|
|
||||||
-- Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
--
|
|
||||||
-- This program is free software; you can redistribute it and/or modify
|
|
||||||
-- it under the terms of the GNU General Public License as published by
|
|
||||||
-- the Free Software Foundation; either version 3 of the License, or
|
|
||||||
-- (at your option) any later version.
|
|
||||||
--
|
|
||||||
-- This program is distributed in the hope that it will be useful,
|
|
||||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
-- GNU General Public License for more details.
|
|
||||||
--
|
|
||||||
-- You should have received a copy of the GNU General Public License
|
|
||||||
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
--
|
|
||||||
-- ===================================================================
|
|
||||||
|
|
||||||
CREATE TABLE llx_osc_order (
|
|
||||||
rowid integer NOT NULL default '0',
|
|
||||||
datem datetime default NULL,
|
|
||||||
fk_commande integer NOT NULL default '0',
|
|
||||||
PRIMARY KEY (rowid),
|
|
||||||
UNIQUE KEY fk_commande (fk_commande)
|
|
||||||
) ENGINE=InnoDB;
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
-- ===================================================================
|
|
||||||
-- Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net>
|
|
||||||
--
|
|
||||||
-- This program is free software; you can redistribute it and/or modify
|
|
||||||
-- it under the terms of the GNU General Public License as published by
|
|
||||||
-- the Free Software Foundation; either version 3 of the License, or
|
|
||||||
-- (at your option) any later version.
|
|
||||||
--
|
|
||||||
-- This program is distributed in the hope that it will be useful,
|
|
||||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
-- GNU General Public License for more details.
|
|
||||||
--
|
|
||||||
-- You should have received a copy of the GNU General Public License
|
|
||||||
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
--
|
|
||||||
-- ===================================================================
|
|
||||||
|
|
||||||
CREATE TABLE llx_osc_product (
|
|
||||||
rowid integer NOT NULL default '0',
|
|
||||||
datem datetime default NULL,
|
|
||||||
fk_product integer NOT NULL default '0',
|
|
||||||
PRIMARY KEY (rowid),
|
|
||||||
UNIQUE KEY fk_product (fk_product)
|
|
||||||
) ENGINE=InnoDB;
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# Helps find duplicate translation keys in language files
|
|
||||||
#
|
|
||||||
# Copyright (C) 2014 Raphaël Doursenaud - rdoursenaud@gpcsolutions.fr
|
|
||||||
|
|
||||||
for file in `find . -type f`
|
|
||||||
do
|
|
||||||
dupes=$(
|
|
||||||
sed "s/^\s*//" "$file" | # Remove any leading whitespace
|
|
||||||
sed "s/\s*\=/=/" | # Remove any whitespace before =
|
|
||||||
grep -Po "(^.*?)=" | # Non greedeely match everything before =
|
|
||||||
sed "s/\=//" | # Remove trailing = so we get the key
|
|
||||||
sort | uniq -d # Find duplicates
|
|
||||||
)
|
|
||||||
|
|
||||||
if [ -n "$dupes" ]
|
|
||||||
then
|
|
||||||
echo "Duplicates found in $file"
|
|
||||||
echo "$dupes"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
26
dev/detectnotabfiles.sh
Executable file
26
dev/detectnotabfiles.sh
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#------------------------------------------------------
|
||||||
|
# Detect files that does not contains any tab inside
|
||||||
|
#
|
||||||
|
# Laurent Destailleur - eldy@users.sourceforge.net
|
||||||
|
#------------------------------------------------------
|
||||||
|
# Usage: fixnotabfiles.sh [list|fix]
|
||||||
|
#------------------------------------------------------
|
||||||
|
|
||||||
|
# Syntax
|
||||||
|
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
|
||||||
|
then
|
||||||
|
echo "Usage: fixnotabfiles.sh [list|fix]"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# To detec
|
||||||
|
if [ "x$1" = "xlist" ]
|
||||||
|
then
|
||||||
|
find build \( -iname "*.sh" -o -iname "*.spec" \) -exec grep -l -P '\t' {} \;
|
||||||
|
fi
|
||||||
|
|
||||||
|
# To convert
|
||||||
|
if [ "x$1" = "xfix" ]
|
||||||
|
then
|
||||||
|
echo Feature not implemented. Please fix files manually.
|
||||||
|
fi
|
||||||
@@ -44,6 +44,8 @@ In htdocs/includes/tcpdf/tcpdf.php
|
|||||||
- protected $default_monospaced_font = 'courier';
|
- protected $default_monospaced_font = 'courier';
|
||||||
+ protected $default_monospaced_font = 'freemono';
|
+ protected $default_monospaced_font = 'freemono';
|
||||||
|
|
||||||
|
* Renamed getmypid into dol_getmypid().
|
||||||
|
|
||||||
|
|
||||||
JSGANTT:
|
JSGANTT:
|
||||||
--------
|
--------
|
||||||
|
|||||||
38
dev/fixduplicatelangkey.sh
Executable file
38
dev/fixduplicatelangkey.sh
Executable file
@@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Helps find duplicate translation keys in language files
|
||||||
|
#
|
||||||
|
# Copyright (C) 2014 Raphaël Doursenaud - rdoursenaud@gpcsolutions.fr
|
||||||
|
|
||||||
|
|
||||||
|
# Syntax
|
||||||
|
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
|
||||||
|
then
|
||||||
|
echo "Usage: detectduplicatelangkey.sh (list|fix)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ "x$1" = "xlist" ]
|
||||||
|
then
|
||||||
|
for file in `find htdocs/langs/en_US -name *.lang -type f`
|
||||||
|
do
|
||||||
|
dupes=$(
|
||||||
|
sed "s/^\s*//" "$file" | # Remove any leading whitespace
|
||||||
|
sed "s/\s*\=/=/" | # Remove any whitespace before =
|
||||||
|
grep -Po "(^.*?)=" | # Non greedeely match everything before =
|
||||||
|
sed "s/\=//" | # Remove trailing = so we get the key
|
||||||
|
sort | uniq -d # Find duplicates
|
||||||
|
)
|
||||||
|
|
||||||
|
if [ -n "$dupes" ]
|
||||||
|
then
|
||||||
|
echo "Duplicates found in $file"
|
||||||
|
echo "$dupes"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# To convert
|
||||||
|
if [ "x$1" = "xfix" ]
|
||||||
|
then
|
||||||
|
echo Feature not implemented. Please fix files manually.
|
||||||
|
fi
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#------------------------------------------------------
|
|
||||||
# Script to find files that are not Unix encoded
|
|
||||||
#
|
|
||||||
# Laurent Destailleur - eldy@users.sourceforge.net
|
|
||||||
#------------------------------------------------------
|
|
||||||
# Usage: fixnotabfiles.sh [list|fix]
|
|
||||||
#------------------------------------------------------
|
|
||||||
|
|
||||||
# Syntax
|
|
||||||
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
|
|
||||||
then
|
|
||||||
echo "Usage: fixnotabfiles.sh [list|fix]"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# To detec
|
|
||||||
if [ "x$1" = "xlist" ]
|
|
||||||
then
|
|
||||||
find build \( -iname "*.sh" -o -iname "*.spec" \) -exec grep -l -P '\t' {} \;
|
|
||||||
fi
|
|
||||||
|
|
||||||
# To convert
|
|
||||||
if [ "x$1" = "xfix" ]
|
|
||||||
then
|
|
||||||
echo Feature not implemented. Please fix files manually.
|
|
||||||
fi
|
|
||||||
@@ -25,4 +25,6 @@ then
|
|||||||
find ./htdocs -type f -iname "*.php" -exec chmod a-x {} \;
|
find ./htdocs -type f -iname "*.php" -exec chmod a-x {} \;
|
||||||
chmod a+x ./scripts/*/*.php
|
chmod a+x ./scripts/*/*.php
|
||||||
chmod a+x ./scripts/*/*.sh
|
chmod a+x ./scripts/*/*.sh
|
||||||
|
chmod g-w ./scripts/*/*.php
|
||||||
|
chmod g-w ./scripts/*/*.sh
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ while ($i < GEN_NUMBER_FACTURE && $result >= 0)
|
|||||||
|
|
||||||
print "Invoice ".$i." for socid ".$socid;
|
print "Invoice ".$i." for socid ".$socid;
|
||||||
|
|
||||||
$facture = new Facture($db, $socids[$socid]);
|
$facture = new Facture($db);
|
||||||
$facture->date = time();
|
$facture->date = time();
|
||||||
$facture->cond_reglement_id = 3;
|
$facture->cond_reglement_id = 3;
|
||||||
$facture->mode_reglement_id = 3;
|
$facture->mode_reglement_id = 3;
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ while ($i < GEN_NUMBER_PROPAL && $result >= 0)
|
|||||||
$soc = new Societe($db);
|
$soc = new Societe($db);
|
||||||
|
|
||||||
|
|
||||||
$propal = new Propal($db, $socids[$socid]);
|
$propal = new Propal($db);
|
||||||
|
|
||||||
$obj = $conf->global->PROPALE_ADDON;
|
$obj = $conf->global->PROPALE_ADDON;
|
||||||
$modPropale = new $obj;
|
$modPropale = new $obj;
|
||||||
@@ -130,6 +130,7 @@ while ($i < GEN_NUMBER_PROPAL && $result >= 0)
|
|||||||
|
|
||||||
$propal->ref = $numpr;
|
$propal->ref = $numpr;
|
||||||
$propal->contactid = $contids[$socids[$socid]][0];
|
$propal->contactid = $contids[$socids[$socid]][0];
|
||||||
|
$propal->socid = $socids[$socid];
|
||||||
$propal->datep = time();
|
$propal->datep = time();
|
||||||
$propal->cond_reglement_id = 3;
|
$propal->cond_reglement_id = 3;
|
||||||
$propal->mode_reglement_id = 3;
|
$propal->mode_reglement_id = 3;
|
||||||
|
|||||||
@@ -4867,7 +4867,7 @@ CREATE TABLE `llx_opensurvey_sondage` (
|
|||||||
`mailsonde` tinyint(4) NOT NULL DEFAULT '0',
|
`mailsonde` tinyint(4) NOT NULL DEFAULT '0',
|
||||||
`survey_link_visible` int(11) DEFAULT '1',
|
`survey_link_visible` int(11) DEFAULT '1',
|
||||||
`origin` varchar(64) DEFAULT NULL,
|
`origin` varchar(64) DEFAULT NULL,
|
||||||
`tms` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
|
`tms` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
PRIMARY KEY (`id_sondage`),
|
PRIMARY KEY (`id_sondage`),
|
||||||
KEY `idx_id_sondage_admin` (`id_sondage_admin`),
|
KEY `idx_id_sondage_admin` (`id_sondage_admin`),
|
||||||
KEY `idx_date_fin` (`date_fin`)
|
KEY `idx_date_fin` (`date_fin`)
|
||||||
|
|||||||
7687
dev/initdata/mysqldump_dolibarr_3.7.0.sql
Normal file
7687
dev/initdata/mysqldump_dolibarr_3.7.0.sql
Normal file
File diff suppressed because one or more lines are too long
@@ -193,6 +193,7 @@ export list="
|
|||||||
--ignore-table=$base.llx_cabinetmed_societe
|
--ignore-table=$base.llx_cabinetmed_societe
|
||||||
--ignore-table=$base.llx_fournisseur_ca
|
--ignore-table=$base.llx_fournisseur_ca
|
||||||
--ignore-table=$base.llx_google_maps
|
--ignore-table=$base.llx_google_maps
|
||||||
|
--ignore-table=$base.llx_notes
|
||||||
--ignore-table=$base.llx_pos_paiement_ticket
|
--ignore-table=$base.llx_pos_paiement_ticket
|
||||||
--ignore-table=$base.llx_pos_places
|
--ignore-table=$base.llx_pos_places
|
||||||
--ignore-table=$base.llx_pos_ticket
|
--ignore-table=$base.llx_pos_ticket
|
||||||
@@ -200,6 +201,7 @@ export list="
|
|||||||
--ignore-table=$base.llx_publi_c_dnd_list
|
--ignore-table=$base.llx_publi_c_dnd_list
|
||||||
--ignore-table=$base.llx_publi_c_method_list
|
--ignore-table=$base.llx_publi_c_method_list
|
||||||
--ignore-table=$base.llx_ultimatepdf
|
--ignore-table=$base.llx_ultimatepdf
|
||||||
|
--ignore-table=$base.llx_ventilation_achat
|
||||||
"
|
"
|
||||||
echo "mysqldump -P$port -u$admin -p***** $list $base > $mydir/$dumpfile"
|
echo "mysqldump -P$port -u$admin -p***** $list $base > $mydir/$dumpfile"
|
||||||
mysqldump -P$port -u$admin $passwd $list $base > $mydir/$dumpfile
|
mysqldump -P$port -u$admin $passwd $list $base > $mydir/$dumpfile
|
||||||
|
|||||||
138
dev/initdata/sftpget_and_loaddump.php
Executable file
138
dev/initdata/sftpget_and_loaddump.php
Executable file
@@ -0,0 +1,138 @@
|
|||||||
|
#!/usr/bin/php
|
||||||
|
<?php
|
||||||
|
/* Copyright (C) 2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
* or see http://www.gnu.org/
|
||||||
|
*/
|
||||||
|
|
||||||
|
$sapi_type = php_sapi_name();
|
||||||
|
$script_file = basename(__FILE__);
|
||||||
|
$path=dirname(__FILE__).'/';
|
||||||
|
|
||||||
|
// Test if batch mode
|
||||||
|
if (substr($sapi_type, 0, 3) == 'cgi') {
|
||||||
|
echo "Error: You are using PHP for CGI. To execute ".$script_file." from command line, you must use PHP for CLI mode.\n";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Global variables
|
||||||
|
$error=0;
|
||||||
|
|
||||||
|
$sourceserver=isset($argv[1])?$argv[1]:''; // user@server:/src/file
|
||||||
|
$password=isset($argv[2])?$argv[2]:'';
|
||||||
|
$database=isset($argv[3])?$argv[3]:'';
|
||||||
|
$loginbase=isset($argv[4])?$argv[4]:'';
|
||||||
|
$passwordbase=isset($argv[5])?$argv[5]:'';
|
||||||
|
|
||||||
|
// Include Dolibarr environment
|
||||||
|
$res=0;
|
||||||
|
if (! $res && file_exists($path."../../master.inc.php")) $res=@include($path."../../master.inc.php");
|
||||||
|
if (! $res && file_exists($path."../../htdocs/master.inc.php")) $res=@include($path."../../htdocs/master.inc.php");
|
||||||
|
if (! $res && file_exists("../master.inc.php")) $res=@include("../master.inc.php");
|
||||||
|
if (! $res && file_exists("../../master.inc.php")) $res=@include("../../master.inc.php");
|
||||||
|
if (! $res && file_exists("../../../master.inc.php")) $res=@include("../../../master.inc.php");
|
||||||
|
if (! $res && preg_match('/\/nltechno([^\/]*)\//',$_SERVER["PHP_SELF"],$reg)) $res=@include($path."../../../dolibarr".$reg[1]."/htdocs/master.inc.php"); // Used on dev env only
|
||||||
|
if (! $res && preg_match('/\/nltechno([^\/]*)\//',$_SERVER["PHP_SELF"],$reg)) $res=@include("../../../dolibarr".$reg[1]."/htdocs/master.inc.php"); // Used on dev env only
|
||||||
|
if (! $res) die ("Failed to include master.inc.php file\n");
|
||||||
|
include_once(DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php');
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Main
|
||||||
|
*/
|
||||||
|
|
||||||
|
$login='';
|
||||||
|
$server='';
|
||||||
|
if (preg_match('/^(.*)@(.*):(.*)$/',$sourceserver,$reg))
|
||||||
|
{
|
||||||
|
$login=$reg[1];
|
||||||
|
$server=$reg[2];
|
||||||
|
$sourcefile=$reg[3];
|
||||||
|
$targetfile=basename($sourcefile);
|
||||||
|
}
|
||||||
|
if (empty($sourceserver) || empty($server) || empty($login) || empty($sourcefile) || empty($password) || empty($database) || empty($loginbase) || empty($passwordbase))
|
||||||
|
{
|
||||||
|
print "Usage: $script_file login@server:/src/file.(sql|gz|bz2) passssh database loginbase passbase\n";
|
||||||
|
print "Return code: 0 if success, <>0 if error\n";
|
||||||
|
print "Warning, this script may take a long time.\n";
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$targetdir='/tmp';
|
||||||
|
print "Get dump file from server ".$server.", path ".$sourcefile.", connect with login ".$login." loaded into localhost\n";
|
||||||
|
|
||||||
|
$sftpconnectstring=$sourceserver;
|
||||||
|
print 'SFTP connect string : '.$sftpconnectstring."\n";
|
||||||
|
//print 'SFTP password '.$password."\n";
|
||||||
|
|
||||||
|
|
||||||
|
// SFTP connect
|
||||||
|
if (! function_exists("ssh2_connect")) {
|
||||||
|
dol_print_error('','ssh2_connect function does not exists'); exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
$connection = ssh2_connect($server, 22);
|
||||||
|
if ($connection)
|
||||||
|
{
|
||||||
|
if (! @ssh2_auth_password($connection, $login, $password))
|
||||||
|
{
|
||||||
|
dol_syslog("Could not authenticate with username ".$login." . and password ".$password,LOG_ERR);
|
||||||
|
exit(-5);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//$stream = ssh2_exec($connection, '/usr/bin/php -i');
|
||||||
|
/*
|
||||||
|
print "Generate dump ".$filesys1.'.bz2'."\n";
|
||||||
|
$stream = ssh2_exec($connection, "mysqldump -u debian-sys-maint -p4k9Blxl2snq4FHXY -h 127.0.0.1 --single-transaction -K --tables -c -e --hex-blob --default-character-set=utf8 saasplex | bzip2 -1 > ".$filesys1.'.bz2');
|
||||||
|
stream_set_blocking($stream, true);
|
||||||
|
// The command may not finish properly if the stream is not read to end
|
||||||
|
$output = stream_get_contents($stream);
|
||||||
|
*/
|
||||||
|
|
||||||
|
$sftp = ssh2_sftp($connection);
|
||||||
|
|
||||||
|
print 'Get file '.$sourcefile.' into '.$targetdir.$targetfile."\n";
|
||||||
|
ssh2_scp_recv($connection, $sourcefile, $targetdir.$targetfile);
|
||||||
|
|
||||||
|
$fullcommand="cat ".$targetdir.$targetfile." | mysql -u".$loginbase." -p".$passwordbase." -D ".$database;
|
||||||
|
if (preg_match('/\.bz2$/',$targetfile))
|
||||||
|
{
|
||||||
|
$fullcommand="bzip2 -c -d ".$targetdir.$targetfile." | mysql -u".$loginbase." -p".$passwordbase." -D ".$database;
|
||||||
|
}
|
||||||
|
if (preg_match('/\.gz$/',$targetfile))
|
||||||
|
{
|
||||||
|
$fullcommand="gzip -d ".$targetdir.$targetfile." | mysql -u".$loginbase." -p".$passwordbase." -D ".$database;
|
||||||
|
}
|
||||||
|
print "Load dump with ".$fullcommand."\n";
|
||||||
|
$output=array();
|
||||||
|
$return_var=0;
|
||||||
|
print strftime("%Y%m%d-%H%M%S").' '.$fullcommand."\n";
|
||||||
|
exec($fullcommand, $output, $return_var);
|
||||||
|
foreach($output as $line) print $line."\n";
|
||||||
|
|
||||||
|
//ssh2_sftp_unlink($sftp, $fileinstalllock);
|
||||||
|
//print $output;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print 'Failed to connect to ssh2 to '.$server;
|
||||||
|
exit(-6);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
exit(0);
|
||||||
233
dev/optimize_images.sh
Executable file
233
dev/optimize_images.sh
Executable file
@@ -0,0 +1,233 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Borrowed from https://gist.github.com/lgiraudel/6065155
|
||||||
|
# Inplace mode added by Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
|
||||||
|
|
||||||
|
PROGNAME=${0##*/}
|
||||||
|
INPUT=''
|
||||||
|
QUIET='0'
|
||||||
|
NOSTATS='0'
|
||||||
|
INPLACE='0'
|
||||||
|
max_input_size=0
|
||||||
|
max_output_size=0
|
||||||
|
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
cat <<EO
|
||||||
|
Usage: $PROGNAME [options]
|
||||||
|
|
||||||
|
Script to optimize JPG and PNG images in a directory.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
EO
|
||||||
|
cat <<EO | column -s\& -t
|
||||||
|
-h, --help & shows this help
|
||||||
|
-q, --quiet & disables output
|
||||||
|
-i, --input [dir] & specify input directory (current directory by default)
|
||||||
|
-o, --output [dir] & specify output directory ("output" by default)
|
||||||
|
-ns, --no-stats & no stats at the end
|
||||||
|
-p, --inplace & optimizes files inplace
|
||||||
|
EO
|
||||||
|
}
|
||||||
|
|
||||||
|
# $1: input image
|
||||||
|
# $2: output image
|
||||||
|
optimize_image()
|
||||||
|
{
|
||||||
|
input_file_size=$(stat -c%s "$1")
|
||||||
|
max_input_size=$(expr $max_input_size + $input_file_size)
|
||||||
|
|
||||||
|
if [ "${1##*.}" = "png" ]; then
|
||||||
|
#optipng -o1 -clobber -quiet $1 -out $2.firstpass
|
||||||
|
optipng -o1 -quiet $1 -out $2.firstpass
|
||||||
|
pngcrush -q -rem alla -reduce $2.firstpass $2 >/dev/null
|
||||||
|
rm -fr $2.firstpass
|
||||||
|
fi
|
||||||
|
if [ "${1##*.}" = "jpg" -o "${1##*.}" = "jpeg" ]; then
|
||||||
|
jpegtran -copy none -progressive $1 > $2
|
||||||
|
fi
|
||||||
|
|
||||||
|
output_file_size=$(stat -c%s "$2")
|
||||||
|
max_output_size=$(expr $max_output_size + $output_file_size)
|
||||||
|
}
|
||||||
|
|
||||||
|
get_max_file_length()
|
||||||
|
{
|
||||||
|
local maxlength=0
|
||||||
|
|
||||||
|
IMAGES=$(find $INPUT -regextype posix-extended -regex '.*\.(jpg|jpeg|png)' | grep -v $OUTPUT)
|
||||||
|
|
||||||
|
for CURRENT_IMAGE in $IMAGES; do
|
||||||
|
filename=$(basename "$CURRENT_IMAGE")
|
||||||
|
if [[ ${#filename} -gt $maxlength ]]; then
|
||||||
|
maxlength=${#filename}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "$maxlength"
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
test=`type pngcrush >/dev/null 2>&1`
|
||||||
|
result=$?
|
||||||
|
if [ "x$result" == "x1" ]; then
|
||||||
|
echo "Tool pngcrush not found" && exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
test=`type optipng >/dev/null 2>&1`
|
||||||
|
result=$?
|
||||||
|
if [ "x$result" == "x1" ]; then
|
||||||
|
echo "Tool optipng not found" && exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
test=`type jpegtran >/dev/null 2>&1`
|
||||||
|
result=$?
|
||||||
|
if [ "x$result" == "x1" ]; then
|
||||||
|
echo "Tool jpegtran not found" && exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# If $INPUT is empty, then we use current directory
|
||||||
|
if [[ "$INPUT" == "" ]]; then
|
||||||
|
INPUT=$(pwd)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If $OUTPUT is empty, then we use the directory "output" in the current directory
|
||||||
|
if [[ "$OUTPUT" == "" ]]; then
|
||||||
|
OUTPUT=$(pwd)/output
|
||||||
|
fi
|
||||||
|
# If inplace, we use /tmp for output
|
||||||
|
if [[ "$INPLACE" == "1" ]]; then
|
||||||
|
OUTPUT='/tmp/optimize'
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Mode is $INPLACE (1=Images are replaced, 0=New images are stored into $OUTPUT)"
|
||||||
|
|
||||||
|
# We create the output directory
|
||||||
|
mkdir -p $OUTPUT
|
||||||
|
|
||||||
|
# To avoid some troubles with filename with spaces, we store the current IFS (Internal File Separator)...
|
||||||
|
SAVEIFS=$IFS
|
||||||
|
# ...and we set a new one
|
||||||
|
IFS=$(echo -en "\n\b")
|
||||||
|
|
||||||
|
max_filelength=`get_max_file_length`
|
||||||
|
pad=$(printf '%0.1s' "."{1..600})
|
||||||
|
sDone=' [ DONE ]'
|
||||||
|
linelength=$(expr $max_filelength + ${#sDone} + 5)
|
||||||
|
|
||||||
|
# Search of all jpg/jpeg/png in $INPUT
|
||||||
|
# We remove images from $OUTPUT if $OUTPUT is a subdirectory of $INPUT
|
||||||
|
echo "Scan $INPUT to find images"
|
||||||
|
IMAGES=$(find $INPUT -regextype posix-extended -regex '.*\.(jpg|jpeg|png)' | grep -v $OUTPUT)
|
||||||
|
|
||||||
|
if [ "$QUIET" == "0" ]; then
|
||||||
|
echo --- Optimizing $INPUT ---
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
for CURRENT_IMAGE in $IMAGES; do
|
||||||
|
echo "Process $CURRENT_IMAGE"
|
||||||
|
filename=$(basename $CURRENT_IMAGE)
|
||||||
|
if [ "$QUIET" == "0" ]; then
|
||||||
|
printf '%s ' "$filename"
|
||||||
|
printf '%*.*s' 0 $((linelength - ${#filename} - ${#sDone} )) "$pad"
|
||||||
|
fi
|
||||||
|
|
||||||
|
optimize_image $CURRENT_IMAGE $OUTPUT/$filename
|
||||||
|
|
||||||
|
# Replace file
|
||||||
|
if [[ "$INPLACE" == "1" ]]; then
|
||||||
|
mv $OUTPUT/$filename $CURRENT_IMAGE
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$QUIET" == "0" ]; then
|
||||||
|
printf '%s\n' "$sDone"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Cleanup
|
||||||
|
if [[ "$INPLACE" == "1" ]]; then
|
||||||
|
rm -rf $OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
# we restore the saved IFS
|
||||||
|
IFS=$SAVEIFS
|
||||||
|
|
||||||
|
if [ "$NOSTATS" == "0" -a "$QUIET" == "0" ]; then
|
||||||
|
echo
|
||||||
|
echo "Input: " $(human_readable_filesize $max_input_size)
|
||||||
|
echo "Output: " $(human_readable_filesize $max_output_size)
|
||||||
|
space_saved=$(expr $max_input_size - $max_output_size)
|
||||||
|
echo "Space save: " $(human_readable_filesize $space_saved)
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
human_readable_filesize()
|
||||||
|
{
|
||||||
|
echo -n $1 | awk 'function human(x) {
|
||||||
|
s=" b Kb Mb Gb Tb"
|
||||||
|
while (x>=1024 && length(s)>1)
|
||||||
|
{x/=1024; s=substr(s,4)}
|
||||||
|
s=substr(s,1,4)
|
||||||
|
xf=(s==" b ")?"%5d ":"%.2f"
|
||||||
|
return sprintf( xf"%s", x, s)
|
||||||
|
}
|
||||||
|
{gsub(/^[0-9]+/, human($1)); print}'
|
||||||
|
}
|
||||||
|
|
||||||
|
SHORTOPTS="h,i:,o:,q,s,p"
|
||||||
|
LONGOPTS="help,input:,output:,quiet,no-stats,inplace"
|
||||||
|
ARGS=$(getopt -s bash --options $SHORTOPTS --longoptions $LONGOPTS --name $PROGNAME -- "$@")
|
||||||
|
|
||||||
|
# Syntax
|
||||||
|
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
|
||||||
|
then
|
||||||
|
echo "Usage: optimize_images.sh (list|fix) -i dirtoscan"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
eval set -- "$ARGS"
|
||||||
|
while true; do
|
||||||
|
case $1 in
|
||||||
|
-h|--help)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-i|--input)
|
||||||
|
shift
|
||||||
|
INPUT=$1
|
||||||
|
;;
|
||||||
|
-o|--output)
|
||||||
|
shift
|
||||||
|
OUTPUT=$1
|
||||||
|
;;
|
||||||
|
-q|--quiet)
|
||||||
|
QUIET='1'
|
||||||
|
;;
|
||||||
|
-s|--no-stats)
|
||||||
|
NOSTATS='1'
|
||||||
|
;;
|
||||||
|
-p|--inplace)
|
||||||
|
INPLACE='1'
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# To convert
|
||||||
|
if [ "x$1" = "xlist" ]
|
||||||
|
then
|
||||||
|
INPLACE=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
main
|
||||||
|
|
||||||
@@ -254,11 +254,11 @@ foreach($property as $key => $prop)
|
|||||||
$varprop.="\t\t\$sql.= \" ";
|
$varprop.="\t\t\$sql.= \" ";
|
||||||
if ($prop['istime'])
|
if ($prop['istime'])
|
||||||
{
|
{
|
||||||
$varprop.='".(! isset($this->'.$prop['field'].') || dol_strlen($this->'.$prop['field'].')==0?\'NULL\':$this->db->idate(';
|
$varprop.='".(! isset($this->'.$prop['field'].') || dol_strlen($this->'.$prop['field'].')==0?\'NULL\':"\'".$this->db->idate(';
|
||||||
$varprop.="\$this->".$prop['field']."";
|
$varprop.="\$this->".$prop['field']."";
|
||||||
$varprop.='))."';
|
$varprop.=')."\'")."';
|
||||||
if ($i < count($property)) $varprop.=",";
|
if ($i < count($property)) $varprop.=",";
|
||||||
$varprop.="\";";
|
$varprop.='";';
|
||||||
}
|
}
|
||||||
elseif ($prop['ischar'])
|
elseif ($prop['ischar'])
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ class modMyModule extends DolibarrModules
|
|||||||
|
|
||||||
// Add here list of permission defined by an id, a label, a boolean and two constant strings.
|
// Add here list of permission defined by an id, a label, a boolean and two constant strings.
|
||||||
// Example:
|
// Example:
|
||||||
// $this->rights[$r][0] = 2000; // Permission id (must not be already used)
|
// $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used)
|
||||||
// $this->rights[$r][1] = 'Permision label'; // Permission label
|
// $this->rights[$r][1] = 'Permision label'; // Permission label
|
||||||
// $this->rights[$r][3] = 1; // Permission by default for new user (0/1)
|
// $this->rights[$r][3] = 1; // Permission by default for new user (0/1)
|
||||||
// $this->rights[$r][4] = 'level1'; // In php code, permission will be checked by test if ($user->rights->permkey->level1->level2)
|
// $this->rights[$r][4] = 'level1'; // In php code, permission will be checked by test if ($user->rights->permkey->level1->level2)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/* Copyright (C) 2007-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
/* Copyright (C) 2007-2012 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
* Copyright (C) 2014 Juanjo Menent <jmenent@2byte.es>
|
||||||
* Copyright (C) ---Put here your own copyright and developer email---
|
* Copyright (C) ---Put here your own copyright and developer email---
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@@ -79,7 +80,7 @@ class Skeleton_Class extends CommonObject
|
|||||||
// Put here code to add control on parameters values
|
// Put here code to add control on parameters values
|
||||||
|
|
||||||
// Insert request
|
// Insert request
|
||||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."mytable(";
|
$sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element."(";
|
||||||
$sql.= " field1,";
|
$sql.= " field1,";
|
||||||
$sql.= " field2";
|
$sql.= " field2";
|
||||||
//...
|
//...
|
||||||
@@ -91,13 +92,13 @@ class Skeleton_Class extends CommonObject
|
|||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::create sql=".$sql, LOG_DEBUG);
|
dol_syslog(__METHOD__, LOG_DEBUG);
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."mytable");
|
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element);
|
||||||
|
|
||||||
if (! $notrigger)
|
if (! $notrigger)
|
||||||
{
|
{
|
||||||
@@ -105,10 +106,8 @@ class Skeleton_Class extends CommonObject
|
|||||||
// want this action calls a trigger.
|
// want this action calls a trigger.
|
||||||
|
|
||||||
//// Call triggers
|
//// Call triggers
|
||||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
//$result=$this->call_trigger('MYOBJECT_CREATE',$user);
|
||||||
//$interface=new Interfaces($this->db);
|
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
|
||||||
//$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf);
|
|
||||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
|
||||||
//// End call triggers
|
//// End call triggers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -118,7 +117,7 @@ class Skeleton_Class extends CommonObject
|
|||||||
{
|
{
|
||||||
foreach($this->errors as $errmsg)
|
foreach($this->errors as $errmsg)
|
||||||
{
|
{
|
||||||
dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR);
|
dol_syslog(__METHOD__." ".$errmsg, LOG_ERR);
|
||||||
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||||
}
|
}
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
@@ -135,10 +134,11 @@ class Skeleton_Class extends CommonObject
|
|||||||
/**
|
/**
|
||||||
* Load object in memory from the database
|
* Load object in memory from the database
|
||||||
*
|
*
|
||||||
* @param int $id Id object
|
* @param int $id Id object
|
||||||
|
* @param string $ref Ref
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function fetch($id)
|
function fetch($id,$ref='')
|
||||||
{
|
{
|
||||||
global $langs;
|
global $langs;
|
||||||
$sql = "SELECT";
|
$sql = "SELECT";
|
||||||
@@ -146,10 +146,11 @@ class Skeleton_Class extends CommonObject
|
|||||||
$sql.= " t.field1,";
|
$sql.= " t.field1,";
|
||||||
$sql.= " t.field2";
|
$sql.= " t.field2";
|
||||||
//...
|
//...
|
||||||
$sql.= " FROM ".MAIN_DB_PREFIX."mytable as t";
|
$sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as t";
|
||||||
$sql.= " WHERE t.rowid = ".$id;
|
if ($ref) $sql.= " WHERE t.ref = '".$ref."'";
|
||||||
|
else $sql.= " WHERE t.rowid = ".$id;
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::fetch sql=".$sql, LOG_DEBUG);
|
dol_syslog(get_class($this)."::fetch");
|
||||||
$resql=$this->db->query($sql);
|
$resql=$this->db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
@@ -169,7 +170,6 @@ class Skeleton_Class extends CommonObject
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
$this->error="Error ".$this->db->lasterror();
|
$this->error="Error ".$this->db->lasterror();
|
||||||
dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -182,7 +182,7 @@ class Skeleton_Class extends CommonObject
|
|||||||
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||||
* @return int <0 if KO, >0 if OK
|
* @return int <0 if KO, >0 if OK
|
||||||
*/
|
*/
|
||||||
function update($user=0, $notrigger=0)
|
function update($user, $notrigger=0)
|
||||||
{
|
{
|
||||||
global $conf, $langs;
|
global $conf, $langs;
|
||||||
$error=0;
|
$error=0;
|
||||||
@@ -196,7 +196,7 @@ class Skeleton_Class extends CommonObject
|
|||||||
// Put here code to add a control on parameters values
|
// Put here code to add a control on parameters values
|
||||||
|
|
||||||
// Update request
|
// Update request
|
||||||
$sql = "UPDATE ".MAIN_DB_PREFIX."mytable SET";
|
$sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET";
|
||||||
$sql.= " field1=".(isset($this->field1)?"'".$this->db->escape($this->field1)."'":"null").",";
|
$sql.= " field1=".(isset($this->field1)?"'".$this->db->escape($this->field1)."'":"null").",";
|
||||||
$sql.= " field2=".(isset($this->field2)?"'".$this->db->escape($this->field2)."'":"null")."";
|
$sql.= " field2=".(isset($this->field2)?"'".$this->db->escape($this->field2)."'":"null")."";
|
||||||
//...
|
//...
|
||||||
@@ -204,7 +204,7 @@ class Skeleton_Class extends CommonObject
|
|||||||
|
|
||||||
$this->db->begin();
|
$this->db->begin();
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG);
|
dol_syslog(__METHOD__);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||||
|
|
||||||
@@ -216,12 +216,10 @@ class Skeleton_Class extends CommonObject
|
|||||||
// want this action calls a trigger.
|
// want this action calls a trigger.
|
||||||
|
|
||||||
//// Call triggers
|
//// Call triggers
|
||||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
//$result=$this->call_trigger('MYOBJECT_MODIFY',$user);
|
||||||
//$interface=new Interfaces($this->db);
|
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
|
||||||
//$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf);
|
|
||||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
|
||||||
//// End call triggers
|
//// End call triggers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Commit or rollback
|
// Commit or rollback
|
||||||
@@ -229,7 +227,7 @@ class Skeleton_Class extends CommonObject
|
|||||||
{
|
{
|
||||||
foreach($this->errors as $errmsg)
|
foreach($this->errors as $errmsg)
|
||||||
{
|
{
|
||||||
dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR);
|
dol_syslog(__METHOD__." ".$errmsg, LOG_ERR);
|
||||||
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||||
}
|
}
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
@@ -264,21 +262,19 @@ class Skeleton_Class extends CommonObject
|
|||||||
// Uncomment this and change MYOBJECT to your own tag if you
|
// Uncomment this and change MYOBJECT to your own tag if you
|
||||||
// want this action calls a trigger.
|
// want this action calls a trigger.
|
||||||
|
|
||||||
//// Call triggers
|
//// Call triggers
|
||||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
//$result=$this->call_trigger('MYOBJECT_DELETE',$user);
|
||||||
//$interface=new Interfaces($this->db);
|
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
|
||||||
//$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf);
|
//// End call triggers
|
||||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
|
||||||
//// End call triggers
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."mytable";
|
$sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element;
|
||||||
$sql.= " WHERE rowid=".$this->id;
|
$sql.= " WHERE rowid=".$this->id;
|
||||||
|
|
||||||
dol_syslog(get_class($this)."::delete sql=".$sql);
|
dol_syslog(__METHOD__);
|
||||||
$resql = $this->db->query($sql);
|
$resql = $this->db->query($sql);
|
||||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||||
}
|
}
|
||||||
@@ -288,7 +284,7 @@ class Skeleton_Class extends CommonObject
|
|||||||
{
|
{
|
||||||
foreach($this->errors as $errmsg)
|
foreach($this->errors as $errmsg)
|
||||||
{
|
{
|
||||||
dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
|
dol_syslog(__METHOD__." ".$errmsg, LOG_ERR);
|
||||||
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||||
}
|
}
|
||||||
$this->db->rollback();
|
$this->db->rollback();
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ if (! $res && file_exists("../../../dolibarr/htdocs/main.inc.php")) $res=@includ
|
|||||||
if (! $res && file_exists("../../../../dolibarr/htdocs/main.inc.php")) $res=@include '../../../../dolibarr/htdocs/main.inc.php'; // Used on dev env only
|
if (! $res && file_exists("../../../../dolibarr/htdocs/main.inc.php")) $res=@include '../../../../dolibarr/htdocs/main.inc.php'; // Used on dev env only
|
||||||
if (! $res) die("Include of main fails");
|
if (! $res) die("Include of main fails");
|
||||||
// Change this following line to use the correct relative path from htdocs
|
// Change this following line to use the correct relative path from htdocs
|
||||||
|
include_once(DOL_DOCUMENT_ROOT.'/core/class/formcompany.class.php');
|
||||||
dol_include_once('/module/class/skeleton_class.class.php');
|
dol_include_once('/module/class/skeleton_class.class.php');
|
||||||
|
|
||||||
// Load traductions files requiredby by page
|
// Load traductions files requiredby by page
|
||||||
@@ -52,6 +53,7 @@ $langs->load("other");
|
|||||||
// Get parameters
|
// Get parameters
|
||||||
$id = GETPOST('id','int');
|
$id = GETPOST('id','int');
|
||||||
$action = GETPOST('action','alpha');
|
$action = GETPOST('action','alpha');
|
||||||
|
$backtopage = GETPOST('backtopage');
|
||||||
$myparam = GETPOST('myparam','alpha');
|
$myparam = GETPOST('myparam','alpha');
|
||||||
|
|
||||||
// Protection if external user
|
// Protection if external user
|
||||||
@@ -60,6 +62,16 @@ if ($user->societe_id > 0)
|
|||||||
//accessforbidden();
|
//accessforbidden();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (empty($action) && empty($id) && empty($ref)) $action='create';
|
||||||
|
|
||||||
|
// Load object if id or ref is provided as parameter
|
||||||
|
$object=new Skeleton_Class($db);
|
||||||
|
if (($id > 0 || ! empty($ref)) && $action != 'add')
|
||||||
|
{
|
||||||
|
$result=$object->fetch($id,$ref);
|
||||||
|
if ($result < 0) dol_print_error($db);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************
|
/*******************************************************************
|
||||||
@@ -68,19 +80,104 @@ if ($user->societe_id > 0)
|
|||||||
* Put here all code to do according to value of "action" parameter
|
* Put here all code to do according to value of "action" parameter
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
|
|
||||||
|
// Action to add record
|
||||||
if ($action == 'add')
|
if ($action == 'add')
|
||||||
{
|
{
|
||||||
$object=new Skeleton_Class($db);
|
if (GETPOST('cancel'))
|
||||||
$object->prop1=$_POST["field1"];
|
{
|
||||||
$object->prop2=$_POST["field2"];
|
$urltogo=$backtopage?$backtopage:dol_buildpath('/buildingmanagement/list.php',1);
|
||||||
$result=$object->create($user);
|
header("Location: ".$urltogo);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$error=0;
|
||||||
|
|
||||||
|
/* object_prop_getpost_prop */
|
||||||
|
$object->prop1=GETPOST("field1");
|
||||||
|
$object->prop2=GETPOST("field2");
|
||||||
|
|
||||||
|
if (empty($object->ref))
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Ref")),'errors');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$result=$object->create($user);
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
// Creation OK
|
||||||
|
$urltogo=$backtopage?$backtopage:dol_buildpath('/mymodule/list.php',1);
|
||||||
|
header("Location: ".$urltogo);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
// Creation KO
|
||||||
|
if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors');
|
||||||
|
else setEventMessages($object->error, null, 'errors');
|
||||||
|
$action='create';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$action='create';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cancel
|
||||||
|
if ($action == 'update' && GETPOST('cancel')) $action='view';
|
||||||
|
|
||||||
|
// Action to update record
|
||||||
|
if ($action == 'update' && ! GETPOST('cancel'))
|
||||||
|
{
|
||||||
|
$error=0;
|
||||||
|
|
||||||
|
$object->prop1=GETPOST("field1");
|
||||||
|
$object->prop2=GETPOST("field2");
|
||||||
|
|
||||||
|
if (empty($object->ref))
|
||||||
|
{
|
||||||
|
$error++;
|
||||||
|
setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Ref")),null,'errors');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! $error)
|
||||||
|
{
|
||||||
|
$result=$object->update($user);
|
||||||
|
if ($result > 0)
|
||||||
|
{
|
||||||
|
$action='view';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Creation KO
|
||||||
|
if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors');
|
||||||
|
else setEventMessages($object->error, null, 'errors');
|
||||||
|
$action='edit';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$action='edit';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Action to delete
|
||||||
|
if ($action == 'confirm_delete')
|
||||||
|
{
|
||||||
|
$result=$object->delete($user);
|
||||||
if ($result > 0)
|
if ($result > 0)
|
||||||
{
|
{
|
||||||
// Creation OK
|
// Delete OK
|
||||||
|
setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs');
|
||||||
|
header("Location: ".dol_buildpath('/buildingmanagement/list.php',1));
|
||||||
|
exit;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
// Creation KO
|
if (! empty($object->errors)) setEventMessages(null,$object->errors,'errors');
|
||||||
$mesg=$object->error;
|
else setEventMessages($object->error,null,'errors');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +198,7 @@ $form=new Form($db);
|
|||||||
|
|
||||||
// Put here content of your page
|
// Put here content of your page
|
||||||
|
|
||||||
// Example 1 : Adding jquery code
|
// Example : Adding jquery code
|
||||||
print '<script type="text/javascript" language="javascript">
|
print '<script type="text/javascript" language="javascript">
|
||||||
jQuery(document).ready(function() {
|
jQuery(document).ready(function() {
|
||||||
function init_myfunc()
|
function init_myfunc()
|
||||||
@@ -117,13 +214,8 @@ jQuery(document).ready(function() {
|
|||||||
</script>';
|
</script>';
|
||||||
|
|
||||||
|
|
||||||
// Example 2 : Adding links to objects
|
// Part to show a list
|
||||||
// The class must extends CommonObject class to have this method available
|
if ($action == 'list' || empty($id))
|
||||||
//$somethingshown=$object->showLinkedObjectBlock();
|
|
||||||
|
|
||||||
|
|
||||||
// Example 3 : List of data
|
|
||||||
if ($action == 'list')
|
|
||||||
{
|
{
|
||||||
$sql = "SELECT";
|
$sql = "SELECT";
|
||||||
$sql.= " t.rowid,";
|
$sql.= " t.rowid,";
|
||||||
@@ -139,27 +231,24 @@ if ($action == 'list')
|
|||||||
print_liste_field_titre($langs->trans('field2'),$_SERVER['PHP_SELF'],'t.field2','',$param,'',$sortfield,$sortorder);
|
print_liste_field_titre($langs->trans('field2'),$_SERVER['PHP_SELF'],'t.field2','',$param,'',$sortfield,$sortorder);
|
||||||
print '</tr>';
|
print '</tr>';
|
||||||
|
|
||||||
dol_syslog($script_file." sql=".$sql, LOG_DEBUG);
|
dol_syslog($script_file, LOG_DEBUG);
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
$num = $db->num_rows($resql);
|
$num = $db->num_rows($resql);
|
||||||
$i = 0;
|
$i = 0;
|
||||||
if ($num)
|
while ($i < $num)
|
||||||
{
|
{
|
||||||
while ($i < $num)
|
$obj = $db->fetch_object($resql);
|
||||||
|
if ($obj)
|
||||||
{
|
{
|
||||||
$obj = $db->fetch_object($resql);
|
// You can use here results
|
||||||
if ($obj)
|
print '<tr><td>';
|
||||||
{
|
print $obj->field1;
|
||||||
// You can use here results
|
print $obj->field2;
|
||||||
print '<tr><td>';
|
print '</td></tr>';
|
||||||
print $obj->field1;
|
|
||||||
print $obj->field2;
|
|
||||||
print '</td></tr>';
|
|
||||||
}
|
|
||||||
$i++;
|
|
||||||
}
|
}
|
||||||
|
$i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -173,6 +262,102 @@ if ($action == 'list')
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Part to create
|
||||||
|
if ($action == 'create')
|
||||||
|
{
|
||||||
|
print_fiche_titre($langs->trans("NewResidence"));
|
||||||
|
|
||||||
|
dol_fiche_head();
|
||||||
|
|
||||||
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
|
print '<input type="hidden" name="action" value="add">';
|
||||||
|
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
|
||||||
|
|
||||||
|
print '<table class="border centpercent">'."\n";
|
||||||
|
print '<tr><td class="fieldrequired">'.$langs->trans("Label").'</td><td>';
|
||||||
|
print '<input class="flat" type="text" size="36" name="label" value="'.$label.'">';
|
||||||
|
print '</td></tr>';
|
||||||
|
|
||||||
|
print '</table>'."\n";
|
||||||
|
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
print '<center><input type="submit" class="button" name="add" value="'.$langs->trans("Create").'"> <input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></center>';
|
||||||
|
|
||||||
|
print '</form>';
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Part to edit record
|
||||||
|
if (($id || $ref) && $action == 'edit')
|
||||||
|
{
|
||||||
|
dol_fiche_head();
|
||||||
|
|
||||||
|
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||||
|
print '<input type="hidden" name="action" value="add">';
|
||||||
|
print '<input type="hidden" name="backtopage" value="'.$backtopage.'">';
|
||||||
|
print '<input type="hidden" name="id" value="'.$object->id.'">';
|
||||||
|
|
||||||
|
|
||||||
|
print '<br>';
|
||||||
|
|
||||||
|
print '<center><input type="submit" class="button" name="add" value="'.$langs->trans("Create").'"></center>';
|
||||||
|
|
||||||
|
print '</form>';
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Part to show record
|
||||||
|
if ($id && (empty($action) || $action == 'view'))
|
||||||
|
{
|
||||||
|
dol_fiche_head();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
dol_fiche_end();
|
||||||
|
|
||||||
|
|
||||||
|
// Buttons
|
||||||
|
print '<div class="tabsAction">'."\n";
|
||||||
|
$parameters=array();
|
||||||
|
$reshook=$hookmanager->executeHooks('addMoreActionsButtons',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
|
||||||
|
if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
|
||||||
|
|
||||||
|
if (empty($reshook))
|
||||||
|
{
|
||||||
|
if ($user->rights->mymodule->write)
|
||||||
|
{
|
||||||
|
print '<div class="inline-block divButAction"><a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit">'.$langs->trans("Modify").'</a></div>'."\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($user->rights->mymodule->delete)
|
||||||
|
{
|
||||||
|
if ($conf->use_javascript_ajax && empty($conf->dol_use_jmobile)) // We can't use preloaded confirm form with jmobile
|
||||||
|
{
|
||||||
|
print '<div class="inline-block divButAction"><span id="action-delete" class="butActionDelete">'.$langs->trans('Delete').'</span></div>'."\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<div class="inline-block divButAction"><a class="butActionDelete" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=delete">'.$langs->trans('Delete').'</a></div>'."\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print '</div>'."\n";
|
||||||
|
|
||||||
|
|
||||||
|
// Example 2 : Adding links to objects
|
||||||
|
// The class must extends CommonObject class to have this method available
|
||||||
|
//$somethingshown=$object->showLinkedObjectBlock();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// End of page
|
// End of page
|
||||||
llxFooter();
|
llxFooter();
|
||||||
$db->close();
|
$db->close();
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ if (! $result > 0) { dol_print_error('',$user->error); exit; }
|
|||||||
$user->getrights();
|
$user->getrights();
|
||||||
|
|
||||||
|
|
||||||
print "***** ".$script_file." (".$version.") pid=".getmypid()." *****\n";
|
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
||||||
if (! isset($argv[1])) { // Check parameters
|
if (! isset($argv[1])) { // Check parameters
|
||||||
print "Usage: ".$script_file." param1 param2 ...\n";
|
print "Usage: ".$script_file." param1 param2 ...\n";
|
||||||
exit(-1);
|
exit(-1);
|
||||||
@@ -119,7 +119,7 @@ $sql.= " FROM ".MAIN_DB_PREFIX."skeleton";
|
|||||||
$sql.= " WHERE field3 = 'xxx'";
|
$sql.= " WHERE field3 = 'xxx'";
|
||||||
$sql.= " ORDER BY field1 ASC";
|
$sql.= " ORDER BY field1 ASC";
|
||||||
|
|
||||||
dol_syslog($script_file." sql=".$sql, LOG_DEBUG);
|
dol_syslog($script_file, LOG_DEBUG);
|
||||||
$resql=$db->query($sql);
|
$resql=$db->query($sql);
|
||||||
if ($resql)
|
if ($resql)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ $server->register(
|
|||||||
* @param array $authentication Array of authentication information
|
* @param array $authentication Array of authentication information
|
||||||
* @param int $id Id of object
|
* @param int $id Id of object
|
||||||
* @param string $ref Ref of object
|
* @param string $ref Ref of object
|
||||||
* @param ref_ext $ref_ext Ref external of object
|
* @param string $ref_ext Ref external of object
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
function getSkeleton($authentication,$id,$ref='',$ref_ext='')
|
function getSkeleton($authentication,$id,$ref='',$ref_ext='')
|
||||||
@@ -269,5 +269,4 @@ function createSkeleton($authentication,$skeleton)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Return the results.
|
// Return the results.
|
||||||
$server->service($HTTP_RAW_POST_DATA);
|
$server->service(file_get_contents("php://input"));
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,22 @@
|
|||||||
#!/usr/bin/php
|
#!/usr/bin/php
|
||||||
<?php
|
<?php
|
||||||
/*
|
/* Copyright (C) 2014 by FromDual GmbH, licensed under GPL v2
|
||||||
* strip_language_file.php
|
* Copyright (C) 2014 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
*
|
*
|
||||||
* (c) 2014 by FromDual GmbH, licensed under GPL v2
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* -----
|
||||||
*
|
*
|
||||||
* Compares a secondary language translation file with its primary
|
* Compares a secondary language translation file with its primary
|
||||||
* language file and strips redundant translations.
|
* language file and strips redundant translations.
|
||||||
@@ -12,11 +25,10 @@
|
|||||||
*
|
*
|
||||||
* Usage:
|
* Usage:
|
||||||
* cd htdocs/langs
|
* cd htdocs/langs
|
||||||
* ../../dev/translation/strip_language_file.php <primary_lang_dir> <secondary_lang_dir> <languagefile.lang>
|
* ../../dev/translation/strip_language_file.php <primary_lang_dir> <secondary_lang_dir> [file.lang|all]
|
||||||
*
|
*
|
||||||
* Parameters:
|
* To rename all .delta files, you can do
|
||||||
* 1 - Primary Language
|
* for fic in `ls *.delta`; do f=`echo $fic | sed -e 's/\.delta//'`; echo $f; mv $f.delta $f; done
|
||||||
* 2 - Secondary Language
|
|
||||||
*
|
*
|
||||||
* Rules:
|
* Rules:
|
||||||
* secondary string == primary string -> strip
|
* secondary string == primary string -> strip
|
||||||
@@ -24,9 +36,6 @@
|
|||||||
* secondary string not in primary -> strip and warning
|
* secondary string not in primary -> strip and warning
|
||||||
* secondary string has no value -> strip and warning
|
* secondary string has no value -> strip and warning
|
||||||
* secondary string != primary string -> secondary.lang.delta
|
* secondary string != primary string -> secondary.lang.delta
|
||||||
*
|
|
||||||
* To rename all .delta fils, you can do
|
|
||||||
* for fic in `ls *.delta`; do f=`echo $fic | sed -e 's/\.delta//'`; echo $f; mv $f.delta $f; done
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -260,6 +269,9 @@ foreach($filesToProcess as $fileToProcess)
|
|||||||
}
|
}
|
||||||
|
|
||||||
print "Output can be found at $output.\n";
|
print "Output can be found at $output.\n";
|
||||||
|
|
||||||
|
print "To rename all .delta files, you can do\n";
|
||||||
|
print 'for fic in `ls *.delta`; do f=`echo $fic | sed -e \'s/\.delta//\'`; echo $f; mv $f.delta $f; done'."\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,61 +0,0 @@
|
|||||||
Vagrant development box for Dolibarr
|
|
||||||
====================================
|
|
||||||
|
|
||||||
Introduction
|
|
||||||
------------
|
|
||||||
|
|
||||||
[Vagrant](http://vagrantup.com) is a tool to make development easier using [VirtualBox](http://virtualbox.org) virtual machines.
|
|
||||||
|
|
||||||
These machines have been created with [PuPHEt](http://puphpet.com) and combine the power of Vagrant with [Puppet](http://puppetlabs.com) to automate the development machine provisionning.
|
|
||||||
|
|
||||||
What you need
|
|
||||||
-------------
|
|
||||||
|
|
||||||
Latest versions of:
|
|
||||||
|
|
||||||
- [VirtualBox](https://www.virtualbox.org/wiki/Downloads)
|
|
||||||
- [Vagrant](http://downloads.vagrantup.com/)
|
|
||||||
|
|
||||||
Usage
|
|
||||||
-----
|
|
||||||
|
|
||||||
### VM startup
|
|
||||||
|
|
||||||
`cd` into the vagrant box directory and simply type `vagrant up`.
|
|
||||||
|
|
||||||
That's all you need to do. It will build a brand new VirtalBox machine for you with everything you need to develop on Dolibarr.
|
|
||||||
|
|
||||||
### Name resolution
|
|
||||||
For easy access to the VM you need to setup name resolution to the machines IP.
|
|
||||||
|
|
||||||
Edit the [hosts](https://en.wikipedia.org/wiki/Hosts_(file)) file on the machine you run Vagrant on to map the virtual machine's IP to it's Vhost name.
|
|
||||||
|
|
||||||
Example syntax:
|
|
||||||
|
|
||||||
192.168.42.101 dev.dolibarr.org
|
|
||||||
|
|
||||||
Once this is done, you will be able to access your VM's service at <http://dev.dolibarr.org>
|
|
||||||
|
|
||||||
Available boxes
|
|
||||||
---------------
|
|
||||||
|
|
||||||
### dolibardev
|
|
||||||
|
|
||||||
Somewhat bleeding edge vagrant box for develop branch related work.
|
|
||||||
|
|
||||||
- IP: 192.168.42.101
|
|
||||||
- Vhost: dev.dolibarr.org
|
|
||||||
- OS: Debian Wheezy 7.5
|
|
||||||
- Webserver: Apache 2.2.22
|
|
||||||
- PHP: mod_php 5.5.13-1~dotdeb.1
|
|
||||||
- Database: MySQL 5.5
|
|
||||||
- Root user: root
|
|
||||||
- Root password: root
|
|
||||||
- Database name: dolibarr
|
|
||||||
- Database user: user
|
|
||||||
- Database password: user
|
|
||||||
- Initial data: dev/initdata/mysqldump_dolibarr-3.5.0.sql
|
|
||||||
- Debugger: XDebug
|
|
||||||
- Profiler: Xhprof
|
|
||||||
|
|
||||||
You can access MailCatcher to read all outgoing emails at http://192.168.42.101:1080
|
|
||||||
170
dev/vagrant/dolibarrdev/Vagrantfile
vendored
170
dev/vagrant/dolibarrdev/Vagrantfile
vendored
@@ -1,170 +0,0 @@
|
|||||||
require 'yaml'
|
|
||||||
|
|
||||||
dir = File.dirname(File.expand_path(__FILE__))
|
|
||||||
|
|
||||||
configValues = YAML.load_file("#{dir}/puphpet/config.yaml")
|
|
||||||
data = configValues['vagrantfile-local']
|
|
||||||
|
|
||||||
Vagrant.configure("2") do |config|
|
|
||||||
config.vm.box = "#{data['vm']['box']}"
|
|
||||||
config.vm.box_url = "#{data['vm']['box_url']}"
|
|
||||||
|
|
||||||
if data['vm']['hostname'].to_s.strip.length != 0
|
|
||||||
config.vm.hostname = "#{data['vm']['hostname']}"
|
|
||||||
end
|
|
||||||
|
|
||||||
if data['vm']['network']['private_network'].to_s != ''
|
|
||||||
config.vm.network "private_network", ip: "#{data['vm']['network']['private_network']}"
|
|
||||||
end
|
|
||||||
|
|
||||||
data['vm']['network']['forwarded_port'].each do |i, port|
|
|
||||||
if port['guest'] != '' && port['host'] != ''
|
|
||||||
config.vm.network :forwarded_port, guest: port['guest'].to_i, host: port['host'].to_i
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
data['vm']['synced_folder'].each do |i, folder|
|
|
||||||
if folder['source'] != '' && folder['target'] != ''
|
|
||||||
nfs = (folder['nfs'] == "true") ? "nfs" : nil
|
|
||||||
if nfs == "nfs"
|
|
||||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: nfs
|
|
||||||
else
|
|
||||||
config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: nfs,
|
|
||||||
group: 'www-data', owner: 'www-data', mount_options: ["dmode=775", "fmode=764"]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
config.vm.usable_port_range = (10200..10500)
|
|
||||||
|
|
||||||
if data['vm']['chosen_provider'].empty? || data['vm']['chosen_provider'] == "virtualbox"
|
|
||||||
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox'
|
|
||||||
|
|
||||||
config.vm.provider :virtualbox do |virtualbox|
|
|
||||||
data['vm']['provider']['virtualbox']['modifyvm'].each do |key, value|
|
|
||||||
if key == "memory"
|
|
||||||
next
|
|
||||||
end
|
|
||||||
|
|
||||||
if key == "natdnshostresolver1"
|
|
||||||
value = value ? "on" : "off"
|
|
||||||
end
|
|
||||||
|
|
||||||
virtualbox.customize ["modifyvm", :id, "--#{key}", "#{value}"]
|
|
||||||
end
|
|
||||||
|
|
||||||
virtualbox.customize ["modifyvm", :id, "--memory", "#{data['vm']['memory']}"]
|
|
||||||
|
|
||||||
if data['vm']['hostname'].to_s.strip.length != 0
|
|
||||||
virtualbox.customize ["modifyvm", :id, "--name", config.vm.hostname]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if data['vm']['chosen_provider'] == "vmware_fusion" || data['vm']['chosen_provider'] == "vmware_workstation"
|
|
||||||
ENV['VAGRANT_DEFAULT_PROVIDER'] = (data['vm']['chosen_provider'] == "vmware_fusion") ? "vmware_fusion" : "vmware_workstation"
|
|
||||||
|
|
||||||
config.vm.provider "vmware_fusion" do |v|
|
|
||||||
data['vm']['provider']['vmware'].each do |key, value|
|
|
||||||
if key == "memsize"
|
|
||||||
next
|
|
||||||
end
|
|
||||||
|
|
||||||
v.vmx["#{key}"] = "#{value}"
|
|
||||||
end
|
|
||||||
|
|
||||||
v.vmx["memsize"] = "#{data['vm']['memory']}"
|
|
||||||
|
|
||||||
if data['vm']['hostname'].to_s.strip.length != 0
|
|
||||||
v.vmx["displayName"] = config.vm.hostname
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if data['vm']['chosen_provider'] == "parallels"
|
|
||||||
ENV['VAGRANT_DEFAULT_PROVIDER'] = "parallels"
|
|
||||||
|
|
||||||
config.vm.provider "parallels" do |v|
|
|
||||||
data['vm']['provider']['parallels'].each do |key, value|
|
|
||||||
if key == "memsize"
|
|
||||||
next
|
|
||||||
end
|
|
||||||
|
|
||||||
v.customize ["set", :id, "--#{key}", "#{value}"]
|
|
||||||
end
|
|
||||||
|
|
||||||
v.memory = "#{data['vm']['memory']}"
|
|
||||||
|
|
||||||
if data['vm']['hostname'].to_s.strip.length != 0
|
|
||||||
v.name = config.vm.hostname
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
ssh_username = !data['ssh']['username'].nil? ? data['ssh']['username'] : "vagrant"
|
|
||||||
|
|
||||||
config.vm.provision "shell" do |s|
|
|
||||||
s.path = "puphpet/shell/initial-setup.sh"
|
|
||||||
s.args = "/vagrant/puphpet"
|
|
||||||
end
|
|
||||||
config.vm.provision "shell" do |kg|
|
|
||||||
kg.path = "puphpet/shell/ssh-keygen.sh"
|
|
||||||
kg.args = "#{ssh_username}"
|
|
||||||
end
|
|
||||||
config.vm.provision :shell, :path => "puphpet/shell/update-puppet.sh"
|
|
||||||
|
|
||||||
config.vm.provision :puppet do |puppet|
|
|
||||||
puppet.facter = {
|
|
||||||
"ssh_username" => "#{ssh_username}",
|
|
||||||
"provisioner_type" => ENV['VAGRANT_DEFAULT_PROVIDER'],
|
|
||||||
"vm_target_key" => 'vagrantfile-local',
|
|
||||||
}
|
|
||||||
puppet.manifests_path = "#{data['vm']['provision']['puppet']['manifests_path']}"
|
|
||||||
puppet.manifest_file = "#{data['vm']['provision']['puppet']['manifest_file']}"
|
|
||||||
puppet.module_path = "#{data['vm']['provision']['puppet']['module_path']}"
|
|
||||||
|
|
||||||
if !data['vm']['provision']['puppet']['options'].empty?
|
|
||||||
puppet.options = data['vm']['provision']['puppet']['options']
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
config.vm.provision :shell, :path => "puphpet/shell/execute-files.sh"
|
|
||||||
config.vm.provision :shell, :path => "puphpet/shell/important-notices.sh"
|
|
||||||
|
|
||||||
if File.file?("#{dir}/puphpet/files/dot/ssh/id_rsa")
|
|
||||||
config.ssh.private_key_path = [
|
|
||||||
"#{dir}/puphpet/files/dot/ssh/id_rsa",
|
|
||||||
"#{dir}/puphpet/files/dot/ssh/insecure_private_key"
|
|
||||||
]
|
|
||||||
end
|
|
||||||
|
|
||||||
if !data['ssh']['host'].nil?
|
|
||||||
config.ssh.host = "#{data['ssh']['host']}"
|
|
||||||
end
|
|
||||||
if !data['ssh']['port'].nil?
|
|
||||||
config.ssh.port = "#{data['ssh']['port']}"
|
|
||||||
end
|
|
||||||
if !data['ssh']['username'].nil?
|
|
||||||
config.ssh.username = "#{data['ssh']['username']}"
|
|
||||||
end
|
|
||||||
if !data['ssh']['guest_port'].nil?
|
|
||||||
config.ssh.guest_port = data['ssh']['guest_port']
|
|
||||||
end
|
|
||||||
if !data['ssh']['shell'].nil?
|
|
||||||
config.ssh.shell = "#{data['ssh']['shell']}"
|
|
||||||
end
|
|
||||||
if !data['ssh']['keep_alive'].nil?
|
|
||||||
config.ssh.keep_alive = data['ssh']['keep_alive']
|
|
||||||
end
|
|
||||||
if !data['ssh']['forward_agent'].nil?
|
|
||||||
config.ssh.forward_agent = data['ssh']['forward_agent']
|
|
||||||
end
|
|
||||||
if !data['ssh']['forward_x11'].nil?
|
|
||||||
config.ssh.forward_x11 = data['ssh']['forward_x11']
|
|
||||||
end
|
|
||||||
if !data['vagrant']['host'].nil?
|
|
||||||
config.vagrant.host = data['vagrant']['host'].gsub(":", "").intern
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
10
dev/vagrant/dolibarrdev/puphpet/.gitattributes
vendored
10
dev/vagrant/dolibarrdev/puphpet/.gitattributes
vendored
@@ -1,10 +0,0 @@
|
|||||||
# Autodetect text files
|
|
||||||
* text=auto
|
|
||||||
|
|
||||||
# Force the following filetypes to have unix eols, so Windows does not break them
|
|
||||||
*.pp text eol=lf
|
|
||||||
*.sh text eol=lf
|
|
||||||
*.yaml text eol=lf
|
|
||||||
Puppetfile text eol=lf
|
|
||||||
.bash_aliases text eol=lf
|
|
||||||
.vimrc text eol=lf
|
|
||||||
211
dev/vagrant/dolibarrdev/puphpet/config.yaml
vendored
211
dev/vagrant/dolibarrdev/puphpet/config.yaml
vendored
@@ -1,211 +0,0 @@
|
|||||||
---
|
|
||||||
vagrantfile-local:
|
|
||||||
vm:
|
|
||||||
box: puphpet/debian75-x64
|
|
||||||
box_url: puphpet/debian75-x64
|
|
||||||
hostname: null
|
|
||||||
memory: '512'
|
|
||||||
chosen_provider: virtualbox
|
|
||||||
network:
|
|
||||||
private_network: 192.168.42.101
|
|
||||||
forwarded_port: { }
|
|
||||||
provider:
|
|
||||||
virtualbox:
|
|
||||||
modifyvm:
|
|
||||||
natdnshostresolver1: on
|
|
||||||
setextradata:
|
|
||||||
VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root: 1
|
|
||||||
vmware:
|
|
||||||
numvcpus: 1
|
|
||||||
parallels:
|
|
||||||
cpus: 1
|
|
||||||
provision:
|
|
||||||
puppet:
|
|
||||||
manifests_path: puphpet/puppet
|
|
||||||
manifest_file: manifest.pp
|
|
||||||
module_path: puphpet/puppet/modules
|
|
||||||
options:
|
|
||||||
- '--verbose'
|
|
||||||
- '--hiera_config /vagrant/puphpet/puppet/hiera.yaml'
|
|
||||||
- '--parser future'
|
|
||||||
synced_folder:
|
|
||||||
PL1BkioqqvGY:
|
|
||||||
source: ../../../
|
|
||||||
target: /var/www
|
|
||||||
nfs: 'false'
|
|
||||||
usable_port_range: 2200..2250
|
|
||||||
ssh:
|
|
||||||
host: null
|
|
||||||
port: null
|
|
||||||
private_key_path: null
|
|
||||||
username: vagrant
|
|
||||||
guest_port: null
|
|
||||||
keep_alive: true
|
|
||||||
forward_agent: false
|
|
||||||
forward_x11: false
|
|
||||||
shell: 'bash -l'
|
|
||||||
vagrant:
|
|
||||||
host: detect
|
|
||||||
server:
|
|
||||||
packages:
|
|
||||||
- nano
|
|
||||||
- ack-grep
|
|
||||||
dot_files:
|
|
||||||
-
|
|
||||||
bash_aliases: null
|
|
||||||
_prevent_empty: ''
|
|
||||||
mailcatcher:
|
|
||||||
install: '1'
|
|
||||||
settings:
|
|
||||||
smtp_ip: 0.0.0.0
|
|
||||||
smtp_port: 1025
|
|
||||||
http_ip: 0.0.0.0
|
|
||||||
http_port: '1080'
|
|
||||||
mailcatcher_path: /usr/local/bin
|
|
||||||
log_path: /var/log/mailcatcher/mailcatcher.log
|
|
||||||
firewall:
|
|
||||||
install: '1'
|
|
||||||
rules: null
|
|
||||||
apache:
|
|
||||||
install: '1'
|
|
||||||
settings:
|
|
||||||
user: www-data
|
|
||||||
group: www-data
|
|
||||||
default_vhost: false
|
|
||||||
manage_user: false
|
|
||||||
manage_group: false
|
|
||||||
sendfile: 0
|
|
||||||
modules:
|
|
||||||
- php
|
|
||||||
- rewrite
|
|
||||||
vhosts:
|
|
||||||
CGyWQB0fx4x0:
|
|
||||||
servername: dev.dolibarr.org
|
|
||||||
docroot: /var/www/htdocs
|
|
||||||
port: '80'
|
|
||||||
setenv:
|
|
||||||
- 'APP_ENV dev'
|
|
||||||
override:
|
|
||||||
- All
|
|
||||||
custom_fragment: ''
|
|
||||||
ssl_cert: ''
|
|
||||||
ssl_key: ''
|
|
||||||
ssl_chain: ''
|
|
||||||
ssl_certs_dir: ''
|
|
||||||
mod_pagespeed: 0
|
|
||||||
mod_spdy: 0
|
|
||||||
nginx:
|
|
||||||
install: 0
|
|
||||||
vhosts:
|
|
||||||
jeF1sybIJ3V2:
|
|
||||||
server_name: awesome.dev
|
|
||||||
server_aliases:
|
|
||||||
- www.awesome.dev
|
|
||||||
www_root: /var/www/awesome.dev
|
|
||||||
listen_port: '80'
|
|
||||||
index_files:
|
|
||||||
- index.html
|
|
||||||
- index.htm
|
|
||||||
- index.php
|
|
||||||
envvars:
|
|
||||||
- 'APP_ENV dev'
|
|
||||||
ssl_cert: ''
|
|
||||||
ssl_key: ''
|
|
||||||
php:
|
|
||||||
install: '1'
|
|
||||||
version: '55'
|
|
||||||
composer: '1'
|
|
||||||
composer_home: ''
|
|
||||||
modules:
|
|
||||||
php:
|
|
||||||
- cli
|
|
||||||
- curl
|
|
||||||
- gd
|
|
||||||
- imagick
|
|
||||||
- intl
|
|
||||||
- mcrypt
|
|
||||||
pear: { }
|
|
||||||
pecl: { }
|
|
||||||
ini:
|
|
||||||
display_errors: On
|
|
||||||
error_reporting: '-1'
|
|
||||||
session.save_path: /var/lib/php/session
|
|
||||||
sendmail_path: '"/usr/bin/env catchmail"'
|
|
||||||
timezone: UTC
|
|
||||||
xdebug:
|
|
||||||
install: '1'
|
|
||||||
settings:
|
|
||||||
xdebug.default_enable: '1'
|
|
||||||
xdebug.remote_autostart: '0'
|
|
||||||
xdebug.remote_connect_back: '1'
|
|
||||||
xdebug.remote_enable: '1'
|
|
||||||
xdebug.remote_handler: dbgp
|
|
||||||
xdebug.remote_port: '9000'
|
|
||||||
xhprof:
|
|
||||||
install: '1'
|
|
||||||
drush:
|
|
||||||
install: 0
|
|
||||||
settings:
|
|
||||||
drush.tag_branch: 6.x
|
|
||||||
mysql:
|
|
||||||
install: '1'
|
|
||||||
root_password: root
|
|
||||||
adminer: 0
|
|
||||||
databases:
|
|
||||||
2OfuuapoIqsl:
|
|
||||||
grant:
|
|
||||||
- ALTER
|
|
||||||
- CREATE
|
|
||||||
- DELETE
|
|
||||||
- DROP
|
|
||||||
- INDEX
|
|
||||||
- INSERT
|
|
||||||
- SELECT
|
|
||||||
- UPDATE
|
|
||||||
name: dolibarr
|
|
||||||
host: localhost
|
|
||||||
user: user
|
|
||||||
password: user
|
|
||||||
sql_file: /var/www/dev/initdata/mysqldump_dolibarr_3.5.0.sql
|
|
||||||
postgresql:
|
|
||||||
install: 0
|
|
||||||
settings:
|
|
||||||
root_password: '123'
|
|
||||||
user_group: postgres
|
|
||||||
encoding: UTF8
|
|
||||||
version: '9.3'
|
|
||||||
databases: { }
|
|
||||||
adminer: 0
|
|
||||||
mariadb:
|
|
||||||
install: 0
|
|
||||||
root_password: '123'
|
|
||||||
adminer: 0
|
|
||||||
databases: { }
|
|
||||||
version: '10.0'
|
|
||||||
mongodb:
|
|
||||||
install: 0
|
|
||||||
settings:
|
|
||||||
auth: 1
|
|
||||||
port: '27017'
|
|
||||||
databases: { }
|
|
||||||
redis:
|
|
||||||
install: 0
|
|
||||||
settings:
|
|
||||||
conf_port: '6379'
|
|
||||||
beanstalkd:
|
|
||||||
install: 0
|
|
||||||
settings:
|
|
||||||
listenaddress: 0.0.0.0
|
|
||||||
listenport: '13000'
|
|
||||||
maxjobsize: '65535'
|
|
||||||
maxconnections: '1024'
|
|
||||||
binlogdir: /var/lib/beanstalkd/binlog
|
|
||||||
binlogfsync: null
|
|
||||||
binlogsize: '10485760'
|
|
||||||
beanstalk_console: 0
|
|
||||||
binlogdir: /var/lib/beanstalkd/binlog
|
|
||||||
rabbitmq:
|
|
||||||
install: 0
|
|
||||||
settings:
|
|
||||||
port: '5672'
|
|
||||||
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
if [ -f /etc/bash_completion ]; then
|
|
||||||
source /etc/bash_completion
|
|
||||||
fi
|
|
||||||
|
|
||||||
__has_parent_dir () {
|
|
||||||
# Utility function so we can test for things like .git/.hg without firing up a
|
|
||||||
# separate process
|
|
||||||
test -d "$1" && return 0;
|
|
||||||
|
|
||||||
current="."
|
|
||||||
while [ ! "$current" -ef "$current/.." ]; do
|
|
||||||
if [ -d "$current/$1" ]; then
|
|
||||||
return 0;
|
|
||||||
fi
|
|
||||||
current="$current/..";
|
|
||||||
done
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
__vcs_name() {
|
|
||||||
if [ -d .svn ]; then
|
|
||||||
echo "-[svn]";
|
|
||||||
elif __has_parent_dir ".git"; then
|
|
||||||
echo "-[$(__git_ps1 'git %s')]";
|
|
||||||
elif __has_parent_dir ".hg"; then
|
|
||||||
echo "-[hg $(hg branch)]"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
black=$(tput -Txterm setaf 0)
|
|
||||||
red=$(tput -Txterm setaf 1)
|
|
||||||
green=$(tput -Txterm setaf 2)
|
|
||||||
yellow=$(tput -Txterm setaf 3)
|
|
||||||
dk_blue=$(tput -Txterm setaf 4)
|
|
||||||
pink=$(tput -Txterm setaf 5)
|
|
||||||
lt_blue=$(tput -Txterm setaf 6)
|
|
||||||
|
|
||||||
bold=$(tput -Txterm bold)
|
|
||||||
reset=$(tput -Txterm sgr0)
|
|
||||||
|
|
||||||
# Nicely formatted terminal prompt
|
|
||||||
export PS1='\n\[$bold\]\[$black\][\[$dk_blue\]\@\[$black\]]-[\[$green\]\u\[$yellow\]@\[$green\]\h\[$black\]]-[\[$pink\]\w\[$black\]]\[\033[0;33m\]$(__vcs_name) \[\033[00m\]\[$reset\]\n\[$reset\]\$ '
|
|
||||||
|
|
||||||
alias ls='ls -F --color=always'
|
|
||||||
alias dir='dir -F --color=always'
|
|
||||||
alias ll='ls -l'
|
|
||||||
alias cp='cp -iv'
|
|
||||||
alias rm='rm -i'
|
|
||||||
alias mv='mv -iv'
|
|
||||||
alias grep='grep --color=auto -in'
|
|
||||||
alias ..='cd ..'
|
|
||||||
491
dev/vagrant/dolibarrdev/puphpet/files/dot/.bash_git
vendored
491
dev/vagrant/dolibarrdev/puphpet/files/dot/.bash_git
vendored
@@ -1,491 +0,0 @@
|
|||||||
# bash/zsh git prompt support
|
|
||||||
#
|
|
||||||
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
|
|
||||||
# Distributed under the GNU General Public License, version 2.0.
|
|
||||||
#
|
|
||||||
# This script allows you to see repository status in your prompt.
|
|
||||||
#
|
|
||||||
# To enable:
|
|
||||||
#
|
|
||||||
# 1) Copy this file to somewhere (e.g. ~/.git-prompt.sh).
|
|
||||||
# 2) Add the following line to your .bashrc/.zshrc:
|
|
||||||
# source ~/.git-prompt.sh
|
|
||||||
# 3a) Change your PS1 to call __git_ps1 as
|
|
||||||
# command-substitution:
|
|
||||||
# Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
|
|
||||||
# ZSH: setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
|
|
||||||
# the optional argument will be used as format string.
|
|
||||||
# 3b) Alternatively, for a slightly faster prompt, __git_ps1 can
|
|
||||||
# be used for PROMPT_COMMAND in Bash or for precmd() in Zsh
|
|
||||||
# with two parameters, <pre> and <post>, which are strings
|
|
||||||
# you would put in $PS1 before and after the status string
|
|
||||||
# generated by the git-prompt machinery. e.g.
|
|
||||||
# Bash: PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
|
|
||||||
# will show username, at-sign, host, colon, cwd, then
|
|
||||||
# various status string, followed by dollar and SP, as
|
|
||||||
# your prompt.
|
|
||||||
# ZSH: precmd () { __git_ps1 "%n" ":%~$ " "|%s" }
|
|
||||||
# will show username, pipe, then various status string,
|
|
||||||
# followed by colon, cwd, dollar and SP, as your prompt.
|
|
||||||
# Optionally, you can supply a third argument with a printf
|
|
||||||
# format string to finetune the output of the branch status
|
|
||||||
#
|
|
||||||
# The repository status will be displayed only if you are currently in a
|
|
||||||
# git repository. The %s token is the placeholder for the shown status.
|
|
||||||
#
|
|
||||||
# The prompt status always includes the current branch name.
|
|
||||||
#
|
|
||||||
# In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty value,
|
|
||||||
# unstaged (*) and staged (+) changes will be shown next to the branch
|
|
||||||
# name. You can configure this per-repository with the
|
|
||||||
# bash.showDirtyState variable, which defaults to true once
|
|
||||||
# GIT_PS1_SHOWDIRTYSTATE is enabled.
|
|
||||||
#
|
|
||||||
# You can also see if currently something is stashed, by setting
|
|
||||||
# GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed,
|
|
||||||
# then a '$' will be shown next to the branch name.
|
|
||||||
#
|
|
||||||
# If you would like to see if there're untracked files, then you can set
|
|
||||||
# GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're untracked
|
|
||||||
# files, then a '%' will be shown next to the branch name. You can
|
|
||||||
# configure this per-repository with the bash.showUntrackedFiles
|
|
||||||
# variable, which defaults to true once GIT_PS1_SHOWUNTRACKEDFILES is
|
|
||||||
# enabled.
|
|
||||||
#
|
|
||||||
# If you would like to see the difference between HEAD and its upstream,
|
|
||||||
# set GIT_PS1_SHOWUPSTREAM="auto". A "<" indicates you are behind, ">"
|
|
||||||
# indicates you are ahead, "<>" indicates you have diverged and "="
|
|
||||||
# indicates that there is no difference. You can further control
|
|
||||||
# behaviour by setting GIT_PS1_SHOWUPSTREAM to a space-separated list
|
|
||||||
# of values:
|
|
||||||
#
|
|
||||||
# verbose show number of commits ahead/behind (+/-) upstream
|
|
||||||
# name if verbose, then also show the upstream abbrev name
|
|
||||||
# legacy don't use the '--count' option available in recent
|
|
||||||
# versions of git-rev-list
|
|
||||||
# git always compare HEAD to @{upstream}
|
|
||||||
# svn always compare HEAD to your SVN upstream
|
|
||||||
#
|
|
||||||
# By default, __git_ps1 will compare HEAD to your SVN upstream if it can
|
|
||||||
# find one, or @{upstream} otherwise. Once you have set
|
|
||||||
# GIT_PS1_SHOWUPSTREAM, you can override it on a per-repository basis by
|
|
||||||
# setting the bash.showUpstream config variable.
|
|
||||||
#
|
|
||||||
# If you would like to see more information about the identity of
|
|
||||||
# commits checked out as a detached HEAD, set GIT_PS1_DESCRIBE_STYLE
|
|
||||||
# to one of these values:
|
|
||||||
#
|
|
||||||
# contains relative to newer annotated tag (v1.6.3.2~35)
|
|
||||||
# branch relative to newer tag or branch (master~4)
|
|
||||||
# describe relative to older annotated tag (v1.6.3.1-13-gdd42c2f)
|
|
||||||
# default exactly matching tag
|
|
||||||
#
|
|
||||||
# If you would like a colored hint about the current dirty state, set
|
|
||||||
# GIT_PS1_SHOWCOLORHINTS to a nonempty value. The colors are based on
|
|
||||||
# the colored output of "git status -sb" and are available only when
|
|
||||||
# using __git_ps1 for PROMPT_COMMAND or precmd.
|
|
||||||
|
|
||||||
# check whether printf supports -v
|
|
||||||
__git_printf_supports_v=
|
|
||||||
printf -v __git_printf_supports_v -- '%s' yes >/dev/null 2>&1
|
|
||||||
|
|
||||||
# stores the divergence from upstream in $p
|
|
||||||
# used by GIT_PS1_SHOWUPSTREAM
|
|
||||||
__git_ps1_show_upstream ()
|
|
||||||
{
|
|
||||||
local key value
|
|
||||||
local svn_remote svn_url_pattern count n
|
|
||||||
local upstream=git legacy="" verbose="" name=""
|
|
||||||
|
|
||||||
svn_remote=()
|
|
||||||
# get some config options from git-config
|
|
||||||
local output="$(git config -z --get-regexp '^(svn-remote\..*\.url|bash\.showupstream)$' 2>/dev/null | tr '\0\n' '\n ')"
|
|
||||||
while read -r key value; do
|
|
||||||
case "$key" in
|
|
||||||
bash.showupstream)
|
|
||||||
GIT_PS1_SHOWUPSTREAM="$value"
|
|
||||||
if [[ -z "${GIT_PS1_SHOWUPSTREAM}" ]]; then
|
|
||||||
p=""
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
svn-remote.*.url)
|
|
||||||
svn_remote[$((${#svn_remote[@]} + 1))]="$value"
|
|
||||||
svn_url_pattern="$svn_url_pattern\\|$value"
|
|
||||||
upstream=svn+git # default upstream is SVN if available, else git
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done <<< "$output"
|
|
||||||
|
|
||||||
# parse configuration values
|
|
||||||
for option in ${GIT_PS1_SHOWUPSTREAM}; do
|
|
||||||
case "$option" in
|
|
||||||
git|svn) upstream="$option" ;;
|
|
||||||
verbose) verbose=1 ;;
|
|
||||||
legacy) legacy=1 ;;
|
|
||||||
name) name=1 ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# Find our upstream
|
|
||||||
case "$upstream" in
|
|
||||||
git) upstream="@{upstream}" ;;
|
|
||||||
svn*)
|
|
||||||
# get the upstream from the "git-svn-id: ..." in a commit message
|
|
||||||
# (git-svn uses essentially the same procedure internally)
|
|
||||||
local -a svn_upstream
|
|
||||||
svn_upstream=($(git log --first-parent -1 \
|
|
||||||
--grep="^git-svn-id: \(${svn_url_pattern#??}\)" 2>/dev/null))
|
|
||||||
if [[ 0 -ne ${#svn_upstream[@]} ]]; then
|
|
||||||
svn_upstream=${svn_upstream[${#svn_upstream[@]} - 2]}
|
|
||||||
svn_upstream=${svn_upstream%@*}
|
|
||||||
local n_stop="${#svn_remote[@]}"
|
|
||||||
for ((n=1; n <= n_stop; n++)); do
|
|
||||||
svn_upstream=${svn_upstream#${svn_remote[$n]}}
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ -z "$svn_upstream" ]]; then
|
|
||||||
# default branch name for checkouts with no layout:
|
|
||||||
upstream=${GIT_SVN_ID:-git-svn}
|
|
||||||
else
|
|
||||||
upstream=${svn_upstream#/}
|
|
||||||
fi
|
|
||||||
elif [[ "svn+git" = "$upstream" ]]; then
|
|
||||||
upstream="@{upstream}"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Find how many commits we are ahead/behind our upstream
|
|
||||||
if [[ -z "$legacy" ]]; then
|
|
||||||
count="$(git rev-list --count --left-right \
|
|
||||||
"$upstream"...HEAD 2>/dev/null)"
|
|
||||||
else
|
|
||||||
# produce equivalent output to --count for older versions of git
|
|
||||||
local commits
|
|
||||||
if commits="$(git rev-list --left-right "$upstream"...HEAD 2>/dev/null)"
|
|
||||||
then
|
|
||||||
local commit behind=0 ahead=0
|
|
||||||
for commit in $commits
|
|
||||||
do
|
|
||||||
case "$commit" in
|
|
||||||
"<"*) ((behind++)) ;;
|
|
||||||
*) ((ahead++)) ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
count="$behind $ahead"
|
|
||||||
else
|
|
||||||
count=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# calculate the result
|
|
||||||
if [[ -z "$verbose" ]]; then
|
|
||||||
case "$count" in
|
|
||||||
"") # no upstream
|
|
||||||
p="" ;;
|
|
||||||
"0 0") # equal to upstream
|
|
||||||
p="=" ;;
|
|
||||||
"0 "*) # ahead of upstream
|
|
||||||
p=">" ;;
|
|
||||||
*" 0") # behind upstream
|
|
||||||
p="<" ;;
|
|
||||||
*) # diverged from upstream
|
|
||||||
p="<>" ;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
case "$count" in
|
|
||||||
"") # no upstream
|
|
||||||
p="" ;;
|
|
||||||
"0 0") # equal to upstream
|
|
||||||
p=" u=" ;;
|
|
||||||
"0 "*) # ahead of upstream
|
|
||||||
p=" u+${count#0 }" ;;
|
|
||||||
*" 0") # behind upstream
|
|
||||||
p=" u-${count% 0}" ;;
|
|
||||||
*) # diverged from upstream
|
|
||||||
p=" u+${count#* }-${count% *}" ;;
|
|
||||||
esac
|
|
||||||
if [[ -n "$count" && -n "$name" ]]; then
|
|
||||||
__git_ps1_upstream_name=$(git rev-parse \
|
|
||||||
--abbrev-ref "$upstream" 2>/dev/null)
|
|
||||||
if [ $pcmode = yes ]; then
|
|
||||||
# see the comments around the
|
|
||||||
# __git_ps1_branch_name variable below
|
|
||||||
p="$p \${__git_ps1_upstream_name}"
|
|
||||||
else
|
|
||||||
p="$p ${__git_ps1_upstream_name}"
|
|
||||||
# not needed anymore; keep user's
|
|
||||||
# environment clean
|
|
||||||
unset __git_ps1_upstream_name
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# Helper function that is meant to be called from __git_ps1. It
|
|
||||||
# injects color codes into the appropriate gitstring variables used
|
|
||||||
# to build a gitstring.
|
|
||||||
__git_ps1_colorize_gitstring ()
|
|
||||||
{
|
|
||||||
if [[ -n ${ZSH_VERSION-} ]]; then
|
|
||||||
local c_red='%F{red}'
|
|
||||||
local c_green='%F{green}'
|
|
||||||
local c_lblue='%F{blue}'
|
|
||||||
local c_clear='%f'
|
|
||||||
else
|
|
||||||
# Using \[ and \] around colors is necessary to prevent
|
|
||||||
# issues with command line editing/browsing/completion!
|
|
||||||
local c_red='\[\e[31m\]'
|
|
||||||
local c_green='\[\e[32m\]'
|
|
||||||
local c_lblue='\[\e[1;34m\]'
|
|
||||||
local c_clear='\[\e[0m\]'
|
|
||||||
fi
|
|
||||||
local bad_color=$c_red
|
|
||||||
local ok_color=$c_green
|
|
||||||
local flags_color="$c_lblue"
|
|
||||||
|
|
||||||
local branch_color=""
|
|
||||||
if [ $detached = no ]; then
|
|
||||||
branch_color="$ok_color"
|
|
||||||
else
|
|
||||||
branch_color="$bad_color"
|
|
||||||
fi
|
|
||||||
c="$branch_color$c"
|
|
||||||
|
|
||||||
z="$c_clear$z"
|
|
||||||
if [ "$w" = "*" ]; then
|
|
||||||
w="$bad_color$w"
|
|
||||||
fi
|
|
||||||
if [ -n "$i" ]; then
|
|
||||||
i="$ok_color$i"
|
|
||||||
fi
|
|
||||||
if [ -n "$s" ]; then
|
|
||||||
s="$flags_color$s"
|
|
||||||
fi
|
|
||||||
if [ -n "$u" ]; then
|
|
||||||
u="$bad_color$u"
|
|
||||||
fi
|
|
||||||
r="$c_clear$r"
|
|
||||||
}
|
|
||||||
|
|
||||||
__git_eread ()
|
|
||||||
{
|
|
||||||
f="$1"
|
|
||||||
shift
|
|
||||||
test -r "$f" && read "$@" <"$f"
|
|
||||||
}
|
|
||||||
|
|
||||||
# __git_ps1 accepts 0 or 1 arguments (i.e., format string)
|
|
||||||
# when called from PS1 using command substitution
|
|
||||||
# in this mode it prints text to add to bash PS1 prompt (includes branch name)
|
|
||||||
#
|
|
||||||
# __git_ps1 requires 2 or 3 arguments when called from PROMPT_COMMAND (pc)
|
|
||||||
# in that case it _sets_ PS1. The arguments are parts of a PS1 string.
|
|
||||||
# when two arguments are given, the first is prepended and the second appended
|
|
||||||
# to the state string when assigned to PS1.
|
|
||||||
# The optional third parameter will be used as printf format string to further
|
|
||||||
# customize the output of the git-status string.
|
|
||||||
# In this mode you can request colored hints using GIT_PS1_SHOWCOLORHINTS=true
|
|
||||||
__git_ps1 ()
|
|
||||||
{
|
|
||||||
local pcmode=no
|
|
||||||
local detached=no
|
|
||||||
local ps1pc_start='\u@\h:\w '
|
|
||||||
local ps1pc_end='\$ '
|
|
||||||
local printf_format=' (%s)'
|
|
||||||
|
|
||||||
case "$#" in
|
|
||||||
2|3) pcmode=yes
|
|
||||||
ps1pc_start="$1"
|
|
||||||
ps1pc_end="$2"
|
|
||||||
printf_format="${3:-$printf_format}"
|
|
||||||
;;
|
|
||||||
0|1) printf_format="${1:-$printf_format}"
|
|
||||||
;;
|
|
||||||
*) return
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
local repo_info rev_parse_exit_code
|
|
||||||
repo_info="$(git rev-parse --git-dir --is-inside-git-dir \
|
|
||||||
--is-bare-repository --is-inside-work-tree \
|
|
||||||
--short HEAD 2>/dev/null)"
|
|
||||||
rev_parse_exit_code="$?"
|
|
||||||
|
|
||||||
if [ -z "$repo_info" ]; then
|
|
||||||
if [ $pcmode = yes ]; then
|
|
||||||
#In PC mode PS1 always needs to be set
|
|
||||||
PS1="$ps1pc_start$ps1pc_end"
|
|
||||||
fi
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local short_sha
|
|
||||||
if [ "$rev_parse_exit_code" = "0" ]; then
|
|
||||||
short_sha="${repo_info##*$'\n'}"
|
|
||||||
repo_info="${repo_info%$'\n'*}"
|
|
||||||
fi
|
|
||||||
local inside_worktree="${repo_info##*$'\n'}"
|
|
||||||
repo_info="${repo_info%$'\n'*}"
|
|
||||||
local bare_repo="${repo_info##*$'\n'}"
|
|
||||||
repo_info="${repo_info%$'\n'*}"
|
|
||||||
local inside_gitdir="${repo_info##*$'\n'}"
|
|
||||||
local g="${repo_info%$'\n'*}"
|
|
||||||
|
|
||||||
local r=""
|
|
||||||
local b=""
|
|
||||||
local step=""
|
|
||||||
local total=""
|
|
||||||
if [ -d "$g/rebase-merge" ]; then
|
|
||||||
__git_eread "$g/rebase-merge/head-name" b
|
|
||||||
__git_eread "$g/rebase-merge/msgnum" step
|
|
||||||
__git_eread "$g/rebase-merge/end" total
|
|
||||||
if [ -f "$g/rebase-merge/interactive" ]; then
|
|
||||||
r="|REBASE-i"
|
|
||||||
else
|
|
||||||
r="|REBASE-m"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [ -d "$g/rebase-apply" ]; then
|
|
||||||
__git_eread "$g/rebase-apply/next" step
|
|
||||||
__git_eread "$g/rebase-apply/last" total
|
|
||||||
if [ -f "$g/rebase-apply/rebasing" ]; then
|
|
||||||
__git_eread "$g/rebase-apply/head-name" b
|
|
||||||
r="|REBASE"
|
|
||||||
elif [ -f "$g/rebase-apply/applying" ]; then
|
|
||||||
r="|AM"
|
|
||||||
else
|
|
||||||
r="|AM/REBASE"
|
|
||||||
fi
|
|
||||||
elif [ -f "$g/MERGE_HEAD" ]; then
|
|
||||||
r="|MERGING"
|
|
||||||
elif [ -f "$g/CHERRY_PICK_HEAD" ]; then
|
|
||||||
r="|CHERRY-PICKING"
|
|
||||||
elif [ -f "$g/REVERT_HEAD" ]; then
|
|
||||||
r="|REVERTING"
|
|
||||||
elif [ -f "$g/BISECT_LOG" ]; then
|
|
||||||
r="|BISECTING"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$b" ]; then
|
|
||||||
:
|
|
||||||
elif [ -h "$g/HEAD" ]; then
|
|
||||||
# symlink symbolic ref
|
|
||||||
b="$(git symbolic-ref HEAD 2>/dev/null)"
|
|
||||||
else
|
|
||||||
local head=""
|
|
||||||
if ! __git_eread "$g/HEAD" head; then
|
|
||||||
if [ $pcmode = yes ]; then
|
|
||||||
PS1="$ps1pc_start$ps1pc_end"
|
|
||||||
fi
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
# is it a symbolic ref?
|
|
||||||
b="${head#ref: }"
|
|
||||||
if [ "$head" = "$b" ]; then
|
|
||||||
detached=yes
|
|
||||||
b="$(
|
|
||||||
case "${GIT_PS1_DESCRIBE_STYLE-}" in
|
|
||||||
(contains)
|
|
||||||
git describe --contains HEAD ;;
|
|
||||||
(branch)
|
|
||||||
git describe --contains --all HEAD ;;
|
|
||||||
(describe)
|
|
||||||
git describe HEAD ;;
|
|
||||||
(* | default)
|
|
||||||
git describe --tags --exact-match HEAD ;;
|
|
||||||
esac 2>/dev/null)" ||
|
|
||||||
|
|
||||||
b="$short_sha..."
|
|
||||||
b="($b)"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$step" ] && [ -n "$total" ]; then
|
|
||||||
r="$r $step/$total"
|
|
||||||
fi
|
|
||||||
|
|
||||||
local w=""
|
|
||||||
local i=""
|
|
||||||
local s=""
|
|
||||||
local u=""
|
|
||||||
local c=""
|
|
||||||
local p=""
|
|
||||||
|
|
||||||
if [ "true" = "$inside_gitdir" ]; then
|
|
||||||
if [ "true" = "$bare_repo" ]; then
|
|
||||||
c="BARE:"
|
|
||||||
else
|
|
||||||
b="GIT_DIR!"
|
|
||||||
fi
|
|
||||||
elif [ "true" = "$inside_worktree" ]; then
|
|
||||||
if [ -n "${GIT_PS1_SHOWDIRTYSTATE-}" ] &&
|
|
||||||
[ "$(git config --bool bash.showDirtyState)" != "false" ]
|
|
||||||
then
|
|
||||||
git diff --no-ext-diff --quiet --exit-code || w="*"
|
|
||||||
if [ -n "$short_sha" ]; then
|
|
||||||
git diff-index --cached --quiet HEAD -- || i="+"
|
|
||||||
else
|
|
||||||
i="#"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
|
|
||||||
[ -r "$g/refs/stash" ]; then
|
|
||||||
s="$"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "${GIT_PS1_SHOWUNTRACKEDFILES-}" ] &&
|
|
||||||
[ "$(git config --bool bash.showUntrackedFiles)" != "false" ] &&
|
|
||||||
git ls-files --others --exclude-standard --error-unmatch -- '*' >/dev/null 2>/dev/null
|
|
||||||
then
|
|
||||||
u="%${ZSH_VERSION+%}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "${GIT_PS1_SHOWUPSTREAM-}" ]; then
|
|
||||||
__git_ps1_show_upstream
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
local z="${GIT_PS1_STATESEPARATOR-" "}"
|
|
||||||
|
|
||||||
# NO color option unless in PROMPT_COMMAND mode
|
|
||||||
if [ $pcmode = yes ] && [ -n "${GIT_PS1_SHOWCOLORHINTS-}" ]; then
|
|
||||||
__git_ps1_colorize_gitstring
|
|
||||||
fi
|
|
||||||
|
|
||||||
b=${b##refs/heads/}
|
|
||||||
if [ $pcmode = yes ]; then
|
|
||||||
# In pcmode (and only pcmode) the contents of
|
|
||||||
# $gitstring are subject to expansion by the shell.
|
|
||||||
# Avoid putting the raw ref name in the prompt to
|
|
||||||
# protect the user from arbitrary code execution via
|
|
||||||
# specially crafted ref names (e.g., a ref named
|
|
||||||
# '$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)' would execute
|
|
||||||
# 'sudo rm -rf /' when the prompt is drawn). Instead,
|
|
||||||
# put the ref name in a new global variable (in the
|
|
||||||
# __git_ps1_* namespace to avoid colliding with the
|
|
||||||
# user's environment) and reference that variable from
|
|
||||||
# PS1.
|
|
||||||
__git_ps1_branch_name=$b
|
|
||||||
# note that the $ is escaped -- the variable will be
|
|
||||||
# expanded later (when it's time to draw the prompt)
|
|
||||||
b="\${__git_ps1_branch_name}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
local f="$w$i$s$u"
|
|
||||||
local gitstring="$c$b${f:+$z$f}$r$p"
|
|
||||||
|
|
||||||
if [ $pcmode = yes ]; then
|
|
||||||
if [ "${__git_printf_supports_v-}" != yes ]; then
|
|
||||||
gitstring=$(printf -- "$printf_format" "$gitstring")
|
|
||||||
else
|
|
||||||
printf -v gitstring -- "$printf_format" "$gitstring"
|
|
||||||
fi
|
|
||||||
PS1="$ps1pc_start$gitstring$ps1pc_end"
|
|
||||||
else
|
|
||||||
printf -- "$printf_format" "$gitstring"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
ssh/id_rsa
|
|
||||||
ssh/id_rsa.pub
|
|
||||||
ssh/insecure_private_key
|
|
||||||
ssh/id_rsa.ppk
|
|
||||||
414
dev/vagrant/dolibarrdev/puphpet/files/dot/.vimrc
vendored
414
dev/vagrant/dolibarrdev/puphpet/files/dot/.vimrc
vendored
@@ -1,414 +0,0 @@
|
|||||||
set rtp+=$GOROOT/misc/vim
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" Maintainer:
|
|
||||||
" Amir Salihefendic
|
|
||||||
" http://amix.dk - amix@amix.dk
|
|
||||||
"
|
|
||||||
" Version:
|
|
||||||
" 5.0 - 29/05/12 15:43:36
|
|
||||||
"
|
|
||||||
" Blog_post:
|
|
||||||
" http://amix.dk/blog/post/19691#The-ultimate-Vim-configuration-on-Github
|
|
||||||
"
|
|
||||||
" Awesome_version:
|
|
||||||
" Get this config, nice color schemes and lots of plugins!
|
|
||||||
"
|
|
||||||
" Install the awesome version from:
|
|
||||||
"
|
|
||||||
" https://github.com/amix/vimrc
|
|
||||||
"
|
|
||||||
" Syntax_highlighted:
|
|
||||||
" http://amix.dk/vim/vimrc.html
|
|
||||||
"
|
|
||||||
" Raw_version:
|
|
||||||
" http://amix.dk/vim/vimrc.txt
|
|
||||||
"
|
|
||||||
" Sections:
|
|
||||||
" -> General
|
|
||||||
" -> VIM user interface
|
|
||||||
" -> Colors and Fonts
|
|
||||||
" -> Files and backups
|
|
||||||
" -> Text, tab and indent related
|
|
||||||
" -> Visual mode related
|
|
||||||
" -> Moving around, tabs and buffers
|
|
||||||
" -> Status line
|
|
||||||
" -> Editing mappings
|
|
||||||
" -> vimgrep searching and cope displaying
|
|
||||||
" -> Spell checking
|
|
||||||
" -> Misc
|
|
||||||
" -> Helper functions
|
|
||||||
"
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" => General
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" Sets how many lines of history VIM has to remember
|
|
||||||
set history=700
|
|
||||||
|
|
||||||
" Enable filetype plugins
|
|
||||||
filetype plugin on
|
|
||||||
filetype indent on
|
|
||||||
|
|
||||||
" Set to auto read when a file is changed from the outside
|
|
||||||
set autoread
|
|
||||||
|
|
||||||
" With a map leader it's possible to do extra key combinations
|
|
||||||
" like <leader>w saves the current file
|
|
||||||
let mapleader = ","
|
|
||||||
let g:mapleader = ","
|
|
||||||
|
|
||||||
" Fast saving
|
|
||||||
nmap <leader>w :w!<cr>
|
|
||||||
|
|
||||||
" :W sudo saves the file
|
|
||||||
" (useful for handling the permission-denied error)
|
|
||||||
command W w !sudo tee % > /dev/null
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" => VIM user interface
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" Set 7 lines to the cursor - when moving vertically using j/k
|
|
||||||
set so=7
|
|
||||||
|
|
||||||
" Turn on the WiLd menu
|
|
||||||
set wildmenu
|
|
||||||
|
|
||||||
" Ignore compiled files
|
|
||||||
set wildignore=*.o,*~,*.pyc
|
|
||||||
if has("win16") || has("win32")
|
|
||||||
set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*/.DS_Store
|
|
||||||
else
|
|
||||||
set wildignore+=.git\*,.hg\*,.svn\*
|
|
||||||
endif
|
|
||||||
|
|
||||||
"Always show current position
|
|
||||||
set ruler
|
|
||||||
|
|
||||||
" Height of the command bar
|
|
||||||
set cmdheight=2
|
|
||||||
|
|
||||||
" A buffer becomes hidden when it is abandoned
|
|
||||||
set hid
|
|
||||||
|
|
||||||
" Configure backspace so it acts as it should act
|
|
||||||
set backspace=eol,start,indent
|
|
||||||
set whichwrap+=<,>,h,l
|
|
||||||
|
|
||||||
" Ignore case when searching
|
|
||||||
set ignorecase
|
|
||||||
|
|
||||||
" When searching try to be smart about cases
|
|
||||||
set smartcase
|
|
||||||
|
|
||||||
" Highlight search results
|
|
||||||
set hlsearch
|
|
||||||
|
|
||||||
" Makes search act like search in modern browsers
|
|
||||||
set incsearch
|
|
||||||
|
|
||||||
" Don't redraw while executing macros (good performance config)
|
|
||||||
set lazyredraw
|
|
||||||
|
|
||||||
" For regular expressions turn magic on
|
|
||||||
set magic
|
|
||||||
|
|
||||||
" Show matching brackets when text indicator is over them
|
|
||||||
set showmatch
|
|
||||||
" How many tenths of a second to blink when matching brackets
|
|
||||||
set mat=2
|
|
||||||
|
|
||||||
" No annoying sound on errors
|
|
||||||
set noerrorbells
|
|
||||||
set novisualbell
|
|
||||||
set t_vb=
|
|
||||||
set tm=500
|
|
||||||
|
|
||||||
" Add a bit extra margin to the left
|
|
||||||
set foldcolumn=1
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" => Colors and Fonts
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" Enable syntax highlighting
|
|
||||||
syntax enable
|
|
||||||
|
|
||||||
try
|
|
||||||
colorscheme desert
|
|
||||||
catch
|
|
||||||
endtry
|
|
||||||
|
|
||||||
set background=dark
|
|
||||||
|
|
||||||
" Set extra options when running in GUI mode
|
|
||||||
if has("gui_running")
|
|
||||||
set guioptions-=T
|
|
||||||
set guioptions-=e
|
|
||||||
set t_Co=256
|
|
||||||
set guitablabel=%M\ %t
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Set utf8 as standard encoding and en_US as the standard language
|
|
||||||
set encoding=utf8
|
|
||||||
|
|
||||||
" Use Unix as the standard file type
|
|
||||||
set ffs=unix,dos,mac
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" => Files, backups and undo
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" Turn backup off, since most stuff is in SVN, git et.c anyway...
|
|
||||||
set nobackup
|
|
||||||
set nowb
|
|
||||||
set noswapfile
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" => Text, tab and indent related
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" Use spaces instead of tabs
|
|
||||||
set expandtab
|
|
||||||
|
|
||||||
" Be smart when using tabs ;)
|
|
||||||
set smarttab
|
|
||||||
|
|
||||||
" 1 tab == 4 spaces
|
|
||||||
set shiftwidth=4
|
|
||||||
set tabstop=4
|
|
||||||
|
|
||||||
" Linebreak on 500 characters
|
|
||||||
set lbr
|
|
||||||
set tw=500
|
|
||||||
|
|
||||||
set ai "Auto indent
|
|
||||||
set si "Smart indent
|
|
||||||
set wrap "Wrap lines
|
|
||||||
|
|
||||||
|
|
||||||
""""""""""""""""""""""""""""""
|
|
||||||
" => Visual mode related
|
|
||||||
""""""""""""""""""""""""""""""
|
|
||||||
" Visual mode pressing * or # searches for the current selection
|
|
||||||
" Super useful! From an idea by Michael Naumann
|
|
||||||
vnoremap <silent> * :call VisualSelection('f', '')<CR>
|
|
||||||
vnoremap <silent> # :call VisualSelection('b', '')<CR>
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" => Moving around, tabs, windows and buffers
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" Treat long lines as break lines (useful when moving around in them)
|
|
||||||
map j gj
|
|
||||||
map k gk
|
|
||||||
|
|
||||||
" Map <Space> to / (search) and Ctrl-<Space> to ? (backwards search)
|
|
||||||
map <space> /
|
|
||||||
map <c-space> ?
|
|
||||||
|
|
||||||
" Disable highlight when <leader><cr> is pressed
|
|
||||||
map <silent> <leader><cr> :noh<cr>
|
|
||||||
|
|
||||||
" Smart way to move between windows
|
|
||||||
map <C-j> <C-W>j
|
|
||||||
map <C-k> <C-W>k
|
|
||||||
map <C-h> <C-W>h
|
|
||||||
map <C-l> <C-W>l
|
|
||||||
|
|
||||||
" Close the current buffer
|
|
||||||
map <leader>bd :Bclose<cr>
|
|
||||||
|
|
||||||
" Close all the buffers
|
|
||||||
map <leader>ba :1,1000 bd!<cr>
|
|
||||||
|
|
||||||
" Useful mappings for managing tabs
|
|
||||||
map <leader>tn :tabnew<cr>
|
|
||||||
map <leader>to :tabonly<cr>
|
|
||||||
map <leader>tc :tabclose<cr>
|
|
||||||
map <leader>tm :tabmove
|
|
||||||
map <leader>t<leader> :tabnext
|
|
||||||
|
|
||||||
" Opens a new tab with the current buffer's path
|
|
||||||
" Super useful when editing files in the same directory
|
|
||||||
map <leader>te :tabedit <c-r>=expand("%:p:h")<cr>/
|
|
||||||
|
|
||||||
" Switch CWD to the directory of the open buffer
|
|
||||||
map <leader>cd :cd %:p:h<cr>:pwd<cr>
|
|
||||||
|
|
||||||
" Specify the behavior when switching between buffers
|
|
||||||
try
|
|
||||||
set switchbuf=useopen,usetab,newtab
|
|
||||||
set stal=2
|
|
||||||
catch
|
|
||||||
endtry
|
|
||||||
|
|
||||||
" Return to last edit position when opening files (You want this!)
|
|
||||||
autocmd BufReadPost *
|
|
||||||
\ if line("'\"") > 0 && line("'\"") <= line("$") |
|
|
||||||
\ exe "normal! g`\"" |
|
|
||||||
\ endif
|
|
||||||
" Remember info about open buffers on close
|
|
||||||
set viminfo^=%
|
|
||||||
|
|
||||||
|
|
||||||
""""""""""""""""""""""""""""""
|
|
||||||
" => Status line
|
|
||||||
""""""""""""""""""""""""""""""
|
|
||||||
" Always show the status line
|
|
||||||
set laststatus=2
|
|
||||||
|
|
||||||
" Format the status line
|
|
||||||
set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \ Line:\ %l
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" => Editing mappings
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" Remap VIM 0 to first non-blank character
|
|
||||||
map 0 ^
|
|
||||||
|
|
||||||
" Move a line of text using ALT+[jk] or Comamnd+[jk] on mac
|
|
||||||
nmap <M-j> mz:m+<cr>`z
|
|
||||||
nmap <M-k> mz:m-2<cr>`z
|
|
||||||
vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z
|
|
||||||
vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z
|
|
||||||
|
|
||||||
if has("mac") || has("macunix")
|
|
||||||
nmap <D-j> <M-j>
|
|
||||||
nmap <D-k> <M-k>
|
|
||||||
vmap <D-j> <M-j>
|
|
||||||
vmap <D-k> <M-k>
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Delete trailing white space on save, useful for Python and CoffeeScript ;)
|
|
||||||
func! DeleteTrailingWS()
|
|
||||||
exe "normal mz"
|
|
||||||
%s/\s\+$//ge
|
|
||||||
exe "normal `z"
|
|
||||||
endfunc
|
|
||||||
autocmd BufWrite *.py :call DeleteTrailingWS()
|
|
||||||
autocmd BufWrite *.coffee :call DeleteTrailingWS()
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" => vimgrep searching and cope displaying
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" When you press gv you vimgrep after the selected text
|
|
||||||
vnoremap <silent> gv :call VisualSelection('gv', '')<CR>
|
|
||||||
|
|
||||||
" Open vimgrep and put the cursor in the right position
|
|
||||||
map <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left>
|
|
||||||
|
|
||||||
" Vimgreps in the current file
|
|
||||||
map <leader><space> :vimgrep // <C-R>%<C-A><right><right><right><right><right><right><right><right><right>
|
|
||||||
|
|
||||||
" When you press <leader>r you can search and replace the selected text
|
|
||||||
vnoremap <silent> <leader>r :call VisualSelection('replace', '')<CR>
|
|
||||||
|
|
||||||
" Do :help cope if you are unsure what cope is. It's super useful!
|
|
||||||
"
|
|
||||||
" When you search with vimgrep, display your results in cope by doing:
|
|
||||||
" <leader>cc
|
|
||||||
"
|
|
||||||
" To go to the next search result do:
|
|
||||||
" <leader>n
|
|
||||||
"
|
|
||||||
" To go to the previous search results do:
|
|
||||||
" <leader>p
|
|
||||||
"
|
|
||||||
map <leader>cc :botright cope<cr>
|
|
||||||
map <leader>co ggVGy:tabnew<cr>:set syntax=qf<cr>pgg
|
|
||||||
map <leader>n :cn<cr>
|
|
||||||
map <leader>p :cp<cr>
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" => Spell checking
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" Pressing ,ss will toggle and untoggle spell checking
|
|
||||||
map <leader>ss :setlocal spell!<cr>
|
|
||||||
|
|
||||||
" Shortcuts using <leader>
|
|
||||||
map <leader>sn ]s
|
|
||||||
map <leader>sp [s
|
|
||||||
map <leader>sa zg
|
|
||||||
map <leader>s? z=
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" => Misc
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" Remove the Windows ^M - when the encodings gets messed up
|
|
||||||
noremap <Leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm
|
|
||||||
|
|
||||||
" Quickly open a buffer for scripbble
|
|
||||||
map <leader>q :e ~/buffer<cr>
|
|
||||||
|
|
||||||
" Toggle paste mode on and off
|
|
||||||
map <leader>pp :setlocal paste!<cr>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
" => Helper functions
|
|
||||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
||||||
function! CmdLine(str)
|
|
||||||
exe "menu Foo.Bar :" . a:str
|
|
||||||
emenu Foo.Bar
|
|
||||||
unmenu Foo
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! VisualSelection(direction, extra_filter) range
|
|
||||||
let l:saved_reg = @"
|
|
||||||
execute "normal! vgvy"
|
|
||||||
|
|
||||||
let l:pattern = escape(@", '\\/.*$^~[]')
|
|
||||||
let l:pattern = substitute(l:pattern, "\n$", "", "")
|
|
||||||
|
|
||||||
if a:direction == 'b'
|
|
||||||
execute "normal ?" . l:pattern . "^M"
|
|
||||||
elseif a:direction == 'gv'
|
|
||||||
call CmdLine("vimgrep " . '/'. l:pattern . '/' . ' **/*.' . a:extra_filter)
|
|
||||||
elseif a:direction == 'replace'
|
|
||||||
call CmdLine("%s" . '/'. l:pattern . '/')
|
|
||||||
elseif a:direction == 'f'
|
|
||||||
execute "normal /" . l:pattern . "^M"
|
|
||||||
endif
|
|
||||||
|
|
||||||
let @/ = l:pattern
|
|
||||||
let @" = l:saved_reg
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
" Returns true if paste mode is enabled
|
|
||||||
function! HasPaste()
|
|
||||||
if &paste
|
|
||||||
return 'PASTE MODE '
|
|
||||||
en
|
|
||||||
return ''
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Don't close window, when deleting a buffer
|
|
||||||
command! Bclose call <SID>BufcloseCloseIt()
|
|
||||||
function! <SID>BufcloseCloseIt()
|
|
||||||
let l:currentBufNum = bufnr("%")
|
|
||||||
let l:alternateBufNum = bufnr("#")
|
|
||||||
|
|
||||||
if buflisted(l:alternateBufNum)
|
|
||||||
buffer #
|
|
||||||
else
|
|
||||||
bnext
|
|
||||||
endif
|
|
||||||
|
|
||||||
if bufnr("%") == l:currentBufNum
|
|
||||||
new
|
|
||||||
endif
|
|
||||||
|
|
||||||
if buflisted(l:currentBufNum)
|
|
||||||
execute("bdelete! ".l:currentBufNum)
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEogIBAAKCAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzI
|
|
||||||
w+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoP
|
|
||||||
kcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2
|
|
||||||
hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NO
|
|
||||||
Td0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcW
|
|
||||||
yLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQIBIwKCAQEA4iqWPJXtzZA68mKd
|
|
||||||
ELs4jJsdyky+ewdZeNds5tjcnHU5zUYE25K+ffJED9qUWICcLZDc81TGWjHyAqD1
|
|
||||||
Bw7XpgUwFgeUJwUlzQurAv+/ySnxiwuaGJfhFM1CaQHzfXphgVml+fZUvnJUTvzf
|
|
||||||
TK2Lg6EdbUE9TarUlBf/xPfuEhMSlIE5keb/Zz3/LUlRg8yDqz5w+QWVJ4utnKnK
|
|
||||||
iqwZN0mwpwU7YSyJhlT4YV1F3n4YjLswM5wJs2oqm0jssQu/BT0tyEXNDYBLEF4A
|
|
||||||
sClaWuSJ2kjq7KhrrYXzagqhnSei9ODYFShJu8UWVec3Ihb5ZXlzO6vdNQ1J9Xsf
|
|
||||||
4m+2ywKBgQD6qFxx/Rv9CNN96l/4rb14HKirC2o/orApiHmHDsURs5rUKDx0f9iP
|
|
||||||
cXN7S1uePXuJRK/5hsubaOCx3Owd2u9gD6Oq0CsMkE4CUSiJcYrMANtx54cGH7Rk
|
|
||||||
EjFZxK8xAv1ldELEyxrFqkbE4BKd8QOt414qjvTGyAK+OLD3M2QdCQKBgQDtx8pN
|
|
||||||
CAxR7yhHbIWT1AH66+XWN8bXq7l3RO/ukeaci98JfkbkxURZhtxV/HHuvUhnPLdX
|
|
||||||
3TwygPBYZFNo4pzVEhzWoTtnEtrFueKxyc3+LjZpuo+mBlQ6ORtfgkr9gBVphXZG
|
|
||||||
YEzkCD3lVdl8L4cw9BVpKrJCs1c5taGjDgdInQKBgHm/fVvv96bJxc9x1tffXAcj
|
|
||||||
3OVdUN0UgXNCSaf/3A/phbeBQe9xS+3mpc4r6qvx+iy69mNBeNZ0xOitIjpjBo2+
|
|
||||||
dBEjSBwLk5q5tJqHmy/jKMJL4n9ROlx93XS+njxgibTvU6Fp9w+NOFD/HvxB3Tcz
|
|
||||||
6+jJF85D5BNAG3DBMKBjAoGBAOAxZvgsKN+JuENXsST7F89Tck2iTcQIT8g5rwWC
|
|
||||||
P9Vt74yboe2kDT531w8+egz7nAmRBKNM751U/95P9t88EDacDI/Z2OwnuFQHCPDF
|
|
||||||
llYOUI+SpLJ6/vURRbHSnnn8a/XG+nzedGH5JGqEJNQsz+xT2axM0/W/CRknmGaJ
|
|
||||||
kda/AoGANWrLCz708y7VYgAtW2Uf1DPOIYMdvo6fxIB5i9ZfISgcJ/bbCUkFrhoH
|
|
||||||
+vq/5CIWxCPp0f85R4qxxQ5ihxJ0YDQT9Jpx4TMss4PSavPaBH3RXow5Ohe+bYoQ
|
|
||||||
NE5OgEXk2wVfZczCZpigBKbKZHNYcelXtTt/nP3rsCuGcM4h53s=
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
forge "http://forge.puppetlabs.com"
|
|
||||||
mod 'stdlib', :git => 'https://github.com/puphpet/puppetlabs-stdlib.git'
|
|
||||||
mod 'concat', :git => 'https://github.com/puphpet/puppetlabs-concat.git'
|
|
||||||
mod 'apt', :git => 'https://github.com/puphpet/puppetlabs-apt.git'
|
|
||||||
mod 'yum', :git => 'https://github.com/puphpet/puppet-yum.git'
|
|
||||||
mod 'vcsrepo', :git => 'https://github.com/puphpet/puppetlabs-vcsrepo.git'
|
|
||||||
mod 'ntp', :git => 'https://github.com/puphpet/puppetlabs-ntp.git'
|
|
||||||
mod 'firewall', :git => 'https://github.com/puppetlabs/puppetlabs-firewall.git'
|
|
||||||
mod 'git', :git => 'https://github.com/puphpet/puppetlabs-git.git'
|
|
||||||
mod 'mailcatcher', :git => 'https://github.com/puphpet/puppet-mailcatcher.git'
|
|
||||||
mod 'supervisord', :git => 'https://github.com/puphpet/puppet-supervisord.git'
|
|
||||||
mod 'apache', :git => 'https://github.com/puphpet/puppetlabs-apache.git'
|
|
||||||
mod 'nginx', :git => 'https://github.com/puphpet/puppet-nginx.git'
|
|
||||||
mod 'php', :git => 'https://github.com/puphpet/puppet-php.git'
|
|
||||||
mod 'composer', :git => 'https://github.com/puphpet/puppet-composer.git'
|
|
||||||
mod 'puphpet', :git => 'https://github.com/puphpet/puppet-puphpet.git'
|
|
||||||
mod 'puppi', :git => 'https://github.com/puphpet/puppi.git'
|
|
||||||
mod 'drush', :git => 'https://github.com/puphpet/puppet-drush.git'
|
|
||||||
mod 'mysql', :git => 'https://github.com/puphpet/puppetlabs-mysql.git'
|
|
||||||
mod 'postgresql', :git => 'https://github.com/puphpet/puppetlabs-postgresql.git'
|
|
||||||
mod 'mongodb', :git => 'https://github.com/puphpet/puppetlabs-mongodb.git'
|
|
||||||
mod 'redis', :git => 'https://github.com/puphpet/puppet-redis.git'
|
|
||||||
mod 'beanstalkd', :git => 'https://github.com/puphpet/puppet-beanstalkd.git'
|
|
||||||
mod 'rabbitmq', :git => 'https://github.com/puphpet/puppetlabs-rabbitmq.git'
|
|
||||||
mod 'staging', :git => 'https://github.com/puphpet/puppet-staging.git'
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
:backends: yaml
|
|
||||||
:yaml:
|
|
||||||
:datadir: '/vagrant/puphpet'
|
|
||||||
:hierarchy:
|
|
||||||
- config
|
|
||||||
:logger: console
|
|
||||||
1745
dev/vagrant/dolibarrdev/puphpet/puppet/manifest.pp
vendored
1745
dev/vagrant/dolibarrdev/puphpet/puppet/manifest.pp
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,6 +0,0 @@
|
|||||||
fixtures:
|
|
||||||
repositories:
|
|
||||||
stdlib: "git://github.com/puppetlabs/puppetlabs-stdlib.git"
|
|
||||||
concat: "git://github.com/puppetlabs/puppetlabs-concat.git"
|
|
||||||
symlinks:
|
|
||||||
apache: "#{source_dir}"
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
---
|
|
||||||
default_set: 'centos-64-x64'
|
|
||||||
sets:
|
|
||||||
'centos-59-x64':
|
|
||||||
nodes:
|
|
||||||
"main.foo.vm":
|
|
||||||
prefab: 'centos-59-x64'
|
|
||||||
'centos-64-x64':
|
|
||||||
nodes:
|
|
||||||
"main.foo.vm":
|
|
||||||
prefab: 'centos-64-x64'
|
|
||||||
'fedora-18-x64':
|
|
||||||
nodes:
|
|
||||||
"main.foo.vm":
|
|
||||||
prefab: 'fedora-18-x64'
|
|
||||||
'debian-607-x64':
|
|
||||||
nodes:
|
|
||||||
"main.foo.vm":
|
|
||||||
prefab: 'debian-607-x64'
|
|
||||||
'debian-70rc1-x64':
|
|
||||||
nodes:
|
|
||||||
"main.foo.vm":
|
|
||||||
prefab: 'debian-70rc1-x64'
|
|
||||||
'ubuntu-server-10044-x64':
|
|
||||||
nodes:
|
|
||||||
"main.foo.vm":
|
|
||||||
prefab: 'ubuntu-server-10044-x64'
|
|
||||||
'ubuntu-server-12042-x64':
|
|
||||||
nodes:
|
|
||||||
"main.foo.vm":
|
|
||||||
prefab: 'ubuntu-server-12042-x64'
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
--no-single_quote_string_with_variables-check
|
|
||||||
--no-80chars-check
|
|
||||||
--no-class_inherits_from_params_class-check
|
|
||||||
--no-class_parameter_defaults-check
|
|
||||||
--no-documentation-check
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
language: ruby
|
|
||||||
bundler_args: --without development
|
|
||||||
script: "bundle exec rake spec SPEC_OPTS='--format documentation'"
|
|
||||||
rvm:
|
|
||||||
- 1.8.7
|
|
||||||
- 1.9.3
|
|
||||||
- 2.0.0
|
|
||||||
env:
|
|
||||||
matrix:
|
|
||||||
- PUPPET_GEM_VERSION="~> 2.7.0" FACTER_GEM_VERSION="~> 1.6.0"
|
|
||||||
- PUPPET_GEM_VERSION="~> 2.7.0" FACTER_GEM_VERSION="~> 1.7.0"
|
|
||||||
- PUPPET_GEM_VERSION="~> 3.0"
|
|
||||||
- PUPPET_GEM_VERSION="~> 3.5.0" STRICT_VARIABLES="yes"
|
|
||||||
matrix:
|
|
||||||
fast_finish: true
|
|
||||||
exclude:
|
|
||||||
- rvm: 1.9.3
|
|
||||||
env: PUPPET_GEM_VERSION="~> 2.7.0" FACTER_GEM_VERSION="~> 1.6.0"
|
|
||||||
- rvm: 1.9.3
|
|
||||||
env: PUPPET_GEM_VERSION="~> 2.7.0" FACTER_GEM_VERSION="~> 1.7.0"
|
|
||||||
- rvm: 2.0.0
|
|
||||||
env: PUPPET_GEM_VERSION="~> 2.7.0" FACTER_GEM_VERSION="~> 1.6.0"
|
|
||||||
- rvm: 2.0.0
|
|
||||||
env: PUPPET_GEM_VERSION="~> 2.7.0" FACTER_GEM_VERSION="~> 1.7.0"
|
|
||||||
- rvm: 1.8.7
|
|
||||||
env: PUPPET_GEM_VERSION="~> 3.2.0"
|
|
||||||
notifications:
|
|
||||||
email: false
|
|
||||||
@@ -1,246 +0,0 @@
|
|||||||
## 2014-03-04 Supported Release 1.0.1
|
|
||||||
###Summary
|
|
||||||
|
|
||||||
This is a supported release. This release removes a testing symlink that can
|
|
||||||
cause trouble on systems where /var is on a seperate filesystem from the
|
|
||||||
modulepath.
|
|
||||||
|
|
||||||
####Features
|
|
||||||
####Bugfixes
|
|
||||||
####Known Bugs
|
|
||||||
* By default, the version of Apache that ships with Ubuntu 10.04 does not work with `wsgi_import_script`.
|
|
||||||
* SLES is unsupported.
|
|
||||||
|
|
||||||
## 2014-03-04 Supported Release 1.0.0
|
|
||||||
###Summary
|
|
||||||
|
|
||||||
This is a supported release. This release introduces Apache 2.4 support for
|
|
||||||
Debian and RHEL based osfamilies.
|
|
||||||
|
|
||||||
####Features
|
|
||||||
|
|
||||||
- Add apache24 support
|
|
||||||
- Add rewrite_base functionality to rewrites
|
|
||||||
- Updated README documentation
|
|
||||||
- Add WSGIApplicationGroup and WSGIImportScript directives
|
|
||||||
|
|
||||||
####Bugfixes
|
|
||||||
|
|
||||||
- Replace mutating hashes with merge() for Puppet 3.5
|
|
||||||
- Fix WSGI import_script and mod_ssl issues on Lucid
|
|
||||||
|
|
||||||
####Known Bugs
|
|
||||||
* By default, the version of Apache that ships with Ubuntu 10.04 does not work with `wsgi_import_script`.
|
|
||||||
* SLES is unsupported.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2014-01-31 Release 0.11.0
|
|
||||||
### Summary:
|
|
||||||
|
|
||||||
This release adds preliminary support for Windows compatibility and multiple rewrite support.
|
|
||||||
|
|
||||||
#### Backwards-incompatible Changes:
|
|
||||||
|
|
||||||
- The rewrite_rule parameter is deprecated in favor of the new rewrite parameter
|
|
||||||
and will be removed in a future release.
|
|
||||||
|
|
||||||
#### Features:
|
|
||||||
|
|
||||||
- add Match directive
|
|
||||||
- quote paths for windows compatibility
|
|
||||||
- add auth_group_file option to README.md
|
|
||||||
- allow AuthGroupFile directive for vhosts
|
|
||||||
- Support Header directives in vhost context
|
|
||||||
- Don't purge mods-available dir when separate enable dir is used
|
|
||||||
- Fix the servername used in log file name
|
|
||||||
- Added support for mod_include
|
|
||||||
- Remove index parameters.
|
|
||||||
- Support environment variable control for CustomLog
|
|
||||||
- added redirectmatch support
|
|
||||||
- Setting up the ability to do multiple rewrites and conditions.
|
|
||||||
- Convert spec tests to beaker.
|
|
||||||
- Support php_admin_(flag|value)s
|
|
||||||
|
|
||||||
#### Bugfixes:
|
|
||||||
|
|
||||||
- directories are either a Hash or an Array of Hashes
|
|
||||||
- Configure Passenger in separate .conf file on RH so PassengerRoot isn't lost
|
|
||||||
- (docs) Update list of `apache::mod::[name]` classes
|
|
||||||
- (docs) Fix apache::namevirtualhost example call style
|
|
||||||
- Fix $ports_file reference in apache::listen.
|
|
||||||
- Fix $ports_file reference in Namevirtualhost.
|
|
||||||
|
|
||||||
|
|
||||||
## 2013-12-05 Release 0.10.0
|
|
||||||
### Summary:
|
|
||||||
|
|
||||||
This release adds FreeBSD osfamily support and various other improvements to some mods.
|
|
||||||
|
|
||||||
#### Features:
|
|
||||||
|
|
||||||
- Add suPHP_UserGroup directive to directory context
|
|
||||||
- Add support for ScriptAliasMatch directives
|
|
||||||
- Set SSLOptions StdEnvVars in server context
|
|
||||||
- No implicit <Directory> entry for ScriptAlias path
|
|
||||||
- Add support for overriding ErrorDocument
|
|
||||||
- Add support for AliasMatch directives
|
|
||||||
- Disable default "allow from all" in vhost-directories
|
|
||||||
- Add WSGIPythonPath as an optional parameter to mod_wsgi.
|
|
||||||
- Add mod_rpaf support
|
|
||||||
- Add directives: IndexOptions, IndexOrderDefault
|
|
||||||
- Add ability to include additional external configurations in vhost
|
|
||||||
- need to use the provider variable not the provider key value from the directory hash for matches
|
|
||||||
- Support for FreeBSD and few other features
|
|
||||||
- Add new params to apache::mod::mime class
|
|
||||||
- Allow apache::mod to specify module id and path
|
|
||||||
- added $server_root parameter
|
|
||||||
- Add Allow and ExtendedStatus support to mod_status
|
|
||||||
- Expand vhost/_directories.pp directive support
|
|
||||||
- Add initial support for nss module (no directives in vhost template yet)
|
|
||||||
- added peruser and event mpms
|
|
||||||
- added $service_name parameter
|
|
||||||
- add parameter for TraceEnable
|
|
||||||
- Make LogLevel configurable for server and vhost
|
|
||||||
- Add documentation about $ip
|
|
||||||
- Add ability to pass ip (instead of wildcard) in default vhost files
|
|
||||||
|
|
||||||
#### Bugfixes:
|
|
||||||
|
|
||||||
- Don't listen on port or set NameVirtualHost for non-existent vhost
|
|
||||||
- only apply Directory defaults when provider is a directory
|
|
||||||
- Working mod_authnz_ldap support on Debian/Ubuntu
|
|
||||||
|
|
||||||
## 2013-09-06 Release 0.9.0
|
|
||||||
### Summary:
|
|
||||||
This release adds more parameters to the base apache class and apache defined
|
|
||||||
resource to make the module more flexible. It also adds or enhances SuPHP,
|
|
||||||
WSGI, and Passenger mod support, and support for the ITK mpm module.
|
|
||||||
|
|
||||||
#### Backwards-incompatible Changes:
|
|
||||||
- Remove many default mods that are not normally needed.
|
|
||||||
- Remove `rewrite_base` `apache::vhost` parameter; did not work anyway.
|
|
||||||
- Specify dependencies on stdlib >=2.4.0 (this was already the case, but
|
|
||||||
making explicit)
|
|
||||||
- Deprecate `a2mod` in favor of the `apache::mod::*` classes and `apache::mod`
|
|
||||||
defined resource.
|
|
||||||
|
|
||||||
#### Features:
|
|
||||||
- `apache` class
|
|
||||||
- Add `httpd_dir` parameter to change the location of the configuration
|
|
||||||
files.
|
|
||||||
- Add `logroot` parameter to change the logroot
|
|
||||||
- Add `ports_file` parameter to changes the `ports.conf` file location
|
|
||||||
- Add `keepalive` parameter to enable persistent connections
|
|
||||||
- Add `keepalive_timeout` parameter to change the timeout
|
|
||||||
- Update `default_mods` to be able to take an array of mods to enable.
|
|
||||||
- `apache::vhost`
|
|
||||||
- Add `wsgi_daemon_process`, `wsgi_daemon_process_options`,
|
|
||||||
`wsgi_process_group`, and `wsgi_script_aliases` parameters for per-vhost
|
|
||||||
WSGI configuration.
|
|
||||||
- Add `access_log_syslog` parameter to enable syslogging.
|
|
||||||
- Add `error_log_syslog` parameter to enable syslogging of errors.
|
|
||||||
- Add `directories` hash parameter. Please see README for documentation.
|
|
||||||
- Add `sslproxyengine` parameter to enable SSLProxyEngine
|
|
||||||
- Add `suphp_addhandler`, `suphp_engine`, and `suphp_configpath` for
|
|
||||||
configuring SuPHP.
|
|
||||||
- Add `custom_fragment` parameter to allow for arbitrary apache
|
|
||||||
configuration injection. (Feature pull requests are prefered over using
|
|
||||||
this, but it is available in a pinch.)
|
|
||||||
- Add `apache::mod::suphp` class for configuring SuPHP.
|
|
||||||
- Add `apache::mod::itk` class for configuring ITK mpm module.
|
|
||||||
- Update `apache::mod::wsgi` class for global WSGI configuration with
|
|
||||||
`wsgi_socket_prefix` and `wsgi_python_home` parameters.
|
|
||||||
- Add README.passenger.md to document the `apache::mod::passenger` usage.
|
|
||||||
Added `passenger_high_performance`, `passenger_pool_idle_time`,
|
|
||||||
`passenger_max_requests`, `passenger_stat_throttle_rate`, `rack_autodetect`,
|
|
||||||
and `rails_autodetect` parameters.
|
|
||||||
- Separate the httpd service resource into a new `apache::service` class for
|
|
||||||
dependency chaining of `Class['apache'] -> <resource> ~>
|
|
||||||
Class['apache::service']`
|
|
||||||
- Added `apache::mod::proxy_balancer` class for `apache::balancer`
|
|
||||||
|
|
||||||
#### Bugfixes:
|
|
||||||
- Change dependency to puppetlabs-concat
|
|
||||||
- Fix ruby 1.9 bug for `a2mod`
|
|
||||||
- Change servername to be `$::hostname` if there is no `$::fqdn`
|
|
||||||
- Make `/etc/ssl/certs` the default ssl certs directory for RedHat non-5.
|
|
||||||
- Make `php` the default php package for RedHat non-5.
|
|
||||||
- Made `aliases` able to take a single alias hash instead of requiring an
|
|
||||||
array.
|
|
||||||
|
|
||||||
## 2013-07-26 Release 0.8.1
|
|
||||||
#### Bugfixes:
|
|
||||||
- Update `apache::mpm_module` detection for worker/prefork
|
|
||||||
- Update `apache::mod::cgi` and `apache::mod::cgid` detection for
|
|
||||||
worker/prefork
|
|
||||||
|
|
||||||
## 2013-07-16 Release 0.8.0
|
|
||||||
#### Features:
|
|
||||||
- Add `servername` parameter to `apache` class
|
|
||||||
- Add `proxy_set` parameter to `apache::balancer` define
|
|
||||||
|
|
||||||
#### Bugfixes:
|
|
||||||
- Fix ordering for multiple `apache::balancer` clusters
|
|
||||||
- Fix symlinking for sites-available on Debian-based OSs
|
|
||||||
- Fix dependency ordering for recursive confdir management
|
|
||||||
- Fix `apache::mod::*` to notify the service on config change
|
|
||||||
- Documentation updates
|
|
||||||
|
|
||||||
## 2013-07-09 Release 0.7.0
|
|
||||||
#### Changes:
|
|
||||||
- Essentially rewrite the module -- too many to list
|
|
||||||
- `apache::vhost` has many abilities -- see README.md for details
|
|
||||||
- `apache::mod::*` classes provide httpd mod-loading capabilities
|
|
||||||
- `apache` base class is much more configurable
|
|
||||||
|
|
||||||
#### Bugfixes:
|
|
||||||
- Many. And many more to come
|
|
||||||
|
|
||||||
## 2013-03-2 Release 0.6.0
|
|
||||||
- update travis tests (add more supported versions)
|
|
||||||
- add access log_parameter
|
|
||||||
- make purging of vhost dir configurable
|
|
||||||
|
|
||||||
## 2012-08-24 Release 0.4.0
|
|
||||||
#### Changes:
|
|
||||||
- `include apache` is now required when using `apache::mod::*`
|
|
||||||
|
|
||||||
#### Bugfixes:
|
|
||||||
- Fix syntax for validate_re
|
|
||||||
- Fix formatting in vhost template
|
|
||||||
- Fix spec tests such that they pass
|
|
||||||
|
|
||||||
##2012-05-08 Puppet Labs <info@puppetlabs.com> - 0.0.4
|
|
||||||
* e62e362 Fix broken tests for ssl, vhost, vhost::*
|
|
||||||
* 42c6363 Changes to match style guide and pass puppet-lint without error
|
|
||||||
* 42bc8ba changed name => path for file resources in order to name namevar by it's name
|
|
||||||
* 72e13de One end too much
|
|
||||||
* 0739641 style guide fixes: 'true' <> true, $operatingsystem needs to be $::operatingsystem, etc.
|
|
||||||
* 273f94d fix tests
|
|
||||||
* a35ede5 (#13860) Make a2enmod/a2dismo commands optional
|
|
||||||
* 98d774e (#13860) Autorequire Package['httpd']
|
|
||||||
* 05fcec5 (#13073) Add missing puppet spec tests
|
|
||||||
* 541afda (#6899) Remove virtual a2mod definition
|
|
||||||
* 976cb69 (#13072) Move mod python and wsgi package names to params
|
|
||||||
* 323915a (#13060) Add .gitignore to repo
|
|
||||||
* fdf40af (#13060) Remove pkg directory from source tree
|
|
||||||
* fd90015 Add LICENSE file and update the ModuleFile
|
|
||||||
* d3d0d23 Re-enable local php class
|
|
||||||
* d7516c7 Make management of firewalls configurable for vhosts
|
|
||||||
* 60f83ba Explicitly lookup scope of apache_name in templates.
|
|
||||||
* f4d287f (#12581) Add explicit ordering for vdir directory
|
|
||||||
* 88a2ac6 (#11706) puppetlabs-apache depends on puppetlabs-firewall
|
|
||||||
* a776a8b (#11071) Fix to work with latest firewall module
|
|
||||||
* 2b79e8b (#11070) Add support for Scientific Linux
|
|
||||||
* 405b3e9 Fix for a2mod
|
|
||||||
* 57b9048 Commit apache::vhost::redirect Manifest
|
|
||||||
* 8862d01 Commit apache::vhost::proxy Manifest
|
|
||||||
* d5c1fd0 Commit apache::mod::wsgi Manifest
|
|
||||||
* a825ac7 Commit apache::mod::python Manifest
|
|
||||||
* b77062f Commit Templates
|
|
||||||
* 9a51b4a Vhost File Declarations
|
|
||||||
* 6cf7312 Defaults for Parameters
|
|
||||||
* 6a5b11a Ensure installed
|
|
||||||
* f672e46 a2mod fix
|
|
||||||
* 8a56ee9 add pthon support to apache
|
|
||||||
@@ -1,234 +0,0 @@
|
|||||||
Checklist (and a short version for the impatient)
|
|
||||||
=================================================
|
|
||||||
|
|
||||||
* Commits:
|
|
||||||
|
|
||||||
- Make commits of logical units.
|
|
||||||
|
|
||||||
- Check for unnecessary whitespace with "git diff --check" before
|
|
||||||
committing.
|
|
||||||
|
|
||||||
- Commit using Unix line endings (check the settings around "crlf" in
|
|
||||||
git-config(1)).
|
|
||||||
|
|
||||||
- Do not check in commented out code or unneeded files.
|
|
||||||
|
|
||||||
- The first line of the commit message should be a short
|
|
||||||
description (50 characters is the soft limit, excluding ticket
|
|
||||||
number(s)), and should skip the full stop.
|
|
||||||
|
|
||||||
- Associate the issue in the message. The first line should include
|
|
||||||
the issue number in the form "(#XXXX) Rest of message".
|
|
||||||
|
|
||||||
- The body should provide a meaningful commit message, which:
|
|
||||||
|
|
||||||
- uses the imperative, present tense: "change", not "changed" or
|
|
||||||
"changes".
|
|
||||||
|
|
||||||
- includes motivation for the change, and contrasts its
|
|
||||||
implementation with the previous behavior.
|
|
||||||
|
|
||||||
- Make sure that you have tests for the bug you are fixing, or
|
|
||||||
feature you are adding.
|
|
||||||
|
|
||||||
- Make sure the test suites passes after your commit:
|
|
||||||
`bundle exec rspec spec/acceptance` More information on [testing](#Testing) below
|
|
||||||
|
|
||||||
- When introducing a new feature, make sure it is properly
|
|
||||||
documented in the README.md
|
|
||||||
|
|
||||||
* Submission:
|
|
||||||
|
|
||||||
* Pre-requisites:
|
|
||||||
|
|
||||||
- Sign the [Contributor License Agreement](https://cla.puppetlabs.com/)
|
|
||||||
|
|
||||||
- Make sure you have a [GitHub account](https://github.com/join)
|
|
||||||
|
|
||||||
- [Create a ticket](http://projects.puppetlabs.com/projects/modules/issues/new), or [watch the ticket](http://projects.puppetlabs.com/projects/modules/issues) you are patching for.
|
|
||||||
|
|
||||||
* Preferred method:
|
|
||||||
|
|
||||||
- Fork the repository on GitHub.
|
|
||||||
|
|
||||||
- Push your changes to a topic branch in your fork of the
|
|
||||||
repository. (the format ticket/1234-short_description_of_change is
|
|
||||||
usually preferred for this project).
|
|
||||||
|
|
||||||
- Submit a pull request to the repository in the puppetlabs
|
|
||||||
organization.
|
|
||||||
|
|
||||||
The long version
|
|
||||||
================
|
|
||||||
|
|
||||||
1. Make separate commits for logically separate changes.
|
|
||||||
|
|
||||||
Please break your commits down into logically consistent units
|
|
||||||
which include new or changed tests relevant to the rest of the
|
|
||||||
change. The goal of doing this is to make the diff easier to
|
|
||||||
read for whoever is reviewing your code. In general, the easier
|
|
||||||
your diff is to read, the more likely someone will be happy to
|
|
||||||
review it and get it into the code base.
|
|
||||||
|
|
||||||
If you are going to refactor a piece of code, please do so as a
|
|
||||||
separate commit from your feature or bug fix changes.
|
|
||||||
|
|
||||||
We also really appreciate changes that include tests to make
|
|
||||||
sure the bug is not re-introduced, and that the feature is not
|
|
||||||
accidentally broken.
|
|
||||||
|
|
||||||
Describe the technical detail of the change(s). If your
|
|
||||||
description starts to get too long, that is a good sign that you
|
|
||||||
probably need to split up your commit into more finely grained
|
|
||||||
pieces.
|
|
||||||
|
|
||||||
Commits which plainly describe the things which help
|
|
||||||
reviewers check the patch and future developers understand the
|
|
||||||
code are much more likely to be merged in with a minimum of
|
|
||||||
bike-shedding or requested changes. Ideally, the commit message
|
|
||||||
would include information, and be in a form suitable for
|
|
||||||
inclusion in the release notes for the version of Puppet that
|
|
||||||
includes them.
|
|
||||||
|
|
||||||
Please also check that you are not introducing any trailing
|
|
||||||
whitespace or other "whitespace errors". You can do this by
|
|
||||||
running "git diff --check" on your changes before you commit.
|
|
||||||
|
|
||||||
2. Sign the Contributor License Agreement
|
|
||||||
|
|
||||||
Before we can accept your changes, we do need a signed Puppet
|
|
||||||
Labs Contributor License Agreement (CLA).
|
|
||||||
|
|
||||||
You can access the CLA via the [Contributor License Agreement link](https://cla.puppetlabs.com/)
|
|
||||||
|
|
||||||
If you have any questions about the CLA, please feel free to
|
|
||||||
contact Puppet Labs via email at cla-submissions@puppetlabs.com.
|
|
||||||
|
|
||||||
3. Sending your patches
|
|
||||||
|
|
||||||
To submit your changes via a GitHub pull request, we _highly_
|
|
||||||
recommend that you have them on a topic branch, instead of
|
|
||||||
directly on "master".
|
|
||||||
It makes things much easier to keep track of, especially if
|
|
||||||
you decide to work on another thing before your first change
|
|
||||||
is merged in.
|
|
||||||
|
|
||||||
GitHub has some pretty good
|
|
||||||
[general documentation](http://help.github.com/) on using
|
|
||||||
their site. They also have documentation on
|
|
||||||
[creating pull requests](http://help.github.com/send-pull-requests/).
|
|
||||||
|
|
||||||
In general, after pushing your topic branch up to your
|
|
||||||
repository on GitHub, you can switch to the branch in the
|
|
||||||
GitHub UI and click "Pull Request" towards the top of the page
|
|
||||||
in order to open a pull request.
|
|
||||||
|
|
||||||
|
|
||||||
4. Update the related GitHub issue.
|
|
||||||
|
|
||||||
If there is a GitHub issue associated with the change you
|
|
||||||
submitted, then you should update the ticket to include the
|
|
||||||
location of your branch, along with any other commentary you
|
|
||||||
may wish to make.
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
Getting Started
|
|
||||||
---------------
|
|
||||||
|
|
||||||
Our puppet modules provide [`Gemfile`](./Gemfile)s which can tell a ruby
|
|
||||||
package manager such as [bundler](http://bundler.io/) what Ruby packages,
|
|
||||||
or Gems, are required to build, develop, and test this software.
|
|
||||||
|
|
||||||
Please make sure you have [bundler installed](http://bundler.io/#getting-started)
|
|
||||||
on your system, then use it to install all dependencies needed for this project,
|
|
||||||
by running
|
|
||||||
|
|
||||||
```shell
|
|
||||||
% bundle install
|
|
||||||
Fetching gem metadata from https://rubygems.org/........
|
|
||||||
Fetching gem metadata from https://rubygems.org/..
|
|
||||||
Using rake (10.1.0)
|
|
||||||
Using builder (3.2.2)
|
|
||||||
-- 8><-- many more --><8 --
|
|
||||||
Using rspec-system-puppet (2.2.0)
|
|
||||||
Using serverspec (0.6.3)
|
|
||||||
Using rspec-system-serverspec (1.0.0)
|
|
||||||
Using bundler (1.3.5)
|
|
||||||
Your bundle is complete!
|
|
||||||
Use `bundle show [gemname]` to see where a bundled gem is installed.
|
|
||||||
```
|
|
||||||
|
|
||||||
NOTE some systems may require you to run this command with sudo.
|
|
||||||
|
|
||||||
If you already have those gems installed, make sure they are up-to-date:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
% bundle update
|
|
||||||
```
|
|
||||||
|
|
||||||
With all dependencies in place and up-to-date we can now run the tests:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
% rake spec
|
|
||||||
```
|
|
||||||
|
|
||||||
This will execute all the [rspec tests](http://rspec-puppet.com/) tests
|
|
||||||
under [spec/defines](./spec/defines), [spec/classes](./spec/classes),
|
|
||||||
and so on. rspec tests may have the same kind of dependencies as the
|
|
||||||
module they are testing. While the module defines in its [Modulefile](./Modulefile),
|
|
||||||
rspec tests define them in [.fixtures.yml](./fixtures.yml).
|
|
||||||
|
|
||||||
Some puppet modules also come with [beaker](https://github.com/puppetlabs/beaker)
|
|
||||||
tests. These tests spin up a virtual machine under
|
|
||||||
[VirtualBox](https://www.virtualbox.org/)) with, controlling it with
|
|
||||||
[Vagrant](http://www.vagrantup.com/) to actually simulate scripted test
|
|
||||||
scenarios. In order to run these, you will need both of those tools
|
|
||||||
installed on your system.
|
|
||||||
|
|
||||||
You can run them by issuing the following command
|
|
||||||
|
|
||||||
```shell
|
|
||||||
% rake spec_clean
|
|
||||||
% rspec spec/acceptance
|
|
||||||
```
|
|
||||||
|
|
||||||
This will now download a pre-fabricated image configured in the [default node-set](./spec/acceptance/nodesets/default.yml),
|
|
||||||
install puppet, copy this module and install its dependencies per [spec/spec_helper_acceptance.rb](./spec/spec_helper_acceptance.rb)
|
|
||||||
and then run all the tests under [spec/acceptance](./spec/acceptance).
|
|
||||||
|
|
||||||
Writing Tests
|
|
||||||
-------------
|
|
||||||
|
|
||||||
XXX getting started writing tests.
|
|
||||||
|
|
||||||
If you have commit access to the repository
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
Even if you have commit access to the repository, you will still need to
|
|
||||||
go through the process above, and have someone else review and merge
|
|
||||||
in your changes. The rule is that all changes must be reviewed by a
|
|
||||||
developer on the project (that did not write the code) to ensure that
|
|
||||||
all changes go through a code review process.
|
|
||||||
|
|
||||||
Having someone other than the author of the topic branch recorded as
|
|
||||||
performing the merge is the record that they performed the code
|
|
||||||
review.
|
|
||||||
|
|
||||||
|
|
||||||
Additional Resources
|
|
||||||
====================
|
|
||||||
|
|
||||||
* [Getting additional help](http://projects.puppetlabs.com/projects/puppet/wiki/Getting_Help)
|
|
||||||
|
|
||||||
* [Writing tests](http://projects.puppetlabs.com/projects/puppet/wiki/Development_Writing_Tests)
|
|
||||||
|
|
||||||
* [Patchwork](https://patchwork.puppetlabs.com)
|
|
||||||
|
|
||||||
* [Contributor License Agreement](https://projects.puppetlabs.com/contributor_licenses/sign)
|
|
||||||
|
|
||||||
* [General GitHub documentation](http://help.github.com/)
|
|
||||||
|
|
||||||
* [GitHub pull request documentation](http://help.github.com/send-pull-requests/)
|
|
||||||
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
source ENV['GEM_SOURCE'] || "https://rubygems.org"
|
|
||||||
|
|
||||||
group :development, :test do
|
|
||||||
gem 'rake', '10.1.1', :require => false
|
|
||||||
gem 'rspec-puppet', '>=1.0.0', :require => false
|
|
||||||
gem 'puppetlabs_spec_helper', :require => false
|
|
||||||
gem 'serverspec', :require => false
|
|
||||||
gem 'puppet-lint', :require => false
|
|
||||||
gem 'beaker', :require => false
|
|
||||||
gem 'beaker-rspec', :require => false
|
|
||||||
gem 'rspec', '~> 2.11', :require => false
|
|
||||||
end
|
|
||||||
|
|
||||||
if facterversion = ENV['FACTER_GEM_VERSION']
|
|
||||||
gem 'facter', facterversion, :require => false
|
|
||||||
else
|
|
||||||
gem 'facter', :require => false
|
|
||||||
end
|
|
||||||
|
|
||||||
if puppetversion = ENV['PUPPET_GEM_VERSION']
|
|
||||||
gem 'puppet', puppetversion, :require => false
|
|
||||||
else
|
|
||||||
gem 'puppet', :require => false
|
|
||||||
end
|
|
||||||
|
|
||||||
# vim:ft=ruby
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
Copyright (C) 2012 Puppet Labs Inc
|
|
||||||
|
|
||||||
Puppet Labs can be contacted at: info@puppetlabs.com
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
name 'puppetlabs-apache'
|
|
||||||
version '1.0.1'
|
|
||||||
source 'git://github.com/puppetlabs/puppetlabs-apache.git'
|
|
||||||
author 'puppetlabs'
|
|
||||||
license 'Apache 2.0'
|
|
||||||
summary 'Puppet module for Apache'
|
|
||||||
description 'Module for Apache configuration'
|
|
||||||
project_page 'https://github.com/puppetlabs/puppetlabs-apache'
|
|
||||||
|
|
||||||
## Add dependencies, if any:
|
|
||||||
dependency 'puppetlabs/stdlib', '>= 2.4.0'
|
|
||||||
dependency 'puppetlabs/concat', '>= 1.0.0'
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,278 +0,0 @@
|
|||||||
# Passenger
|
|
||||||
|
|
||||||
Just enabling the Passenger module is insufficient for the use of Passenger in
|
|
||||||
production. Passenger should be tunable to better fit the environment in which
|
|
||||||
it is run while being aware of the resources it required.
|
|
||||||
|
|
||||||
To this end the Apache passenger module has been modified to apply system wide
|
|
||||||
Passenger tuning declarations to `passenger.conf`. Declarations specific to a
|
|
||||||
virtual host should be passed through when defining a `vhost` (e.g.
|
|
||||||
`rack_base_uris` parameter on the `apache::vhost` type, check `README.md`).
|
|
||||||
|
|
||||||
Also, general apache module loading parameters can be supplied to enable using
|
|
||||||
a customized passenger module in place of a default-package-based version of
|
|
||||||
the module.
|
|
||||||
|
|
||||||
# Operating system support and Passenger versions
|
|
||||||
|
|
||||||
The most important configuration directive for the Apache Passenger module is
|
|
||||||
`PassengerRoot`. Its value depends on the Passenger version used (2.x, 3.x or
|
|
||||||
4.x) and on the operating system package from which the Apache Passenger module
|
|
||||||
is installed.
|
|
||||||
|
|
||||||
The following table summarises the current *default versions* and
|
|
||||||
`PassengerRoot` settings for the operating systems supported by
|
|
||||||
puppetlabs-apache:
|
|
||||||
|
|
||||||
OS | Passenger version | `PassengerRoot`
|
|
||||||
---------------- | ------------------ | ----------------
|
|
||||||
Debian 7 | 3.0.13 | /usr
|
|
||||||
Ubuntu 12.04 | 2.2.11 | /usr
|
|
||||||
Ubuntu 14.04 | 4.0.37 | /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
|
|
||||||
RHEL with EPEL6 | 3.0.21 | /usr/lib/ruby/gems/1.8/gems/passenger-3.0.21
|
|
||||||
|
|
||||||
As mentioned in `README.md` there are no compatible packages available for
|
|
||||||
RHEL/CentOS 5 or RHEL/CentOS 7.
|
|
||||||
|
|
||||||
## Configuration files and locations on RHEL/CentOS
|
|
||||||
|
|
||||||
Notice two important points:
|
|
||||||
|
|
||||||
1. The Passenger version packaged in the EPEL repositories may change over time.
|
|
||||||
2. The value of `PassengerRoot` depends on the Passenger version installed.
|
|
||||||
|
|
||||||
To prevent the puppetlabs-apache module from having to keep up with these
|
|
||||||
package versions the Passenger configuration files installed by the
|
|
||||||
packages are left untouched by this module. All configuration is placed in an
|
|
||||||
extra configuration file managed by puppetlabs-apache.
|
|
||||||
|
|
||||||
This means '/etc/httpd/conf.d/passenger.conf' is installed by the
|
|
||||||
`mod_passenger` package and contains correct values for `PassengerRoot` and
|
|
||||||
`PassengerRuby`. Puppet will ignore this file. Additional configuration
|
|
||||||
directives as described in the remainder of this document are placed in
|
|
||||||
'/etc/httpd/conf.d/passenger_extra.conf', managed by Puppet.
|
|
||||||
|
|
||||||
This pertains *only* to RHEL/CentOS, *not* Debian and Ubuntu.
|
|
||||||
|
|
||||||
## Third-party and custom Passenger packages and versions
|
|
||||||
|
|
||||||
The Passenger version distributed by the default OS packages may be too old to
|
|
||||||
be useful. Newer versions may be installed via Gems, from source or from
|
|
||||||
third-party OS packages.
|
|
||||||
|
|
||||||
Most notably the Passenger developers officially provide Debian packages for a
|
|
||||||
variety of Debian and Ubuntu releases in the [Passenger APT
|
|
||||||
repository](https://oss-binaries.phusionpassenger.com/apt/passenger). Read more
|
|
||||||
about [installing these packages in the offical user
|
|
||||||
guide](http://www.modrails.com/documentation/Users%20guide%20Apache.html#install_on_debian_ubuntu).
|
|
||||||
|
|
||||||
If you install custom Passenger packages and newer version make sure to set the
|
|
||||||
directives `PassengerRoot`, `PassengerRuby` and/or `PassengerDefaultRuby`
|
|
||||||
correctly, or Passenger and Apache will fail to function properly.
|
|
||||||
|
|
||||||
For Passenger 4.x packages on Debian and Ubuntu the `PassengerRoot` directive
|
|
||||||
should almost universally be set to
|
|
||||||
`/usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini`.
|
|
||||||
|
|
||||||
# Parameters for `apache::mod::passenger`
|
|
||||||
|
|
||||||
The following class parameters configure Passenger in a global, server-wide
|
|
||||||
context.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
```puppet
|
|
||||||
class { 'apache::mod::passenger':
|
|
||||||
passenger_root => '/usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini',
|
|
||||||
passenger_default_ruby => '/usr/bin/ruby1.9.3',
|
|
||||||
passenger_high_performance => 'on',
|
|
||||||
rails_autodetect => 'off',
|
|
||||||
mod_lib_path => '/usr/lib/apache2/custom_modules',
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
The general form is using the all lower-case version of the configuration
|
|
||||||
directive, with underscores instead of CamelCase.
|
|
||||||
|
|
||||||
## Parameters used with passenger.conf
|
|
||||||
|
|
||||||
If you pass a default value to `apache::mod::passenger` it will be ignored and
|
|
||||||
not passed through to the configuration file.
|
|
||||||
|
|
||||||
### passenger_root
|
|
||||||
|
|
||||||
The location to the Phusion Passenger root directory. This configuration option
|
|
||||||
is essential to Phusion Passenger, and allows Phusion Passenger to locate its
|
|
||||||
own data files.
|
|
||||||
|
|
||||||
The default depends on the Passenger version and the means of installation. See
|
|
||||||
the above section on operating system support, versions and packages for more
|
|
||||||
information.
|
|
||||||
|
|
||||||
http://www.modrails.com/documentation/Users%20guide%20Apache.html#_passengerroot_lt_directory_gt
|
|
||||||
|
|
||||||
### passenger_default_ruby
|
|
||||||
|
|
||||||
This option specifies the default Ruby interpreter to use for web apps as well
|
|
||||||
as for all sorts of internal Phusion Passenger helper scripts, e.g. the one
|
|
||||||
used by PassengerPreStart.
|
|
||||||
|
|
||||||
This directive was introduced in Passenger 4.0.0 and will not work in versions
|
|
||||||
< 4.x. Do not set this parameter if your Passenger version is older than 4.0.0.
|
|
||||||
|
|
||||||
Defaults to `undef` for all operating systems except Ubuntu 14.04, where it is
|
|
||||||
set to '/usr/bin/ruby'.
|
|
||||||
|
|
||||||
http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerDefaultRuby
|
|
||||||
|
|
||||||
### passenger_ruby
|
|
||||||
|
|
||||||
This directive is the same as `passenger_default_ruby` for Passenger versions
|
|
||||||
< 4.x and must be used instead of `passenger_default_ruby` for such versions.
|
|
||||||
|
|
||||||
It makes no sense to set `PassengerRuby` for Passenger >= 4.x. That
|
|
||||||
directive should only be used to override the value of `PassengerDefaultRuby`
|
|
||||||
on a non-global context, i.e. in `<VirtualHost>`, `<Directory>`, `<Location>`
|
|
||||||
and so on.
|
|
||||||
|
|
||||||
Defaults to `/usr/bin/ruby` for all supported operating systems except Ubuntu
|
|
||||||
14.04, where it is set to `undef`.
|
|
||||||
|
|
||||||
http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerRuby
|
|
||||||
|
|
||||||
### passenger_high_performance
|
|
||||||
|
|
||||||
Default is `off`. When turned `on` Passenger runs in a higher performance mode
|
|
||||||
that can be less compatible with other Apache modules.
|
|
||||||
|
|
||||||
http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerHighPerformance
|
|
||||||
|
|
||||||
### passenger_max_pool_size
|
|
||||||
|
|
||||||
Sets the maximum number of Passenger application processes that may
|
|
||||||
simultaneously run. The default value is 6.
|
|
||||||
|
|
||||||
http://www.modrails.com/documentation/Users%20guide%20Apache.html#_passengermaxpoolsize_lt_integer_gt
|
|
||||||
|
|
||||||
### passenger_pool_idle_time
|
|
||||||
|
|
||||||
The maximum number of seconds a Passenger Application process will be allowed
|
|
||||||
to remain idle before being shut down. The default value is 300.
|
|
||||||
|
|
||||||
http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerPoolIdleTime
|
|
||||||
|
|
||||||
### passenger_max_requests
|
|
||||||
|
|
||||||
The maximum number of request a Passenger application will process before being
|
|
||||||
restarted. The default value is 0, which indicates that a process will only
|
|
||||||
shut down if the Pool Idle Time (see above) expires.
|
|
||||||
|
|
||||||
http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMaxRequests
|
|
||||||
|
|
||||||
### passenger_stat_throttle_rate
|
|
||||||
|
|
||||||
Sets how often Passenger performs file system checks, at most once every _x_
|
|
||||||
seconds. Default is 0, which means the checks are performed with every request.
|
|
||||||
|
|
||||||
http://www.modrails.com/documentation/Users%20guide%20Apache.html#_passengerstatthrottlerate_lt_integer_gt
|
|
||||||
|
|
||||||
### rack_autodetect
|
|
||||||
|
|
||||||
Should Passenger automatically detect if the document root of a virtual host is
|
|
||||||
a Rack application. Not set by default (`undef`). Note that this directive has
|
|
||||||
been removed in Passenger 4.0.0 and `PassengerEnabled` should be used instead.
|
|
||||||
Use this directive only on Passenger < 4.x.
|
|
||||||
|
|
||||||
http://www.modrails.com/documentation/Users%20guide%20Apache.html#_rackautodetect_lt_on_off_gt
|
|
||||||
|
|
||||||
### rails_autodetect
|
|
||||||
|
|
||||||
Should Passenger automatically detect if the document root of a virtual host is
|
|
||||||
a Rails application. Not set by default (`undef`). Note that this directive
|
|
||||||
has been removed in Passenger 4.0.0 and `PassengerEnabled` should be used
|
|
||||||
instead. Use this directive only on Passenger < 4.x.
|
|
||||||
|
|
||||||
http://www.modrails.com/documentation/Users%20guide%20Apache.html#_railsautodetect_lt_on_off_gt
|
|
||||||
|
|
||||||
### passenger_use_global_queue
|
|
||||||
|
|
||||||
Allows toggling of PassengerUseGlobalQueue. NOTE: PassengerUseGlobalQueue is
|
|
||||||
the default in Passenger 4.x and the versions >= 4.x have disabled this
|
|
||||||
configuration option altogether. Use with caution.
|
|
||||||
|
|
||||||
## Parameters used to load the module
|
|
||||||
|
|
||||||
Unlike the tuning parameters specified above, the following parameters are only
|
|
||||||
used when loading customized passenger modules.
|
|
||||||
|
|
||||||
### mod_package
|
|
||||||
|
|
||||||
Allows overriding the default package name used for the passenger module
|
|
||||||
package.
|
|
||||||
|
|
||||||
### mod_package_ensure
|
|
||||||
|
|
||||||
Allows overriding the package installation setting used by puppet when
|
|
||||||
installing the passenger module. The default is 'present'.
|
|
||||||
|
|
||||||
### mod_id
|
|
||||||
|
|
||||||
Allows overriding the value used by apache to identify the passenger module.
|
|
||||||
The default is 'passenger_module'.
|
|
||||||
|
|
||||||
### mod_lib_path
|
|
||||||
|
|
||||||
Allows overriding the directory path used by apache when loading the passenger
|
|
||||||
module. The default is the value of `$apache::params::lib_path`.
|
|
||||||
|
|
||||||
### mod_lib
|
|
||||||
|
|
||||||
Allows overriding the library file name used by apache when loading the
|
|
||||||
passenger module. The default is 'mod_passenger.so'.
|
|
||||||
|
|
||||||
### mod_path
|
|
||||||
|
|
||||||
Allows overriding the full path to the library file used by apache when loading
|
|
||||||
the passenger module. The default is the concatenation of the `mod_lib_path`
|
|
||||||
and `mod_lib` parameters.
|
|
||||||
|
|
||||||
# Dependencies
|
|
||||||
|
|
||||||
RedHat-based systems will need to configure additional package repositories in
|
|
||||||
order to install Passenger, specifically:
|
|
||||||
|
|
||||||
* [Extra Packages for Enterprise Linux](https://fedoraproject.org/wiki/EPEL)
|
|
||||||
* [Phusion Passenger](http://passenger.stealthymonkeys.com)
|
|
||||||
|
|
||||||
Configuration of these repositories is beyond the scope of this module and is
|
|
||||||
left to the user.
|
|
||||||
|
|
||||||
# Attribution
|
|
||||||
|
|
||||||
The Passenger tuning parameters for the `apache::mod::passenger` Puppet class
|
|
||||||
was modified by Aaron Hicks (hicksa@landcareresearch.co.nz) for work on the
|
|
||||||
NeSI Project and the Tuakiri New Zealand Access Federation as a fork from the
|
|
||||||
PuppetLabs Apache module on GitHub.
|
|
||||||
|
|
||||||
* https://github.com/puppetlabs/puppetlabs-apache
|
|
||||||
* https://github.com/nesi/puppetlabs-apache
|
|
||||||
* http://www.nesi.org.nz//
|
|
||||||
* https://tuakiri.ac.nz/confluence/display/Tuakiri/Home
|
|
||||||
|
|
||||||
# Copyright and License
|
|
||||||
|
|
||||||
Copyright (C) 2012 [Puppet Labs](https://www.puppetlabs.com/) Inc
|
|
||||||
|
|
||||||
Puppet Labs can be contacted at: info@puppetlabs.com
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
require 'puppetlabs_spec_helper/rake_tasks'
|
|
||||||
require 'puppet-lint/tasks/puppet-lint'
|
|
||||||
|
|
||||||
PuppetLint.configuration.fail_on_warnings
|
|
||||||
PuppetLint.configuration.send('disable_80chars')
|
|
||||||
PuppetLint.configuration.send('disable_class_inherits_from_params_class')
|
|
||||||
PuppetLint.configuration.send('disable_class_parameter_defaults')
|
|
||||||
PuppetLint.configuration.send('disable_documentation')
|
|
||||||
PuppetLint.configuration.send('disable_single_quote_string_with_variables')
|
|
||||||
PuppetLint.configuration.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp"]
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
# Configuration file for the httpd service.
|
|
||||||
|
|
||||||
#
|
|
||||||
# The default processing model (MPM) is the process-based
|
|
||||||
# 'prefork' model. A thread-based model, 'worker', is also
|
|
||||||
# available, but does not work with some modules (such as PHP).
|
|
||||||
# The service must be stopped before changing this variable.
|
|
||||||
#
|
|
||||||
#HTTPD=/usr/sbin/httpd.worker
|
|
||||||
|
|
||||||
#
|
|
||||||
# To pass additional options (for instance, -D definitions) to the
|
|
||||||
# httpd binary at startup, set OPTIONS here.
|
|
||||||
#
|
|
||||||
#OPTIONS=
|
|
||||||
#OPTIONS=-DDOWN
|
|
||||||
|
|
||||||
#
|
|
||||||
# By default, the httpd process is started in the C locale; to
|
|
||||||
# change the locale in which the server runs, the HTTPD_LANG
|
|
||||||
# variable can be set.
|
|
||||||
#
|
|
||||||
#HTTPD_LANG=C
|
|
||||||
export SHORTHOST=`hostname -s`
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
class Puppet::Provider::A2mod < Puppet::Provider
|
|
||||||
def self.prefetch(mods)
|
|
||||||
instances.each do |prov|
|
|
||||||
if mod = mods[prov.name]
|
|
||||||
mod.provider = prov
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def flush
|
|
||||||
@property_hash.clear
|
|
||||||
end
|
|
||||||
|
|
||||||
def properties
|
|
||||||
if @property_hash.empty?
|
|
||||||
@property_hash = query || {:ensure => :absent}
|
|
||||||
@property_hash[:ensure] = :absent if @property_hash.empty?
|
|
||||||
end
|
|
||||||
@property_hash.dup
|
|
||||||
end
|
|
||||||
|
|
||||||
def query
|
|
||||||
self.class.instances.each do |mod|
|
|
||||||
if mod.name == self.name or mod.name.downcase == self.name
|
|
||||||
return mod.properties
|
|
||||||
end
|
|
||||||
end
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
|
|
||||||
def exists?
|
|
||||||
properties[:ensure] != :absent
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
require 'puppet/provider/a2mod'
|
|
||||||
|
|
||||||
Puppet::Type.type(:a2mod).provide(:a2mod, :parent => Puppet::Provider::A2mod) do
|
|
||||||
desc "Manage Apache 2 modules on Debian and Ubuntu"
|
|
||||||
|
|
||||||
optional_commands :encmd => "a2enmod"
|
|
||||||
optional_commands :discmd => "a2dismod"
|
|
||||||
commands :apache2ctl => "apache2ctl"
|
|
||||||
|
|
||||||
confine :osfamily => :debian
|
|
||||||
defaultfor :operatingsystem => [:debian, :ubuntu]
|
|
||||||
|
|
||||||
def self.instances
|
|
||||||
modules = apache2ctl("-M").lines.collect { |line|
|
|
||||||
m = line.match(/(\w+)_module \(shared\)$/)
|
|
||||||
m[1] if m
|
|
||||||
}.compact
|
|
||||||
|
|
||||||
modules.map do |mod|
|
|
||||||
new(
|
|
||||||
:name => mod,
|
|
||||||
:ensure => :present,
|
|
||||||
:provider => :a2mod
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def create
|
|
||||||
encmd resource[:name]
|
|
||||||
end
|
|
||||||
|
|
||||||
def destroy
|
|
||||||
discmd resource[:name]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
require 'puppet/util/filetype'
|
|
||||||
Puppet::Type.type(:a2mod).provide(:gentoo, :parent => Puppet::Provider) do
|
|
||||||
desc "Manage Apache 2 modules on Gentoo"
|
|
||||||
|
|
||||||
confine :operatingsystem => :gentoo
|
|
||||||
defaultfor :operatingsystem => :gentoo
|
|
||||||
|
|
||||||
attr_accessor :property_hash
|
|
||||||
|
|
||||||
def create
|
|
||||||
@property_hash[:ensure] = :present
|
|
||||||
end
|
|
||||||
|
|
||||||
def exists?
|
|
||||||
(!(@property_hash[:ensure].nil?) and @property_hash[:ensure] == :present)
|
|
||||||
end
|
|
||||||
|
|
||||||
def destroy
|
|
||||||
@property_hash[:ensure] = :absent
|
|
||||||
end
|
|
||||||
|
|
||||||
def flush
|
|
||||||
self.class.flush
|
|
||||||
end
|
|
||||||
|
|
||||||
class << self
|
|
||||||
attr_reader :conf_file
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.clear
|
|
||||||
@mod_resources = []
|
|
||||||
@modules = []
|
|
||||||
@other_args = ""
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.initvars
|
|
||||||
@conf_file = "/etc/conf.d/apache2"
|
|
||||||
@filetype = Puppet::Util::FileType.filetype(:flat).new(conf_file)
|
|
||||||
@mod_resources = []
|
|
||||||
@modules = []
|
|
||||||
@other_args = ""
|
|
||||||
end
|
|
||||||
|
|
||||||
self.initvars
|
|
||||||
|
|
||||||
# Retrieve an array of all existing modules
|
|
||||||
def self.modules
|
|
||||||
if @modules.length <= 0
|
|
||||||
# Locate the APACHE_OPTS variable
|
|
||||||
records = filetype.read.split(/\n/)
|
|
||||||
apache2_opts = records.grep(/^\s*APACHE2_OPTS=/).first
|
|
||||||
|
|
||||||
# Extract all defines
|
|
||||||
while apache2_opts.sub!(/-D\s+(\w+)/, '')
|
|
||||||
@modules << $1.downcase
|
|
||||||
end
|
|
||||||
|
|
||||||
# Hang on to any remaining options.
|
|
||||||
if apache2_opts.match(/APACHE2_OPTS="(.+)"/)
|
|
||||||
@other_args = $1.strip
|
|
||||||
end
|
|
||||||
|
|
||||||
@modules.sort!.uniq!
|
|
||||||
end
|
|
||||||
|
|
||||||
@modules
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.prefetch(resources={})
|
|
||||||
# Match resources with existing providers
|
|
||||||
instances.each do |provider|
|
|
||||||
if resource = resources[provider.name]
|
|
||||||
resource.provider = provider
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# Store all resources using this provider for flushing
|
|
||||||
resources.each do |name, resource|
|
|
||||||
@mod_resources << resource
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.instances
|
|
||||||
modules.map {|mod| new(:name => mod, :provider => :gentoo, :ensure => :present)}
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.flush
|
|
||||||
|
|
||||||
mod_list = modules
|
|
||||||
mods_to_remove = @mod_resources.select {|mod| mod.should(:ensure) == :absent}.map {|mod| mod[:name]}
|
|
||||||
mods_to_add = @mod_resources.select {|mod| mod.should(:ensure) == :present}.map {|mod| mod[:name]}
|
|
||||||
|
|
||||||
mod_list -= mods_to_remove
|
|
||||||
mod_list += mods_to_add
|
|
||||||
mod_list.sort!.uniq!
|
|
||||||
|
|
||||||
if modules != mod_list
|
|
||||||
opts = @other_args + " "
|
|
||||||
opts << mod_list.map {|mod| "-D #{mod.upcase}"}.join(" ")
|
|
||||||
opts.strip!
|
|
||||||
opts.gsub!(/\s+/, ' ')
|
|
||||||
|
|
||||||
apache2_opts = %Q{APACHE2_OPTS="#{opts}"}
|
|
||||||
Puppet.debug("Writing back \"#{apache2_opts}\" to #{conf_file}")
|
|
||||||
|
|
||||||
records = filetype.read.split(/\n/)
|
|
||||||
|
|
||||||
opts_index = records.find_index {|i| i.match(/^\s*APACHE2_OPTS/)}
|
|
||||||
records[opts_index] = apache2_opts
|
|
||||||
|
|
||||||
filetype.backup
|
|
||||||
filetype.write(records.join("\n"))
|
|
||||||
@modules = mod_list
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
Puppet::Type.type(:a2mod).provide :modfix do
|
|
||||||
desc "Dummy provider for A2mod.
|
|
||||||
|
|
||||||
Fake nil resources when there is no crontab binary available. Allows
|
|
||||||
puppetd to run on a bootstrapped machine before a Cron package has been
|
|
||||||
installed. Workaround for: http://projects.puppetlabs.com/issues/2384
|
|
||||||
"
|
|
||||||
|
|
||||||
def self.instances
|
|
||||||
[]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
require 'puppet/provider/a2mod'
|
|
||||||
|
|
||||||
Puppet::Type.type(:a2mod).provide(:redhat, :parent => Puppet::Provider::A2mod) do
|
|
||||||
desc "Manage Apache 2 modules on RedHat family OSs"
|
|
||||||
|
|
||||||
commands :apachectl => "apachectl"
|
|
||||||
|
|
||||||
confine :osfamily => :redhat
|
|
||||||
defaultfor :osfamily => :redhat
|
|
||||||
|
|
||||||
require 'pathname'
|
|
||||||
|
|
||||||
# modpath: Path to default apache modules directory /etc/httpd/mod.d
|
|
||||||
# modfile: Path to module load configuration file; Default: resides under modpath directory
|
|
||||||
# libfile: Path to actual apache module library. Added in modfile LoadModule
|
|
||||||
|
|
||||||
attr_accessor :modfile, :libfile
|
|
||||||
class << self
|
|
||||||
attr_accessor :modpath
|
|
||||||
def preinit
|
|
||||||
@modpath = "/etc/httpd/mod.d"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
self.preinit
|
|
||||||
|
|
||||||
def create
|
|
||||||
File.open(modfile,'w') do |f|
|
|
||||||
f.puts "LoadModule #{resource[:identifier]} #{libfile}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def destroy
|
|
||||||
File.delete(modfile)
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.instances
|
|
||||||
modules = apachectl("-M").lines.collect { |line|
|
|
||||||
m = line.match(/(\w+)_module \(shared\)$/)
|
|
||||||
m[1] if m
|
|
||||||
}.compact
|
|
||||||
|
|
||||||
modules.map do |mod|
|
|
||||||
new(
|
|
||||||
:name => mod,
|
|
||||||
:ensure => :present,
|
|
||||||
:provider => :redhat
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def modfile
|
|
||||||
modfile ||= "#{self.class.modpath}/#{resource[:name]}.load"
|
|
||||||
end
|
|
||||||
|
|
||||||
# Set libfile path: If absolute path is passed, then maintain it. Else, make it default from 'modules' dir.
|
|
||||||
def libfile
|
|
||||||
libfile = Pathname.new(resource[:lib]).absolute? ? resource[:lib] : "modules/#{resource[:lib]}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
Puppet::Type.newtype(:a2mod) do
|
|
||||||
@doc = "Manage Apache 2 modules"
|
|
||||||
|
|
||||||
ensurable
|
|
||||||
|
|
||||||
newparam(:name) do
|
|
||||||
Puppet.warning "The a2mod provider is deprecated, please use apache::mod instead"
|
|
||||||
desc "The name of the module to be managed"
|
|
||||||
|
|
||||||
isnamevar
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
newparam(:lib) do
|
|
||||||
desc "The name of the .so library to be loaded"
|
|
||||||
|
|
||||||
defaultto { "mod_#{@resource[:name]}.so" }
|
|
||||||
end
|
|
||||||
|
|
||||||
newparam(:identifier) do
|
|
||||||
desc "Module identifier string used by LoadModule. Default: module-name_module"
|
|
||||||
|
|
||||||
# http://httpd.apache.org/docs/2.2/mod/module-dict.html#ModuleIdentifier
|
|
||||||
|
|
||||||
defaultto { "#{resource[:name]}_module" }
|
|
||||||
end
|
|
||||||
|
|
||||||
autorequire(:package) { catalog.resource(:package, 'httpd')}
|
|
||||||
|
|
||||||
end
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
# == Define Resource Type: apache::balancer
|
|
||||||
#
|
|
||||||
# This type will create an apache balancer cluster file inside the conf.d
|
|
||||||
# directory. Each balancer cluster needs one or more balancer members (that can
|
|
||||||
# be declared with the apache::balancermember defined resource type). Using
|
|
||||||
# storeconfigs, you can export the apache::balancermember resources on all
|
|
||||||
# balancer members, and then collect them on a single apache load balancer
|
|
||||||
# server.
|
|
||||||
#
|
|
||||||
# === Requirement/Dependencies:
|
|
||||||
#
|
|
||||||
# Currently requires the puppetlabs/concat module on the Puppet Forge and uses
|
|
||||||
# storeconfigs on the Puppet Master to export/collect resources from all
|
|
||||||
# balancer members.
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*name*]
|
|
||||||
# The namevar of the defined resource type is the balancer clusters name.
|
|
||||||
# This name is also used in the name of the conf.d file
|
|
||||||
#
|
|
||||||
# [*proxy_set*]
|
|
||||||
# Hash, default empty. If given, each key-value pair will be used as a ProxySet
|
|
||||||
# line in the configuration.
|
|
||||||
#
|
|
||||||
# [*collect_exported*]
|
|
||||||
# Boolean, default 'true'. True means 'collect exported @@balancermember
|
|
||||||
# resources' (for the case when every balancermember node exports itself),
|
|
||||||
# false means 'rely on the existing declared balancermember resources' (for the
|
|
||||||
# case when you know the full set of balancermembers in advance and use
|
|
||||||
# apache::balancermember with array arguments, which allows you to deploy
|
|
||||||
# everything in 1 run)
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# === Examples
|
|
||||||
#
|
|
||||||
# Exporting the resource for a balancer member:
|
|
||||||
#
|
|
||||||
# apache::balancer { 'puppet00': }
|
|
||||||
#
|
|
||||||
define apache::balancer (
|
|
||||||
$proxy_set = {},
|
|
||||||
$collect_exported = true,
|
|
||||||
) {
|
|
||||||
include concat::setup
|
|
||||||
include ::apache::mod::proxy_balancer
|
|
||||||
|
|
||||||
$target = "${::apache::params::confd_dir}/balancer_${name}.conf"
|
|
||||||
|
|
||||||
concat { $target:
|
|
||||||
owner => '0',
|
|
||||||
group => '0',
|
|
||||||
mode => '0644',
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
|
|
||||||
concat::fragment { "00-${name}-header":
|
|
||||||
ensure => present,
|
|
||||||
target => $target,
|
|
||||||
order => '01',
|
|
||||||
content => "<Proxy balancer://${name}>\n",
|
|
||||||
}
|
|
||||||
|
|
||||||
if $collect_exported {
|
|
||||||
Apache::Balancermember <<| balancer_cluster == $name |>>
|
|
||||||
}
|
|
||||||
# else: the resources have been created and they introduced their
|
|
||||||
# concat fragments. We don't have to do anything about them.
|
|
||||||
|
|
||||||
concat::fragment { "01-${name}-proxyset":
|
|
||||||
ensure => present,
|
|
||||||
target => $target,
|
|
||||||
order => '19',
|
|
||||||
content => inline_template("<% proxy_set.keys.sort.each do |key| %> Proxyset <%= key %>=<%= proxy_set[key] %>\n<% end %>"),
|
|
||||||
}
|
|
||||||
|
|
||||||
concat::fragment { "01-${name}-footer":
|
|
||||||
ensure => present,
|
|
||||||
target => $target,
|
|
||||||
order => '20',
|
|
||||||
content => "</Proxy>\n",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
# == Define Resource Type: apache::balancermember
|
|
||||||
#
|
|
||||||
# This type will setup a balancer member inside a listening service
|
|
||||||
# configuration block in /etc/apache/apache.cfg on the load balancer.
|
|
||||||
# currently it only has the ability to specify the instance name, url and an
|
|
||||||
# array of options. More features can be added as needed. The best way to
|
|
||||||
# implement this is to export this resource for all apache balancer member
|
|
||||||
# servers, and then collect them on the main apache load balancer.
|
|
||||||
#
|
|
||||||
# === Requirement/Dependencies:
|
|
||||||
#
|
|
||||||
# Currently requires the puppetlabs/concat module on the Puppet Forge and
|
|
||||||
# uses storeconfigs on the Puppet Master to export/collect resources
|
|
||||||
# from all balancer members.
|
|
||||||
#
|
|
||||||
# === Parameters
|
|
||||||
#
|
|
||||||
# [*name*]
|
|
||||||
# The title of the resource is arbitrary and only utilized in the concat
|
|
||||||
# fragment name.
|
|
||||||
#
|
|
||||||
# [*balancer_cluster*]
|
|
||||||
# The apache service's instance name (or, the title of the apache::balancer
|
|
||||||
# resource). This must match up with a declared apache::balancer resource.
|
|
||||||
#
|
|
||||||
# [*url*]
|
|
||||||
# The url used to contact the balancer member server.
|
|
||||||
#
|
|
||||||
# [*options*]
|
|
||||||
# An array of options to be specified after the url.
|
|
||||||
#
|
|
||||||
# === Examples
|
|
||||||
#
|
|
||||||
# Exporting the resource for a balancer member:
|
|
||||||
#
|
|
||||||
# @@apache::balancermember { 'apache':
|
|
||||||
# balancer_cluster => 'puppet00',
|
|
||||||
# url => "ajp://${::fqdn}:8009"
|
|
||||||
# options => ['ping=5', 'disablereuse=on', 'retry=5', 'ttl=120'],
|
|
||||||
# }
|
|
||||||
#
|
|
||||||
define apache::balancermember(
|
|
||||||
$balancer_cluster,
|
|
||||||
$url = "http://${::fqdn}/",
|
|
||||||
$options = [],
|
|
||||||
) {
|
|
||||||
|
|
||||||
concat::fragment { "BalancerMember ${url}":
|
|
||||||
ensure => present,
|
|
||||||
target => "${::apache::params::confd_dir}/balancer_${balancer_cluster}.conf",
|
|
||||||
content => inline_template(" BalancerMember ${url} <%= @options.join ' ' %>\n"),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
class apache::confd::no_accf {
|
|
||||||
# Template uses no variables
|
|
||||||
file { 'no-accf.conf':
|
|
||||||
ensure => 'file',
|
|
||||||
path => "${::apache::confd_dir}/no-accf.conf",
|
|
||||||
content => template('apache/confd/no-accf.conf.erb'),
|
|
||||||
require => Exec["mkdir ${::apache::confd_dir}"],
|
|
||||||
before => File[$::apache::confd_dir],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
class apache::default_confd_files (
|
|
||||||
$all = true,
|
|
||||||
) {
|
|
||||||
# The rest of the conf.d/* files only get loaded if we want them
|
|
||||||
if $all {
|
|
||||||
case $::osfamily {
|
|
||||||
'freebsd': {
|
|
||||||
include ::apache::confd::no_accf
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
# do nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,158 +0,0 @@
|
|||||||
class apache::default_mods (
|
|
||||||
$all = true,
|
|
||||||
$mods = undef,
|
|
||||||
$apache_version = $::apache::apache_version
|
|
||||||
) {
|
|
||||||
# These are modules required to run the default configuration.
|
|
||||||
# They are not configurable at this time, so we just include
|
|
||||||
# them to make sure it works.
|
|
||||||
case $::osfamily {
|
|
||||||
'redhat', 'freebsd': {
|
|
||||||
::apache::mod { 'log_config': }
|
|
||||||
if versioncmp($apache_version, '2.4') >= 0 {
|
|
||||||
# Lets fork it
|
|
||||||
::apache::mod { 'systemd': }
|
|
||||||
::apache::mod { 'unixd': }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
default: {}
|
|
||||||
}
|
|
||||||
::apache::mod { 'authz_host': }
|
|
||||||
|
|
||||||
# The rest of the modules only get loaded if we want all modules enabled
|
|
||||||
if $all {
|
|
||||||
case $::osfamily {
|
|
||||||
'debian': {
|
|
||||||
include ::apache::mod::reqtimeout
|
|
||||||
}
|
|
||||||
'redhat': {
|
|
||||||
include ::apache::mod::actions
|
|
||||||
include ::apache::mod::cache
|
|
||||||
include ::apache::mod::mime
|
|
||||||
include ::apache::mod::mime_magic
|
|
||||||
include ::apache::mod::vhost_alias
|
|
||||||
include ::apache::mod::suexec
|
|
||||||
include ::apache::mod::rewrite
|
|
||||||
include ::apache::mod::speling
|
|
||||||
::apache::mod { 'auth_digest': }
|
|
||||||
::apache::mod { 'authn_anon': }
|
|
||||||
::apache::mod { 'authn_dbm': }
|
|
||||||
::apache::mod { 'authz_dbm': }
|
|
||||||
::apache::mod { 'authz_owner': }
|
|
||||||
::apache::mod { 'expires': }
|
|
||||||
::apache::mod { 'ext_filter': }
|
|
||||||
::apache::mod { 'include': }
|
|
||||||
::apache::mod { 'logio': }
|
|
||||||
::apache::mod { 'substitute': }
|
|
||||||
::apache::mod { 'usertrack': }
|
|
||||||
::apache::mod { 'version': }
|
|
||||||
|
|
||||||
if versioncmp($apache_version, '2.4') >= 0 {
|
|
||||||
::apache::mod { 'authn_core': }
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
::apache::mod { 'authn_alias': }
|
|
||||||
::apache::mod { 'authn_default': }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'freebsd': {
|
|
||||||
include ::apache::mod::actions
|
|
||||||
include ::apache::mod::cache
|
|
||||||
include ::apache::mod::disk_cache
|
|
||||||
include ::apache::mod::headers
|
|
||||||
include ::apache::mod::info
|
|
||||||
include ::apache::mod::mime_magic
|
|
||||||
include ::apache::mod::reqtimeout
|
|
||||||
include ::apache::mod::rewrite
|
|
||||||
include ::apache::mod::userdir
|
|
||||||
include ::apache::mod::vhost_alias
|
|
||||||
include ::apache::mod::speling
|
|
||||||
|
|
||||||
::apache::mod { 'asis': }
|
|
||||||
::apache::mod { 'auth_digest': }
|
|
||||||
::apache::mod { 'authn_alias': }
|
|
||||||
::apache::mod { 'authn_anon': }
|
|
||||||
::apache::mod { 'authn_dbm': }
|
|
||||||
::apache::mod { 'authn_default': }
|
|
||||||
::apache::mod { 'authz_dbm': }
|
|
||||||
::apache::mod { 'authz_owner': }
|
|
||||||
::apache::mod { 'cern_meta': }
|
|
||||||
::apache::mod { 'charset_lite': }
|
|
||||||
::apache::mod { 'dumpio': }
|
|
||||||
::apache::mod { 'expires': }
|
|
||||||
::apache::mod { 'file_cache': }
|
|
||||||
::apache::mod { 'filter':}
|
|
||||||
::apache::mod { 'imagemap':}
|
|
||||||
::apache::mod { 'include': }
|
|
||||||
::apache::mod { 'logio': }
|
|
||||||
::apache::mod { 'unique_id': }
|
|
||||||
::apache::mod { 'usertrack': }
|
|
||||||
::apache::mod { 'version': }
|
|
||||||
}
|
|
||||||
default: {}
|
|
||||||
}
|
|
||||||
case $::apache::mpm_module {
|
|
||||||
'prefork': {
|
|
||||||
include ::apache::mod::cgi
|
|
||||||
}
|
|
||||||
'worker': {
|
|
||||||
include ::apache::mod::cgid
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
# do nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
include ::apache::mod::alias
|
|
||||||
include ::apache::mod::autoindex
|
|
||||||
include ::apache::mod::dav
|
|
||||||
include ::apache::mod::dav_fs
|
|
||||||
include ::apache::mod::deflate
|
|
||||||
include ::apache::mod::dir
|
|
||||||
include ::apache::mod::mime
|
|
||||||
include ::apache::mod::negotiation
|
|
||||||
include ::apache::mod::setenvif
|
|
||||||
::apache::mod { 'auth_basic': }
|
|
||||||
::apache::mod { 'authn_file': }
|
|
||||||
|
|
||||||
if versioncmp($apache_version, '2.4') >= 0 {
|
|
||||||
# authz_core is needed for 'Require' directive
|
|
||||||
::apache::mod { 'authz_core':
|
|
||||||
id => 'authz_core_module',
|
|
||||||
}
|
|
||||||
|
|
||||||
# filter is needed by mod_deflate
|
|
||||||
::apache::mod { 'filter': }
|
|
||||||
|
|
||||||
# lots of stuff seems to break without access_compat
|
|
||||||
::apache::mod { 'access_compat': }
|
|
||||||
} else {
|
|
||||||
::apache::mod { 'authz_default': }
|
|
||||||
}
|
|
||||||
|
|
||||||
::apache::mod { 'authz_groupfile': }
|
|
||||||
::apache::mod { 'authz_user': }
|
|
||||||
::apache::mod { 'env': }
|
|
||||||
} elsif $mods {
|
|
||||||
::apache::default_mods::load { $mods: }
|
|
||||||
|
|
||||||
if versioncmp($apache_version, '2.4') >= 0 {
|
|
||||||
# authz_core is needed for 'Require' directive
|
|
||||||
::apache::mod { 'authz_core':
|
|
||||||
id => 'authz_core_module',
|
|
||||||
}
|
|
||||||
|
|
||||||
# filter is needed by mod_deflate
|
|
||||||
::apache::mod { 'filter': }
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if versioncmp($apache_version, '2.4') >= 0 {
|
|
||||||
# authz_core is needed for 'Require' directive
|
|
||||||
::apache::mod { 'authz_core':
|
|
||||||
id => 'authz_core_module',
|
|
||||||
}
|
|
||||||
|
|
||||||
# filter is needed by mod_deflate
|
|
||||||
::apache::mod { 'filter': }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# private define
|
|
||||||
define apache::default_mods::load ($module = $title) {
|
|
||||||
if defined("apache::mod::${module}") {
|
|
||||||
include "::apache::mod::${module}"
|
|
||||||
} else {
|
|
||||||
::apache::mod { $module: }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
class apache::dev {
|
|
||||||
if $::osfamily == 'FreeBSD' and !defined(Class['apache::package']) {
|
|
||||||
fail('apache::dev requires apache::package; please include apache or apache::package class first')
|
|
||||||
}
|
|
||||||
include ::apache::params
|
|
||||||
$packages = $::apache::params::dev_packages
|
|
||||||
package { $packages:
|
|
||||||
ensure => present,
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,340 +0,0 @@
|
|||||||
# Class: apache
|
|
||||||
#
|
|
||||||
# This class installs Apache
|
|
||||||
#
|
|
||||||
# Parameters:
|
|
||||||
#
|
|
||||||
# Actions:
|
|
||||||
# - Install Apache
|
|
||||||
# - Manage Apache service
|
|
||||||
#
|
|
||||||
# Requires:
|
|
||||||
#
|
|
||||||
# Sample Usage:
|
|
||||||
#
|
|
||||||
class apache (
|
|
||||||
$service_name = $::apache::params::service_name,
|
|
||||||
$default_mods = true,
|
|
||||||
$default_vhost = true,
|
|
||||||
$default_confd_files = true,
|
|
||||||
$default_ssl_vhost = false,
|
|
||||||
$default_ssl_cert = $::apache::params::default_ssl_cert,
|
|
||||||
$default_ssl_key = $::apache::params::default_ssl_key,
|
|
||||||
$default_ssl_chain = undef,
|
|
||||||
$default_ssl_ca = undef,
|
|
||||||
$default_ssl_crl_path = undef,
|
|
||||||
$default_ssl_crl = undef,
|
|
||||||
$ip = undef,
|
|
||||||
$service_enable = true,
|
|
||||||
$service_ensure = 'running',
|
|
||||||
$purge_configs = true,
|
|
||||||
$purge_vdir = false,
|
|
||||||
$serveradmin = 'root@localhost',
|
|
||||||
$sendfile = 'On',
|
|
||||||
$error_documents = false,
|
|
||||||
$timeout = '120',
|
|
||||||
$httpd_dir = $::apache::params::httpd_dir,
|
|
||||||
$server_root = $::apache::params::server_root,
|
|
||||||
$confd_dir = $::apache::params::confd_dir,
|
|
||||||
$vhost_dir = $::apache::params::vhost_dir,
|
|
||||||
$vhost_enable_dir = $::apache::params::vhost_enable_dir,
|
|
||||||
$mod_dir = $::apache::params::mod_dir,
|
|
||||||
$mod_enable_dir = $::apache::params::mod_enable_dir,
|
|
||||||
$mpm_module = $::apache::params::mpm_module,
|
|
||||||
$conf_template = $::apache::params::conf_template,
|
|
||||||
$servername = $::apache::params::servername,
|
|
||||||
$manage_user = true,
|
|
||||||
$manage_group = true,
|
|
||||||
$user = $::apache::params::user,
|
|
||||||
$group = $::apache::params::group,
|
|
||||||
$keepalive = $::apache::params::keepalive,
|
|
||||||
$keepalive_timeout = $::apache::params::keepalive_timeout,
|
|
||||||
$max_keepalive_requests = $apache::params::max_keepalive_requests,
|
|
||||||
$logroot = $::apache::params::logroot,
|
|
||||||
$log_level = $::apache::params::log_level,
|
|
||||||
$log_formats = {},
|
|
||||||
$ports_file = $::apache::params::ports_file,
|
|
||||||
$apache_version = $::apache::version::default,
|
|
||||||
$server_tokens = 'OS',
|
|
||||||
$server_signature = 'On',
|
|
||||||
$trace_enable = 'On',
|
|
||||||
$package_ensure = 'installed',
|
|
||||||
) inherits ::apache::params {
|
|
||||||
validate_bool($default_vhost)
|
|
||||||
validate_bool($default_ssl_vhost)
|
|
||||||
validate_bool($default_confd_files)
|
|
||||||
# true/false is sufficient for both ensure and enable
|
|
||||||
validate_bool($service_enable)
|
|
||||||
|
|
||||||
$valid_mpms_re = $apache_version ? {
|
|
||||||
'2.4' => '(event|itk|peruser|prefork|worker)',
|
|
||||||
default => '(event|itk|prefork|worker)'
|
|
||||||
}
|
|
||||||
|
|
||||||
if $mpm_module {
|
|
||||||
validate_re($mpm_module, $valid_mpms_re)
|
|
||||||
}
|
|
||||||
|
|
||||||
# NOTE: on FreeBSD it's mpm module's responsibility to install httpd package.
|
|
||||||
# NOTE: the same strategy may be introduced for other OSes. For this, you
|
|
||||||
# should delete the 'if' block below and modify all MPM modules' manifests
|
|
||||||
# such that they include apache::package class (currently event.pp, itk.pp,
|
|
||||||
# peruser.pp, prefork.pp, worker.pp).
|
|
||||||
if $::osfamily != 'FreeBSD' {
|
|
||||||
package { 'httpd':
|
|
||||||
ensure => $package_ensure,
|
|
||||||
name => $::apache::params::apache_name,
|
|
||||||
notify => Class['Apache::Service'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
validate_re($sendfile, [ '^[oO]n$' , '^[oO]ff$' ])
|
|
||||||
|
|
||||||
# declare the web server user and group
|
|
||||||
# Note: requiring the package means the package ought to create them and not puppet
|
|
||||||
validate_bool($manage_user)
|
|
||||||
if $manage_user {
|
|
||||||
user { $user:
|
|
||||||
ensure => present,
|
|
||||||
gid => $group,
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
validate_bool($manage_group)
|
|
||||||
if $manage_group {
|
|
||||||
group { $group:
|
|
||||||
ensure => present,
|
|
||||||
require => Package['httpd']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$valid_log_level_re = '(emerg|alert|crit|error|warn|notice|info|debug)'
|
|
||||||
|
|
||||||
validate_re($log_level, $valid_log_level_re,
|
|
||||||
"Log level '${log_level}' is not one of the supported Apache HTTP Server log levels.")
|
|
||||||
|
|
||||||
class { '::apache::service':
|
|
||||||
service_name => $service_name,
|
|
||||||
service_enable => $service_enable,
|
|
||||||
service_ensure => $service_ensure,
|
|
||||||
}
|
|
||||||
|
|
||||||
# Deprecated backwards-compatibility
|
|
||||||
if $purge_vdir {
|
|
||||||
warning('Class[\'apache\'] parameter purge_vdir is deprecated in favor of purge_configs')
|
|
||||||
$purge_confd = $purge_vdir
|
|
||||||
} else {
|
|
||||||
$purge_confd = $purge_configs
|
|
||||||
}
|
|
||||||
|
|
||||||
Exec {
|
|
||||||
path => '/bin:/sbin:/usr/bin:/usr/sbin',
|
|
||||||
}
|
|
||||||
|
|
||||||
exec { "mkdir ${confd_dir}":
|
|
||||||
creates => $confd_dir,
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
file { $confd_dir:
|
|
||||||
ensure => directory,
|
|
||||||
recurse => true,
|
|
||||||
purge => $purge_confd,
|
|
||||||
notify => Class['Apache::Service'],
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
|
|
||||||
if ! defined(File[$mod_dir]) {
|
|
||||||
exec { "mkdir ${mod_dir}":
|
|
||||||
creates => $mod_dir,
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
# Don't purge available modules if an enable dir is used
|
|
||||||
$purge_mod_dir = $purge_configs and !$mod_enable_dir
|
|
||||||
file { $mod_dir:
|
|
||||||
ensure => directory,
|
|
||||||
recurse => true,
|
|
||||||
purge => $purge_mod_dir,
|
|
||||||
notify => Class['Apache::Service'],
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if $mod_enable_dir and ! defined(File[$mod_enable_dir]) {
|
|
||||||
$mod_load_dir = $mod_enable_dir
|
|
||||||
exec { "mkdir ${mod_enable_dir}":
|
|
||||||
creates => $mod_enable_dir,
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
file { $mod_enable_dir:
|
|
||||||
ensure => directory,
|
|
||||||
recurse => true,
|
|
||||||
purge => $purge_configs,
|
|
||||||
notify => Class['Apache::Service'],
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$mod_load_dir = $mod_dir
|
|
||||||
}
|
|
||||||
|
|
||||||
if ! defined(File[$vhost_dir]) {
|
|
||||||
exec { "mkdir ${vhost_dir}":
|
|
||||||
creates => $vhost_dir,
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
file { $vhost_dir:
|
|
||||||
ensure => directory,
|
|
||||||
recurse => true,
|
|
||||||
purge => $purge_configs,
|
|
||||||
notify => Class['Apache::Service'],
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if $vhost_enable_dir and ! defined(File[$vhost_enable_dir]) {
|
|
||||||
$vhost_load_dir = $vhost_enable_dir
|
|
||||||
exec { "mkdir ${vhost_load_dir}":
|
|
||||||
creates => $vhost_load_dir,
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
file { $vhost_enable_dir:
|
|
||||||
ensure => directory,
|
|
||||||
recurse => true,
|
|
||||||
purge => $purge_configs,
|
|
||||||
notify => Class['Apache::Service'],
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$vhost_load_dir = $vhost_dir
|
|
||||||
}
|
|
||||||
|
|
||||||
concat { $ports_file:
|
|
||||||
owner => 'root',
|
|
||||||
group => $::apache::params::root_group,
|
|
||||||
mode => '0644',
|
|
||||||
notify => Class['Apache::Service'],
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
concat::fragment { 'Apache ports header':
|
|
||||||
ensure => present,
|
|
||||||
target => $ports_file,
|
|
||||||
content => template('apache/ports_header.erb')
|
|
||||||
}
|
|
||||||
|
|
||||||
if $::apache::params::conf_dir and $::apache::params::conf_file {
|
|
||||||
case $::osfamily {
|
|
||||||
'debian': {
|
|
||||||
$docroot = '/var/www'
|
|
||||||
$pidfile = '${APACHE_PID_FILE}'
|
|
||||||
$error_log = 'error.log'
|
|
||||||
$error_documents_path = '/usr/share/apache2/error'
|
|
||||||
$scriptalias = '/usr/lib/cgi-bin'
|
|
||||||
$access_log_file = 'access.log'
|
|
||||||
}
|
|
||||||
'redhat': {
|
|
||||||
$docroot = '/var/www/html'
|
|
||||||
$pidfile = 'run/httpd.pid'
|
|
||||||
$error_log = 'error_log'
|
|
||||||
$error_documents_path = '/var/www/error'
|
|
||||||
$scriptalias = '/var/www/cgi-bin'
|
|
||||||
$access_log_file = 'access_log'
|
|
||||||
}
|
|
||||||
'freebsd': {
|
|
||||||
$docroot = '/usr/local/www/apache22/data'
|
|
||||||
$pidfile = '/var/run/httpd.pid'
|
|
||||||
$error_log = 'httpd-error.log'
|
|
||||||
$error_documents_path = '/usr/local/www/apache22/error'
|
|
||||||
$scriptalias = '/usr/local/www/apache22/cgi-bin'
|
|
||||||
$access_log_file = 'httpd-access.log'
|
|
||||||
}
|
|
||||||
default: {
|
|
||||||
fail("Unsupported osfamily ${::osfamily}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$apxs_workaround = $::osfamily ? {
|
|
||||||
'freebsd' => true,
|
|
||||||
default => false
|
|
||||||
}
|
|
||||||
|
|
||||||
# Template uses:
|
|
||||||
# - $pidfile
|
|
||||||
# - $user
|
|
||||||
# - $group
|
|
||||||
# - $logroot
|
|
||||||
# - $error_log
|
|
||||||
# - $sendfile
|
|
||||||
# - $mod_dir
|
|
||||||
# - $ports_file
|
|
||||||
# - $confd_dir
|
|
||||||
# - $vhost_dir
|
|
||||||
# - $error_documents
|
|
||||||
# - $error_documents_path
|
|
||||||
# - $apxs_workaround
|
|
||||||
# - $keepalive
|
|
||||||
# - $keepalive_timeout
|
|
||||||
# - $max_keepalive_requests
|
|
||||||
# - $server_root
|
|
||||||
# - $server_tokens
|
|
||||||
# - $server_signature
|
|
||||||
# - $trace_enable
|
|
||||||
file { "${::apache::params::conf_dir}/${::apache::params::conf_file}":
|
|
||||||
ensure => file,
|
|
||||||
content => template($conf_template),
|
|
||||||
notify => Class['Apache::Service'],
|
|
||||||
require => Package['httpd'],
|
|
||||||
}
|
|
||||||
|
|
||||||
# preserve back-wards compatibility to the times when default_mods was
|
|
||||||
# only a boolean value. Now it can be an array (too)
|
|
||||||
if is_array($default_mods) {
|
|
||||||
class { '::apache::default_mods':
|
|
||||||
all => false,
|
|
||||||
mods => $default_mods,
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
class { '::apache::default_mods':
|
|
||||||
all => $default_mods,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
class { '::apache::default_confd_files':
|
|
||||||
all => $default_confd_files
|
|
||||||
}
|
|
||||||
if $mpm_module {
|
|
||||||
class { "::apache::mod::${mpm_module}": }
|
|
||||||
}
|
|
||||||
|
|
||||||
$default_vhost_ensure = $default_vhost ? {
|
|
||||||
true => 'present',
|
|
||||||
false => 'absent'
|
|
||||||
}
|
|
||||||
$default_ssl_vhost_ensure = $default_ssl_vhost ? {
|
|
||||||
true => 'present',
|
|
||||||
false => 'absent'
|
|
||||||
}
|
|
||||||
|
|
||||||
::apache::vhost { 'default':
|
|
||||||
ensure => $default_vhost_ensure,
|
|
||||||
port => 80,
|
|
||||||
docroot => $docroot,
|
|
||||||
scriptalias => $scriptalias,
|
|
||||||
serveradmin => $serveradmin,
|
|
||||||
access_log_file => $access_log_file,
|
|
||||||
priority => '15',
|
|
||||||
ip => $ip,
|
|
||||||
}
|
|
||||||
$ssl_access_log_file = $::osfamily ? {
|
|
||||||
'freebsd' => $access_log_file,
|
|
||||||
default => "ssl_${access_log_file}",
|
|
||||||
}
|
|
||||||
::apache::vhost { 'default-ssl':
|
|
||||||
ensure => $default_ssl_vhost_ensure,
|
|
||||||
port => 443,
|
|
||||||
ssl => true,
|
|
||||||
docroot => $docroot,
|
|
||||||
scriptalias => $scriptalias,
|
|
||||||
serveradmin => $serveradmin,
|
|
||||||
access_log_file => $ssl_access_log_file,
|
|
||||||
priority => '15',
|
|
||||||
ip => $ip,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
define apache::listen {
|
|
||||||
$listen_addr_port = $name
|
|
||||||
|
|
||||||
# Template uses: $listen_addr_port
|
|
||||||
concat::fragment { "Listen ${listen_addr_port}":
|
|
||||||
ensure => present,
|
|
||||||
target => $::apache::ports_file,
|
|
||||||
content => template('apache/listen.erb'),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,130 +0,0 @@
|
|||||||
define apache::mod (
|
|
||||||
$package = undef,
|
|
||||||
$package_ensure = 'present',
|
|
||||||
$lib = undef,
|
|
||||||
$lib_path = $::apache::params::lib_path,
|
|
||||||
$id = undef,
|
|
||||||
$path = undef,
|
|
||||||
$loadfile_name = undef,
|
|
||||||
$loadfiles = undef,
|
|
||||||
) {
|
|
||||||
if ! defined(Class['apache']) {
|
|
||||||
fail('You must include the apache base class before using any apache defined resources')
|
|
||||||
}
|
|
||||||
|
|
||||||
$mod = $name
|
|
||||||
#include apache #This creates duplicate resources in rspec-puppet
|
|
||||||
$mod_dir = $::apache::mod_dir
|
|
||||||
|
|
||||||
# Determine if we have special lib
|
|
||||||
$mod_libs = $::apache::params::mod_libs
|
|
||||||
$mod_lib = $mod_libs[$mod] # 2.6 compatibility hack
|
|
||||||
if $lib {
|
|
||||||
$_lib = $lib
|
|
||||||
} elsif $mod_lib {
|
|
||||||
$_lib = $mod_lib
|
|
||||||
} else {
|
|
||||||
$_lib = "mod_${mod}.so"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Determine if declaration specified a path to the module
|
|
||||||
if $path {
|
|
||||||
$_path = $path
|
|
||||||
} else {
|
|
||||||
$_path = "${lib_path}/${_lib}"
|
|
||||||
}
|
|
||||||
|
|
||||||
if $id {
|
|
||||||
$_id = $id
|
|
||||||
} else {
|
|
||||||
$_id = "${mod}_module"
|
|
||||||
}
|
|
||||||
|
|
||||||
if $loadfile_name {
|
|
||||||
$_loadfile_name = $loadfile_name
|
|
||||||
} else {
|
|
||||||
$_loadfile_name = "${mod}.load"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Determine if we have a package
|
|
||||||
$mod_packages = $::apache::params::mod_packages
|
|
||||||
$mod_package = $mod_packages[$mod] # 2.6 compatibility hack
|
|
||||||
if $package {
|
|
||||||
$_package = $package
|
|
||||||
} elsif $mod_package {
|
|
||||||
$_package = $mod_package
|
|
||||||
} else {
|
|
||||||
$_package = undef
|
|
||||||
}
|
|
||||||
if $_package and ! defined(Package[$_package]) {
|
|
||||||
# note: FreeBSD/ports uses apxs tool to activate modules; apxs clutters
|
|
||||||
# httpd.conf with 'LoadModule' directives; here, by proper resource
|
|
||||||
# ordering, we ensure that our version of httpd.conf is reverted after
|
|
||||||
# the module gets installed.
|
|
||||||
$package_before = $::osfamily ? {
|
|
||||||
'freebsd' => [
|
|
||||||
File[$_loadfile_name],
|
|
||||||
File["${::apache::params::conf_dir}/${::apache::params::conf_file}"]
|
|
||||||
],
|
|
||||||
default => File[$_loadfile_name],
|
|
||||||
}
|
|
||||||
# $_package may be an array
|
|
||||||
package { $_package:
|
|
||||||
ensure => $package_ensure,
|
|
||||||
require => Package['httpd'],
|
|
||||||
before => $package_before,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
file { "${_loadfile_name}":
|
|
||||||
ensure => file,
|
|
||||||
path => "${mod_dir}/${_loadfile_name}",
|
|
||||||
owner => 'root',
|
|
||||||
group => $::apache::params::root_group,
|
|
||||||
mode => '0644',
|
|
||||||
content => template('apache/mod/load.erb'),
|
|
||||||
require => [
|
|
||||||
Package['httpd'],
|
|
||||||
Exec["mkdir ${mod_dir}"],
|
|
||||||
],
|
|
||||||
before => File[$mod_dir],
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
|
|
||||||
if $::osfamily == 'Debian' {
|
|
||||||
$enable_dir = $::apache::mod_enable_dir
|
|
||||||
file{ "${_loadfile_name} symlink":
|
|
||||||
ensure => link,
|
|
||||||
path => "${enable_dir}/${_loadfile_name}",
|
|
||||||
target => "${mod_dir}/${_loadfile_name}",
|
|
||||||
owner => 'root',
|
|
||||||
group => $::apache::params::root_group,
|
|
||||||
mode => '0644',
|
|
||||||
require => [
|
|
||||||
File[$_loadfile_name],
|
|
||||||
Exec["mkdir ${enable_dir}"],
|
|
||||||
],
|
|
||||||
before => File[$enable_dir],
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
# Each module may have a .conf file as well, which should be
|
|
||||||
# defined in the class apache::mod::module
|
|
||||||
# Some modules do not require this file.
|
|
||||||
if defined(File["${mod}.conf"]) {
|
|
||||||
file{ "${mod}.conf symlink":
|
|
||||||
ensure => link,
|
|
||||||
path => "${enable_dir}/${mod}.conf",
|
|
||||||
target => "${mod_dir}/${mod}.conf",
|
|
||||||
owner => 'root',
|
|
||||||
group => $::apache::params::root_group,
|
|
||||||
mode => '0644',
|
|
||||||
require => [
|
|
||||||
File["${mod}.conf"],
|
|
||||||
Exec["mkdir ${enable_dir}"],
|
|
||||||
],
|
|
||||||
before => File[$enable_dir],
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
class apache::mod::actions {
|
|
||||||
apache::mod { 'actions': }
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
class apache::mod::alias(
|
|
||||||
$apache_version = $apache::apache_version
|
|
||||||
) {
|
|
||||||
$icons_path = $::osfamily ? {
|
|
||||||
'debian' => '/usr/share/apache2/icons',
|
|
||||||
'redhat' => '/var/www/icons',
|
|
||||||
'freebsd' => '/usr/local/www/apache22/icons',
|
|
||||||
}
|
|
||||||
apache::mod { 'alias': }
|
|
||||||
# Template uses $icons_path
|
|
||||||
file { 'alias.conf':
|
|
||||||
ensure => file,
|
|
||||||
path => "${::apache::mod_dir}/alias.conf",
|
|
||||||
content => template('apache/mod/alias.conf.erb'),
|
|
||||||
require => Exec["mkdir ${::apache::mod_dir}"],
|
|
||||||
before => File[$::apache::mod_dir],
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
class apache::mod::auth_basic {
|
|
||||||
::apache::mod { 'auth_basic': }
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
class apache::mod::auth_kerb {
|
|
||||||
::apache::mod { 'auth_kerb': }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
class apache::mod::authnz_ldap (
|
|
||||||
$verifyServerCert = true,
|
|
||||||
) {
|
|
||||||
include '::apache::mod::ldap'
|
|
||||||
::apache::mod { 'authnz_ldap': }
|
|
||||||
|
|
||||||
validate_bool($verifyServerCert)
|
|
||||||
|
|
||||||
# Template uses:
|
|
||||||
# - $verifyServerCert
|
|
||||||
file { 'authnz_ldap.conf':
|
|
||||||
ensure => file,
|
|
||||||
path => "${::apache::mod_dir}/authnz_ldap.conf",
|
|
||||||
content => template('apache/mod/authnz_ldap.conf.erb'),
|
|
||||||
require => Exec["mkdir ${::apache::mod_dir}"],
|
|
||||||
before => File[$::apache::mod_dir],
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
class apache::mod::autoindex {
|
|
||||||
::apache::mod { 'autoindex': }
|
|
||||||
# Template uses no variables
|
|
||||||
file { 'autoindex.conf':
|
|
||||||
ensure => file,
|
|
||||||
path => "${::apache::mod_dir}/autoindex.conf",
|
|
||||||
content => template('apache/mod/autoindex.conf.erb'),
|
|
||||||
require => Exec["mkdir ${::apache::mod_dir}"],
|
|
||||||
before => File[$::apache::mod_dir],
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
class apache::mod::cache {
|
|
||||||
::apache::mod { 'cache': }
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
class apache::mod::cgi {
|
|
||||||
Class['::apache::mod::prefork'] -> Class['::apache::mod::cgi']
|
|
||||||
::apache::mod { 'cgi': }
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
class apache::mod::cgid {
|
|
||||||
Class['::apache::mod::worker'] -> Class['::apache::mod::cgid']
|
|
||||||
|
|
||||||
# Debian specifies it's cgid sock path, but RedHat uses the default value
|
|
||||||
# with no config file
|
|
||||||
$cgisock_path = $::osfamily ? {
|
|
||||||
'debian' => '${APACHE_RUN_DIR}/cgisock',
|
|
||||||
'freebsd' => 'cgisock',
|
|
||||||
default => undef,
|
|
||||||
}
|
|
||||||
::apache::mod { 'cgid': }
|
|
||||||
if $cgisock_path {
|
|
||||||
# Template uses $cgisock_path
|
|
||||||
file { 'cgid.conf':
|
|
||||||
ensure => file,
|
|
||||||
path => "${::apache::mod_dir}/cgid.conf",
|
|
||||||
content => template('apache/mod/cgid.conf.erb'),
|
|
||||||
require => Exec["mkdir ${::apache::mod_dir}"],
|
|
||||||
before => File[$::apache::mod_dir],
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
class apache::mod::dav {
|
|
||||||
::apache::mod { 'dav': }
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
class apache::mod::dav_fs {
|
|
||||||
$dav_lock = $::osfamily ? {
|
|
||||||
'debian' => '${APACHE_LOCK_DIR}/DAVLock',
|
|
||||||
'freebsd' => '/usr/local/var/DavLock',
|
|
||||||
default => '/var/lib/dav/lockdb',
|
|
||||||
}
|
|
||||||
|
|
||||||
Class['::apache::mod::dav'] -> Class['::apache::mod::dav_fs']
|
|
||||||
::apache::mod { 'dav_fs': }
|
|
||||||
|
|
||||||
# Template uses: $dav_lock
|
|
||||||
file { 'dav_fs.conf':
|
|
||||||
ensure => file,
|
|
||||||
path => "${::apache::mod_dir}/dav_fs.conf",
|
|
||||||
content => template('apache/mod/dav_fs.conf.erb'),
|
|
||||||
require => Exec["mkdir ${::apache::mod_dir}"],
|
|
||||||
before => File[$::apache::mod_dir],
|
|
||||||
notify => Service['httpd'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
class apache::mod::dav_svn (
|
|
||||||
$authz_svn_enabled = false,
|
|
||||||
) {
|
|
||||||
Class['::apache::mod::dav'] -> Class['::apache::mod::dav_svn']
|
|
||||||
include ::apache::mod::dav
|
|
||||||
::apache::mod { 'dav_svn': }
|
|
||||||
|
|
||||||
if $authz_svn_enabled {
|
|
||||||
::apache::mod { 'authz_svn':
|
|
||||||
loadfile_name => 'dav_svn_authz_svn.load',
|
|
||||||
require => Apache::Mod['dav_svn'],
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user