groupdocs 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +9 -9
- data/CHANGELOG.md +482 -477
- data/Gemfile +3 -3
- data/LICENSE.txt +21 -21
- data/README.md +94 -94
- data/Rakefile +9 -9
- data/examples/README.md +12 -12
- data/examples/api-samples/Gemfile +5 -5
- data/examples/api-samples/Gemfile.lock +49 -49
- data/examples/api-samples/README.md +23 -23
- data/examples/api-samples/public/css/style.css +229 -229
- data/examples/api-samples/public/docs/annotation-sample.html +167 -167
- data/examples/api-samples/public/docs/docco.css +500 -500
- data/examples/api-samples/public/docs/envelope-sample.html +374 -374
- data/examples/api-samples/public/docs/sample01.html +181 -181
- data/examples/api-samples/public/docs/sample02.html +199 -199
- data/examples/api-samples/public/docs/sample03.html +318 -318
- data/examples/api-samples/public/docs/sample04.html +217 -217
- data/examples/api-samples/public/docs/sample05.html +296 -296
- data/examples/api-samples/public/docs/sample06.html +347 -347
- data/examples/api-samples/public/docs/sample07.html +209 -209
- data/examples/api-samples/public/docs/sample08.html +277 -277
- data/examples/api-samples/public/docs/sample09.html +314 -314
- data/examples/api-samples/public/docs/sample10.html +270 -270
- data/examples/api-samples/public/docs/sample11.html +462 -462
- data/examples/api-samples/public/docs/sample12.html +199 -199
- data/examples/api-samples/public/docs/sample13.html +201 -201
- data/examples/api-samples/public/docs/sample14.html +204 -204
- data/examples/api-samples/public/docs/sample15.html +182 -182
- data/examples/api-samples/public/docs/sample16.html +234 -234
- data/examples/api-samples/public/docs/sample17.html +309 -309
- data/examples/api-samples/public/docs/sample18.html +721 -721
- data/examples/api-samples/public/docs/sample19.html +631 -631
- data/examples/api-samples/public/docs/sample20.html +230 -230
- data/examples/api-samples/public/docs/sample21.html +790 -790
- data/examples/api-samples/public/docs/sample22.html +408 -408
- data/examples/api-samples/public/docs/sample25.html +550 -550
- data/examples/api-samples/public/templates/base-simple_source.html +191 -191
- data/examples/api-samples/public/templates/testdocument.html +100 -100
- data/examples/api-samples/public/templates/welcome.htm +137 -137
- data/examples/api-samples/samples/annotation-sample.rb +56 -56
- data/examples/api-samples/samples/envelope-sample.rb +133 -133
- data/examples/api-samples/samples/sample01.rb +44 -44
- data/examples/api-samples/samples/sample02.rb +50 -50
- data/examples/api-samples/samples/sample03.rb +79 -79
- data/examples/api-samples/samples/sample04.rb +54 -54
- data/examples/api-samples/samples/sample05.rb +83 -83
- data/examples/api-samples/samples/sample06.rb +86 -86
- data/examples/api-samples/samples/sample07.rb +59 -59
- data/examples/api-samples/samples/sample08.rb +76 -76
- data/examples/api-samples/samples/sample09.rb +85 -85
- data/examples/api-samples/samples/sample10.rb +70 -70
- data/examples/api-samples/samples/sample11.rb +132 -132
- data/examples/api-samples/samples/sample12.rb +48 -48
- data/examples/api-samples/samples/sample13.rb +49 -49
- data/examples/api-samples/samples/sample14.rb +54 -54
- data/examples/api-samples/samples/sample15.rb +43 -43
- data/examples/api-samples/samples/sample16.rb +57 -57
- data/examples/api-samples/samples/sample17.rb +70 -70
- data/examples/api-samples/samples/sample18.rb +190 -190
- data/examples/api-samples/samples/sample19.rb +188 -188
- data/examples/api-samples/samples/sample20.rb +68 -68
- data/examples/api-samples/samples/sample21.rb +212 -212
- data/examples/api-samples/samples/sample22.rb +109 -109
- data/examples/api-samples/samples/sample25.rb +127 -127
- data/examples/api-samples/views/_others_samples.haml +233 -233
- data/examples/api-samples/views/annotation_sample.haml +63 -63
- data/examples/api-samples/views/envelope_sample.haml +72 -72
- data/examples/api-samples/views/index.haml +235 -235
- data/examples/api-samples/views/layout.haml +3 -3
- data/examples/api-samples/views/sample01.haml +63 -63
- data/examples/api-samples/views/sample02.haml +52 -52
- data/examples/api-samples/views/sample03.haml +87 -87
- data/examples/api-samples/views/sample04.haml +55 -55
- data/examples/api-samples/views/sample05.haml +86 -86
- data/examples/api-samples/views/sample06.haml +58 -58
- data/examples/api-samples/views/sample07.haml +52 -52
- data/examples/api-samples/views/sample08.haml +100 -100
- data/examples/api-samples/views/sample09.haml +95 -95
- data/examples/api-samples/views/sample10.haml +93 -93
- data/examples/api-samples/views/sample11.haml +140 -140
- data/examples/api-samples/views/sample12.haml +68 -68
- data/examples/api-samples/views/sample13.haml +64 -64
- data/examples/api-samples/views/sample14.haml +60 -60
- data/examples/api-samples/views/sample15.haml +51 -51
- data/examples/api-samples/views/sample16.haml +50 -50
- data/examples/api-samples/views/sample17.haml +54 -54
- data/examples/api-samples/views/sample18.haml +143 -143
- data/examples/api-samples/views/sample19.haml +92 -92
- data/examples/api-samples/views/sample20.haml +54 -54
- data/examples/api-samples/views/sample21.haml +123 -123
- data/examples/api-samples/views/sample22.haml +106 -106
- data/examples/api-samples/views/sample25.haml +101 -101
- data/examples/api-samples/views/sample31.haml +2 -2
- data/examples/api-samples/web.rb +20 -20
- data/examples/viewer/Gemfile +5 -5
- data/examples/viewer/app.rb +52 -52
- data/groupdocs.gemspec +31 -31
- data/lib/groupdocs.rb +62 -62
- data/lib/groupdocs/api.rb +6 -6
- data/lib/groupdocs/api/entity.rb +112 -112
- data/lib/groupdocs/api/helpers.rb +11 -11
- data/lib/groupdocs/api/helpers/access_mode_helper.rb +27 -27
- data/lib/groupdocs/api/helpers/access_rights_helper.rb +55 -55
- data/lib/groupdocs/api/helpers/accessor_helper.rb +30 -30
- data/lib/groupdocs/api/helpers/byte_flag_helper.rb +49 -49
- data/lib/groupdocs/api/helpers/credentials_helper.rb +35 -35
- data/lib/groupdocs/api/helpers/mime_helper.rb +21 -21
- data/lib/groupdocs/api/helpers/path_helper.rb +28 -28
- data/lib/groupdocs/api/helpers/rest_helper.rb +99 -99
- data/lib/groupdocs/api/helpers/signature_public_helper.rb +22 -22
- data/lib/groupdocs/api/helpers/status_helper.rb +27 -27
- data/lib/groupdocs/api/helpers/url_helper.rb +101 -101
- data/lib/groupdocs/api/request.rb +91 -91
- data/lib/groupdocs/datasource.rb +249 -249
- data/lib/groupdocs/datasource/field.rb +39 -39
- data/lib/groupdocs/document.rb +1550 -1550
- data/lib/groupdocs/document/annotation.rb +421 -421
- data/lib/groupdocs/document/annotation/reply.rb +173 -173
- data/lib/groupdocs/document/annotation/reviewer.rb +66 -66
- data/lib/groupdocs/document/change.rb +56 -56
- data/lib/groupdocs/document/field.rb +53 -53
- data/lib/groupdocs/document/metadata.rb +32 -32
- data/lib/groupdocs/document/rectangle.rb +18 -18
- data/lib/groupdocs/document/view.rb +36 -36
- data/lib/groupdocs/errors.rb +8 -8
- data/lib/groupdocs/job.rb +468 -468
- data/lib/groupdocs/questionnaire.rb +530 -530
- data/lib/groupdocs/questionnaire/collector.rb +335 -335
- data/lib/groupdocs/questionnaire/execution.rb +181 -181
- data/lib/groupdocs/questionnaire/page.rb +43 -43
- data/lib/groupdocs/questionnaire/question.rb +108 -108
- data/lib/groupdocs/questionnaire/question/answer.rb +15 -15
- data/lib/groupdocs/signature.rb +380 -380
- data/lib/groupdocs/signature/contact.rb +181 -181
- data/lib/groupdocs/signature/envelope.rb +747 -747
- data/lib/groupdocs/signature/envelope/log.rb +20 -20
- data/lib/groupdocs/signature/field.rb +286 -286
- data/lib/groupdocs/signature/field/location.rb +71 -71
- data/lib/groupdocs/signature/form.rb +804 -804
- data/lib/groupdocs/signature/list.rb +92 -92
- data/lib/groupdocs/signature/recipient.rb +79 -79
- data/lib/groupdocs/signature/role.rb +54 -54
- data/lib/groupdocs/signature/shared.rb +6 -6
- data/lib/groupdocs/signature/shared/document_methods.rb +158 -158
- data/lib/groupdocs/signature/shared/entity_fields.rb +76 -76
- data/lib/groupdocs/signature/shared/entity_methods.rb +144 -144
- data/lib/groupdocs/signature/shared/field_methods.rb +354 -354
- data/lib/groupdocs/signature/shared/recipient_methods.rb +75 -75
- data/lib/groupdocs/signature/shared/resource_methods.rb +65 -65
- data/lib/groupdocs/signature/template.rb +124 -124
- data/lib/groupdocs/storage.rb +44 -44
- data/lib/groupdocs/storage/file.rb +432 -432
- data/lib/groupdocs/storage/folder.rb +288 -288
- data/lib/groupdocs/storage/package.rb +48 -48
- data/lib/groupdocs/storage/provider.rb +32 -32
- data/lib/groupdocs/subscription.rb +323 -323
- data/lib/groupdocs/subscription/limit.rb +20 -20
- data/lib/groupdocs/user.rb +955 -930
- data/lib/groupdocs/version.rb +3 -3
- data/spec/groupdocs/api/entity_spec.rb +55 -55
- data/spec/groupdocs/api/helpers/access_mode_helper_spec.rb +21 -21
- data/spec/groupdocs/api/helpers/access_rights_helper_spec.rb +43 -43
- data/spec/groupdocs/api/helpers/accessor_helper_spec.rb +16 -16
- data/spec/groupdocs/api/helpers/byte_flag_helper_spec.rb +23 -23
- data/spec/groupdocs/api/helpers/credentials_helpers_spec.rb +48 -48
- data/spec/groupdocs/api/helpers/mime_helper_spec.rb +16 -16
- data/spec/groupdocs/api/helpers/path_helper_spec.rb +15 -15
- data/spec/groupdocs/api/helpers/rest_helper_spec.rb +161 -161
- data/spec/groupdocs/api/helpers/signature_public_helper_spec.rb +21 -21
- data/spec/groupdocs/api/helpers/status_helper_spec.rb +22 -22
- data/spec/groupdocs/api/helpers/url_helper_spec.rb +112 -112
- data/spec/groupdocs/api/request_spec.rb +112 -112
- data/spec/groupdocs/datasource/field_spec.rb +29 -29
- data/spec/groupdocs/datasource_spec.rb +145 -145
- data/spec/groupdocs/document/annotation/reply_spec.rb +154 -154
- data/spec/groupdocs/document/annotation/reviewer_spec.rb +51 -51
- data/spec/groupdocs/document/annotation_spec.rb +234 -234
- data/spec/groupdocs/document/change_spec.rb +39 -39
- data/spec/groupdocs/document/field_spec.rb +28 -28
- data/spec/groupdocs/document/metadata_spec.rb +21 -21
- data/spec/groupdocs/document/rectangle_spec.rb +14 -14
- data/spec/groupdocs/document/view_spec.rb +33 -33
- data/spec/groupdocs/document_spec.rb +859 -859
- data/spec/groupdocs/errors_spec.rb +7 -7
- data/spec/groupdocs/job_spec.rb +323 -323
- data/spec/groupdocs/questionnaire/collector_spec.rb +197 -197
- data/spec/groupdocs/questionnaire/execution_spec.rb +162 -162
- data/spec/groupdocs/questionnaire/page_spec.rb +47 -47
- data/spec/groupdocs/questionnaire/question/answer_spec.rb +9 -9
- data/spec/groupdocs/questionnaire/question_spec.rb +75 -75
- data/spec/groupdocs/questionnaire_spec.rb +295 -295
- data/spec/groupdocs/signature/contact_spec.rb +142 -142
- data/spec/groupdocs/signature/envelope/log_spec.rb +15 -15
- data/spec/groupdocs/signature/envelope_spec.rb +384 -384
- data/spec/groupdocs/signature/field/location_spec.rb +40 -40
- data/spec/groupdocs/signature/field_spec.rb +235 -235
- data/spec/groupdocs/signature/form_spec.rb +205 -205
- data/spec/groupdocs/signature/list_spec.rb +87 -87
- data/spec/groupdocs/signature/recipient_spec.rb +26 -26
- data/spec/groupdocs/signature/role_spec.rb +47 -47
- data/spec/groupdocs/signature/template_spec.rb +80 -80
- data/spec/groupdocs/signature_spec.rb +194 -194
- data/spec/groupdocs/storage/file_spec.rb +303 -303
- data/spec/groupdocs/storage/folder_spec.rb +270 -270
- data/spec/groupdocs/storage/package_spec.rb +38 -38
- data/spec/groupdocs/storage/provider_spec.rb +21 -21
- data/spec/groupdocs/storage_spec.rb +27 -27
- data/spec/groupdocs/subscription/limit_spec.rb +16 -16
- data/spec/groupdocs/subscription_spec.rb +74 -74
- data/spec/groupdocs/user_spec.rb +257 -257
- data/spec/groupdocs_spec.rb +63 -63
- data/spec/spec_helper.rb +73 -73
- data/spec/support/json/annotation_access_set.json +11 -11
- data/spec/support/json/annotation_collaborators_get.json +16 -16
- data/spec/support/json/annotation_collaborators_set.json +16 -16
- data/spec/support/json/annotation_create.json +12 -12
- data/spec/support/json/annotation_list.json +32 -32
- data/spec/support/json/annotation_marker_move.json +10 -10
- data/spec/support/json/annotation_move.json +8 -8
- data/spec/support/json/annotation_remove.json +9 -9
- data/spec/support/json/annotation_replies_create.json +9 -9
- data/spec/support/json/annotation_replies_get.json +25 -25
- data/spec/support/json/annotation_reviewers_get.json +18 -18
- data/spec/support/json/comparison_changes.json +46 -46
- data/spec/support/json/comparison_compare.json +8 -8
- data/spec/support/json/comparison_document.json +10 -10
- data/spec/support/json/contact_add.json +12 -12
- data/spec/support/json/contacts_get.json +19 -19
- data/spec/support/json/contacts_import.json +8 -8
- data/spec/support/json/datasource_add.json +8 -8
- data/spec/support/json/datasource_get.json +22 -22
- data/spec/support/json/datasource_remove.json +8 -8
- data/spec/support/json/datasource_update.json +8 -8
- data/spec/support/json/delete_account.json +9 -9
- data/spec/support/json/document_access_info_get.json +14 -14
- data/spec/support/json/document_convert.json +8 -8
- data/spec/support/json/document_datasource.json +10 -10
- data/spec/support/json/document_fields.json +34 -34
- data/spec/support/json/document_formats.json +8 -8
- data/spec/support/json/document_metadata.json +15 -15
- data/spec/support/json/document_page_images_get.json +20 -20
- data/spec/support/json/document_questionnaire_create.json +9 -9
- data/spec/support/json/document_questionnaires.json +23 -23
- data/spec/support/json/document_sharers_remove.json +8 -8
- data/spec/support/json/document_sharers_set.json +16 -16
- data/spec/support/json/document_thumbnails.json +24 -24
- data/spec/support/json/document_views.json +32 -32
- data/spec/support/json/envelope_get.json +46 -46
- data/spec/support/json/envelope_logs.json +16 -16
- data/spec/support/json/envelope_recipient_add.json +26 -26
- data/spec/support/json/envelopes_all.json +48 -48
- data/spec/support/json/envelopes_resources.json +31 -31
- data/spec/support/json/file_compress.json +8 -8
- data/spec/support/json/file_copy.json +14 -14
- data/spec/support/json/file_delete.json +5 -5
- data/spec/support/json/file_move.json +14 -14
- data/spec/support/json/file_upload.json +8 -8
- data/spec/support/json/folder_create.json +8 -8
- data/spec/support/json/folder_delete.json +5 -5
- data/spec/support/json/folder_list.json +22 -22
- data/spec/support/json/folder_move.json +8 -8
- data/spec/support/json/folder_sharers_get.json +16 -16
- data/spec/support/json/folder_sharers_remove.json +8 -8
- data/spec/support/json/folder_sharers_set.json +16 -16
- data/spec/support/json/form_get.json +21 -21
- data/spec/support/json/forms_all.json +23 -23
- data/spec/support/json/job_add_url.json +8 -8
- data/spec/support/json/job_create.json +8 -8
- data/spec/support/json/job_documents.json +40 -40
- data/spec/support/json/job_file_add.json +8 -8
- data/spec/support/json/job_get.json +30 -30
- data/spec/support/json/job_update.json +7 -7
- data/spec/support/json/jobs_get.json +58 -58
- data/spec/support/json/list_add.json +12 -12
- data/spec/support/json/lists_get.json +19 -19
- data/spec/support/json/package_create.json +7 -7
- data/spec/support/json/questionnaire_collector.json +17 -17
- data/spec/support/json/questionnaire_collectors.json +38 -38
- data/spec/support/json/questionnaire_collectors_add.json +10 -10
- data/spec/support/json/questionnaire_create.json +10 -10
- data/spec/support/json/questionnaire_datasources.json +26 -26
- data/spec/support/json/questionnaire_execution_add.json +9 -9
- data/spec/support/json/questionnaire_execution_status_set.json +8 -8
- data/spec/support/json/questionnaire_execution_update.json +8 -8
- data/spec/support/json/questionnaire_executions.json +28 -28
- data/spec/support/json/questionnaire_get.json +17 -17
- data/spec/support/json/questionnaire_remove.json +8 -8
- data/spec/support/json/questionnaire_update.json +8 -8
- data/spec/support/json/questionnaires_get.json +40 -40
- data/spec/support/json/sign_documents.json +16 -16
- data/spec/support/json/signature_create.json +12 -12
- data/spec/support/json/signature_field_add.json +25 -25
- data/spec/support/json/signature_fields_get.json +27 -27
- data/spec/support/json/signature_roles_get.json +17 -17
- data/spec/support/json/signatures_get.json +19 -19
- data/spec/support/json/storage_info.json +10 -10
- data/spec/support/json/subscription_plan_get.json +9 -9
- data/spec/support/json/subscription_plans_get.json +17 -17
- data/spec/support/json/template_get.json +35 -35
- data/spec/support/json/template_get_documents.json +15 -15
- data/spec/support/json/template_get_recipients.json +20 -20
- data/spec/support/json/templates_all.json +37 -37
- data/spec/support/json/templates_get.json +21 -21
- data/spec/support/json/update_account.json +10 -10
- data/spec/support/json/user_area.json +67 -67
- data/spec/support/json/user_embed_key.json +38 -38
- data/spec/support/json/user_get_embed_key.json +67 -67
- data/spec/support/json/user_login.json +67 -67
- data/spec/support/json/user_profile_get.json +24 -24
- data/spec/support/json/user_providers.json +31 -31
- data/spec/support/json/user_roles.json +25 -25
- data/spec/support/json/user_users_get.json +27 -27
- data/spec/support/shared_examples/api/entity.rb +39 -39
- data/spec/support/shared_examples/api/helpers/access_mode_helper.rb +11 -11
- data/spec/support/shared_examples/api/helpers/status_helper.rb +11 -11
- data/spec/support/shared_examples/signature/shared/document_methods.rb +68 -68
- data/spec/support/shared_examples/signature/shared/entity_fields.rb +56 -56
- data/spec/support/shared_examples/signature/shared/entity_methods.rb +116 -116
- data/spec/support/shared_examples/signature/shared/field_methods.rb +220 -220
- data/spec/support/shared_examples/signature/shared/recipient_methods.rb +46 -46
- data/spec/support/shared_examples/signature/shared/resource_methods.rb +46 -46
- metadata +35 -55
@@ -1,137 +1,137 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<html lang="en">
|
3
|
-
<head>
|
4
|
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
5
|
-
<title>Powered by {{ @VERSION }}</title>
|
6
|
-
<style type="text/css">
|
7
|
-
{{ Web::minify('templates/',array('style.css'),FALSE) }}
|
8
|
-
</style>
|
9
|
-
</head>
|
10
|
-
<body>
|
11
|
-
<div class="header">
|
12
|
-
<h4>On this site will rise another Web masterpiece powered by</h4>
|
13
|
-
<h1>{{ @VERSION }}</h1>
|
14
|
-
</div>
|
15
|
-
<div class="content">
|
16
|
-
<h3>Dynamic PHP Applications The Fast and Easy Way</h3>
|
17
|
-
<p>The first thing you might want to do is visualize your directory structures. Fat-Free gives you total control over your Web site. Organize your folders in any way that pleases you. Decide where you want to store the following:</p>
|
18
|
-
<ul>
|
19
|
-
<li>HTML templates</li>
|
20
|
-
<li>Graphics, Flash and media files</li>
|
21
|
-
<li>Javascript and CSS files</li>
|
22
|
-
<li>Fat-Free import files, code libraries, and PHP includes</li>
|
23
|
-
<li>OOP classes</li>
|
24
|
-
<li>Database (if you plan to use an embedded DB like SQLite)</li>
|
25
|
-
<li>Configuration files</li>
|
26
|
-
<li>Uploads/Downloads</li>
|
27
|
-
<li>Fonts (optional)</li>
|
28
|
-
</ul>
|
29
|
-
<p>For security reasons, consider relocating the <code>lib/</code> folder to a path that's not Web-accessible. If you decide to move this folder, just change the line in <code>index.php</code> containing <code>require 'lib/base.php';</code> The <code>lib/</code> folder also contains framework plug-ins that extend F3's capabilities. You can change the default location of all plug-ins by moving the files to your desired subdirectory. Then, it's just a matter of pointing the <code>PLUGINS</code> global variable to the new location. You may delete the plug-ins that you don't need. You can always restore them later.</p>
|
30
|
-
<p>The <code>IMPORTS</code> global variable should point to the location of Fat-Free import files, code libraries, and PHP includes. On the other hand, F3 can autoload your OOP classes for you. Just add the path to the <code>AUTOLOAD</code> variable. The rest of the above-listed items do not require configuration of a framework global variable, so you may store them anywhere.</p>
|
31
|
-
<blockquote>
|
32
|
-
<h4>Important</h4>
|
33
|
-
<p>The distribution package contains a file named <code>htaccess</code>. It's saved that way in the archive because some ZIP extraction tools may not be configured to display hidden files like <code>.htaccess</code>. You should rename the file if you're using Apache.</p>
|
34
|
-
</blockquote>
|
35
|
-
<p>When you're ready to write your F3-enabled site, you can start editing the rest of the code contained in the <code>index.php</code> file that displayed this Web page. Developing PHP applications will never be the same!</p>
|
36
|
-
<h3>PHP Dependencies</h3>
|
37
|
-
<p>Some framework features will not be available if PHP is not configured with the modules needed by your application.</p>
|
38
|
-
<table>
|
39
|
-
<tr>
|
40
|
-
<th>PHP Module</th>
|
41
|
-
<th>Installed</th>
|
42
|
-
<th>Required by</th>
|
43
|
-
</tr>
|
44
|
-
<repeat group="{{@modules}}" key="{{ @mod }}" value="{{ @dep }}" counter="{{ @counter }}">
|
45
|
-
<tr class="{{ @counter%2?'odd':'even' }}">
|
46
|
-
<td>{{ @mod }}</td>
|
47
|
-
<td class="{{ extension_loaded(@mod)?'pass':'fail' }}">{{ extension_loaded(@mod)?'Yes':'No' }}</td>
|
48
|
-
<td>{{ @dep }}</td>
|
49
|
-
</tr>
|
50
|
-
</repeat>
|
51
|
-
</table>
|
52
|
-
<h3>Need Help?</h3>
|
53
|
-
<p>Technical support is available at: <code><a href="https://groups.google.com/forum/?fromgroups#!forum/f3-framework">https://groups.google.com/forum/?fromgroups#!forum/f3-framework</a></code>. If you need live support, you can talk to the development team and the rest of the Fat-Free community via IRC. We're on the FreeNode <code>#fatfree</code> channel (<code>chat.freenode.net</code>).</p>
|
54
|
-
<p>The help file included in the distribution (<code>lib/f3.chm</code>) is at your disposal if you need to take a close look at the Fat-Free API. However, the online documentation at <code><a href="http://fatfree.sourceforge.net" onclick="window.open(this.href); return false;">http://fatfree.sourceforge.net</a></code> provides the latest and most comprehensive information about the framework.</p>
|
55
|
-
<h3>Fair Licensing</h3>
|
56
|
-
<p>If you intend to use this software for business or commercial gain: permissive and "closed-source" licensing terms are available. For academic and personal use, the PHP Fat-Free Framework and other files included in the distribution are subject to the terms of the GPL v3. You may not use the software, documentation, and samples except in compliance with the license.</p>
|
57
|
-
<h3>Support F3</h3>
|
58
|
-
<p>F3 is community-driven open-source software. Support the development of the Fat-Free Framework. Your contributions help keep this project alive.</p>
|
59
|
-
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
|
60
|
-
<input type="hidden" name="cmd" value="_s-xclick">
|
61
|
-
<input type="hidden" name="hosted_button_id" value="WPFRKQY9HDMML">
|
62
|
-
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
|
63
|
-
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
|
64
|
-
</form>
|
65
|
-
<p/>
|
66
|
-
<p>The framework won't be what it is today without the help and support from the following people and organizations:</p>
|
67
|
-
<ul style="column-count:3; column-gap:15px; -moz-column-count:3; -moz-column-gap:15px; -webkit-column-count:3; -webkit-column-gap:15px;">
|
68
|
-
<li>GitHub</li>
|
69
|
-
<li>Sascha Ohms</li>
|
70
|
-
<li>Jermaine Maree</li>
|
71
|
-
<li>Sergey Zaretsky</li>
|
72
|
-
<li>Daniel Kloke</li>
|
73
|
-
<li>Brian Nelson</li>
|
74
|
-
<li>Roberts Lapins</li>
|
75
|
-
<li>Boris Gurevich</li>
|
76
|
-
<li>Eyðun Lamhauge</li>
|
77
|
-
<li>Jose Maria Garrido Diaz</li>
|
78
|
-
<li>Dawn Comfort</li>
|
79
|
-
<li>Johan Viberg</li>
|
80
|
-
<li>Povilas Musteikis</li>
|
81
|
-
<li>Andrew Snook</li>
|
82
|
-
<li>Jafar Amjad</li>
|
83
|
-
<li>Taylor McCall</li>
|
84
|
-
<li>Raymond Kirkland</li>
|
85
|
-
<li>Yuriy Gerassimenko</li>
|
86
|
-
<li>William Stam</li>
|
87
|
-
<li>Sam George</li>
|
88
|
-
<li>Steve Wasiura</li>
|
89
|
-
<li>Andreas Ljunggren</li>
|
90
|
-
<li>Sashank Tadepalli</li>
|
91
|
-
<li>Chad Bishop</li>
|
92
|
-
<li>Bradley Slavik</li>
|
93
|
-
<li>Lee Blue</li>
|
94
|
-
<li>Alexander Shatilo</li>
|
95
|
-
<li>Justin Noel</li>
|
96
|
-
<li>Ivan Kovac</li>
|
97
|
-
<li>Tony's Internet Solutions</li>
|
98
|
-
<li>Charles Stigler</li>
|
99
|
-
<li>Attila van der Velde</li>
|
100
|
-
<li>Indoblo Commerce Limited</li>
|
101
|
-
<li>Jens Níemeyer</li>
|
102
|
-
<li>Raghu Veer Dendukuri</li>
|
103
|
-
<li>NovelLead B.V.</li>
|
104
|
-
<li>Emir Alp</li>
|
105
|
-
<li>Dominic Schwarz</li>
|
106
|
-
<li>Sven Zahrend</li>
|
107
|
-
<li>LucidStorm</li>
|
108
|
-
<li>Nevatech</li>
|
109
|
-
<li>Matt Wielgos</li>
|
110
|
-
<li>Christian Knuth</li>
|
111
|
-
<li>Maximilian Summe</li>
|
112
|
-
<li>Caspar Frey</li>
|
113
|
-
<li>G Holdings, LLC</li>
|
114
|
-
<li>FocusHeart</li>
|
115
|
-
<li>Philip Lawrence</li>
|
116
|
-
<li>Peter Beverwyk</li>
|
117
|
-
<li>Randal Hintz</li>
|
118
|
-
<li>Franz Josef</li>
|
119
|
-
<li>Biswajit Nayak</li>
|
120
|
-
<li>R Mohan</li>
|
121
|
-
<li>Michael Messner</li>
|
122
|
-
<li>Florent Racineux</li>
|
123
|
-
<li>Jason Borseth</li>
|
124
|
-
<li>Dmitrij Chernov</li>
|
125
|
-
<li>Marek Toman</li>
|
126
|
-
<li>Simone Cociancich</li>
|
127
|
-
<li>Tecnilógica</li>
|
128
|
-
<li>Alan Holding</li>
|
129
|
-
<li>Mirosystems</li>
|
130
|
-
</ul>
|
131
|
-
<p>Special thanks to the selfless others who expressed their desire to remain anonymous, yet share their time, contribute code, send donations, promote the framework to a wider audience, as well as provide encouragement and regular financial assistance. Their generosity is F3's prime motivation.</p>
|
132
|
-
</div>
|
133
|
-
<div class="footer">
|
134
|
-
<h5>Fat-Free Framework is licensed under the terms of the GPL v3. Copyright © 2009-2011 F3::Factory</h5>
|
135
|
-
</div>
|
136
|
-
</body>
|
137
|
-
</html>
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
5
|
+
<title>Powered by {{ @VERSION }}</title>
|
6
|
+
<style type="text/css">
|
7
|
+
{{ Web::minify('templates/',array('style.css'),FALSE) }}
|
8
|
+
</style>
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
<div class="header">
|
12
|
+
<h4>On this site will rise another Web masterpiece powered by</h4>
|
13
|
+
<h1>{{ @VERSION }}</h1>
|
14
|
+
</div>
|
15
|
+
<div class="content">
|
16
|
+
<h3>Dynamic PHP Applications The Fast and Easy Way</h3>
|
17
|
+
<p>The first thing you might want to do is visualize your directory structures. Fat-Free gives you total control over your Web site. Organize your folders in any way that pleases you. Decide where you want to store the following:</p>
|
18
|
+
<ul>
|
19
|
+
<li>HTML templates</li>
|
20
|
+
<li>Graphics, Flash and media files</li>
|
21
|
+
<li>Javascript and CSS files</li>
|
22
|
+
<li>Fat-Free import files, code libraries, and PHP includes</li>
|
23
|
+
<li>OOP classes</li>
|
24
|
+
<li>Database (if you plan to use an embedded DB like SQLite)</li>
|
25
|
+
<li>Configuration files</li>
|
26
|
+
<li>Uploads/Downloads</li>
|
27
|
+
<li>Fonts (optional)</li>
|
28
|
+
</ul>
|
29
|
+
<p>For security reasons, consider relocating the <code>lib/</code> folder to a path that's not Web-accessible. If you decide to move this folder, just change the line in <code>index.php</code> containing <code>require 'lib/base.php';</code> The <code>lib/</code> folder also contains framework plug-ins that extend F3's capabilities. You can change the default location of all plug-ins by moving the files to your desired subdirectory. Then, it's just a matter of pointing the <code>PLUGINS</code> global variable to the new location. You may delete the plug-ins that you don't need. You can always restore them later.</p>
|
30
|
+
<p>The <code>IMPORTS</code> global variable should point to the location of Fat-Free import files, code libraries, and PHP includes. On the other hand, F3 can autoload your OOP classes for you. Just add the path to the <code>AUTOLOAD</code> variable. The rest of the above-listed items do not require configuration of a framework global variable, so you may store them anywhere.</p>
|
31
|
+
<blockquote>
|
32
|
+
<h4>Important</h4>
|
33
|
+
<p>The distribution package contains a file named <code>htaccess</code>. It's saved that way in the archive because some ZIP extraction tools may not be configured to display hidden files like <code>.htaccess</code>. You should rename the file if you're using Apache.</p>
|
34
|
+
</blockquote>
|
35
|
+
<p>When you're ready to write your F3-enabled site, you can start editing the rest of the code contained in the <code>index.php</code> file that displayed this Web page. Developing PHP applications will never be the same!</p>
|
36
|
+
<h3>PHP Dependencies</h3>
|
37
|
+
<p>Some framework features will not be available if PHP is not configured with the modules needed by your application.</p>
|
38
|
+
<table>
|
39
|
+
<tr>
|
40
|
+
<th>PHP Module</th>
|
41
|
+
<th>Installed</th>
|
42
|
+
<th>Required by</th>
|
43
|
+
</tr>
|
44
|
+
<repeat group="{{@modules}}" key="{{ @mod }}" value="{{ @dep }}" counter="{{ @counter }}">
|
45
|
+
<tr class="{{ @counter%2?'odd':'even' }}">
|
46
|
+
<td>{{ @mod }}</td>
|
47
|
+
<td class="{{ extension_loaded(@mod)?'pass':'fail' }}">{{ extension_loaded(@mod)?'Yes':'No' }}</td>
|
48
|
+
<td>{{ @dep }}</td>
|
49
|
+
</tr>
|
50
|
+
</repeat>
|
51
|
+
</table>
|
52
|
+
<h3>Need Help?</h3>
|
53
|
+
<p>Technical support is available at: <code><a href="https://groups.google.com/forum/?fromgroups#!forum/f3-framework">https://groups.google.com/forum/?fromgroups#!forum/f3-framework</a></code>. If you need live support, you can talk to the development team and the rest of the Fat-Free community via IRC. We're on the FreeNode <code>#fatfree</code> channel (<code>chat.freenode.net</code>).</p>
|
54
|
+
<p>The help file included in the distribution (<code>lib/f3.chm</code>) is at your disposal if you need to take a close look at the Fat-Free API. However, the online documentation at <code><a href="http://fatfree.sourceforge.net" onclick="window.open(this.href); return false;">http://fatfree.sourceforge.net</a></code> provides the latest and most comprehensive information about the framework.</p>
|
55
|
+
<h3>Fair Licensing</h3>
|
56
|
+
<p>If you intend to use this software for business or commercial gain: permissive and "closed-source" licensing terms are available. For academic and personal use, the PHP Fat-Free Framework and other files included in the distribution are subject to the terms of the GPL v3. You may not use the software, documentation, and samples except in compliance with the license.</p>
|
57
|
+
<h3>Support F3</h3>
|
58
|
+
<p>F3 is community-driven open-source software. Support the development of the Fat-Free Framework. Your contributions help keep this project alive.</p>
|
59
|
+
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
|
60
|
+
<input type="hidden" name="cmd" value="_s-xclick">
|
61
|
+
<input type="hidden" name="hosted_button_id" value="WPFRKQY9HDMML">
|
62
|
+
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
|
63
|
+
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
|
64
|
+
</form>
|
65
|
+
<p/>
|
66
|
+
<p>The framework won't be what it is today without the help and support from the following people and organizations:</p>
|
67
|
+
<ul style="column-count:3; column-gap:15px; -moz-column-count:3; -moz-column-gap:15px; -webkit-column-count:3; -webkit-column-gap:15px;">
|
68
|
+
<li>GitHub</li>
|
69
|
+
<li>Sascha Ohms</li>
|
70
|
+
<li>Jermaine Maree</li>
|
71
|
+
<li>Sergey Zaretsky</li>
|
72
|
+
<li>Daniel Kloke</li>
|
73
|
+
<li>Brian Nelson</li>
|
74
|
+
<li>Roberts Lapins</li>
|
75
|
+
<li>Boris Gurevich</li>
|
76
|
+
<li>Eyðun Lamhauge</li>
|
77
|
+
<li>Jose Maria Garrido Diaz</li>
|
78
|
+
<li>Dawn Comfort</li>
|
79
|
+
<li>Johan Viberg</li>
|
80
|
+
<li>Povilas Musteikis</li>
|
81
|
+
<li>Andrew Snook</li>
|
82
|
+
<li>Jafar Amjad</li>
|
83
|
+
<li>Taylor McCall</li>
|
84
|
+
<li>Raymond Kirkland</li>
|
85
|
+
<li>Yuriy Gerassimenko</li>
|
86
|
+
<li>William Stam</li>
|
87
|
+
<li>Sam George</li>
|
88
|
+
<li>Steve Wasiura</li>
|
89
|
+
<li>Andreas Ljunggren</li>
|
90
|
+
<li>Sashank Tadepalli</li>
|
91
|
+
<li>Chad Bishop</li>
|
92
|
+
<li>Bradley Slavik</li>
|
93
|
+
<li>Lee Blue</li>
|
94
|
+
<li>Alexander Shatilo</li>
|
95
|
+
<li>Justin Noel</li>
|
96
|
+
<li>Ivan Kovac</li>
|
97
|
+
<li>Tony's Internet Solutions</li>
|
98
|
+
<li>Charles Stigler</li>
|
99
|
+
<li>Attila van der Velde</li>
|
100
|
+
<li>Indoblo Commerce Limited</li>
|
101
|
+
<li>Jens Níemeyer</li>
|
102
|
+
<li>Raghu Veer Dendukuri</li>
|
103
|
+
<li>NovelLead B.V.</li>
|
104
|
+
<li>Emir Alp</li>
|
105
|
+
<li>Dominic Schwarz</li>
|
106
|
+
<li>Sven Zahrend</li>
|
107
|
+
<li>LucidStorm</li>
|
108
|
+
<li>Nevatech</li>
|
109
|
+
<li>Matt Wielgos</li>
|
110
|
+
<li>Christian Knuth</li>
|
111
|
+
<li>Maximilian Summe</li>
|
112
|
+
<li>Caspar Frey</li>
|
113
|
+
<li>G Holdings, LLC</li>
|
114
|
+
<li>FocusHeart</li>
|
115
|
+
<li>Philip Lawrence</li>
|
116
|
+
<li>Peter Beverwyk</li>
|
117
|
+
<li>Randal Hintz</li>
|
118
|
+
<li>Franz Josef</li>
|
119
|
+
<li>Biswajit Nayak</li>
|
120
|
+
<li>R Mohan</li>
|
121
|
+
<li>Michael Messner</li>
|
122
|
+
<li>Florent Racineux</li>
|
123
|
+
<li>Jason Borseth</li>
|
124
|
+
<li>Dmitrij Chernov</li>
|
125
|
+
<li>Marek Toman</li>
|
126
|
+
<li>Simone Cociancich</li>
|
127
|
+
<li>Tecnilógica</li>
|
128
|
+
<li>Alan Holding</li>
|
129
|
+
<li>Mirosystems</li>
|
130
|
+
</ul>
|
131
|
+
<p>Special thanks to the selfless others who expressed their desire to remain anonymous, yet share their time, contribute code, send donations, promote the framework to a wider audience, as well as provide encouragement and regular financial assistance. Their generosity is F3's prime motivation.</p>
|
132
|
+
</div>
|
133
|
+
<div class="footer">
|
134
|
+
<h5>Fat-Free Framework is licensed under the terms of the GPL v3. Copyright © 2009-2011 F3::Factory</h5>
|
135
|
+
</div>
|
136
|
+
</body>
|
137
|
+
</html>
|
@@ -1,56 +1,56 @@
|
|
1
|
-
# GET request
|
2
|
-
get '/annotation-sample' do
|
3
|
-
haml :annotation_sample
|
4
|
-
end
|
5
|
-
|
6
|
-
# POST request
|
7
|
-
post '/annotation-sample' do
|
8
|
-
set :client_id, params[:client_id]
|
9
|
-
set :private_key, params[:private_key]
|
10
|
-
|
11
|
-
set :email, params[:email]
|
12
|
-
set :first_name, params[:first_name]
|
13
|
-
set :last_name, params[:last_name]
|
14
|
-
set :file_name, params[:file_name]
|
15
|
-
|
16
|
-
begin
|
17
|
-
raise 'Please enter all required parameters' if settings.client_id.empty? or settings.private_key.empty? or settings.file_name.empty?
|
18
|
-
|
19
|
-
GroupDocs.configure do |groupdocs|
|
20
|
-
groupdocs.client_id = params[:client_id]
|
21
|
-
groupdocs.private_key = params[:private_key]
|
22
|
-
groupdocs.api_server = 'https://api.groupdocs.com'
|
23
|
-
end
|
24
|
-
# get document metadata
|
25
|
-
metadata = GroupDocs::Document.metadata!(settings.file_name)
|
26
|
-
document = GroupDocs::Storage::File.new(id: metadata.id, guid: metadata.guid).to_document
|
27
|
-
|
28
|
-
# create new user
|
29
|
-
user = GroupDocs::User.new
|
30
|
-
user.nickname = settings.email
|
31
|
-
user.primary_email = settings.email
|
32
|
-
user.first_name = settings.first_name
|
33
|
-
user.last_name = settings.last_name
|
34
|
-
user = GroupDocs::User.update_account!(user)
|
35
|
-
|
36
|
-
# add collaborator
|
37
|
-
document.add_collaborator! user unless document.collaborators!.any? { |c| c.guid == user.guid }
|
38
|
-
|
39
|
-
# build url
|
40
|
-
annotation = true # looks like "IsAnnotation" is some helper method so I stub it here
|
41
|
-
url = if annotation
|
42
|
-
"/document-annotation2/embed?quality=50&guid=#{document.file.guid}&uid=#{user.guid}&download=True"
|
43
|
-
else
|
44
|
-
"/document-viewer/embed?quality=50&guid=#{document.file.guid}&uid=#{user.guid}&download=True"
|
45
|
-
end
|
46
|
-
|
47
|
-
# you can sign document
|
48
|
-
#url = GroupDocs::Api::Request.new(path: url).prepare_and_sign_url
|
49
|
-
|
50
|
-
iframe = "<iframe src='https://apps.groupdocs.com#{url}' frameborder='0' width='720' height='600'></iframe>"
|
51
|
-
rescue Exception => e
|
52
|
-
err = e.message
|
53
|
-
end
|
54
|
-
|
55
|
-
haml :annotation_sample, :locals => {:client_id => settings.client_id, :private_key => settings.private_key, :err => err, :file_name => settings.file_name, :email => settings.email, :first_name => settings.first_name, :last_name => settings.last_name, :iframe => iframe}
|
56
|
-
end
|
1
|
+
# GET request
|
2
|
+
get '/annotation-sample' do
|
3
|
+
haml :annotation_sample
|
4
|
+
end
|
5
|
+
|
6
|
+
# POST request
|
7
|
+
post '/annotation-sample' do
|
8
|
+
set :client_id, params[:client_id]
|
9
|
+
set :private_key, params[:private_key]
|
10
|
+
|
11
|
+
set :email, params[:email]
|
12
|
+
set :first_name, params[:first_name]
|
13
|
+
set :last_name, params[:last_name]
|
14
|
+
set :file_name, params[:file_name]
|
15
|
+
|
16
|
+
begin
|
17
|
+
raise 'Please enter all required parameters' if settings.client_id.empty? or settings.private_key.empty? or settings.file_name.empty?
|
18
|
+
|
19
|
+
GroupDocs.configure do |groupdocs|
|
20
|
+
groupdocs.client_id = params[:client_id]
|
21
|
+
groupdocs.private_key = params[:private_key]
|
22
|
+
groupdocs.api_server = 'https://api.groupdocs.com'
|
23
|
+
end
|
24
|
+
# get document metadata
|
25
|
+
metadata = GroupDocs::Document.metadata!(settings.file_name)
|
26
|
+
document = GroupDocs::Storage::File.new(id: metadata.id, guid: metadata.guid).to_document
|
27
|
+
|
28
|
+
# create new user
|
29
|
+
user = GroupDocs::User.new
|
30
|
+
user.nickname = settings.email
|
31
|
+
user.primary_email = settings.email
|
32
|
+
user.first_name = settings.first_name
|
33
|
+
user.last_name = settings.last_name
|
34
|
+
user = GroupDocs::User.update_account!(user)
|
35
|
+
|
36
|
+
# add collaborator
|
37
|
+
document.add_collaborator! user unless document.collaborators!.any? { |c| c.guid == user.guid }
|
38
|
+
|
39
|
+
# build url
|
40
|
+
annotation = true # looks like "IsAnnotation" is some helper method so I stub it here
|
41
|
+
url = if annotation
|
42
|
+
"/document-annotation2/embed?quality=50&guid=#{document.file.guid}&uid=#{user.guid}&download=True"
|
43
|
+
else
|
44
|
+
"/document-viewer/embed?quality=50&guid=#{document.file.guid}&uid=#{user.guid}&download=True"
|
45
|
+
end
|
46
|
+
|
47
|
+
# you can sign document
|
48
|
+
#url = GroupDocs::Api::Request.new(path: url).prepare_and_sign_url
|
49
|
+
|
50
|
+
iframe = "<iframe src='https://apps.groupdocs.com#{url}' frameborder='0' width='720' height='600'></iframe>"
|
51
|
+
rescue Exception => e
|
52
|
+
err = e.message
|
53
|
+
end
|
54
|
+
|
55
|
+
haml :annotation_sample, :locals => {:client_id => settings.client_id, :private_key => settings.private_key, :err => err, :file_name => settings.file_name, :email => settings.email, :first_name => settings.first_name, :last_name => settings.last_name, :iframe => iframe}
|
56
|
+
end
|
@@ -1,133 +1,133 @@
|
|
1
|
-
# GET request
|
2
|
-
get '/envelope-sample' do
|
3
|
-
haml :envelope_sample
|
4
|
-
end
|
5
|
-
|
6
|
-
# POST request to handle callback when document was signed
|
7
|
-
post '/envelope-sample/sign' do
|
8
|
-
# Content Type of callback is application/json
|
9
|
-
data = JSON.parse(request.body.read)
|
10
|
-
begin
|
11
|
-
raise 'Empty params!' if data.empty?
|
12
|
-
#create empty file and write data as "key: value" to it
|
13
|
-
out_file = File.new('signed', 'w')
|
14
|
-
data.each do |key, value|
|
15
|
-
out_file.write("#{key}: #{value} \n")
|
16
|
-
end
|
17
|
-
out_file.close
|
18
|
-
rescue Exception => e
|
19
|
-
err = e.message
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
# POST request to handle callback and download envelop when document was signed
|
25
|
-
post '/envelope-sample/sign-and-download' do
|
26
|
-
data = JSON.parse(request.body.read)
|
27
|
-
begin
|
28
|
-
raise 'Empty params!' if data.empty?
|
29
|
-
GroupDocs.configure do |groupdocs|
|
30
|
-
groupdocs.client_id = '' # Your client Client ID here
|
31
|
-
groupdocs.private_key = '' # Your API Key here
|
32
|
-
groupdocs.api_server = 'https://api.groupdocs.com'
|
33
|
-
end
|
34
|
-
data.each do |key, value|
|
35
|
-
if key == 'SourceId'
|
36
|
-
# Create envelop with id and name as SourceId parameter from callback
|
37
|
-
envelope = GroupDocs::Signature::Envelope.new id: value,
|
38
|
-
name: value
|
39
|
-
# download signed documents as archive
|
40
|
-
envelope.signed_documents! '.'
|
41
|
-
end
|
42
|
-
end
|
43
|
-
rescue Exception => e
|
44
|
-
err = e.message
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# GET request to check if envelop was signed
|
49
|
-
get '/envelope-sample/check' do
|
50
|
-
if File.exist?('signed')
|
51
|
-
File.readlines('signed').each do |line|
|
52
|
-
end
|
53
|
-
else
|
54
|
-
'Have not signed yet'
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
# POST request
|
59
|
-
post '/envelope-sample' do
|
60
|
-
set :client_id, params[:client_id]
|
61
|
-
set :private_key, params[:private_key]
|
62
|
-
|
63
|
-
begin
|
64
|
-
raise 'Please enter all required parameters' if settings.client_id.empty? or settings.private_key.empty?
|
65
|
-
|
66
|
-
GroupDocs.configure do |groupdocs|
|
67
|
-
groupdocs.client_id = params[:client_id]
|
68
|
-
groupdocs.private_key = params[:private_key]
|
69
|
-
groupdocs.api_server = 'https://stage-api.groupdocs.com'
|
70
|
-
end
|
71
|
-
|
72
|
-
# upload document
|
73
|
-
filepath = "#{Dir.tmpdir}/#{params[:file][:filename]}"
|
74
|
-
File.open(filepath, 'wb') { |f| f.write(params[:file][:tempfile].read) }
|
75
|
-
file = GroupDocs::Storage::File.upload!(filepath, {}, client_id: settings.client_id, private_key: settings.private_key)
|
76
|
-
document = file.to_document
|
77
|
-
|
78
|
-
# create envelope
|
79
|
-
envelope = GroupDocs::Signature::Envelope.new
|
80
|
-
envelope.name = 'Envelope'
|
81
|
-
envelope.email_subject = 'Sing this!'
|
82
|
-
envelope.create!
|
83
|
-
|
84
|
-
# add document to envelope
|
85
|
-
envelope.add_document! document
|
86
|
-
|
87
|
-
# update document object after it's created
|
88
|
-
document = envelope.documents!.first
|
89
|
-
|
90
|
-
# add new recipient to envelope
|
91
|
-
roles = GroupDocs::Signature::Role.get!
|
92
|
-
recipient = GroupDocs::Signature::Recipient.new
|
93
|
-
recipient.email = 'john@smith.com'
|
94
|
-
recipient.first_name = 'John'
|
95
|
-
recipient.last_name = 'Smith'
|
96
|
-
recipient.role_id = roles.detect { |role| role.name == 'Signer' }.id
|
97
|
-
envelope.add_recipient! recipient
|
98
|
-
|
99
|
-
# update recipient object after it's created
|
100
|
-
recipient = envelope.recipients!.first
|
101
|
-
|
102
|
-
#
|
103
|
-
# You can add fields manually.
|
104
|
-
#
|
105
|
-
|
106
|
-
# add city field to envelope
|
107
|
-
#field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :single_line }
|
108
|
-
#field.name = 'City'
|
109
|
-
#field.location = { location_x: 0.3, location_y: 0.2, page: 1 }
|
110
|
-
#envelope.add_field! field, document, recipient
|
111
|
-
|
112
|
-
# add signature field to envelope
|
113
|
-
#field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
|
114
|
-
#field.location = { location_x: 0.3, location_y: 0.3, page: 1 }
|
115
|
-
#envelope.add_field! field, document, recipient
|
116
|
-
|
117
|
-
# URL for callback
|
118
|
-
#webhook = 'http://groupdocs-ruby-samples.herokuapp.com/envelope-sample/sign'
|
119
|
-
webhook = 'http://77.81.243.48/?q=groupdocs_signature/signature_callback'
|
120
|
-
|
121
|
-
# send envelope
|
122
|
-
envelope.send! webhook
|
123
|
-
|
124
|
-
# construct embedded signature url
|
125
|
-
url = "https://stage-apps.groupdocs.com/signature/signembed/#{envelope.id}/#{recipient.id}"
|
126
|
-
iframe = "<iframe src='#{url}' frameborder='0' width='720' height='600'></iframe>"
|
127
|
-
|
128
|
-
rescue Exception => e
|
129
|
-
err = e.message
|
130
|
-
end
|
131
|
-
|
132
|
-
haml :envelope_sample, :locals => {:client_id => settings.client_id, :private_key => settings.private_key, :err => err, :iframe => iframe}
|
133
|
-
end
|
1
|
+
# GET request
|
2
|
+
get '/envelope-sample' do
|
3
|
+
haml :envelope_sample
|
4
|
+
end
|
5
|
+
|
6
|
+
# POST request to handle callback when document was signed
|
7
|
+
post '/envelope-sample/sign' do
|
8
|
+
# Content Type of callback is application/json
|
9
|
+
data = JSON.parse(request.body.read)
|
10
|
+
begin
|
11
|
+
raise 'Empty params!' if data.empty?
|
12
|
+
#create empty file and write data as "key: value" to it
|
13
|
+
out_file = File.new('signed', 'w')
|
14
|
+
data.each do |key, value|
|
15
|
+
out_file.write("#{key}: #{value} \n")
|
16
|
+
end
|
17
|
+
out_file.close
|
18
|
+
rescue Exception => e
|
19
|
+
err = e.message
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
# POST request to handle callback and download envelop when document was signed
|
25
|
+
post '/envelope-sample/sign-and-download' do
|
26
|
+
data = JSON.parse(request.body.read)
|
27
|
+
begin
|
28
|
+
raise 'Empty params!' if data.empty?
|
29
|
+
GroupDocs.configure do |groupdocs|
|
30
|
+
groupdocs.client_id = '' # Your client Client ID here
|
31
|
+
groupdocs.private_key = '' # Your API Key here
|
32
|
+
groupdocs.api_server = 'https://api.groupdocs.com'
|
33
|
+
end
|
34
|
+
data.each do |key, value|
|
35
|
+
if key == 'SourceId'
|
36
|
+
# Create envelop with id and name as SourceId parameter from callback
|
37
|
+
envelope = GroupDocs::Signature::Envelope.new id: value,
|
38
|
+
name: value
|
39
|
+
# download signed documents as archive
|
40
|
+
envelope.signed_documents! '.'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
rescue Exception => e
|
44
|
+
err = e.message
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# GET request to check if envelop was signed
|
49
|
+
get '/envelope-sample/check' do
|
50
|
+
if File.exist?('signed')
|
51
|
+
File.readlines('signed').each do |line|
|
52
|
+
end
|
53
|
+
else
|
54
|
+
'Have not signed yet'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# POST request
|
59
|
+
post '/envelope-sample' do
|
60
|
+
set :client_id, params[:client_id]
|
61
|
+
set :private_key, params[:private_key]
|
62
|
+
|
63
|
+
begin
|
64
|
+
raise 'Please enter all required parameters' if settings.client_id.empty? or settings.private_key.empty?
|
65
|
+
|
66
|
+
GroupDocs.configure do |groupdocs|
|
67
|
+
groupdocs.client_id = params[:client_id]
|
68
|
+
groupdocs.private_key = params[:private_key]
|
69
|
+
groupdocs.api_server = 'https://stage-api.groupdocs.com'
|
70
|
+
end
|
71
|
+
|
72
|
+
# upload document
|
73
|
+
filepath = "#{Dir.tmpdir}/#{params[:file][:filename]}"
|
74
|
+
File.open(filepath, 'wb') { |f| f.write(params[:file][:tempfile].read) }
|
75
|
+
file = GroupDocs::Storage::File.upload!(filepath, {}, client_id: settings.client_id, private_key: settings.private_key)
|
76
|
+
document = file.to_document
|
77
|
+
|
78
|
+
# create envelope
|
79
|
+
envelope = GroupDocs::Signature::Envelope.new
|
80
|
+
envelope.name = 'Envelope'
|
81
|
+
envelope.email_subject = 'Sing this!'
|
82
|
+
envelope.create!
|
83
|
+
|
84
|
+
# add document to envelope
|
85
|
+
envelope.add_document! document
|
86
|
+
|
87
|
+
# update document object after it's created
|
88
|
+
document = envelope.documents!.first
|
89
|
+
|
90
|
+
# add new recipient to envelope
|
91
|
+
roles = GroupDocs::Signature::Role.get!
|
92
|
+
recipient = GroupDocs::Signature::Recipient.new
|
93
|
+
recipient.email = 'john@smith.com'
|
94
|
+
recipient.first_name = 'John'
|
95
|
+
recipient.last_name = 'Smith'
|
96
|
+
recipient.role_id = roles.detect { |role| role.name == 'Signer' }.id
|
97
|
+
envelope.add_recipient! recipient
|
98
|
+
|
99
|
+
# update recipient object after it's created
|
100
|
+
recipient = envelope.recipients!.first
|
101
|
+
|
102
|
+
#
|
103
|
+
# You can add fields manually.
|
104
|
+
#
|
105
|
+
|
106
|
+
# add city field to envelope
|
107
|
+
#field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :single_line }
|
108
|
+
#field.name = 'City'
|
109
|
+
#field.location = { location_x: 0.3, location_y: 0.2, page: 1 }
|
110
|
+
#envelope.add_field! field, document, recipient
|
111
|
+
|
112
|
+
# add signature field to envelope
|
113
|
+
#field = GroupDocs::Signature::Field.get!.detect { |f| f.type == :signature }
|
114
|
+
#field.location = { location_x: 0.3, location_y: 0.3, page: 1 }
|
115
|
+
#envelope.add_field! field, document, recipient
|
116
|
+
|
117
|
+
# URL for callback
|
118
|
+
#webhook = 'http://groupdocs-ruby-samples.herokuapp.com/envelope-sample/sign'
|
119
|
+
webhook = 'http://77.81.243.48/?q=groupdocs_signature/signature_callback'
|
120
|
+
|
121
|
+
# send envelope
|
122
|
+
envelope.send! webhook
|
123
|
+
|
124
|
+
# construct embedded signature url
|
125
|
+
url = "https://stage-apps.groupdocs.com/signature/signembed/#{envelope.id}/#{recipient.id}"
|
126
|
+
iframe = "<iframe src='#{url}' frameborder='0' width='720' height='600'></iframe>"
|
127
|
+
|
128
|
+
rescue Exception => e
|
129
|
+
err = e.message
|
130
|
+
end
|
131
|
+
|
132
|
+
haml :envelope_sample, :locals => {:client_id => settings.client_id, :private_key => settings.private_key, :err => err, :iframe => iframe}
|
133
|
+
end
|