Calculated Fields Form - Version 1.1.105

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 Icon 128x128 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 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.104
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.104
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.104' );
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.104';
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