13
13
/** Item Controller */
14
14
class ItemController extends AppController
15
15
{
16
- public $ _models = array ('Item ' , 'ItemRevision ' , 'Bitstream ' , 'Folder ' );
16
+ public $ _models = array ('Item ' , 'ItemRevision ' , 'Bitstream ' , 'Folder ' , ' Metadata ' );
17
17
public $ _daos = array ();
18
18
public $ _components = array ('Date ' , 'Utility ' , 'Sortdao ' );
19
19
public $ _forms = array ('Item ' );
@@ -29,7 +29,46 @@ function init()
29
29
}
30
30
} // end init()
31
31
32
-
32
+
33
+ /** create/edit metadata*/
34
+ function editmetadataAction ()
35
+ {
36
+ $ this ->disableLayout ();
37
+ if (!$ this ->logged )
38
+ {
39
+ throw new Zend_Exception ("You have to be logged in to do that " );
40
+ }
41
+
42
+ $ itemId = $ this ->_getParam ("itemId " );
43
+ $ metadataId = $ this ->_getParam ("metadataId " );
44
+ $ itemDao = $ this ->Item ->load ($ itemId );
45
+ if ($ itemDao === false )
46
+ {
47
+ throw new Zend_Exception ("This item doesn't exist. " );
48
+ }
49
+ if (!$ this ->Item ->policyCheck ($ itemDao , $ this ->userSession ->Dao , MIDAS_POLICY_WRITE ))
50
+ {
51
+ throw new Zend_Exception ("Problem policies. " );
52
+ }
53
+ $ itemRevision = $ this ->Item ->getLastRevision ($ itemDao );
54
+ $ metadatavalues = $ this ->ItemRevision ->getMetadata ($ itemRevision );
55
+ $ this ->view ->metadata = null ;
56
+
57
+ foreach ($ metadatavalues as $ value )
58
+ {
59
+ if ($ value ->getMetadataId () == $ metadataId )
60
+ {
61
+ $ this ->view ->metadata = $ value ;
62
+ break ;
63
+ }
64
+ }
65
+
66
+ $ this ->view ->itemDao = $ itemDao ;
67
+ $ this ->view ->metadataType = $ this ->Metadata ->getAllMetadata ();
68
+ $ this ->view ->metadataType = $ this ->view ->metadataType ['sorted ' ];
69
+ $ this ->view ->jsonMetadataType = JsonComponent::encode ($ this ->view ->metadataType );
70
+ }
71
+
33
72
/** view a community*/
34
73
function viewAction ()
35
74
{
@@ -53,6 +92,38 @@ function viewAction()
53
92
54
93
$ this ->view ->isAdmin = $ this ->Item ->policyCheck ($ itemDao , $ this ->userSession ->Dao , MIDAS_POLICY_ADMIN );
55
94
$ this ->view ->isModerator = $ this ->Item ->policyCheck ($ itemDao , $ this ->userSession ->Dao , MIDAS_POLICY_WRITE );
95
+ $ itemRevision = $ this ->Item ->getLastRevision ($ itemDao );
96
+ if ($ this ->_request ->isPost ())
97
+ {
98
+ $ deleteMetadata = $ this ->_getParam ('deleteMetadata ' );
99
+ $ editMetadata = $ this ->_getParam ('editMetadata ' );
100
+ if (isset ($ deleteMetadata ) && $ this ->view ->isModerator ) //remove users from group
101
+ {
102
+ $ this ->disableView ();
103
+ $ this ->disableLayout ();
104
+ $ metadataId = $ this ->_getParam ('element ' );
105
+ $ this ->ItemRevision ->deleteMetadata ($ itemRevision , $ metadataId );
106
+ echo JsonComponent::encode (array (true , $ this ->t ('Changes saved ' )));
107
+ }
108
+ if (isset ($ editMetadata ) && $ this ->view ->isModerator ) //remove users from group
109
+ {
110
+ $ metadataId = $ this ->_getParam ('metadataId ' );
111
+ $ metadatatype = $ this ->_getParam ('metadatatype ' );
112
+ $ element = $ this ->_getParam ('element ' );
113
+ $ qualifier = $ this ->_getParam ('qualifier ' );
114
+ $ value = $ this ->_getParam ('value ' );
115
+ if (isset ($ metadataId ))
116
+ {
117
+ $ this ->ItemRevision ->deleteMetadata ($ itemRevision , $ metadataId );
118
+ }
119
+ $ metadataDao = $ this ->Metadata ->getMetadata ($ metadatatype , $ element , $ qualifier );
120
+ if ($ metadataDao == false )
121
+ {
122
+ $ this ->Metadata ->addMetadata ($ metadatatype , $ element , $ qualifier , '' );
123
+ }
124
+ $ this ->Metadata ->addMetadataValue ($ itemRevision , $ metadatatype , $ element , $ qualifier , $ value );
125
+ }
126
+ }
56
127
57
128
if ($ this ->logged )
58
129
{
@@ -85,7 +156,7 @@ function viewAction()
85
156
86
157
setcookie ('recentItems ' .$ this ->userSession ->Dao ->getKey (), serialize ($ recentItems ), time () + 60 * 60 * 24 * 30 , '/ ' ); //30 days
87
158
}
88
- $ itemRevision = $ this -> Item -> getLastRevision ( $ itemDao );
159
+
89
160
$ this ->Item ->incrementViewCount ($ itemDao );
90
161
$ itemDao ->lastrevision = $ itemRevision ;
91
162
$ itemDao ->revisions = $ itemDao ->getRevisions ();
@@ -176,6 +247,7 @@ function viewAction()
176
247
$ this ->view ->json ['item ' ] = $ itemDao ->toArray ();
177
248
$ this ->view ->json ['item ' ]['message ' ]['delete ' ] = $ this ->t ('Delete ' );
178
249
$ this ->view ->json ['item ' ]['message ' ]['deleteMessage ' ] = $ this ->t ('Do you really want to delete this item? It cannot be undo. ' );
250
+ $ this ->view ->json ['item ' ]['message ' ]['deleteMetadataMessage ' ] = $ this ->t ('Do you really want to delete this metadata? It cannot be undo. ' );
179
251
$ this ->view ->json ['item ' ]['message ' ]['movecopy ' ] = $ this ->t ('Copy Item. ' );
180
252
}//end index
181
253
0 commit comments