mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2026-02-14 08:54:21 +01:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4aeb8b3bc | ||
|
|
a6f0baefc1 | ||
|
|
d69e76168f | ||
|
|
728f469c1e | ||
|
|
b4c3804c91 | ||
|
|
f33157033c | ||
|
|
4d11205a01 |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -1,6 +1,7 @@
|
||||
htdocs/conf/conf.php
|
||||
htdocs/conf/conf.php.old
|
||||
documents/
|
||||
custom/
|
||||
custom2/
|
||||
test/report/
|
||||
nbproject
|
||||
@@ -16,4 +17,7 @@ doxygen_warnings.log
|
||||
*.iml
|
||||
Thumbs.db
|
||||
# Vagrant generated files
|
||||
.vagrant
|
||||
.vagrant
|
||||
/index.html
|
||||
/phpmyadmin
|
||||
/xhprof
|
||||
|
||||
@@ -180,38 +180,8 @@ tools:
|
||||
- 'htdocs/includes/*'
|
||||
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
|
||||
js_hint:
|
||||
enabled: false
|
||||
use_native_config: true
|
||||
extensions:
|
||||
- js
|
||||
filter:
|
||||
excluded_paths:
|
||||
- 'build/*'
|
||||
- 'dev/*'
|
||||
- 'doc/*'
|
||||
- 'test/*'
|
||||
- 'htdocs/includes/*'
|
||||
paths: { }
|
||||
config: { }
|
||||
path_configs: { }
|
||||
js_hint: false
|
||||
|
||||
|
||||
before_commands: { }
|
||||
|
||||
23
.travis.yml
23
.travis.yml
@@ -36,7 +36,6 @@ before_script:
|
||||
- echo Install phpcs then show installed rules
|
||||
- pyrus install pear/PHP_CodeSniffer
|
||||
- phpenv rehash
|
||||
- phpcs --version
|
||||
- phpcs -i
|
||||
- echo Create dir $(pwd)/htdocs/documents
|
||||
- sudo mkdir -p $(pwd)/htdocs/documents/admin/temp;
|
||||
@@ -54,14 +53,12 @@ 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.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
|
||||
- echo Mysql version
|
||||
- mysql --version
|
||||
- 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 '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 'CREATE DATABASE IF NOT EXISTS myapp_test;'; fi"
|
||||
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -D myapp_test < $(pwd)/dev/initdata/mysqldump_dolibarr_3.5.0.sql; fi"
|
||||
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -D myapp_test < $(pwd)/dev/initdata/mysqldump_dolibarr_3.4.0.sql; fi"
|
||||
- echo Create config file 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"
|
||||
@@ -90,22 +87,18 @@ before_script:
|
||||
|
||||
script:
|
||||
- cd htdocs/install
|
||||
- date
|
||||
# - php upgrade.php 3.4.0 3.5.0 ignoredbversion > upgrade.log
|
||||
# - php upgrade2.php 3.4.0 3.5.0 ignoredbversion > upgrade2.log
|
||||
- php upgrade.php 3.5.0 3.6.0 ignoredbversion >> upgrade.log
|
||||
- php upgrade2.php 3.5.0 3.6.0 ignoredbversion >> upgrade2.log
|
||||
- php upgrade.php 3.6.0 3.7.0 ignoredbversion >> upgrade.log
|
||||
# - cat upgrade360370.log
|
||||
- php upgrade2.php 3.6.0 3.7.0 ignoredbversion >> 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 upgrade2.php 3.5.0 3.6.0 >> upgrade2.log
|
||||
# - cat upgrade.log
|
||||
# - cat upgrade2.log
|
||||
- cd ../..
|
||||
- date
|
||||
- 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
|
||||
- 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
|
||||
|
||||
after_script:
|
||||
# - echo Output dolibarr log file; cat $(pwd)/htdocs/documents/dolibarr.log
|
||||
|
||||
39
.tx/config
39
.tx/config
@@ -1,12 +1,6 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
lang_map = uz: uz_UZ, sw: sw_SW
|
||||
|
||||
[dolibarr.accountancy]
|
||||
file_filter = htdocs/langs/<lang>/accountancy.lang
|
||||
source_file = htdocs/langs/en_US/accountancy.lang
|
||||
source_lang = en_US
|
||||
type = MOZILLAPROPERTIES
|
||||
lang_map = uz: uz_UZ
|
||||
|
||||
[dolibarr.admin]
|
||||
file_filter = htdocs/langs/<lang>/admin.lang
|
||||
@@ -218,6 +212,12 @@ source_file = htdocs/langs/en_US/orders.lang
|
||||
source_lang = en_US
|
||||
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]
|
||||
file_filter = htdocs/langs/<lang>/other.lang
|
||||
source_file = htdocs/langs/en_US/other.lang
|
||||
@@ -236,18 +236,6 @@ source_file = htdocs/langs/en_US/paypal.lang
|
||||
source_lang = en_US
|
||||
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]
|
||||
file_filter = htdocs/langs/<lang>/products.lang
|
||||
source_file = htdocs/langs/en_US/products.lang
|
||||
@@ -266,12 +254,6 @@ source_file = htdocs/langs/en_US/propal.lang
|
||||
source_lang = en_US
|
||||
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]
|
||||
file_filter = htdocs/langs/<lang>/salaries.lang
|
||||
source_file = htdocs/langs/en_US/salaries.lang
|
||||
@@ -284,6 +266,12 @@ source_file = htdocs/langs/en_US/sendings.lang
|
||||
source_lang = en_US
|
||||
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]
|
||||
file_filter = htdocs/langs/<lang>/sms.lang
|
||||
source_file = htdocs/langs/en_US/sms.lang
|
||||
@@ -325,3 +313,4 @@ file_filter = htdocs/langs/<lang>/workflow.lang
|
||||
source_file = htdocs/langs/en_US/workflow.lang
|
||||
source_lang = en_US
|
||||
type = MOZILLAPROPERTIES
|
||||
|
||||
|
||||
63
COPYRIGHT
63
COPYRIGHT
@@ -9,42 +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:
|
||||
|
||||
Component Version License GPL Compatible Usage
|
||||
Component Version License GPL Compatible Usage
|
||||
-------------------------------------------------------------------------------------
|
||||
PHP libraries:
|
||||
AdoDb-Date 0.32 Modified BSD License Yes Date convertion (not into rpm package)
|
||||
ChromePHP 4.3.3 Apache Software License 2.0 Yes Return server log to chrome browser console
|
||||
CKEditor 4.3.3 LGPL-2.1+ Yes Editor WYSIWYG
|
||||
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
|
||||
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)
|
||||
odtPHP 1.0.1 GPL-2+ b Yes Library to build/edit ODT 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
|
||||
TCPDF 6.0.093 LGPL-3+ Yes PDF generation
|
||||
AdoDb-Date 0.32 Modified BSD License Yes Date convertion (not into rpm package)
|
||||
CKEditor 4.3.3 LGPL-2.1+ Yes Editor WYSIWYG
|
||||
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
|
||||
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)
|
||||
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
|
||||
PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests
|
||||
TCPDF 6.0.093 LGPL-3+ Yes PDF generation
|
||||
|
||||
JS libraries:
|
||||
jQuery 1.8.2 MIT License Yes JS library
|
||||
jQuery UI 1.9.1 GPL and MIT License Yes JS library plugin UI
|
||||
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 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 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 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 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 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 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 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 Tiptip 1.3 GPL and MIT License Yes JS library for tooltips
|
||||
jsGantt 1.2 BSD License Yes JS library (to build Gantt reports)
|
||||
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 Multiselect ? GPL and MIT 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 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 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 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 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 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 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 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 Tiptip 1.3 GPL and MIT License Yes JS library for tooltips
|
||||
jsGantt 1.2 BSD License Yes JS library (to build Gantt reports)
|
||||
|
||||
For licenses compatibility informations:
|
||||
http://www.fsf.org/licensing/licenses/index_html
|
||||
|
||||
256
ChangeLog
256
ChangeLog
@@ -2,251 +2,6 @@
|
||||
English Dolibarr ChangeLog
|
||||
--------------------------------------------------------------
|
||||
|
||||
WARNING: Do not try to make any Dolibarr upgrade if you are running Mysql version 5.5.40.
|
||||
Mysql version 5.5.40 has a very critical bug making your data beeing definitely lost.
|
||||
You may also experience troubles with Mysql 5.5.41 with error "Lost connection" during migration.
|
||||
Upgrading to any other version or database system is abolutely required BEFORE trying to
|
||||
make a Dolibarr upgrade.
|
||||
|
||||
|
||||
***** ChangeLog for 3.7.2 compared to 3.7.1 *****
|
||||
FIX [ bug #2855 ] Wrong translation key in localtax report page
|
||||
FIX [ bug #1852 ] JS error when editing a customer order line
|
||||
FIX [ bug #2900 ] Courtesy title is not stored in create thirdparty form
|
||||
FIX [ bug #3055 ] Product image thumbnails were not deleted after deleting the image
|
||||
FIX [ bug 1634 ] Error deleting a project when it had many linked objects
|
||||
FIX [ bug 1925 ] "Link to order" option in supplier invoices is not working properly
|
||||
FIX [ bug #3198 ] Trigger LINECONTRACT_INSERT passes Contrat as $object instead of ContratLigne
|
||||
FIX: Not showing delivery date on rouget pdf
|
||||
FIX: Not showing task extrafields when creating from left menu
|
||||
FIX [ bug #3288 ] Tasks box is not properly drawn
|
||||
FIX [ bug #3211 ] Outstading bill amount of a client showed wrong amounts
|
||||
FIX [ bug #3321 ] Users with certain permissions were shown a "forbidden access" page even if they had the rights
|
||||
FIX [ bug #3426 ] Unable to create an invoice from a contract with extrafields
|
||||
FIX [ bug #3431 ] Invoice bank account is not respected
|
||||
FIX [ bug #3432 ] Spaces should be removed from IBAN when formatting it
|
||||
FIX [ bug #3358 ] Tasks box does not work with PostgreSQL
|
||||
FIX [ bug #3383 ] Company name is overlapped with company direction in PDF models
|
||||
FIX [ bug #3460 ] Bank account is not saved when creating a customer invoice and facing an error message
|
||||
|
||||
NEW: Created new ContratLigne::insert function
|
||||
|
||||
***** ChangeLog for 3.7.1 compared to 3.7.* *****
|
||||
FIX Bug in the new photo system
|
||||
FIX Error management
|
||||
FIX [ Bug #2714 ] Members -> Memberxy-> Agenda -> technical Error
|
||||
FIX [ Bug #2713 ] 3.7.0 mailing-unsubscribe.php not unsubscribe
|
||||
FIX #2901
|
||||
FIX when we create an agenda event with "Not applicable" status, it is automatically saved with "To do" status
|
||||
FIX check the user status during authentication
|
||||
FIX top links menu have target attribute with wrong value
|
||||
FIX extrafields required on thirdparty
|
||||
FIX create contact with extrafield is null when it is require
|
||||
FIX width multiselect
|
||||
FIX "script" tag with wrong syntax
|
||||
Fix bug debian 786479
|
||||
FIX update usergroup name
|
||||
Fix facturestats was not filtering on invoice type
|
||||
FIX #2856 : Wrong table design
|
||||
FIX button create payment hide if tax amount is less than 1
|
||||
FIX event for restricted user was restricted if company null
|
||||
FIX send mail, copy sendto don't read the list of contact
|
||||
FIX Properly escape untrusted data to prevent HTML injection.
|
||||
FIX send mail, copy sendto don't read the list of contact
|
||||
|
||||
Path to save photos of products was moved in 3.7.0 to match path of other attached files. If you had loose
|
||||
your photo on the photo tab of products, you can set the constant "PRODUCT_USE_OLD_PATH_FOR_PHOTO" to
|
||||
restore old path.
|
||||
|
||||
WARNING:
|
||||
|
||||
Do not try to make any Dolibarr upgrade if you are running Mysql version 5.5.40.
|
||||
Mysql version 5.5.40 has a very critical bug making your data beeing definitely lost.
|
||||
You may also experience troubles with Mysql 5.5.41 with error "Lost connection" during migration.
|
||||
Upgrading to any other version or database system is abolutely required BEFORE trying to
|
||||
make a Dolibarr upgrade.
|
||||
|
||||
***** 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 __THIRDPARTY_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.
|
||||
- New : Introduce hidden option STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS to solve at no risk
|
||||
a missing control on missing warehouse.
|
||||
- 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: Syslog module can be set to use ChromePHP plugin to output log server into browser console.
|
||||
- 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:
|
||||
|
||||
Do not try to make any Dolibarr upgrade if you are running Mysql version 5.5.40.
|
||||
Mysql version 5.5.40 has a very critical bug making your data beeing definitely lost.
|
||||
You may also experience troubles with Mysql 5.5.41 with error "Lost connection" during migration.
|
||||
Upgrading to any other version or database system is abolutely required BEFORE trying to
|
||||
make a Dolibarr upgrade.
|
||||
|
||||
WARNING: Following changes may create regression for some external modules, but was necessary to make
|
||||
Dolibarr better:
|
||||
|
||||
- Path to save photos of products was moved to match path of other attached files. If you had loose your photo
|
||||
on the photo tab of products, you can set the constant "PRODUCT_USE_OLD_PATH_FOR_PHOTO" to restore old path.
|
||||
- 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 named fiche.php were renamed into card.php
|
||||
- A lot of pages named 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 setup if you use one.
|
||||
- Replaced USER_UPDATE_SESSION trigger with an updateSession hook may break modules using it.
|
||||
|
||||
***** ChangeLog for 3.6.5 compared to 3.6.4 *****
|
||||
- Fix: [ bug #1776 ] Undefined $deliverycompany variable in pdf_build_address
|
||||
- Fix: [ bug #1794 ] Error when cloning Proposal gives error in a malformed page
|
||||
@@ -256,7 +11,6 @@ Dolibarr better:
|
||||
|
||||
***** ChangeLog for 3.6.3 compared to 3.6.2 *****
|
||||
- Fix: ref_ext was not saved when recording a customer order from web service
|
||||
- Fix: withdrawal create error if in the same month are deleted previus withdrawals.
|
||||
- Fix: amarok is a bugged theme making dolidroid failed. We switch to eldy automatically with dolidroid.
|
||||
- Fix: [ bug #1788 ] Duplicated doActions hook in product/fournisseurs.php
|
||||
- Fix: withdrawal create error if in the same month are deleted previous withdrawals.
|
||||
@@ -311,7 +65,6 @@ Dolibarr better:
|
||||
- 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 #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 #1736 ] Failing supplier Elephant numeration module with some masks
|
||||
- Fix: [ bug #1731 ] Can't use quick navigation on project tasks secondary tabs
|
||||
@@ -406,9 +159,6 @@ For users:
|
||||
- Fix: Add actions events not implemented.
|
||||
- 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 #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 #1479 ] Several customer invoice triggers do not intercept trigger action
|
||||
- Fix: [ bug #1477 ] Several customer invoice triggers do not show trigger error messages
|
||||
@@ -436,8 +186,6 @@ For developers:
|
||||
- New: A module can disable a standard ECM view.
|
||||
- New: Add multilang support into product webservice.
|
||||
- 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
|
||||
Dolibarr better:
|
||||
@@ -445,11 +193,11 @@ Dolibarr better:
|
||||
- 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.
|
||||
- Remove the javascript function ac_delay() that is not used anymore by core code.
|
||||
- Properties "dictionnaries" into module descriptor files have been renamed into "dictionaries".
|
||||
- Properties "dictionnaries" into module descriptor files has been renamed into "dictionaries".
|
||||
- Method form->select_currency() has been removed. Use instead print form->selectCurrency().
|
||||
- Method form->select_methodes_commande() has been renamed into english name selectInputMethod().
|
||||
- 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.
|
||||
- Properties "civilite_id" were renamed into "civility_id".
|
||||
- Remove add_photo_web() that is not used anymore by core code.
|
||||
|
||||
4
INSTALL
4
INSTALL
@@ -1,6 +1,6 @@
|
||||
INSTALL
|
||||
-------
|
||||
|
||||
English: See README.md file.
|
||||
English: See README file.
|
||||
|
||||
French: Voir fichier README-FR.md.
|
||||
French: Voir fichier README-FR.
|
||||
|
||||
20
README-FR.md
20
README-FR.md
@@ -1,16 +1,21 @@
|
||||
# DOLIBARR ERP & CRM
|
||||
|
||||
## INTRODUCTION
|
||||
|
||||
Dolibarr ERP & CRM est un logiciel moderne pour gérer votre activité (société, association, auto-entrepreneurs, artisans).
|
||||
Il est simple d'utilisation et modulaire, vous permettant de n'activez que les fonctions dont vous avez besoin (contacts, fournisseurs, factures, commandes, stocks, agenda, ...).
|
||||
|
||||

|
||||
|
||||
--------------------------------
|
||||
Documentation démarrage rapide
|
||||
--------------------------------
|
||||
|
||||
|
||||
## LICENCE
|
||||
|
||||
Dolibarr est distribué sous les termes de la licence GNU General Public License v3+ ou supérieure.
|
||||
|
||||
1) Installer Dolibarr
|
||||
2) Mettre à jour Dolibarr depuis une ancienne version
|
||||
3) Ce qui est nouveau dans cette version
|
||||
4) Ce que peux faire Dolibarr
|
||||
5) Ce que ne peux pas faire Dolibarr (pas encore)
|
||||
|
||||
|
||||
## INSTALLER DOLIBARR
|
||||
@@ -21,9 +26,8 @@ vous devez vous réorienter vers DoliWamp (la version tout-en-un
|
||||
de Dolibarr pour Windows), DoliDeb (la version tout-en-un pour Debian ou
|
||||
Ubuntu) ou DoliRpm (la version tout-en-un de Dolibarr pour Fedora, Redhat,
|
||||
OpenSuse, Mandriva ou Mageia).
|
||||
|
||||
Vous pouvez les télécharger depuis la rubrique *download* du portail officiel:
|
||||
http://www.dolibarr.org/
|
||||
Vous pouvez les télécharger à l'adresse:
|
||||
http://www.dolibarr.org/downloads/
|
||||
|
||||
Si vous avez déjà installé un serveur Web avec PHP et une base de donnée (Mysql),
|
||||
vous pouvez installer Dolibarr avec cette version de la manière suivante:
|
||||
|
||||
@@ -15,7 +15,7 @@ Dolibarr is released under the terms of the GNU General Public License as publis
|
||||
|
||||
If you have no technical knowledge, and you are looking for an autoinstaller to install Dolibarr ERP/CRM in few clicks, you must download DoliWamp (the all-in-one package of Dolibarr for Windows), DoliDeb (the all-in-one package of Dolibarr for Debian or Ubuntu) or DoliRpm (the all-in-one package of Dolibarr for Fedora, Redhat, Opensuse, Mandriva or Mageia).
|
||||
|
||||
You can download this from the download area of [Official website] (<http://www.dolibarr.org/>)
|
||||
You can download this at: [Official website] (<http://www.dolibarr.org/downloads/>)
|
||||
|
||||
If you already have installed a Web server and a Mysql database, you can install the standard version like this:
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Script build for hudson CI -->
|
||||
<project name="dolibarr" default="hudson" basedir=".">
|
||||
|
||||
<!-- Exclude/ignore paths -->
|
||||
<property name="ignorepaths" value="${basedir}/htdocs/conf,${basedir}/htdocs/core/filemanagerdol,${basedir}/htdocs/includes" />
|
||||
<property name="ignoreregexp" value="**/PEAR/*,**/NET/*,**/HTTP/*,**/zendgdata/*,**/reportico/*" />
|
||||
|
||||
@@ -28,6 +28,9 @@ Note: Prerequisites to build autoexe DoliWamp package:
|
||||
recommanded), open file build/exe/doliwamp.iss and click on button "Compile".
|
||||
The .exe file will be build into directory build.
|
||||
|
||||
- To build a translaction package, launch the script
|
||||
> perl makepack-dolibarrlang.pl
|
||||
|
||||
- To build a theme package, launch the script
|
||||
> perl makepack-dolibarrtheme.pl
|
||||
|
||||
|
||||
@@ -153,9 +153,6 @@ from origin/upstream and origin/pristine.
|
||||
|
||||
* Into root dir, launch:
|
||||
> 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
|
||||
> git-import-orig -vv ../tcpdf_x.y.z+dfsg.orig.tar.xz
|
||||
@@ -163,9 +160,9 @@ If script fails with error Bad certificate, you can set "export PERL_LWP_SSL_VER
|
||||
Note: If there was errors solved manually, you may need to make a git commit
|
||||
|
||||
* Add an entry into debian/changelog
|
||||
> dch -v x.y.z+dfsg-1 "My comment" will add entry.
|
||||
For example: dch -v x.y.z+dfsg-1 "New upstream release." for a new version
|
||||
Then modify changelog to replace "version" or "unstable" with "UNRELEASED".
|
||||
> dch -v x.y.z-dsfg-1 "My comment" will add entry.
|
||||
For example: dch -v x.y.z-dsfg-1 "New upstream release." for a new version
|
||||
Then modify changelog to replace "unstable" with "UNRELEASED".
|
||||
|
||||
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).
|
||||
@@ -231,29 +228,23 @@ from origin/upstream and origin/pristine.
|
||||
|
||||
* If new upstream is available onto sourceforge, launch:
|
||||
> 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
|
||||
- htdocs/includes/ckeditor
|
||||
- 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)
|
||||
* Edit tgz file to remove ckeditor and phpexcel and rename file into
|
||||
dolibarr-x.y.z+dsfgw.tgz
|
||||
(x.y.z = version, w start from 1 and is increased for each new import)
|
||||
|
||||
* Staying into git root directory, run
|
||||
> git-import-orig -vv ../dolibarr-x.y.z+dfsgw.tgz
|
||||
> git-import-orig -vv ../dolibarr-x.y.z+dsfgw.tgz
|
||||
and enter version when requested with format
|
||||
x.y.z+dfsgw
|
||||
x.y.z+dsfgw
|
||||
(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
|
||||
|
||||
* Add an entry into debian/changelog
|
||||
> dch -v x.y.z+dfsg-w "My comment" will add entry.
|
||||
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 "version" or "unstable" with "UNRELEASED".
|
||||
> dch -v x.y.z-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)
|
||||
Then modify changelog to replace "unstable" with "UNRELEASED".
|
||||
Then check/modify also the user/date signature:
|
||||
- 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).
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
# File used to disable access into directory documents
|
||||
<IfVersion >= 2.3>
|
||||
Require all denied
|
||||
</IfVersion>
|
||||
<IfVersion < 2.3>
|
||||
Order deny, allow
|
||||
Denied from all
|
||||
</IfVersion>
|
||||
Order deny,allow
|
||||
Deny from all
|
||||
</IfVersion>
|
||||
|
||||
@@ -10,26 +10,12 @@ Alias /dolibarr /usr/share/dolibarr/htdocs
|
||||
# DocumentRoot /usr/share/dolibarr/
|
||||
# ErrorLog logs/ldap.example.com-error.log
|
||||
# CustomLog logs/ldap.example.com-access.log common
|
||||
#
|
||||
# <IfVersion >= 2.3>
|
||||
# Require all granted
|
||||
# </IfVersion>
|
||||
# <IfVersion < 2.3>
|
||||
# Order allow,deny
|
||||
# Allow from all
|
||||
# </IfVersion>
|
||||
#
|
||||
# </VirtualHost>
|
||||
|
||||
# Directory for web pages
|
||||
<Directory /usr/share/dolibarr/htdocs>
|
||||
<IfVersion >= 2.3>
|
||||
Require all granted
|
||||
</IfVersion>
|
||||
<IfVersion < 2.3>
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</IfVersion>
|
||||
Order deny,allow
|
||||
Allow from all
|
||||
|
||||
DirectoryIndex index.php
|
||||
Options +FollowSymLinks +Indexes
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
dolibarr (3.7.2-3) UNRELEASED; urgency=low
|
||||
dolibarr (3.6.4-3) UNRELEASED; urgency=low
|
||||
|
||||
[ Laurent Destailleur (eldy) ]
|
||||
* New upstream release.
|
||||
|
||||
@@ -22,7 +22,7 @@ Depends: libapache2-mod-php5 | libapache2-mod-php5filter | php5-cgi | php5-fpm |
|
||||
# libnusoap-php,
|
||||
# libphp-pclzip,
|
||||
# Required javascript libraries
|
||||
# javascript-common, libjs-jquery, libjs-jquery-ui, libjs-jquery-flot, ckeditor,
|
||||
# libjs-jquery, libjs-jquery-ui, libjs-flot, ckeditor,
|
||||
# Misc dependencies
|
||||
# fonts-dejavu-core | ttf-dejavu-core,
|
||||
xdg-utils,
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
#!/bin/sh
|
||||
# Scan for new official sources and download file
|
||||
# run with debian/get-orig-source.sh [x.y.z]
|
||||
|
||||
tmpdir=$(mktemp -d)
|
||||
echo "tmpdir = $tmpdir"
|
||||
|
||||
|
||||
# Download source file
|
||||
if [ -n "$1" ]; then
|
||||
uscan_opts="--download-version=$1"
|
||||
fi
|
||||
|
||||
@@ -376,7 +376,7 @@ $cfg['DefaultConnectionCollation'] = 'utf8_unicode_ci';
|
||||
// libraries/select_lang.lib.php
|
||||
// $cfg['Lang'] = 'en-iso-8859-1';
|
||||
|
||||
// Regular expression to limit listed languages, eg. '^(cs|en)' for Czech and
|
||||
// Regullar expression to limit listed languages, eg. '^(cs|en)' for Czech and
|
||||
// English only
|
||||
$cfg['FilterLanguages'] = '';
|
||||
|
||||
|
||||
@@ -61,17 +61,13 @@ If you want to build/test package locally:
|
||||
|
||||
- List of series are visible here: https://launchpad.net/dolibarr/+series
|
||||
|
||||
# To update Dolibarr into launchpad (when remote repository for sources already exists)
|
||||
# To update Dolibarr into launchpad (when repository for sources already exists)
|
||||
#----------------------------------
|
||||
# create local repository
|
||||
cd bzr
|
||||
bzr branch lp:~yourlogin/dolibarr/[develop|beta|stable] dolibarr-[dev|beta|stable]
|
||||
bzr branch lp:~yourlogin/dolibarr/[dev|beta|stable]
|
||||
cd dolibarr-[dev|beta|stable]
|
||||
# Update
|
||||
bzr update
|
||||
-- Update files here. Remove all and overwrite --
|
||||
bzr status
|
||||
bzr add *
|
||||
-- Update files here --
|
||||
bzr commit -m "Description of change"
|
||||
bzr push
|
||||
|
||||
|
||||
@@ -22,7 +22,8 @@ $PUBLISHSTABLE="eldy,dolibarr\@frs.sourceforge.net:/home/frs/project/dolibarr";
|
||||
$PUBLISHBETARC="ldestailleur\@asso.dolibarr.org:/home/dolibarr/dolibarr.org/httpdocs/files";
|
||||
|
||||
|
||||
@LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","APS","EXEDOLIWAMP","SNAPSHOT"); # Possible packages
|
||||
#@LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","APS","EXEDOLIWAMP","SNAPSHOT"); # Possible packages
|
||||
@LISTETARGET=("TGZ","ZIP","RPM_GENERIC","RPM_FEDORA","RPM_MANDRIVA","RPM_OPENSUSE","DEB","EXEDOLIWAMP","SNAPSHOT"); # Possible packages
|
||||
%REQUIREMENTPUBLISH=(
|
||||
"SF"=>"git ssh rsync",
|
||||
"ASSO"=>"git ssh rsync"
|
||||
@@ -456,23 +457,21 @@ if ($nboftargetok) {
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/document`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/documents`;
|
||||
# Removed known external modules to avoir any error when packaging on test env
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/custom/*`; # For custom we want to keep dir
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/allscreens*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/ancotec*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/calling*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/bootstrap*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/custom*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/factory*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/management*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/multicompany*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/ndf*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/nltechno*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/oscim*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/pos*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/test`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/teclib*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/timesheet*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/oblyon*`;
|
||||
# Removed other test files
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/oblyon*`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/themes/eldy/*.new`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/public/test`;
|
||||
$ret=`rm -fr $BUILDROOT/$PROJECT/test`;
|
||||
@@ -983,7 +982,7 @@ if ($nboftargetok) {
|
||||
mkdir($DESTI.'/package_windows');
|
||||
if (-d $DESTI.'/package_windows') { $NEWDESTI=$DESTI.'/package_windows'; }
|
||||
|
||||
print "Remove target $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe...\n";
|
||||
print "Remove target $FILENAMEEXEDOLIWAMP.exe...\n";
|
||||
unlink "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe";
|
||||
|
||||
print "Check that in your Wine setup, you create a Z: drive that point to your / directory.\n";
|
||||
|
||||
300
build/makepack-dolibarrlang.pl
Executable file
300
build/makepack-dolibarrlang.pl
Executable file
@@ -0,0 +1,300 @@
|
||||
#!/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;
|
||||
@@ -8,19 +8,19 @@ This files describe steps made by Dolibarr packaging team to make a
|
||||
beta version of Dolibarr, step by step.
|
||||
|
||||
- Check all files are commited.
|
||||
- Update version/info in ChangeLog. To generate a changelog, you can do "git log x.y.z..HEAD --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^FIXED\|NEW'"
|
||||
- Update version/info in /ChangeLog
|
||||
- Update version number with x.y.z-w in htdocs/filefunc.inc.php
|
||||
- Update version number with x.y.z-w in build/debian/changelog
|
||||
- Update version number with x.y.z-w in build/exe/doliwamp/doliwamp.iss
|
||||
- Commit all changes.
|
||||
- Add a Tag (x.y.betaz_YYYYMMDD) and push it: git push --tags
|
||||
- Create a branch (x.y).
|
||||
|
||||
- Run makepack-dolibarr.pl to generate all packages.
|
||||
|
||||
- Move build files into www.dolibarr.org web site
|
||||
(/home/dolibarr/wwwroot/files/lastbuild).
|
||||
|
||||
- Post a news on dolibarr.org/dolibarr.fr + social networks
|
||||
- Post a news on dolibarr.org/dolibarr.fr
|
||||
- Send mail on mailings-list
|
||||
|
||||
|
||||
@@ -29,21 +29,20 @@ This files describe steps made by Dolibarr packaging team to make a
|
||||
complete release of Dolibarr, step by step.
|
||||
|
||||
- Check all files are commited.
|
||||
- Update version/info in ChangeLog. To generate a changelog, you can do "git log x.y.z..HEAD --no-merges --pretty=short --oneline | sed -e "s/^[0-9a-z]* //" | grep -e '^Fix\|New\|Sec'"
|
||||
- Update version/info in ChangeLog
|
||||
- Update version number with x.y.z in htdocs/filefunc.inc.php
|
||||
- Update version number with x.y.z in build/debian/changelog
|
||||
- Update version number with x.y.z in build/exe/doliwamp/doliwamp.iss
|
||||
- Commit all changes.
|
||||
|
||||
- Run makepack-dolibarr.pl to generate all packages.
|
||||
|
||||
- Build Dolibarr and DoliWamp packages with makepack-dolibarr.pl
|
||||
- Check content of built packages.
|
||||
- Move build files into www.dolibarr.org web site
|
||||
(/home/dolibarr/wwwroot/files/stable).
|
||||
|
||||
- Run makepack-dolibarr.pl again with option to publish files on
|
||||
sourceforge. This will also add official tag.
|
||||
- Edit symbolic links in directory "/home/dolibarr/wwwroot/files/stable/xxx"
|
||||
on server to point to new files (used by some web sites).
|
||||
|
||||
- Post a news on dolibarr.org/dolibarr.fr + social networks
|
||||
- Send mail on mailings-list
|
||||
- Send news on OpenSource web sites (if major beta or release)
|
||||
|
||||
@@ -29,18 +29,12 @@ To submit a snapshot for building, we should have a service file with content
|
||||
</services>
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
Then add into advanded - attributes
|
||||
OBS:Screenshots http://www.dolibarr.org/images/dolibarr_screenshot1.png
|
||||
OBS:QualityCategory Stable|Testing|Development|Private
|
||||
OBS:QualityCategory Testing
|
||||
|
||||
|
||||
# Move project into official directory
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# \file dolibarr.pl
|
||||
# \brief Dolibarr script install for Virtualmin Pro
|
||||
# \author (c)2009-2015 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
# \author (c)2009-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -30,7 +30,8 @@ return "Regis Houssin";
|
||||
# script_dolibarr_versions()
|
||||
sub script_dolibarr_versions
|
||||
{
|
||||
return ( "3.7.2", "3.6.3", "3.5.6" );
|
||||
# TODO Replace this with version of Dolibar we want to install
|
||||
return ( "x.y.z", "3.6.0");
|
||||
}
|
||||
|
||||
sub script_dolibarr_category
|
||||
@@ -56,26 +57,6 @@ local ($d, $ver) = @_;
|
||||
return ("mysql", "postgres");
|
||||
}
|
||||
|
||||
# script_dolibarr_depends(&domain, version)
|
||||
sub script_dolibarr_depends
|
||||
{
|
||||
local ($d, $ver, $sinfo, $phpver) = @_;
|
||||
local @rv;
|
||||
|
||||
if ($ver >= 3.6) {
|
||||
# Check for PHP 5.3+
|
||||
local $phpv = &get_php_version($phpver || 5, $d);
|
||||
if (!$phpv) {
|
||||
push(@rv, "Could not work out exact PHP version");
|
||||
}
|
||||
elsif ($phpv < 5.3) {
|
||||
push(@rv, "Dolibarr requires PHP version 5.3 or later");
|
||||
}
|
||||
}
|
||||
|
||||
return @rv;
|
||||
}
|
||||
|
||||
# script_dolibarr_params(&domain, version, &upgrade-info)
|
||||
# Returns HTML for table rows for options for installing dolibarr
|
||||
sub script_dolibarr_params
|
||||
@@ -97,7 +78,8 @@ else {
|
||||
$rv .= &ui_table_row("Database for Dolibarr tables",
|
||||
&ui_database_select("db", undef, \@dbs, $d, "dolibarr"));
|
||||
$rv .= &ui_table_row("Install sub-directory under <tt>$hdir</tt>",
|
||||
&ui_opt_textbox("dir", &substitute_scriptname_template("dolibarr", $d), 30, "At top level"));
|
||||
&ui_opt_textbox("dir", "dolibarr", 30,
|
||||
"At top level"));
|
||||
if ($d->{'ssl'} && $ver >= 3.0) {
|
||||
$rv .= &ui_table_row("Force https connection?",
|
||||
&ui_yesno_radio("forcehttps", 0));
|
||||
@@ -177,8 +159,7 @@ if ($opts->{'newdb'} && !$upgrade) {
|
||||
local ($dbtype, $dbname) = split(/_/, $opts->{'db'}, 2);
|
||||
local $dbuser = $dbtype eq "mysql" ? &mysql_user($d) : &postgres_user($d);
|
||||
local $dbpass = $dbtype eq "mysql" ? &mysql_pass($d) : &postgres_pass($d, 1);
|
||||
local $dbphptype = $dbtype eq "mysql" && $version >= 3.6 ? "mysql" :
|
||||
$dbtype eq "mysql" ? "mysqli" : "pgsql";
|
||||
local $dbphptype = $dbtype eq "mysql" ? "mysqli" : "pgsql";
|
||||
local $dbhost = &get_database_host($dbtype);
|
||||
local $dberr = &check_script_db_connection($dbtype, $dbname, $dbuser, $dbpass);
|
||||
return (0, "Database connection failed : $dberr") if ($dberr);
|
||||
@@ -220,10 +201,12 @@ if ($opts->{'path'} =~ /\w/) {
|
||||
if (!$upgrade) {
|
||||
local $cdef = "$opts->{'dir'}/conf/conf.php.example";
|
||||
&run_as_domain_user($d, "cp ".quotemeta($cdef)." ".quotemeta($cfile));
|
||||
&set_permissions_as_domain_user($d, 0777, $cfiledir);
|
||||
&set_permissions_as_domain_user($d, 0666, $cfile);
|
||||
&set_ownership_permissions(undef, undef, 0777, $cfiledir);
|
||||
&set_ownership_permissions(undef, undef, 0666, $cfile);
|
||||
&run_as_domain_user($d, "mkdir ".quotemeta($docdir));
|
||||
&set_permissions_as_domain_user($d, 0777, $docdir);
|
||||
&set_ownership_permissions(undef, undef, 0777, $docdir);
|
||||
&run_as_domain_user($d, "mkdir ".quotemeta($altdir));
|
||||
&set_ownership_permissions(undef, undef, 0777, $altdir);
|
||||
}
|
||||
else {
|
||||
# Preserve old config file, documents and custom directory
|
||||
@@ -306,8 +289,8 @@ else {
|
||||
local $dinstall = "$opts->{'dir'}/install";
|
||||
$dinstall =~ s/\/$//;
|
||||
$out = &run_as_domain_user($d, "rm -rf ".quotemeta($dinstall));
|
||||
&set_permissions_as_domain_user($d, 0644, $cfile);
|
||||
&set_permissions_as_domain_user($d, 0755, $cfiledir);
|
||||
&set_ownership_permissions(undef, undef, 0644, $cfile);
|
||||
&set_ownership_permissions(undef, undef, 0755, $cfiledir);
|
||||
}
|
||||
|
||||
# Return a URL for the user
|
||||
@@ -326,7 +309,6 @@ local $ipage = $opts->{'path'}."/install/".$page.".php";
|
||||
local ($iout, $ierror);
|
||||
|
||||
&post_http_connection($d, $ipage, $params, \$iout, \$ierror);
|
||||
print STDERR $iout;
|
||||
|
||||
if ($ierror) {
|
||||
return $ierror;
|
||||
@@ -347,10 +329,10 @@ local $derr = &delete_script_install_directory($d, $opts);
|
||||
return (0, $derr) if ($derr);
|
||||
|
||||
# Remove all llx_ tables from the database
|
||||
# 4 times because of constraints
|
||||
for(my $i=0; $i<4; $i++) {
|
||||
&cleanup_script_database($d, $opts->{'db'}, "llx_");
|
||||
}
|
||||
# 3 times because of constraints
|
||||
&cleanup_script_database($d, $opts->{'db'}, "llx_");
|
||||
&cleanup_script_database($d, $opts->{'db'}, "llx_");
|
||||
&cleanup_script_database($d, $opts->{'db'}, "llx_");
|
||||
|
||||
# Take out the DB
|
||||
if ($opts->{'newdb'}) {
|
||||
|
||||
@@ -5,3 +5,4 @@
|
||||
//
|
||||
// This file will be filled by installer
|
||||
//
|
||||
?>
|
||||
@@ -162,6 +162,7 @@ done >>%{name}.lang
|
||||
%_datadir/dolibarr/htdocs/asterisk
|
||||
%_datadir/dolibarr/htdocs/barcode
|
||||
%_datadir/dolibarr/htdocs/bookmarks
|
||||
%_datadir/dolibarr/htdocs/boutique
|
||||
%_datadir/dolibarr/htdocs/cashdesk
|
||||
%_datadir/dolibarr/htdocs/categories
|
||||
%_datadir/dolibarr/htdocs/comm
|
||||
|
||||
@@ -242,6 +242,7 @@ done >>%{name}.lang
|
||||
%_datadir/dolibarr/htdocs/asterisk
|
||||
%_datadir/dolibarr/htdocs/barcode
|
||||
%_datadir/dolibarr/htdocs/bookmarks
|
||||
%_datadir/dolibarr/htdocs/boutique
|
||||
%_datadir/dolibarr/htdocs/cashdesk
|
||||
%_datadir/dolibarr/htdocs/categories
|
||||
%_datadir/dolibarr/htdocs/comm
|
||||
|
||||
@@ -159,6 +159,7 @@ done >>%{name}.lang
|
||||
%_datadir/dolibarr/htdocs/asterisk
|
||||
%_datadir/dolibarr/htdocs/barcode
|
||||
%_datadir/dolibarr/htdocs/bookmarks
|
||||
%_datadir/dolibarr/htdocs/boutique
|
||||
%_datadir/dolibarr/htdocs/cashdesk
|
||||
%_datadir/dolibarr/htdocs/categories
|
||||
%_datadir/dolibarr/htdocs/comm
|
||||
|
||||
@@ -170,6 +170,7 @@ done >>%{name}.lang
|
||||
%_datadir/dolibarr/htdocs/asterisk
|
||||
%_datadir/dolibarr/htdocs/barcode
|
||||
%_datadir/dolibarr/htdocs/bookmarks
|
||||
%_datadir/dolibarr/htdocs/boutique
|
||||
%_datadir/dolibarr/htdocs/cashdesk
|
||||
%_datadir/dolibarr/htdocs/categories
|
||||
%_datadir/dolibarr/htdocs/comm
|
||||
|
||||
@@ -24,8 +24,6 @@
|
||||
"ext-mcrypt": "*",
|
||||
"ext-openssl": "*",
|
||||
"ext-mbstring": "*",
|
||||
"ext-soap": "*",
|
||||
"ext-zip": "*",
|
||||
"ext-xml": "*"
|
||||
"ext-soap": "*"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,16 +12,10 @@
|
||||
|
||||
<!-- List of all tests -->
|
||||
|
||||
|
||||
<!-- Rules from Internal Standard -->
|
||||
|
||||
<rule ref="Internal.NoCodeFound">
|
||||
<severity>0</severity>
|
||||
</rule>
|
||||
|
||||
|
||||
<!-- Rules from Generic Standard -->
|
||||
|
||||
<rule ref="Generic.CodeAnalysis.EmptyStatement" />
|
||||
|
||||
<rule ref="Generic.CodeAnalysis.EmptyStatement.DetectedCATCH">
|
||||
@@ -47,6 +41,9 @@
|
||||
<severity>0</severity>
|
||||
</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.ForLoopWithTestFunctionCall" />
|
||||
@@ -164,6 +161,8 @@
|
||||
<severity>0</severity>
|
||||
</rule>
|
||||
|
||||
<rule ref="Generic.VersionControl.SubversionProperties" />
|
||||
|
||||
<!-- Disallow usage of tab -->
|
||||
<!-- <rule ref="Generic.WhiteSpace.DisallowTabIndent" /> -->
|
||||
|
||||
@@ -171,10 +170,6 @@
|
||||
<!-- Disabled as this does not support tab -->
|
||||
<!-- <rule ref="Generic.WhiteSpace.ScopeIndent" /> -->
|
||||
|
||||
|
||||
|
||||
<!-- Rules from PEAR Standard -->
|
||||
|
||||
<rule ref="PEAR.Classes.ClassDeclaration" />
|
||||
|
||||
<!-- Check for duplicate class names -->
|
||||
@@ -218,40 +213,6 @@
|
||||
<rule ref="PEAR.Commenting.FunctionComment.Missing">
|
||||
<severity>0</severity>
|
||||
</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.ClassComment.Missing@authorTag">
|
||||
<severity>0</severity>
|
||||
@@ -410,13 +371,13 @@
|
||||
<rule ref="PEAR.NamingConventions.ValidFunctionName.FunctionNoCaptial">
|
||||
<severity>0</severity>
|
||||
</rule>
|
||||
|
||||
<rule ref="PEAR.NamingConventions.ValidFunctionName.NotCamelCaps">
|
||||
<severity>0</severity>
|
||||
</rule>
|
||||
<rule ref="PEAR.NamingConventions.ValidFunctionName.PrivateNoUnderscore">
|
||||
<severity>0</severity>
|
||||
</rule>
|
||||
|
||||
<rule ref="PEAR.NamingConventions.ValidVariableName" />
|
||||
|
||||
<rule ref="PEAR.WhiteSpace.ObjectOperatorIndent" />
|
||||
@@ -434,10 +395,4 @@
|
||||
<!-- Already found as a Generic rule -->
|
||||
<!-- <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>
|
||||
|
||||
26
dev/dbmodel/emulate_oscommerce/llx_osc_categories.sql
Executable file
26
dev/dbmodel/emulate_oscommerce/llx_osc_categories.sql
Executable file
@@ -0,0 +1,26 @@
|
||||
-- ===================================================================
|
||||
-- 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;
|
||||
20
dev/dbmodel/emulate_oscommerce/llx_osc_customer.key.sql
Executable file
20
dev/dbmodel/emulate_oscommerce/llx_osc_customer.key.sql
Executable file
@@ -0,0 +1,20 @@
|
||||
-- ===================================================================
|
||||
-- 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);
|
||||
25
dev/dbmodel/emulate_oscommerce/llx_osc_customer.sql
Executable file
25
dev/dbmodel/emulate_oscommerce/llx_osc_customer.sql
Executable file
@@ -0,0 +1,25 @@
|
||||
-- ===================================================================
|
||||
-- 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;
|
||||
25
dev/dbmodel/emulate_oscommerce/llx_osc_order.sql
Executable file
25
dev/dbmodel/emulate_oscommerce/llx_osc_order.sql
Executable file
@@ -0,0 +1,25 @@
|
||||
-- ===================================================================
|
||||
-- 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;
|
||||
27
dev/dbmodel/emulate_oscommerce/llx_osc_product.sql
Executable file
27
dev/dbmodel/emulate_oscommerce/llx_osc_product.sql
Executable file
@@ -0,0 +1,27 @@
|
||||
-- ===================================================================
|
||||
-- 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;
|
||||
|
||||
|
||||
34
dev/deduplicatefilelinesrecursively.sh
Executable file
34
dev/deduplicatefilelinesrecursively.sh
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/sh
|
||||
# Recursively deduplicate file lines on a per file basis
|
||||
# Useful to deduplicate language files
|
||||
#
|
||||
# Needs awk 4.0 for the inplace fixing command
|
||||
#
|
||||
# Raphaël Doursenaud - rdoursenaud@gpcsolutions.fr
|
||||
|
||||
# Syntax
|
||||
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
|
||||
then
|
||||
echo "Usage: deduplicatefilelinesrecursively.sh [list|fix]"
|
||||
fi
|
||||
|
||||
# To detect
|
||||
if [ "x$1" = "xlist" ]
|
||||
then
|
||||
for file in `find . -type f -name *.lang`
|
||||
do
|
||||
if [ `sort "$file" | uniq -d | wc -l` -gt 0 ]
|
||||
then
|
||||
echo "$file"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# To fix
|
||||
if [ "x$1" = "xfix" ]
|
||||
then
|
||||
for file in `find . -type f -name *.lang`
|
||||
do
|
||||
awk -i inplace ' !x[$0]++' "$file"
|
||||
done;
|
||||
fi
|
||||
21
dev/detectduplicatelangkey.sh
Executable file
21
dev/detectduplicatelangkey.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/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
|
||||
@@ -1,26 +0,0 @@
|
||||
#!/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,8 +44,6 @@ In htdocs/includes/tcpdf/tcpdf.php
|
||||
- protected $default_monospaced_font = 'courier';
|
||||
+ protected $default_monospaced_font = 'freemono';
|
||||
|
||||
* Renamed getmypid into dol_getmypid().
|
||||
|
||||
|
||||
JSGANTT:
|
||||
--------
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Recursively deduplicate file lines on a per file basis
|
||||
# Useful to deduplicate language files
|
||||
#
|
||||
# Needs awk 4.0 for the inplace fixing command
|
||||
#
|
||||
# Raphaël Doursenaud - rdoursenaud@gpcsolutions.fr
|
||||
|
||||
# Syntax
|
||||
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
|
||||
then
|
||||
echo "Scan alternate language files and remove entries found into parent file"
|
||||
echo "Usage: fixaltlanguages.sh (list|fix) (all|file.lang) [xx_XX]"
|
||||
exit
|
||||
fi
|
||||
if [ "x$2" = "x" ]
|
||||
then
|
||||
echo "Scan alternate language files and remove entries found into parent file"
|
||||
echo "Usage: fixaltlanguages.sh (list|fix) (all|file.lang) [xx_XX]"
|
||||
exit
|
||||
fi
|
||||
|
||||
# To detect
|
||||
if [ "x$1" = "xlist" ]
|
||||
then
|
||||
echo Feature not available
|
||||
fi
|
||||
|
||||
# To fix
|
||||
if [ "x$1" = "xfix" ]
|
||||
then
|
||||
for dir in `find htdocs/langs/$3* -type d`
|
||||
do
|
||||
dirshort=`basename $dir`
|
||||
|
||||
#echo $dirshort
|
||||
|
||||
export aa=`echo $dirshort | nawk -F"_" '{ print $1 }'`
|
||||
export bb=`echo $dirshort | nawk -F"_" '{ print $2 }'`
|
||||
aaupper=`echo $dirshort | nawk -F"_" '{ print toupper($1) }'`
|
||||
if [ $aaupper = "EN" ]
|
||||
then
|
||||
aaupper="US"
|
||||
fi
|
||||
bblower=`echo $dirshort | nawk -F"_" '{ print tolower($2) }'`
|
||||
if [ "$aa" != "$bblower" -a "$dirshort" != "en_US" ]
|
||||
then
|
||||
reflang="htdocs/langs/"$aa"_"$aaupper
|
||||
if [ -d $reflang ]
|
||||
then
|
||||
echo "***** Process language "$aa"_"$bb" - Search original into "$reflang
|
||||
echo $dirshort is an alternative language of $reflang
|
||||
echo ./dev/translation/strip_language_file.php $aa"_"$aaupper $aa"_"$bb $2
|
||||
./dev/translation/strip_language_file.php $aa"_"$aaupper $aa"_"$bb $2
|
||||
for fic in `ls htdocs/langs/${aa}_${bb}/*.delta`; do f=`echo $fic | sed -e 's/\.delta//'`; echo $f; mv $f.delta $f; done
|
||||
for fic in `ls htdocs/langs/${aa}_${bb}/*.lang`;
|
||||
do f=`cat $fic | wc -l`;
|
||||
#echo $f lines into file $fic;
|
||||
if [ $f = 1 ]
|
||||
then
|
||||
echo Only one line remainging into file $fic, we delete it;
|
||||
rm $fic
|
||||
fi;
|
||||
done
|
||||
fi
|
||||
fi
|
||||
done;
|
||||
fi
|
||||
@@ -10,7 +10,6 @@
|
||||
# Syntax
|
||||
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
|
||||
then
|
||||
echo "Detect and fix files ending with bad ending chars (must be LF)"
|
||||
echo "Usage: fixdosfiles.sh [list|fix]"
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
#!/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 "Detect duplicate translation keys inside a file (there is no cross file check)."
|
||||
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,36 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Recursively deduplicate file lines on a per file basis
|
||||
# Useful to deduplicate language files
|
||||
#
|
||||
# Needs awk 4.0 for the inplace fixing command
|
||||
#
|
||||
# Raphaël Doursenaud - rdoursenaud@gpcsolutions.fr
|
||||
|
||||
# Syntax
|
||||
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
|
||||
then
|
||||
echo "Find exact duplicated lines into file (not cross file checking)"
|
||||
echo "Usage: deduplicatefilelinesrecursively.sh [list|fix]"
|
||||
fi
|
||||
|
||||
# To detect
|
||||
if [ "x$1" = "xlist" ]
|
||||
then
|
||||
for file in `find htdocs/langs/en_US -type f -name *.lang`
|
||||
do
|
||||
if [ `sort "$file" | grep -v '^$' | uniq -d | wc -l` -gt 0 ]
|
||||
then
|
||||
echo "***** $file"
|
||||
sort "$file" | grep -v '^$' | uniq -d
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# To fix
|
||||
if [ "x$1" = "xfix" ]
|
||||
then
|
||||
for file in `find htdocs/langs/en_US -type f -name *.lang`
|
||||
do
|
||||
awk -i inplace ' !x[$0]++' "$file"
|
||||
done;
|
||||
fi
|
||||
26
dev/fixnotabfiles.sh
Executable file
26
dev/fixnotabfiles.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/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
|
||||
@@ -10,7 +10,6 @@
|
||||
# Syntax
|
||||
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
|
||||
then
|
||||
echo "Fix permissions of files"
|
||||
echo "Usage: fixperms.sh (list|fix)"
|
||||
fi
|
||||
|
||||
@@ -26,6 +25,4 @@ then
|
||||
find ./htdocs -type f -iname "*.php" -exec chmod a-x {} \;
|
||||
chmod a+x ./scripts/*/*.php
|
||||
chmod a+x ./scripts/*/*.sh
|
||||
chmod g-w ./scripts/*/*.php
|
||||
chmod g-w ./scripts/*/*.sh
|
||||
fi
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
# Syntax
|
||||
if [ "x$1" != "xlist" -a "x$1" != "xfix" ]
|
||||
then
|
||||
echo "Detect and fix bad UTF8 encoded files (UTF8 must not use BOM char)"
|
||||
echo "Usage: fixutf8bomfiles.sh (list|fix) [addincludes]"
|
||||
fi
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ while ($i < GEN_NUMBER_FACTURE && $result >= 0)
|
||||
|
||||
print "Invoice ".$i." for socid ".$socid;
|
||||
|
||||
$facture = new Facture($db);
|
||||
$facture = new Facture($db, $socids[$socid]);
|
||||
$facture->date = time();
|
||||
$facture->cond_reglement_id = 3;
|
||||
$facture->mode_reglement_id = 3;
|
||||
|
||||
@@ -122,7 +122,7 @@ while ($i < GEN_NUMBER_PROPAL && $result >= 0)
|
||||
$soc = new Societe($db);
|
||||
|
||||
|
||||
$propal = new Propal($db);
|
||||
$propal = new Propal($db, $socids[$socid]);
|
||||
|
||||
$obj = $conf->global->PROPALE_ADDON;
|
||||
$modPropale = new $obj;
|
||||
@@ -130,7 +130,6 @@ while ($i < GEN_NUMBER_PROPAL && $result >= 0)
|
||||
|
||||
$propal->ref = $numpr;
|
||||
$propal->contactid = $contids[$socids[$socid]][0];
|
||||
$propal->socid = $socids[$socid];
|
||||
$propal->datep = time();
|
||||
$propal->cond_reglement_id = 3;
|
||||
$propal->mode_reglement_id = 3;
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -193,15 +193,13 @@ export list="
|
||||
--ignore-table=$base.llx_cabinetmed_societe
|
||||
--ignore-table=$base.llx_fournisseur_ca
|
||||
--ignore-table=$base.llx_google_maps
|
||||
--ignore-table=$base.llx_notes
|
||||
--ignore-table=$base.llx_pos_paiement_ticket
|
||||
--ignore-table=$base.llx_pos_places
|
||||
--ignore-table=$base.llx_pos_ticket
|
||||
--ignore-table=$base.llx_publi_c_contact_list
|
||||
--ignore-table=$base.llx_publi_c_dnd_list
|
||||
--ignore-table=$base.llx_publi_c_method_list
|
||||
--ignore-table=$base.llx_ultimatepdf
|
||||
--ignore-table=$base.llx_ventilation_achat
|
||||
--ignore-table=$base.llx_ultimatepdf
|
||||
"
|
||||
echo "mysqldump -P$port -u$admin -p***** $list $base > $mydir/$dumpfile"
|
||||
mysqldump -P$port -u$admin $passwd $list $base > $mydir/$dumpfile
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
#!/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);
|
||||
@@ -1,233 +0,0 @@
|
||||
#!/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.= \" ";
|
||||
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.=')."\'")."';
|
||||
$varprop.='))."';
|
||||
if ($i < count($property)) $varprop.=",";
|
||||
$varprop.='";';
|
||||
$varprop.="\";";
|
||||
}
|
||||
elseif ($prop['ischar'])
|
||||
{
|
||||
|
||||
@@ -113,9 +113,9 @@ class modMyModule extends DolibarrModules
|
||||
$this->const = array();
|
||||
|
||||
// Array to add new pages in new tabs
|
||||
// Example: $this->tabs = array('objecttype:+tabname1:Title1:mylangfile@mymodule:$user->rights->mymodule->read:/mymodule/mynewtab1.php?id=__ID__', // To add a new tab identified by code tabname1
|
||||
// 'objecttype:+tabname2:SUBSTITUTION_Title2:mylangfile@mymodule:$user->rights->othermodule->read:/mymodule/mynewtab2.php?id=__ID__', // To add another new tab identified by code tabname2. Label will be result of calling all substitution functions on 'Title2' key.
|
||||
// 'objecttype:-tabname:NU:conditiontoremove'); // To remove an existing tab identified by code tabname
|
||||
// Example: $this->tabs = array('objecttype:+tabname1:Title1:mylangfile@mymodule:$user->rights->mymodule->read:/mymodule/mynewtab1.php?id=__ID__', // To add a new tab identified by code tabname1
|
||||
// 'objecttype:+tabname2:Title2:mylangfile@mymodule:$user->rights->othermodule->read:/mymodule/mynewtab2.php?id=__ID__', // To add another new tab identified by code tabname2
|
||||
// 'objecttype:-tabname:NU:conditiontoremove'); // To remove an existing tab identified by code tabname
|
||||
// where objecttype can be
|
||||
// 'categories_x' to add a tab in category view (replace 'x' by type of category (0=product, 1=supplier, 2=customer, 3=member)
|
||||
// 'contact' to add a tab in contact view
|
||||
@@ -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.
|
||||
// Example:
|
||||
// $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used)
|
||||
// $this->rights[$r][0] = 2000; // Permission id (must not be already used)
|
||||
// $this->rights[$r][1] = 'Permision label'; // Permission label
|
||||
// $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)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<?php
|
||||
/* 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---
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -80,7 +79,7 @@ class Skeleton_Class extends CommonObject
|
||||
// Put here code to add control on parameters values
|
||||
|
||||
// Insert request
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element."(";
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."mytable(";
|
||||
$sql.= " field1,";
|
||||
$sql.= " field2";
|
||||
//...
|
||||
@@ -92,13 +91,13 @@ class Skeleton_Class extends CommonObject
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
dol_syslog(__METHOD__, LOG_DEBUG);
|
||||
dol_syslog(get_class($this)."::create sql=".$sql, LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX.$this->table_element);
|
||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."mytable");
|
||||
|
||||
if (! $notrigger)
|
||||
{
|
||||
@@ -106,8 +105,10 @@ class Skeleton_Class extends CommonObject
|
||||
// want this action calls a trigger.
|
||||
|
||||
//// Call triggers
|
||||
//$result=$this->call_trigger('MYOBJECT_CREATE',$user);
|
||||
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
|
||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
//$interface=new Interfaces($this->db);
|
||||
//$result=$interface->run_triggers('MYOBJECT_CREATE',$this,$user,$langs,$conf);
|
||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
//// End call triggers
|
||||
}
|
||||
}
|
||||
@@ -117,7 +118,7 @@ class Skeleton_Class extends CommonObject
|
||||
{
|
||||
foreach($this->errors as $errmsg)
|
||||
{
|
||||
dol_syslog(__METHOD__." ".$errmsg, LOG_ERR);
|
||||
dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR);
|
||||
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||
}
|
||||
$this->db->rollback();
|
||||
@@ -134,11 +135,10 @@ class Skeleton_Class extends CommonObject
|
||||
/**
|
||||
* Load object in memory from the database
|
||||
*
|
||||
* @param int $id Id object
|
||||
* @param string $ref Ref
|
||||
* @param int $id Id object
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function fetch($id,$ref='')
|
||||
function fetch($id)
|
||||
{
|
||||
global $langs;
|
||||
$sql = "SELECT";
|
||||
@@ -146,11 +146,10 @@ class Skeleton_Class extends CommonObject
|
||||
$sql.= " t.field1,";
|
||||
$sql.= " t.field2";
|
||||
//...
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as t";
|
||||
if ($ref) $sql.= " WHERE t.ref = '".$ref."'";
|
||||
else $sql.= " WHERE t.rowid = ".$id;
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."mytable as t";
|
||||
$sql.= " WHERE t.rowid = ".$id;
|
||||
|
||||
dol_syslog(get_class($this)."::fetch");
|
||||
dol_syslog(get_class($this)."::fetch sql=".$sql, LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@@ -170,6 +169,7 @@ class Skeleton_Class extends CommonObject
|
||||
else
|
||||
{
|
||||
$this->error="Error ".$this->db->lasterror();
|
||||
dol_syslog(get_class($this)."::fetch ".$this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -182,7 +182,7 @@ class Skeleton_Class extends CommonObject
|
||||
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function update($user, $notrigger=0)
|
||||
function update($user=0, $notrigger=0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
$error=0;
|
||||
@@ -196,7 +196,7 @@ class Skeleton_Class extends CommonObject
|
||||
// Put here code to add a control on parameters values
|
||||
|
||||
// Update request
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET";
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."mytable SET";
|
||||
$sql.= " field1=".(isset($this->field1)?"'".$this->db->escape($this->field1)."'":"null").",";
|
||||
$sql.= " field2=".(isset($this->field2)?"'".$this->db->escape($this->field2)."'":"null")."";
|
||||
//...
|
||||
@@ -204,7 +204,7 @@ class Skeleton_Class extends CommonObject
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
dol_syslog(__METHOD__);
|
||||
dol_syslog(get_class($this)."::update sql=".$sql, LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||
|
||||
@@ -216,10 +216,12 @@ class Skeleton_Class extends CommonObject
|
||||
// want this action calls a trigger.
|
||||
|
||||
//// Call triggers
|
||||
//$result=$this->call_trigger('MYOBJECT_MODIFY',$user);
|
||||
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
|
||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
//$interface=new Interfaces($this->db);
|
||||
//$result=$interface->run_triggers('MYOBJECT_MODIFY',$this,$user,$langs,$conf);
|
||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
//// End call triggers
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Commit or rollback
|
||||
@@ -227,7 +229,7 @@ class Skeleton_Class extends CommonObject
|
||||
{
|
||||
foreach($this->errors as $errmsg)
|
||||
{
|
||||
dol_syslog(__METHOD__." ".$errmsg, LOG_ERR);
|
||||
dol_syslog(get_class($this)."::update ".$errmsg, LOG_ERR);
|
||||
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||
}
|
||||
$this->db->rollback();
|
||||
@@ -262,19 +264,21 @@ class Skeleton_Class extends CommonObject
|
||||
// Uncomment this and change MYOBJECT to your own tag if you
|
||||
// want this action calls a trigger.
|
||||
|
||||
//// Call triggers
|
||||
//$result=$this->call_trigger('MYOBJECT_DELETE',$user);
|
||||
//if ($result < 0) { $error++; //Do also what you must do to rollback action if trigger fail}
|
||||
//// End call triggers
|
||||
//// Call triggers
|
||||
//include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php';
|
||||
//$interface=new Interfaces($this->db);
|
||||
//$result=$interface->run_triggers('MYOBJECT_DELETE',$this,$user,$langs,$conf);
|
||||
//if ($result < 0) { $error++; $this->errors=$interface->errors; }
|
||||
//// End call triggers
|
||||
}
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
{
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX.$this->table_element;
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."mytable";
|
||||
$sql.= " WHERE rowid=".$this->id;
|
||||
|
||||
dol_syslog(__METHOD__);
|
||||
dol_syslog(get_class($this)."::delete sql=".$sql);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
|
||||
}
|
||||
@@ -284,7 +288,7 @@ class Skeleton_Class extends CommonObject
|
||||
{
|
||||
foreach($this->errors as $errmsg)
|
||||
{
|
||||
dol_syslog(__METHOD__." ".$errmsg, LOG_ERR);
|
||||
dol_syslog(get_class($this)."::delete ".$errmsg, LOG_ERR);
|
||||
$this->error.=($this->error?', '.$errmsg:$errmsg);
|
||||
}
|
||||
$this->db->rollback();
|
||||
|
||||
@@ -43,7 +43,6 @@ 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) die("Include of main fails");
|
||||
// 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');
|
||||
|
||||
// Load traductions files requiredby by page
|
||||
@@ -53,7 +52,6 @@ $langs->load("other");
|
||||
// Get parameters
|
||||
$id = GETPOST('id','int');
|
||||
$action = GETPOST('action','alpha');
|
||||
$backtopage = GETPOST('backtopage');
|
||||
$myparam = GETPOST('myparam','alpha');
|
||||
|
||||
// Protection if external user
|
||||
@@ -62,16 +60,6 @@ if ($user->societe_id > 0)
|
||||
//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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
@@ -80,104 +68,19 @@ if (($id > 0 || ! empty($ref)) && $action != 'add')
|
||||
* Put here all code to do according to value of "action" parameter
|
||||
********************************************************************/
|
||||
|
||||
// Action to add record
|
||||
if ($action == 'add')
|
||||
{
|
||||
if (GETPOST('cancel'))
|
||||
{
|
||||
$urltogo=$backtopage?$backtopage:dol_buildpath('/buildingmanagement/list.php',1);
|
||||
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);
|
||||
$object=new Skeleton_Class($db);
|
||||
$object->prop1=$_POST["field1"];
|
||||
$object->prop2=$_POST["field2"];
|
||||
$result=$object->create($user);
|
||||
if ($result > 0)
|
||||
{
|
||||
// Delete OK
|
||||
setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs');
|
||||
header("Location: ".dol_buildpath('/buildingmanagement/list.php',1));
|
||||
exit;
|
||||
// Creation OK
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! empty($object->errors)) setEventMessages(null,$object->errors,'errors');
|
||||
else setEventMessages($object->error,null,'errors');
|
||||
// Creation KO
|
||||
$mesg=$object->error;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,7 +101,7 @@ $form=new Form($db);
|
||||
|
||||
// Put here content of your page
|
||||
|
||||
// Example : Adding jquery code
|
||||
// Example 1 : Adding jquery code
|
||||
print '<script type="text/javascript" language="javascript">
|
||||
jQuery(document).ready(function() {
|
||||
function init_myfunc()
|
||||
@@ -214,8 +117,13 @@ jQuery(document).ready(function() {
|
||||
</script>';
|
||||
|
||||
|
||||
// Part to show a list
|
||||
if ($action == 'list' || empty($id))
|
||||
// Example 2 : Adding links to objects
|
||||
// The class must extends CommonObject class to have this method available
|
||||
//$somethingshown=$object->showLinkedObjectBlock();
|
||||
|
||||
|
||||
// Example 3 : List of data
|
||||
if ($action == 'list')
|
||||
{
|
||||
$sql = "SELECT";
|
||||
$sql.= " t.rowid,";
|
||||
@@ -231,24 +139,27 @@ if ($action == 'list' || empty($id))
|
||||
print_liste_field_titre($langs->trans('field2'),$_SERVER['PHP_SELF'],'t.field2','',$param,'',$sortfield,$sortorder);
|
||||
print '</tr>';
|
||||
|
||||
dol_syslog($script_file, LOG_DEBUG);
|
||||
dol_syslog($script_file." sql=".$sql, LOG_DEBUG);
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
if ($num)
|
||||
{
|
||||
$obj = $db->fetch_object($resql);
|
||||
if ($obj)
|
||||
while ($i < $num)
|
||||
{
|
||||
// You can use here results
|
||||
print '<tr><td>';
|
||||
print $obj->field1;
|
||||
print $obj->field2;
|
||||
print '</td></tr>';
|
||||
$obj = $db->fetch_object($resql);
|
||||
if ($obj)
|
||||
{
|
||||
// You can use here results
|
||||
print '<tr><td>';
|
||||
print $obj->field1;
|
||||
print $obj->field2;
|
||||
print '</td></tr>';
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -262,102 +173,6 @@ if ($action == 'list' || empty($id))
|
||||
|
||||
|
||||
|
||||
// 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
|
||||
llxFooter();
|
||||
$db->close();
|
||||
|
||||
@@ -57,7 +57,7 @@ if (! $result > 0) { dol_print_error('',$user->error); exit; }
|
||||
$user->getrights();
|
||||
|
||||
|
||||
print "***** ".$script_file." (".$version.") pid=".dol_getmypid()." *****\n";
|
||||
print "***** ".$script_file." (".$version.") pid=".getmypid()." *****\n";
|
||||
if (! isset($argv[1])) { // Check parameters
|
||||
print "Usage: ".$script_file." param1 param2 ...\n";
|
||||
exit(-1);
|
||||
@@ -119,7 +119,7 @@ $sql.= " FROM ".MAIN_DB_PREFIX."skeleton";
|
||||
$sql.= " WHERE field3 = 'xxx'";
|
||||
$sql.= " ORDER BY field1 ASC";
|
||||
|
||||
dol_syslog($script_file, LOG_DEBUG);
|
||||
dol_syslog($script_file." sql=".$sql, LOG_DEBUG);
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
|
||||
@@ -141,7 +141,7 @@ $server->register(
|
||||
* @param array $authentication Array of authentication information
|
||||
* @param int $id Id of object
|
||||
* @param string $ref Ref of object
|
||||
* @param string $ref_ext Ref external of object
|
||||
* @param ref_ext $ref_ext Ref external of object
|
||||
* @return mixed
|
||||
*/
|
||||
function getSkeleton($authentication,$id,$ref='',$ref_ext='')
|
||||
@@ -269,4 +269,5 @@ function createSkeleton($authentication,$skeleton)
|
||||
}
|
||||
|
||||
// Return the results.
|
||||
$server->service(file_get_contents("php://input"));
|
||||
$server->service($HTTP_RAW_POST_DATA);
|
||||
|
||||
|
||||
@@ -1,22 +1,9 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
/* Copyright (C) 2014 by FromDual GmbH, licensed under GPL v2
|
||||
* Copyright (C) 2014 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
/*
|
||||
* strip_language_file.php
|
||||
*
|
||||
* 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/>.
|
||||
*
|
||||
* -----
|
||||
* (c) 2014 by FromDual GmbH, licensed under GPL v2
|
||||
*
|
||||
* Compares a secondary language translation file with its primary
|
||||
* language file and strips redundant translations.
|
||||
@@ -25,10 +12,11 @@
|
||||
*
|
||||
* Usage:
|
||||
* cd htdocs/langs
|
||||
* ./dev/translation/strip_language_file.php <primary_lang_dir> <secondary_lang_dir> [file.lang|all]
|
||||
* ../../dev/translation/strip_language_file.php <primary_lang_dir> <secondary_lang_dir> <languagefile.lang>
|
||||
*
|
||||
* To rename all .delta files, you can do
|
||||
* for fic in `ls *.delta`; do f=`echo $fic | sed -e 's/\.delta//'`; echo $f; mv $f.delta $f; done
|
||||
* Parameters:
|
||||
* 1 - Primary Language
|
||||
* 2 - Secondary Language
|
||||
*
|
||||
* Rules:
|
||||
* secondary string == primary string -> strip
|
||||
@@ -36,6 +24,9 @@
|
||||
* secondary string not in primary -> strip and warning
|
||||
* secondary string has no value -> strip and warning
|
||||
* 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
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -60,26 +51,24 @@ $rc = 0;
|
||||
|
||||
$lPrimary = isset($argv[1])?$argv[1]:'';
|
||||
$lSecondary = isset($argv[2])?$argv[2]:'';
|
||||
$lEnglish = 'en_US';
|
||||
$filesToProcess = isset($argv[3])?$argv[3]:'';
|
||||
|
||||
if (empty($lPrimary) || empty($lSecondary) || empty($filesToProcess))
|
||||
{
|
||||
$rc = 1;
|
||||
$msg = '***** Script to clean language files *****'."\n";
|
||||
$msg.= 'Usage: ./dev/translation/strip_language_file.php xx_XX xx_YY [file.lang|all]'."\n";
|
||||
$msg.= 'Usage: ../../dev/translation/strip_language_file.php xx_XX xx_YY [file.lang|all]'."\n";
|
||||
print $msg . "(rc=$rc).\n";
|
||||
exit($rc);
|
||||
}
|
||||
|
||||
$aPrimary = array();
|
||||
$aSecondary = array();
|
||||
$aEnglish = array();
|
||||
|
||||
// Define array $filesToProcess
|
||||
if ($filesToProcess == 'all')
|
||||
{
|
||||
$dir = new DirectoryIterator('htdocs/langs/'.$lPrimary);
|
||||
$dir = new DirectoryIterator($lPrimary);
|
||||
while($dir->valid()) {
|
||||
if(!$dir->isDot() && $dir->isFile() && ! preg_match('/^\./',$dir->getFilename())) {
|
||||
$files[] = $dir->getFilename();
|
||||
@@ -96,9 +85,8 @@ else $filesToProcess=explode(',',$filesToProcess);
|
||||
// Loop on each file
|
||||
foreach($filesToProcess as $fileToProcess)
|
||||
{
|
||||
$lPrimaryFile = 'htdocs/langs/'.$lPrimary.'/'.$fileToProcess;
|
||||
$lSecondaryFile = 'htdocs/langs/'.$lSecondary.'/'.$fileToProcess;
|
||||
$lEnglishFile = 'htdocs/langs/'.$lEnglish.'/'.$fileToProcess;
|
||||
$lPrimaryFile = $lPrimary.'/'.$fileToProcess;
|
||||
$lSecondaryFile = $lSecondary.'/'.$fileToProcess;
|
||||
$output = $lSecondaryFile . '.delta';
|
||||
|
||||
print "---- Process language file ".$lSecondaryFile."\n";
|
||||
@@ -117,13 +105,6 @@ foreach($filesToProcess as $fileToProcess)
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( ! is_readable($lEnglishFile) ) {
|
||||
$rc = 3;
|
||||
$msg = "Cannot read english language file $lEnglishFile. We discard this file.";
|
||||
print $msg . "\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
// Start reading and parsing Secondary
|
||||
|
||||
if ( $handle = fopen($lSecondaryFile, 'r') )
|
||||
@@ -182,65 +163,6 @@ foreach($filesToProcess as $fileToProcess)
|
||||
}
|
||||
|
||||
|
||||
// Start reading and parsing English
|
||||
|
||||
if ( $handle = fopen($lEnglishFile, 'r') )
|
||||
{
|
||||
print "Read English File $lEnglishFile:\n";
|
||||
$cnt = 0;
|
||||
while (($line = fgets($handle)) !== false)
|
||||
{
|
||||
$cnt++;
|
||||
|
||||
// strip comments
|
||||
if ( preg_match("/^\w*#/", $line) ) {
|
||||
continue;
|
||||
}
|
||||
// strip empty lines
|
||||
if ( preg_match("/^\w*$/", $line) ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$a = mb_split('=', trim($line), 2);
|
||||
if ( count($a) != 2 ) {
|
||||
print "ERROR in file $lEnglishFile, line $cnt: " . trim($line) . "\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
list($key, $value) = $a;
|
||||
|
||||
// key is redundant
|
||||
if ( array_key_exists($key, $aEnglish) ) {
|
||||
print "Key $key is redundant in file $lEnglishFile (line: $cnt).\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
// String has no value
|
||||
if ( $value == '' ) {
|
||||
print "Key $key has no value in file $lEnglishFile (line: $cnt).\n";
|
||||
continue;
|
||||
}
|
||||
|
||||
$aEnglish[$key] = trim($value);
|
||||
}
|
||||
if ( ! feof($handle) )
|
||||
{
|
||||
$rc = 5;
|
||||
$msg = "Unexpected fgets() fail";
|
||||
print $msg . " (rc=$rc).\n";
|
||||
exit($rc);
|
||||
}
|
||||
fclose($handle);
|
||||
}
|
||||
else {
|
||||
$rc = 6;
|
||||
$msg = "Cannot open file $lEnglishFile";
|
||||
print $msg . " (rc=$rc).\n";
|
||||
exit($rc);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Start reading and parsing Primary. See rules in header!
|
||||
|
||||
$arrayofkeytoalwayskeep=array('DIRECTION','FONTFORPDF','FONTSIZEFORPDF','SeparatorDecimal','SeparatorThousand');
|
||||
@@ -314,12 +236,8 @@ foreach($filesToProcess as $fileToProcess)
|
||||
continue;
|
||||
}
|
||||
|
||||
// String exists in both files and value into alternative language differs from main language but also from english files
|
||||
if (
|
||||
(! empty($aSecondary[$key]) && $aSecondary[$key] != $aPrimary[$key]
|
||||
&& ! empty($aEnglish[$key]) && $aSecondary[$key] != $aEnglish[$key])
|
||||
|| in_array($key, $arrayofkeytoalwayskeep) || preg_match('/^FormatDate/',$key) || preg_match('/^FormatHour/',$key)
|
||||
)
|
||||
// String exists in both files and does not match
|
||||
if ((! empty($aSecondary[$key]) && $aSecondary[$key] != $aPrimary[$key]) || in_array($key, $arrayofkeytoalwayskeep) || preg_match('/^FormatDate/',$key) || preg_match('/^FormatHour/',$key))
|
||||
{
|
||||
//print "Key $key differs so we add it into new secondary language (line: $cnt).\n";
|
||||
fwrite($oh, $key."=".(empty($aSecondary[$key])?$aPrimary[$key]:$aSecondary[$key])."\n");
|
||||
@@ -342,9 +260,6 @@ foreach($filesToProcess as $fileToProcess)
|
||||
}
|
||||
|
||||
print "Output can be found at $output.\n";
|
||||
|
||||
print "To rename all .delta files, you can do:\n";
|
||||
print '> for fic in `ls htdocs/langs/'.$lSecondary.'/*.delta`; do f=`echo $fic | sed -e \'s/\.delta//\'`; echo $f; mv $f.delta $f; done'."\n";
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ then
|
||||
echo "This pull remote transifex files to local dir."
|
||||
echo "Note: If you pull a language file (not source), file will be skipped if local file is newer."
|
||||
echo " Using -f will overwrite local file (does not work with 'all')."
|
||||
echo "Usage: ./dev/translation/txpull.sh (all|xx_XX) [-r dolibarr.file] [-f] [-s]"
|
||||
echo "Usage: ./dev/translation/txpull.sh (all|xx_XX) [-r dolibarr.file] [-f]"
|
||||
exit
|
||||
fi
|
||||
|
||||
@@ -26,20 +26,13 @@ fi
|
||||
|
||||
if [ "x$1" = "xall" ]
|
||||
then
|
||||
for dir in `find htdocs/langs/* -type d`
|
||||
for fic in ar_SA bg_BG bs_BA ca_ES cs_CZ da_DK de_DE el_GR es_ES et_EE eu_ES fa_IR fi_FI fr_FR he_IL hr_HR hu_HU id_ID is_IS it_IT ja_JP ko_KR lt_LT lv_LV mk_MK nb_NO nl_NL pl_PL pt_PT ro_RO ru_RU ru_UA sk_SK sl_SI sq_AL sv_SE th_TH tr_TR uk_UA uz_UZ vi_VN zh_CN zh_TW
|
||||
do
|
||||
fic=`basename $dir`
|
||||
if [ $fic != "en_US" ]
|
||||
then
|
||||
echo "tx pull -l $fic $2 $3"
|
||||
tx pull -l $fic $2 $3
|
||||
fi
|
||||
echo "tx pull -l $fic $2 $3"
|
||||
tx pull -l $fic $2 $3
|
||||
done
|
||||
cd -
|
||||
else
|
||||
echo "tx pull -l $1 $2 $3 $4 $5"
|
||||
tx pull -l $1 $2 $3 $4 $5
|
||||
echo "tx pull -l $1 $2 $3 $4"
|
||||
tx pull -l $1 $2 $3 $4
|
||||
fi
|
||||
|
||||
echo Think to launch also:
|
||||
echo "> dev/fixaltlanguages.sh fix all"
|
||||
|
||||
@@ -25,7 +25,7 @@ fi
|
||||
|
||||
if [ "x$1" = "xall" ]
|
||||
then
|
||||
for fic in ar_SA bg_BG bs_BA ca_ES cs_CZ da_DK de_DE el_GR es_ES et_EE eu_ES fa_IR fi_FI fr_FR he_IL hr_HR hu_HU id_ID is_IS it_IT ja_JP ka_GE ko_KR lt_LT lv_LV mk_MK nb_NO nl_NL pl_PL pt_PT ro_RO ru_RU ru_UA sk_SK sl_SI sq_AL sv_SE th_TH tr_TR uk_UA uz_UZ vi_VN zh_CN zh_TW
|
||||
for fic in ar_SA bg_BG bs_BA ca_ES cs_CZ da_DK de_DE el_GR es_ES et_EE eu_ES fa_IR fi_FI fr_FR he_IL hr_HR hu_HU id_ID is_IS it_IT ja_JP ko_KR lt_LT lv_LV mk_MK nb_NO nl_NL pl_PL pt_PT ro_RO ru_RU ru_UA sk_SK sl_SI sq_AL sv_SE th_TH tr_TR uk_UA uz_UZ vi_VN zh_CN zh_TW
|
||||
do
|
||||
echo "tx push --skip -t -l $fic $2 $3"
|
||||
tx push --skip -t -l $fic $2 $3
|
||||
|
||||
61
dev/vagrant/README.md
Normal file
61
dev/vagrant/README.md
Normal file
@@ -0,0 +1,61 @@
|
||||
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
Normal file
170
dev/vagrant/dolibarrdev/Vagrantfile
vendored
Normal file
@@ -0,0 +1,170 @@
|
||||
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
Normal file
10
dev/vagrant/dolibarrdev/puphpet/.gitattributes
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
# 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
Normal file
211
dev/vagrant/dolibarrdev/puphpet/config.yaml
vendored
Normal file
@@ -0,0 +1,211 @@
|
||||
---
|
||||
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'
|
||||
|
||||
52
dev/vagrant/dolibarrdev/puphpet/files/dot/.bash_aliases
vendored
Normal file
52
dev/vagrant/dolibarrdev/puphpet/files/dot/.bash_aliases
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
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
Normal file
491
dev/vagrant/dolibarrdev/puphpet/files/dot/.bash_git
vendored
Normal file
@@ -0,0 +1,491 @@
|
||||
# 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
|
||||
}
|
||||
4
dev/vagrant/dolibarrdev/puphpet/files/dot/.gitignore
vendored
Normal file
4
dev/vagrant/dolibarrdev/puphpet/files/dot/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
ssh/id_rsa
|
||||
ssh/id_rsa.pub
|
||||
ssh/insecure_private_key
|
||||
ssh/id_rsa.ppk
|
||||
414
dev/vagrant/dolibarrdev/puphpet/files/dot/.vimrc
vendored
Normal file
414
dev/vagrant/dolibarrdev/puphpet/files/dot/.vimrc
vendored
Normal file
@@ -0,0 +1,414 @@
|
||||
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
|
||||
27
dev/vagrant/dolibarrdev/puphpet/files/dot/ssh/insecure_private_key
vendored
Normal file
27
dev/vagrant/dolibarrdev/puphpet/files/dot/ssh/insecure_private_key
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
-----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-----
|
||||
25
dev/vagrant/dolibarrdev/puphpet/puppet/Puppetfile
vendored
Normal file
25
dev/vagrant/dolibarrdev/puphpet/puppet/Puppetfile
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
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'
|
||||
7
dev/vagrant/dolibarrdev/puphpet/puppet/hiera.yaml
vendored
Normal file
7
dev/vagrant/dolibarrdev/puphpet/puppet/hiera.yaml
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
:backends: yaml
|
||||
:yaml:
|
||||
:datadir: '/vagrant/puphpet'
|
||||
:hierarchy:
|
||||
- config
|
||||
:logger: console
|
||||
1745
dev/vagrant/dolibarrdev/puphpet/puppet/manifest.pp
vendored
Normal file
1745
dev/vagrant/dolibarrdev/puphpet/puppet/manifest.pp
vendored
Normal file
File diff suppressed because it is too large
Load Diff
6
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/.fixtures.yml
vendored
Normal file
6
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/.fixtures.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
fixtures:
|
||||
repositories:
|
||||
stdlib: "git://github.com/puppetlabs/puppetlabs-stdlib.git"
|
||||
concat: "git://github.com/puppetlabs/puppetlabs-concat.git"
|
||||
symlinks:
|
||||
apache: "#{source_dir}"
|
||||
31
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/.nodeset.yml
vendored
Normal file
31
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/.nodeset.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
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'
|
||||
5
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/.puppet-lint.rc
vendored
Normal file
5
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/.puppet-lint.rc
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
--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
|
||||
32
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/.travis.yml
vendored
Normal file
32
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/.travis.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
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
|
||||
246
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/CHANGELOG.md
vendored
Normal file
246
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,246 @@
|
||||
## 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
|
||||
234
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/CONTRIBUTING.md
vendored
Normal file
234
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,234 @@
|
||||
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/)
|
||||
|
||||
26
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/Gemfile
vendored
Normal file
26
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/Gemfile
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
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
|
||||
15
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/LICENSE
vendored
Normal file
15
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/LICENSE
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
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.
|
||||
12
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/Modulefile
vendored
Normal file
12
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/Modulefile
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
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'
|
||||
1958
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/README.md
vendored
Normal file
1958
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/README.md
vendored
Normal file
File diff suppressed because it is too large
Load Diff
278
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/README.passenger.md
vendored
Normal file
278
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/README.passenger.md
vendored
Normal file
@@ -0,0 +1,278 @@
|
||||
# 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.
|
||||
10
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/Rakefile
vendored
Normal file
10
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/Rakefile
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
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"]
|
||||
24
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/files/httpd
vendored
Normal file
24
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/files/httpd
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
# 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`
|
||||
34
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/lib/puppet/provider/a2mod.rb
vendored
Normal file
34
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/lib/puppet/provider/a2mod.rb
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
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
|
||||
35
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/lib/puppet/provider/a2mod/a2mod.rb
vendored
Normal file
35
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/lib/puppet/provider/a2mod/a2mod.rb
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
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
|
||||
116
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/lib/puppet/provider/a2mod/gentoo.rb
vendored
Normal file
116
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/lib/puppet/provider/a2mod/gentoo.rb
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
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
|
||||
12
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/lib/puppet/provider/a2mod/modfix.rb
vendored
Normal file
12
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/lib/puppet/provider/a2mod/modfix.rb
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
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
|
||||
60
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/lib/puppet/provider/a2mod/redhat.rb
vendored
Normal file
60
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/lib/puppet/provider/a2mod/redhat.rb
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
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
|
||||
30
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/lib/puppet/type/a2mod.rb
vendored
Normal file
30
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/lib/puppet/type/a2mod.rb
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
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
|
||||
83
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/manifests/balancer.pp
vendored
Normal file
83
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/manifests/balancer.pp
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
# == 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",
|
||||
}
|
||||
}
|
||||
53
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/manifests/balancermember.pp
vendored
Normal file
53
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/manifests/balancermember.pp
vendored
Normal file
@@ -0,0 +1,53 @@
|
||||
# == 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"),
|
||||
}
|
||||
}
|
||||
10
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/manifests/confd/no_accf.pp
vendored
Normal file
10
dev/vagrant/dolibarrdev/puphpet/puppet/modules/apache/manifests/confd/no_accf.pp
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
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],
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user