Version Description
- Implement an experimental control that allows users to record audio and video while filling out the form.
Download this release
Release Info
Developer | codepeople |
Plugin | Calculated Fields Form |
Version | 1.1.105 |
Comparing to | |
See all releases |
Code changes from version 1.1.104 to 1.1.105
- README.txt +6 -7
- changelog.txt +4 -0
- cp_calculatedfieldsf_free.php +2 -2
- css/style.css +16 -0
- css/stylepublic.css +18 -1
- js/fbuilder-pro-public.jquery.js +1 -1
- js/fields-admin/31_fbuilder.frecordav.js +84 -0
- js/fields-public/31_fbuilder.frecordav.js +204 -0
- js/modules/02_datetime/public/01_datetime.js +2 -2
README.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: http://cff.dwbooster.com
|
|
4 |
Tags: form,quote form,contact form,form builder,calculator,calculated,quote calculator,forms,form editor,advanced forms,payment calculator,payment,recurring payment,quote,fields,calculated field,price calculator,email,form design,paypal,equation editor,formula,equation,quote calculator,post,posts,plugin,widget,admin,sidebar,images,image,page,shortcode,products form,woocommerce,addons,layout,session,post,cookie,get,webhook,Dropbox,pdf,language
|
5 |
Requires at least: 3.0.5
|
6 |
Tested up to: 6.0
|
7 |
-
Stable tag: 1.1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -965,6 +965,10 @@ A: Please, follow the steps below:
|
|
965 |
|
966 |
== Changelog ==
|
967 |
|
|
|
|
|
|
|
|
|
968 |
= 1.1.104 =
|
969 |
|
970 |
* Fixes a conflict with Breeze WordPress Cache plugin.
|
@@ -1011,9 +1015,4 @@ A: Please, follow the steps below:
|
|
1011 |
|
1012 |
= 1.1.96 =
|
1013 |
|
1014 |
-
* Fixes a conflict with the latest update of The Events Calendar plugin.
|
1015 |
-
|
1016 |
-
= 1.1.95 =
|
1017 |
-
|
1018 |
-
* Fixes an issue with InnoDB tables whose ROW_FORMAT=COMPACT.
|
1019 |
-
* Modifies the submissions data sources to allow accessing the unpaid submissions only (Developer and Platinum versions).
|
4 |
Tags: form,quote form,contact form,form builder,calculator,calculated,quote calculator,forms,form editor,advanced forms,payment calculator,payment,recurring payment,quote,fields,calculated field,price calculator,email,form design,paypal,equation editor,formula,equation,quote calculator,post,posts,plugin,widget,admin,sidebar,images,image,page,shortcode,products form,woocommerce,addons,layout,session,post,cookie,get,webhook,Dropbox,pdf,language
|
5 |
Requires at least: 3.0.5
|
6 |
Tested up to: 6.0
|
7 |
+
Stable tag: 1.1.105
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
965 |
|
966 |
== Changelog ==
|
967 |
|
968 |
+
= 1.1.105 =
|
969 |
+
|
970 |
+
* Implement an experimental control that allows users to record audio and video while filling out the form.
|
971 |
+
|
972 |
= 1.1.104 =
|
973 |
|
974 |
* Fixes a conflict with Breeze WordPress Cache plugin.
|
1015 |
|
1016 |
= 1.1.96 =
|
1017 |
|
1018 |
+
* Fixes a conflict with the latest update of The Events Calendar plugin.
|
|
|
|
|
|
|
|
|
|
changelog.txt
CHANGED
@@ -1,5 +1,9 @@
|
|
1 |
== Changelog ==
|
2 |
|
|
|
|
|
|
|
|
|
3 |
= 1.1.104 =
|
4 |
|
5 |
* Fixes a conflict with Breeze WordPress Cache plugin.
|
1 |
== Changelog ==
|
2 |
|
3 |
+
= 1.1.105 =
|
4 |
+
|
5 |
+
* Implement an experimental control that allows users to record audio and video while filling out the form.
|
6 |
+
|
7 |
= 1.1.104 =
|
8 |
|
9 |
* Fixes a conflict with Breeze WordPress Cache plugin.
|
cp_calculatedfieldsf_free.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Calculated Fields Form
|
4 |
Plugin URI: https://cff.dwbooster.com
|
5 |
Description: Create forms with field values calculated based in other form field values.
|
6 |
-
Version: 1.1.
|
7 |
Text Domain: calculated-fields-form
|
8 |
Author: CodePeople
|
9 |
Author URI: https://cff.dwbooster.com
|
@@ -16,7 +16,7 @@ if(!defined('WP_DEBUG') || true != WP_DEBUG)
|
|
16 |
}
|
17 |
|
18 |
// Defining main constants
|
19 |
-
define('CP_CALCULATEDFIELDSF_VERSION', '1.1.
|
20 |
define('CP_CALCULATEDFIELDSF_MAIN_FILE_PATH', __FILE__ );
|
21 |
define('CP_CALCULATEDFIELDSF_BASE_PATH', dirname( CP_CALCULATEDFIELDSF_MAIN_FILE_PATH ) );
|
22 |
define('CP_CALCULATEDFIELDSF_BASE_NAME', plugin_basename( CP_CALCULATEDFIELDSF_MAIN_FILE_PATH ) );
|
3 |
Plugin Name: Calculated Fields Form
|
4 |
Plugin URI: https://cff.dwbooster.com
|
5 |
Description: Create forms with field values calculated based in other form field values.
|
6 |
+
Version: 1.1.105
|
7 |
Text Domain: calculated-fields-form
|
8 |
Author: CodePeople
|
9 |
Author URI: https://cff.dwbooster.com
|
16 |
}
|
17 |
|
18 |
// Defining main constants
|
19 |
+
define('CP_CALCULATEDFIELDSF_VERSION', '1.1.105' );
|
20 |
define('CP_CALCULATEDFIELDSF_MAIN_FILE_PATH', __FILE__ );
|
21 |
define('CP_CALCULATEDFIELDSF_BASE_PATH', dirname( CP_CALCULATEDFIELDSF_MAIN_FILE_PATH ) );
|
22 |
define('CP_CALCULATEDFIELDSF_BASE_NAME', plugin_basename( CP_CALCULATEDFIELDSF_MAIN_FILE_PATH ) );
|
css/style.css
CHANGED
@@ -80,6 +80,8 @@
|
|
80 |
#ffile.itemForm::before{content:"\e2c6";}
|
81 |
.cff-button-drag.fMedia::before,
|
82 |
#fMedia.itemForm::before{content:"\e410";}
|
|
|
|
|
83 |
.cff-button-drag.fCommentArea::before,
|
84 |
#fCommentArea.itemForm::before{content:"\e165";}
|
85 |
.cff-button-drag.fpassword::before,
|
@@ -141,11 +143,25 @@
|
|
141 |
#fbuilder .ffieldset:before{background-color:rgba(255,238,165,0.7);}
|
142 |
#fbuilder .fdiv:before{background-color:rgba(255,203,165,0.7);}
|
143 |
#fbuilder .fMedia:before{background-color:rgba(255,177,175,0.7);}
|
|
|
144 |
#fbuilder .fButton:before{background-color:rgba(214,212,255,0.7);}
|
145 |
#fbuilder .fhtml:before{background-color:rgba(179,238,255,0.7);}
|
146 |
#fbuilder .facceptance:before{background-color:rgba(184,195,211,0.7);}
|
147 |
#fbuilder .fCalculated:before{background-color:rgba(206,218,191,0.7);}
|
148 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
149 |
#fbuilder .fields .collapse,
|
150 |
#fbuilder .fields .uncollapse,
|
151 |
#fbuilder .fields .remove,
|
80 |
#ffile.itemForm::before{content:"\e2c6";}
|
81 |
.cff-button-drag.fMedia::before,
|
82 |
#fMedia.itemForm::before{content:"\e410";}
|
83 |
+
.cff-button-drag.frecordav::before,
|
84 |
+
#frecordav.itemForm::before{content:"\23fa";}
|
85 |
.cff-button-drag.fCommentArea::before,
|
86 |
#fCommentArea.itemForm::before{content:"\e165";}
|
87 |
.cff-button-drag.fpassword::before,
|
143 |
#fbuilder .ffieldset:before{background-color:rgba(255,238,165,0.7);}
|
144 |
#fbuilder .fdiv:before{background-color:rgba(255,203,165,0.7);}
|
145 |
#fbuilder .fMedia:before{background-color:rgba(255,177,175,0.7);}
|
146 |
+
#fbuilder .frecordav:before{background-color:rgba(255,177,175,0.7);}
|
147 |
#fbuilder .fButton:before{background-color:rgba(214,212,255,0.7);}
|
148 |
#fbuilder .fhtml:before{background-color:rgba(179,238,255,0.7);}
|
149 |
#fbuilder .facceptance:before{background-color:rgba(184,195,211,0.7);}
|
150 |
#fbuilder .fCalculated:before{background-color:rgba(206,218,191,0.7);}
|
151 |
|
152 |
+
#fbuilder .frecordav .cff-record-btn{background-color:#2196f3;display:inline-block;padding:0px 20px 0px 36px;height:30px;line-height:30px;color:white;border-radius:5px;font-size:12px;position:relative;}
|
153 |
+
#fbuilder .frecordav .cff-record-btn:before{content: " ";background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDEwMDAgMTAwMCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTAwMCAxMDAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLDUxMi4wMDAwMDApIHNjYWxlKDAuMTAwMDAwLC0wLjEwMDAwMCkiPjxwYXRoIGQ9Ik00NzM2LjUsNDk5Mi4xYy00NDguNS05NS44LTgzNS42LTQ4Ni44LTkyOS41LTkzNy4yYy00Mi4yLTE5OS4zLTQyLjItMzM4NC41LDAtMzU4My44YzExNS01NTEuOSw2MzAuNS05NjcuOCwxMTk3LjgtOTY3LjhjNTY3LjMsMCwxMDgyLjgsNDE1LjksMTE5Ny44LDk2Ny44YzQyLjIsMTk5LjMsNDIuMiwzMzg0LjUsMCwzNTgzLjhDNjA2Ni41LDQ3MDguNSw1Mzk5LjYsNTEzNS45LDQ3MzYuNSw0OTkyLjF6IiBzdHlsZT0iZmlsbDp3aGl0ZTsiIC8+PHBhdGggZD0iTTE3NDYuOCwxOTI1LjhjLTE4OS43LTY5LTMyNS44LTIwNy0zOTEtMzk2LjdjLTI0LjktNzQuOC0zMC43LTE3Ni4zLTMwLjctNTI5YzAtMjQxLjUsOS42LTUyNywxOS4yLTYzNi4zQzE0NjMuMS03OTUuNiwyMTMwLjEtMTg0MiwzMTI2LjYtMjQyOC41YzMzOS4yLTE5OS4zLDc5My40LTM3NS42LDExNTUuNi00NDQuNmwxMDkuMi0yMS4xdi0zMzMuNXYtMzMzLjVsLTY5My44LTUuOGwtNjk1LjctNS43bC05NS44LTQ3LjljLTEyMi43LTU5LjQtMjM3LjYtMTc0LjQtMjk3LjEtMjk3LjFjLTY3LjEtMTM4LTY3LjEtMzc5LjUsMC01MTcuNWM1OS40LTEyMi43LDE3NC40LTIzNy43LDI5Ny4xLTI5Ny4xbDk1LjgtNDcuOWgyMDAyLjdoMjAwMi43bDk1LjgsNDcuOWMxMjIuNyw1OS40LDIzNy42LDE3NC40LDI5Ny4xLDI5Ny4xYzY3LjEsMTM4LDY3LjEsMzc5LjUsMCw1MTcuNWMtNTkuNCwxMjIuNy0xNzQuNCwyMzcuNi0yOTcuMSwyOTcuMWwtOTUuOCw0Ny45bC02OTMuOCw1LjdsLTY5NS43LDUuOHYzMzMuNXYzMzMuNWwxMTEuMiwyMS4xYzU5LjQsMTEuNSwyMTAuOCw1MS43LDMzNy4zLDg4LjFjMTIxOC45LDM1OC40LDIxODQuOCwxMzYyLjYsMjUwMSwyNjA0LjVjOTMuOSwzNjYsMTA1LjQsNDg4LjcsMTA3LjMsMTEwMmMwLDU4NC41LDAsNTg0LjUtNDcuOSw2ODAuNGMtNTkuNCwxMjIuNy0xNzQuNCwyMzcuNi0yOTcuMSwyOTcuMWMtNzguNiwzOC4zLTEyNC42LDQ3LjktMjU4LjcsNDcuOWMtMTM0LjIsMC0xODAuMi05LjYtMjU4LjctNDcuOWMtMTIyLjctNTkuNC0yMzcuNy0xNzQuNC0yOTcuMS0yOTcuMWMtNDYtOTItNDcuOS0xMTUtNTkuNC02NDJjLTEzLjQtNTk2LTMwLjctNzM3LjktMTM2LjEtMTAzMS4xYy00OTYuNC0xNDA4LjYtMjA5OC42LTIwNTQuNS0zNDI2LjctMTM4My43Yy01NDQuMywyNzYtOTg3LDc3OC4xLTExOTcuOCwxMzYwLjdjLTEwOS4yLDMwNi42LTEyNi41LDQyNS41LTE0MS44LDEwMzQuOWMtMTMuNCw1NDQuMy0xNS4zLDU2OS4yLTU5LjQsNjYxLjJjLTU5LjQsMTIyLjctMTc2LjMsMjM3LjYtMjk3LjEsMjk1LjFDMjA3Mi42LDE5NTYuNCwxODY3LjUsMTk2OS45LDE3NDYuOCwxOTI1Ljh6IiBzdHlsZT0iZmlsbDp3aGl0ZTsiIC8+PC9nPjwvZz4NCjwvc3ZnPg==");background-size:cover;width:16px;height:16px;display:inline-block;position:absolute;top:7px;margin-left: -20px;}
|
154 |
+
#fbuilder .frecordav .cff-record-btn-recording:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAwIDEwMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsNTEyLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSI+PHBhdGggZD0iTTE2MjkuNiw0OTkyLjljLTcyLjgtMzAuNy00NzMuMy00MTUuOC01NTAtNTI4LjljLTY3LjEtOTUuOC04Mi40LTIxOC41LTM4LjMtMzA2LjZjNDQuMS04OC4yLDY5NzMuMy03MDIzLjEsNzA2NS4zLTcwNzFjMTcwLjUtODguMiwyNjguMy00Mi4yLDU3OC43LDI3NGMzMDguNSwzMTYuMiwzNDguNyw0MDIuNCwyNjIuNSw1NjcuMmMtNDcuOSw4OC4xLTY5ODIuOSw3MDIxLjItNzA2Ny4yLDcwNjMuM0MxODA1LjksNTAyOS4zLDE3MTMuOSw1MDI5LjMsMTYyOS42LDQ5OTIuOXoiIHN0eWxlPSJmaWxsOndoaXRlOyIgLz48cGF0aCBkPSJNNDQyNy4zLDQ5OTIuOWMtMzQ0LjktNzQuNy02NjEuMS0zMjMuOC04MjcuOC02NTMuNGwtNTcuNS0xMTMuMWwxMTg0LjItMTE4NC4ybDExODIuMy0xMTgyLjNsNS43LDEwMjUuMmM1LjgsMTE2MS4zLDEuOSwxMTkxLjktMTMyLjIsMTQ2NS45QzU1NDAuNyw0ODM5LjYsNDk2OS42LDUxMDkuOCw0NDI3LjMsNDk5Mi45eiIgc3R5bGU9ImZpbGw6d2hpdGU7IiAvPjxwYXRoIGQ9Ik0xNDM0LjEsMTkyNWMtMTg5LjctNjktMzI1LjgtMjA3LTM5MC45LTM5Ni43Yy0yNC45LTc0LjctMzAuNy0xNzYuMy0zMC43LTUyOC45YzAtMjQxLjQsOS42LTUyNywxOS4yLTYzNi4yYzExOC44LTExNTkuMyw3ODUuNy0yMjA1LjYsMTc4Mi4xLTI3OTJjMzM5LjItMTk5LjMsNzkzLjMtMzc1LjYsMTE1NS41LTQ0NC42bDEwOS4yLTIxLjF2LTMzMy40di0zMzMuNGwtNjkzLjctNS44bC02OTUuNi01LjdsLTk1LjgtNDcuOWMtMTIyLjYtNTkuNC0yMzcuNi0xNzQuNC0yOTctMjk3Yy02Ny4xLTEzOC02Ny4xLTM3OS40LDAtNTE3LjRjNTkuNC0xMjIuNiwxNzQuNC0yMzcuNiwyOTctMjk3bDk1LjgtNDcuOWgyMDAyLjVoMjAwMi41bDk1LjgsNDcuOWMxMjIuNiw1OS40LDIzNy42LDE3NC40LDI5NywyOTdjNjcuMSwxMzgsNjcuMSwzNzkuNCwwLDUxNy40Yy01OS40LDEyMi43LTE3NC40LDIzNy42LTI5NywyOTdsLTk1LjgsNDcuOWwtNjkzLjcsNS43bC02OTUuNiw1Ljh2MzMzLjR2MzMzLjRsMTExLjEsMjEuMWMzMTYuMiw2MS4zLDcxNC44LDIxMC44LDEwMTkuNSwzNzkuNGMxMDkuMiw2MS4zLDIwMS4yLDExOC44LDIwNSwxMjguNGMzLjgsMTEuNS0xOTEuNiwyMTYuNS00MzMuMSw0NThsLTQzNi45LDQzNi45bC0xNzQuNC02OWMtNjcwLjctMjY4LjMtMTM3NS45LTIzNy42LTIwMTUuOSw4NC4zYy01NDQuMiwyNzUuOS05ODYuOSw3NzgtMTE5Ny43LDEzNjAuNUMyMjczLjQsMjExLjksMjI1Ni4yLDMzMC43LDIyNDAuOSw5NDBjLTEzLjQsNTQ0LjItMTUuMyw1NjkuMS01OS40LDY2MS4xYy01OS40LDEyMi42LTE3Ni4zLDIzNy42LTI5NywyOTUuMUMxNzU5LjksMTk1NS42LDE1NTQuOCwxOTY5LjEsMTQzNC4xLDE5MjV6IiBzdHlsZT0iZmlsbDp3aGl0ZTsiIC8+PHBhdGggZD0iTTc1NjYuMiwxOTI1Yy0xODkuNy02OS0zMjUuOC0yMDctMzkwLjktMzk2LjdjLTI0LjktNzIuOC0zMC43LTE3Mi41LTMwLjctNDk4LjJWNjIzLjhMNzY2MiwxMDYuNWM1OTAuMi01OTAuMiw1MTcuNC01NjMuNCw1OTkuOC0yMTguNWM5MiwzODEuMyw5OS42LDQ1OCw5OS42LDEwNTJjMCw1NjMuNCwwLDU2NS4zLTQ3LjksNjYxLjFjLTYxLjMsMTIyLjYtMTc2LjMsMjM3LjYtMjk3LDI5NS4xQzc4OTEuOSwxOTU1LjYsNzY4Ni45LDE5NjkuMSw3NTY2LjIsMTkyNXoiIHN0eWxlPSJmaWxsOndoaXRlOyIgLz48cGF0aCBkPSJNMzQ2NS40LDcxOS43YzEuOS00NDYuNSwyNzQtODgzLjQsNjcwLjctMTA4MC44YzkwLjEtNDQuMSwyMjQuMi05MiwyOTctMTA3LjNjMTQzLjctMzAuNywzMzUuMy0zOC4zLDMzNS4zLTEzLjRjMCw3LjctMjkzLjIsMzA2LjYtNjUxLjUsNjY0LjlsLTY1MS41LDY1MS41VjcxOS43eiIgc3R5bGU9ImZpbGw6d2hpdGU7IiAvPjwvZz48L2c+DQo8L3N2Zz4=");}
|
155 |
+
#fbuilder .frecordav .cff-record-btn:hover{background-color:#1a77c9;}
|
156 |
+
#fbuilder .frecordav .cff-record-play-btn{margin-left:5px;background-color:white;border:1px solid #CCC;display:inline-block;padding:0px 10px;height:30px;line-height:30px;color:#333;border-radius:5px;font-size:12px;text-align:center;box-sizing:border-box;}
|
157 |
+
#fbuilder .frecordav .cff-record-play-btn:before{content:"\25B6";}
|
158 |
+
#fbuilder .frecordav .cff-record-stop-btn:before{content:"\23F9";}
|
159 |
+
#fbuilder .frecordav .cff-record-play-btn:hover{background-color:#EBEBEB;border-color:#ADADAD;}
|
160 |
+
#fbuilder .frecordav .cff-record-status{background:#b0b0b0;display:inline-block;clear:both;padding-left:5px;padding-right:5px;color:white;font-style:italic;margin-top:5px;}
|
161 |
+
#fbuilder .frecordav .cff-record-time{display:inline-block;margin-left:10px;}
|
162 |
+
#fbuilder .frecordav .cff-record-time:after{content:"/";margin-left:5px;margin-right:5px;}
|
163 |
+
#fbuilder .frecordav .cff-record-max-time{display:inline-block;color:red;}
|
164 |
+
|
165 |
#fbuilder .fields .collapse,
|
166 |
#fbuilder .fields .uncollapse,
|
167 |
#fbuilder .fields .remove,
|
css/stylepublic.css
CHANGED
@@ -551,4 +551,21 @@
|
|
551 |
|
552 |
/* VIEWERS */
|
553 |
#fbuilder .cff-image-viewer{max-width:100%;}
|
554 |
-
#fbuilder .cff-pdf-viewer{width:100%;border:1px solid #CCC;min-height:500px;}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
551 |
|
552 |
/* VIEWERS */
|
553 |
#fbuilder .cff-image-viewer{max-width:100%;}
|
554 |
+
#fbuilder .cff-pdf-viewer{width:100%;border:1px solid #CCC;min-height:500px;}
|
555 |
+
|
556 |
+
/* RECORDER */
|
557 |
+
#fbuilder .cff-record-av-field video {border:1px solid #999999;}
|
558 |
+
#fbuilder .cff-record-av-field .cff-record-btn{background-color:#2196f3;display:inline-block;padding:0px 20px 0px 36px;height:30px;line-height:30px;color:white;border-radius:5px;font-size:12px;position:relative;cursor:pointer;float:left;}
|
559 |
+
#fbuilder .cff-record-av-field .cff-record-btn:before{content: " ";background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDEwMDAgMTAwMCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTAwMCAxMDAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMDAwMDAwLDUxMi4wMDAwMDApIHNjYWxlKDAuMTAwMDAwLC0wLjEwMDAwMCkiPjxwYXRoIGQ9Ik00NzM2LjUsNDk5Mi4xYy00NDguNS05NS44LTgzNS42LTQ4Ni44LTkyOS41LTkzNy4yYy00Mi4yLTE5OS4zLTQyLjItMzM4NC41LDAtMzU4My44YzExNS01NTEuOSw2MzAuNS05NjcuOCwxMTk3LjgtOTY3LjhjNTY3LjMsMCwxMDgyLjgsNDE1LjksMTE5Ny44LDk2Ny44YzQyLjIsMTk5LjMsNDIuMiwzMzg0LjUsMCwzNTgzLjhDNjA2Ni41LDQ3MDguNSw1Mzk5LjYsNTEzNS45LDQ3MzYuNSw0OTkyLjF6IiBzdHlsZT0iZmlsbDp3aGl0ZTsiIC8+PHBhdGggZD0iTTE3NDYuOCwxOTI1LjhjLTE4OS43LTY5LTMyNS44LTIwNy0zOTEtMzk2LjdjLTI0LjktNzQuOC0zMC43LTE3Ni4zLTMwLjctNTI5YzAtMjQxLjUsOS42LTUyNywxOS4yLTYzNi4zQzE0NjMuMS03OTUuNiwyMTMwLjEtMTg0MiwzMTI2LjYtMjQyOC41YzMzOS4yLTE5OS4zLDc5My40LTM3NS42LDExNTUuNi00NDQuNmwxMDkuMi0yMS4xdi0zMzMuNXYtMzMzLjVsLTY5My44LTUuOGwtNjk1LjctNS43bC05NS44LTQ3LjljLTEyMi43LTU5LjQtMjM3LjYtMTc0LjQtMjk3LjEtMjk3LjFjLTY3LjEtMTM4LTY3LjEtMzc5LjUsMC01MTcuNWM1OS40LTEyMi43LDE3NC40LTIzNy43LDI5Ny4xLTI5Ny4xbDk1LjgtNDcuOWgyMDAyLjdoMjAwMi43bDk1LjgsNDcuOWMxMjIuNyw1OS40LDIzNy42LDE3NC40LDI5Ny4xLDI5Ny4xYzY3LjEsMTM4LDY3LjEsMzc5LjUsMCw1MTcuNWMtNTkuNCwxMjIuNy0xNzQuNCwyMzcuNi0yOTcuMSwyOTcuMWwtOTUuOCw0Ny45bC02OTMuOCw1LjdsLTY5NS43LDUuOHYzMzMuNXYzMzMuNWwxMTEuMiwyMS4xYzU5LjQsMTEuNSwyMTAuOCw1MS43LDMzNy4zLDg4LjFjMTIxOC45LDM1OC40LDIxODQuOCwxMzYyLjYsMjUwMSwyNjA0LjVjOTMuOSwzNjYsMTA1LjQsNDg4LjcsMTA3LjMsMTEwMmMwLDU4NC41LDAsNTg0LjUtNDcuOSw2ODAuNGMtNTkuNCwxMjIuNy0xNzQuNCwyMzcuNi0yOTcuMSwyOTcuMWMtNzguNiwzOC4zLTEyNC42LDQ3LjktMjU4LjcsNDcuOWMtMTM0LjIsMC0xODAuMi05LjYtMjU4LjctNDcuOWMtMTIyLjctNTkuNC0yMzcuNy0xNzQuNC0yOTcuMS0yOTcuMWMtNDYtOTItNDcuOS0xMTUtNTkuNC02NDJjLTEzLjQtNTk2LTMwLjctNzM3LjktMTM2LjEtMTAzMS4xYy00OTYuNC0xNDA4LjYtMjA5OC42LTIwNTQuNS0zNDI2LjctMTM4My43Yy01NDQuMywyNzYtOTg3LDc3OC4xLTExOTcuOCwxMzYwLjdjLTEwOS4yLDMwNi42LTEyNi41LDQyNS41LTE0MS44LDEwMzQuOWMtMTMuNCw1NDQuMy0xNS4zLDU2OS4yLTU5LjQsNjYxLjJjLTU5LjQsMTIyLjctMTc2LjMsMjM3LjYtMjk3LjEsMjk1LjFDMjA3Mi42LDE5NTYuNCwxODY3LjUsMTk2OS45LDE3NDYuOCwxOTI1Ljh6IiBzdHlsZT0iZmlsbDp3aGl0ZTsiIC8+PC9nPjwvZz4NCjwvc3ZnPg==");background-size:cover;width:16px;height:16px;display:inline-block;position:absolute;top:7px;margin-left: -20px;}
|
560 |
+
#fbuilder .cff-record-av-field .cff-record-btn-recording:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAwIDEwMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsNTEyLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSI+PHBhdGggZD0iTTE2MjkuNiw0OTkyLjljLTcyLjgtMzAuNy00NzMuMy00MTUuOC01NTAtNTI4LjljLTY3LjEtOTUuOC04Mi40LTIxOC41LTM4LjMtMzA2LjZjNDQuMS04OC4yLDY5NzMuMy03MDIzLjEsNzA2NS4zLTcwNzFjMTcwLjUtODguMiwyNjguMy00Mi4yLDU3OC43LDI3NGMzMDguNSwzMTYuMiwzNDguNyw0MDIuNCwyNjIuNSw1NjcuMmMtNDcuOSw4OC4xLTY5ODIuOSw3MDIxLjItNzA2Ny4yLDcwNjMuM0MxODA1LjksNTAyOS4zLDE3MTMuOSw1MDI5LjMsMTYyOS42LDQ5OTIuOXoiIHN0eWxlPSJmaWxsOndoaXRlOyIgLz48cGF0aCBkPSJNNDQyNy4zLDQ5OTIuOWMtMzQ0LjktNzQuNy02NjEuMS0zMjMuOC04MjcuOC02NTMuNGwtNTcuNS0xMTMuMWwxMTg0LjItMTE4NC4ybDExODIuMy0xMTgyLjNsNS43LDEwMjUuMmM1LjgsMTE2MS4zLDEuOSwxMTkxLjktMTMyLjIsMTQ2NS45QzU1NDAuNyw0ODM5LjYsNDk2OS42LDUxMDkuOCw0NDI3LjMsNDk5Mi45eiIgc3R5bGU9ImZpbGw6d2hpdGU7IiAvPjxwYXRoIGQ9Ik0xNDM0LjEsMTkyNWMtMTg5LjctNjktMzI1LjgtMjA3LTM5MC45LTM5Ni43Yy0yNC45LTc0LjctMzAuNy0xNzYuMy0zMC43LTUyOC45YzAtMjQxLjQsOS42LTUyNywxOS4yLTYzNi4yYzExOC44LTExNTkuMyw3ODUuNy0yMjA1LjYsMTc4Mi4xLTI3OTJjMzM5LjItMTk5LjMsNzkzLjMtMzc1LjYsMTE1NS41LTQ0NC42bDEwOS4yLTIxLjF2LTMzMy40di0zMzMuNGwtNjkzLjctNS44bC02OTUuNi01LjdsLTk1LjgtNDcuOWMtMTIyLjYtNTkuNC0yMzcuNi0xNzQuNC0yOTctMjk3Yy02Ny4xLTEzOC02Ny4xLTM3OS40LDAtNTE3LjRjNTkuNC0xMjIuNiwxNzQuNC0yMzcuNiwyOTctMjk3bDk1LjgtNDcuOWgyMDAyLjVoMjAwMi41bDk1LjgsNDcuOWMxMjIuNiw1OS40LDIzNy42LDE3NC40LDI5NywyOTdjNjcuMSwxMzgsNjcuMSwzNzkuNCwwLDUxNy40Yy01OS40LDEyMi43LTE3NC40LDIzNy42LTI5NywyOTdsLTk1LjgsNDcuOWwtNjkzLjcsNS43bC02OTUuNiw1Ljh2MzMzLjR2MzMzLjRsMTExLjEsMjEuMWMzMTYuMiw2MS4zLDcxNC44LDIxMC44LDEwMTkuNSwzNzkuNGMxMDkuMiw2MS4zLDIwMS4yLDExOC44LDIwNSwxMjguNGMzLjgsMTEuNS0xOTEuNiwyMTYuNS00MzMuMSw0NThsLTQzNi45LDQzNi45bC0xNzQuNC02OWMtNjcwLjctMjY4LjMtMTM3NS45LTIzNy42LTIwMTUuOSw4NC4zYy01NDQuMiwyNzUuOS05ODYuOSw3NzgtMTE5Ny43LDEzNjAuNUMyMjczLjQsMjExLjksMjI1Ni4yLDMzMC43LDIyNDAuOSw5NDBjLTEzLjQsNTQ0LjItMTUuMyw1NjkuMS01OS40LDY2MS4xYy01OS40LDEyMi42LTE3Ni4zLDIzNy42LTI5NywyOTUuMUMxNzU5LjksMTk1NS42LDE1NTQuOCwxOTY5LjEsMTQzNC4xLDE5MjV6IiBzdHlsZT0iZmlsbDp3aGl0ZTsiIC8+PHBhdGggZD0iTTc1NjYuMiwxOTI1Yy0xODkuNy02OS0zMjUuOC0yMDctMzkwLjktMzk2LjdjLTI0LjktNzIuOC0zMC43LTE3Mi41LTMwLjctNDk4LjJWNjIzLjhMNzY2MiwxMDYuNWM1OTAuMi01OTAuMiw1MTcuNC01NjMuNCw1OTkuOC0yMTguNWM5MiwzODEuMyw5OS42LDQ1OCw5OS42LDEwNTJjMCw1NjMuNCwwLDU2NS4zLTQ3LjksNjYxLjFjLTYxLjMsMTIyLjYtMTc2LjMsMjM3LjYtMjk3LDI5NS4xQzc4OTEuOSwxOTU1LjYsNzY4Ni45LDE5NjkuMSw3NTY2LjIsMTkyNXoiIHN0eWxlPSJmaWxsOndoaXRlOyIgLz48cGF0aCBkPSJNMzQ2NS40LDcxOS43YzEuOS00NDYuNSwyNzQtODgzLjQsNjcwLjctMTA4MC44YzkwLjEtNDQuMSwyMjQuMi05MiwyOTctMTA3LjNjMTQzLjctMzAuNywzMzUuMy0zOC4zLDMzNS4zLTEzLjRjMCw3LjctMjkzLjIsMzA2LjYtNjUxLjUsNjY0LjlsLTY1MS41LDY1MS41VjcxOS43eiIgc3R5bGU9ImZpbGw6d2hpdGU7IiAvPjwvZz48L2c+DQo8L3N2Zz4=");}
|
561 |
+
#fbuilder .cff-record-av-field .cff-record-btn-recording,
|
562 |
+
#fbuilder .cff-record-av-field .cff-record-btn:hover{background-color:#1a77c9;}
|
563 |
+
#fbuilder .cff-record-av-field .cff-record-play-btn{margin-left:5px;background-color:white;border:1px solid #CCC;display:inline-block;padding:0px 10px;width:30px;height:30px;line-height:30px;color:#333;border-radius:5px;font-size:12px;text-align:center;box-sizing:border-box;cursor:pointer;float:left;position:relative;}
|
564 |
+
#fbuilder .cff-record-av-field .cff-record-play-btn:before{content:" ";background-image:url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMTcuODA0IDE3LjgwNCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTcuODA0IDE3LjgwNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPGcgaWQ9ImM5OF9wbGF5Ij4NCgkJPHBhdGggZD0iTTIuMDY3LDAuMDQzQzIuMjEtMC4wMjgsMi4zNzItMC4wMDgsMi40OTMsMC4wODVsMTMuMzEyLDguNTAzYzAuMDk0LDAuMDc4LDAuMTU0LDAuMTkxLDAuMTU0LDAuMzEzDQoJCQljMCwwLjEyLTAuMDYxLDAuMjM3LTAuMTU0LDAuMzE0TDIuNDkyLDE3LjcxN2MtMC4wNywwLjA1Ny0wLjE2MiwwLjA4Ny0wLjI1LDAuMDg3bC0wLjE3Ni0wLjA0DQoJCQljLTAuMTM2LTAuMDY1LTAuMjIyLTAuMjA3LTAuMjIyLTAuMzYxVjAuNDAyQzEuODQ0LDAuMjUsMS45MywwLjEwNywyLjA2NywwLjA0M3oiLz4NCgk8L2c+DQoJPGcgaWQ9IkNhcGFfMV83OF8iPg0KCTwvZz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjwvc3ZnPg==");background-size:cover;width:12px;height:12px;display:inline-block;position:absolute;top:9px;left:9px;}
|
565 |
+
#fbuilder .cff-record-av-field .cff-record-stop-btn:before{background-image:url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMTAuMzM0IDEwLjMzNCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMTAuMzM0IDEwLjMzNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggc3R5bGU9ImZpbGw6IzAzMDEwNDsiIGQ9Ik0xMC4zMzMsOS44MTZjMCwwLjI4NS0wLjIzMSwwLjUxOC0wLjUxNywwLjUxOEgwLjUxN0MwLjIzMywxMC4zMzQsMCwxMC4xMDIsMCw5LjgxNlYwLjUxNw0KCQlDMCwwLjIzMiwwLjIzMSwwLDAuNTE3LDBoOS4yOTljMC4yODUsMCwwLjUxNywwLjIzMSwwLjUxNywwLjUxN1Y5LjgxNnoiLz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjwvc3ZnPg==");}
|
566 |
+
#fbuilder .cff-record-av-field .cff-record-play-btn:hover{background-color:#EBEBEB;border-color:#ADADAD;}
|
567 |
+
#fbuilder .cff-record-av-field .cff-record-error,
|
568 |
+
#fbuilder .cff-record-av-field .cff-record-status{background:#b0b0b0;display:inline-block;clear:both;padding-left:5px;padding-right:5px;color:white;font-style:italic;margin-top:5px;}
|
569 |
+
#fbuilder .cff-record-av-field .cff-record-time{display:inline-block;margin-left:10px;}
|
570 |
+
#fbuilder .cff-record-av-field .cff-record-time:after{content:"/";margin-left:5px;margin-right:5px;}
|
571 |
+
#fbuilder .cff-record-av-field .cff-record-max-time{display:inline-block;color:red;}
|
js/fbuilder-pro-public.jquery.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
$.fbuilder['version'] = '1.1.
|
2 |
$.fbuilder['controls'] = $.fbuilder['controls'] || {};
|
3 |
$.fbuilder['forms'] = $.fbuilder['forms'] || {};
|
4 |
|
1 |
+
$.fbuilder['version'] = '1.1.105';
|
2 |
$.fbuilder['controls'] = $.fbuilder['controls'] || {};
|
3 |
$.fbuilder['forms'] = $.fbuilder['forms'] || {};
|
4 |
|
js/fields-admin/31_fbuilder.frecordav.js
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
$.fbuilder.typeList.push(
|
2 |
+
{
|
3 |
+
id:"frecordav",
|
4 |
+
name:"Recording",
|
5 |
+
control_category:1
|
6 |
+
}
|
7 |
+
);
|
8 |
+
$.fbuilder.controls[ 'frecordav' ]=function(){};
|
9 |
+
$.extend(
|
10 |
+
$.fbuilder.controls[ 'frecordav' ].prototype,
|
11 |
+
$.fbuilder.controls[ 'ffields' ].prototype,
|
12 |
+
{
|
13 |
+
title:"Recording Audio and Video",
|
14 |
+
ftype:"frecordav",
|
15 |
+
required:false,
|
16 |
+
exclude:false,
|
17 |
+
size:"medium",
|
18 |
+
to_record:"video",
|
19 |
+
max_time:0,
|
20 |
+
beep:0,
|
21 |
+
preview:false,
|
22 |
+
video_width:320,
|
23 |
+
video_height:240,
|
24 |
+
record_label: 'Record',
|
25 |
+
stop_label: 'Stop',
|
26 |
+
status_message: 'Recording saved',
|
27 |
+
showFieldType: function()
|
28 |
+
{
|
29 |
+
return '<label><b>Field Type: Recording Audio and Video</b><br><i>(Experimental control)</i></label>';
|
30 |
+
},
|
31 |
+
display:function()
|
32 |
+
{
|
33 |
+
var hours = Math.floor( this.max_time / 3600 ),
|
34 |
+
minutes = Math.floor( ( this.max_time - hours * 3600 ) / 60 ),
|
35 |
+
seconds = ( this.max_time - hours * 3600 - minutes * 60 ) % 60,
|
36 |
+
max_time_formatted = ( hours ? ( hours < 10 ? '0' + hours : hours ) + ':' : '' ) + ( minutes < 10 ? '0' + minutes : minutes ) + ':' + ( seconds < 10 ? '0' + seconds : seconds ),
|
37 |
+
time_formatted = ( hours ? '00:' : '')+'00:00';
|
38 |
+
|
39 |
+
return '<div class="fields '+this.name+' '+this.ftype+'" id="field'+this.form_identifier+'-'+this.index+'" title="'+this.name+'"><div class="arrow ui-icon ui-icon-play "></div><div title="Delete" class="remove ui-icon ui-icon-trash "></div><div title="Duplicate" class="copy ui-icon ui-icon-copy "></div><label>'+cff_sanitize(this.title)+''+((this.required)?"*":"")+'</label><div class="dfield">' +
|
40 |
+
'<div class="cff-record-btn">'+cff_sanitize(this.record_label)+'</div>' +
|
41 |
+
( this.preview ? '<div class="cff-record-play-btn"></div>' : '' ) +
|
42 |
+
( this.max_time ? '<div class="cff-record-time">'+time_formatted+'</div><div class="cff-record-max-time">'+max_time_formatted+'</div>' : '' ) +
|
43 |
+
'<div class="clearer"></div>' +
|
44 |
+
'<div class="cff-record-status">'+cff_sanitize(this.status_message)+'</div>' +
|
45 |
+
'<span class="uh">'+this.userhelp+'</span></div><div class="clearer" /></div>';
|
46 |
+
},
|
47 |
+
editItemEvents:function()
|
48 |
+
{
|
49 |
+
var evt = [
|
50 |
+
{s:"[name='sToRecord']", e:"change", l:"to_record", f:function(el){ return $('[name="sToRecord"]:checked').val();}, x:1},
|
51 |
+
{s:"#sPreview",e:"click", l:"preview",f:function(el){return el.is(":checked");}},
|
52 |
+
{s:"#sBeepSound",e:"click", l:"beep",f:function(el){return el.is(":checked");}},
|
53 |
+
{s:"#sVideoWidth",e:"change keyup", l:"video_width", x:1},
|
54 |
+
{s:"#sVideoHeight",e:"change keyup", l:"video_height", x:1},
|
55 |
+
{s:"#sMaxTime",e:"change keyup", l:"max_time", x:1},
|
56 |
+
{s:"#sRecordLabel",e:"change keyup", l:"record_label", x:1},
|
57 |
+
{s:"#sStopLabel",e:"change keyup", l:"stop_label", x:1},
|
58 |
+
{s:"#sStatusMessage",e:"change keyup", l:"status_message", x:1}
|
59 |
+
];
|
60 |
+
$.fbuilder.controls[ 'ffields' ].prototype.editItemEvents.call(this,evt);
|
61 |
+
},
|
62 |
+
showSpecialDataInstance: function()
|
63 |
+
{
|
64 |
+
return '<hr><label>To record</label><label><input type="radio" name="sToRecord" value="audio" '+(this.to_record == 'audio' ? 'CHECKED' : '')+' /> Audio</label><label><input type="radio" name="sToRecord" value="video" '+(this.to_record == 'video' ? 'CHECKED' : '')+' /> Video</label><label><input type="radio" name="sToRecord" value="audio-video" '+(this.to_record == 'audio-video' ? 'CHECKED' : '')+' /> Audio and video</label><hr>'+
|
65 |
+
|
66 |
+
'<label><input type="checkbox" id="sPreview" name="sPreview" '+((typeof this.preview != 'undefined' && this.preview) ? 'CHECKED' : '')+'" /> Audio and video preview</label>'+
|
67 |
+
|
68 |
+
'<div class="column width50"><label>Video Width</label><input type="text" name="sVideoWidth" id="sVideoWidth" value="'+cff_esc_attr(this.video_width)+'" class="large" /></div>'+
|
69 |
+
|
70 |
+
'<div class="column width50"><label>Video Height</label><input type="text" name="sVideoHeight" id="sVideoHeight" value="'+cff_esc_attr(this.video_height)+'" class="large" /></div>'+
|
71 |
+
|
72 |
+
'<div class="clearer"></div>'+
|
73 |
+
|
74 |
+
'<label>Max Length (in seconds)</label><input type="number" name="sMaxTime" id="sMaxTime" value="'+cff_esc_attr(this.max_time ? this.max_time : '')+'" class="width50" /><div class="clearer"><i>Maximum allowed recording time in seconds. A value of 60 means 1 minute.</i></div>'+
|
75 |
+
|
76 |
+
'<label><input type="checkbox" name="sBeepSound" id="sBeepSound" '+(this.beep ? 'CHECKED' : '')+' /> Beep Sound</label><div class="clearer"><i>Will play a beep sound to notify that the recording time is up.</i></div><hr>'+
|
77 |
+
|
78 |
+
'<label>Labels<label>'+
|
79 |
+
'<div class="column width50"><label>Record Button</label><input type="text" name="sRecordLabel" id="sRecordLabel" value="'+cff_esc_attr(this.record_label)+'" class="large" /></div>'+
|
80 |
+
'<div class="column width50"><label>Stop Button</label><input type="text" name="sStopLabel" id="sStopLabel" value="'+cff_esc_attr(this.stop_label)+'" class="large" /></div><div class="clearer"></div>'+
|
81 |
+
'<div><label>Status Message</label><input type="text" name="sStatusMessage" id="sStatusMessage" value="'+cff_esc_attr(this.status_message)+'" class="large" /></div>';
|
82 |
+
}
|
83 |
+
}
|
84 |
+
);
|
js/fields-public/31_fbuilder.frecordav.js
ADDED
@@ -0,0 +1,204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
$.fbuilder.controls['frecordav']=function(){};
|
2 |
+
$.extend(
|
3 |
+
$.fbuilder.controls['frecordav'].prototype,
|
4 |
+
$.fbuilder.controls['ffields'].prototype,
|
5 |
+
{
|
6 |
+
ftype:"frecordav",
|
7 |
+
required:false,
|
8 |
+
exclude:false,
|
9 |
+
size:"medium",
|
10 |
+
to_record:"video",
|
11 |
+
max_time:0,
|
12 |
+
beep:0,
|
13 |
+
preview:false,
|
14 |
+
video_width:320,
|
15 |
+
video_height:240,
|
16 |
+
record_label: 'Record',
|
17 |
+
stop_label: 'Stop',
|
18 |
+
status_message: 'Recording saved',
|
19 |
+
_has_hours_component:function(){return Math.floor( this.max_time / 3600 ) ? 1 : 0;},
|
20 |
+
_is_video: function(){ return this.to_record == 'video' || this.to_record == 'audio-video';},
|
21 |
+
_is_audio: function(){ return this.to_record == 'audio' || this.to_record == 'audio-video';},
|
22 |
+
_format_time_component:function(v)
|
23 |
+
{
|
24 |
+
var _has_hours = this._has_hours_component(),
|
25 |
+
hours = Math.floor( v / 3600 ),
|
26 |
+
minutes = Math.floor( ( v - hours * 3600 ) / 60 ),
|
27 |
+
seconds = ( v - hours * 3600 - minutes * 60 ) % 60,
|
28 |
+
time_formatted = ( _has_hours ? ( hours < 10 ? '0' + hours : hours ) + ':' : '' ) + ( minutes < 10 ? '0' + minutes : minutes ) + ':' + ( seconds < 10 ? '0' + seconds : seconds );
|
29 |
+
return time_formatted;
|
30 |
+
},
|
31 |
+
_getUserMedia:function()
|
32 |
+
{
|
33 |
+
return navigator.getUserMedia || navigator.webkitGetUserMedia ||
|
34 |
+
navigator.mozGetUserMedia || navigator.msGetUserMedia || false;
|
35 |
+
},
|
36 |
+
show:function()
|
37 |
+
{
|
38 |
+
var max_time_formatted = this._format_time_component(this.max_time),
|
39 |
+
time_formatted = ( this._has_hours_component() ? '00:' : '')+'00:00';
|
40 |
+
|
41 |
+
return '<div class="fields '+cff_esc_attr(this.csslayout)+' '+this.name+' cff-record-av-field" id="field'+this.form_identifier+'-'+this.index+'">' +
|
42 |
+
'<label for="'+this.name+'_record_btn">'+this.title+''+((this.required)?"<span class='r'>*</span>":"")+'</label>' +
|
43 |
+
'<div class="dfield">' +
|
44 |
+
'<input type="file" id="'+this.name+'" name="'+this.name+'[]" class="hide-strong" />' +
|
45 |
+
'<div class="cff-record-controls-container">' +
|
46 |
+
'<div class="cff-record-btn" id="'+this.name+'_record_btn">'+cff_sanitize(this.record_label)+'</div>' +
|
47 |
+
( this.preview ? '<div class="cff-record-play-btn hide-strong" id="'+this.name+'_play_btn"></div>' : '' ) +
|
48 |
+
( this.max_time ? '<div class="cff-record-time" id="'+this.name+'_record_time">'+time_formatted+'</div><div class="cff-record-max-time">'+max_time_formatted+'</div>' : '' ) +
|
49 |
+
'</div>' +
|
50 |
+
'<div class="clearer"></div>' +
|
51 |
+
'<div class="cff-record-status hide-strong" id="'+this.name+'_record_status">'+cff_sanitize(this.status_message)+'</div>' +
|
52 |
+
( this.preview ? (this._is_video() ? '<video id="'+this.name+'_media" width="'+cff_esc_attr(this.video_width)+'" height="'+cff_esc_attr(this.video_height)+'" class="hide-strong" style="margin-top:20px;" preload="metadata"></video>': '<audio id="'+this.name+'_media" class="hide-strong"></audio>') : '' ) +
|
53 |
+
'<div class="clearer"></div>' +
|
54 |
+
'<span class="uh">'+this.userhelp+'</span></div><div class="clearer" /></div>';
|
55 |
+
},
|
56 |
+
after_show:function()
|
57 |
+
{
|
58 |
+
var me = this,
|
59 |
+
mssg = $('#'+me.name+'_record_status'),
|
60 |
+
record_btn = $('#'+this.name+'_record_btn'),
|
61 |
+
play_btn = $('#'+me.name+'_play_btn'),
|
62 |
+
file_ctrl = $('#'+me.name),
|
63 |
+
media_ctrl = $('#'+me.name+'_media'),
|
64 |
+
record_time = $('#'+me.name+'_record_time'),
|
65 |
+
chunks = [],
|
66 |
+
interval,
|
67 |
+
streamRecorder,
|
68 |
+
recording_flag = false;
|
69 |
+
|
70 |
+
play_btn[_files().length ? 'removeClass' : 'addClass' ]('hide-strong');
|
71 |
+
navigator.getUserMedia = me._getUserMedia();
|
72 |
+
|
73 |
+
if(media_ctrl.length)
|
74 |
+
{
|
75 |
+
media_ctrl[0].ontimeupdate = function(evt){
|
76 |
+
if(!recording_flag) record_time.text(me._format_time_component(Math.round(evt.target.currentTime)));
|
77 |
+
};
|
78 |
+
media_ctrl[0].onended = function(evt){
|
79 |
+
evt.target.currentTime = 0;
|
80 |
+
play_btn.removeClass('cff-record-stop-btn');
|
81 |
+
};
|
82 |
+
}
|
83 |
+
|
84 |
+
if(!navigator.getUserMedia) {
|
85 |
+
$('.'+me.name).remove();
|
86 |
+
return;
|
87 |
+
}
|
88 |
+
|
89 |
+
function _files() {
|
90 |
+
return file_ctrl[0].files;
|
91 |
+
};
|
92 |
+
|
93 |
+
function _load_file() {
|
94 |
+
var files = _files();
|
95 |
+
if(files.length && media_ctrl.length)
|
96 |
+
{
|
97 |
+
media_ctrl[0].src = URL.createObjectURL(files[0]);
|
98 |
+
return true;
|
99 |
+
}
|
100 |
+
return false;
|
101 |
+
}
|
102 |
+
|
103 |
+
function _random() {
|
104 |
+
return Math.floor(Math.random()*(1000-9999+1)+1000);
|
105 |
+
};
|
106 |
+
|
107 |
+
function _stopRecording() {
|
108 |
+
try {
|
109 |
+
if(typeof streamRecorder != 'undefined')
|
110 |
+
{
|
111 |
+
streamRecorder.onstop = function(evt) {
|
112 |
+
var container = new DataTransfer(),
|
113 |
+
file = new File(
|
114 |
+
chunks,
|
115 |
+
me.to_record+_random()+'.webm',
|
116 |
+
{type:'video/webm', lastModified:new Date().getTime()}
|
117 |
+
);
|
118 |
+
container.items.add(file);
|
119 |
+
file_ctrl[0].files = container.files;
|
120 |
+
play_btn.removeClass('cff-record-stop-btn hide-strong');
|
121 |
+
mssg.removeClass('hide-strong');
|
122 |
+
_load_file();
|
123 |
+
};
|
124 |
+
streamRecorder.stop();
|
125 |
+
}
|
126 |
+
} catch(err) {console.log(err);};
|
127 |
+
|
128 |
+
record_btn.removeClass('cff-record-btn-recording');
|
129 |
+
if(me._is_video() && media_ctrl.length)
|
130 |
+
{
|
131 |
+
media_ctrl[0].pause();
|
132 |
+
media_ctrl[0].srcObject = null;
|
133 |
+
|
134 |
+
}
|
135 |
+
recording_flag = false;
|
136 |
+
};
|
137 |
+
|
138 |
+
record_btn.click(function(evt){
|
139 |
+
var settings = {
|
140 |
+
video: (me._is_video()) ? {'facingMode':{exact:'user'}} : false,
|
141 |
+
audio: (me._is_audio()) ? true : false
|
142 |
+
};
|
143 |
+
|
144 |
+
clearInterval(interval);
|
145 |
+
|
146 |
+
play_btn.addClass('hide-strong');
|
147 |
+
mssg.addClass('hide-strong');
|
148 |
+
|
149 |
+
record_btn.toggleClass('cff-record-btn-recording');
|
150 |
+
if(record_btn.hasClass('cff-record-btn-recording'))
|
151 |
+
{
|
152 |
+
var i = 0;
|
153 |
+
chunks = [];
|
154 |
+
recording_flag = true;
|
155 |
+
if(me._is_video() && media_ctrl.length) media_ctrl.removeClass('hide-strong');
|
156 |
+
|
157 |
+
navigator.getUserMedia(
|
158 |
+
settings,
|
159 |
+
function(localMediaStream)
|
160 |
+
{
|
161 |
+
streamRecorder = new MediaRecorder(localMediaStream);
|
162 |
+
streamRecorder.ondataavailable = function(evt) {chunks.push(evt.data);};
|
163 |
+
streamRecorder.start();
|
164 |
+
|
165 |
+
if(me._is_video() && media_ctrl.length)
|
166 |
+
{
|
167 |
+
media_ctrl[0].srcObject = localMediaStream;
|
168 |
+
media_ctrl[0].play();
|
169 |
+
}
|
170 |
+
|
171 |
+
interval = setInterval(function(){
|
172 |
+
i++;
|
173 |
+
if(i < me.max_time) record_time.text(me._format_time_component(i));
|
174 |
+
else{
|
175 |
+
clearInterval(interval);
|
176 |
+
if(me.beep){
|
177 |
+
var snd = new Audio("data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=");
|
178 |
+
snd.play();
|
179 |
+
}
|
180 |
+
_stopRecording();
|
181 |
+
}
|
182 |
+
}, 1000);
|
183 |
+
},
|
184 |
+
function(err){
|
185 |
+
$('.'+me.name+' .dfield').html('<div class="cff-record-error">'+err.name+'</div>');
|
186 |
+
}
|
187 |
+
);
|
188 |
+
}
|
189 |
+
else
|
190 |
+
{
|
191 |
+
_stopRecording();
|
192 |
+
}
|
193 |
+
});
|
194 |
+
play_btn.click(function(){
|
195 |
+
if(_load_file())
|
196 |
+
{
|
197 |
+
play_btn.toggleClass('cff-record-stop-btn');
|
198 |
+
if(play_btn.hasClass('cff-record-stop-btn')) media_ctrl[0].play();
|
199 |
+
else media_ctrl[0].pause();
|
200 |
+
}
|
201 |
+
});
|
202 |
+
}
|
203 |
+
}
|
204 |
+
);
|
js/modules/02_datetime/public/01_datetime.js
CHANGED
@@ -383,9 +383,9 @@
|
|
383 |
.replace(/[\s\:]+$/, '')
|
384 |
.replace(/[\s\:]+/g, ' ');
|
385 |
|
386 |
-
value = value.replace(/^[\s\:]+/, '')
|
387 |
.replace(/[\s\:]+$/, '')
|
388 |
-
.replace(/[\s\:]+/g, ' ');
|
389 |
|
390 |
to_format = to_format.toLowerCase();
|
391 |
|
383 |
.replace(/[\s\:]+$/, '')
|
384 |
.replace(/[\s\:]+/g, ' ');
|
385 |
|
386 |
+
value = (typeof value == 'string') ? value.replace(/^[\s\:]+/, '')
|
387 |
.replace(/[\s\:]+$/, '')
|
388 |
+
.replace(/[\s\:]+/g, ' ') : value;
|
389 |
|
390 |
to_format = to_format.toLowerCase();
|
391 |
|