Compare commits

...

101 Commits

Author SHA1 Message Date
Jocelyn Fiat
c6b7c73588 Added basic auth for webapi.
Fixed filter setup when a module has more than one filter.
2017-08-25 10:13:13 +02:00
Jocelyn Fiat
4d91e449d7 Removed unused local variable. 2017-08-25 09:32:12 +02:00
Jocelyn Fiat
471528e887 Fixed filter setup for site,admin and webapi modes. 2017-08-25 09:31:13 +02:00
Jocelyn Fiat
5117466529 If user is already authenticated, skip following auth filters. 2017-08-25 09:20:50 +02:00
Jocelyn Fiat
053cc000cd Updated webapi system.
Added specific webapi handler classes for root, user, access token, ...
Added new queries to user profile api.
Reviewed filter setup depending on the mode (site, admin, webapi).
2017-08-25 09:20:17 +02:00
Jocelyn Fiat
db585a4873 Added webapi system and first attempt for the core webapi.
Added user profile system to the core module.
Moved /user/{uid} from auth module to core module.
Added possibility to add html before and after a cms form. (useful to add a form before or after, as nested form are forbidden).
Now theme can be installed using roc install command.
2017-07-11 20:53:48 +02:00
Jocelyn Fiat
34f0aa5844 Improved feed aggregation module.
Added support to choose either atom or rss for the "/feed" format.
  Added support for feed format view to feed aggregation.
  Use proper content type for RSS and ATOM response.
  For feed aggregation  use `?view=feed` or `?view=feed.atom` or `?view=feed.rss`
  Improved sized feed view.
  Use site name for recent changes feed title.
  Better name for node feeds (include the site name).
  Use current date when a feed aggregation is converted to a new feed, to set the last build date.
  Fixed category filter per feed location for the feed aggregation module.
Fixed authentication module, where a potential case (but not probable) had no response content.
Cosmetic and minor changes on messaging module.
2017-06-12 09:36:29 +02:00
Jocelyn Fiat
78ef7af5f8 Removed obsolete calls, harmonized predefine response, added non admin user pages.
When access is denied, also provide when possible and wanted, the needed
permissions so that in the future, user will be able to ask for
permission easily.
Renamed previous user handlers as admin user handlers.
Added non admin user handler /user/{uid} .
Add new `send_...` response to `CMS_API.response_api`, and use them
instead of `create {...RESPONSE}.... ; execute`.
Fixed potential issue with storage mailer initialization if folder does
not exist.
Added utf_8_encoded helpers function on CMS_API interface.
Fixed a few unicode potential issues.
Removed a few obsolete calls.
2017-06-09 09:29:41 +02:00
Jocelyn Fiat
359344c9dd Fixed link for Oauth sign with.
Added administration pages for OAuth20 module.
2017-06-08 22:16:12 +02:00
Jocelyn Fiat
b814c91e91 Updated obsolete message with expected timestamp.
Removed a few obsolete calls or implicit conversions.
2017-05-12 15:59:31 +02:00
Jocelyn Fiat
1aad62ed52 Added CMS_RESPONSE.request_url (...)
Update a few callers of CMS_RESPONSE.url (...).
Renamed the demo files using "server" instead of "demo".
2017-04-11 13:19:39 +02:00
Jocelyn Fiat
1f6fce1278 Improved theming for admin vs site.
- Added $theme_path, $base_path
- Added CMS_RESPONSE.module_resource_url (...) instead of using hardcoded "/module/" + name + ...
- Use base_path rather than base_url  (note ROC CMS is not yet working with EWF standalone "base" url option)
2017-04-11 11:56:04 +02:00
Jocelyn Fiat
3dc478b4a0 Fixed user registration activation workflow.
- Fixed new user insertion in SQL database.
 - Removed temp user when activated.
 - Renamed local variable names related to temp users.
 - More information when error occurs during user registration.
2017-04-10 21:51:41 +02:00
Jocelyn Fiat
85ac9f7366 Cosmetic. 2017-04-10 18:30:27 +02:00
Jocelyn Fiat
09a902d469 Make user activation procedure safer. 2017-04-10 18:27:19 +02:00
Jocelyn Fiat
d26fc98492 Simplified the ecf for the google search 2.0 module.
Updated the install.bat (dev tool).
2017-04-10 18:20:13 +02:00
Jocelyn Fiat
f67116980d If gcse settings are not set, do not generate the gcse search form. 2017-04-07 11:27:01 +02:00
Jocelyn Fiat
5915af6a9c Added masquerade dev module and disabled it by default.
- it allows to login as a given user by passing security check.
  - it must be used only during development!
  - disabled by default!
Updated the session auth module to make it easier to be reused.
  - masquerade module is based on the session auth module.
2017-04-06 15:33:51 +02:00
Jocelyn Fiat
ad2b30f52b Changed the way search modules get integrated with the theme via a new region "search".
Improved current module for google search 2.0.
2017-04-06 14:02:20 +02:00
Jocelyn Fiat
e062429871 Merge remote-tracking branch 'jvelilla/roc_google_search2.0' into roc_gs2.0 2017-04-05 17:40:04 +02:00
jvelilla
1eae3b7413 Removed secret key from google search version 2.0 since is not needed. 2017-04-03 11:34:02 -03:00
jvelilla
72cfd1d652 Initial import Google Custom Search 2.0
Updated demo to use it.
2017-03-30 22:05:35 -03:00
Jocelyn Fiat
3d2c30ea5f Fixed published node access. 2017-03-30 19:15:12 +02:00
Jocelyn Fiat
12089d7945 Use an advanced maintenance filter that supports #allow-user: and #allow-ip: . 2017-03-30 18:17:58 +02:00
Jocelyn Fiat
9d59f37138 Change a fixme into a comment. 2017-03-30 18:17:39 +02:00
Jocelyn Fiat
5273940b82 Fixed access to non published nodes (and also for the related revisions if any)! 2017-03-30 17:32:15 +02:00
Jocelyn Fiat
e547279016 Implemented save/publish/unpublish control on nodes.
Display on published blogs (except for admin, or author of the related blog).
2017-03-30 17:16:02 +02:00
Jocelyn Fiat
230ef8ed18 Fixed video filter to support STRING_GENERAL . 2017-03-30 16:48:11 +02:00
Jocelyn Fiat
d61fd85ea6 Item("") now returns the value itself (can be used to get all keys of specific object). 2017-03-30 15:43:07 +02:00
Jocelyn Fiat
a01d161864 Improved video content filter to be more flexible, and allow custom template. 2017-03-30 15:41:04 +02:00
Jocelyn Fiat
0d5630bb58 allow copy error during install 2017-03-30 14:47:02 +02:00
Jocelyn Fiat
e3dd6cc8e8 Committed missing change for the cms formats administration. 2017-03-30 14:45:34 +02:00
Jocelyn Fiat
cd48fe182a Always set the content type when it is known for node view. 2017-03-30 14:28:00 +02:00
Jocelyn Fiat
3072b99151 Fixed installation access permission using administration.installation_access instead of previous admin.installation_access. 2017-03-30 11:58:53 +02:00
Jocelyn Fiat
0ce7d11e52 Implemented custom cms format, and associated administration pages.
Applied to existing filter and format.
Added embedded_video filter (initially contribute by Javier Velilla).
2017-03-30 11:58:44 +02:00
Jocelyn Fiat
134f876e62 Display the full url for uploaded files via the CMS_FILES_MODULE.
Keep db/mails in checkout.
2017-03-28 22:26:21 +02:00
307a87eaf4 Better handling of path or location for administration links. 2017-03-24 21:56:48 +01:00
21e75a6492 Splitted administration and normal web site interfaces.
This optimises a bit the routing map, and make cleaner separation.
Make the base url for admin pages customizable via `administration.base_path` variable in cms.ini
   note: could be /admin, /roc-admin, or ..
It is possible to have a specific theme for administration via the variable "administration.admin"
2017-03-24 18:38:58 +01:00
13cbb7d987 Fixed code by checking for file existence before checking if this is a directory. 2017-03-22 10:26:36 +01:00
dbfe14e77e Fixed cms execution initialization (avoid setting up twice router and filter). 2017-03-17 11:21:21 +01:00
b263e4a1b9 Support http caching on sitemap.xml . 2017-03-08 20:55:28 +01:00
a9581eff01 Added support for directory output email notification. 2017-03-08 10:46:29 +01:00
941f50e4fb Removed obsolete calls. 2017-03-08 10:43:27 +01:00
67f6591851 Better control on path alias.
If user has permission to edit, provide a text input, otherwise just a label if path are required.
Reviewed html generated for taxonomy field in node edit form.
Improved the blog entries list by providing (if permitted) link to blog entry creation, and link to the user entries or all entries.
2017-03-06 21:27:35 +01:00
7cde24a439 Protected again sql error.
Return better sql error message for sqlite3 storage.
2017-03-03 18:53:11 +01:00
2fc0c6f7b7 Fixed wrong initial offset. 2017-03-03 13:36:56 +01:00
bb25a8b12e Added feed ordered by publication on /nodes/{type}/feed. 2017-03-03 13:16:04 +01:00
0febe3418b (Breaking change) added notion of editor vs author.
The table nodes and node_revisions have an extra "editor" field.
Update the sql table with:
  ALTER TABLE nodes ADD editor INTEGER ;
  UPDATE nodes SET editor = author;
  ALTER TABLE node_revisions ADD editor INTEGER ;
  UPDATE node_revisions SET editor = author;
2017-03-03 11:16:46 +01:00
6cb6dd1609 Added notion of author (owner) and editor to allow the editing of node by non owner users. 2017-03-03 11:12:51 +01:00
4cbdfeff06 Improved the user selection for messaging module. 2017-03-03 11:08:38 +01:00
f5671bc190 Display associated tags in blogs listing. 2017-03-02 16:02:45 +01:00
a611b27ad9 Fixed node preview. 2017-03-01 16:33:17 +01:00
8ff638d62e Fixed CMS_USER.creation_date retrieval.
Improved the admin users listing.
2017-03-01 15:36:58 +01:00
e89b04cbd2 Support profile_firstname and profile_lastname value when importing user records. 2017-03-01 12:34:08 +01:00
0ab318a43d Updated messaging ecf files. 2017-03-01 11:20:39 +01:00
13d0927c58 Added default path alias for node.
Fixed set path alias, when alias already exists in the history.
2017-02-28 17:35:18 +01:00
a341bd98eb Improved node management.
- List node by node types
- fixed the trash/restore/delete workflow
Added messaging module to send message to cms users (by email for now).
Added early protection for cache, export and import functionalities.
2017-02-28 11:24:48 +01:00
dc84e79952 Wrap with double quote only if term has a comma. 2017-02-10 19:03:34 +01:00
ccf1040513 Added sitemap support on node module.
code cleaning.
2017-02-10 13:34:49 +01:00
1c902db377 added sitemap to demo example. 2017-02-10 12:18:06 +01:00
b47d631095 Html escape cms_search_query variable. 2017-02-10 12:16:09 +01:00
bef99dd762 Added support for sitemap.xml . 2017-02-10 12:08:33 +01:00
ca4d975715 Removed obsolete features:
- CMS_RESPONSE.add_variable (..)
 - CMS_MODULE.register_hooks (..)
And related code.
2017-02-08 23:13:56 +01:00
b0b92c2d36 Added finer control on path_alias.
- added a permission to edit path alias.
 - added an admin handler to manage path aliases.
When path alias is changed on node, always keep previous path alias.
  (can be unset from the related admin section).
CMS_API.storage.path_aliases returns the list of path aliases (recents aliases come first).
2017-02-08 23:01:46 +01:00
d8291e91ac Merge branch 'master' of https://github.com/EiffelWebFramework/ROC 2017-02-08 19:37:59 +01:00
4f4a838504 Allow user to edit its own profile name. 2017-02-08 19:36:23 +01:00
jvelilla
09b5cc752c Rename variable to cms_search_query.
Updated code to use CMS_RESPONSE.set_value, to set the value instead of
CMS_HOOK_VALUE_TABLE_ALTER
2017-02-08 15:00:00 -03:00
a1e8cc5128 Make sure to use the user profile name whenever it is possible. 2017-02-08 18:41:17 +01:00
jvelilla
bb3e2abf55 Updated google search module to keep the search input using an alter value.
Updated feature description.
2017-02-08 10:31:40 -03:00
f75dde457d Added SQL script to update existing ROC CMS installation. 2017-02-07 19:19:40 +01:00
d97542f797 Added CMS_CORE_MODULE which is the mandatory module for ROC CMS.
Added CMS_USER.profile_name .
Improved module managements with install vs enable.
  - enabled/disabled status can also be stored in database.
Install procedure do not install all available modules anymore.
2017-02-07 16:52:08 +01:00
f0a3b2bd3a Collapse expanded keywords ($Date$, $Author$, ...) 2017-02-06 18:45:44 +01:00
784891705f Added possibility to change its own username. 2017-02-06 18:40:20 +01:00
1c829e16ff Fixed testing codes that were not compliant with search user by email signature. 2017-02-01 18:57:15 +01:00
fae444c238 Better syntax formating for SQL query related to comments module.
Display import link from admin page.
Removed unused local variables.
2017-02-01 10:29:15 +01:00
c10faceaf6 Better log message during import.
Fixed SQL storage for comments.
2017-01-27 23:53:27 +01:00
32a47fbba3 When importing, do not change modification date.
Display /nodes sorted by changed date.
Improved the import form, and report wrong import folder. Only import from folder inside site/import for security reason.
2017-01-27 23:12:02 +01:00
2568e85c59 Remove %R from wikitext source, otherwise this may cause parsing issue. 2017-01-27 19:13:30 +01:00
38b4713276 Updated blog design to use ?page=123&size=456.
Use  /blog/{user} url to list blog from a specific user.
Fixed bad xhtml rendering (missing closing tag).
2017-01-27 19:12:37 +01:00
456770ca3e Remove extra argument for the creation procedure of some modules (node and wikitext) as this is useless. 2017-01-27 17:02:28 +01:00
7c398a9f33 Added support for user, user_roles, page, blog export and import.
Added basic support for comments, for now mainly viewing comments from database (no submission forms yet).
Added first simple wikitext filter (render wikitext content as xhtml).
Ensure response content type is text/html with utf-8 charset.
2017-01-27 11:57:52 +01:00
2d698f604b Extracted page support from cms_node_module, and add a proper CMS_PAGE_MODULE.
- now, the CMS_PAGE_MODULE has to be declared in the related CMS_SETUP via CMS_EXECUTION.
   (See demo for example)

Improved the export facilities.
  Implemented blog and page export.
Added import facilities.
  Implemented blog and page import.

Improved node revision web interface (allow to edit a past revision, in order to restore it as latest revisionm i.e current).
Removed specific tag from blog module, and reuse the taxonomy module for that purpose.

Added WIKITEXT module that provide a WIKITEXT_FILTER, so now we can have wikitext content.
   - for now, no support for wiki links such as [[Foobar]].
2017-01-20 16:05:40 +01:00
3bcfb0a44a Added the possibility to have feed aggregation as embedded view using "?view=embedded".
Convenient to include the feed aggregation in a page with for instance jquery load(..) function.
2017-01-02 18:10:40 +01:00
219969cae4 Use .json extension for the exported blog post data. 2017-01-02 18:10:27 +01:00
18d26a765a Made cms uploading file safer. 2016-11-30 21:50:06 +01:00
7d50973fd5 Ensure that cms page always has a non empty html page title. 2016-11-30 21:49:47 +01:00
73572a3e1c updated roc tool ecf file. 2016-11-30 21:49:02 +01:00
84e0ddf50c propagate error for taxonomy handler. 2016-11-30 21:48:49 +01:00
5e98d82934 Added category support for feed aggregation. 2016-11-30 21:48:13 +01:00
31d4c8dc5b Removed nino from launcher.
Updated ecf files.
2016-11-30 21:47:35 +01:00
3bbe6a50b7 New installation procedure for roc demo example. 2016-11-30 17:22:51 +01:00
1fb9640d9c Added feed aggregations ids.
This is used to avoid computing the whole feed aggregation to decide if a feed block is included or not.
2016-11-30 17:09:59 +01:00
41fb8d5730 Added summary and categories to recent change item. 2016-11-30 17:07:46 +01:00
ff58c6aff9 Added support for configuration to Roc.
The installer can now use a roc.cfg file to define the various needed modules.
Format:
{ "name": "demo", "location": ".",
  "modules": {
      "foo": { "location": "path-to-source-of-module-foo"; },
      "bar": { "location": "path-to-source-of-module-bar"; }
  }
}
2016-11-30 16:48:46 +01:00
76cf815477 ROC CMS libraries are SCOOP capable. 2016-11-30 15:42:02 +01:00
410903ff5c Make favicon.ico expires after 24 hours. 2016-11-30 15:41:12 +01:00
19eb5113e9 Added ssl files to allow cms SSL support (disabled by default).
Fixed typo in auth post password message.
Make sure to keep site_destination set in login form, so that the user is redirected to previous location.
Use default http client in the feel aggregator component, instead of forcing libcurl usage.
2016-11-30 10:43:09 +01:00
0c3b85bb37 Set the uploaded file path to site/temp by default. Can be set via configuration with "temp-dir" variable.
(This is important, otherwise it uses the current working directory, but for fcgi, this is not always obvious where it is.)
Allow advanced upload, and also basic html upload, in case the dropzone.js has trouble.
Split get and post handling for files module upload request.
2016-09-26 10:37:41 +02:00
b1478cfb8a Fixed typo "We have sent you .." (instead of ... send ...). 2016-09-16 20:21:24 +02:00
d1ca6eb311 Get GCSE module accepts /gcse or /gcse/ . 2016-06-01 13:48:49 +02:00
88b3ca1d2f Avoid using old path for http_authorization. 2016-05-23 21:24:09 +02:00
502 changed files with 18181 additions and 4223 deletions

2
.gitignore vendored
View File

@@ -4,4 +4,6 @@ EIFGENs
*.rc
*.bak
*.sqlite
.*.swo
Thumbs.db
*.dll

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="cms" uuid="8CC0D052-57D1-4CAA-AFF1-448FA290734B" library_target="cms">
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-17-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-17-0 http://www.eiffel.com/developers/xml/configuration-1-17-0.xsd" name="cms" uuid="8CC0D052-57D1-4CAA-AFF1-448FA290734B" library_target="cms">
<target name="cms">
<root all_classes="true"/>
<file_rule>
@@ -7,9 +7,12 @@
<exclude>/CVS$</exclude>
<exclude>/EIFGENs$</exclude>
</file_rule>
<option warning="true" full_class_checking="false" is_attached_by_default="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
<option warning="true">
</option>
<capability>
<concurrency support="scoop" use="scoop"/>
<void_safety support="all" use="all"/>
</capability>
<mapping old_name="CMS_LAYOUT" new_name="CMS_ENVIRONMENT"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="base_extension" location="$ISE_LIBRARY\library\base_extension\base_extension-safe.ecf"/>
@@ -20,15 +23,18 @@
<library name="encoder" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\text\encoder\encoder-safe.ecf" readonly="false"/>
<library name="error" location="$ISE_LIBRARY\contrib\library\utility\general\error\error-safe.ecf"/>
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="http_authorization" location="$ISE_LIBRARY\contrib\library\web\authentication\http_authorization\http_authorization-safe.ecf"/>
<library name="i18n" location="$ISE_LIBRARY\library\i18n\i18n-safe.ecf"/>
<library name="json" location="$ISE_LIBRARY\contrib\library\text\parser\json\library\json-safe.ecf" readonly="false"/>
<library name="kmp_matcher" location="$ISE_LIBRARY\library\text\regexp\kmp_matcher\kmp_matcher-safe.ecf"/>
<library name="microdata" location="$ISE_LIBRARY\contrib\library\text\parser\microdata\microdata.ecf"/>
<library name="net" location="$ISE_LIBRARY\library\net\net-safe.ecf"/>
<library name="notification_mailer" location="$ISE_LIBRARY\contrib\library\runtime\process\notification_email\notification_email-safe.ecf"/>
<library name="smarty" location="$ISE_LIBRARY\contrib\library\text\template\smarty\smarty-safe.ecf" readonly="false"/>
<library name="text_filter" location="$ISE_LIBRARY\unstable\library\text\text_filter\text_filter-safe.ecf"/>
<library name="time" location="$ISE_LIBRARY\library\time\time-safe.ecf"/>
<library name="uri_template" location="$ISE_LIBRARY\contrib\library\text\parser\uri_template\uri_template-safe.ecf"/>
<library name="uuid" location="$ISE_LIBRARY\library\uuid\uuid-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
<library name="wsf_extension" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf_extension-safe.ecf" readonly="false"/>
<library name="wsf_html" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf_html\wsf_html-safe.ecf" readonly="false"/>

View File

@@ -8,8 +8,7 @@
<exclude>/CVS$</exclude>
<exclude>/EIFGENs$</exclude>
</file_rule>
<option warning="true" full_class_checking="false" void_safety="none" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
<option warning="true" void_safety="none">
</option>
<mapping old_name="CMS_LAYOUT" new_name="CMS_ENVIRONMENT"/>
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
@@ -21,6 +20,7 @@
<library name="encoder" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\text\encoder\encoder.ecf" readonly="false"/>
<library name="error" location="$ISE_LIBRARY\contrib\library\utility\general\error\error.ecf"/>
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http.ecf"/>
<library name="http_authorization" location="$ISE_LIBRARY\contrib\library\web\authentication\http_authorization\http_authorization.ecf"/>
<library name="i18n" location="$ISE_LIBRARY\library\i18n\i18n.ecf"/>
<library name="json" location="$ISE_LIBRARY\contrib\library\text\parser\json\library\json.ecf" readonly="false"/>
<library name="kmp_matcher" location="$ISE_LIBRARY\library\text\regexp\kmp_matcher\kmp_matcher.ecf"/>
@@ -30,6 +30,7 @@
<library name="text_filter" location="$ISE_LIBRARY\unstable\library\text\text_filter\text_filter.ecf"/>
<library name="time" location="$ISE_LIBRARY\library\time\time.ecf"/>
<library name="uri_template" location="$ISE_LIBRARY\contrib\library\text\parser\uri_template\uri_template.ecf"/>
<library name="uuid" location="$ISE_LIBRARY\library\uuid\uuid.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf.ecf"/>
<library name="wsf_extension" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf_extension.ecf" readonly="false"/>
<library name="wsf_html" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf_html\wsf_html.ecf" readonly="false"/>

View File

@@ -0,0 +1,87 @@
note
description: "API to manage CMS User session authentication"
date: "$Date$"
revision: "$Revision$"
class
MASQUERADE_API
inherit
CMS_AUTH_API_I
REFACTORING_HELPER
create {MASQUERADE_AUTH_MODULE}
make_with_session_api
feature {NONE} -- Initialization
make_with_session_api (a_api: CMS_API; a_session_api: CMS_SESSION_API)
do
session_api := a_session_api
make (a_api)
end
feature -- Access
session_api: CMS_SESSION_API
feature -- Status report
has_permission_to_masquerade (a_user: detachable CMS_USER): BOOLEAN
local
v: STRING
do
if attached cms_api.setup.string_8_item_or_default ("dev.masquerade", "permission") as s then
v := s
v.left_adjust
v.right_adjust
if v.is_case_insensitive_equal_general ("none") then
elseif v.is_case_insensitive_equal_general ("all") then
Result := True
elseif v.is_case_insensitive_equal_general ("permission") then
Result := cms_api.user_has_permission (a_user, "masquerade")
else
-- no!
end
end
end
is_authenticating (a_response: CMS_RESPONSE): BOOLEAN
do
if
a_response.is_authenticated and then
attached a_response.request.cookie (session_api.session_token)
then
Result := True
end
end
feature -- Basic operation
process_user_login (a_user: CMS_USER; req: WSF_REQUEST; res: WSF_RESPONSE)
do
session_api.process_user_login (a_user, req, res)
end
process_user_logout (a_user: CMS_USER; req: WSF_REQUEST; res: WSF_RESPONSE)
do
session_api.process_user_logout (a_user, req, res)
end
feature -- Access
-- user_by_session_token (a_token: READABLE_STRING_32): detachable CMS_USER
-- -- Retrieve user by token `a_token', if any.
-- do
-- Result := session_auth_storage.user_by_session_token (a_token)
-- end
-- has_user_token (a_user: CMS_USER): BOOLEAN
-- -- Has the user `a_user' and associated session token?
-- do
-- Result := session_auth_storage.has_user_token (a_user)
-- end
end

View File

@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="masquerade_auth" uuid="73DA3649-BA18-426C-91CD-5892D52C811C" library_target="masquerade_auth">
<target name="masquerade_auth">
<root all_classes="true"/>
<file_rule>
<exclude>/EIFGENs$</exclude>
<exclude>/CVS$</exclude>
<exclude>/.svn$</exclude>
</file_rule>
<option warning="true">
</option>
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="cms" location="..\..\cms-safe.ecf"/>
<library name="cms_app_env" location="..\..\library\app_env\app_env-safe.ecf" readonly="false"/>
<library name="cms_auth_module" location="..\..\modules\auth\auth-safe.ecf" readonly="false"/>
<library name="cms_session_auth_module" location="..\..\modules\session_auth\cms_session_auth-safe.ecf" readonly="false"/>
<library name="cms_model" location="..\..\library\model\cms_model-safe.ecf" readonly="false"/>
<library name="crypto" location="$ISE_LIBRARY\unstable\library\text\encryption\crypto\crypto-safe.ecf"/>
<library name="encoder" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\text\encoder\encoder-safe.ecf"/>
<library name="error" location="$ISE_LIBRARY\contrib\library\utility\general\error\error-safe.ecf"/>
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="http_authorization" location="$ISE_LIBRARY\contrib\library\web\authentication\http_authorization\http_authorization-safe.ecf" readonly="false"/>
<library name="time" location="$ISE_LIBRARY\library\time\time-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
<library name="wsf_extension" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf_extension-safe.ecf" readonly="false"/>
<cluster name="src" location=".\" recursive="true"/>
</target>
</system>

View File

@@ -0,0 +1,268 @@
note
description: "[
This module allows the use Session Based Authentication using Cookies to restrict access
by looking up users in the given providers.
]"
date: "$Date$"
revision: "$Revision$"
class
MASQUERADE_AUTH_MODULE
inherit
CMS_AUTH_MODULE_I
rename
module_api as masquerade_api
redefine
make,
setup_hooks,
initialize,
install,
permissions,
masquerade_api,
menu_system_alter
end
CMS_HOOK_BLOCK
CMS_HOOK_MENU_SYSTEM_ALTER
create
make
feature {NONE} -- Initialization
make
do
Precursor
version := "1.0"
description := "Service to easily log as user at development time"
package := "debug"
disable -- Disabled by default
add_dependency ({CMS_SESSION_AUTH_MODULE})
end
feature -- Access
name: STRING = "masquerade_auth"
permissions: LIST [READABLE_STRING_8]
-- List of permission ids, used by this module, and declared.
do
Result := Precursor
Result.extend ("masquerade")
end
feature {CMS_API} -- Module Initialization
initialize (a_api: CMS_API)
-- <Precursor>
do
Precursor (a_api)
if attached {CMS_SESSION_API} a_api.module_api ({CMS_SESSION_AUTH_MODULE}) as l_session_api then
-- API initialization
create masquerade_api.make_with_session_api (a_api, l_session_api)
end
end
feature {CMS_API} -- Module management
install (api: CMS_API)
do
Precursor {CMS_AUTH_MODULE_I} (api) -- Mark it as installed.
end
feature {CMS_API} -- Access: API
masquerade_api: detachable MASQUERADE_API
-- <Precursor>
feature -- Access: auth strategy
login_title: STRING = "Masquerade"
-- Module specific login title.
login_location: STRING = "account/auth/roc-masquerade-login"
logout_location: STRING = "account/auth/roc-masquerade-logout"
is_authenticating (a_response: CMS_RESPONSE): BOOLEAN
-- <Precursor>
do
if attached masquerade_api as l_masquerade_api then
Result := l_masquerade_api.is_authenticating (a_response)
end
end
feature -- Access: router
setup_router (a_router: WSF_ROUTER; a_api: CMS_API)
-- <Precursor>
do
if attached masquerade_api as l_masquerade_api then
a_router.handle ("/" + login_location, create {WSF_URI_AGENT_HANDLER}.make (agent handle_login (a_api, ?, ?)), a_router.methods_head_get)
a_router.handle ("/" + logout_location, create {WSF_URI_AGENT_HANDLER}.make (agent handle_logout (a_api, l_masquerade_api, ?, ?)), a_router.methods_get_post)
a_router.handle ("/" + login_location, create {WSF_URI_AGENT_HANDLER}.make (agent handle_login_with_masquerade (a_api, l_masquerade_api,?, ?)), a_router.methods_post)
end
end
feature {NONE} -- Implementation: routes
handle_login (api: CMS_API; req: WSF_REQUEST; res: WSF_RESPONSE)
local
r: CMS_RESPONSE
do
create {GENERIC_VIEW_CMS_RESPONSE} r.make (req, res, api)
if
attached masquerade_api as l_masquerade_api and then
l_masquerade_api.has_permission_to_masquerade (api.user)
then
if api.user_is_authenticated then
r.add_warning_message ("You are signed.")
end
r.add_block (login_block ("login", Void, r), "content")
else
r.add_error_message ("You are not allowed to use masquerade authentication!")
end
r.execute
end
handle_logout (api: CMS_API; a_masquerade_api: MASQUERADE_API ; req: WSF_REQUEST; res: WSF_RESPONSE) local
r: CMS_RESPONSE
do
if attached api.user as l_user then
a_masquerade_api.process_user_logout (l_user, req, res)
create {GENERIC_VIEW_CMS_RESPONSE} r.make (req, res, api)
else
-- Not loggued in ... redirect to home
create {GENERIC_VIEW_CMS_RESPONSE} r.make (req, res, api)
r.set_status_code ({HTTP_CONSTANTS}.found)
end
if
attached {WSF_STRING} req.item ("destination") as p_destination and then
attached p_destination.value as v and then
v.is_valid_as_string_8
then
r.set_redirection (v.to_string_8)
else
r.set_redirection (req.absolute_script_url (""))
end
r.execute
end
handle_login_with_masquerade (api: CMS_API; a_masquerade_api: MASQUERADE_API; req: WSF_REQUEST; res: WSF_RESPONSE)
local
r: CMS_RESPONSE
do
if a_masquerade_api.has_permission_to_masquerade (api.user) then
if
attached {WSF_STRING} req.form_parameter ("username") as l_username
then
if
attached api.user_api.user_by_name (l_username.value) as l_user
then
a_masquerade_api.process_user_login (l_user, req, res)
create {GENERIC_VIEW_CMS_RESPONSE} r.make (req, res, api)
if
attached {WSF_STRING} req.item ("destination") as p_destination and then
attached p_destination.value as v and then
v.is_valid_as_string_8
then
r.set_redirection (v.to_string_8)
else
r.set_redirection ("")
end
else
create {GENERIC_VIEW_CMS_RESPONSE} r.make (req, res, api)
r.add_block (login_block ("login", Void, r), "content")
end
else
create {BAD_REQUEST_ERROR_CMS_RESPONSE} r.make (req, res, api)
r.add_block (login_block ("login", "Wrong username", r), "content")
end
r.execute
else
api.response_api.send_access_denied (Void, req, res)
end
end
feature -- Hooks configuration
setup_hooks (a_hooks: CMS_HOOK_CORE_MANAGER)
-- Module hooks configuration.
do
Precursor (a_hooks)
a_hooks.subscribe_to_block_hook (Current)
a_hooks.subscribe_to_menu_system_alter_hook (Current)
end
feature -- Hooks
block_list: ITERABLE [like {CMS_BLOCK}.name]
do
Result := <<"?login">>
end
get_block_view (a_block_id: READABLE_STRING_8; a_response: CMS_RESPONSE)
do
if a_block_id.is_case_insensitive_equal_general ("login") then
a_response.add_block (login_block (a_block_id, Void, a_response), "content")
end
end
menu_system_alter (a_menu_system: CMS_MENU_SYSTEM; a_response: CMS_RESPONSE)
-- Hook execution on collection of menu contained by `a_menu_system'
-- for related response `a_response'.
local
u: detachable CMS_USER
do
u := a_response.api.user
if
attached masquerade_api as l_masquerade_api and then
l_masquerade_api.has_permission_to_masquerade (u)
then
Precursor (a_menu_system, a_response)
if u /= Void then
a_menu_system.navigation_menu.extend (a_response.local_link ("Masquerade", login_location))
end
end
end
feature {NONE} -- Block views
login_block (a_block_id: READABLE_STRING_8; a_err: detachable READABLE_STRING_8; a_response: CMS_RESPONSE): CMS_CONTENT_BLOCK
do
create Result.make (a_block_id, Void, login_html (a_err, a_response), Void)
end
login_html (a_err: detachable READABLE_STRING_8; a_response: CMS_RESPONSE): STRING
local
params: CMS_DATA_QUERY_PARAMETERS
u: CMS_USER
do
create Result.make_from_string ("<div class=%"login-box%">")
if a_err /= Void then
Result.append ("<div class=%"error%">")
Result.append (a_err)
Result.append ("</div>")
end
Result.append ("<form name=%"masquerade_auth%" action=%"" + a_response.site_url + login_location + "%" method=%"POST%">%N")
Result.append ("<div><input type=%"text%" name=%"username%" id=%"username%" required value=%"%"><label>Username</label></div>")
Result.append ("<button type=%"submit%">Login</button>")
create params.make (0, a_response.api.user_api.users_count.as_natural_32)
across
a_response.api.user_api.recent_users (params) as ic
loop
u := ic.item
Result.append ("<li>")
Result.append (a_response.html_encoded (a_response.api.user_display_name (u)))
Result.append ("</li>%N")
end
Result.append ("</form></div>")
end
end

4
examples/demo/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
site/db/*
site/files/*
site/export/*
site/import/*

View File

@@ -8,11 +8,11 @@
<exclude>/CVS$</exclude>
<exclude>/EIFGENs$</exclude>
</file_rule>
<option debug="true" warning="true" full_class_checking="false" is_attached_by_default="true" is_obsolete_routine_type="true" void_safety="all" syntax="transitional">
<option debug="true" warning="true" void_safety="all">
<debug name="dbglog" enabled="true"/>
</option>
<setting name="executable_name" value="demo"/>
<setting name="concurrency" value="thread"/>
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="cms" location="..\..\cms-safe.ecf" readonly="false">
<option>
@@ -20,25 +20,28 @@
</option>
</library>
<library name="cms_admin_module" location="..\..\modules\admin\admin-safe.ecf" readonly="false"/>
<library name="cms_app_env" location="..\..\library\app_env\app_env-safe.ecf" readonly="false"/>
<library name="cms_auth_module" location="..\..\modules\auth\auth-safe.ecf" readonly="false"/>
<library name="cms_basic_auth_module" location="..\..\modules\basic_auth\basic_auth-safe.ecf" readonly="false"/>
<library name="cms_blog_module" location="..\..\modules\blog\cms_blog_module-safe.ecf" readonly="false"/>
<library name="cms_comments_module" location="..\..\modules\comments\comments-safe.ecf" readonly="false"/>
<library name="cms_contact_module" location="..\..\modules\contact\contact-safe.ecf" readonly="false"/>
<library name="cms_custom_block_module" location="..\..\modules\custom_block\custom_block-safe.ecf" readonly="false"/>
<library name="cms_demo_module" location="modules\demo\cms_demo_module-safe.ecf" readonly="false"/>
<library name="cms_email_service" location="..\..\library\email\email-safe.ecf" readonly="false"/>
<library name="cms_feed_aggregator_module" location="..\..\modules\feed_aggregator\feed_aggregator-safe.ecf" readonly="false"/>
<library name="cms_files_module" location="..\..\modules\files\files-safe.ecf" readonly="false"/>
<library name="cms_google_search_module" location="..\..\modules\google_search\google_search-safe.ecf" readonly="false" use_application_options="true"/>
<library name="cms_model" location="..\..\library\model\cms_model-safe.ecf" readonly="false"/>
<library name="cms_google_search_20_module" location="..\..\modules\google_search_20\google_search_20-safe.ecf" readonly="false" use_application_options="true"/>
<library name="cms_messaging_module" location="..\..\modules\messaging\messaging-safe.ecf" readonly="false"/>
<library name="cms_node_module" location="..\..\modules\node\node-safe.ecf" readonly="false"/>
<library name="cms_oauth_20_module" location="..\..\modules\oauth20\oauth20-safe.ecf" readonly="false"/>
<library name="cms_openid_module" location="..\..\modules\openid\openid-safe.ecf" readonly="false"/>
<library name="cms_recent_changes_module" location="..\..\modules\recent_changes\recent_changes-safe.ecf" readonly="false"/>
<library name="cms_seo_module" location="..\..\modules\seo\seo-safe.ecf" readonly="false"/>
<library name="cms_sitemap_module" location="..\..\modules\sitemap\sitemap-safe.ecf" readonly="false"/>
<library name="cms_session_auth_module" location="..\..\modules\session_auth\cms_session_auth-safe.ecf" readonly="false"/>
<library name="cms_taxnomy_module" location="..\..\modules\taxonomy\taxonomy-safe.ecf" readonly="false"/>
<library name="masquerade_auth_module" location="..\..\dev_modules\masquerade_auth\masquerade_auth-safe.ecf" readonly="false"/>
<library name="cms_taxonomy_module" location="..\..\modules\taxonomy\taxonomy-safe.ecf" readonly="false"/>
<library name="embedded_video_module" location="..\..\modules\embedded_video\embedded_video-safe.ecf" readonly="false"/>
<library name="cms_wikitext_module" location="..\..\modules\wikitext\wikitext-safe.ecf" readonly="false"/>
<library name="persistence_sqlite3" location="..\..\library\persistence\sqlite3\sqlite3-safe.ecf" readonly="false"/>
<!--
By default, commented, since it depends on specific environment settings.
@@ -71,6 +74,13 @@
<target name="demo_standalone_scoop" extends="demo_standalone">
<setting name="concurrency" value="scoop"/>
</target>
<target name="demo_standalone_scoop_ssl" extends="demo_standalone_scoop">
<setting name="concurrency" value="scoop"/>
<variable name="httpd_ssl_enabled" value="true"/>
<variable name="libcurl_http_client_disabled" value="true"/>
<variable name="net_http_client_disabled" value="false"/>
<variable name="netssl_http_client_enabled" value="true"/>
</target>
<target name="demo_cgi" extends="common">
<setting name="concurrency" value="none"/>
<library name="cgi_launcher" location="..\..\launcher\cgi-safe.ecf" readonly="false"/>

View File

@@ -1,3 +0,0 @@
port=9090
#port=12345
#verbose=true

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-13-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-13-0 http://www.eiffel.com/developers/xml/configuration-1-13-0.xsd" name="demo_no_mysql" uuid="F8399C5A-9495-4418-B4DC-F38C22EE4683" library_target="demo_no_mysql">
<target name="common" abstract="true">
<file_rule>
<exclude>/EIFGENs$</exclude>
<exclude>/CVS$</exclude>
<exclude>/.svn$</exclude>
</file_rule>
<option warning="true" full_class_checking="false" is_attached_by_default="true" void_safety="transitional" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option>
<setting name="concurrency" value="none"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="cms" location="..\..\cms-safe.ecf" readonly="false"/>
<library name="cms_demo_module" location="modules\demo\cms_demo_module-safe.ecf" readonly="false"/>
<library name="cms_model" location="..\..\library\model\cms_model-safe.ecf" readonly="false"/>
<library name="layout" location="..\..\library\layout\layout-safe.ecf" readonly="false"/>
<library name="persistence_sqlite" location="..\..\library\persistence\sqlite\persistence_sqlite-safe.ecf" readonly="false"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
<library name="wsf_extension" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf_extension-safe.ecf" readonly="false"/>
</target>
<target name="demo_any" extends="common">
<root class="EWF_ROC_SERVER" feature="make_and_launch"/>
<library name="cgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\cgi-safe.ecf"/>
<library name="libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\libfcgi-safe.ecf"/>
<library name="nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\nino-safe.ecf"/>
<cluster name="launcher" location=".\launcher\any\" recursive="true"/>
<cluster name="src" location=".\src\" recursive="true"/>
</target>
<target name="demo_nino" extends="common">
<root class="EWF_ROC_SERVER" feature="make_and_launch"/>
<setting name="concurrency" value="none"/>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/>
<cluster name="launcher" location=".\launcher\default\" recursive="true"/>
<cluster name="src" location=".\src\" recursive="true"/>
</target>
<target name="demo_cgi" extends="common">
<root class="EWF_ROC_SERVER" feature="make_and_launch"/>
<library name="default_cgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\cgi-safe.ecf"/>
<cluster name="launcher" location=".\launcher\default\" recursive="true"/>
<cluster name="src" location=".\src\" recursive="true"/>
</target>
<target name="demo_libfcgi" extends="common">
<root class="EWF_ROC_SERVER" feature="make_and_launch"/>
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="launcher" location=".\launcher\default\" recursive="true"/>
<cluster name="src" location=".\src\" recursive="true"/>
</target>
<target name="demo" extends="demo_nino">
</target>
</system>

View File

@@ -3,19 +3,4 @@ setlocal
set ROC_CMD=call %~dp0..\..\tools\roc.bat
set ROC_CMS_DIR=%~dp0
%ROC_CMD% install --module ..\..\modules\admin --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\auth --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\basic_auth --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\blog --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\contact --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\feed_aggregator --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\google_search --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\node --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\oauth20 --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\openid --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\recent_changes --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\seo --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\session_auth --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\taxonomy --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\files --dir %ROC_CMS_DIR%
%ROC_CMD% install --module ..\..\modules\custom_block --dir %ROC_CMS_DIR%
%ROC_CMD% install --config roc.cfg

View File

@@ -1,19 +0,0 @@
note
description: "[
Effective class for APPLICATION_LAUNCHER_I
You can put modification in this class
]"
date: "$Date: 2013-06-12 13:55:42 +0200 (mer., 12 juin 2013) $"
revision: "$Revision: 36 $"
class
APPLICATION_LAUNCHER [G -> WSF_EXECUTION create make end]
inherit
APPLICATION_LAUNCHER_I [G]
feature -- Custom
end

View File

@@ -1,127 +0,0 @@
note
description: "[
Specific application launcher
DO NOT EDIT THIS CLASS
you can customize APPLICATION_LAUNCHER
]"
date: "$Date: 2013-06-12 13:55:42 +0200 (mer., 12 juin 2013) $"
revision: "$Revision: 36 $"
deferred class
APPLICATION_LAUNCHER_I [G -> WSF_EXECUTION create make end]
inherit
SHARED_EXECUTION_ENVIRONMENT
feature -- Execution
launch (opts: detachable WSF_SERVICE_LAUNCHER_OPTIONS)
local
nature: like launcher_nature
do
nature := launcher_nature
if nature = Void then
launch_standalone (opts)
elseif nature = nature_standalone then
launch_standalone (opts)
elseif nature = nature_nino then
launch_nino (opts)
elseif nature = nature_cgi then
launch_cgi (opts)
elseif nature = nature_libfcgi then
launch_libfcgi (opts)
else
-- bye bye
(create {EXCEPTIONS}).die (-1)
end
end
feature {NONE} -- Access
launcher_nature: detachable READABLE_STRING_8
-- Initialize the launcher nature
-- either cgi, libfcgi, or nino.
--| We could extend with more connector if needed.
--| and we could use WSF_DEFAULT_SERVICE_LAUNCHER to configure this at compilation time.
local
p: PATH
ext: detachable READABLE_STRING_32
do
create p.make_from_string (execution_environment.arguments.command_name)
if attached p.entry as l_entry then
ext := l_entry.extension
end
if ext /= Void then
if ext.same_string (nature_standalone) then
Result := nature_standalone
end
if ext.same_string (nature_nino) then
Result := nature_nino
end
if ext.same_string (nature_cgi) then
Result := nature_cgi
end
if ext.same_string (nature_libfcgi) or else ext.same_string ("fcgi") then
Result := nature_libfcgi
end
end
Result := default_nature
end
feature {NONE} -- standalone
nature_standalone: STRING = "standalone"
launch_standalone (opts: detachable WSF_SERVICE_LAUNCHER_OPTIONS)
local
launcher: WSF_STANDALONE_SERVICE_LAUNCHER [G]
do
create launcher.make_and_launch (opts)
end
feature {NONE} -- nino
nature_nino: STRING = "nino"
launch_nino (opts: detachable WSF_SERVICE_LAUNCHER_OPTIONS)
local
launcher: WSF_NINO_SERVICE_LAUNCHER [G]
do
create launcher.make_and_launch (opts)
end
feature {NONE} -- cgi
nature_cgi: STRING = "cgi"
launch_cgi (opts: detachable WSF_SERVICE_LAUNCHER_OPTIONS)
local
launcher: WSF_CGI_SERVICE_LAUNCHER [G]
do
create launcher.make_and_launch (opts)
end
feature {NONE} -- libfcgi
nature_libfcgi: STRING = "libfcgi"
launch_libfcgi (opts: detachable WSF_SERVICE_LAUNCHER_OPTIONS)
local
launcher: WSF_LIBFCGI_SERVICE_LAUNCHER [G]
do
create launcher.make_and_launch (opts)
end
feature -- Default
default_nature: STRING
do
Result := nature_standalone
end
end

View File

@@ -1,19 +0,0 @@
note
description: "[
Effective class for APPLICATION_LAUNCHER_I
You can put modification in this class
]"
date: "$Date: 2013-06-12 13:55:42 +0200 (mer., 12 juin 2013) $"
revision: "$Revision: 36 $"
class
APPLICATION_LAUNCHER [G -> WSF_EXECUTION create make end]
inherit
APPLICATION_LAUNCHER_I [G]
feature -- Custom
end

View File

@@ -1,26 +0,0 @@
note
description: "[
Specific application launcher
DO NOT EDIT THIS CLASS
you can customize APPLICATION_LAUNCHER
]"
date: "$Date: 2015-02-09 22:29:56 +0100 (lun., 09 févr. 2015) $"
revision: "$Revision: 96596 $"
deferred class
APPLICATION_LAUNCHER_I [G -> WSF_EXECUTION create make end]
feature -- Execution
launch (opts: detachable WSF_SERVICE_LAUNCHER_OPTIONS)
local
launcher: WSF_DEFAULT_SERVICE_LAUNCHER [G]
do
create launcher.make_and_launch (opts)
end
end

View File

@@ -7,8 +7,8 @@
<exclude>/.svn$</exclude>
<exclude>/EIFGENs$</exclude>
</file_rule>
<option warning="true" full_class_checking="true" is_attached_by_default="true" void_safety="all" syntax="standard">
</option>
<option warning="true"/>
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="base_extension" location="$ISE_LIBRARY\library\base_extension\base_extension-safe.ecf"/>
<library name="cms" location="..\..\..\..\cms-safe.ecf" readonly="false"/>

View File

@@ -1,8 +1,8 @@
note
description: "Summary description for {CMS_DEMO_MODULE}."
author: ""
date: "$Date: 2015-02-13 13:08:13 +0100 (ven., 13 févr. 2015) $"
revision: "$Revision: 96616 $"
date: "$Date$"
revision: "$Revision$"
class
CMS_DEMO_MODULE

35
examples/demo/roc.cfg Normal file
View File

@@ -0,0 +1,35 @@
{
"name": "demo",
"project": "demo-safe.ecf",
"location": ".",
"site_directory": "site",
"themes": {
"admin": { "location": "../../themes/admin", "mode": "link" }
},
"modules": {
"core": { "location": "../../modules/core" },
"admin": { "location": "../../modules/admin" },
"auth": { "location": "../../modules/auth" },
"basic_auth": { "location": "../../modules/basic_auth" },
"blog": { "location": "../../modules/blog" },
"contact": { "location": "../../modules/contact" },
"feed_aggregator": { "location": "../../modules/feed_aggregator" },
"google_search": { "location": "../../modules/google_search" },
"google_search_20": { "location": "../../modules/google_search_20" },
"node": { "location": "../../modules/node" },
"oauth20": { "location": "../../modules/oauth20" },
"openid": { "location": "../../modules/openid" },
"recent_changes": { "location": "../../modules/recent_changes" },
"seo": { "location": "../../modules/seo" },
"sitemap": { "location": "../../modules/sitemap" },
"session_auth": { "location": "../../modules/session_auth" },
"taxonomy": { "location": "../../modules/taxonomy" },
"files": { "location": "../../modules/files" },
"custom_block": { "location": "../../modules/custom_block" },
"embedded_video": { "location": "../../modules/embedded_video" },
"wikitext": { "location": "../../modules/wikitext" },
"messaging": { "location": "../../modules/messaging" },
"comments": { "location": "../../modules/comments" },
"masquerade": { "location": "../../dev_modules/masquerade" }
}
}

15
examples/demo/server.crt Normal file
View File

@@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICWDCCAcGgAwIBAgIJAJnXGtV+PtiYMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQwHhcNMTUwNDAzMjIxNTA0WhcNMTYwNDAyMjIxNTA0WjBF
MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50
ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
gQDFMK6ojzg+KlklhTossR13c51izMgGc3B0z9ttfHIcx2kxra3HtHcKIl5wSUvn
G8zmSyFAyQTs5LUv65q46FM9qU8tP+vTeFCfNXvjRcIEpouta3J53K0xuUlxz4d4
4D6qvdDWAez/0AkI4y5etW5zXtg7IQorJhsI9TmfGuruzwIDAQABo1AwTjAdBgNV
HQ4EFgQUbWpk2HoHa0YqpEwr7CGEatBFTMkwHwYDVR0jBBgwFoAUbWpk2HoHa0Yq
pEwr7CGEatBFTMkwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQAi+h4/
IgEocWkdRZBKHEcTrRxz5WhEDJMoVo9LhnXvCfn1G/4p6Un6sYv7Xzpi9NuSY8uV
cjfJJXhtF3AtyZ70iTAxWaRWjGaZ03PYOjlledJ5rqJEt6CCn8m+JsfznduZvbxQ
zQ6jCLXfyD/tvemB+yYEI3NntvRKx5/zt6Q26Q==
-----END CERTIFICATE-----

9
examples/demo/server.ini Normal file
View File

@@ -0,0 +1,9 @@
port=9090
#port=12345
verbose=true
socket_timeout=60
socket_recv_timeout=45
keep_alive_timeout=25
ssl_enabled=false
ssl_ca_key=server.key
ssl_ca_crt=server.crt

15
examples/demo/server.key Normal file
View File

@@ -0,0 +1,15 @@
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDFMK6ojzg+KlklhTossR13c51izMgGc3B0z9ttfHIcx2kxra3H
tHcKIl5wSUvnG8zmSyFAyQTs5LUv65q46FM9qU8tP+vTeFCfNXvjRcIEpouta3J5
3K0xuUlxz4d44D6qvdDWAez/0AkI4y5etW5zXtg7IQorJhsI9TmfGuruzwIDAQAB
AoGAR5efMg+dieRyLU8rieJcImxVbfOPg9gRsjdtIVkXTR+RL7ow59q7hXBo/Td/
WU8cm1gXoJ/bK+71YYqWyB+BaLRIWvRWb7Gdw203tu4e136Ca5uuY+71qdbVTVcl
NQ7J+T+eAQFP+a+DdT3ZQxu9eze87SMbu6i5YSpIk2kusOECQQDunv/DQ+nc+NgR
DF+Td3sNYUVRT9a1CWi6abAG6reXwp8MS4NobWDf+Ps4JODhEEwlIdq5qL7qqYBZ
Gc1TJJ53AkEA0404Fn6vAzzegBcS4RLlYTK7nMr0m4pMmDMCI6YzAYdMmKHp1e6f
IwxSmQrmwyAgwcT01bc0+A8yipcC2BWQaQJBAJ01QZm635OGmos41KsKF5bsE8gL
SpBBH69Yu/ECqGwie7iU84FUNnO4zIHjwghlPVVlZX3Vz9o4S+fn2N9DC+cCQGyZ
QyCxGdC0r5fbwHJQS/ZQn+UGfvlVzqoXDVMVn3t6ZES6YZrT61eHnOM5qGqklIxE
Old3vDZXPt/MU8Zvk3kCQBOgUx2VxvTrHN37hk9/QIDiM62+RenBm1M3ah8xTosf
1mSeEb6d9Kwb3TgPBmA7YXzJuAQfRIvEPMPxT5SSr6Q=
-----END RSA PRIVATE KEY-----

View File

@@ -22,6 +22,7 @@ email=noreply@example.com
# Name of website theme.
theme=bootstrap
[notification]
# By default, notification.email = site.email
# you can change here the email that will receive internal messages.
@@ -34,7 +35,7 @@ subject_prefix=[Eiffel CMS]
#from=...
smtp=localhost:25
#sendmail=site\bin\roc_sendmail.bat
output=site\db\mailer.log
output=site\db\mails
[modules]
# Module status
@@ -43,7 +44,7 @@ output=site\db\mailer.log
# Default is "on"
# for each module, this can be overwritten with
# module_name= on or off
*=all
#*=on
[blocks]
@include=blocks.ini
@@ -56,6 +57,15 @@ output=site\db\mailer.log
#openid.token=
#oauth.token=
[admin]
[webapi]
mode=on
[administration]
base_path=/roc-admin
theme=admin
# CMS Installation, are accessible by "all", "none" or uppon "permission". (default is none)
installation_access=all
[dev]
# masquerade: all, none, permission. Default is none.
masquerade=all

View File

@@ -0,0 +1 @@
This directory can be used to keep emails sent by the CMS.

View File

@@ -1,34 +1,67 @@
ul.cms-users {
list-style-type: none;
padding: 3px 3px 3px 3px;
border: solid 1px #ccc; }
ul.cms-users li {
border-top: dotted 1px #ccc; }
ul.cms-users li:first-child {
border-top: none; }
ul.cms-users li.cms_user a::before {
content: "[users] "; }
border: solid 1px #ccc;
}
ul.cms-users li {
border-top: dotted 1px #ccc;
display: flex;
flex-direction: row;
align-items: flex-start;
}
ul.cms-users li:first-child {
border-top: none;
}
ul.cms-users li span {
flex-grow: 1;
flex-basis: 20px;
padding-left: 2px;
text-align: left;
}
ul.cms-users li span.identifier a::before {
content: "[user] ";
}
ul.cms-users li span.roles {
color: #090;
font-weight: bold;
}
ul.cms-roles {
list-style-type: none;
padding: 3px 3px 3px 3px;
border: solid 1px #ccc; }
ul.cms-roles li {
border-top: dotted 1px #ccc; }
ul.cms-roles li:first-child {
border-top: none; }
ul.cms-roles li.cms_role a::before {
content: "[roles] "; }
border: solid 1px #ccc;
}
ul.cms-roles li {
border-top: dotted 1px #ccc;
}
ul.cms-roles li:first-child {
border-top: none;
}
ul.cms-roles li.cms_role a::before {
content: "[role] ";
}
ul.cms-permissions {
list-style-type: none;
padding: 3px 3px 3px 3px;
border: solid 1px #ccc; }
ul.cms-permissions li {
border-top: dotted 1px #ccc; }
ul.cms-permissions li:first-child {
border-top: none; }
ul.cms-permissions li.cms_permission a::before {
content: "[permission] "; }
border: solid 1px #ccc;
}
ul.cms-permissions li {
border-top: dotted 1px #ccc;
}
ul.cms-permissions li:first-child {
border-top: none;
}
ul.cms-permissions li.cms_permission a::before {
content: "[permission] ";
}
/*# sourceMappingURL=admin.css.map */
form#modules_collection thead td {
font-weight: bold;
}
form#modules_collection tr {
border-bottom: dotted 1px #ccc;
}
form#modules_collection td {
padding: 3px;
}

View File

@@ -1,5 +1,4 @@
ul.cms-users {
list-style-type: none;
padding: 3px 3px 3px 3px;
border: solid 1px #ccc;
@@ -9,10 +8,22 @@ ul.cms-users {
&:first-child {
border-top: none;
}
}
li.cms_user a::before {
content: "[users] ";
display: flex;
flex-direction: row;
align-items: flex-start;
span {
flex-grow: 1;
flex-basis: 20px;
padding-left: 2px;
text-align: left;
&.identifier a::before {
content: "[user] ";
}
&.roles {
color: #090;
font-weight: bold;
}
}
}
}
@@ -31,7 +42,7 @@ ul.cms-roles {
}
li.cms_role a::before {
content: "[roles] ";
content: "[role] ";
}
}
@@ -54,6 +65,16 @@ ul.cms-permissions {
}
}
form#modules_collection {
thead td {
font-weight: bold;
}
tr {
border-bottom: dotted 1px #ccc;
}
td {
padding: 3px;
}
}

View File

@@ -1,8 +0,0 @@
{
"email": "webmaster@example.com",
"subjet_register": "Thank you for regitering with us, activate account",
"subjet_activate": "New account ativation token",
"subjet_password": "Password Recovery!!!",
"subjet_oauth": "Welcome",
"smtp": "127.0.0.1"
}

View File

@@ -8,6 +8,9 @@
<div>
<label>Email:</label> {$user.email/}
</div>
<div>
<label>Profile name:</label> {$user.profile_name/}
</div>
<div>
<label>Creation Date:</label> {$user.creation_date/} (UTC)
</div>

View File

@@ -1,3 +1,3 @@
<div>
<p>We have send you a new token code, check your email to generate a new password</p>
<p>We have sent you a new token code, check your email to generate a new password</p>
</div>

View File

@@ -4,6 +4,7 @@
<h3>Login or <a href="{$site_url/}account/roc-register">Register</a></h3>
<div>
<form name="cms_basic_auth" action="{$site_url/}roc-basic-login" method="POST">
{unless isempty="$site_destination"}<input type="hidden" name="destination" value="{$site_destination/}">{/unless}
<input type="hidden" name="host" id="host" value="{$site_url/}">
<div>
<input type="text" name="username" id="username" required>

View File

@@ -1,6 +0,0 @@
CREATE TABLE blog_post_nodes(
`nid` INTEGER NOT NULL CHECK("nid">=0),
`revision` INTEGER NOT NULL,
`tags` VARCHAR(255),
CONSTRAINT PK_nid_revision PRIMARY KEY (nid,revision)
);

View File

@@ -0,0 +1,18 @@
div.comments-box div.title {
font-size: x-large;
}
div.comments-box ul.comments {
border-top: solid 1px #eee;
padding: 0 0 0 20px;
border-left: solid 5px #eee;
list-style-type: none;
}
div.comments-box ul.comments li.comment {
border-bottom: solid 1px #eee;
}
div.comments-box ul.comments li.comment > span.author {
font-weight: bold;
}
div.comments-box ul.comments li.comment > span.info {
font-style: italic;
}

View File

@@ -0,0 +1,17 @@
div.comments-box {
div.title {
font-size: x-large;
}
ul.comments {
border-top: solid 1px #eee;
padding: 0 0 0 20px;
border-left: solid 5px #eee;
list-style-type: none;
li.comment {
border-bottom: solid 1px #eee;
&>span.author { font-weight: bold; }
&>span.info { font-style: italic; }
}
}
}

View File

@@ -0,0 +1,13 @@
CREATE TABLE comments(
`cid` INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT UNIQUE,
`content` TEXT,
`format` VARCHAR(128),
`author` INTEGER,
`author_name` VARCHAR(255),
`created` DATETIME NOT NULL,
`changed` DATETIME NOT NULL,
`status` INTEGER,
`parent` INTEGER,
`entity` VARCHAR(255), /* Associated entity */
`entity_type` VARCHAR(255) /* Type of associated entity */
);

View File

@@ -1,4 +1,29 @@
CREATE TABLE `logs`(
`id` INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
`category` VARCHAR(255) NOT NULL,
`level` INTEGER NOT NULL,
`uid` INTEGER,
`message` TEXT NOT NULL,
`info` TEXT,
`link` TEXT,
`date` DATETIME NOT NULL
);
CREATE TABLE `custom_values`(
`type` VARCHAR(255) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`value` TEXT
);
CREATE TABLE `path_aliases`(
`pid` INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
`source` VARCHAR(255) NOT NULL,
`alias` VARCHAR(255) NOT NULL,
`lang` VARCHAR(12)
);
CREATE TABLE `users`(
`uid` INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
`name` VARCHAR(100) NOT NULL,
@@ -8,6 +33,7 @@ CREATE TABLE `users`(
`status` INTEGER,
`created` DATETIME NOT NULL,
`signed` DATETIME,
`profile_name` VARCHAR(250) NULL,
CONSTRAINT `name`
UNIQUE(`name`)
);

View File

@@ -0,0 +1,2 @@
ALTER TABLE users ADD profile_name VARCHAR(250) NULL;

View File

@@ -2,6 +2,7 @@
"blocks": {
"test": {
"title": "Custom block test",
"is_raw": "yes",
"region": "footer",
"weight": 100,
"conditions": ["path:demo/*"]

View File

@@ -1,3 +0,0 @@
<div>
This is a nice custom block test for site {$sitename/}.
</div>

View File

@@ -0,0 +1,5 @@
{
"gcse": {
"search_engine_id":""
}
}

View File

@@ -0,0 +1,6 @@
<form action="{$site_url/}gcse20" class="search-form" id="search-form">
<div class="form-group has-feedback">
<input type="search" class="form-control" name="q" id="search-query" placeholder="search" value="{htmlentities}{$cms_search_query/}{/htmlentities}" >
<span class="glyphicon glyphicon-search form-control-feedback"></span>
</div>
</form>

View File

@@ -0,0 +1,7 @@
<section>
<header>
<h2>Results for <kbd>{$cms_search_query/}</kbd></h2>
</header>
<gcse:searchresults-only></gcse:searchresults-only>
</section>

View File

@@ -0,0 +1,15 @@
.messaging-box fieldset {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
overflow: scroll;
height: 50ex;
line-height: 2.5ex;
}
.messaging-box fieldset div {
width: 300px;
}
.messaging-box fieldset input[type="checkbox"] {
margin-right: 5px;
margin-left: 3px;
}

View File

@@ -0,0 +1,18 @@
.messaging-box {
fieldset {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
div {
width: 300px;
}
overflow:scroll;
height:50ex;
line-height: 2.5ex;
input[type="checkbox"] {
margin-right: 5px;
margin-left: 3px;
}
}
}

View File

@@ -9,6 +9,9 @@ ul.cms-nodes li {
ul.cms-nodes li:first-child {
border-top: none;
}
ul.cms-nodes li span.author, ul.cms-nodes li span.info {
float: right;
}
ul.cms-nodes li.cms_type_page a::before {
content: "[page] ";
}

View File

@@ -8,6 +8,9 @@ ul.cms-nodes {
&:first-child {
border-top: none;
}
span.author, span.info {
float: right;
}
}
li.cms_type_page a::before {
content: "[page] ";

View File

@@ -8,6 +8,7 @@ CREATE TABLE nodes (
`content` TEXT,
`format` VARCHAR(128),
`author` INTEGER,
`editor` INTEGER,
`publish` DATETIME,
`created` DATETIME NOT NULL,
`changed` DATETIME NOT NULL,
@@ -23,15 +24,9 @@ CREATE TABLE node_revisions (
`content` TEXT,
`format` VARCHAR(128),
`author` INTEGER,
`editor` INTEGER,
`changed` DATETIME NOT NULL,
`status` INTEGER,
CONSTRAINT Unique_nid_revision PRIMARY KEY (nid,revision)
);
CREATE TABLE page_nodes(
`nid` INTEGER NOT NULL,
`revision` INTEGER NOT NULL,
`parent` INTEGER,
CONSTRAINT PK_nid_revision PRIMARY KEY (nid,revision)
);

View File

@@ -0,0 +1,8 @@
CREATE TABLE page_nodes(
`nid` INTEGER NOT NULL,
`revision` INTEGER NOT NULL,
`parent` INTEGER,
CONSTRAINT PK_nid_revision PRIMARY KEY (nid,revision)
);

View File

@@ -0,0 +1,7 @@
ALTER TABLE nodes ADD editor INTEGER ;
UPDATE nodes SET editor = author;
ALTER TABLE node_revisions ADD editor INTEGER ;
UPDATE node_revisions SET editor = author;

View File

@@ -1,7 +1,7 @@
<div class="primary-tabs">
<div>
{foreach item="item" from="$oauth_consumers"}
<a href="{$site_url/}account/login-with-oauth/{$item/}">Login with {$item/}</a><br>
<a href="{$site_url/}account/auth/login-with-oauth/{$item/}">Login with {$item/}</a><br>
{/foreach}
</div>
</div>

View File

@@ -4,6 +4,7 @@
<h3>Login or <a href="{$site_url/}account/roc-register">Register</a></h3>
<div>
<form name="cms_session_auth" action="{$site_url/}account/auth/roc-session-login" method="POST">
{unless isempty="$site_destination"}<input type="hidden" name="destination" value="{$site_destination/}">{/unless}
<div>
<input type="text" name="username" id="username" required value="{$username/}">
<label>Username</label>

View File

@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:html="http://www.w3.org/TR/REC-html40"
xmlns:sitemap="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>XML Sitemap</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
body {
font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,Verdana;
font-size: 13px;
}
#header {
text-align: center;
padding-top: 14px;
padding-bottom: 29px;
}
h1 {
font-weight: normal;
font-size: 24px;
line-height: 20px;
color: #333333;
}
h2 {
font-weight: normal;
font-size: 13px;
color: #aaaaaa;
line-height: 10px;
}
#content {
background: #f8f8f8;
border-top: 1px solid #dddddd;
padding-top: 50px;
}
#content a:visited,
#content tr:hover a:visited {
color: #68009c;
}
table {
margin: 0 auto;
text-align: left;
}
tr#table-header:hover {
background: none;
}
tr:hover {
background: #ebebeb;
}
#content tr:hover a {
color: #6e6e6e;
}
td {
color: #6e6e6e;
font-size: 12px;
border-bottom: 1px solid #dddddd;
padding: 11px 5px 13px;
}
th {
color: #333333;
font-size: 12px;
border-bottom: 1px solid #dddddd;
padding: 5px 50px 17px 5px;
}
#footer {
background: #f8f8f8;
font-size: 13px;
color: #aaaaaa;
padding: 54px 0 20px;
text-align: center;
}
a {
color: #2384c6;
}
a:hover {
color: #6e6e6e;
text-decoration: none;
}
</style>
</head>
<body>
<div id="header">
<h1>XML Sitemap</h1>
<h2>This is a XML Sitemap which is supposed to be processed by <a href="http://www.google.com">Google search engine</a>.</h2>
</div>
<div id="content">
<table cellpadding="5" cellspacing="0">
<tr id="table-header">
<th>URL</th>
<th>Priority</th>
<th>Change Frequency</th>
<th>LastChange (GMT)</th>
</tr>
<xsl:variable name="lower" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:for-each select="sitemap:urlset/sitemap:url">
<tr>
<xsl:if test="position() mod 2 != 1">
<xsl:attribute name="class">high</xsl:attribute>
</xsl:if>
<td>
<xsl:variable name="itemURL">
<xsl:value-of select="sitemap:loc"/>
</xsl:variable>
<a href="{$itemURL}">
<xsl:value-of select="sitemap:loc"/>
</a>
</td>
<td>
<xsl:value-of select="concat(sitemap:priority*100,'%')"/>
</td>
<td>
<xsl:value-of select="concat(translate(substring(sitemap:changefreq, 1, 1),concat($lower, $upper),concat($upper, $lower)),substring(sitemap:changefreq, 2))"/>
</td>
<td>
<xsl:value-of select="concat(substring(sitemap:lastmod,0,11),concat(' ', substring(sitemap:lastmod,12,5)))"/>
</td>
</tr>
</xsl:for-each>
</table>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

View File

@@ -0,0 +1,15 @@
#main code, #main e, #main eiffel {
display: block;
font-family: monospace;
white-space: pre-wrap;
border: solid 1px #ccc;
background-color: #fff;
line-height: 1.3;
padding: 10px;
margin: 2px 0 2px 0;
}
#main code.inline, #main e.inline, #main eiffel.inline {
display: inline-block;
padding: 0 2px 0 2px;
margin: 0;
}

View File

@@ -0,0 +1,18 @@
#main {
code, e, eiffel {
display: block;
font-family: monospace;
white-space: pre-wrap;
border: solid 1px #ccc;
background-color: #fff;
line-height: 1.3;
padding: 10px;
margin: 2px 0 2px 0;
&.inline {
display: inline-block;
padding: 0 2px 0 2px;
margin: 0;
}
}
}

View File

@@ -1,23 +0,0 @@
CREATE TABLE `logs`(
`id` INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
`category` VARCHAR(255) NOT NULL,
`level` INTEGER NOT NULL,
`uid` INTEGER,
`message` TEXT NOT NULL,
`info` TEXT,
`link` TEXT,
`date` DATETIME NOT NULL
);
CREATE TABLE `custom_values`(
`type` VARCHAR(255) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`value` TEXT
);
CREATE TABLE `path_aliases`(
`pid` INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
`source` VARCHAR(255) NOT NULL,
`alias` VARCHAR(255) NOT NULL,
`lang` VARCHAR(12)
);

View File

@@ -47,6 +47,9 @@ ul.horizontal li {
padding: 5px;
font-style: italic;
}
#content .preview {
border: solid 1px red;
}
.sidebar {
padding: 5px;

View File

@@ -51,6 +51,9 @@ ul.horizontal {
padding: 5px;
font-style: italic;
}
.preview {
border: solid 1px red;
}
}
.sidebar {
padding: 5px;

View File

@@ -4,11 +4,11 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- EWF CMS -->
<link rel="stylesheet" href="{$site_url/}theme/css/style.css">
<link rel="stylesheet" href="{$theme_path/}css/style.css">
<!-- jQuery dep -->
<script src="{$site_url/}theme/js/jquery-1.10.2.min.js"></script>
<script src="{$site_url/}theme/js/popup_search.js"></script>
<script src="{$theme_path/}js/jquery-1.10.2.min.js"></script>
<script src="{$theme_path/}js/popup_search.js"></script>
{if isset="$head"}{$head/}{/if}
{if isset="$styles"}{$styles/}{/if}
@@ -37,17 +37,14 @@
{$page.primary_nav/}
{/if}
</div>
{if isset="$page.regions.search"}
<!-- Page search -->
<div class="row">
<div class="col-md-2 col-md-offset-9">
<form action="{$site_url/}gcse" class="search-form" id="gcse_search_form">
<div class="form-group has-feedback">
<input type="search" class="form-control" name="q" id="gcse_search" placeholder="search">
<span class="glyphicon glyphicon-search form-control-feedback"></span>
</div>
</form>
{$page.regions.search/}
</div>
</div>
{/if}
<!-- General Page Content -->
<div id='content' class='row-fluid'>
<!-- Left Sidebar sidebar_first -->

View File

@@ -0,0 +1,6 @@
<form action="{$site_url/}search" class="search-form" id="search-form">
<div class="form-group has-feedback">
<input type="search" class="form-control" name="q" id="search-query" placeholder="search" value="{htmlentities}{$cms_search_query/}{/htmlentities}" >
<span class="glyphicon glyphicon-search form-control-feedback"></span>
</div>
</form>

View File

@@ -4,6 +4,7 @@ author=jvelilla
version=0.1
regions[page_top] = Top
regions[header] = Header
regions[search] = Search
regions[content] = Content
regions[highlighted] = Highlighted
regions[help] = Help

View File

@@ -53,8 +53,11 @@ feature -- CMS modules
a_setup.register_module (create {CMS_OPENID_MODULE}.make)
a_setup.register_module (create {CMS_SESSION_AUTH_MODULE}.make)
-- User
-- Nodes
a_setup.register_module (create {CMS_NODE_MODULE}.make (a_setup))
a_setup.register_module (create {CMS_NODE_MODULE}.make)
a_setup.register_module (create {CMS_PAGE_MODULE}.make)
a_setup.register_module (create {CMS_BLOG_MODULE}.make)
-- Files
@@ -65,10 +68,16 @@ feature -- CMS modules
-- Misc
a_setup.register_module (create {CMS_SEO_MODULE}.make)
a_setup.register_module (create {CMS_SITEMAP_MODULE}.make)
a_setup.register_module (create {CMS_COMMENTS_MODULE}.make)
-- Taxonomy
a_setup.register_module (create {CMS_TAXONOMY_MODULE}.make)
-- Wiki
a_setup.register_module (create {WIKITEXT_MODULE}.make)
a_setup.register_module (create {EMBEDDED_VIDEO_MODULE}.make)
-- Recent changes
a_setup.register_module (create {CMS_RECENT_CHANGES_MODULE}.make)
@@ -76,11 +85,15 @@ feature -- CMS modules
a_setup.register_module (create {FEED_AGGREGATOR_MODULE}.make)
-- Miscellanious
a_setup.register_module (create {GOOGLE_CUSTOM_SEARCH_MODULE}.make)
a_setup.register_module (create {CMS_MESSAGING_MODULE}.make)
a_setup.register_module (create {GOOGLE_CUSTOM_SEARCH_MODULE_20}.make)
a_setup.register_module (create {CMS_CUSTOM_BLOCK_MODULE}.make)
a_setup.register_module (create {CMS_DEBUG_MODULE}.make)
a_setup.register_module (create {CMS_DEMO_MODULE}.make)
-- Dev
a_setup.register_module (create {MASQUERADE_AUTH_MODULE}.make)
end
end

View File

@@ -2,17 +2,24 @@ note
description: "[
DEMO application server.
]"
date: "$Date: 2015-02-09 22:29:56 +0100 (lun., 09 févr. 2015) $"
revision: "$Revision: 96596 $"
date: "$Date$"
revision: "$Revision$"
class
DEMO_CMS_SERVER
inherit
ROC_CMS_LAUNCHER [DEMO_CMS_EXECUTION]
redefine
optional_application_name
end
create
make_and_launch
feature -- Access
optional_application_name: STRING_32 = "server"
end

View File

@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-14-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-14-0 http://www.eiffel.com/developers/xml/configuration-1-14-0.xsd" name="launcher" uuid="6FDCA393-AFC3-436B-A58A-870923967C86" library_target="launcher">
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="launcher" uuid="6FDCA393-AFC3-436B-A58A-870923967C86" library_target="launcher">
<target name="common" abstract="true">
<root all_classes="true"/>
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="cms" location="..\cms-safe.ecf"/>
<library name="cms_app_env" location="..\library\app_env\app_env-safe.ecf" readonly="false"/>
@@ -10,7 +11,6 @@
<target name="launcher" extends="common">
<library name="cgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\cgi-safe.ecf"/>
<library name="libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\libfcgi-safe.ecf"/>
<library name="nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\nino-safe.ecf"/>
<library name="standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\standalone-safe.ecf"/>
<cluster name="src" location=".\" recursive="false"/>
<cluster name="launcher" location=".\any\" recursive="true"/>

View File

@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-14-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-14-0 http://www.eiffel.com/developers/xml/configuration-1-14-0.xsd" name="launcher" uuid="6FDCA393-AFC3-436B-A58A-870923967C86" library_target="launcher">
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="launcher" uuid="6FDCA393-AFC3-436B-A58A-870923967C86" library_target="launcher">
<target name="common" abstract="true">
<root all_classes="true"/>
<option void_safety="none" />
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
<library name="cms" location="..\cms.ecf"/>
<library name="cms_app_env" location="..\library\app_env\app_env.ecf" readonly="false"/>
@@ -11,7 +12,6 @@
<target name="launcher" extends="common">
<library name="cgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\cgi.ecf"/>
<library name="libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\libfcgi.ecf"/>
<library name="nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\nino.ecf"/>
<library name="standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\standalone.ecf"/>
<cluster name="src" location=".\" recursive="false"/>
<cluster name="launcher" location=".\any\" recursive="true"/>

View File

@@ -4,8 +4,8 @@ note
You can put modification in this class
]"
date: "$Date: 2013-06-12 13:55:42 +0200 (mer., 12 juin 2013) $"
revision: "$Revision: 36 $"
date: "$Date$"
revision: "$Revision$"
class
APPLICATION_LAUNCHER [G -> WSF_EXECUTION create make end]

View File

@@ -6,8 +6,8 @@ note
you can customize APPLICATION_LAUNCHER
]"
date: "$Date: 2013-06-12 13:55:42 +0200 (mer., 12 juin 2013) $"
revision: "$Revision: 36 $"
date: "$Date$"
revision: "$Revision$"
deferred class
APPLICATION_LAUNCHER_I [G -> WSF_EXECUTION create make end]
@@ -26,8 +26,6 @@ feature -- Execution
launch_standalone (opts)
elseif nature = nature_standalone then
launch_standalone (opts)
elseif nature = nature_nino then
launch_nino (opts)
elseif nature = nature_cgi then
launch_cgi (opts)
elseif nature = nature_libfcgi then
@@ -42,7 +40,7 @@ feature {NONE} -- Access
launcher_nature: detachable READABLE_STRING_8
-- Initialize the launcher nature
-- either cgi, libfcgi, or nino.
-- either cgi, libfcgi, or standalone.
--| We could extend with more connector if needed.
--| and we could use WSF_DEFAULT_SERVICE_LAUNCHER to configure this at compilation time.
local
@@ -57,9 +55,6 @@ feature {NONE} -- Access
if ext.same_string (nature_standalone) then
Result := nature_standalone
end
if ext.same_string (nature_nino) then
Result := nature_nino
end
if ext.same_string (nature_cgi) then
Result := nature_cgi
end
@@ -81,17 +76,6 @@ feature {NONE} -- standalone
create launcher.make_and_launch (opts)
end
feature {NONE} -- nino
nature_nino: STRING = "nino"
launch_nino (opts: detachable WSF_SERVICE_LAUNCHER_OPTIONS)
local
launcher: WSF_NINO_SERVICE_LAUNCHER [G]
do
create launcher.make_and_launch (opts)
end
feature {NONE} -- cgi
nature_cgi: STRING = "cgi"
@@ -121,7 +105,4 @@ feature -- Default
Result := nature_standalone
end
end

View File

@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-14-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-14-0 http://www.eiffel.com/developers/xml/configuration-1-14-0.xsd" name="cgi_launcher" uuid="0FE4F1D0-BB70-4C7F-A66E-B27F1D718109" library_target="cgi_launcher">
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="cgi_launcher" uuid="0FE4F1D0-BB70-4C7F-A66E-B27F1D718109" library_target="cgi_launcher">
<target name="common" abstract="true">
<root all_classes="true"/>
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="cms" location="..\cms-safe.ecf"/>
<library name="cms_app_env" location="..\library\app_env\app_env-safe.ecf" readonly="false"/>

View File

@@ -4,8 +4,8 @@ note
You can put modification in this class
]"
date: "$Date: 2013-06-12 13:55:42 +0200 (mer., 12 juin 2013) $"
revision: "$Revision: 36 $"
date: "$Date$"
revision: "$Revision$"
class
APPLICATION_LAUNCHER [G -> WSF_EXECUTION create make end]

View File

@@ -6,8 +6,8 @@ note
you can customize APPLICATION_LAUNCHER
]"
date: "$Date: 2015-02-09 22:29:56 +0100 (lun., 09 févr. 2015) $"
revision: "$Revision: 96596 $"
date: "$Date$"
revision: "$Revision$"
deferred class
APPLICATION_LAUNCHER_I [G -> WSF_EXECUTION create make end]

View File

@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-14-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-14-0 http://www.eiffel.com/developers/xml/configuration-1-14-0.xsd" name="libfcgi_launcher" uuid="04D7D1EA-059B-4024-B0DE-BBB57AB2D00C" library_target="libfcgi_launcher">
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="libfcgi_launcher" uuid="04D7D1EA-059B-4024-B0DE-BBB57AB2D00C" library_target="libfcgi_launcher">
<target name="common" abstract="true">
<root all_classes="true"/>
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="cms" location="..\cms-safe.ecf"/>
<library name="cms_app_env" location="..\library\app_env\app_env-safe.ecf" readonly="false"/>

View File

@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-14-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-14-0 http://www.eiffel.com/developers/xml/configuration-1-14-0.xsd" name="libfcgi_launcher" uuid="04D7D1EA-059B-4024-B0DE-BBB57AB2D00C" library_target="libfcgi_launcher">
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="libfcgi_launcher" uuid="04D7D1EA-059B-4024-B0DE-BBB57AB2D00C" library_target="libfcgi_launcher">
<target name="common" abstract="true">
<root all_classes="true"/>
<option void_safety="none" />
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
<library name="cms" location="..\cms.ecf"/>
<library name="cms_app_env" location="..\library\app_env\app_env.ecf" readonly="false"/>

View File

@@ -2,8 +2,8 @@ note
description: "[
Reusable ROC CMS launcher.
]"
date: "$Date: 2015-02-09 22:29:56 +0100 (lun., 09 févr. 2015) $"
revision: "$Revision: 96596 $"
date: "$Date$"
revision: "$Revision$"
class
ROC_CMS_LAUNCHER [G -> CMS_EXECUTION create make end]

View File

@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-14-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-14-0 http://www.eiffel.com/developers/xml/configuration-1-14-0.xsd" name="standalone_launcher" uuid="F42660A9-26C2-466B-A63C-C7823C808BE7" library_target="standalone_launcher">
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="standalone_launcher" uuid="F42660A9-26C2-466B-A63C-C7823C808BE7" library_target="standalone_launcher">
<target name="common" abstract="true">
<root all_classes="true"/>
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="cms" location="..\cms-safe.ecf"/>
<library name="cms_app_env" location="..\library\app_env\app_env-safe.ecf" readonly="false"/>

View File

@@ -1,8 +1,9 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-14-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-14-0 http://www.eiffel.com/developers/xml/configuration-1-14-0.xsd" name="standalone_launcher" uuid="F42660A9-26C2-466B-A63C-C7823C808BE7" library_target="standalone_launcher">
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="standalone_launcher" uuid="F42660A9-26C2-466B-A63C-C7823C808BE7" library_target="standalone_launcher">
<target name="common" abstract="true">
<root all_classes="true"/>
<option void_safety="none" />
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
<library name="cms" location="..\cms.ecf"/>
<library name="cms_app_env" location="..\library\app_env\app_env.ecf" readonly="false"/>

View File

@@ -4,13 +4,11 @@
<target name="app_env">
<root all_classes="true"/>
<option warning="true" void_safety="all">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option>
<setting name="console_application" value="true"/>
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="json" location="$ISE_LIBRARY\contrib\library\text\parser\json\library\json-safe.ecf" readonly="false"/>
<library name="logging" location="$ISE_LIBRARY\library\runtime\logging\logging-safe.ecf"/>
<library name="thread" location="$ISE_LIBRARY\library\thread\thread-safe.ecf"/>
<cluster name="src" location=".\src\" recursive="true">
<file_rule>
<exclude>/EIFGENs$</exclude>

View File

@@ -11,8 +11,8 @@ note
- templates (html, Collection+JSON, ...)
- ...
]"
date: "$Date: 2015-02-05 10:25:53 +0100 (jeu., 05 févr. 2015) $"
revision: "$Revision: 96584 $"
date: "$Date$"
revision: "$Revision$"
class
APPLICATION_ENVIRONMENT

View File

@@ -1,7 +1,7 @@
note
description: "Provide access to json configuration"
date: "$Date: 2015-01-27 19:15:02 +0100 (mar., 27 janv. 2015) $"
revision: "$Revision: 96542 $"
date: "$Date$"
revision: "$Revision$"
class
APPLICATION_JSON_CONFIGURATION_HELPER

View File

@@ -1,7 +1,7 @@
note
description: "Object that represent Database configuration settings"
date: "$Date: 2015-02-09 22:29:56 +0100 (lun., 09 févr. 2015) $"
revision: "$Revision: 96596 $"
date: "$Date$"
revision: "$Revision$"
class
DATABASE_CONFIGURATION

View File

@@ -1,7 +1,7 @@
note
description: "Object that represents Logger configuration settings"
date: "$Date: 2015-02-03 19:11:23 +0100 (mar., 03 févr. 2015) $"
revision: "$Revision: 96575 $"
date: "$Date$"
revision: "$Revision$"
class
LOGGER_CONFIGURATION

View File

@@ -1,7 +1,7 @@
note
description: "Object handling error information"
date: "$Date: 2014-08-20 15:21:15 -0300 (mi., 20 ago. 2014) $"
revision: "$Revision: 95678 $"
date: "$Date$"
revision: "$Revision$"
class
BASIC_ERROR_HANDLER

View File

@@ -1,7 +1,7 @@
note
description: "Provides error information"
date: "$Date: 2014-08-20 15:21:15 -0300 (mi., 20 ago. 2014) $"
revision: "$Revision: 95678 $"
date: "$Date$"
revision: "$Revision$"
class
SHARED_ERROR

View File

@@ -1,7 +1,7 @@
note
description: "Wrapper class providing synchronize logging access."
date: "$Date: 2014-08-20 15:21:15 -0300 (mi., 20 ago. 2014) $"
revision: "$Revision: 95678 $"
date: "$Date$"
revision: "$Revision$"
class
LOGGING_FACILITY

View File

@@ -1,7 +1,7 @@
note
description: "Provides logger information"
date: "$Date: 2015-02-05 10:25:53 +0100 (jeu., 05 févr. 2015) $"
revision: "$Revision: 96584 $"
date: "$Date$"
revision: "$Revision$"
class
SHARED_LOGGER

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-13-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-13-0 http://www.eiffel.com/developers/xml/configuration-1-13-0.xsd" name="config" uuid="A3762109-D650-40A1-B55A-7D236A17903F" library_target="config">
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="config" uuid="A3762109-D650-40A1-B55A-7D236A17903F" library_target="config">
<target name="config">
<root all_classes="true"/>
<file_rule>
@@ -7,8 +7,9 @@
<exclude>/EIFGENs$</exclude>
<exclude>/.svn$</exclude>
</file_rule>
<option warning="true" full_class_checking="true" is_attached_by_default="true" void_safety="all" syntax="standard">
<option warning="true">
</option>
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="json" location="$ISE_LIBRARY\contrib\library\text\parser\json\library\json-safe.ecf"/>
<cluster name="src" location=".\src\" recursive="true"/>

View File

@@ -1,8 +1,8 @@
note
description: "Summary description for {CONFIG_READER}."
author: ""
date: "$Date: 2014-12-18 16:37:11 +0100 (jeu., 18 déc. 2014) $"
revision: "$Revision: 96383 $"
date: "$Date$"
revision: "$Revision$"
deferred class
CONFIG_READER

View File

@@ -44,8 +44,8 @@ note
@include=file-to-include
]"
date: "$Date: 2015-03-09 19:25:49 +0100 (lun., 09 mars 2015) $"
revision: "$Revision: 96797 $"
date: "$Date$"
revision: "$Revision$"
class
INI_CONFIG

View File

@@ -1,7 +1,7 @@
note
description: "Object parsing a JSON configuration file."
date: "$Date: 2014-12-18 16:37:11 +0100 (jeu., 18 déc. 2014) $"
revision: "$Revision: 96383 $"
date: "$Date$"
revision: "$Revision$"
class
JSON_CONFIG
@@ -148,7 +148,9 @@ feature -- Access
-- `k' can be a single name such as "foo",
-- or a qualified name such as "foo.bar" (assuming that "foo" is associated with a JSON object).
do
if attached json_value as obj then
if k.is_empty then
Result := json_value
elseif attached json_value as obj then
Result := object_json_value (obj, k.to_string_32)
end
end

View File

@@ -2,9 +2,9 @@ note
description: "[
Testing suite for CONFIG_READER .
]"
author: "$Author: jfiat $"
date: "$Date: 2014-12-18 16:37:11 +0100 (jeu., 18 déc. 2014) $"
revision: "$Revision: 96383 $"
author: "$Author$"
date: "$Date$"
revision: "$Revision$"
class
TEST_CONFIG_READER_SET

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-13-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-13-0 http://www.eiffel.com/developers/xml/configuration-1-13-0.xsd" name="email_service" uuid="261DC9D5-C3A0-498D-A063-0BB6C80423CC" library_target="email_service">
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="email_service" uuid="261DC9D5-C3A0-498D-A063-0BB6C80423CC" library_target="email_service">
<target name="email_service">
<root all_classes="true"/>
<file_rule>
@@ -7,8 +7,9 @@
<exclude>/EIFGENs$</exclude>
<exclude>/.svn$</exclude>
</file_rule>
<option warning="true" full_class_checking="true" is_attached_by_default="true" void_safety="all" syntax="standard">
<option warning="true">
</option>
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="cms_app_env" location="..\app_env\app_env-safe.ecf"/>
<library name="notification_mailer" location="$ISE_LIBRARY\contrib\library\runtime\process\notification_email\notification_email-safe.ecf"/>

View File

@@ -1,7 +1,7 @@
note
description: "Basic Email Service"
date: "$Date: 2015-04-30 05:45:25 -0300 (ju. 30 de abr. de 2015) $"
revision: "$Revision: 97218 $"
date: "$Date$"
revision: "$Revision$"
class
EMAIL_SERVICE

View File

@@ -1,8 +1,8 @@
note
description: "Basic Email Service customized for cms site"
author: ""
date: "$Date: 2015-01-16 07:17:14 -0300 (vi. 16 de ene. de 2015) $"
revision: "$Revision: 96467 $"
date: "$Date$"
revision: "$Revision$"
deferred class
EMAIL_SERVICE_PARAMETERS

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-14-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-14-0 http://www.eiffel.com/developers/xml/configuration-1-14-0.xsd" name="gcse" uuid="81645CEF-4651-45CF-A890-B126E4A6D78C" library_target="gcse">
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="gcse" uuid="81645CEF-4651-45CF-A890-B126E4A6D78C" library_target="gcse">
<target name="gcse">
<root all_classes="true"/>
<file_rule>
@@ -8,10 +8,8 @@
<exclude>/CVS$</exclude>
<exclude>/.svn$</exclude>
</file_rule>
<option warning="true" void_safety="all">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option>
<setting name="console_application" value="true"/>
<option warning="true"/>
<setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="http_client_extension" location="..\http_client_extension\http_client_extension-safe.ecf" readonly="false"/>
<library name="json" location="$ISE_LIBRARY\contrib\library\text\parser\json\library\json-safe.ecf" readonly="false"/>

View File

@@ -4,8 +4,8 @@ note
Example call:
GET https://www.googleapis.com/customsearch/v1?key=INSERT_YOUR_API_KEY&cx=017576662512468239146:omuauf_lfve&q=lectures
]"
date: "$Date: 2015-10-09 08:11:07 -0300 (vi., 09 oct. 2015) $"
revision: "$Revision: 97973 $"
date: "$Date$"
revision: "$Revision$"
EIS: "name=Google Custom Search Engine", "src=https://developers.google.com/custom-search/json-api/v1/using_rest", "protocol=uri"
class

View File

@@ -1,7 +1,7 @@
note
description: "Represent metadata describing the query for the current set of results."
date: "$Date: 2015-10-09 08:11:07 -0300 (vi., 09 oct. 2015) $"
revision: "$Revision: 97973 $"
date: "$Date$"
revision: "$Revision$"
class
GCSE_PAGE

View File

@@ -1,7 +1,7 @@
note
description: "Represent a search result, include the URL, title and text snippets that describe the result"
date: "$Date: 2015-10-09 08:11:07 -0300 (vi., 09 oct. 2015) $"
revision: "$Revision: 97973 $"
date: "$Date$"
revision: "$Revision$"
class
GCSE_PAGE_ITEM

View File

@@ -16,8 +16,8 @@ note
]
}
]"
date: "$Date: 2015-10-09 08:11:07 -0300 (vi., 09 oct. 2015) $"
revision: "$Revision: 97973 $"
date: "$Date$"
revision: "$Revision$"
EIS: "name=PageMaps", "src=https://developers.google.com/custom-search/docs/structured_data#pagemaps", "protocol=url"
class

View File

@@ -148,8 +148,8 @@ note
"i": include
sort string The sort expression to apply to the results.
]"
date: "$Date: 2015-10-08 07:51:29 -0300 (ju., 08 oct. 2015) $"
revision: "$Revision: 97966 $"
date: "$Date$"
revision: "$Revision$"
EIS: "GCSE parameters", "src=https://developers.google.com/custom-search/json-api/v1/reference/cse/list", "protocol=URI"
class

View File

@@ -7,8 +7,8 @@ note
Search infromation
Items: array of actual search results.
]"
date: "$Date: 2015-10-08 07:51:29 -0300 (ju., 08 oct. 2015) $"
revision: "$Revision: 97966 $"
date: "$Date$"
revision: "$Revision$"
class
GCSE_RESPONSE

View File

@@ -1,7 +1,7 @@
note
description : "test application root class"
date : "$Date: 2015-12-02 10:27:38 -0300 (mi. 02 de dic. de 2015) $"
revision : "$Revision: 98180 $"
date : "$Date$"
revision : "$Revision$"
class
APPLICATION

View File

@@ -3,8 +3,8 @@ note
Eiffel tests that can be executed by testing tool.
]"
author: "EiffelStudio test wizard"
date: "$Date: 2015-10-08 07:51:29 -0300 (ju., 08 oct. 2015) $"
revision: "$Revision: 97966 $"
date: "$Date$"
revision: "$Revision$"
testing: "type/manual"
class

Some files were not shown because too many files have changed in this diff Show More