@@ -24,6 +24,85 @@ module.exports = {
2424 } ,
2525
2626
27+ label : {
28+
29+ /**
30+ * Multilingual.label.create()
31+ *
32+ * creates a new label definition in the multilingual label table.
33+ *
34+ * This routine will only create a new one if there is not already
35+ * an existing label_key + label_context + language_code entry
36+ * matching the provided definition.
37+ *
38+ * if there is already a match, then we resolve without returning
39+ * a new label definition.
40+ *
41+ * if a new label was created, the new definition will be returned.
42+ *
43+ * @param {obj } labelDef The label info to create
44+ * @param {function } cb (optional) node style callback
45+ * cb(err, newLabel);
46+ * @return {Deferred }
47+ */
48+ create : function ( labelDef , cb ) {
49+ var dfd = AD . sal . Deferred ( ) ;
50+
51+ if ( ( _ . isFunction ( labelDef ) ) && ( _ . isUndefined ( cb ) ) ) {
52+ cb = labelDef ;
53+ labelDef = undefined ;
54+ }
55+
56+ if ( _ . isUndefined ( labelDef ) ) {
57+ var error = new Error ( 'labelDef parameter is required' ) ;
58+ error . code = "E_MISSINGPARAM" ;
59+ if ( cb ) cb ( error ) ;
60+ dfd . reject ( error ) ;
61+ return dfd ;
62+ }
63+
64+
65+ function onError ( err ) {
66+ if ( cb ) cb ( err ) ;
67+ dfd . reject ( err ) ;
68+ }
69+
70+ // check to see if we already have this label
71+ SiteMultilingualLabel . find ( {
72+ label_key :labelDef . label_key ,
73+ label_context :labelDef . label_context ,
74+ language_code :labelDef . language_code
75+ } )
76+ . exec ( function ( err , label ) {
77+ if ( err ) {
78+ onError ( err ) ;
79+ } else {
80+
81+ if ( ( label ) && ( label . length > 0 ) ) {
82+ if ( cb ) cb ( ) ;
83+ dfd . resolve ( ) ;
84+ } else {
85+
86+ // create the label:
87+ SiteMultilingualLabel . create ( labelDef )
88+ . exec ( function ( err , label ) {
89+
90+ if ( err ) {
91+ onError ( err ) ;
92+ } else {
93+ if ( cb ) cb ( null , label ) ;
94+ dfd . resolve ( label ) ;
95+ }
96+ } )
97+ }
98+ }
99+ } )
100+
101+ return dfd ;
102+ }
103+
104+ } ,
105+
27106 languages :{
28107
29108
0 commit comments